劉志峰,王子涵,趙永勝,程 強(qiáng)
(北京工業(yè)大學(xué)機(jī)械工程與應(yīng)用電子技術(shù)學(xué)院,北京 100124)
螺栓的使用領(lǐng)域極為廣泛,在長(zhǎng)時(shí)間的使用中震動(dòng)與疲勞所導(dǎo)致的螺栓松弛現(xiàn)象則會(huì)嚴(yán)重影響設(shè)備的運(yùn)行與人們的生命安全. 為此,做好螺栓的健康監(jiān)測(cè)有著急切的必要性[1].
目前,通過(guò)圖像處理和分析對(duì)螺栓進(jìn)行自動(dòng)檢測(cè)和識(shí)別,是一種行之有效的方法[2]. 螺栓自動(dòng)化檢修設(shè)備的運(yùn)行嚴(yán)重依賴視覺(jué)系統(tǒng)為控制中心提供準(zhǔn)確的可操作信息,螺栓的目標(biāo)檢測(cè)與識(shí)別和3D位姿測(cè)量則是完成自主檢修的重要前提. 而螺栓所處的環(huán)境是不固定、不可知,且不可描述的,應(yīng)用場(chǎng)景必然是高度混雜無(wú)序的,同時(shí)由于螺栓作為目標(biāo)物,其體積相對(duì)較小,對(duì)視覺(jué)識(shí)別與檢修任務(wù)帶來(lái)巨大挑戰(zhàn),相關(guān)技術(shù)成果與科學(xué)理論更是少之又少. 參考文獻(xiàn)[2]利用特征提取和機(jī)器學(xué)習(xí)相結(jié)合的方法對(duì)火車底部的螺栓實(shí)現(xiàn)了平面內(nèi)快速定位;姜春英等[3]通過(guò)輪廓分割及Tukey權(quán)重函數(shù)實(shí)現(xiàn)了對(duì)平面螺栓的角點(diǎn)提取并對(duì)機(jī)器人進(jìn)行引導(dǎo);Kong等[4]通過(guò)對(duì)比螺栓長(zhǎng)期使用前后的圖像,兩幅圖做像素減法從而定位平面內(nèi)的松動(dòng)螺栓;Koike等[5]通過(guò)顏色對(duì)比與模板匹配的方法實(shí)現(xiàn)識(shí)別固定區(qū)域內(nèi)螺栓的空間位置并對(duì)機(jī)械臂進(jìn)行導(dǎo)航. 可見(jiàn)目前已有的基于視覺(jué)的螺栓識(shí)別定位系統(tǒng)大部分只是停留在簡(jiǎn)單的二維平面范圍,沒(méi)有觸及現(xiàn)實(shí)應(yīng)用的三維場(chǎng)景,實(shí)際使用性差,可應(yīng)用范圍小.
因此本文提出一種基于自行搭建的雙目系統(tǒng)的螺栓識(shí)別和3D位姿測(cè)量方法,可以快速魯棒識(shí)別、定位處于三維環(huán)境下不同位置與姿態(tài)的螺栓,同時(shí)也適用于包圍、斜面、遮擋等更復(fù)雜的開(kāi)放環(huán)境. 首先,利用SolidWorks生成螺栓模型,通過(guò)引入虛擬相機(jī)建立三維模型的二維數(shù)據(jù)庫(kù),同時(shí)設(shè)置虛擬相機(jī)視角范圍以代替全視角,從而減小計(jì)算時(shí)間. 針對(duì)二維圖像通過(guò)邊緣銳化及去噪等預(yù)處理,提取特征點(diǎn)的像素坐標(biāo),同時(shí)采取貪婪算法在全局進(jìn)行二維匹配,得到螺栓的3個(gè)傾角信息. 在完成位姿測(cè)算的同時(shí)提高整體深度信息獲取的可信程度,擴(kuò)大該系統(tǒng)的實(shí)用范圍.
本文研究的目標(biāo)有2個(gè),其一是識(shí)別定位空間中的螺栓,其二是對(duì)已知坐標(biāo)信息的螺栓進(jìn)行姿態(tài)的測(cè)算.
獲取螺栓深度信息方法的總體構(gòu)架如圖1所示.
相機(jī)成像會(huì)將真實(shí)世界的三維場(chǎng)景轉(zhuǎn)換為二維平面圖,丟失了真實(shí)場(chǎng)景的深度信息,而雙目系統(tǒng)則可以克服這一點(diǎn).
雙目視覺(jué)系統(tǒng)由2臺(tái)高清CCD相機(jī)和1個(gè)云臺(tái)支架組成,2臺(tái)相機(jī)調(diào)整至一定距離,并且向內(nèi)傾斜一定角度,雙目平臺(tái)搭建完成,如圖2所示.
而立體視覺(jué)測(cè)量原理如圖3所示,是利用2個(gè)攝像機(jī)的成像平面與被測(cè)物體之間構(gòu)成三角形[6],從而來(lái)獲得2幅不同視覺(jué)角度上的感知圖. 然后基于三角幾何相關(guān)原理對(duì)2幅圖像對(duì)應(yīng)點(diǎn)的視差進(jìn)行計(jì)算,獲得物體在三維空間上的信息[7].
圖3中Ol、Or分別為左右2個(gè)相機(jī)的光心;Pl、Pr分別為目標(biāo)P在左右相機(jī)的成像平面上所成的像點(diǎn).
基于針孔相機(jī)模型,以及理想的雙目系統(tǒng)模型——兩攝像機(jī)光軸平行且與基線垂直,特征點(diǎn)由像平面坐標(biāo)與世界坐標(biāo)之間的轉(zhuǎn)換,可以由
(1)
計(jì)算. 其原理如圖4所示,p為世界坐標(biāo)中一點(diǎn)在二維平面的映射,其二維坐標(biāo)為(u,v),(u0,v0)是圖像的中心坐標(biāo),f是相機(jī)焦距,1/dx、1/dy分別是單個(gè)像素的寬和高,R和T分別是雙目系統(tǒng)中右攝像機(jī)相對(duì)于左攝像機(jī)的旋轉(zhuǎn)矩陣和平移矩陣. 以上提及的參數(shù)都是依據(jù)對(duì)相機(jī)的標(biāo)定獲得的. 是螺栓中心在圖像中的像素坐標(biāo),是根據(jù)特征識(shí)別算法SURF[7]結(jié)合HOG[8]獲取;X、Y、Z是螺栓中心點(diǎn)在世界坐標(biāo)系中的位置坐標(biāo),即定位系統(tǒng)的輸出結(jié)果.
式(1)是用于對(duì)相機(jī)進(jìn)行標(biāo)定時(shí)采用的算法,已知4個(gè)點(diǎn)的位置信息就可以獲得像素坐標(biāo)與世界坐標(biāo)之間的轉(zhuǎn)換關(guān)系,這一步就是對(duì)相機(jī)的標(biāo)定[8].
獲得相機(jī)系統(tǒng)的內(nèi)外參數(shù)后,可以對(duì)采集來(lái)的圖像進(jìn)行立體校正,單目校正是為了解決相機(jī)鏡頭畸變帶來(lái)的誤差,立體校正則是為了解決相機(jī)安裝帶來(lái)的誤差,根據(jù)公式
(2)
分別構(gòu)造兩相機(jī)的旋轉(zhuǎn)矩陣使兩光軸平行,再根據(jù)公式
(3)
構(gòu)造變換矩陣使成像平面與基線平行,最終達(dá)到左右圖像之間行像素對(duì)正的目的[9]. 式中:R1和R2分別是左右相機(jī)的旋轉(zhuǎn)矩陣;Rrect是構(gòu)造的變換矩陣.
特征提取方面,本文為了得到更精準(zhǔn)的定位結(jié)果避免光線等其他因素的影響,采用了SURF與HOG算法結(jié)合的方法.
找到目標(biāo)點(diǎn)在左右視圖中的映射點(diǎn),計(jì)算視差d=x1-x2,根據(jù)圖3所示在已知目標(biāo)點(diǎn)像素的橫縱坐標(biāo)(u1,v1)、兩相機(jī)間距b和相機(jī)焦距f后,利用相似三角形原理計(jì)算出目標(biāo)點(diǎn)的深度坐標(biāo),進(jìn)而獲得目標(biāo)點(diǎn)的世界坐標(biāo)[12].
作為雙目系統(tǒng)中的圖像采集部分,CCD相機(jī)在生產(chǎn)過(guò)程中鏡頭、傳感器均存在細(xì)小制造誤差以及光學(xué)模組的曲率變化,最終導(dǎo)致捕獲圖像的畸形變形[13]. 圖5為常見(jiàn)的畸變形式. 同時(shí)雙目系統(tǒng)的兩臺(tái)攝像頭需要進(jìn)行極線校正等一系列參數(shù)的設(shè)置.
為此引入了雙目系統(tǒng)的內(nèi)、外參數(shù)標(biāo)定. 其精確性直接影響隨后圖像深度恢復(fù)的數(shù)值精度. 圖6所示為標(biāo)準(zhǔn)的圓點(diǎn)式標(biāo)定板,在雙目相機(jī)拍攝多組不同視角的標(biāo)定板后,計(jì)算得到如表1所示參數(shù).
表1 雙目相機(jī)內(nèi)部參數(shù)
根據(jù)精準(zhǔn)的雙目標(biāo)定數(shù)據(jù),進(jìn)而建立雙目視差圖像,獲得圖像中各個(gè)點(diǎn)的深度信息,即Z軸坐標(biāo)數(shù)值.
選用NCC方法對(duì)左右圖像進(jìn)行一致性檢測(cè),找到2幅圖像中的各個(gè)對(duì)應(yīng)點(diǎn). NCC方法通常用來(lái)比較2幅圖像的相似程度,已經(jīng)是一個(gè)常見(jiàn)的圖像處理手段[14]. 并且該算法可以有效降低光照對(duì)圖像比較結(jié)果的影響. 而且NCC最終結(jié)果在0~1之間,所以特別容易量化比較結(jié)果.
其中μf、μt為檢測(cè)2幅對(duì)比圖像的窗函數(shù)
這樣通過(guò)積分圖像建立起來(lái)窗口下面的待檢測(cè)圖像與模板圖像的和與平方和,以及它們的交叉乘積5個(gè)積分圖索引之后,這樣就完成了整個(gè)預(yù)計(jì)算生成. 找到相應(yīng)的對(duì)應(yīng)點(diǎn)后,通過(guò)相似三角形原理計(jì)算出視差圖,如圖7所示(由于顯示效果限制,采用反色差圖,距離越遠(yuǎn)顏色越深).
因?yàn)榧僭O(shè)世界坐標(biāo)與左相機(jī)坐標(biāo)系重合,所以要在左圖中找到3個(gè)螺栓的位置然后對(duì)應(yīng)的在視差圖中找到每個(gè)像素坐標(biāo)對(duì)應(yīng)的視差值,最后通過(guò)算子就可以獲得目標(biāo)點(diǎn)距離系統(tǒng)的深度,即Z坐標(biāo).
在獲取全圖深度的基礎(chǔ)上需要對(duì)圖中3個(gè)目標(biāo)螺栓進(jìn)行局部的深度測(cè)量,因此需要對(duì)3個(gè)螺栓進(jìn)行檢測(cè)并返回它們的坐標(biāo)值. 為此,這里引用Canny算子對(duì)圖像進(jìn)行進(jìn)行梯度計(jì)算,得到圖像邊緣并逼近螺栓的圓形輪廓,如圖8所示. 并計(jì)算出該形狀的半徑及圓心所在像素坐標(biāo)及深度信息,如圖9所示,所提取的螺栓深度數(shù)據(jù)如表2所示.
從實(shí)測(cè)數(shù)據(jù)可以看到,處于同一平面內(nèi)(75 cm)的3個(gè)螺栓的深度信息成功捕獲,并且數(shù)值均較為準(zhǔn)確.
表2 深度信息測(cè)量數(shù)值
在對(duì)螺栓檢修的過(guò)程中,不僅需要知道螺栓的平面坐標(biāo)以及深度坐標(biāo),還需要得知螺栓的α、β、γ三個(gè)空間傾角信息,即螺栓的姿態(tài)信息[15],以便后續(xù)自動(dòng)檢修時(shí)控制工業(yè)機(jī)器人調(diào)整相應(yīng)的姿態(tài),從而使末端工具精準(zhǔn)對(duì)齊螺栓進(jìn)行擰緊、修正等操作.
本文提出的螺栓的位姿測(cè)量總體框架圖如圖10所示.
在離線處理階段,使用虛擬相機(jī)和螺栓的三維模型生成目標(biāo)螺栓特定視角的二維模型數(shù)據(jù)庫(kù);在線處理時(shí),通過(guò)對(duì)獲取圖像的預(yù)處理,利用金字塔搜索算法及貪婪算法使二維模型庫(kù)與圖像螺栓匹配,最終得到目標(biāo)螺栓的位姿.
使用3D模型可以在進(jìn)行在線位姿測(cè)量時(shí)快速地創(chuàng)建2D的模型數(shù)據(jù)庫(kù),方便與相機(jī)獲取的平面圖像進(jìn)行對(duì)比與匹配.
為了從3D的CAD模型中獲取可以快速匹配的2D模型數(shù)據(jù)庫(kù),引入虛擬相機(jī)概念. 虛擬相機(jī)的建模仿真環(huán)境在圖形庫(kù)OpenGL中進(jìn)行,虛擬相機(jī)的設(shè)置見(jiàn)圖11,相機(jī)中心設(shè)置在虛擬球表面,并時(shí)刻指向球心.
其中,3D模型的中心位于虛擬球的中心,2D的模型圖像是基于虛擬相機(jī)的位姿從虛擬球的不同位置和不同距離處拍攝,虛擬相機(jī)在不同視角拍攝的平面圖像融合成2D模型庫(kù)虛擬二維圖像的生成過(guò)程如圖12所示.
其中,上述坐標(biāo)變換分為2步. 第1步變換是坐標(biāo)系原點(diǎn)到參考點(diǎn)的平移. 第2步轉(zhuǎn)換是3D對(duì)象模型圍繞參考坐標(biāo)系的軸旋轉(zhuǎn)到所需的參考方向. 結(jié)合這2個(gè)變換得到了三維形狀模型的參考位姿. 因此,三維形狀模型的參考位姿描述了參考坐標(biāo)系相對(duì)于CAD文件定義的三維對(duì)象模型坐標(biāo)系的位姿. 設(shè)t=(x,y,z)為當(dāng)前參考方向的旋轉(zhuǎn)矩陣. 然后,利用公式
pr=R(pm-t)
將3D模型坐標(biāo)系中給定的點(diǎn)pm轉(zhuǎn)換為3D模型參考坐標(biāo)系中的點(diǎn)pr.
同時(shí),在利用虛擬相機(jī)對(duì)模型進(jìn)行空間模擬拍攝時(shí),可以將全視角拍攝更替為特定范圍拍攝,減少模板庫(kù)多余的數(shù)據(jù),從而獲得模型在此角度范圍內(nèi)所有的二維信息.
由于螺栓應(yīng)用環(huán)境的不確定與多變性,使得光照條件不均衡,且隨時(shí)斷變化大,因而鏡頭所拍攝的圖片亮度不統(tǒng)一,往往會(huì)出現(xiàn)圖片過(guò)暗、過(guò)爆等現(xiàn)象. 同時(shí),由于螺栓采用金屬材料,在某些角度可能出現(xiàn)反光與高亮現(xiàn)象,使圖像局部出現(xiàn)亮斑,很難識(shí)別出目標(biāo)物. 以上兩點(diǎn)由于光線所帶來(lái)的問(wèn)題都對(duì)圖片中螺栓的姿態(tài)的識(shí)別帶來(lái)很大影響. 因此在使用圖片前,需要對(duì)其進(jìn)行一系列處理,如噪聲濾波、圖像邊緣增強(qiáng)、灰度歸一化等.
通過(guò)圖13的前后對(duì)比效果可以看到,目標(biāo)螺栓通過(guò)處理后表面噪點(diǎn)明顯降低,邊界更加清晰,邊緣過(guò)渡有所提升. 通過(guò)總體的灰度分布圖像可以看到,圖像灰度由原始的中后段較為連續(xù)的波形,經(jīng)過(guò)濾波與強(qiáng)化后灰度更為離散跳躍.
在線處理階段,工業(yè)相機(jī)獲取的圖像經(jīng)過(guò)預(yù)處理后,下一步需要使用建立好的2D形狀模型庫(kù)在圖像中進(jìn)行全局搜索匹配. 搜索過(guò)程通過(guò)滑窗式方法對(duì)全圖進(jìn)行逐一匹配,通過(guò)點(diǎn)對(duì)特征將2個(gè)定向點(diǎn)配對(duì),此方法廣泛用于形狀的物體識(shí)別中[16]. 為了極高位姿測(cè)量的效率與準(zhǔn)確率,2D數(shù)據(jù)庫(kù)與平面圖像采用高斯金字塔與貪婪算法相結(jié)合的方法進(jìn)行搜索匹配,得到螺栓更準(zhǔn)確的姿態(tài)信息.
首先,為達(dá)到快速處理目的,采用高斯金字塔散發(fā)對(duì)圖像縮放,高斯金字塔為一層一層的圖像集合,如圖14所示,隨著層級(jí)越來(lái)越高, 圖像越來(lái)越小[17-18]. 該方法是通過(guò)高斯平滑和亞采樣獲得一系列下采樣圖像,對(duì)原始圖像進(jìn)行高斯卷積:
其中每一層都是按照由下到上的方式進(jìn)行編號(hào),層級(jí)用i來(lái)表示,也就是說(shuō)Gi+1層的圖像尺寸要比Gi層小.
通過(guò)高斯金字塔對(duì)圖像縮放后,圖像面積大幅縮小,減少模板匹配的消耗時(shí)間. 隨后通過(guò)貪婪算法(貪心算法)對(duì)高斯圖像從頂層至底層與2D模型庫(kù)進(jìn)行貪婪選擇,最終得到最佳匹配結(jié)果,即目標(biāo)螺栓姿態(tài).
貪婪選擇是指所求問(wèn)題的整體最優(yōu)解可以通過(guò)一系列局部最優(yōu)的選擇,即貪婪選擇來(lái)得到,這是貪心算法可行的第一個(gè)基本要素[19]. 貪婪選擇是采用從頂向下、以迭代的方法做出相繼選擇,每做一次貪心選擇就將所求問(wèn)題簡(jiǎn)化為一個(gè)規(guī)模更小的子問(wèn)題. 因此,使用高斯金字塔分層與貪婪算法相結(jié)合后可以達(dá)到從頂層選擇最優(yōu)區(qū)域,下層繼承頂層最優(yōu)區(qū)域繼續(xù)搜索,以此類推,直至底層,效果如圖15所示.
最終得到與平面圖像最為匹配的模型姿態(tài),并將2D模型姿態(tài)信息返回至匹配結(jié)果.
螺栓的姿態(tài)測(cè)量算法為本文章的核心內(nèi)容,其在真實(shí)開(kāi)放環(huán)境中實(shí)驗(yàn)的成功與否直接關(guān)乎該算法是否成立. 為驗(yàn)證該螺栓姿態(tài)測(cè)量算法的有效性與高效性,下面開(kāi)始進(jìn)行真實(shí)環(huán)境的實(shí)驗(yàn)驗(yàn)證.
通過(guò)SolidWorks導(dǎo)入3D螺栓模型,如圖16所示,并利用虛擬相機(jī)獲取其2D數(shù)據(jù)庫(kù),完成離線處理過(guò)程.
同時(shí),由于螺栓的應(yīng)用場(chǎng)合多變、復(fù)雜,為貼近真實(shí)應(yīng)用場(chǎng)景,自行搭建了如圖17所示包含:斜面、遮擋、包圍3種較為復(fù)雜的環(huán)境.
隨后調(diào)用雙目平臺(tái)其中的一個(gè)單目對(duì)3種環(huán)境進(jìn)行拍照、圖像處理,對(duì)圖像進(jìn)行高斯金字塔分層,通過(guò)貪婪算法用2D模型庫(kù)與圖像從頂層至底層進(jìn)行逐一匹配,以此選取最優(yōu)區(qū)域及匹配姿態(tài),將最終結(jié)果作為姿態(tài)測(cè)量參考結(jié)果,返回至界面.
如圖17所示,經(jīng)過(guò)計(jì)算后可以直觀地看到匹配的結(jié)果以及螺母的姿態(tài)信息,包括α、β、γ三個(gè)傾角的信息.
對(duì)于實(shí)驗(yàn)結(jié)果準(zhǔn)確性的驗(yàn)證是不可忽視的一部分. 在結(jié)果驗(yàn)證的過(guò)程中需要通過(guò)專業(yè)儀器對(duì)螺母及相機(jī)的位置與姿態(tài)信息進(jìn)行測(cè)繪,通過(guò)計(jì)算獲取兩者間的坐標(biāo)關(guān)系,進(jìn)而對(duì)該算法的結(jié)果進(jìn)行驗(yàn)證,此方法可行性低且過(guò)于復(fù)雜. 因此在實(shí)驗(yàn)程序設(shè)計(jì)之初,設(shè)定將匹配結(jié)果的2D模型顯示在圖像之中,如果顯示的2D模型(邊界線)與實(shí)際圖像中螺栓所重合,則可以說(shuō)明該算法的測(cè)量準(zhǔn)確性.
從圖18、19和表3中可以看到,2D的螺栓模型庫(kù)已經(jīng)在一定誤差范圍內(nèi)將圖像中的螺栓較為準(zhǔn)確地描繪出來(lái),并得到了相應(yīng)的姿態(tài)信息,說(shuō)明此方法在較為成熟的平面識(shí)別基礎(chǔ)上,還可以在開(kāi)放空間內(nèi)任意姿態(tài)的螺栓進(jìn)行位姿測(cè)量,即便螺栓在被遮擋、包圍和斜面的極端情況下.
但是,可以看到在時(shí)間消耗方面差距較大,分為1 s內(nèi)與2 s外. 經(jīng)過(guò)分析,其主要原因是在利用虛擬相機(jī)對(duì)模型拍攝時(shí)設(shè)置的視角范圍過(guò)于局限,同時(shí)在使用貪婪算法時(shí)貪婪度的設(shè)置也會(huì)影響耗時(shí),貪婪度越高計(jì)算量越大,時(shí)間損耗也會(huì)隨之增加.
表3 螺栓姿態(tài)測(cè)量結(jié)果
因此,該方法的準(zhǔn)確度與實(shí)用性都較為突出,但需要注意的是在使用前還需根據(jù)各個(gè)不同識(shí)別環(huán)境,進(jìn)一步對(duì)虛擬相機(jī)拍攝視角及貪婪度等眾多參數(shù)進(jìn)行優(yōu)化設(shè)置.
本文提出一種基于雙目平臺(tái)的螺栓位姿測(cè)量的方法. 自行構(gòu)建雙視覺(jué)系統(tǒng),通過(guò)雙目標(biāo)定得到了2臺(tái)攝像機(jī)的內(nèi)、外參數(shù),隨后將校正后的2幅圖像通過(guò)NCC方法進(jìn)行對(duì)應(yīng)點(diǎn)擬合,計(jì)算出了特征點(diǎn)螺栓的平面坐標(biāo)以及縱向的深度坐標(biāo)信息,完成了場(chǎng)景的深度重構(gòu). 通過(guò)3D CAD模型以及空間虛擬相機(jī)原理對(duì)螺栓進(jìn)行了2D模型庫(kù)的建立,隨后引入了高斯金字塔分層原理和貪婪算法,對(duì)經(jīng)過(guò)處理后的實(shí)景圖片進(jìn)行了模型庫(kù)的搜索與匹配,最終得到了螺栓的姿態(tài),即3個(gè)傾角信息,結(jié)果較為準(zhǔn)確,但耗時(shí)有待根據(jù)場(chǎng)景環(huán)境進(jìn)行優(yōu)化.