1. Introduction:
在深度学习的图像领域,获取一个精确的ROI(Region of Interest)是非常重要的一个过程, 现阶段的图像标注过程中,基于效率,人们一般以Point、Rectangle等标准几何图形获取ROI以提取目标特征。但由于识别目标大多数为不规则几何形状,导致ROI区域中会或多或少地出现背景,从而导致提取目标特征时,部分参数会分配给背景。
考虑到常见的数据采集工作中,背景是单一的,故而考虑用减背景的方式获取目标的edge或mask区域。本文中利用的方法是用SSIM获取到对比图中差异性较大的区域,再从差异性区域中提取轮廓,对轮廓进行分析,以获取到目标精确的edge及mask。
2. SSIM:
SSIM Index(structural similarity index), 是一种用以衡量两张数位影像相似程度的指标。作为结构相似性理论的实现,结构相似度指数从图像组成的角度将结构信息定义为独立于亮度、对比度的,反映场景中物体结构的属性,并将失真建模为亮度、对比度和结构三个不同因素的组合。用均值作为亮度的估计,标准差作为对比度的估计,协方差作为结构相似程度的度量。
实际使用时,简化起见,一般会将参数设为)及,得到:
其中)为对比图像像素值,)为对比图像像素值的标准差,为x与y的协方差。$c_1$, $c_2$为常数。根据作者论文数据表明,一个较好的参数效果为$c_1$
, $c_2$
为输入数据的取值范围乘以$k_1=0.01, k_2=0.03$
的平方。
3.代码实现:
- 由于RGB图像是3通道的矩阵,且由于摄像头镜头及感光芯片的原因,同种环境下产生的图片也会有差异,为了弱化硬件带来的影响,直接比较其灰度图,并对灰度图进行均值滤波或其他滤波进行优化。
1 | import cv2 |
- 然后根据上面公式进行构建:
1 | import numpy as np |
- 上面的函数可以返回相似度及差异区域图,我们就利用差异图进行分析并提取其轮廓:
1 |
|
- 部分场景中可能存在小区域波动及变化也产生了轮廓,如果我们不需要这些轮廓,可利用目标主体大致占图像的百分比进行排除:
1 |
|
- 绘制轮廓:
1 | # Box: |
- 获取Mask:
1 | bg = np.zeros((gray2.shape[0], gray2.shape[1]), np.uint8) |
4. 测试结果:
- 输入比较图:
- 差异图:
- 绘制轮廓Box:
- 绘制轮廓Edge:
- 获取Mask: