房家軍,郁漢琪,花慧敏
(南京工程學(xué)院,江蘇 南京 211167)
在科學(xué)技術(shù)不斷發(fā)展的背景下,很多制造行業(yè)的新技術(shù)被研發(fā)出來,并且在行業(yè)發(fā)展中起到非常重要的作用。制造工業(yè)的發(fā)展帶動了工件生產(chǎn)數(shù)量的增長,在這樣的情況下,工廠對工件尺寸測量有了更高的要求。在需要重復(fù)性工作的情況下,人工視覺在長時間工作中保持集中狀態(tài)變得困難,這導(dǎo)致諸如測量效率差,精度低和損壞工作面等問題,這些問題如果不能夠及時得到解決,那么就會影響到最終工件生產(chǎn)的質(zhì)量和使用壽命。如果使用手工測量的方式,不僅需要消耗大量的時間、人力,而且測量精度也無法得到保障。利用雙目立體相機能夠快速有效的捕捉到測量對象的特征參數(shù),完成非接觸式工件尺寸的高效測量,因此得到了大多數(shù)制造公司的歡迎,在國內(nèi)外工件制造業(yè)中得到很好的推廣和應(yīng)用。
本文在研究的過程中,主要采用的是Halcon提出的雙目視覺測量方法,完成了對工件尺寸的無接觸識別、定位和測量,在此基礎(chǔ)上搭建轉(zhuǎn)換模型,通過幾何方法來達(dá)到精準(zhǔn)測量的目的。在具體操作落實的過程中,可以利用雙目相機來對需要處理的圖像進(jìn)行最初處理,在此過程中可以獲得圖形的三維坐標(biāo),通過這些坐標(biāo)來進(jìn)行幾何計算,進(jìn)而實現(xiàn)無接觸高效率的工件尺寸測量。
雙目視覺測量系統(tǒng)的工作原理就是要從兩個不同位置的空間點觀察同一物體,來獲得在不同視角下的圖像,進(jìn)而由三角幾何方法來獲取圖像像素間的視差,求得物體的空間信息。
三維空間的基礎(chǔ)組成部分是空間點,其三維立體結(jié)構(gòu)先由點組成線,然后由線組成面,最后再由面組成。因此,空間點的坐標(biāo)測量是雙目立體視覺研究的最基本內(nèi)容[1]。
圖1主要反映的是雙目視覺測量模型構(gòu)成情況,在等待測量的目標(biāo)兩側(cè)放置兩臺不同的攝像機,通過兩臺攝像機來對相同的目標(biāo)進(jìn)行拍攝,這樣來完成對目標(biāo)的識別、定位和測量。首先就是要在空間中隨意選擇一點,設(shè)置為P(X,Y,Z),在此左右側(cè)找到相應(yīng)的投影坐標(biāo)為Pl(ul,vl)、Pr(ur,vr)。圖中的Ol、Or、f指代的是攝像機焦距,而相機光軸方向則為n。而P和對應(yīng)的投影坐標(biāo)聯(lián)系起來,就能夠獲取P點的三維空間坐標(biāo)參數(shù)值。
圖1 雙目立體視覺測量模型構(gòu)成
在雙目立體視覺測量模型中,被測目標(biāo)會直接影響到攝像機位置的擺放,所以,需要借助世界坐標(biāo)系來完成攝像機定位。想要實現(xiàn)世界坐標(biāo)系和攝像機坐標(biāo)系間的轉(zhuǎn)換,可以把R和T兩大矩陣結(jié)合起來,其中R是旋轉(zhuǎn)矩陣,而T則是平移矩陣。
在明確兩個坐標(biāo)系之間存在的轉(zhuǎn)換關(guān)系之后,就可以對圖像、攝像機以及世界三大坐標(biāo)系間的關(guān)系進(jìn)行確定。并且在此基礎(chǔ)上,能夠進(jìn)一步計算得出圖像坐標(biāo)系中P所對應(yīng)的世界坐標(biāo)系參數(shù)值。而在整個過程中,涉及到的計算公式如下。
=M1M2XM=MXM
(1)
在式(1)中,u與v主要指代的是數(shù)字圖像中的像素坐標(biāo),接著就是要通過坐標(biāo)系之間的轉(zhuǎn)換關(guān)系,把等待測量的XM,YM,ZM三個點通過旋轉(zhuǎn)和平移后,計算得出相機坐標(biāo)系中的參數(shù)值。因為相機成像原理主要是投影成像原理,因此,可以借助相機內(nèi)部參數(shù)來獲取圖像坐標(biāo)系。M1主要指代的是相機內(nèi)部參數(shù)矩陣,而M2主要指代的是外參矩陣。
因為在P兩側(cè)對應(yīng)的有兩個投影點,分別用M1和M2表示左右攝像機的投影矩陣[2]。則有如下兩個公式:
(2)
(3)
其中,(ul,vl,1)和(ur,vr,1)分別表示左右兩側(cè)投影點Pl、Pr在投影平面上的齊次坐標(biāo)。(XM,YM,ZM,1)主要指代的是空間P世界坐標(biāo)系中所對應(yīng)的齊次坐標(biāo)。通過上述公式的整合運算,那么就可以把Zcl和Zcr兩項去掉,就可以計算得出相應(yīng)的線性方程,方程主要對應(yīng)的3個不同的坐標(biāo)值,分別是XM,YM,ZM,具體方程為:
(4)
(5)
聯(lián)立以上兩個方程組便可得到待測點P在世界坐標(biāo)系的坐標(biāo)(XM,YM,ZM)。 雙目視覺測量系統(tǒng)主要過程如圖2所示。
相機標(biāo)定主要指代的是相機圖像自身的像素坐標(biāo)和空間三維坐標(biāo)存在的關(guān)系,因為需要在測量目標(biāo)的兩側(cè)放置兩個不同的攝像機,所以可以利用左右攝像機模型,以此來標(biāo)定特征點圖像坐標(biāo),并且計算得出相機內(nèi)外參數(shù)。攝像機內(nèi)部參數(shù)涉及到畸變系數(shù)、焦距等,而旋轉(zhuǎn)和平移參數(shù)能夠反映出相機的外參數(shù)。
圖2 軟件算法流程
在具體進(jìn)行雙目系統(tǒng)標(biāo)定的過程中,需要使用到標(biāo)定板,本文在實驗中主要采用的標(biāo)定板的長和寬各為30 mm,平面標(biāo)定模板的圖像陣列是橫縱各七位,詳情如圖3(a)。在具體操作的過程中,需要借助到先進(jìn)的處理軟件Halcon,在此軟件中,可以使用gen_caltab()功能來轉(zhuǎn)換為標(biāo)定描述文件,同時完成兩個攝像機初始內(nèi)參數(shù)的設(shè)置。接著就是要打開攝像機來獲取拍攝目標(biāo)的位置圖片,在此步驟開展的過程中,需要注意確保標(biāo)定板都能夠在拍攝圖像范圍內(nèi)。之后就是要通過軟件的find_caltab()功能來確定標(biāo)定板實際所處區(qū)域,借助find_marks_and_pose()功能來進(jìn)一步處理標(biāo)定板,詳情如圖3(b)、(c)。通過算子來對獲取標(biāo)定板的具體圖像坐標(biāo),并且明確標(biāo)定板和攝像機兩者間的位置關(guān)系。最后就是要借助binocular_calibration()函數(shù)來完成雙目標(biāo)定,進(jìn)而獲取相機內(nèi)外參數(shù),找到兩個攝像機的位置[3]。
通過雙目標(biāo)定能夠大致確定兩個攝像機之間存在的位置關(guān)系,并且能夠計算得出相機的內(nèi)參數(shù),完成之后就需要借助軟件中的gen_binocular_rectification_map功能來對兩個攝像機內(nèi)外參數(shù)進(jìn)行校正,在校正的過程中,會有相應(yīng)的校正映射圖,通過圖形的對比計算來獲取校正后的內(nèi)外參數(shù)。最后就是要借助map_image()函數(shù)來把收集到的隱射圖像轉(zhuǎn)換為幾何結(jié)構(gòu),表1主要反映的是校正前后內(nèi)外參數(shù)的變化情況。
通過立體校正后可以發(fā)現(xiàn),前后兩幅圖像的主點列坐標(biāo)是保持一致的,意味著從水平向上看,外極限處于水平狀態(tài)。通過表1中的參數(shù)數(shù)據(jù)可以得知,校正后右圖像的X軸方向有一定的移動,意味著右圖像和左圖像之間有4.06542 cm的距離差,而其他方向并沒有發(fā)生旋轉(zhuǎn)和平移。由此可以得知,標(biāo)定所得到的結(jié)果和攝像機實際所擺放位置沒有差別,也意味著標(biāo)定得出的參數(shù)值有較高的精確度。
圖3 標(biāo)定板構(gòu)成
表1 校正前后攝像機內(nèi)外參數(shù)統(tǒng)計
本文涉及到的測量系統(tǒng)中,選擇測量對象的基本特征:工件為金屬材料,表面涂有漆且光滑,在光照情況下有少許反光,工件結(jié)構(gòu)為對稱結(jié)構(gòu)。
測量方法是實時采集,把攝像機和計算機連接起來,設(shè)置好符合要求的參數(shù)值。使用圖像采集助手(Image Acquisition)檢測到相機后,再使用專業(yè)性的軟件Halcon來進(jìn)一步的進(jìn)行處理,得到的采集圖像詳情為圖4(a)。
通過左右兩側(cè)的攝像機來采集目標(biāo)的左右不同方向的圖像,但是在具體操作的過程中受到各種不同因素的影響,從而使得相機拍攝的圖像質(zhì)量也受到影響,導(dǎo)致無法精確的把邊緣和輪廓區(qū)分開來。所以,想要得到精準(zhǔn)的處理結(jié)果,那么就需要對原始圖像進(jìn)行預(yù)處理,這個步驟非常重要,會直接影響到最終的處理結(jié)果。
在具體落實圖像預(yù)處理步驟的過程中,需要把圖像校正成為標(biāo)準(zhǔn)幾何結(jié)構(gòu),接著就是要對圖像進(jìn)行灰度化處理,借助軟件中的median_image()算子來完成降噪操作,確保圖像的邊緣細(xì)節(jié)能夠得到有效保留,這對于后續(xù)圖像特征信息的提取非常有利。下圖4(b)主要反映的是圖像校正結(jié)果。接著就是要對工件等待測量的區(qū)域進(jìn)行識別并確定,利用connection()算子來進(jìn)行連通域化處理,這對于單個區(qū)域操作比較有利[4]。最后調(diào)用select_shape()算子進(jìn)行形狀選擇,打開特征直方圖,由面積、行、列等特征,提取出目標(biāo)物體的區(qū)域,結(jié)果如圖4(c)所示。
獲取到目標(biāo)左右拍攝圖像后,需要對兩個圖像特征進(jìn)行提取,接著就是要利用立體匹配來獲取物體的三維信息。需要明確的是,如果特征提取精確度不高,那么就會對最終工件尺寸的測量結(jié)果造成不利影響。邊緣銳角和輪廓是測量工件尺寸必不可少的信息,如果少了這些重要信息,那么最終測量結(jié)果的精確度就會大大降低[5]。
本文在提取邊緣輪廓的過程中,主要利用canny算子和亞像素邊緣檢測方式相結(jié)合的方法來進(jìn)行操作。使用canny算子的優(yōu)勢在于能夠?qū)σ恍┎环蠈嵡榈膫芜吘壭畔⑦M(jìn)行剔除,盡可能多的保留真實的邊緣特征信息,這對于目標(biāo)定位非常有利。
圖4 預(yù)處理后的圖像
亞像素是一種物理量,主要存在兩個單位像素間,此像素計算量不大,并且能夠在一定程度上提高精度,可以通過計算亞像素來完成精確度較高的在線檢測工作。首先就是要利用canny算子來獲取邊緣點位置和輪廓信息,完成粗定位,接著就是要進(jìn)一步確定邊緣點,明確主要的梯度方向,在獲取亞像素精度邊緣的過程中,可以使用雙線性插值來輔助操作。最后,就是要對邊緣進(jìn)行細(xì)化處理[6]。canny亞像素邊緣檢測如圖5(a)所示。
在提取特征點的之前,需要首先找到亞像素的邊緣,接著就以亞像素邊緣處作為基點,進(jìn)行等距取點,得到的就是特征點。利用intersection_11()算子獲取兩直線的相交點,接著就是利用distance_ps()算子來獲取距離參數(shù)值,主要測量計算的是直線到感興區(qū)域之間的距離。兩線相交點在低于預(yù)設(shè)閾值的情況下,成為特征點;如果不符合要求,那么就進(jìn)一步尋找,直到滿足要求[7]。圖5(b)主要反映的是工件特征點獲取情況。
(a)canny亞像素邊緣檢測
(b)獲取左圖像特征點
圖5 特征點獲取示意
所謂的立體匹配就是要在三維空間中找到某個目標(biāo)物體在不同方位位置的關(guān)系。對獲取到的圖像進(jìn)行立體校正后,能夠基于極限約束原則來降維搜索。因為存在著一定的誤差,那么就需要在符合像素要求的候選點中專門性的選擇3個候選匹配點。因為空間中點的視差值越小,其深度就越大,因此,需要找到空間點的視差值的最大和最小值,接著就是需要在最大最小區(qū)域內(nèi)進(jìn)行搜索。d∈[dmin,dmax]可由圖像中產(chǎn)生的最大和最小距離計算出dmin和dmax。
視差搜索區(qū)域此時的長度表達(dá)式為:L=dmax-dmin+1,這種方法很大程度上縮減了搜索范圍,大大減少了時間,匹配成功的可能性也有所提高[8]。圖6主要反映的是搜索原理示意圖。
圖6 特征原理示意
首先就是要以左側(cè)圖像的特征點為中心,利用gen_rectangle1()算子來設(shè)定鄰域窗口,尺寸大小是(m,n)。接著就是要借助recduce_domain()算子來對區(qū)域進(jìn)行轉(zhuǎn)化處理,使其轉(zhuǎn)化為特征點模板圖像,圖7(a)中矩形框就是所謂的模板。接著就需要利用軟件,在外極線上來確定匹配點的搜索區(qū)域,利用recduce_domain()算子來對這個區(qū)域進(jìn)行轉(zhuǎn)化,使其變成等待搜索區(qū)域,這樣操作的好處就是能夠把原有的搜索范圍大大縮小。最后使用find_ncc_model()算子來搜索符合要求的匹配點。當(dāng)NCC值的相似度大于0.95時,則該點作為匹配點。結(jié)果如圖7(c)所示。
圖7 立體匹配操作流程
通過(4)和(5)兩個公式可以得知,想要獲取空間點的三維坐標(biāo)數(shù)值,就需要確定空間點在左右兩個圖像中的坐標(biāo)值,除此之外,還需要了解左右兩個攝像機的內(nèi)外參數(shù)。然而這些參數(shù)值要在完成相機標(biāo)定和立體匹配成功后才能得到。最后采用上述方法,由disparity_to_point_3d()算子來得到特征點相應(yīng)的三維坐標(biāo)值,圖8主要反映的是三維點云圖所構(gòu)成的目標(biāo)整體輪廓圖形[9]。
圖8 三維點云
基于Halcon計算工件三維點云的外包圍矩形的代碼實現(xiàn)如下:
get_domain (X, Domain)
get_region_points (Domain, Rows, Columns)
get_grayval (X, Rows, Columns, GrayvalX)
get_grayval (Y, Rows, Columns, GrayvalY)
get_grayval (Z, Rows, Columns, GrayvalZ)
dev_clear_window ()
gen_object_model_3d_from_points (GrayvalX, GrayvalY, GrayvalZ, ObjectModel3D)
smallest_bounding_box_object_model_3d(ObjectModel3D,'oriented',Pose,Length1, Length2, Length3)
gen_box_object_model_3d (Pose, Length1, Length2, Length3, ObjectModel3D1)
dev_get_window (WindowHandle)
visualize_object_model_3d(WindowHandle,[ObjectModel3D,ObjectModel3D1],[],[],['alpha_1'], [0.5], [], [], [], PoseOut)
利用上述代碼找出工件三維點云的外包圍矩形,并計算工件三維尺寸。最后就是要對比測量值和實際值,詳情對比結(jié)果如表2。
表2 工件尺寸測量值和實際值的對比結(jié)果統(tǒng)計
通過對比分析工件尺寸測量值和實際值可以得知,兩者間的誤差基本上都控制在合理范圍內(nèi),由此可以得知,本文所使用的雙目視覺系統(tǒng)有著較好的應(yīng)用效果,測量誤差基本控制在±0.3 mm之內(nèi),準(zhǔn)確性良好。
想要獲取更高的工件尺寸測量結(jié)果,那么就需要確保測量系統(tǒng)的穩(wěn)定性、實時性。本文在對工件尺寸進(jìn)行測量的時候,主要采用的視覺軟件Halcon有著非常良好的穩(wěn)定性,并且測量結(jié)果的精確度也較高,能夠滿足大批量工件尺寸測量的需求。本次設(shè)計的系統(tǒng)使得工件生產(chǎn)效率得到一定程度的提升,并且使得勞動力成本得到合理有效的控制。整個系統(tǒng)節(jié)能效果非常好,使用非常簡單方便,能夠大范圍地普及應(yīng)用,體現(xiàn)出很大的市場價值和應(yīng)用前景。