本节主要介绍提取低层次特征信息的方要方法。在有些情形下,这些信息对理解图是足够的。但是,低层次特征提取函数的目的通常是为更高级分析提供信息。用于边界,角点和运动提取的方法,非常具有Robustness以及性能特久所必备的特性。
低层次特征是不需要任何形状/空间关系的信息就可以从图像中自动提取的基本特征,如:常用地阈值方法就是作为点处理的一种低层次特征提方式。所有低层次方法都可以应用于高层次特征提取,从而在图像中找到形状。众所周知,我们可以从漫画家所描绘的画像识别人,这就是我们了解的第一种低层次特征,称之"edge detection"。它的目的要是要制作一个线图。有些技术比较基础,有些技术比较先进,我们了解其中一些最受欢迎的方法。一阶检测算子相于一阶微分法,二阶边缘检测算子相当于高一阶微分处理。边缘检测的另一种形式称相位一致性(phase congruency).其次,我们也考虑到一下角点检测,检测线条因高曲率而急转折处的那些点,看作是局部特征提取技术,以及更先进的方法将其扩展到对局部区域/兴趣块进行检测。本节由一阶、二阶边缘检测算子,其它边缘检测算子,相位一致性和局部特征检测这几部分具体内容组成。
基于边缘检测的分析不易受整体光照强度变化的影响,许多图像理解方法都以边缘为基础。边缘检测强调的是图像对比度。检测对比度即亮度上的差别,可以增强图像中的边界特征,这些边界出现正是图像亮度上的差别。目标边界实际上是亮度级的阶梯变化,而边缘是阶梯变化的位置。可以使用一阶微分使边缘变化增强检测边缘位置,除当输入扫信号没有发生变化。
亮度变化可能通过对相邻点进行差分处理来增强。对水平方向上的相邻点进行差分处于是可以检测垂直方向上的亮度变化,通常被称为水平边缘检测算子(horizontal edge detector).因为其差分值为零,所以水平算子寻不会显示水平方向的亮度变化。同时,需要一个垂直边缘检测算子对垂直方向上的相邻点进行差分处理,这样可以确定水平方向上,而不是垂直方向上的亮度变化,因而垂直边缘检测算子检测的是水平边缘。常见一阶边缘检测算子如下所述:
Sobel算子是两个Prewitte模板中心像素的权重取2倍的值。是由向量方式确定边缘的两个mask组成的。Sobel算子的这个通用形式缩合了一条坐标轴上最优平滑和另一条坐标轴上的最优差分。换而言之,Sobel 算子有两个,一个是检测水平边缘的 ;另一个是检测垂直边缘的 。它对于象素的位置的影响做了加权,可以降低边缘模糊程度,因此效果更好。
由于Sobel算子是滤波算子的形式,用于提取边缘,可以利用快速卷积函数, 简单有效,因此应用广泛。更为详细知识,请参考博文【特征提取】差分近似图像导数算子之Sobel算子。
Canny边缘算子由三个主要目标形成:第一、无附加响应的最优检测,即不失去重要的边缘,不应有虚假的边缘;第二、实际边缘与检测到的边缘位置之间的偏差最小;第三、减少单边缘的多重响应而得到单响应。这一点被第一个目标是减少噪声响应。第二个目标是正确性,即要在正确位置检测到边缘。第三个目标限制的是单个边缘点结于亮度变化定位。Canny指出高斯算子对图像平滑处理是最优的。
更为详细知识,请参考博文【特征提取】图像函数二阶导数过零点之Canny边缘检测算子。
一阶边缘检测的前提是微分处理可以使变化增强,而且图像亮度在特征边界处存在变化。处理程如下图所示:
图a图像数据的横截图,图b所示的一阶边缘检测的结果f'(x) = df/dx 是一个峰值,表示图a所示信号f(x)的变化比例最大。另外还可以采用高阶导数;应用于同样的横截图数据,图c所示的导数f"(x) = df'(x)/dx,当信号的变化比例最大时其值也最大,而当变化比例为常数时其值为0。在一阶导数的峰值位置变化比例为常数。这就是二阶导数过零点位置,并在此位置变正负符号。由此可知,除了一阶微分以外,另一个方法是应用二阶微分,并在二阶信息里找到过零点。
Laplacian算子是一个实现二阶微分的模板。二阶微分可以利用两个相邻一阶微分的差值来近似。如果将原始图像通过拉普拉斯变换后增强了图像中灰度突变处的对比度,使图像中小的细节部分得到增强并保留了图像的背景色调,使图像的细节比原始图像更加清晰。基于拉普拉斯变换的图像增强已成为图像锐化处理的基本工具。如下图所示:
更为详细知识,请参考博文【特征提取】差分近似图像导数算子之Laplace算子。
Marr-Hildreth方法也是利用高斯滤波。理论上,需要一帧图像,它是图像高斯算子与图像进行卷积计算后的二阶微分。Marr-Hildreth算子的一个优点是赛马场能够给出封闭的边缘边界,而Canny算子不能。另一个优点是它能够避免延后Threshold的递归计算。更为详细知识,请参考博文【特征提取】Marr-Hildreth边缘检测器。
Laplacian of Gaussian计算可以利用高斯差分来近似,其中差分是由两个高斯滤波与不同变量的卷积结果求解获得。从两个平滑算子的差分得出的是二阶边缘检测。图下所示,在1-D空间,不同变量的两个高斯分布相减形成一个一维算子,其横截面图与LoG算子的形状是一样的。
更为详细知识,请见参考博文【特征提取】LOG算子。
高斯函数的差分是可以通过将图像与高斯函数进行卷积得到一幅图像的低通滤波结果,即去噪过程,这里的Gaussian和高斯低通滤波器的高斯一样,是一个函数,即为正态分布函数。同时,它对高斯拉普拉斯LoG的近似,在某一尺度上的特征检测可以通过对两个相邻高斯尺度空间的图像相减,得到DoG的响应值图像。如下图所示:
关于DoG算子更为详细知识,请见参考博文【特征提取】DOG算子。
边缘检测方法有许多。很显然,任何实现在计算成本和效率都要有折中。在有些情况下,很难判断Canny和Marr-Hilderth算子相关的复杂性。这一定程度在于图像本身。即:很少图像图像不含一些不利的noise。这些情形都需要要让边缘检测算子来处理。而且,找到形状后,经常需要提取许多低层次次信息,以便根据信息是否用来判断是用于更加精确的形状检测处理。
SUSAN算子源于一个只想找出边缘方法,由于除了边缘,还可以用于找到corner并在保存结构的情形下减少图像noise,实质上,SUSAN处理是最小核相似区,主要累计以核为中心的模板各个成分之间的差质.更为详细知识,请见参考博文【特征提取】SUSAN算子。此算子还含有一个利用非极大值亦制计算边缘方向的方法。其优点是简便,因为处理简单,而且可以找到时其他特征类型扩展。
边缘检测算子的比较研究突出了它们的一些内在问题:不完全整Contour,Threshold选择和noise响应问题。当局部光照变化,选择单个阈值值通常不能用于图像中的所有区域。我们将发现其中有些问题可以在高层次上得到处理,因为高层次处理时形状提取可以调节部分数据而屏弃假的信息。
相位一致性(phase congruency)方法是一个特征检测算子,它有两个主要优点:第一,可以检测大范围的特;第二、对局部和平滑光照变化具有不变性。正如其名,它是基于相位(即时间)考虑的频域处理。图下所示是显示检测出的1-D特征,其中特征是实线。
图(a)所示的是有noise阶梯函数,图(b)所示的是峰值。通过Fouier变换分析,任何函数都是由不同频率的sina波控制叠加而成的。就阶梯函数而言,各个频率(图(a)中的虚线)都在同一时间上产生多种变化,叠加起来成为边缘。同样地,峰值是各个频率在同一时间达到峰值而产生的;图(b)中实线表示峰值,虚线表示其中一些组成的频率。这表明,为了找到我们相要的特征,可以确定一些同时发生事件点:这就是相位一致性。 通过一般化处理,一个三角形波由峰值和谷值组成:相位一致性意味组成信号的峰值各谷值是完全一致。图(a)所示的组成sina波是这样得到的,对一个阶梯(step)进行Fouier变换,然后根据其幅度和相位麦乳精确定那些sina波。
这两个优点其实就是一致性检测具有局部对比度不变性:即使阶梯边缘强度变小,sina波不断叠加,其变化位置不变。在图像中,这意味着即使我们变化对比度,仍然可要检测边缘。如图下所示。
图中图像右下方的建筑特在Canny算子图像中没有被检测到,而在相味一致性方法图中显示得很清楚。如查对度再次变化,那么canny算子参数也要重新的进行调整优化。而相位一致性方法不存在类似问题。
通过测量特殊的图像特征来得到局部特征是传统的方法。其主要局部曲率的峰值(即:角点),利用角点来分析图像。以及一些最新方法,利用基于区域或图像块(SIFT,SURF)的分析来提高性能。首先,我们先介绍一些经典的算子检测方法。
Trajkovic算子角点提取方法存在价值是在角点提取的效果上,它优于同时期的其他角点(如Moravec角点,Harris角点)提取方法,同时,从算法的运行速度角度而言,它比同是期的其他角点提取方法要快很多。Trajkovic在速度方面的表现于决定它能够应用对实时要求比较高的系统中。但是Trajkovic也有缺点是它不具备旋转不变性,对噪声比较敏感,对对角点的响应值比较大等。对于这些缺点也会有相应的方法,但不能完全的解决这些缺点。Trajkovic算子计算角点量是在一个小的圆形窗口内,并且考虑了所有通过圆心的直线,即计算了每一个可能的方向上的灰度值变化程度。更为详细知识,请见参考博文【特征提取】图像角点检测之Trajkovic算子。
Moravec的原理就是通过滑动二值矩形窗口寻找灰度变化的局部最大值。Moravec角点检测算法是最早的角点检测算法之一,虽然该算法有很多缺点而且实用性也很差,但是它是很多算法的基础,
该算法将角点定义为具有低“自相关性”的。算法会检测图像的每一个像素,将像素周边的一个邻域作为一个窗口,并检测这个窗口和周围其他窗口的相关性。这种相关性通过两个窗口间的平方差之和(SSD)来衡量,SSD值越小则相似性越高。如果像素位于平滑图像区域内,周围的窗口都会非常相似。如果像素在边缘上,则周围的窗口在与边缘正交的方向上会有很大差异,在与边缘平行的方向上则较为相似。而如果像素是各个方向上都有变化的特征点,则周围所有的窗口都不会很相似。Moravec会计算每个像素窗口和周围窗口的SSD最小值作为强度值,取局部强度最大的点作为特征点。更为详细知识,请见参考博文【特征提取】Moravec检测器。
Harris角点检测器的优点是对二维平移和旋转,少量光照变化,少量视角变化都不每感,而且其计算其很小。另一方面,当有较大变化,视角变化以及对比鲜明的剧烈变化时,它就失去了原先的不变性。从经典的Harris角点检测方法不难看出,该算法的稳定性和k有关,而k是个经验值,不好把握,浮动也有可能较大。鉴于此,改进的Harris方法直接计算出两个特征值,通过比较两个特征值直接分类,这样就不用计算Harris响应函数了。另一方面,我们不再用非极大值抑制了,而选取容忍距离:容忍距离内只有一个特征点。该算法首先选取一个具有最大最小特征值的点(即:max(min(e1,e2)),e1,e2是harris矩阵的特征值)作为角点,然后依次按照最大最小特征值顺序寻找余下的角点,当然和前一角点距离在容忍距离内的新角点呗忽略。更为详细知识,请见参考博文【特征提取】Harris角点检测。
SIFT算法主要包括两个阶段,一个是SIFT特征的生成,即从多幅图像中提取对尺度缩放、旋转、亮度变化无关的特征向量;第二阶段是SIFT特征向量的匹配。SIFT方法中的低层次特征提取是选取那些显特征,这些特征具有图像尺度(特征大小)和旋转不变性,而且对光照变化也具有一定程度的不变性。此外,SIFT方法还可以减少由遮挡、杂乱和噪声所引起的低提取概率。更为详细知识,请见参考博文【图像分析】尺度不变特征变换(SIFT)特征提取分析。
引入尺度不变的特征,主要的思想是每个检测到的特征点都伴随着对应的尺寸因子。当我们想匹配不同图像时,经常会遇到图像尺度不同的问题,不同图像中特征点的距离变得不同,物体变成不同的尺寸,如果我们通过修正特征点的大小,就会造成强度不匹配。
为了解决这个问题,提出一个尺度不变的SURF特征检测,在计算特征点的时候把尺度因素加入之中。SURF与SIFT算法相似,SIFT算法比较稳定,检测特征点更多,但是复杂度较高,而SURF要运算简单,效率高,运算时间短一点。第一、SURF算法是对SIFT算法加强版,同时加速的具有鲁棒性的特征。第二、标准的SURF算子比SIFT算子快好几倍,并且在多幅图片下具有更好的鲁棒性。SURF最大的特征在于采用了harr特征以及积分图像integral image的概念,这大大加快了程序的运行时间。为了实现尺度不变性的特征点检测与匹配,SURF算法则先利用Hessian矩阵确定候选点,然后进行非极大抑制,计算复杂度降低多了。更为详细知识,请见参考博文【图像分析】SURF特征提取分析。
[1] Feature Detection (Computer Vision) From Wikipedia, the free encyclopedia.
[2] Richard Szeliski,"Computer Vision:Algorithms and Applications", Microsoft Research, 2010.
关于Image Engineering & Computer Vision的更多讨论与交流,敬请关注本博和新浪微博songzi_tea.