林少鑫,方千山
(華僑大學(xué) 機(jī)電及自動(dòng)化學(xué)院,福建 廈門 361021)
圖像配準(zhǔn)是指將不同時(shí)間、不同傳感器或不同條件下獲取的兩幅或多幅圖像進(jìn)行匹配、疊加的過程[1]。對(duì)工件輪廓圖像進(jìn)行配準(zhǔn)是指對(duì)于同一類工件在不同拍攝條件下進(jìn)行輪廓匹配的過程,通過工件輪廓圖像配準(zhǔn)可以獲取工件二維位姿信息,是機(jī)器人視覺引導(dǎo)系統(tǒng)中對(duì)工件位姿感知的重要組成部分。在輪廓配準(zhǔn)中,對(duì)于特征點(diǎn)的提取算法一直是國(guó)內(nèi)外的研究熱點(diǎn),2004年Low[2]在國(guó)際計(jì)算機(jī)視覺雜志發(fā)表了提取圖像特征的尺度不變關(guān)鍵點(diǎn)的論文,該算法能夠有效提取圖像中最具有代表性的特征點(diǎn),并且具有尺度不變性和旋轉(zhuǎn)不變性,但是,該算法計(jì)算復(fù)雜,特征提取耗時(shí)長(zhǎng),很難實(shí)現(xiàn)實(shí)時(shí)性。FAST算法是2006年被提出的快速特征提取算法[3],該算法通過畫圓法,設(shè)置一個(gè)閾值t,如果圓中像素點(diǎn)存在n個(gè)連續(xù)像素點(diǎn)的灰度值都高于Ip+t,或者低于Ip-t,那么像素點(diǎn)p就被認(rèn)為是一個(gè)角點(diǎn),該算法計(jì)算簡(jiǎn)單,但是特征提取不穩(wěn)定,尤其是在視覺引導(dǎo)系統(tǒng)中很難準(zhǔn)確獲取工件位姿。2011年ORB算法被提出[4],該算法結(jié)合了FAST和BRIEF算法,具有尺度不變性和旋轉(zhuǎn)不變性,可以實(shí)現(xiàn)實(shí)時(shí)檢測(cè),但是,和FAST算法一樣存在特征提取不穩(wěn)定的缺點(diǎn)。
綜合了上述算法的優(yōu)缺點(diǎn),在視覺引導(dǎo)系統(tǒng)中,本文擬采用工件輪廓與模板輪廓進(jìn)行配準(zhǔn)的方法來獲取工件的位姿信息,本文采用了改進(jìn)的SIFT算法對(duì)工件輪廓進(jìn)行特征點(diǎn)提取,直接在原圖上計(jì)算高斯尺度空間,不構(gòu)建圖像金字塔,計(jì)算出高斯差分圖像,然后在高斯差分圖像上求解極值點(diǎn)作為圖像的特征點(diǎn),對(duì)于提取的特征點(diǎn)不會(huì)再使用SIFT算法的特征描述算子,而是采用直接與模板圖像中特征點(diǎn)進(jìn)行嘗試匹配,計(jì)算圖像重合度的方法來選出最匹配點(diǎn)。最后通過實(shí)驗(yàn)仿真證明,該算法能夠在保證較高實(shí)時(shí)性的同時(shí)準(zhǔn)確完成了工件輪廓與模板輪廓的配準(zhǔn)。
為了實(shí)現(xiàn)在不同的尺度空間使用不同尺度的窗口,對(duì)于小的特征點(diǎn)使用小的窗口,對(duì)于大的特征點(diǎn)使用大的窗口,SIFT算法使用了尺度空間濾波器。定義圖像的尺度空間為原始圖像與一個(gè)可變尺度的二維高斯函數(shù)G(x,y,σ)卷積運(yùn)算:
σ是尺度空間因子,它決定了圖像的模糊程度。
將原圖像的長(zhǎng)寬放大為原理的兩倍,然后在放大的圖像上對(duì)該尺寸下圖像采用不同尺度空間因子的高斯核進(jìn)行卷積得到金字塔一層的一個(gè)小組Octave[5],然后選擇該Octave中的一幅圖像進(jìn)行下采樣作為金字塔下一層的初始圖像,以此類推完成整個(gè)圖像金字塔的構(gòu)建,得到如圖1所示模型。
圖1 高斯差分金字塔模型
利用高斯拉普拉斯算法(LoG)可以在不同的尺度下檢測(cè)圖像的關(guān)鍵點(diǎn)信息,從而確定圖像的特征點(diǎn),然而LoG計(jì)算復(fù)雜,關(guān)鍵點(diǎn)提取效率低,為了簡(jiǎn)化計(jì)算,David G.Low采用了DoG(高斯差分)來近似LoG,這里對(duì)金字塔的每個(gè)Octave中相鄰的兩層相減構(gòu)成了高斯差分金字塔[6],如圖2所示。
圖2 高斯差分金字塔模型
在構(gòu)建完高斯差分金字塔后,就可以在不同的尺度空間中搜索局部最大值。在圖像中的一個(gè)像素點(diǎn),在本圖像中需要是8領(lǐng)域內(nèi)的局部最大值,也要與尺度空間中上下兩層中的相鄰18個(gè)點(diǎn)作比較,如果都是局部最大值,那么它就可能是一個(gè)關(guān)鍵點(diǎn)[7],如圖3所示。
圖3 極值點(diǎn)提取立方體
極值點(diǎn)搜索過程中,從每組的第二層開始,以第二層為當(dāng)前層,對(duì)第二層的DoG圖像中的每個(gè)點(diǎn)取一個(gè)3×3的立方體,立方體上下層為第一層與第三層[8],如果該點(diǎn)是該立方體中的最大值,就是可能的極值點(diǎn)。
采用高斯差分金字塔進(jìn)行的極值點(diǎn)檢測(cè)對(duì)噪聲和邊緣比較敏感,因此SIFT算法在尺度空間的泰勒級(jí)數(shù)展開獲得極值的準(zhǔn)確位置,如果極值點(diǎn)的灰度值小于閾值就會(huì)被忽略掉。同時(shí),DoG算法對(duì)邊緣非常敏感,所以必須要把邊界去掉。SIFT算法中是采用了Harris角點(diǎn)檢測(cè)算法,當(dāng)一個(gè)特征值遠(yuǎn)遠(yuǎn)大于另外一個(gè)特征值時(shí),檢測(cè)到的是邊界,因此可以用該算法排查邊界點(diǎn)。
通過對(duì)SIFT算法原理的分析,可以發(fā)現(xiàn)SIFT算法計(jì)算步驟多,這是導(dǎo)致該算法在進(jìn)行特征提取時(shí)耗時(shí)長(zhǎng)的主要原因。SIFT算法提取了不同尺度下所有的特征點(diǎn),但是,在機(jī)器人視覺引導(dǎo)系統(tǒng)中,為了獲取工件的位姿信息,本文采用了工件輪廓與模板輪廓配準(zhǔn)的方法,由于選取的模板與工件只考慮選擇和平移兩種仿射變換,因此為了求解工件的位姿信息,只需準(zhǔn)確找到工件的兩個(gè)特征點(diǎn)并與模板圖像進(jìn)行準(zhǔn)確匹配即可計(jì)算出工件的二維位姿信息。本文以機(jī)器人視覺引導(dǎo)系統(tǒng)拍攝的一種不規(guī)則工件圖像輪廓為例,如圖4所示,圖4(a)是選取工件模板原圖,使用大津二值化(OTSU)算法對(duì)工件進(jìn)行二值化操作,得到圖4(b),最后提取圖像的輪廓圖像,得到圖4(c),最后通過改進(jìn)SIFT算法對(duì)模板輪廓進(jìn)行特征點(diǎn)提取,并繪制了特征點(diǎn)圖,如圖4(d)所示。
圖4 工件模板圖像
本文針對(duì)視覺引導(dǎo)系統(tǒng)算法的設(shè)計(jì)方案,對(duì)SIFT進(jìn)行了改進(jìn),為了提高算法的運(yùn)行效率,算法的流程如下:
1)計(jì)算高斯尺度空間。
由于模板輪廓圖像與工件輪廓圖像大小一致,只是對(duì)圖像進(jìn)行平移和旋轉(zhuǎn),因此本文使用SIFT中特征提取算法,只需要提取圖像輪廓的兩個(gè)特征點(diǎn)即可,并不需要提取工件輪廓在各個(gè)尺度下的所有特征點(diǎn)。因此,本文直接在原圖像上計(jì)算尺度空間,并不進(jìn)行上下采樣。因?yàn)樽詈笾恍枰梢粡埜咚共罘謭D像,因此需要設(shè)置4個(gè)尺度空間因子,選取第一層次的模糊系數(shù)σ0=1.6,模糊系數(shù)的計(jì)算公式為
其中,r為圖像的索引號(hào)。最后使用不同尺度空間因子的高斯核直接在原圖上進(jìn)行卷積,得到4幅尺度空間圖像,如圖5所示。
圖5 高斯尺度空間圖像
2)計(jì)算高斯差分圖像。
為了能夠達(dá)到與SIFT算法接近的特征提取效果,本文保留了SIFT算法中使用高斯差分圖像求極值點(diǎn)的方法,通過上一步驟計(jì)算尺度空間,相鄰兩個(gè)尺度空間圖像之間作差獲得高斯差分圖像,通過第二幅尺度空間圖像與第一幅尺度空間圖像作差得到高斯差分圖像,第三幅尺度空間圖像與第二幅尺度空間圖像作差得到第二幅高斯差分圖像,依此類推獲得了3幅高斯差分圖像(如圖6),后續(xù)的特征點(diǎn)提取就是在高斯差分圖像上進(jìn)行的。
圖6 高斯差分圖像
3)極值點(diǎn)檢測(cè)與圖像特征點(diǎn)提取。
從第二個(gè)高斯差分圖像開始,對(duì)每個(gè)像素取一個(gè)3×3的立方體,如果該像素點(diǎn)是該立方體的最大值,那么該點(diǎn)就作為圖像的候選特征點(diǎn),由于本文只提取了圖像的部分特征點(diǎn),對(duì)于輪廓圖像提取的特征點(diǎn)比較少,因此本文對(duì)候選點(diǎn)只需排除低對(duì)比度的點(diǎn),設(shè)置灰度閾值為0.04,如果高斯差分圖像提取的極值點(diǎn)在差分圖像上的灰度值小于該閾值,那么就忽略該極值點(diǎn)。
4)計(jì)算最佳匹配特征點(diǎn)。
由于工件輪廓圖像與模板圖像的只存在平移和旋轉(zhuǎn)的仿射變換,因此本文通過計(jì)算圖像輪廓重心作為輪廓的旋轉(zhuǎn)中心,重心計(jì)算公式如下:
式中:wi為像素點(diǎn)的灰度值;W為所有像素的灰度值總和。
本文擬通過工件提取的特征點(diǎn)逐個(gè)與模板中的特征點(diǎn)進(jìn)行匹配計(jì)算仿射變換參數(shù),通過兩個(gè)輪廓的重合度來衡量匹配結(jié)果,按照重合度排序,選擇重合度最高的點(diǎn)完成圖像配準(zhǔn)。因此,定義兩個(gè)圖像的配準(zhǔn)重合度為
式中:Scoi為工件輪廓包圍區(qū)域與模板輪廓包圍區(qū)域重疊的面積;Stmp為模板輪廓包圍的面積;S為工件輪廓包圍的面積。
為了驗(yàn)證算法在實(shí)際應(yīng)用場(chǎng)景中的正確性,本文通過機(jī)器人視覺引導(dǎo)系統(tǒng)采集了實(shí)際場(chǎng)景的總圖像,通過圖像分割獲得了33張工件的圖像。本實(shí)驗(yàn)特征點(diǎn)提取時(shí)間t,和配準(zhǔn)重合度兩個(gè)重要參數(shù),特征點(diǎn)提取時(shí)間是為了驗(yàn)證改進(jìn)的SIFT算法與原來的SIFT算法的特征提取效率,配準(zhǔn)重合度是為了驗(yàn)證該算法完成工件配準(zhǔn)的可行性。最后通過獲取到匹配的特征點(diǎn),對(duì)工件圖像進(jìn)行仿射變換,并與模板圖像比較,驗(yàn)證本文算法在視覺引導(dǎo)中的可行性。
實(shí)驗(yàn)環(huán)境為Windows10環(huán)境下,采用Intel corei7-10510U CPU和8G內(nèi)存,算法采用Python語言實(shí)現(xiàn),結(jié)合OpenCV圖像處理庫(kù)搭建了SIFT算法和改進(jìn)SIFT算法,分別對(duì)工件使用這兩種算法進(jìn)行特征提取,并計(jì)算時(shí)間。使用改進(jìn)的SIFT進(jìn)行特征提取結(jié)果,計(jì)算相對(duì)于模板圖像的仿射變換參數(shù),并對(duì)工件進(jìn)行圖像配準(zhǔn)。部分工件輪廓圖像的運(yùn)算結(jié)果如表1所示。
表1 部分工件輪廓圖像的實(shí)驗(yàn)結(jié)果比較
通過表1可以發(fā)現(xiàn),改進(jìn)的SIFT算法在特征提取效率上大約是原來的SIFT算法的提取效率的10倍,對(duì)于圖像重合度分析,可以發(fā)現(xiàn)配準(zhǔn)后的圖像與模板圖像的重合度都保持在80%以上。由于本文只考慮了圖像的旋轉(zhuǎn)和平移兩種仿射變換,而實(shí)際場(chǎng)景中圖像,由于相機(jī)拍攝的角度不同會(huì)造成工件輪廓的微小變形,因此可能會(huì)存在重合度不高的情況,但是在實(shí)際視覺引導(dǎo)中,該算法可以比較穩(wěn)定地獲取工件的二維位姿信息。最后本文通過仿射變換的方式來模擬引導(dǎo)機(jī)器人抓取工件使工件與模板圖像具有相同的位姿,圖7所示為是部分工件的初始位姿,通過改進(jìn)的SIFT算法提取的特征點(diǎn),計(jì)算仿射變換參數(shù),并通過仿射變換對(duì)圖7中的工件進(jìn)行模擬抓取,得到圖8中工件圖像,通過對(duì)比可以發(fā)現(xiàn),原始的工件圖像都能通過仿射變換得到與模板圖像(如圖4)相同的方向,驗(yàn)證了改進(jìn)的SIFT算法在視覺引導(dǎo)對(duì)工件位姿信息獲取的可行性。
圖7 原始的工件圖像
圖8 仿射變換后的工件圖像
本文針對(duì)SIFT算法特征提取效率低的問題,提出了改進(jìn)的SIFT算法,直接在原圖上進(jìn)行高斯尺度空間計(jì)算,以圖像輪廓重心為旋轉(zhuǎn)重心,通過與模板圖像提取的特征點(diǎn)逐個(gè)匹配,并通過仿射變換與模板圖像計(jì)算重合度,以重合度最高的匹配為最佳匹配。實(shí)驗(yàn)最后采集了33張工件輪廓圖像作為樣本和一張模板圖像,使用改進(jìn)的SIFT算法測(cè)試樣本中的工件輪廓與模板輪廓進(jìn)行配準(zhǔn),計(jì)算了仿射變換的參數(shù),并通過仿射變換把提取的工件的輪廓變換到了與模板圖像相同的位姿,實(shí)驗(yàn)表明,該算法的特征提取速度比原來的SIFT算法提高了近10倍,也能完成視覺引導(dǎo)中對(duì)工件位姿的計(jì)算。