張 震, 張照崎, 朱留存, 苗志濱, 王驥月, 李修明, 趙成龍, 張坤倫
(1. 北部灣大學(xué) 先端科學(xué)技術(shù)研究院, 廣西 欽州 535001; 2. 大連理工大學(xué)-立命館大學(xué)國(guó)際信息與軟件學(xué)院, 遼寧 大連116085;3. 廣西機(jī)械工業(yè)研究院有限責(zé)任公司, 廣西 南寧 530007)
圖像局部特征點(diǎn)在不同觀察場(chǎng)景下不變地反映圖像信息, 廣泛應(yīng)用于目標(biāo)定位[1-2]、 圖像配準(zhǔn)與圖像拼接[3-5]、 目標(biāo)識(shí)別[6]和SLAM(simultaneous localization and mapping)[7-8]等領(lǐng)域, 已成為計(jì)算機(jī)視覺(jué)領(lǐng)域的研究熱點(diǎn). 這類方法首先對(duì)圖像中顯著特征進(jìn)行提取, 然后利用提取特征的描述子完成兩張圖像間特征的匹配, 再通過(guò)特征匹配關(guān)系建立圖像間的幾何變換模型[8-9], 特征點(diǎn)檢測(cè)算法大多數(shù)基于灰度的一階或二階導(dǎo)數(shù)尋找極值點(diǎn). Harris等[10]提出了經(jīng)典的Harris特征點(diǎn)檢測(cè)算法, 對(duì)圖像旋轉(zhuǎn)、 光線變化、 噪聲和視點(diǎn)變換不敏感; Rosten[11]提出了FAST特征點(diǎn)檢測(cè)算法, FAST算法速度較快, 但易受噪聲影響. 上述特征點(diǎn)檢測(cè)算法都基于單一尺度, 之后研究者們提出了能適應(yīng)多尺度變化的特征檢測(cè)算法, 如SIFT算法[12]和SURF算法[13], SURF是SIFT的改進(jìn)算法. 這類算法需要用Laplace算子或高斯差分算子構(gòu)建尺度空間, 增加了計(jì)算復(fù)雜度和匹配識(shí)別的難度, 實(shí)時(shí)性較差. 文獻(xiàn)[10-11]僅關(guān)注于特征點(diǎn)檢測(cè), 并未給出描述子定義算法和匹配算法. SIFT算法[12]在特征點(diǎn)周?chē)?6×16的鄰域, 再將鄰域化為4×4個(gè)小區(qū)域, 每個(gè)小區(qū)域統(tǒng)計(jì)8個(gè)方向梯度, 得到128維的向量作為描述子. SURF算法[13]在特征點(diǎn)周?chē)∫粋€(gè)具有方向的正方形鄰域, 再劃分為16個(gè)子區(qū)域, 每個(gè)子區(qū)域統(tǒng)計(jì)4個(gè)Haar小波特征, 得到64維的向量作為描述子. 上述描述子信息豐富, 但運(yùn)算代價(jià)較高, 占用內(nèi)存大. Calonder等[14]提出的BRIEF描述子, 極大節(jié)省了內(nèi)存空間; Rublee等[15]對(duì)BRIEF描述子進(jìn)行改進(jìn)提出了ORB算法, 根據(jù)角度參數(shù)提取BRIEF描述子, 使其具有旋轉(zhuǎn)不變性. 近幾年, 相繼提出了一些改進(jìn)融合算法[16-23], 如文獻(xiàn)[16]實(shí)現(xiàn)了Harris算法與Hist算法的融合; 文獻(xiàn)[20]和文獻(xiàn)[22]分別對(duì)SURF和SIFT算法做了改進(jìn), 均取得了較好的實(shí)驗(yàn)效果.
本文應(yīng)用背景源于機(jī)器人視覺(jué)伺服抓取, 對(duì)定位精度和實(shí)時(shí)性要求較高. 經(jīng)典的SIFT和SURF算法雖適應(yīng)范圍廣、 魯棒性好, 但實(shí)時(shí)性較差; ORB算法運(yùn)行速度快, 但定位精度較低. 因此本文首先選擇Harris算法[10]提取特征點(diǎn); 然后采用胡矩確定特征方向, 根據(jù)特征方向獲取標(biāo)準(zhǔn)化局部圖像, 提取標(biāo)準(zhǔn)化局部圖像的LBP特征[24]作為特征描述子; 在特征匹配階段, 通過(guò)計(jì)算兩張圖像中各特征點(diǎn)描述子間的漢明距離實(shí)現(xiàn)特征匹配; 最后根據(jù)匹配結(jié)果, 定位目標(biāo)在場(chǎng)景圖像中的位置, 算法流程如圖1所示.
圖1 算法流程
Harris算法[10]思想: 先以待檢測(cè)點(diǎn)為中心加窗, 獲取窗內(nèi)像素強(qiáng)度; 然后移動(dòng)窗口, 重新獲取窗內(nèi)像素強(qiáng)度, 計(jì)算窗口移動(dòng)前后強(qiáng)度差. 若沿任意方向移動(dòng)窗口, 強(qiáng)度差值均很大, 則認(rèn)為待檢測(cè)點(diǎn)為特征點(diǎn).
根據(jù)上述思想可定義計(jì)算公式為
(1)
其中W(x,y)為高斯窗口,u,v為以待檢測(cè)點(diǎn)為中心的偏移量. 由Taylor公式,
可近似為
(2)
則有
(3)
R=detM-k(trM)2.
(4)
根據(jù)經(jīng)驗(yàn)k=0.04~0.06, 特征檢測(cè)結(jié)果如圖2所示. 其中: (A)為原始圖像; (B)為原始圖像檢出的特征點(diǎn); (C),(D)分別為(A)旋轉(zhuǎn)10°,-10°后檢出的特征點(diǎn). 實(shí)驗(yàn)中, 將最大特征響應(yīng)強(qiáng)度的0.1倍作為閾值. 由圖2可見(jiàn), Harris特征點(diǎn)具有旋轉(zhuǎn)不變性.
圖2 Harris特征點(diǎn)檢測(cè)結(jié)果
以特征點(diǎn)為中心截取局部圖像, 計(jì)算局部圖像的質(zhì)心, 規(guī)定中心到質(zhì)心的向量為特征點(diǎn)方向θ. 將局部圖像旋轉(zhuǎn)-θ, 得到標(biāo)準(zhǔn)化局部圖像. 提取標(biāo)準(zhǔn)化局部圖像的局部二值模式(LBP)特征作為特征描述子, 特征描述子生成過(guò)程如圖3所示, 步驟如下.
圖3 特征描述子生成過(guò)程
1) 以特征點(diǎn)為中心截取局部圖像, 本文取21×21窗口, 截取局部圖像放大分別如圖3(B),(C),(D)上方左側(cè)小圖所示.
2) 計(jì)算局部圖像的質(zhì)心(Cx,Cy):
為保持旋轉(zhuǎn)不變性, 按圓形鄰域取樣, 計(jì)算公式定義為
(5)
其中wx和wy為灰度圖像橫縱坐標(biāo),vx和vy為特征點(diǎn)橫縱坐標(biāo),rwindow為取樣窗口半徑, 圖3(A)淺灰色圓形區(qū)域?yàn)榘词?5)設(shè)計(jì)的取樣窗口, 窗口大小為21×21, 取到圓形鄰域內(nèi)349個(gè)點(diǎn), 取樣窗口大小可根據(jù)實(shí)際需要做調(diào)整.
3) 確定特征點(diǎn)方向θ:
各特征點(diǎn)方向如圖3(B),(C),(D)中白線所示.
4) 將局部圖像旋轉(zhuǎn)-θ, 截取圓形鄰域內(nèi)的15×15子圖像作為標(biāo)準(zhǔn)化局部圖像. 15×15采樣窗口如圖3(A)中深灰色區(qū)域所示, 步驟1)中截取的21×21局部圖像, 通過(guò)旋轉(zhuǎn)-θ, 截取得到15×15標(biāo)準(zhǔn)化局部圖像分別如圖3(B),(C),(D)上方中間小圖所示.
5) 提取標(biāo)準(zhǔn)化局部圖像LBP特征作為特征描述子.
傳統(tǒng)LBP在一個(gè)3×3的圖像塊中對(duì)區(qū)域進(jìn)行描述, 將中心像素的灰度作為閾值, 與其8個(gè)鄰域像素的灰度值對(duì)比并二值化, 小于該閾值置1, 否則置0, 然后與加權(quán)矩陣對(duì)應(yīng)的值相乘, 得到8位二進(jìn)制串作為L(zhǎng)BP特征, 原理如圖4所示[24], 該描述子具有速度快、 不受光照變化影響的優(yōu)點(diǎn).
圖4 傳統(tǒng)LBP原理
實(shí)驗(yàn)表明, 直接采用傳統(tǒng)LBP提取的特征描述在特征匹配過(guò)程中算法性能較差, 這是因?yàn)樘崛〉奶卣鼽c(diǎn)位置難免有誤差, 且特征點(diǎn)坐標(biāo)位置是浮點(diǎn)型, 在取整過(guò)程中也存在誤差, 這種誤差的累計(jì)對(duì)特征匹配影響較大. 因此, 本文對(duì)傳統(tǒng)LBP算法進(jìn)行改進(jìn), 方法如圖3(A)中深灰色區(qū)域粗實(shí)線所示, 將15×15標(biāo)準(zhǔn)化局部圖像分成5×5個(gè)子塊, 將每個(gè)子塊(3×3個(gè)像素)作為一個(gè)整體, 然后進(jìn)行LBP特征提取, 該步驟采用積分圖像法提高速度. 針對(duì)5×5個(gè)子塊, 可提取到3×3個(gè)LBP特征作為特征點(diǎn)的描述子, 如圖3(B),(C),(D)上方矩陣所示. 改進(jìn)后的LBP算法可削弱特征點(diǎn)定位誤差的影響, 使匹配過(guò)程中算法的穩(wěn)定性得到改善.
特征匹配的依據(jù)是特征點(diǎn)描述子間的相似度, 本文采用漢明距離作為度量標(biāo)準(zhǔn), 即待匹配兩個(gè)描述子間9個(gè)二進(jìn)制串中不相同位的個(gè)數(shù).
特征匹配步驟如下:
1) 選擇標(biāo)準(zhǔn)圖像中的任意描述子G[m];
2) 在場(chǎng)景圖描述子中尋找G′[n], 使得d(G[m],G′[n])最小;
3) 若d(G[m],G′[n])<τ, 則認(rèn)為標(biāo)準(zhǔn)圖像特征點(diǎn)m與場(chǎng)景圖像特征點(diǎn)n匹配(τ為閾值).
特征匹配結(jié)果如圖5所示, 每條連線對(duì)應(yīng)的兩點(diǎn)為匹配的特征點(diǎn).
目標(biāo)定位過(guò)程如下:
1) 尋找兩組匹配特征點(diǎn)間的變換關(guān)系, 即估計(jì)歸一化單應(yīng)性矩陣:
(6)
2) 根據(jù)標(biāo)準(zhǔn)圖像4個(gè)頂點(diǎn)坐標(biāo), 利用式(6)計(jì)算對(duì)應(yīng)場(chǎng)景圖像4個(gè)頂點(diǎn)的坐標(biāo), 從而定位目標(biāo). 目標(biāo)定位結(jié)果如圖5所示, 紅色框定位了標(biāo)準(zhǔn)圖像在場(chǎng)景圖像中位置, 利用式(6)可計(jì)算標(biāo)準(zhǔn)圖像每個(gè)像素點(diǎn)在目標(biāo)圖像中的位置.
圖5 旋轉(zhuǎn)10°(A)和-10°(B)特征匹配及目標(biāo)定位結(jié)果
圖6~圖9分別為本文算法與SIFT[12],SURF[13],ORB[15]算法的匹配及定位效果對(duì)比. 圖6~圖9分別采用Lena圖像、 Barche圖像、 Goldhill圖像和Barbara圖像作為標(biāo)準(zhǔn)圖像, 各自旋轉(zhuǎn)10°后作為場(chǎng)景圖像. 通過(guò)調(diào)整算法參數(shù), 4種算法特征匹配數(shù)量基本相同. 觀察發(fā)現(xiàn), SIFT及本文算法定位精度差異較小, 但均好于SURF和ORB算法. 下面以圖7中Barche圖像為例進(jìn)行實(shí)驗(yàn)數(shù)據(jù)對(duì)比, 衡量4種算法的運(yùn)行速度和定位精度. 定位精度實(shí)驗(yàn)中, 考慮到機(jī)器人視覺(jué)伺服抓取過(guò)程, 相機(jī)位置固定, 工件圖像只發(fā)生位置偏移和旋轉(zhuǎn)變化, 不存在尺度變化和仿射變換, 因此主要對(duì)平移和旋轉(zhuǎn)誤差進(jìn)行對(duì)比.
圖6 不同算法的Lena圖像匹配及定位效果對(duì)比
圖7 不同算法的Barche圖像匹配及定位效果對(duì)比
實(shí)驗(yàn)環(huán)境: 電腦主頻3.6 GHz, 內(nèi)存16 GB, 操作系統(tǒng)Win10 64位, 開(kāi)發(fā)平臺(tái)VSC++. 其中, SIFT,SURF,ORB算法實(shí)現(xiàn)調(diào)用了OPENCV庫(kù)函數(shù). 由于SIFT,SURF算法已申請(qǐng)專利, 不能在RELEASE模式下運(yùn)行, 為具可比性, 4種算法均在DEBUG模式運(yùn)行. 表1為Barche圖像各角度下不同算法定位過(guò)程運(yùn)行時(shí)間的對(duì)比.
表1 不同算法運(yùn)行時(shí)間(ms)對(duì)比
由表1可見(jiàn): ORB算法耗時(shí)最少; 本文算法次之, 約為ORB算法的3倍; SURF和SIFT算法實(shí)時(shí)性較差, 耗時(shí)約為ORB算法的9倍和15倍.
平移誤差定義為: 定位中估計(jì)的4個(gè)邊界頂點(diǎn)坐標(biāo)與場(chǎng)景中對(duì)應(yīng)4個(gè)實(shí)際邊界頂點(diǎn)坐標(biāo)之間距離的最大值. 表2為各角度下不同算法定位過(guò)程平移誤差的對(duì)比. 由表2可見(jiàn): SIFT算法精度最高, 誤差均值為0.52, 誤差最大值為0.77; 本文算法略差于SIFT算法, 誤差均值為0.63, 誤差最大值為1.15; SURF算法誤差均值為1.18, 誤差最大值為5.60; ORB算法精度最差, 誤差均值為3.31, 誤差最大值為7.22.
圖8 不同算法的Goldhill圖像匹配及定位效果對(duì)比
圖9 不同算法的Barbara圖像匹配及定位效果對(duì)比
旋轉(zhuǎn)誤差定義為: 定位中估計(jì)的4條邊界線與場(chǎng)景對(duì)應(yīng)4條實(shí)際邊界線角度偏差絕對(duì)值的最大值. 表3為各角度下不同算法定位過(guò)程旋轉(zhuǎn)誤差的對(duì)比. 由表3可見(jiàn): SIFT算法精度最高, 誤差均值為0.02, 誤差最大值為0.04; 本文算法精度次之, 誤差均值為0.15, 誤差最大值為0.25; SURF算法誤差均值為0.44, 誤差最大值為1.05; ORB算法精度最差, 誤差均值為0.50, 誤差最大值為1.84.
實(shí)驗(yàn)結(jié)果表明: 本文算法定位精度略差于SIFT算法, 明顯優(yōu)于SURF和ORB算法; 定位速度慢于ORB算法, 遠(yuǎn)好于SIFT和SURF算法, 能滿足實(shí)時(shí)性要求. 基于本文應(yīng)用背景, 本文算法綜合表現(xiàn)最好, 已應(yīng)用于5軸機(jī)器人伺服定位抓取系統(tǒng), 經(jīng)過(guò)近30 d實(shí)際驗(yàn)證表現(xiàn)出良好的穩(wěn)定性.
表2 不同算法平移誤差(像素)對(duì)比
表3 不同算法旋轉(zhuǎn)誤差(°)對(duì)比
綜上所述, 本文算法通過(guò)改進(jìn)傳統(tǒng)LBP定義的特征描述子, 具有定位精度高、 運(yùn)行速度快、 魯棒性好、 不受光照變化影響的優(yōu)點(diǎn). 但在特征提取過(guò)程中保留了Harris算法對(duì)尺度變化敏感的不足, 在描述子生成過(guò)程中旋轉(zhuǎn)子圖像步驟耗時(shí)較多.