唐雪松,譚斌
(西華大學(xué)計(jì)算機(jī)與軟件工程學(xué)院,成都 610093)
在數(shù)字圖像處理中,圖像特征匹配是計(jì)算機(jī)視覺(jué)中一個(gè)關(guān)鍵問(wèn)題,在三維重建、目標(biāo)識(shí)別、目標(biāo)跟蹤等應(yīng)用中有這重要意義。角點(diǎn)是圖像的重要局部特征,在圖像中信息含量較高,使用角點(diǎn)進(jìn)行圖像匹配能夠減少計(jì)算量,因此,角點(diǎn)在圖像匹配中被廣泛使用。國(guó)內(nèi)外學(xué)者對(duì)角點(diǎn)有著不同的理解,不同的檢測(cè)手法形成不同的角點(diǎn)定義,總體上角點(diǎn)檢測(cè)分為兩類:基于圖像灰度信息的角點(diǎn)檢測(cè)算法、基于圖像邊緣的角點(diǎn)檢測(cè)算法。
基于灰度信息的角點(diǎn)檢測(cè)主要通過(guò)定義一個(gè)CRF函數(shù)判斷像素點(diǎn)是否是角點(diǎn)。如:Moravec[1]發(fā)現(xiàn)邊緣像素只有在沿著邊緣線的垂直方向有較大的灰度變化,同質(zhì)區(qū)域的像素灰度變化較小,而角點(diǎn)處的每個(gè)方向上的灰度變化都比較大。Harris[2]針對(duì)Moravec角點(diǎn)中的連續(xù)平方求和而引入局部變換因子,利用高斯權(quán)重函數(shù)特性檢測(cè)角點(diǎn)進(jìn)行改進(jìn),但是只能很好的檢測(cè)到L-型角點(diǎn)。Susan[3]采用圓形模板來(lái)得到各向同性的響應(yīng),不需要計(jì)算微分以及非線性響應(yīng)的特點(diǎn)使得SUSAN算子抑制噪聲的性能較好。FAST[4]算法以快速著稱,適用于實(shí)時(shí)性要求較高的圖像處理,但FAST算法只能檢測(cè)單一類型的角點(diǎn),會(huì)出現(xiàn)角點(diǎn)遺漏現(xiàn)象。基于邊緣輪廓的方法主要是通過(guò)分析圖像邊緣形狀來(lái)檢測(cè)角點(diǎn)。CSS[5]利用Canny邊緣檢測(cè)算子提取圖像邊緣,并填充邊緣輪廓缺口,在大尺度下得到輪廓曲率極大值點(diǎn),比較T-角點(diǎn)與曲率極大值檢測(cè)的角點(diǎn)。該算法獲得良好的角點(diǎn)檢測(cè)效果,存在的問(wèn)題在于如何選擇合適的高斯尺度以及角點(diǎn)的閾值。在CSS基礎(chǔ)上,He和Yung[6]提出了一種使用自適應(yīng)曲率閾值和動(dòng)態(tài)支撐區(qū)域的檢測(cè)器。Mohannad和Lu提出了利用弦到點(diǎn)的距離累加算法CPDA[7],CPDA具有較高的可重復(fù)性和較低的定位誤差,之后又提出了CPDA的快速算法[8]。但CPDA有一個(gè)缺點(diǎn)是估計(jì)拐角的曲率值與角度可能不成正比。Freeman鏈碼[9]使用多邊形近似方法檢查角,并定于兩條邊的交點(diǎn)為角點(diǎn)。Peng等人[10]在角內(nèi)側(cè)灰度一致的前提下提出一種可抗背景變化的點(diǎn)對(duì)特征,基于點(diǎn)對(duì)特征提出一種不受背景影響的角點(diǎn)。
本文在文獻(xiàn)[9-10]提出鏈碼和點(diǎn)對(duì)特征啟發(fā)下,提出一種新的角點(diǎn)檢測(cè)算法。本文從圖像邊緣著手,提出邊緣矢量點(diǎn)結(jié)構(gòu)特征,通過(guò)邊緣矢量點(diǎn)聚類獲取區(qū)域內(nèi)部的鏈碼,在鏈碼的相鄰端點(diǎn)處形成角點(diǎn)。
圖1 算法流程圖
圖像邊緣是圖像中的顯著特征,是兩個(gè)區(qū)域交接處突出的視覺(jué)特征。圖像邊緣在形態(tài)上鄰接兩個(gè)區(qū)域,因此,可以對(duì)一條邊緣進(jìn)行分解,形成兩條邊屬于各自區(qū)域的虛擬邊緣。本文模擬這個(gè)過(guò)程,提出邊緣矢量點(diǎn)結(jié)構(gòu)特征。
圖2為矢量點(diǎn)特征的示意圖,邊緣l將圖像分為A區(qū)域和B區(qū)域,點(diǎn)p是邊緣l上的點(diǎn),p1、p2分別為A、B區(qū)域在p點(diǎn)鄰域的矢量點(diǎn)。
圖2 矢量點(diǎn)結(jié)構(gòu)示意圖
為了提取邊緣矢量點(diǎn),先將原始圖像做中值濾波,再獲取圖像梯度,本文使用索貝爾(Sobel)算子與圖像做卷積的方式獲取梯度。假設(shè)待處理圖像為A,其沿x方向的一階梯度為Gx,沿y方向的一階梯度Gy,梯度幅值G與梯度方向?yàn)棣取?/p>
圖3 Sobel卷積因子
利用式(1)、(2)得到梯度幅值G與梯度方向θ。卷積所得邊緣較粗,提取的矢量點(diǎn)過(guò)多,存在大量重復(fù)的矢量點(diǎn),為解決這一問(wèn)題,本文使用非極大值抑制的方式對(duì)邊緣進(jìn)行細(xì)化。
如圖2所示,獲取細(xì)邊緣后,以邊緣像素點(diǎn)為始點(diǎn)(p點(diǎn)),沿梯度方向和梯度反方向?qū)ふ业谝粋€(gè)非邊緣像素點(diǎn)(p1點(diǎn)、p2點(diǎn)),以非邊緣像素點(diǎn)為終點(diǎn),終點(diǎn)即為邊緣矢量點(diǎn),矢量點(diǎn)方向?yàn)槠瘘c(diǎn)指向終點(diǎn)的方向(矢量點(diǎn)p1的方向?yàn)閜點(diǎn)指向p1點(diǎn)的方向)。
根據(jù)邊緣矢量點(diǎn)提取方式以及終點(diǎn)像素點(diǎn)自身屬性,可對(duì)矢量點(diǎn)做如下描述:
圖4 矢量點(diǎn)語(yǔ)義描述
矢量點(diǎn)特征的語(yǔ)義描述是由方向和終點(diǎn)自身屬性構(gòu)成,沒(méi)有引入其他區(qū)域的信息,因此,矢量點(diǎn)特征具有不受外部干擾的特性。
矢量點(diǎn)沿邊緣分布,且同一邊緣相同區(qū)域的矢量點(diǎn)具有相似性,同一類的矢量點(diǎn)在形態(tài)上類似邊緣的鏈。因此對(duì)矢量點(diǎn)進(jìn)行分類,獲取邊緣兩側(cè)的矢量鏈碼。
圖5 矢量點(diǎn)聚類特征線
矢量點(diǎn)特征的語(yǔ)義描述為矢量點(diǎn)分類提供了先前條件。
設(shè)第i個(gè)矢量點(diǎn)為f(i),第i個(gè)矢量點(diǎn)的x坐標(biāo)為xi,坐標(biāo)為yi,鄰域閾值T1。第i個(gè)矢量點(diǎn)的灰度為g(i),G[z]為灰度為Z的矢量點(diǎn)。第i個(gè)矢量點(diǎn)的方向?yàn)閐(i),D(z)為方向?yàn)閦的矢量點(diǎn)。
NH(I):第i個(gè)矢量點(diǎn)在鄰域閾值T1內(nèi)的點(diǎn)集。
GH(I):第i個(gè)矢量點(diǎn)在灰度閾值T2內(nèi)的點(diǎn)集。
DH(I):第i個(gè)矢量點(diǎn)在方向閾值T3內(nèi)的點(diǎn)集。
LH(I):以第i個(gè)矢量點(diǎn)為端點(diǎn)的特征線。
基于圖像邊緣信息角點(diǎn)提取算法的角點(diǎn)定義為:圖像邊緣輪廓的交叉點(diǎn)。本文模擬這個(gè)過(guò)程,以區(qū)域內(nèi)部的鏈碼為輪廓,鏈碼的交叉點(diǎn)即為角點(diǎn)。如圖7的C區(qū)域,鏈l1的p1端與鏈l2的p2端的交點(diǎn)形成角點(diǎn)α1;為避免角點(diǎn)遺失,若相鄰鏈碼沒(méi)有交點(diǎn),則以鏈碼的相鄰端點(diǎn)的中點(diǎn)為角點(diǎn),如l2的p′1端與l3的p3端形成角點(diǎn)α3。
本文所提取的角點(diǎn)位于角區(qū)域內(nèi)側(cè),對(duì)角點(diǎn)的描述可融合矢量點(diǎn)信息,沒(méi)有引入角外部背景信息,因此可抵抗背景干擾。
為證明本文算法的有效性,將本文算法與ORB算法、SIFT算法以及SURF算法做比較,實(shí)驗(yàn)圖像數(shù)據(jù)為常用角點(diǎn)提取算法中的圖像。
圖6 立方體場(chǎng)景下角點(diǎn)提取對(duì)比
圖 6為立方體場(chǎng)景下本文算法與 ORB、SIFT、SURF提取角點(diǎn)的實(shí)驗(yàn)結(jié)果對(duì)比。本文算法找到了12個(gè)角點(diǎn),分布立方體每個(gè)面的角內(nèi)側(cè),如圖(a)所示。ORB算法找到了37個(gè)角點(diǎn),都位于立方體的頂點(diǎn)處,其中大量角點(diǎn)位置重復(fù),且無(wú)法區(qū)分這些角點(diǎn)歸屬于那個(gè)面,如圖(b)所示。SIFT找到了30個(gè)角點(diǎn),立方體頂部右側(cè)純?cè)诮屈c(diǎn)遺失現(xiàn)象,且有部分偽角點(diǎn),如圖(c)所示。SURF找到36個(gè)特征點(diǎn),其中部分角點(diǎn)位置重復(fù),且右側(cè)面純?cè)诮屈c(diǎn)遺失現(xiàn)象。
圖7 多種三角形場(chǎng)景下角點(diǎn)提取對(duì)比
圖7為多組三角形場(chǎng)景下的對(duì)比結(jié)果。本文算法找到42個(gè)角點(diǎn),分布于三角形角內(nèi)側(cè)。如圖(a)所示。ORB找到了165個(gè)角點(diǎn),鈍角三角形的銳角處存在明顯的角點(diǎn)遺漏現(xiàn)象,如圖(b)所示。SIFT找到了109個(gè)角點(diǎn),偽角點(diǎn)較多,如圖(c)所示。SURF找到100個(gè)角點(diǎn),也純?cè)趥谓屈c(diǎn)。
由兩組對(duì)比實(shí)驗(yàn)可看出,本文算法檢測(cè)提取的角點(diǎn)無(wú)論在數(shù)量上,還是在定位上都優(yōu)于其他三種角點(diǎn)檢測(cè)算法。
傳統(tǒng)的基于邊緣的角點(diǎn)檢測(cè)器主要依賴于圖像邊緣的幾何信息提取角點(diǎn),而基于灰度變化的角點(diǎn)檢測(cè)器主要依賴于圖像的灰度變化。本文算法將兩者結(jié)合,提出角區(qū)域內(nèi)部的角點(diǎn),融合了邊緣信息與角內(nèi)側(cè)區(qū)域信息,使得角點(diǎn)提取與描述更加準(zhǔn)確。從仿真實(shí)驗(yàn)結(jié)果可以看到,本文提出的角點(diǎn)檢測(cè)算法能夠較好地檢測(cè)到真實(shí)角點(diǎn),避免對(duì)角點(diǎn)的漏檢與誤檢,提高了角點(diǎn)檢測(cè)器的檢測(cè)性能。
對(duì)本文后續(xù)研究的討論:①矢量點(diǎn)提取基于邊緣像素,對(duì)于復(fù)雜或大尺度的圖像所提取的矢量點(diǎn)過(guò)多,矢量點(diǎn)聚類屬于層次聚類范疇,消耗時(shí)間過(guò)多,在實(shí)時(shí)性上不足,今后工作將對(duì)算法進(jìn)行優(yōu)化。②角點(diǎn)位于角區(qū)域內(nèi)部屏蔽了背景信息,可抵抗背景干擾,對(duì)圖像匹配由著重要的作用。未來(lái)的工作也將嘗試把本文算法應(yīng)用于圖像匹配方面。