在电脑视觉中,显著性是一种图像分割的模式,而显著图(英语:Saliency map)是显示每个像素独特性的图像。显著图的目标在于将一般图像的表示简化或是改变为更容易分析的样式。举例来说,某个像素在一张彩色图中具有较高的灰阶,其会在显著图中以较为明显的方式被显示出来。
视觉刺激的观点上,如果某些特征特别能够被捕捉到注意力,这样子的特性在心理学上被称为显著性(英语:saliency)。
如前述,显著性是图像分割的一部分,图像分割通常用于定位图像中的物体和边界(例:线条,曲线等)。更精确来说,图像分割是为图像中的每个像素(pixel)分配一个标签的过程,以便让相同标签的像素能够共享某些特征。
图像显著性是图像中重要的视觉特征,体现出人眼对图像各区域的重视程度,自从Laurent Itti在1998年发表的论文后,产生了大量的显著性映射方法。图像显著性也广泛运用在压缩,编码,图像边缘加强,显著性目标分割和提取等方面。
视觉注意机制,即面对一个场景时,人类自动地对感兴趣区域进行处理而选择性地忽略不感兴趣区域,这些人们感兴趣区域被称之为显著性区域。
视觉显著性检测(英语:Visual Saliency Detection),指透过算法模拟人的视觉,提取出图像中的显著性区域。
人类的视觉注意机制主要分为两种:
一般认为,良好的视觉显著性检测模型需要至少满足以下三个标准:
Itti于1998年提出基于显著性的视觉注意模型,而后在2001年对该模型的理论作了更进一步的完善,现今,Itti的模型已经成为自底向上视觉注意模型的标准。
对于一幅输入的图像,该模型提取初级视觉特征:颜色、亮度和方位、在多种尺度下使用中央环绕(Center-surround)操作产生体现显著性量值的特征图,将这些特征图合并得到最终的显著图(Saliency map)后,利用生物学中赢者取全(Winner-take-all)的竞争机制得到图像中最显著的空间位置, 用来引导注意,最后采用返回抑制(Inhibition of return) 的方法来完成注意焦点的转移。
在决策论模型的观点中,感知系统因为不断进化,从而能产生关于周遭环境在决策论概念下的最佳解。决策论注意模型能表达自底向上和由上而下的注意。其主要重点在于视觉注意应被当前任务有关的最优性所驱动。其理论已在计算机视觉中得到了成功的应用,如分类和注意定位预测,这两者均获得很高的准确率。
这是一种基于频谱分析的显著性模型,非常容易解释和实现,由于其理论基于快速傅里叶转换实现,能够满足实时(real-time)要求,此模型在注意焦点预测和显著区域检测方面获取了很大的成功,和iNVT类似的模型相比,运算速度可提高近10倍。
图论模型是把眼球活动看作一个时间序列,由于有大量的隐变量影响眼球运动,因此,该类注意模型使用了隐马尔科夫模型、动态贝叶斯网和条件随机场等方法。图论模型可以对复杂的注意机制建模,因此能获取较好的预测能力,缺点在于模型的高复杂度。
第一步,需要先计算出每一个像素与在同一帧(frame)其余像素的距离。之后将所有的值相加,得到以下等式:
SALS() = ∑| - |
Ii是在当前帧中除了Ik之外其他的像素值,Ik的范围在之间,展开之后如下:
SALS() = | - 1| + | - 2| + ... + | - |
其中N是当前帧中的像素总和,若更进一步的扩展公式,将同样的值放在一起,得到结果如下:
SALS() = ∑ × | - |
Fn代表In的频率,且n的范围在,频率以直方图的形式表示,此算法的时间复杂度为O(N)。
以pseudo matlab code为例,首先读取数据。
for k = 2 : 1: 13 // which means from frame 2 to 13, and in every loop K's value increase one.I = imread(currentfilename); //read current frameI1 = im2single(I); //convert double image into single(requirement of command vlslic)l = imread(lastfilename); //read last frameI2 = im2single(l);regionSize = 10; // set the parameter of SLIC this parameter setting are the experimental result. RegionSize means the superpixel size.regularizer = 1; //set the parameter of SLIC segments1 = vlslic(I1, regionSize, regularizer);//get the superpixel of current framesegments2 = vlslic(I2, regionSize, regularizer);//get superpixel of the previous framenumsuppix = max(segments1(:)); //get the number of superpixel all information about superpixel is in this link http://www.vlfeat.org/overview/slic.htmlregstats1 = regionprops(segments1,’all’);regstats2 = regionprops(segments2,’all’);//get the region characteristic based on segments1