显着性是图像的突出部分,我们的大脑会特别关注这个部分。上图突出了我们在看到一个场景或图像时会注意到的部分。例如,大家有没有曾经在看广告的时候被一些特别的内容吸引,为此我们还特意停下来多看了一会儿?这就是广告的显着性,即使让我们可以一眼看到广告,也会被他吸引。
01.安装OpenCV
首先,您需要安装OpenCV库。如果已经安装了pip,则可以通过运行以下命令来完成。
> pipinstall opencv-python
> pip install opencv-contrib-python
我们可以通过以下命令验证安装是否成功。
> python
Python 3.6.3 (v3.6.3:2c5fed8, Oct 3 2017, 18:11:49)
Type "help", "copyright", "credits" or "license" for more information.
>> import cv2
>> cv2.saliency
02.静态显著性检测
有很多种检测显着性的方法。在OpenCV中,为显着性检测提供的算法分为三类:
我们将讨论静态显着性。静态显着性检测算法使用允许检测非动态图像的显着对象的不同图像特征。OpenCV中已经实现了两种算法,即频谱残留算法和精细算法。
03.光谱残留
该算法分析了输入图像的对数谱,提取了图像在光谱域中的光谱残差,并提出了一种构造显着图的快速方法,该显着图建议了原型物体的位置。
相似性意味着冗余。对于旨在最小化冗余视觉信息的系统,它必须意识到输入刺激的统计相似性。因此,在可以观察到很大形状相似性的不同对数谱中,值得我们注意的是跳出平滑曲线的信息。我们认为,频谱中的统计奇异性可能是图像中出现异常对象的异常区域的原因。
而且,如果绘制显著图,我们可以得到下面的输出图像。
参考:Hou, Xiaodi, and Liqing Zhang. “Saliency detection: A spectral residual approach.” Computer Vision and Pattern Recognition, 2007. CVPR‘07. IEEE Conference on. IEEE, 2007
04.细粒
人眼的视网膜由神经节细胞组成。有两种类型的神经节细胞,在中心和偏心。中心位于黑暗背景包围的明亮区域。偏心对明亮背景包围的黑暗区域做出反应。该算法根据中心上和中心外的差异计算显着性。
在我们的示例中,通过使用积分图像有效地实现中心圆度差,演示了一种以原始图像分辨率实时生成视觉显着性的细粒度特征图的方法。
而且,如果绘制显着图,大家将在下面得到输出图像。
04.参考文献
B. Wang and P. Dudek “A Fast Self-tuning Background Subtraction Algorithm”, in proc of IEEE Workshop on Change Detection, 2014