,,,
(海軍工程大學(xué) 電氣與信息工程學(xué)院,武漢 430033)
圖像特征信息在圖像處理中具有重要的地位,所提取的圖像特征的優(yōu)劣將直接影響圖像配準(zhǔn)的準(zhǔn)確性,因此需要在圖像中提取出穩(wěn)定的特征信息用于進(jìn)一步處理。尺度不變特征變換(scale invariant feature transform,SIFT)[1-2]非常適合用于圖像配準(zhǔn)、拼接、目標(biāo)提取等做高精度的特征提取。
Matlab推出的Combuilder把用Matlab編寫的程序做成COM(Component Object Model組件對(duì)象模型)組件,供其他語言調(diào)用。Matlab Builder for .Net 2能夠?qū)atlab所實(shí)現(xiàn)算法方便的轉(zhuǎn)換為獨(dú)立的.Net程序集或者COM組件[3]。C#可較好地支持.Net框架,可以方便地調(diào)用COM組件[4],具有相當(dāng)廣泛的應(yīng)用。因此考慮將算法編譯為COM組件,并使用C#進(jìn)行調(diào)用。
SIFT 算法實(shí)現(xiàn)主要包含4個(gè)步驟[5]:①建立尺度空間,檢測(cè)尺度空間極值;②去除不穩(wěn)定的特征點(diǎn);③計(jì)算特征點(diǎn)的描述信息,確定特征點(diǎn)的方向;④生成本地特征描述符,組合建立特征向量。
對(duì)于輸入圖像, 尺度空間由高斯核與輸入圖像的卷積得到:
L(x,y,σ)=G(x,y,σ)*I(x,y)
(1)
其中的二維高斯核為
(2)
式中:σ——高斯正態(tài)分布的方差。
進(jìn)一步使用高斯差分函數(shù)DoG對(duì)圖像進(jìn)行處理:
D(x,y,σ)=(G(x,y,kσ)-G(x,y,σ))*
I(x,y)=L(x,y,kσ)-L(x,y,σ)
(3)
式中:k——常系數(shù),用來區(qū)分相鄰的尺度。
對(duì)圖像多次使用DoG算子,取這些高斯差分圖像中的局部極值,得到尺度空間域上的圖像特征點(diǎn)。特征點(diǎn)方向Q(x,y)及模值m(x,y)使用鄰域像素差分運(yùn)算確定:
θ(x,y)=arctan((L(x,y+1)-
L(x,y-1))/L((x+1,y)-L(x-1,y))
(4)
然后通過計(jì)算鄰域梯度直方圖進(jìn)一步確定各特征點(diǎn)的梯度方向的累加值來提高抗噪能力及對(duì)圖像仿射變換、視點(diǎn)變換和非剛性變形的魯棒性。最后形成包括位置、尺度、方向等信息的128維特征向量。再根據(jù)不同的需要采用相應(yīng)的算法對(duì)特征向量進(jìn)行匹配。
首先編寫、調(diào)試Matlab代碼以便作為制作COM組件的基礎(chǔ)。
在安裝了Matlab Builder之后,要先設(shè)置Matlab Builder所使用的外部編譯器??梢酝ㄟ^在Matlab的Command Window輸入命令mbuild-setup實(shí)現(xiàn)。并根據(jù)提示選擇合適的編譯器。文中使用的是Microsoft Visual C/C++ version 8.0,在Matlab的Command Window中輸入命令dotnettool,啟動(dòng)Matlab Builder的圖形用戶界面,見圖1。
在其中建立新的工程,加入已經(jīng)調(diào)試好的M文件,再點(diǎn)擊Build->COM Object…,就會(huì)生成相應(yīng)的dll文件,即是做好的COM組件,Build時(shí)Matlab已經(jīng)自動(dòng)將此dll在注冊(cè)表中注冊(cè)。如果mwcomutil.dll還沒有注冊(cè),則應(yīng)在dos命令窗下運(yùn)行regsvr32
點(diǎn)擊component-package就實(shí)現(xiàn)了組件的打包??梢赃x擇加入Matlab組件運(yùn)行時(shí)MCR(Matlab Component Runtime), 他是用于執(zhí)行M文件的獨(dú)立的共享函數(shù)庫,系統(tǒng)裝入MCR后可以不需裝Matlab即可運(yùn)行組件。
C#使用COM組件比較容易。首先引用COM組件,選擇已經(jīng)注冊(cè)的ComProg,然后在cs文件前端加入using ComProg;再在調(diào)用函數(shù)中加入如下代碼即可,
try
{
ComProg.comsiftClass te = new ComProg.comsiftClass ();
object filename1 = "c: est1.jpg";
object filename2 = "c: est2.jpg";
te.sifttest (filename1,filename2);
}
catch (Exception fe)
{
MessageBox.Show(fe.ToString());
}
圖2是對(duì)一幅圖像做SIFT計(jì)算時(shí)的效果,可以看出SIFT算法的關(guān)鍵是提取出穩(wěn)定的特征點(diǎn),以使得圖像在經(jīng)過仿射變換、視點(diǎn)變換和非剛性變形后仍然可以獲得相應(yīng)特征點(diǎn)。
下面的實(shí)驗(yàn)研究對(duì)于多幅變形圖像間的SIFT特征點(diǎn)匹配。
圖3為實(shí)驗(yàn)1,在sift閾值為0.7時(shí)的12對(duì)匹配點(diǎn)對(duì)見表1,圖3左側(cè)圖片為A圖,右側(cè)圖片為B圖。
圖3 兩幅圖像的匹配實(shí)驗(yàn)1
匹配點(diǎn)A圖(766×948)B圖(453×474)1(158,448)(386,178)2(423,83)(308,100)3(277,125)(240,96)4(342,364)(185,277)5(144,508)(87,242)6(300,223)(202,126)7(107,476)(71,224)8(478,231)(311,172)9(569,390)(321,253)10(619,144)(372,154)11(556,301)(327,211)12(609,230)(355,189)
實(shí)驗(yàn)1所使用的待匹配的圖像具有一定的旋轉(zhuǎn)、平移和尺度變換。從結(jié)果可以看出,這些影響對(duì)sift算法具有非常小的影響,在算法參數(shù)選擇較好的情況下甚至完全不受影響。由實(shí)驗(yàn)結(jié)果圖像可以計(jì)算出,特征點(diǎn)匹配的準(zhǔn)確率在sift閾值為0.7時(shí)能夠達(dá)到100%,見表2。
表2 sift算法匹配實(shí)驗(yàn)一匹配率統(tǒng)計(jì)
圖4 實(shí)驗(yàn)2兩幅原始圖像
圖4為實(shí)驗(yàn)2原始圖A、B圖,仍然使用具有一定的旋轉(zhuǎn)、平移和尺度變換的兩幅圖像,同時(shí)實(shí)驗(yàn)圖像為有霧的海域。在這樣的圖像質(zhì)量較差的情況下,使用sift算法進(jìn)行匹配仍然能夠取得滿意的效果,匹配結(jié)果見圖5,實(shí)驗(yàn)數(shù)據(jù)見表3。
圖5 實(shí)驗(yàn)2匹配結(jié)果
匹配點(diǎn)A圖(386×225)B圖(386×225)1(280,128)(32,138)2(358,124)(115,149)3(309,139)(61,156)
SIFT特征匹配方法具有很好的穩(wěn)定性,從實(shí)驗(yàn)結(jié)果中可以看出通過使用局部特征進(jìn)行匹配,使得方法在不同圖像間含有旋轉(zhuǎn)、尺度縮放、亮度及視角的變化的情況下都有很好的匹配效果。但SIFT變換及匹配在算法實(shí)現(xiàn)上有一定的復(fù)雜性,而文中給出的基于COM的C#與Matlab混合實(shí)現(xiàn)使得Matlab開發(fā)出的算法不必再去轉(zhuǎn)換即可以以組件的形式迅速集成到其他圖像處理系統(tǒng)中,提高了研發(fā)速度,使研究人員更集中精力于算法本身而非煩雜的代碼實(shí)現(xiàn)上。
文中將代碼實(shí)現(xiàn)為COM組件,實(shí)際上如果將Matlab所實(shí)現(xiàn)算法轉(zhuǎn)換為.Net程序集則使用起來也相當(dāng)方便。
[1] LOWE D G. Object Recognition from local scale-invariant features [C]//The International Conference on Computer Vision,1999:1150-1157.
[2] BROWN M,LOWE D G. Invariant features from interest point groups [C]//The 13th British Machine Vision Conference,2002:91-110.
[3] DALE R. Inside COM [M].Microsoft Press,1997:1-20.
[4] JEFFREY R. Applied Microsoft .Net Framework Programming[M].Microsoft Press,2006:1-34.
[5] LOWE D G. Distinctive image features from scale-invariant key points [J].International Journal of Computer Vision,2004, 60(2): 91-110.