2.2 中级图像特征
初级特征通常很难全面地描述图像中的信息,因此经常将多个初级图像特征组合起来作为中级图像特征来更好地表达图像特征。另外,从图像中具有较丰富信息的图像块提取到的滤波器特征也可划分为中级图像特征。
2.2.1 Haar-like特征
Haar-like特征,又称为Haar特征,是计算机视觉领域常用的一种图像特征描述符,最早由Papageorgiou等人提出用于人脸表示[6],现在常用于目标识别和目标检测领域。常用的Haar特征如图2-4所示,可分为三大类:边缘特征、线性特征和中心环绕特征。对一幅图像,根据检测目标的不同,可以选用不同的Haar特征形式。
图2-4 常用的Haar特征
Haar特征模板内有白色和黑色两种矩形,并定义该模板的特征值为白色矩形像素值之和与黑色矩形像素的差值。特征的参数包括模板类型、矩形位置和矩形大小。Harr特征利用图像区域中灰度值的变化反映物体与周围环境的差异。以人脸为例,人的眼睛比脸颊颜色要深,鼻梁两侧比鼻梁颜色要深,嘴巴比周围颜色要深,这些特性都可以通过上述模板表达出来。然而其缺点在于,只能针对一些简单的图形结构,对水平、垂直、对角这些特定走向之外的结构无能为力,很大程度上限定了特征的使用场景,之后研究人员针对Harr特征做了许多改进。
计算Haar特征值首先要对矩形块内的像素值进行求和,若选取的特征数量较多,会导致计算量过大。为了加快计算Haar特征值,研究人员引入了积分图像(Integral image,又称为Summed Area Table)这一概念。Summed Area Table由Crow在1984年首次提出[7],后来Viola等人将其应用到快速目标检测框架下[8],并取名为积分图像。
积分图像是指一个与原始图像尺寸一样的矩阵,其任一点(x,y)的值是从原始图像左上角至当前坐标点所构成的矩形内所有像素值的和,其描述公式见式(2-9)。
其中,I(x,y)表示积分图像的值,i(x′,y′)表示原始图像的像素值。尽管积分图像的定义式需要大量的求和计算,但它有着更高效的计算方法,只需遍历图像一次即可完成。对于任意一点(x,y)积分图像值的计算见式(2-10)。
完成积分图像的计算后,后续图像中任何区域的像素累加值可直接引用该结果,不用重复计算。如计算图2-5中矩形区域ABCD的像素值之和,可以借用A、B、C、D这四个点的积分图像值来完成求解,见式(2-11)。
无论矩形块的尺寸大小为多少,都只需要4次访问操作,再进行3次加减操作,即可完成矩形块像素值求和,这大大地减小了Haar特征值的计算量。
图2-5 利用积分图像计算矩形块的特征值
通过一次遍历计算得到积分图像,进而快速求得Haar特征值。但是此方法只适用于水平或垂直的矩形块,如图2-4中第二行经过45°角旋转的Haar特征便不适用此方法。
对于45°倾角的积分图像,积分图像计算方式为计算像素点(x,y)正上方的像素值之和。计算范围如图2-6所示,α=β=45°,见式(2-12)。
图2-6 45°倾角积分图像计算范围
当然,计算45°倾角矩形特征的积分图像也可以采用增量方式得到。对于任意一点(x,y),计算积分图像的值需要经过两边扫描。第一次从左到右,从上到下进行扫描计算,见式(2-13)。
其中,针对边界做如下处理:。扫描完成后,继续第二次从右到左,从下到上进行扫描计算,见式(2-14)。
得到积分图的值后,对于一个45°旋转的矩形(x,y,w,h,45°),那么该矩形块的像素和可以通过公式(2-15)得到。
同样地,无论旋转矩形尺寸大小如何,只要查找积分图像四次,加减操作三次就可以求得任意矩形内像素值的和,进一步通过计算可得到Haar特征值。
2.2.2 SIFT特征
SIFT[8](尺度不变特征变换,Scale-invariant Feature Transform)是一种提取局部特征的点描述符。该算法在不同的尺度空间中寻找局部极值点作为关键点,并综合使用其位置信息、尺度信息以及方向信息来对关键点进行描述,因此特征描述符对旋转、光照、尺度等信息的变化比较不敏感,而且对角度的变化、仿射变换以及噪点噪声等也都能保持一定的不变性。另外,SIFT特征能很方便地同其他类型特征组合用于图像检测。
SIFT特征的检测过程主要包含以下四个步骤。
1.尺度空间的极值检测
首先对目标图像构建尺度空间,所谓尺度空间是一张图像在不同分辨率下的一组结果。构建尺度空间通常包含:对图像进行平滑模糊处理,再将其进行下采样,从而得到一系列不同尺寸的图像。
为了获取图像在多个尺度上的特征信息,SIFT用不同尺度的高斯核函数对图像进行滤波处理,来构成高斯尺度空间,其表达式见式(2-16)。
其中,I(x,y)是原始图像,L(x,y,σ)为图像的尺度空间,(x,y)为像素位置,σ是尺度因子,也就是高斯分布的标准差,其值越大则代表图像被平滑的程度越深。有了不同的尺度空间后,就可以构建DOG(高斯差分,Difference of Gaussian)空间。DOG定义由式(2-17)可得,其中k为相邻高斯尺度空间的比例因子:
然后通过将DOG空间中每一个像素点及其周围所有相邻像素点比较(既包括同一尺度域下的相邻点,也包括相邻尺度域的相邻点),从而获取到尺度空间内像素值的极值点。
2.关键点定位
关键点是由DOG空间的局部极值点组成的,首先要对关键点进行初步探查,这一步是通过同一组内各DOG相邻两层图像之间比较完成的。这些比较检测得到的DOG局部极值点不一定全部都满足条件,因此可以通过尺度空间的DOG函数进行曲线拟合寻找极值点,进而再对这些极值点进行筛选,除去效果不佳的特征极值点,从而提升极值点的健壮性和抗噪性。需要排除的极值点主要是不稳定的边缘响应点或低对比度的极值点。
1)低对比度的极值点
设候选特征点为x,其偏移量定义为Δ x,对比度D(x)的绝对值为|D(x)|,对D(x)运用泰勒展开式可得式(2-18)。
由于x为D(x)的极值点,所以对上式求导并令其为0,得到式(2-19)。
再将其代入式(2-18),可得式(2-20)。
设对比度的阈值为T,若|D(x∧)|≤ T,则排除该特征点。
2)不稳定的边缘响应点
一个定义不好的高斯差分算子在边缘梯度的方向上主曲率值比较大,而沿着边缘方向则主曲率值较小。候选特征点的DOG函数D(x)的主曲率与2× 2的Hessian矩阵H的特征值成正比。2× 2的Hessian矩阵见式(2-21),其中Dxx等是候选点领域对应位置的差分求得。
设α=λmax是矩阵H的最大特征值,β=λmin是矩阵H的最小特征值,则
其中tr(H)是矩阵H的迹,det(H)为矩阵H的行列式。再设,则
上式的结果只和特征值的比值γ有关,而与特征值具体大小无关。因此判断候选特征点的主曲率是否在阈值Tr之下,只需进行下式(2-24)的比较:
若上式成立,则删除该特征点,否则保留之。在SIFT的论文〔8〕中,作者采用阈值Tr=10。
3.确定特征点的主方向
经过上面的步骤已经找到了在不同尺度下都存在的特征点,为了实现图像旋转不变性,需要给特征点的方向进行赋值。利用特征点邻域像素的梯度分布特性来确定其方向参数,再利用图像的梯度直方图求取关键点局部结构的稳定方向。
计算以特征点为中心,半径为3×1.5σ(σ是尺度因子)的区域图像的幅角和幅值,每个点L(x,y)的梯度的幅值m(x,y)和方向θ(x,y)可由式(2-25)得到:
计算得到梯度方向后,就要使用直方图统计特征点邻域内像素对应的梯度方向和幅值。梯度方向的直方图的横轴是梯度方向的角度,纵轴是梯度方向对应梯度幅值的累加,直方图的峰值就是特征点的主方向。还可以使用高斯函数对直方图进行平滑,以增强特征点附近的邻域点对关键点方向的作用,并减少突变的影响。
为了得到更精确的方向,通常还可以对离散的梯度直方图进行插值拟合。具体而言,关键点的方向可以由和主峰值最近的三个柱值通过抛物线插值得到。在梯度直方图中,当存在一个相当于主峰值80%能量的柱值时,则可以将这个方向认为是该特征点辅助方向。所以,一个特征点可能检测到多个方向(也可以理解为,一个特征点可能产生多个坐标、尺度相同但方向不同的特征点)。得到特征点的主方向后,对于每个特征点可以得到三个信息(x,y,σ,θ),即位置(x,y)、尺度σ和方向θ。由此可以确定一个SIFT特征区域。
4.生成特征点描述
为了保证特征矢量的旋转不变性,要以特征点为中心,在附近邻域内将坐标轴旋转θ(特征点的主方向)角度,即将坐标轴旋转为特征点的主方向。旋转后邻域内像素的新坐标为:
旋转后以主方向为中心取8×8的窗口,然后利用高斯窗口对其进行加权运算。最后在每4×4窗口的小块上绘制8个方向的梯度直方图,计算每个梯度方向的累加值,即可形成一个种子点,每个特征点由4个种子点组成,每个种子点有8个方向的向量信息,而在实际运用中,为了增强匹配度的稳健性,可以采用16个种子点进行描述,这样一个特征点就可以产生128维的SIFT特征向量。这种联合了邻域的方向性信息增强了算法的抗噪声能力,同时对于含有定位误差的特征匹配也提供了比较理性的容错性。最后将特征向量进行归一化处理以排除光照等影响。基于SIFT特征的匹配过程如图2-7所示。
图2-7 SIFT特征的匹配过程
2.2.3 SURF特征
SURF特征(加速版的具有健壮特性的特征算法,Speed Up Robust Features)是经典的SIFT特征的改进算法。SIFT特征最大的缺点就是计算量大,如果不借助硬件或者专门的图像处理器进行加速的话,SIFT特征很难达到实时处理的效果。SURF特征则引入了Haar特征以及积分图像的概念,这大大缩短了程序的运行时间。SURF特征不仅保持了SIFT的尺度不变和旋转不变的特性,还对光照变化和放射变化同样具有很强的健壮性。SURF特征一般应用于计算机视觉中的物体识别、图像拼接、图像配准以及3D重建中。
SURF特征的概念及提取步骤均建立在SIFT之上,但详细的流程略有不同。SURF使用Hessian矩阵的行列式值作为特征点响应侦测,并用积分图像加速运算。SURF特征是基于二维离散小波变换响应与Harr小波特征进行描述的。
1.特征点检测
SIFT对原图像不断地进行Gauss平滑、降采样。在得到金字塔图像后,又进一步得到了DOG图像。而高斯核的尺度因子是不同的。SURF使用了方型滤波器取代SIFT中的高斯滤波器,借此达到高斯模糊的近似。图像大小保持不变,改变的是滤波器的大小。其滤波器可表示可见式(2-27)。
此外使用方型滤波器可利用积分图像大幅提高运算速度,仅需计算位于滤波器方形的四个角落值即可。
SURF还使用了Hessian矩阵来侦测特征点,其行列式值代表像素点周围的变化量,因此特征点需取行列式值为极大、极小值。除此之外,为了达到尺度上的不变,SURF还使用了尺度σ的行列式值进行特征点的侦测,给定图形中的一点(x,y),在尺度σ下的Hessian矩阵为:
根据矩阵的行列式值,可以得到曲率的强度。该方法把角点定义为局部变化率高(即在多个方向上的变化幅度都很高)的像素点。这个矩阵由二阶导数构成,因此可以用高斯内核的拉普拉斯算子在不同的尺度(即不同的σ值)下计算得到。这样,Hessian矩阵就成了三个变量的函数,即H(x,y,σ)。如果Hessian矩阵的行列式值在普通空间和尺度空间(即需要执行3×3×3次非最大值抑制)都达到了局部最大值,那么就认为这是一个尺度不变特征。
2.构建尺度空间
同SIFT一样,SURF也需要构建尺度空间。不同的是,SIFT中下一组图像的尺寸是上一组的一半,同一组间图像尺寸一样,但是所使用的高斯模糊系数逐渐增大;而在SURF中,不同组间图像的尺寸都是一致的,但不同组间使用的盒式滤波器的模板尺寸逐渐增大,同一组间不同层间使用相同尺寸的滤波器,但是滤波器的模糊系数逐渐增大。
3.特征点定位
对于特征点的定位过程来说,SURF和SIFT保持一致,将经过Hessian矩阵处理的每个像素点与二维图像空间和尺度空间邻域内的26个点进行比较,初步定位出关键点,再过滤掉能量较弱的关键点以及错误定位的关键点,筛选出最终的稳定的特征点。
4.特征点主方向分配
SIFT特征点方向分配是采用在特征点邻域内统计其梯度直方图,取直方图柱值最大的,以及超过最大柱值80%的那些方向作为特征点的主方向。而在SURF中,采用的是统计特征点圆形邻域内的Haar小波特征,即在特征点的圆形邻域内,统计60度扇形内所有点的水平、垂直Haar小波特征总和,然后扇形以0.2弧度大小的间隔进行旋转,并再次统计该区域内Haar小波特征值之后,最后将值最大的那个扇形的方向作为该特征点的主方向。
5.生成特征点描述符
为了使特征点具有旋转不变的特性,需要赋予特征点一个描述符,使其能保有其不变性且能够轻易地被区分。大多数的描述符建立的方法为描述特征点与其相邻的像素点间的变化,因此描述符往往都是区域性的。
同时描述符的维度也是描述符重要的考量之一,一个维度不足的描述符可能会使特征点不易区分,然而维度过大的描述符要耗费的计算也就越复杂。SURF的描述符使用了Haar小波转换的概念,并利用积分图像简化描述符的计算。
6.特征点匹配
与SIFT特征点匹配类似,SURF也是通过计算两个特征点间的欧式距离来确定匹配度的,欧氏距离越短,代表两个特征点的匹配度越好。
不同的是,SURF还加入了Hessian矩阵迹的判断。如果两个特征点的矩阵迹正负号相同,则代表这两个特征点具有相同方向上的对比度变化;如果不同,则说明这两个特征点的对比度变化方向是相反的,即使欧氏距离为0,也直接予以排除。