潘 琪, 秦襄培, 尹 雄, 武勝超, 曾 誠
(武漢工程大學(xué) 機(jī)電工程學(xué)院, 武漢 430205)
近年來,隨著數(shù)字圖像處理與計算機(jī)智能學(xué)科的飛速發(fā)展,機(jī)器視覺也逐漸廣泛應(yīng)用于各個方面,而且采用機(jī)器視覺來代替人眼進(jìn)行測量與判斷能較大地提高了生產(chǎn)柔性和自動化程度,在一些不適合于人工作業(yè)的危險工作環(huán)境或人工視覺難以滿足要求的場合,常用機(jī)器視覺來替代人工視覺。同時,在大批量工業(yè)生產(chǎn)過程中,用人工視覺檢查產(chǎn)品質(zhì)量效率低且精度不高,用機(jī)器視覺檢測方法可以大大提高生產(chǎn)效率和生產(chǎn)的自動化程度[1-3]。由于機(jī)器視覺中的主動測距技術(shù)在人為添加輻射源時往往需要工件處于離線狀態(tài),此時工件的拆卸和裝配也會容易造成磨損,影響測量結(jié)果。故在機(jī)械加工檢測時適合采用被動測距。而單目視覺由于難以準(zhǔn)確標(biāo)定攝像機(jī)的離焦模型,多目視覺又由于結(jié)構(gòu)復(fù)雜、計算量大,導(dǎo)致成本較高。所以采用折中的雙目視覺來進(jìn)行工件的尺寸測量,即在一定程度上滿足了效率高、精度高、自動化程度高等要求,進(jìn)而又呈現(xiàn)出成本低、計算簡約等優(yōu)點[4]。
雙目立體視覺是計算機(jī)視覺的一個重要分支,即由不同位置的一臺或者兩臺攝像機(jī)(CCD)經(jīng)過移動或旋轉(zhuǎn)拍攝同一幅場景,通過計算空間點在兩幅圖像中的視差,獲得該點的三維坐標(biāo)值[5]。其原理如圖1所示。

圖1 雙目視覺測量原理Fig. 1 The principle of binocular vision measurement
由圖1可知,點P為世界坐標(biāo)系中的待測點;xlOlyl和xrOryr分別為左、右相機(jī)所在位置的坐標(biāo)系;pl和pr分別為點P在左、右相機(jī)的像平面中所對應(yīng)的位置。
在整個成像過程中,為了計算出點P的空間坐標(biāo),需要先了解到圖像坐標(biāo)系、攝像機(jī)坐標(biāo)系和世界坐標(biāo)系三者之間的關(guān)系。通過三種坐標(biāo)之間的轉(zhuǎn)換關(guān)系,便可以將點P在圖像坐標(biāo)系中的坐標(biāo)來計算得到世界坐標(biāo)系中點P的坐標(biāo)[6]。
首先,需要知道圖像中任意一點以像素為單位的像素坐標(biāo)與以ms為單位的圖像坐標(biāo)系之間的關(guān)系,推得關(guān)系表達(dá)式為:
(1)
其中,(u,v,1)為P的投影點在圖像坐標(biāo)系中以像素為單位的齊次坐標(biāo);(x,y,1)為P的投影點在圖像坐標(biāo)系中以mm為單位的齊次坐標(biāo);dx、dy為像素在x軸與y軸方向上所對應(yīng)的物理長度;(u0,v0)為攝像機(jī)的主點坐標(biāo),位于圖像中心。
由于攝像機(jī)的位置是根據(jù)被測對象而安置的,所以需要通過世界坐標(biāo)來作為一個基準(zhǔn)坐標(biāo)系來確定攝像機(jī)的位置,同時也可以確定被測物體在該坐標(biāo)系中的位置。而世界坐標(biāo)系與攝像機(jī)坐標(biāo)系可以通過旋轉(zhuǎn)矩陣R和平移向量T來進(jìn)行轉(zhuǎn)換,數(shù)學(xué)表達(dá)式為:
(2)
其中,(xc,yc,zc,1)為點P在攝像機(jī)坐標(biāo)系下的齊次坐標(biāo);(xw,yw,zw,1)為點P在世界坐標(biāo)系下的齊次坐標(biāo);R為3×3的旋轉(zhuǎn)矩陣;T為三維平移向量。
接著,再只需要知道圖像坐標(biāo)系與攝像機(jī)坐標(biāo)系之間的關(guān)系,便可以推算出圖像坐標(biāo)系、攝像機(jī)坐標(biāo)系與世界坐標(biāo)系之間的關(guān)系。由于點P在圖像上的成像位置可以用針孔模型近似表示,存在如下的比例關(guān)系:

(3)
其中,f為等效焦距。
將式(3)用矩陣表示,即為:
(4)
將式(1)、(2)、(4)聯(lián)立便可以得到點P的世界坐標(biāo)系與該點投影點的坐標(biāo)關(guān)系,計算公式如下:
(5)
其中,令αx=f/dx,αy=f/dy;M1為攝像機(jī)的內(nèi)部參數(shù),由αx,αy,u0,v0決定;M2為攝像機(jī)的外部參數(shù),由旋轉(zhuǎn)矩陣R和平移向量T決定;M則為3×4的投影矩陣。
由于點P在2個攝像機(jī)Ol與Or上的投影點可以從2個圖像中分別檢測出來,再加之?dāng)z像機(jī)Ol與Or已經(jīng)標(biāo)定,其投影矩陣分別為Ml與Mr,則有:
(6)
(7)
其中,(ul,vl,1)和(ur,vr,1)分別為點P在左、右圖像上投影點的齊次坐標(biāo);(xw,yw,zw,1)為點P在世界坐標(biāo)系中的齊次坐標(biāo)。將式(6)和式(7)展開并分別消去zcl和zcr后,則可得到關(guān)于xw,yw,zw的線性方程,如(8)、(9)所示:
(8)
(9)
將式(8)和式(9)聯(lián)立,便能求出點P在世界坐標(biāo)系下的坐標(biāo)(xw,yw,zw)。
本次實驗測量對象為雙機(jī)頭成型機(jī)生產(chǎn)加工出來的一塊鋼板,由于鋼板底部和下方的工作臺會有一部分貼合,為了便于比較和分析雙目視覺的測量精度,所以本次僅就鋼板上方的特征點進(jìn)行測量。工件待測點的分布即如圖2所示。其中,待測點實際測量的數(shù)據(jù)則可見表1。

圖2 工件待測點Fig. 2 The workpiece to be measured point

表1 待測點實際值Tab. 1 The actual value of the measurement points
本次測量采用維視圖像的2臺型號為MV-EM120M攝像頭進(jìn)行采集。接著對雙目視覺的攝像機(jī)進(jìn)行標(biāo)定[7],標(biāo)定結(jié)果可展示如下。
左相機(jī)的內(nèi)參矩陣:
右相機(jī)的內(nèi)參矩陣:
左、右兩攝像機(jī)之間的旋轉(zhuǎn)矩陣:


由于攝像機(jī)采集得到的二維圖像包含了各種隨機(jī)噪聲與畸變,這就需要對所得的圖像進(jìn)行預(yù)處理,來改善圖像質(zhì)量。其目的主要有2個:一是改善圖像的視覺效果,提高圖像的清晰度;二是使處理后的圖像便于計算機(jī)的后續(xù)特征分析與提取[8]。
傳統(tǒng)的Canny邊緣檢測算法是一種有效設(shè)計,在大部分情況下可以獲得良好結(jié)果[9]。但是在實際場合中,Canny邊緣也會存在缺陷。本次對工件的測量是基于Matlab設(shè)計展開的,對于Canny算法通常需要指定敏感度閾值參數(shù)的上下限,而對于不同的圖片需要自行選取數(shù)值,如果并未指定閾值參數(shù),Matlab中的該算法會自行確定敏感度閾值的上下限。不同圖像其雙閾值亦會不同,難以選取,選取不當(dāng)會導(dǎo)致邊界丟失;而若不提供選擇,該算法自行確定的雙閾值的結(jié)果也難能盡如人意,會產(chǎn)生邊界丟失等現(xiàn)象。
Sobel邊緣檢測算法比較簡單,在某些實際應(yīng)用中則比Canny邊緣檢測的效率要高[10]。Sobel邊緣檢測通常帶有方向性,可以只檢測豎直邊緣或垂直邊緣,還可都檢測。所以對于規(guī)則的工件,Sobel邊緣檢測成為了研究首選,但在放大后圖像的像素寬度卻顯粗疏,因此為了最后更加精確地測得工件尺寸,就可以對此引入形態(tài)學(xué)運算,將邊緣進(jìn)行一像素化。綜上研究可得,算法運行效果則如圖3、圖4所示。

(a) Sobel算法結(jié)果 (b) 局部放大后
(a) Results of Sobel algorithm (b) Local amplification
圖3Sobel算法邊緣檢測結(jié)果
Fig.3Sobelalgorithmedgedetectionresults

圖4 基于形態(tài)學(xué)運算將邊緣一像素化Fig. 4 Edge unit of a pixel based on morphological operations
對預(yù)處理的圖像進(jìn)行角點檢測便可以得到測量坐標(biāo),可見表2。

表2 使用本文方法計算得到的坐標(biāo)Tab. 2 The coordinates calculated using this method
得到角點的世界坐標(biāo)系之后就可以求得角點之間的距離,便可以用兩點之間的距離來驗證本次測量對于角點的定位精度。其中,研究得到的多個主要方向的測量尺寸可見表3。

表3 使用本文方法與實際值的對比Tab. 3 The comparison of this method and actual value
為了驗證前文結(jié)果精度上的可行性,接著又在后面對傳統(tǒng)的Canny算法設(shè)計嘗試了實驗測量比較研究。同時,將50和100作為Canny算子的雙閾值對工件進(jìn)行測量。
圖像中會存在邊界丟失,效果呈現(xiàn)如圖5所示。
由于Canny存在著邊界丟失,在角點檢測時會產(chǎn)生誤匹配點,故在去除掉誤匹配點后便可以得到如表4所示的坐標(biāo)數(shù)據(jù)以及如表5所示的結(jié)果數(shù)據(jù)。
結(jié)合圖像并由表4、表5分析可以看出2種方法中點B和點E所造成的誤差相對較大,由此推得工件的內(nèi)轉(zhuǎn)角處相對于外轉(zhuǎn)角處較難定位,究其原因主要在于攝像機(jī)分辨率不高以及內(nèi)轉(zhuǎn)角處更為模糊所致。但整體誤差率都未超過5%。研究至此,即證明了采用先通過Sobel算法來檢測邊緣,再使用形態(tài)學(xué)進(jìn)行一像素化來實現(xiàn)工件的雙目測量設(shè)計方法的現(xiàn)實可行性。

(a) 直線上的邊界丟失 (b) 圓上的邊界丟失(a) The boundary missing on the line (b) The boundary missing on the circle圖5 [50,100]作為雙閾值時使用Canny算法存在的邊界丟失
Fig.5Theboundarymissingbyusing[50,100]asdoublethresholdinCannyalgorithm

表4 使用Canny算法計算得到的坐標(biāo)Tab. 4 The coordinates calculated using Canny algorithm

表5 使用Canny算法與實際值的對比Tab. 5 The comparison of Canny algorithm and actual value
實驗表明,相對于傳統(tǒng)Canny算法來進(jìn)行工件的雙目測量,采用先通過Sobel算法來檢測邊緣,再使用形態(tài)學(xué)進(jìn)行一像素化的整體設(shè)計方案,即具有如下研究優(yōu)勢:
(1)計算簡單,速度快。
(2)在精度上也能達(dá)到Canny算法的定位精度。
(3)能較好地提供邊緣圖像,不會出現(xiàn)邊界丟失現(xiàn)象。
通過分析可知,本文的方法存在一定誤差,還有待提高。可以采用分辨率更高的攝像頭,并改善背景環(huán)境和添加光源,使得工件的角點更加明顯,從而使得特征點的檢測定位也更趨精確。
[1] 張錚,徐超,任淑霞, 等. 數(shù)字圖像處理與機(jī)器視覺:Visual C++與Matlab實現(xiàn)[M]. 2版. 北京:人民郵電出版社,2014.
[2] 朱正德,楊虹,方琳,等. 機(jī)器視覺:質(zhì)量監(jiān)控的第三只眼[J] . 現(xiàn)代零部件,2010(10): 56-63.
[3] 劉亞菲. 大型工件焊接雙目視覺測量及精度研究[D]. 上海:華東理工大學(xué),2012.
[4] 肖志濤,張文寅,耿磊,等. 雙目視覺系統(tǒng)測量精度分析[J]. 光電工程,2014,41(2):6-11.
[5] 隋婧,金偉其. 雙目立體視覺技術(shù)的實現(xiàn)及其進(jìn)展[J]. 電子技術(shù)應(yīng)用,2004(10):4-6,12.
[6] 馬頌德,張正友. 計算機(jī)視覺[M]. 北京:科學(xué)出版社,1998.
[7] 楊景豪,劉巍,劉陽,等. 雙目立體視覺測量系統(tǒng)的標(biāo)定[J]. 光學(xué)精密工程,2016,24(2):300-308.
[8] 高宏偉. 計算機(jī)雙目立體視覺[M]. 北京:電子工業(yè)出版社,2012.
[9] 林卉,趙長勝,舒寧. 基于Canny算子的邊緣檢測及評價[J]. 黑龍江工程學(xué)院學(xué)報,2003,17(2):3-6,16.
[10]郭彤穎,陳策. 基于Sobel算子的邊緣檢測算法研究[J]. 科技廣場,2015(2):17-20.