mask图像获取物体标注框(仅限一张图片一个物体)

这是我自己写的程序,mask图像就是类似下面的图像,黑色部分为1,白色部分为255.

使用下面程序可以获得物体的位置.

import cv2


# 判断第y行中是否存在物体
def is_row_exist_object(image, y, xx):
    for x in range(0, xx):
        if image[y, x] > 128:
            return True
    return False


# 判断第x列是否存在物体
def is_col_exist_object(image, x, low_bound, high_bound):
    for y in range(low_bound, high_bound + 1):
        if image[y, x] > 128:
            return True
    return False


# 获取mask最上边的点,最左边点,最右边点以及最下面点的坐标
def get_res_list(fliename):
    image = cv2.imread(fliename, cv2.IMREAD_GRAYSCALE) 
    yy, xx = image.shape
    res_list = []

    for up_y in range(0, yy):
        if is_row_exist_object(image, up_y, xx):
            res_list.append(up_y)
            break

    for y in range(0, yy):
        down_y = yy - y - 1
        if is_row_exist_object(image, down_y, xx):
            res_list.append(down_y)
            break

    for left_x in range(0, xx):
        if is_col_exist_object(image, left_x, res_list[0], res_list[1]):
            res_list.append(left_x)
            break

    for x in range(0, xx):
        right_x = xx - x - 1
        if is_col_exist_object(image, right_x, res_list[0], res_list[1]):
            res_list.append(right_x)
            break

    res = [res_list[2], res_list[0], res_list[3], res_list[1]]

    return res

算法速度很快,但是只适用于一幅图像仅有一个物体的情况或没有物体.

转载请附上链接

### MASK-AWARE 技术原理 MASK-AWARE 方法旨在改进图像处理中的特定挑战,特别是在涉及复杂背景的情况下。为了应对训练图像中背景过拟合的问题,一种主体区域损失法被引入[^1]。该方法的核心在于仅在图像的主体区域内计算扩散重建损失,而非在整个图像上应用统一的标准。这种方法有效地阻止了模型对背景的学习。 具体而言,在实施过程中,首先需要获取每张输入图片对应的主体mask。这些mask能够区分前景目标与背景部分,确保后续操作集中在有意义的目标之上。此过程既可通过人工标注来完成,也可借助自动化工具如SAM (Segment Anything Model) 自动化生成高质量的mask集合。 对于每一个样本,一旦获得了准确的主题mask之后,则可以在后续阶段专门针对这部分数据进行优化调整。例如,在计算损失函数时忽略掉不属于主题范围内的像素点的影响,使得网络更加专注于提升对实际感兴趣对象的理解能力而不是受到无关因素干扰而偏离方向。 ### 应用场景 MASK-AWARE 的应用场景广泛存在于计算机视觉领域: - **图像修复**:当面对有遮挡物的照片恢复任务时,采用基于实例级别的全景分割所得到的对象感知型掩码可以帮助去除不想要的部分而不影响其他正常显示的内容质量;同时还能有效避免因误判造成的异常现象发生,比如虚假物体生成或是色彩溢出等问题出现。 - **去模糊/超分辨率增强**:通过限定作用域至重要特征区域能够提高局部清晰度并减少全局噪声放大带来的副作用,进而获得更好的视觉效果。 - **风格迁移**:保持原有结构不变的同时改变艺术表现形式的过程中,利用此类技术可使转换后的作品保留更多原始语义信息,不会因为过度修改而导致失真情况加剧。 ```python import torch from segment_anything import sam_model_registry, SamAutomaticMaskGenerator def get_subject_mask(image_path): device = "cuda" if torch.cuda.is_available() else "cpu" model_type = "vit_b" sam_checkpoint = "./sam_vit_b_01ec64.pth" sam = sam_model_registry[model_type](checkpoint=sam_checkpoint).to(device=device) mask_generator = SamAutomaticMaskGenerator(sam) masks = mask_generator.generate(image_path) return masks ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值