趙瑞朋, 李炎炎, 龍偉, 覃宏超
(四川大學制造科學與工程學院,成都 610065)
自動化、智能化早已成為機械加工行業(yè)的發(fā)展方向,在對目標物體進行自動加工程序規(guī)劃前,需要獲得目標物體的完整輪廓信息[1]。攝像機獲取的目標物體圖像經(jīng)過二值化處理后得到的輪廓邊緣是粗糙、不規(guī)整的,直接對其進行輪廓檢測,得到的輪廓信息不便于直接開展自動加工程序規(guī)劃。需要對圖像中的物體的粗糙直邊進行平直化處理和近似直線的曲邊緣進行直線化處理,以便對目標物體進行自動加工程序規(guī)劃,提高加工質量和精度。
角點是圖像局部特征之一,角點是二維圖像亮度變化較劇烈的點或者是圖像邊緣曲率為極大值的點[2]。角點具有旋轉不變的特性以及不隨光照條件而變化的特性。它在保留原圖像的基本特征外還有效減少了圖像信息的數(shù)據(jù)量[3]。近三十多年來,研究者們對于角點檢測提出了不同的方法。
Moravec[4]提出了一種利用灰度方差提取特征點的算法。其算法簡單,但其計算量大,運行緩慢,同時誤檢率較高;Kitchen和Rosenfeld[5]提出利用微積分幾何算子對圖像每一個像素點進行一次角點測度。將得到的度量值和標定值進行大小關系比較來判斷該點是否為角點;Wang[6]提出了一個用作運動估計的流行角點檢測算子,使用微分算子對灰度曲面的曲率進行計算,從而檢測出角點;Beaudet[7]通過通過對圖像函數(shù)二階導數(shù)進行泰勒展開,得到Hessian矩陣H(x,y),因為該矩陣具有旋轉不變性,所以可以直接從灰度圖像中提取角點;SUSAN算法利用圓形模板領域的像素灰度與其圓心的相似性計算出角點響應的函數(shù)值,根據(jù)提前設定好的閾值,可以把響應函數(shù)的局部最大值點作為角點[8]。此算法過程未涉及到圖像導數(shù),所以具有較強的抗噪能力,但設定閾值不適用于一般情況。
為了解決二維圖像中的物體的粗糙直邊進行平直化處理和近似直線的曲邊緣進行直線化處理,本文首先對二值化后的圖像利用八鄰域輪廓跟蹤算法獲取按一定順序排列二維圖像邊緣的坐標集合[9],然后使用Harris角點檢測得出圖像的角點集合[10]。再求取兩集合的交集得出按一定順序排列的角坐標。進而計算起始角點與結束角點連線與起始角點和兩角點間輪廓的中點的連線的夾角是否小于給定值來判斷為原圖像兩角點的連線是否直線。最后利用“兩點一線”原理把二維圖像邊緣平直化。通過大量實驗證明,本文的算法對于二維圖像邊緣平直化不僅有著非常好的效果,而且處理速度快,具有實時性、魯棒性和實用性。
圖像識別效率是極其關鍵的問題,因此本文提出了一種八領域輪廓跟蹤算法獲取圖像邊緣坐標。該算法不但可以檢測出各種復雜形狀的連通體,而且速度更快。該算法可以獲得邊緣的所有點坐標以及邊界鏈碼。
設點p(x,y)為物體的同一個邊界點,則p(x,y)的下一個邊界點必在其八領域內(nèi),所以可以根據(jù)八領域信息進行邊緣跟蹤:首先找到位于物體左上角的一個邊界點作為搜索起點,按逆時針方向,自上而下,從左到右,搜索其八領域,找到下一邊界,然后以此邊界點為當前點繼續(xù)搜索,這一搜索過程不斷重復下去,直至搜索回到搜索起點。具體實現(xiàn)首先要分割圖像,抽取邊界的Freeman鏈碼[11],F(xiàn)reeman鏈碼使用了八個方向碼作為8個領接點的定義,由曲線起始點a1到終點an的,整個二維圖像邊緣就可以用鏈碼的序列A=a1a2a3…an來表示出來。因此便獲得了圖像邊緣的所有坐標,并且這些邊緣坐標具有一定的方向性,是逆時針方向排列的[12]。雖然八領域輪廓跟蹤算法得出了二維圖像的所有邊緣坐標,但并非獲取圖像的角點坐標,所以要用Harris角點檢測獲取圖像的角點坐標。
當一個正方形窗口在二維圖像上平移時,在平滑區(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],近似表達式為
其中M是2×2矩陣,可由圖像的導數(shù)求得矩陣:
其中:I(x,y)是亮度值,在這里用灰度值來表示;Ix為圖像I在x方向的梯度;Iy為圖像I在y方向的梯度。通過對矩陣M的分析,可以得出如果在某一點矩陣M的兩個特征值都很大,那么在該點任意方向上的一個微小平移都會引起響應灰度值的較大改變[13]。從而可以判斷該點就是檢測到的一個角點。
在矩陣M基礎上,可以把響應函數(shù)CRF定義為:
其中:det為矩陣M的行列式;trace為矩陣M的跡,也就是矩陣對角線元素的和;k為常數(shù),一般取0.04。
我們將CRF局部極大值所在的點定義為角點。然而使用Harris角點檢測法獲取的角點是亂序的。邊緣平直化需要每兩個角點坐標是連續(xù)的。所以還需要得到按一定順序排列的所有角點坐標。
使用Harris角點檢測只獲取了圖像的角點,設這些角點組成的集合為E1,并且E1中角點是無序的。因為進行二維圖像邊緣平直化過程中需要依次按一定順序連接角點[14];而使用八領域輪廓跟蹤算法獲取了圖像所有邊緣坐標,設所有邊緣坐標組成的集合為E2,并且E2集合中所有邊緣元素是按一定順序排列的。根據(jù)集合的意義可得,按一定順序排列的所有角點坐標集合E=E1∩E2={k1,k2,k3,…,kn}。
設連續(xù)兩角點Kn(xn,yn)和Kn+1(xn+1,yn+1),設兩角點間實際輪廓的中點為K(x,y),則由坐標Kn,Kn+1組成的向量為α=(xn+1-xn,yn+1-yn),則由坐標Kn、Kn+1組成的向量為β=(x-xn,y-yn),則由向量的夾角公式得:
設定閾值t=cos15°,當cos〈α,β〉∈[t,1]時,則默認兩角點之間為直線,根據(jù)“兩點一線”原理,直接連接兩點,兩點之間的連線就是該輪廓的邊緣[15]。當cos〈α,β〉[t,1]時,則保留原輪廓的邊緣。依次對k1、k2、k2、k3…kn、k1進行上述操作,進而完成二維圖像的邊緣平直化處理。
圖4 輪廓近似直線處理
本文算法解決二維圖像快速邊緣平直化問題,將本算法應用到實際圖像中。圖5和圖6是原圖,圖7和圖8是原圖經(jīng)過二值化處理后的圖像,圖中物體的輪廓邊緣是粗糙的,不平整的,直接利用八鄰域輪廓跟蹤算法進行輪廓檢測,得到的輪廓邊緣也是粗糙不平整的,如圖9和圖10所示,紅線為輪廓跟蹤算法檢測出來的輪廓。經(jīng)過本算法處理后的圖像如圖11和圖12所示,本算法很好地將物體輪廓(包括內(nèi)輪廓)中粗糙直邊緣平直化,其余輪廓保留下來。圖6矩形的左邊輪廓和圖10物體的下邊輪廓是近似直線的,本算法也能將其檢測出來并將其平直化,獲得平直的輪廓。
圖5
圖6
圖7
圖8
圖9
圖10
圖11
圖12
本文首先對二值化后的圖像利用八鄰域輪廓跟蹤算法獲取按一定順序排列二維圖像邊緣的坐標集合,然后使用Harris角點檢測得出圖像的角點集合。再求取兩集合的交集得出按一定順序排列的角坐標。進而判斷起始角點與結束角點連線與起始角點和兩角點間輪廓的中點的連線的夾角的余弦值。最后利用“兩點一線”原理對邊緣進行平直化。大量實驗表明,本文算法是有效的,平直化效果好,處理速度快。本算法適用于國內(nèi)外廣泛應用于汽車家具等產(chǎn)品涂裝生產(chǎn)線的噴涂機器人,使其對待噴涂物體的噴涂軌跡自動規(guī)劃,進一步實現(xiàn)噴涂機器人的自動化和智能化。