图像分割 --- 将包含布尔值的分割结果快速替换为像素值

图像分割 — 将包含布尔值的分割结果快速替换为像素值

实例分割任务是目标检测任务和语义分割任务的结合,需要同时完成实例级和像素级的预测,既要区分视频中不同的目标个体,又要目标轮廓进行精细分割,是一个复杂且有挑战性的任务。

在这里插入图片描述

通过实例分割得到的输出结果,包含图像中像素是否属于目标的一个矩阵,该mask是由一个二维的布尔型数组组成,如下所示。

其中,False 表示背景像素,True 表示目标像素。

在这里插入图片描述

我们考虑把这个布尔型数组变成灰度图,将 False 修改为255,作为黑色背景;将True 修改为0,作为白色目标。结果如下所示。

请添加图片描述

那么,问题来了,如何操作呢?

方法一

使用 for 循环,思路清晰,简单暴力!

 for x in range(len(mask[0])):
     for y in range(len(mask[1]):
        if mask[x, y] == False:
            np_img[x, y] = 0
        else:
            np_img[x, y] = 255

此方法可以实现目标,但是速度非常慢,经测验在1080*720的数组上,运行速度为0.9s。

方法二

使用数学运算符直接实现,非常简单,一行代码即可实现!

mask = np.uint8(mask*255)

其中,True × 255 = 255, False × 255 = 0

在这里插入图片描述

如果 TrueFalse 是反着的,只需使用逻辑非运算符,将 TrueFalse 取反即可!

mask = ~mask
mask = np.uint8(mask*255)

此方法可以实现目标,并且速度非常快,经测验在1080*720的数组上,运行速度为0.002s。

方法二比方法一的速度快450倍,非常方便!

日常学习记录,一起交流讨论吧!侵权联系~

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WYKB_Mr_Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值