趙瑞朋, 李炎炎, 龍偉, 覃宏超
(四川大學(xué)制造科學(xué)與工程學(xué)院,成都 610065)
自動化、智能化早已成為機(jī)械加工行業(yè)的發(fā)展方向,在對目標(biāo)物體進(jìn)行自動加工程序規(guī)劃前,需要獲得目標(biāo)物體的完整輪廓信息[1]。攝像機(jī)獲取的目標(biāo)物體圖像經(jīng)過二值化處理后得到的輪廓邊緣是粗糙、不規(guī)整的,直接對其進(jìn)行輪廓檢測,得到的輪廓信息不便于直接開展自動加工程序規(guī)劃。需要對圖像中的物體的粗糙直邊進(jìn)行平直化處理和近似直線的曲邊緣進(jìn)行直線化處理,以便對目標(biāo)物體進(jìn)行自動加工程序規(guī)劃,提高加工質(zhì)量和精度。
角點是圖像局部特征之一,角點是二維圖像亮度變化較劇烈的點或者是圖像邊緣曲率為極大值的點[2]。角點具有旋轉(zhuǎn)不變的特性以及不隨光照條件而變化的特性。它在保留原圖像的基本特征外還有效減少了圖像信息的數(shù)據(jù)量[3]。近三十多年來,研究者們對于角點檢測提出了不同的方法。
Moravec[4]提出了一種利用灰度方差提取特征點的算法。其算法簡單,但其計算量大,運行緩慢,同時誤檢率較高;Kitchen和Rosenfeld[5]提出利用微積分幾何算子對圖像每一個像素點進(jìn)行一次角點測度。將得到的度量值和標(biāo)定值進(jìn)行大小關(guān)系比較來判斷該點是否為角點;Wang[6]提出了一個用作運動估計的流行角點檢測算子,使用微分算子對灰度曲面的曲率進(jìn)行計算,從而檢測出角點;Beaudet[7]通過通過對圖像函數(shù)二階導(dǎo)數(shù)進(jìn)行泰勒展開,得到Hessian矩陣H(x,y),因為該矩陣具有旋轉(zhuǎn)不變性,所以可以直接從灰度圖像中提取角點;SUSAN算法利用圓形模板領(lǐng)域的像素灰度與其圓心的相似性計算出角點響應(yīng)的函數(shù)值,根據(jù)提前設(shè)定好的閾值,可以把響應(yīng)函數(shù)的局部最大值點作為角點[8]。此算法過程未涉及到圖像導(dǎo)數(shù),所以具有較強(qiáng)的抗噪能力,但設(shè)定閾值不適用于一般情況。
為了解決二維圖像中的物體的粗糙直邊進(jìn)行平直化處理和近似直線的曲邊緣進(jìn)行直線化處理,本文首先對二值化后的圖像利用八鄰域輪廓跟蹤算法獲取按一定順序排列二維圖像邊緣的坐標(biāo)集合[9],然后使用Harris角點檢測得出圖像的角點集合[10]。再求取兩集合的交集得出按一定順序排列的角坐標(biāo)。進(jìn)而計算起始角點與結(jié)束角點連線與起始角點和兩角點間輪廓的中點的連線的夾角是否小于給定值來判斷為原圖像兩角點的連線是否直線。最后利用“兩點一線”原理把二維圖像邊緣平直化。通過大量實驗證明,本文的算法對于二維圖像邊緣平直化不僅有著非常好的效果,而且處理速度快,具有實時性、魯棒性和實用性。
圖像識別效率是極其關(guān)鍵的問題,因此本文提出了一種八領(lǐng)域輪廓跟蹤算法獲取圖像邊緣坐標(biāo)。該算法不但可以檢測出各種復(fù)雜形狀的連通體,而且速度更快。該算法可以獲得邊緣的所有點坐標(biāo)以及邊界鏈碼。
設(shè)點p(x,y)為物體的同一個邊界點,則p(x,y)的下一個邊界點必在其八領(lǐng)域內(nèi),所以可以根據(jù)八領(lǐng)域信息進(jìn)行邊緣跟蹤:首先找到位于物體左上角的一個邊界點作為搜索起點,按逆時針方向,自上而下,從左到右,搜索其八領(lǐng)域,找到下一邊界,然后以此邊界點為當(dāng)前點繼續(xù)搜索,這一搜索過程不斷重復(fù)下去,直至搜索回到搜索起點。具體實現(xiàn)首先要分割圖像,抽取邊界的Freeman鏈碼[11],F(xiàn)reeman鏈碼使用了八個方向碼作為8個領(lǐng)接點的定義,由曲線起始點a1到終點an的,整個二維圖像邊緣就可以用鏈碼的序列A=a1a2a3…an來表示出來。因此便獲得了圖像邊緣的所有坐標(biāo),并且這些邊緣坐標(biāo)具有一定的方向性,是逆時針方向排列的[12]。雖然八領(lǐng)域輪廓跟蹤算法得出了二維圖像的所有邊緣坐標(biāo),但并非獲取圖像的角點坐標(biāo),所以要用Harris角點檢測獲取圖像的角點坐標(biāo)。
當(dāng)一個正方形窗口在二維圖像上平移時,在平滑區(qū)域如圖1,窗口在各個方向上沒有變化。在圖像邊緣線上(如圖2),窗口在邊緣的方向上沒有變化。在角點處(如圖3),窗口在各個方向上具有變化。Harris角點檢測正是利用了這個直觀的物理現(xiàn)象,通過窗口在各個方向上的變化程度,決定是否為角點。

圖1 在平滑區(qū)域

圖2 在邊緣線上

圖3 在角點上
將圖像窗口平移[u,v]產(chǎn)生灰度變化E(u,v),由I(x+μ,y+ν)=I(x,y)+IXμ+IYν+O(μ2,ν2)得到:

對于局部微小的移動量[u,v],近似表達(dá)式為

其中M是2×2矩陣,可由圖像的導(dǎo)數(shù)求得矩陣:

其中:I(x,y)是亮度值,在這里用灰度值來表示;Ix為圖像I在x方向的梯度;Iy為圖像I在y方向的梯度。通過對矩陣M的分析,可以得出如果在某一點矩陣M的兩個特征值都很大,那么在該點任意方向上的一個微小平移都會引起響應(yīng)灰度值的較大改變[13]。從而可以判斷該點就是檢測到的一個角點。
在矩陣M基礎(chǔ)上,可以把響應(yīng)函數(shù)CRF定義為:

其中:det為矩陣M的行列式;trace為矩陣M的跡,也就是矩陣對角線元素的和;k為常數(shù),一般取0.04。
我們將CRF局部極大值所在的點定義為角點。然而使用Harris角點檢測法獲取的角點是亂序的。邊緣平直化需要每兩個角點坐標(biāo)是連續(xù)的。所以還需要得到按一定順序排列的所有角點坐標(biāo)。
使用Harris角點檢測只獲取了圖像的角點,設(shè)這些角點組成的集合為E1,并且E1中角點是無序的。因為進(jìn)行二維圖像邊緣平直化過程中需要依次按一定順序連接角點[14];而使用八領(lǐng)域輪廓跟蹤算法獲取了圖像所有邊緣坐標(biāo),設(shè)所有邊緣坐標(biāo)組成的集合為E2,并且E2集合中所有邊緣元素是按一定順序排列的。根據(jù)集合的意義可得,按一定順序排列的所有角點坐標(biāo)集合E=E1∩E2={k1,k2,k3,…,kn}。
設(shè)連續(xù)兩角點Kn(xn,yn)和Kn+1(xn+1,yn+1),設(shè)兩角點間實際輪廓的中點為K(x,y),則由坐標(biāo)Kn,Kn+1組成的向量為α=(xn+1-xn,yn+1-yn),則由坐標(biāo)Kn、Kn+1組成的向量為β=(x-xn,y-yn),則由向量的夾角公式得:

設(shè)定閾值t=cos15°,當(dāng)cos〈α,β〉∈[t,1]時,則默認(rèn)兩角點之間為直線,根據(jù)“兩點一線”原理,直接連接兩點,兩點之間的連線就是該輪廓的邊緣[15]。當(dāng)cos〈α,β〉[t,1]時,則保留原輪廓的邊緣。依次對k1、k2、k2、k3…kn、k1進(jìn)行上述操作,進(jìn)而完成二維圖像的邊緣平直化處理。

圖4 輪廓近似直線處理
本文算法解決二維圖像快速邊緣平直化問題,將本算法應(yīng)用到實際圖像中。圖5和圖6是原圖,圖7和圖8是原圖經(jīng)過二值化處理后的圖像,圖中物體的輪廓邊緣是粗糙的,不平整的,直接利用八鄰域輪廓跟蹤算法進(jìn)行輪廓檢測,得到的輪廓邊緣也是粗糙不平整的,如圖9和圖10所示,紅線為輪廓跟蹤算法檢測出來的輪廓。經(jīng)過本算法處理后的圖像如圖11和圖12所示,本算法很好地將物體輪廓(包括內(nèi)輪廓)中粗糙直邊緣平直化,其余輪廓保留下來。圖6矩形的左邊輪廓和圖10物體的下邊輪廓是近似直線的,本算法也能將其檢測出來并將其平直化,獲得平直的輪廓。

圖5

圖6

圖7

圖8

圖9

圖10

圖11

圖12
本文首先對二值化后的圖像利用八鄰域輪廓跟蹤算法獲取按一定順序排列二維圖像邊緣的坐標(biāo)集合,然后使用Harris角點檢測得出圖像的角點集合。再求取兩集合的交集得出按一定順序排列的角坐標(biāo)。進(jìn)而判斷起始角點與結(jié)束角點連線與起始角點和兩角點間輪廓的中點的連線的夾角的余弦值。最后利用“兩點一線”原理對邊緣進(jìn)行平直化。大量實驗表明,本文算法是有效的,平直化效果好,處理速度快。本算法適用于國內(nèi)外廣泛應(yīng)用于汽車家具等產(chǎn)品涂裝生產(chǎn)線的噴涂機(jī)器人,使其對待噴涂物體的噴涂軌跡自動規(guī)劃,進(jìn)一步實現(xiàn)噴涂機(jī)器人的自動化和智能化。