丁国绅,乔延利,易维宁,杜丽丽,方 薇*
(1.中国科学院 安徽光学精密机械研究所 通用光学定标与表征技术重点实验室,安徽 合肥 230031;2.中国科学技术大学,安徽 合肥 230026)
图像的局部特征是计算机视觉中非常重要的概念,诸多计算机视觉的应用都是基于对图像局部特征信息的提取与匹配技术,比如人脸识别、地图导航、3D建模、影像分割等等[1-4]。依据局部特征的类型,图像特征提取技术大致可分为基于点、线和区域特征三类,经典算法包括LOG(Laplacian of Gaussian)算子[5]和HOG(Histogram of Oriented Gridients)算子[6]、尺度不变特征变换(Scale-invariant Feature Transform,SIFT)[7]。其中,基于线特征和区域特征的方法大多对图像尺度和视点的变化较为敏感,基于点特征的图像特征提取方法则对图像的旋转、视点、尺度等变化敏感性较低。1977年,Moravec提出了特征点的概念并在后续文章[8]中将其应用于图像匹配。在Moravec角点检测方法被提出之后,各种角点检测算子相继被提出,具有代表性的是Harris算子[9]和SIFT算子。Harris算子根据像素点灰度的一阶差分计算图像中每个点的特征值,然后在指定邻域大小的图像块中选择最优的点作为当前图像块的特征描述符,对旋转和灰度值变化不敏感,是一种相对稳定的图像特征提取方法。1999年Lowe[10]提出了SIFT算子, SIFT算子的性能相比于Harris算子有了很大地提升,最显著的就是其具有尺度不变性。因此SIFT算子一经提出就受到了研究者的普遍关注[11-13]。
SIFT算子对图像的尺度、旋转、视点和仿射变换具有良好的稳定性,被广泛应用于图像的特征提取与匹配领域。随着应用研究的深入,SIFT方法的不足也逐渐显露:提取的图像特征点数量太少难以满足实际工作的需要;采用邻域内的图像块信息作为特征描述符,虽然能够描述目标特征点,但在一幅图像中很有可能存在具有相似特征的不同点,因此仅仅采用邻域信息作为特征描述符可能会导致误匹配。针对这些问题,许多研究者提出了各种改进方法。Zhao等[14]从曝光度出发,通过调整不同灰度级的曝光效应,提升图像对比度;曾峦等[11]首先校正了对比度控制系数,然后利用改进的RANSAC(Random Sample Consensus)方法找到匹配模型的初始参数,完成图像自动匹配;耿庆田等[13]将图像不变矩理论引入特征点检测,剔除无效特征点,同时将邻域图像块划分为多个同心圆,构建全局特征点;Yu等[15]在尺度空间构造过程中嵌入了滚动指导滤波器来生成多尺度图像,在保持边缘的消隐方面取得了较好的效果,改进后的非线性多尺度空间构建策略为低信噪比的高质量特征点监测提供了依据。
本文针对上述SIFT方法的不足,提出一种基于高光谱图像的SIFT图像特征提取与匹配算法,提升了算法的特征检测与匹配性能。
SIFT算法是David Lowe在1999年发表并于2004年进行完善的基于尺度空间不变性的图像特征检测方法,SIFT特征描述符是基于目标图像的局部特征信息而与图像的旋转、仿射和尺度的变化无关,因此该算法受到了广大研究者的青睐并进行了深入研究。SIFT特征描述符的构造主要分为以下几个步骤。
对目标图像进行多尺度特征变换,得到不同尺度因子下的图像序列。图像的尺度空间L(xi,yi,σo)表示为原始图像I(xi,yi)与尺度渐变的二维高斯函数G(xi,yi,σo)的卷积运算的结果:
G(xi,yi,σo)=
(1)
L(xi,yi,σo)=G(xi,yi,σo)*I(xi,yi),
(2)
将原始图像不断进行降采样,第i+1组的第1层图像由第i组的倒数第3层直接降采样得到,不需要进行高斯模糊。金字塔的层数由原始图像和最顶层图像的大小共同决定,如式(3)所示:
O=log2{min(M,N)}-k,
k∈[0,log2{min(M,N)}]
(3)
其中:M,N表示原始图像的大小,k为顶层图像大小的对数值。
相比于图像梯度特征和角特征,高斯拉普拉斯函数的极值特征更加稳定,而尺度归一化的高斯拉普拉斯函数与高斯差分函数的性质非常接近,因此不同尺度下(Difference of Gaussian,DOG)的高斯差分图像构成了高斯图像差分金字塔,用来检测图像极值点。比较DOG空间中的第2层至倒数第2层的每一层图像上的每一个像
素点与其邻近的26个像素点的大小,即本层图像的相邻8个点和上下相邻尺度对应位置的9个像素点,得到图像的局部极值点。
经过特征点检测得到的只是一系列离散的特征点,真实空间中的特征点位置需要插值拟合才能被更加精确地确定。为此,对DOG尺度函数进行了子象元插值。对于任意函数f(x),其泰勒展开式如式(4)所示:
(4)
因此可以得到DOG函数的泰勒展开函数:
(5)
其中X表示极值点的位置向量。令D′(X)=0,得到极值点的偏移向量:
(6)
另外,DOG算子在边缘处产生的极值点很不稳定,为了去除边缘效应,设定了边缘极值点的主曲率阈值,在此阈值范围内的极值点被保留下来,超出阈值的极值点都被剔除。
在得到特征点的位置信息之后,就要确定特征点的方向,保证特征向量的旋转不变性。以当前特征点作为旋转中心,计算给定邻域范围内的图像梯度分布值,其模值和方向计算公式分别如式(7)和式(8)所示:
(7)
θ(xi,yi)=tan-1((L(xi,yi+1)-L(xi,yi-1))/(L(xi+1,yi)-L(xi-1,yi))).
(8)
将给定半径的圆形邻域依次均分为36个子方向,每个方向包含10°以内的梯度值信息,统计得到累加梯度值最大的一组,再经抛物线插值即确定了特征点的主方向。
划分特征点给定半径的邻域区域为4×4个子区域,每个子区域平均分成8个方向,计算每个子区域的每个方向上的梯度累加值,得到128维的向量,即为该特征点的特征描述符。为了降低光照对特征描述符的影响,对生成的描述符H进行了归一化操作。H即为目标特征点的128维的特征描述符。
(9)
传统SIFT算法的图像尺度空间的构建是依赖图像的高斯模糊实现的。给定一幅待提取特征的原始图像,将其与具有不同模糊系数的二维高斯函数分别进行卷积运算,得到不同模糊系数下的高斯卷积图像。再对原始层倒数第3层的图像进行降采样,然后同样将其与具有不同模糊系数的高斯函数进行卷积得到第2组图像,以此类推构造图像金字塔。虽然构造了图像尺度空间,但由于空间中除原始图像外的每一幅图像都是通过高斯模糊或高斯模糊加降采样的方式得到,尺度空间越大图像越平滑,丢失的细节信息越多,因此随着模糊程度的增加,能提取到的有用的图像特征越少。
高光谱图像是指光谱分辨率达到10 nm以上的光谱图像,在不同波段下对同一目标区域同时成像,各波段下的图像在相同位置具有不同的DN(Digital Number)值,波段间隔越小,图像间的DN值差异越小。
受高光谱图像性质的启发,本文重新构造了图像的尺度空间,首次提出用高光谱图像构造图像金字塔的方式,具体操作如下:
(1)在可见光波段范围内,选取一组高光谱图像作为图像金字塔的原始层图像,本层中的每一幅图像都未经高斯卷积操作;
(2)第2组中的每一层图像都是由原始层图像不经过高斯模糊直接降采样得到,以此类推构造图像金字塔;
(3)各组中相邻的两层图像相减得到高斯差分金字塔。
图1为图像尺度空间构造示意图。
图1 图像尺度空间构建Fig.1 Image scale space construction
从高斯金字塔的构建到特征描述符的生成都是为了完成后续的特征提取与匹配工作,然而不管是传统SIFT算法还是许多针对SIFT算法展开的一系列研究都无法避免误匹配现象[11,13,15]。这些算法通过各种改进措施增强特征描述符的鲁棒性,提高特征提取与匹配的效率,但在构造特征描述符时大都是采集目标特征点给定邻域内的图像块信息特征,仅以统计学的角度来比较目标特征点与待匹配特征点的相似程度,而没有考虑目标特征点在原图像中的位置信息。因此本文扩展了描述符向量,使其包含了能够表征描述符的位置向量,在进行特征点匹配时分为粗匹配与细匹配两个步骤。
图2 基准匹配二维示意图Fig.2 2D diagrammatic sketch of basic matching
(ly-my)x+(mx-lx)y+
my(lx-mx)-mx(ly-my)=0,
(10)
(ny-py)x+(px-nx)y+
py(nx-px)-px(ny-py)=0,
(11)
令ly-my=a1,mx-lx=b1,my(lx-mx)-mx(ly-my)=c1,ny-py=a2,px-nx=b2,py(nx-px)-px(ny-py)=c2,则交点f的坐标为:
(12)
令r1=|nf|/|np|,r2=|mf|/|ml|,则:
r1=((nx-fx)2+
(ny-fy)2)/((nx-px)2+(ny-py)2),
(13)
r2=((mx-fx)2+
(my-fy)2)/((mx-lx)2+(my-ly)2).
(14)
由于图像在变换过程中,各个点的相对位置不变,因而存在以下关系:
|nf|/|np|=|n′f′|/|n′p′|,
(15)
则交点f′的坐标为:
(16)
(17)
(18)
(19)
最后判断ξ是否在容许误差范围内,据此判断是否执行剔除操作。
由于本文是首次将高光谱图像用来构造图金字塔,因此实验图像采用的是规格为IS210-0.4-1.0-L的Brimrose高光谱成像光谱仪拍摄得到。仿真环境为Windows 7(64位)操作系统,Intel R Core TM i5-2430M CPU @ 3.20 GHz处理器,4.00 GB内存,MATLAB R2018a编码。为了验证所提改进算法的可行性及算法性能,本文采用传统SIFT算法和改进算法进行同步实验,验证改进算法的性能。论文实验中用到的测试图像链接为:https://pan.baidu.com/s/1WFyu3Yv4Jp2bnU28amSyAg
对比实验分为4组,第1~3组采用了同一组高光谱图像,对应的波段间隔分别为25 nm、35 nm和50 nm,验证波段间隔的大小对特征点采集的影响;第4组采用了低曝光率下波段间隔为50 nm的高光谱图像,与第3组实验进行对比,验证高光谱相机的曝光率对特征点采集的影响。图3和图4是在波段间隔为50和25,最近邻与次近邻比值分别为0.8和1.0时传统SIFT算法在每层图像上的匹配结果图和最近邻与次近邻比值为1.0时改进算法在高光谱图像金字塔和高光谱图像金字塔以及位置准则下的匹配结果图。为保证匹配精度,位置准则的判定阈值设定为2。
从各组实验(图3和图4)的图(a)和图(b)可以看出,基于单波段图像的传统SIFT算法提取到的特征点数量非常有限,而且存在许多误匹配。两组图(c)表示在改变图像金字塔的构造方式下,算法提取到的特征点与匹配效果,显然基于3.1节的图像金字塔构造方式能大大提高检测特征点的数量。相应的图(d)表示在构造了基于高光谱图像的图像金字塔之后又采用了基于位置准则的特征提取与匹配方法的最终结果,可以看出算法无论是在特征点提取的数量还是在匹配的效果上都得到了很大提升。
图3 波段间隔为50时的特征点匹配结果Fig.3 Matching results of feature points at 50 band intervals
图4 波段间隔为25时的特征点匹配结果Fig.4 Matching results of feature points at 25 band intervals
表1 特征点匹配结果
Tab.1 Matching results of feature points
表1给出了在特征描述符的最近邻与次近邻比值分别在0.6,0.65,0.7,0.75,0.8,0.85,0.9,0.95,1.0,1.05时传统SIFT算法检测到的中间波段图像的匹配对数量(包括误匹配)、正确匹配对数量和本文算法检测到的匹配对数量。由于低波段和高波段的图像能见度低,SIFT算法的输入是单波段图像,因而为保证实验公平性此处选择中间波段图像。通过理论分析与人工校验,本文算法最终的匹配对所包含的误匹配数量为0对。根据实验结果可以发现,随着最近邻与次近邻比值的增大,SIFT算法所提取与匹配到的特征点数量在不断增加,但误匹配数量也随之增加,与Lowe的实验现象一致。另外,本文所提改进算法在特征点数量的提取上有了很大提高,证明将高光谱图像作为图像金字塔的构造方式是积极有效的;而且没有误匹配,证明我们的基于位置准则的双重匹配策略也是切实可行的。图5是特征匹配对最近邻与次近邻比值在0.6~1.05时传统SIFT算法在所有波段下特征点的平均正确匹配对数量与本文算法的正确匹配对数量曲线,更能直观地反映出改进算法在性能上的提升程度。
图5 平均正确匹配数量曲线Fig.5 Average correct matching quantity curve
时间花销是衡量算法效率的一个积极指标。经过统计,本文算法的时间花销相比于传统SIFT算法与文献[16-17]的程度相当。不过本文旨在提出一种新的思路来拓展SIFT算法的优化方向,对于时间花销的优化将在下一步的工作中进行。综合来看,本文算法有效提升了算法的特征点提取与匹配能力。
图像的特征点提取与匹配是图像处理领域最重要的操作之一。本文针对传统SIFT算法所存在的提取特征点数量少、误匹率高的缺陷,提出了一种新的解决办法。在图像金字塔的构造方式上,摒弃了使用单一图像经不同程度高斯模糊产生不同尺度下的图像组的做法,将不同波段的高光谱图像进行直接降采样生成图像金字塔,以保证能提取到更多的原始信息。为了摆脱匹配阶段正确匹配对数量与误匹配率的束缚,我们提出了双重匹配的策略。在粗匹配阶段依然延续最近邻与次近邻的比值作为匹配判断标准,但此处的阈值设定有了较大的提升,能够包含更多的正确匹配对。在完成粗匹配操作之后,对匹配结果按相似性程度进行排序,完成第二阶段的精细匹配操作。实验结果也显示了本文所做改进方式无论在特征点的提取数量方面还是在特征点的匹配精度方面都起到了很大的作用,提高了算法的有效性。下一步工作将基于本文的研究,将重点放在算法的效率优化上,进一步全面整合改进措施,提高算法的整体性能。