图像显著性检测算法(学习笔记)

视觉显著性:人们会自动识别出感兴趣的区域,并对感兴趣的区域进行处理,忽略掉不感兴趣的区域。

显著性检测(注意力机制),目的:聚焦或缩小看到的看到的对象场景重要部分,凸显出图像中的物体,提高图像分割的效率。

1980年Treisman和Gelade提出开创性的自底向上的注意力模型以来,涌现出大量的注意预测算法。主要分为两个阶段:

第一阶段为基于强度、颜色和方向等传统尺度空间手工特征的注意预测算法;

第二个阶段,随着计算机神经网络技术的革新和发展,基于深度学习的注意预测算法大量出现。

Fast and Efficient Saliency (FES)

论文:https://link.springer.com/content/pdf/10.1007/978-3-642-21227-7_62

代码:https://gitcode.com/hrtavakoli/FES/tree/master

四种显著性检测算法:LC、HC、AC、FT

LC算法:基于直方图对比度的方法,每一个像素的显著性值是由它与图像中所有其他像素的颜色差异来确定,得到全分辨率显著性图像;

出处:https://www.crcv.ucf.edu/papers/spatiotemporal_attention_homo.pdf

该方法基于全局对比度,计算像素p在整个图像上的全局对比度,公式如下:

1.利用直方图对像素按照特征值归类,fn为特征值出现的次数

其中:d(p,n)为特征值和n的欧氏距离

2.提前计算d(n1,n2)。任何两个像素的特征值都在[0,255]之间,可以提前计算距离矩阵D。这样就可查表得到两个像素的特征距离。这样特征值p的显著性进一步优化为公式3

3.记录已经计算的显著值,避免重复计算。

LC算法的缺点:求全局对比度的策略会导致稀有颜色(特征值)占优,也就是具有较高的对比度,这在很多情况下是不合理的。所以的方法检测效果不够好

MATLAB实现LC算法的步骤:

1、计算图像的直方图,可以得到每一个灰度级所对应的像素数目。灰度级[0,255]。1*256矩阵记录。

2、计算每一个特征值p(0~255)显著值,1*256矩阵记录。

3、为每一个像素分配显著值。(i,j)是什么灰度级就赋予它相应灰度级的显著值。得到显著图。

4、对显著图进行归一化。得到最终显著图。
实现代码联系作者:897341891
                        

HC算法:基于直方图对比度的显著性检测(基于颜色特征)

论文:Global contrast based salient region detection – 程明明个人主页

在本质上,HC和上面的LC没有区别,但是HC考虑了彩色信息,而不是像LC那样只用像素的灰度信息,由于彩色图像最多有256*256*256种颜色,因此直接基于直方图技术的方案不太可行了。但是实际上一幅彩色图像并不会用到那么多种颜色,因此,作者提出了降低颜色数量的方案,将RGB各分量分别映射成12等份,则隐射后的图最多只有12*12*12种颜色,这样就可以构造一个较小的直方图用来加速,但过渡量化会对结果带来一定的瑕疵。因此作者又用了平滑的过程。 最后和LC不同的是,作者的处理时在Lab空间进行的,而由于Lab空间和RGB并不是完全对应的,其量化过程还是在RGB空间完成的。

LAB色彩空间:一种在图像处理和计算机视觉领域中常用的色彩表示方法。它是一种设备无关的色彩空间,也就是说,它不依赖于特定的硬件设备或者显示器,因此在不同的设备上具有一致的色彩表现。LAB色彩空间通常用于对图像中的色彩信息进行分析、处理和比较。

LAB色彩空间包含三个通道:

  1. L(明度)通道:表示图像的亮度信息,从黑色(0)到白色(100)的范围内进行表示。L通道与图像的灰度相关,因此可以用来描述图像的明暗度。

  2. A(绿—红)通道:表示从绿色(负值)到红色(正值)的范围内的色彩。负值表示绿色,正值表示红色。

  3. B(蓝—黄)通道:表示从蓝色(负值)到黄色(正值)的范围内的色彩。负值表示蓝色,正值表示黄色。

LAB色彩空间的一个重要特性是,它是基于人眼的感知特性设计的。因此,它在描述和分析色彩时更加符合人类对色彩的感知。另外,由于LAB色彩空间与设备无关,它在图像处理和计算机视觉中被广泛应用于色彩校正、图像分割、图像匹配等领域。

HC核心思想:一个像素的显著值是通过与图像中的所有其他像素的色差来决定的,可以表示为:

其中: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颜色空间中进行距离度量。

HC算法在MATLAB算法实现:

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

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

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

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

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

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

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

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

RC算法:基于局部对比度的方法,先将图像分割成小区域,采用的分割方法是基于图的分割,基本分割思想是将每个像素点作为无向图的顶点,两个像素点之间的不相似度作为边的权重,要求连接相同区域内的两个顶点的边的最大权重要小于连接不同区域的顶点的边的最小权重,在迭代过程中进行顶点归纳与区域合并。

显著性检测FT算法:

FT:该方法从频域的角度分析图片,出处:http://vigir.missouri.edu/~gdesouza/Research/Conference_CDs/IEEE_CVPR_2009/data/papers/1708.pdf

图像在频率域分为:低频部分和高频部分。低频部分反映了图像的整体信息,如物体的轮廓,基本的组成区域。高频部分反映了图像的细节信息,如物体的纹理。显著性区域检测用到的更多的是低频部分的信息。在实际进行计算时,FT方法使用窗口5*5的高斯平滑来实现对最高频的舍去。像素的显著性可以用下面公式计算:

其中:Iu为图像的平均特征,使用Lab颜色特征,后一项为像素p在高斯平滑后的Lab颜色特征,||.||为L2范式,即计算前一项和后一项在了Lab颜色空间的欧氏距离

MATLAB实现步骤:

1、对图像进行5*5的高斯平滑。

2、转换颜色空间。RGB颜色空间转换为CIELAB颜色空间。

3、计算整幅图片的l、a、b的平均值。

4、按照算法中的公式,计算每个像素l、a、b值同图像三个l、a、b均值的欧氏距离。得到显著图

5、归一化。图像中每个像素的显著值除以最大的那个显著值。得到最终的显著图。

  • 20
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值