基于直方图对比度的显著性检测(HC)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_22238021/article/details/72875087

该方法为程明明老师2008年发表在cvpr上的文章Global Contrast based Salient Region Detection中提出的(详细算法见原文点击打开链接)。

该方法只用到了颜色特征。一个像素的显著值是通过与图像中的所有其它像素的色差来定义的。比如方程1:

                       

其中D(Ik,Ii)是空间L*a*b中两个像素的颜色距离度量,上式经过扩展像素等级变为方程2:

                  

其中N为图像I中的像素数量。

   由于测量没考虑空间关系,同样颜色值的像素具有相同的显著值。从具有相同颜色值的像素被组合在一起的角度重新整理方程2,我们就得到每个颜色的显著值如下方程3:


其中,Cl是像素Ik中的颜色值,n是不同像素颜色的数量,fi是图像I中像素颜色Cj出现的频率。

(1)基于直方图的加速

首先将每个颜色通道量化为12个不同值,这就讲颜色的数量减小到了。考虑到自然图像中的颜色仅仅包含了全颜色空间中很小的一部分,通过忽略出现频率较低的颜色来进一步减少颜色数量。通过选择高频颜色并且保证这些颜色覆盖图像像素不低于95%的颜色,最终达到了n=85个颜色。剩下的像素颜色,包含不高于5%的图像像素,这部分颜色被直方图中最邻近的颜色替代

(2)颜色空间平滑

一些相似的颜色可能被数量化为不同的值。为了减少这类由于随机性给显著结果引入的噪声,采取一套平滑程序来改善每个颜色的显著值。用相似颜色的显著值加权平均来代替每个颜色(以L*a*b*距离测量)的显著值。选择m=n/4。个最近的颜色作为代表来改善颜色c的显著值,如方程4:


其中,是颜色c和它的m个最近的颜色Ci之间的距离之和,归一化因数来自公式

在最后的实现中,在RGB颜色空间中进行颜色量化,在Lab颜色空间中进行距离度量。

【MATLAB实现步骤】

1、量化颜色通道。找出图像中一共有多少种颜色以及对应的像素总数。

2、按照像素总数从大到小排序,并同时记录相应颜色。

3、找出像素数目覆盖图像不小于95%的高频颜色,以及其他的不高于5%的颜色种类,假设高频颜色共有maxnum种。

4、把低频颜色的像素归类到与它lab颜色距离相距最近的高频颜色中。

5、在maxnum种颜色中,计算颜色i到所有其他颜色j的颜色距离。并按照距离从小到大排序,记录相应j的颜色种类。

6、按照方程3计算每一种颜色的显著值。根据第5步,可以找到距离颜色i相距最近的m种颜色,从而可以根据方程4计算每种颜色显著值,即最终的显著值。

7、为图像中每一个像素分配显著值。像素(i,j)是什么颜色,就赋予它相应颜色的显著值。

8、至此,显著图生成。进行归一化、线性空间滤波。







猜你喜欢

转载自blog.csdn.net/qq_22238021/article/details/72875087