陳曉紅,游林儒,劉少君
(華南理工大學(xué) 自動(dòng)化科學(xué)與工程學(xué)院,廣州 510640)
機(jī)器視覺技術(shù)主要用于機(jī)器人軌跡,自治車輛的導(dǎo)航和自動(dòng)焊接設(shè)備上對(duì)焊的跟蹤。把機(jī)器視覺引入到影像測(cè)量?jī)x的控制過(guò)程,可以提高影像測(cè)量?jī)x的智能性和產(chǎn)品的高技術(shù)含量。影像測(cè)量?jī)x是通過(guò)CCD 獲取被測(cè)物圖像來(lái)進(jìn)行尺寸測(cè)量的裝置,它的應(yīng)用之一是用于測(cè)量數(shù)控機(jī)床加工出來(lái)的零件尺寸,指導(dǎo)數(shù)控系統(tǒng)的加工過(guò)程,如采用數(shù)控雕刻機(jī)和影像測(cè)量?jī)x加工手機(jī)玻璃。玻璃加工過(guò)程如下:通過(guò)影像測(cè)量?jī)x實(shí)現(xiàn)玻璃尺寸的自動(dòng)檢測(cè)并進(jìn)行數(shù)據(jù)分析,然后通過(guò)以太網(wǎng)傳輸至相對(duì)應(yīng)的數(shù)控雕刻機(jī)上,雕刻機(jī)數(shù)控系統(tǒng)接收到數(shù)據(jù)后自動(dòng)設(shè)置相應(yīng)的運(yùn)動(dòng)控制信息,從而實(shí)現(xiàn)玻璃的加工。如圖1 所示。
為了保證玻璃測(cè)量精度,相機(jī)的視野范圍一般無(wú)法包含物體的整個(gè)輪廓。當(dāng)需要知道物體的全部輪廓信息時(shí),就要應(yīng)用到自動(dòng)尋邊的技術(shù)。所謂自動(dòng)尋邊,就是要實(shí)現(xiàn)相機(jī)自動(dòng)尋找被測(cè)物(這里特指玻璃)的邊緣,具體的描述就是:根據(jù)相機(jī)第一次獲得的邊緣圖像,準(zhǔn)確查找出當(dāng)前圖像的邊界,同時(shí)根據(jù)當(dāng)前圖像的邊界信息預(yù)測(cè)出某一方向上圖像邊界的下一步走向,將圖像邊界的下一步信息傳遞給系統(tǒng),系統(tǒng)通過(guò)坐標(biāo)變換和運(yùn)動(dòng)控制將相機(jī)移動(dòng)到相應(yīng)的位置上,然后再重復(fù)上一步的動(dòng)作,以此類推,直到相機(jī)遍歷完圖像的整個(gè)邊界。自動(dòng)尋邊的核心是對(duì)路徑進(jìn)行提取和跟蹤。跟蹤算法有很多,如文獻(xiàn)[1]是采用粒子濾波和Mean-shift 相結(jié)合的混合跟蹤算法,文獻(xiàn)[2]采用卡爾曼濾波算法進(jìn)行預(yù)測(cè)跟蹤,而文獻(xiàn)[3]采用“切向跟蹤,法向靠近”的軌線跟蹤算法。根據(jù)工業(yè)生產(chǎn)實(shí)時(shí)性的要求,本文在“切向跟蹤,法向靠近”算法的基礎(chǔ)上,提出了改進(jìn)的切向跟蹤算法。在手機(jī)玻璃生產(chǎn)過(guò)程中,自動(dòng)尋邊算法的研究具有很強(qiáng)的實(shí)用價(jià)值,它不僅使得影像測(cè)量?jī)x可以快速地測(cè)量玻璃的尺寸信息,還是對(duì)玻璃邊緣崩邊檢測(cè)的前提,可以極大地提高玻璃產(chǎn)品的質(zhì)量。
圖1 數(shù)控雕刻機(jī)與影像測(cè)量?jī)x
手機(jī)玻璃的生產(chǎn)對(duì)尺寸和瑕疵檢測(cè)精度要求都很高,為了保證產(chǎn)品質(zhì)量和生產(chǎn)效率,必須采用自動(dòng)尋邊技術(shù)。要實(shí)現(xiàn)影像測(cè)量?jī)x的自動(dòng)尋邊,關(guān)鍵是要研究如何準(zhǔn)確地獲取玻璃的邊緣信息。利用數(shù)字圖像處理技術(shù),采用濾波、邊緣檢測(cè)和跟蹤等算法對(duì)獲得的圖像進(jìn)行處理,可有效地提取玻璃的邊緣信息,并根據(jù)要求對(duì)邊緣信息進(jìn)行矢量化處理,將處理后的信息傳遞給數(shù)控機(jī)床。
由于成像環(huán)境的不同,從圖像的獲取、傳輸?shù)教幚淼母鱾€(gè)環(huán)節(jié)都會(huì)有噪聲的干擾。因此,在對(duì)圖像進(jìn)行處理前必須進(jìn)行濾波預(yù)處理,它是后續(xù)進(jìn)行邊緣檢測(cè)、分割、識(shí)別和其它處理的前提[4],也是為自動(dòng)尋邊系統(tǒng)提供準(zhǔn)確邊緣信息的保證。
多數(shù)線性濾波方法都具有低通特性,在去除噪聲的同時(shí)也使圖像的邊緣變得模糊,因此采用非線性濾波方法——中值濾波來(lái)濾除噪聲。中值濾波是指將以某點(diǎn)(x,y)為中心的小窗口內(nèi)所有像素的灰度按單調(diào)上升(或下降)進(jìn)行排序,并以排序后的中間值作為(x,y)處的灰度值。它對(duì)脈沖干擾及椒鹽噪聲的抑制效果較好,且在抑制噪聲的同時(shí)能有效防止邊緣模糊。但考慮到在較惡劣的成像環(huán)境下,單純使用中值濾波并不能很好地濾除噪聲。根據(jù)圖像中的噪聲一般都為孤立噪聲的特點(diǎn),提出采用中值濾波結(jié)合形態(tài)學(xué)濾波的方法來(lái)消除噪聲。形態(tài)學(xué)的基本運(yùn)算是膨脹和腐蝕。腐蝕可以把小于結(jié)構(gòu)元素的物體(如毛刺,小凸起)去除。選取不同大小的結(jié)構(gòu)元素,就可以在原圖像中去掉不同大小的物體。但是,結(jié)構(gòu)元素越大,計(jì)算量就越大。為了既能減少計(jì)算量,又能取得較好的濾波效果,采用3* 3 的方形結(jié)構(gòu)元素,并進(jìn)行3 次腐蝕操作。
采用這種雙結(jié)合的濾波方法比單一采用某種方法的效果更為出色,濾波效果對(duì)比如圖2 所示。
圖2 濾波效果對(duì)比圖
為了實(shí)現(xiàn)對(duì)玻璃邊緣線的準(zhǔn)確跟蹤,需要取得邊緣路徑的特征點(diǎn),即獲取邊緣的中心線。常用的提取中心線的算法有:①基于模板提取光條的骨架:如方向模板法、細(xì)化;②提取光條的幾何中心法:如閾值法、逐行搜索法等[5]。其中,細(xì)化處理法實(shí)際是一種求圖像骨架的過(guò)程,形態(tài)學(xué)中軸變換就是提取圖像骨架的一種運(yùn)算方法。中軸變換可以形象地描述為:設(shè)想在t = 0 時(shí)刻,將目標(biāo)邊界各處點(diǎn)燃,火的前沿以勻速向目標(biāo)內(nèi)部蔓延,當(dāng)前沿相交時(shí)火焰熄滅,火焰熄滅點(diǎn)的集合就構(gòu)成了中軸[6]。二值圖像的形態(tài)學(xué)骨架是通過(guò)選定合適的結(jié)構(gòu)元素對(duì)圖像進(jìn)行連續(xù)腐蝕和開運(yùn)算來(lái)求得的。利用中軸變換實(shí)現(xiàn)細(xì)化是非常耗時(shí)的,它不得不遍歷對(duì)象的每一個(gè)像素。如果選取的模板的形狀不適當(dāng)?shù)脑?,就?huì)導(dǎo)致細(xì)化后的圖像線條出現(xiàn)分叉,還會(huì)帶來(lái)計(jì)算量的增加。因此,針對(duì)以上出現(xiàn)的問(wèn)題,采用改進(jìn)的行列交叉搜索法來(lái)提取中心線。
首先對(duì)經(jīng)過(guò)濾波處理后的圖像進(jìn)行閾值化和CANNY 邊緣檢測(cè),邊緣檢測(cè)后提取出的線條邊緣為單像素。傳統(tǒng)的逐行搜索法是直接搜索同一行邊緣線的左右兩個(gè)邊緣點(diǎn),然后再求取這兩個(gè)邊緣點(diǎn)的坐標(biāo)中心點(diǎn),以此類推,直到搜索完整幅圖像,所有中心點(diǎn)的集合即為中心線[7]。當(dāng)邊緣線都是直線的情況下,采用該方法可以得到較好的效果,然而當(dāng)邊緣線是曲線的話,在拐彎處就會(huì)出現(xiàn)畸變,從而影響后續(xù)的方向和切線判斷。
本文提出改進(jìn)的逐行搜索法,即行列交叉搜索法,不管是直線還是曲線,都能很好地提取出中心線。由于軌線在攝像機(jī)視窗內(nèi)的模式有很多種,不同的模式需要用不同的方式進(jìn)行掃描。通過(guò)對(duì)視窗內(nèi)的圖像的大量觀測(cè),根據(jù)圖像與邊緣的交點(diǎn)情況可以分為如圖3 所示16 種模式:
圖3 邊界線的16 種模式
第一種和第二種情況相對(duì)比較簡(jiǎn)單,前者采用逐列搜索法,后者采用逐行搜索法即可。而對(duì)于第三種情況,可以采用以下方式進(jìn)行搜索。
圖4 中心線提取分析圖
(2)從第一行開始到A 點(diǎn)所在的行采用逐行搜索法,分別掃描獲取左右兩個(gè)邊緣點(diǎn),從而可得到每一行的中心點(diǎn)。
(3)從第一列開始到C 點(diǎn)所在的列采取逐列搜索法,分別掃描獲取上下兩個(gè)邊緣點(diǎn),從而可得到每一列的中心點(diǎn)。
(4)將這兩部分搜索得到的點(diǎn)集合起來(lái),就可以得到完整的邊緣中心線了,圖5 兩種方法提取的中心線對(duì)比圖。
第四種情況跟第三種情況類似,只需將首次搜索的列改為最后一列。其它幾種模式可參照這兩種模式進(jìn)行搜索,以此類推。
行列交叉搜索法的關(guān)鍵是要找出恰當(dāng)?shù)男辛蟹纸琰c(diǎn)。這種方法雖然要考慮多種情況,但它的操作簡(jiǎn)單,計(jì)算量小,效率高并且所得的中心線能夠很好地體現(xiàn)邊緣信息。
圖5 中心線提取對(duì)比圖
提取了中心線之后,接下來(lái)就是要對(duì)邊緣的走向進(jìn)行跟蹤和預(yù)測(cè)。跟蹤方向和跟蹤步長(zhǎng)的確定是跟蹤算法的兩個(gè)關(guān)鍵點(diǎn)。一般情況下在相機(jī)的視場(chǎng)中,邊緣中心線與圖像窗口邊緣有兩個(gè)交點(diǎn),如圖6所示。當(dāng)相機(jī)獲取第一幅圖像時(shí),可以選取任一交點(diǎn)(圖中選點(diǎn)N)作為相機(jī)運(yùn)動(dòng)的指引點(diǎn),同時(shí)設(shè)該點(diǎn)到相機(jī)視場(chǎng)中心點(diǎn)O 的向量為初始方向向量n0。此后每獲得一幅圖像,都要計(jì)算中心線與視場(chǎng)邊緣的交點(diǎn)以及交點(diǎn)到相機(jī)中心點(diǎn)O 的向量,若該向量與前一向量nm-1的方向夾角θ 小于或等于90°的話,則該方向是相機(jī)前進(jìn)的方向,將該向量?jī)?chǔ)存為當(dāng)前向量nm,以此類推。明確了相機(jī)的走向之后,為了確保每次獲得的邊緣信息都盡量處于圖像的中心位置,還需要根據(jù)中心線的切線方向來(lái)確定下一步相機(jī)中心點(diǎn)的具體位置。
圖6 路徑跟蹤方向分析圖
為了獲得切線方程,必須先通過(guò)曲線擬合的方法得到中心線的方程。常用的曲線擬合方法是用多項(xiàng)式進(jìn)行最小二乘擬合。如取φ0= 1,φ1= x,…,φm= xm,即取{1,x,…,xm}為基函數(shù)的代數(shù)多項(xiàng)式擬合時(shí),則相應(yīng)的正規(guī)方程組[8]為:
只要逐個(gè)計(jì)算出方程組的系數(shù)矩陣和右端頂?shù)母鱾€(gè)元素,就可以形成正規(guī)方程組,然后求出正規(guī)方程組的解a0,a1,…,am,就可得到擬合多項(xiàng)式:
由于實(shí)驗(yàn)中采用的攝像機(jī)的視場(chǎng)范圍為5mm* 4mm,即視場(chǎng)范圍較小,玻璃的邊緣線不會(huì)出現(xiàn)劇烈的變化,可以采用二次多項(xiàng)式來(lái)近似地?cái)M合中心線。那么上述方程組可簡(jiǎn)化為:
將中心線上的點(diǎn)代入到方程中,就可以求出方程的系數(shù)a0,a1和a2,則中心線的擬合多項(xiàng)式為:
文獻(xiàn)[7]中是采用“切向跟蹤,法向靠近”原則,然而該方法用在自動(dòng)尋邊上的效率很低。因?yàn)樗枰闅v軌線上的每一個(gè)像素點(diǎn),而自動(dòng)尋邊只需要確保物體的全部輪廓信息通過(guò)拍攝多幅連續(xù)的圖像能夠拼接起來(lái)即可。這里涉及到一個(gè)關(guān)鍵問(wèn)題,就是當(dāng)前圖像與下一張圖像之間必須是連續(xù)的,并且兩張圖像的重復(fù)部分應(yīng)該盡量少,即圖像的銜接問(wèn)題。下面提出一種改進(jìn)的切向跟蹤法來(lái)實(shí)現(xiàn)軌線的跟蹤。
已知中心線Q 的擬合多項(xiàng)式為式(4),設(shè)點(diǎn)M(x0,y0)是Q 上任意一點(diǎn)。記f(x)= (x,y),由向量值函數(shù)的導(dǎo)向量的幾何意義可知,向量T = f'(x0)就是曲線Q 在點(diǎn)M 處的一個(gè)切向量,從而曲線Q 在點(diǎn)M處的切線方程為:
整理可得點(diǎn)M 處的切線方程為:
為了保證前后兩幅圖像是連續(xù)的,必須確保兩幅圖像的首尾銜接處留有一定的余量,即點(diǎn)M 的取值必須盡量靠近邊緣但又不能偏離邊緣。通過(guò)觀察大量的圖像可知,邊緣線的走向可分為以下四種情況:從左往右,從右往左,由上往下,由下往上。首先分析第一種情況,假設(shè)相機(jī)的運(yùn)動(dòng)方向是從左向右,且圖像的長(zhǎng)和寬分別為H 和W,如圖7 所示,令:
圖7 中心點(diǎn)預(yù)測(cè)分析圖
自動(dòng)尋邊結(jié)束的標(biāo)志是相機(jī)遍歷完玻璃的整個(gè)輪廓,即當(dāng)相機(jī)的當(dāng)前位置與初始位置的距離小于某一閾值(可設(shè)為)時(shí),則可認(rèn)為是自動(dòng)尋邊結(jié)束的標(biāo)志。
基于以上算法,整個(gè)自動(dòng)尋邊圖像處理和控制系統(tǒng)軟件是在linux ubuntu10.04 系統(tǒng)平臺(tái)上,采用Opencv 結(jié)合C 語(yǔ)言開發(fā)完成。軟件工作流程圖如圖8 所示。
圖8 軟件工作流程圖
圖9 操作平臺(tái)及界面圖
首先利用圖像采集卡獲取當(dāng)前玻璃圖像,根據(jù)一定的算法進(jìn)行圖像處理,自動(dòng)尋找玻璃圖像的邊緣信息。在這個(gè)過(guò)程中根據(jù)需要對(duì)玻璃進(jìn)行尺寸測(cè)量和崩邊檢測(cè)。然后根據(jù)邊緣信息預(yù)測(cè)相機(jī)中心的下一步位置信息,再進(jìn)行坐標(biāo)轉(zhuǎn)換,把圖像坐標(biāo)轉(zhuǎn)換為實(shí)際坐標(biāo)。最后把位置信息傳遞給影像測(cè)量?jī)x運(yùn)動(dòng)控制系統(tǒng),作為控制參數(shù)引導(dǎo)攝像機(jī)進(jìn)行移動(dòng),操作平臺(tái)及界面如圖9 所示。用該軟件實(shí)現(xiàn)對(duì)100mm* 50mm 的玻璃進(jìn)行試驗(yàn),當(dāng)遍歷完整個(gè)輪廓,其操作時(shí)間為2.67s。而采用傳統(tǒng)算法,即采用中軸變換和切向跟蹤算法進(jìn)行尋邊,所需時(shí)間達(dá)到34s??梢?,與傳統(tǒng)算法相比,改進(jìn)的尋邊算法地速度更快,并且在遍歷過(guò)程中沒有出現(xiàn)漏檢測(cè),圖像的首尾銜接性很好,能夠完整、高效地反映物體的輪廓信息。實(shí)驗(yàn)對(duì)比表明,采用改進(jìn)的行列交叉搜索法和切向跟蹤法可以更加快速、準(zhǔn)確地進(jìn)行自動(dòng)尋邊,可以更加高效率地為數(shù)控雕刻機(jī)提供精確的運(yùn)動(dòng)控制信息,符合影像測(cè)量?jī)x智能性和工業(yè)生產(chǎn)實(shí)時(shí)性的要求。
[1]蔣旻,許勤,尚濤. 粒子濾波和Mean-shift 的跟蹤算法[J]. 計(jì)算機(jī)工程,2010,36(5):21-22.
[2]仲訓(xùn)杲. 激光焊接路徑跟蹤卡爾曼濾波預(yù)測(cè)算法研究[D]. 廣州:廣東工業(yè)大學(xué),2011.
[3]徐世杰. 基于機(jī)器視覺的二維圖紙線條跟蹤的研究[D]. 哈爾濱:哈爾濱工程大學(xué),2004.
[4]鐘平,陳益民,張偉. 基于機(jī)器視覺激光切割自動(dòng)尋邊技術(shù)研究[J]. 紡織高校基礎(chǔ)科學(xué)學(xué)報(bào),2006,19(4):394-397.
[5]熊會(huì)元,宗志堅(jiān),高群. 精確提取線結(jié)構(gòu)光條紋中心方法[J]. 計(jì)算機(jī)工程與應(yīng)用,2009,45(10):235-237.
[6]江萍,徐曉冰,方敏. 基于形態(tài)學(xué)骨架提取算法的研究及其實(shí)現(xiàn)[J]. 計(jì)算機(jī)應(yīng)用,2003(23):136-137.
[7]孫宏偉. 基于鏈碼的視覺軌線跟蹤[D]. 哈爾濱:哈爾濱工程大學(xué),2009.
[8]李紅. 數(shù)值分析[M]. 武漢:華中科技大學(xué)出版社,2003.