宋國堃,何文馨,吳銳
(四川大學(xué),四川成都610065)
圖像配準(zhǔn)以及圖像比對的產(chǎn)品缺陷在線檢測方法廣泛運(yùn)用于生產(chǎn)實(shí)踐,比如印刷品檢測,零件表面缺陷檢測,PCB檢測等。本項(xiàng)目利用COM組件將Matlab與VB混合編程,既利用了Matlab強(qiáng)大的數(shù)據(jù)分析能力,又利用了VB良好的可視化編程能力,以圖像配準(zhǔn)和圖像比對為產(chǎn)品合格判斷方法,實(shí)現(xiàn)了全自動(dòng)的產(chǎn)品合格分選。
項(xiàng)目搭建了一個(gè)基于CCD傳感器的生產(chǎn)線自動(dòng)分選系統(tǒng)模型,圓柱形產(chǎn)品模型由步進(jìn)電機(jī)帶動(dòng)的送料機(jī)構(gòu),經(jīng)光電開關(guān)由單片機(jī)精確定時(shí)后停在CCD攝像頭焦平面位置;VB驅(qū)動(dòng)攝像頭對產(chǎn)品進(jìn)行拍照取樣,并通過COM組建,調(diào)用Matlab對拍攝圖像進(jìn)行處理和分析,得到產(chǎn)品是否合格;之后系統(tǒng)繼續(xù)運(yùn)行,VB通過產(chǎn)品合格與否信息,給單片機(jī)相關(guān)端口相應(yīng)信號進(jìn)而控制電磁閥以驅(qū)動(dòng)分選機(jī)構(gòu)做出不同的動(dòng)作,從而實(shí)現(xiàn)對產(chǎn)品的全自動(dòng)分選。整個(gè)系統(tǒng)結(jié)構(gòu)設(shè)計(jì)簡潔,動(dòng)作流暢,利用VB開發(fā)的操作界面人機(jī)交互性好,以Matlab2010a作為圖像處理和分析核心,系統(tǒng)穩(wěn)定性好,分選效率高,具有一定分選精度。
經(jīng)廣泛調(diào)研,為充分保障系統(tǒng)的推廣性,項(xiàng)目檢測指標(biāo)為圓柱形工件端面邊緣缺陷。圖像處理與分析算法的方法是:首先在工控機(jī)中存入一張產(chǎn)品的標(biāo)準(zhǔn)二值圖像,標(biāo)準(zhǔn)圖像拍攝環(huán)境與待檢品圖像拍攝環(huán)境一致;得到待檢品圖像,將其以與標(biāo)準(zhǔn)圖像相同的算法轉(zhuǎn)化為二值圖像并與標(biāo)準(zhǔn)圖像進(jìn)行圖像減運(yùn)算得到結(jié)果圖像;統(tǒng)計(jì)結(jié)果圖像非0像素?cái)?shù),當(dāng)像素?cái)?shù)小于誤差容限值則判斷產(chǎn)品合格,反之不合格。圖1為圖像處理流程圖。
圖1 算法流程
為減少數(shù)據(jù)量提高處理速度,將CCD攝像頭所拍攝的彩色待檢品圖像轉(zhuǎn)化為二值圖像。從彩色圖像到灰度圖像需要確定灰度分割閾值;系統(tǒng)設(shè)計(jì)時(shí),將光源布置在攝像頭上,這樣待檢端面和背景灰度會(huì)有較大的灰度差距,便于分割。圖像預(yù)處理操作目的是提高圖像品質(zhì),本算法中圖像增強(qiáng)操作采用中值濾波方式;工業(yè)現(xiàn)場因機(jī)械振動(dòng),圖像極易產(chǎn)生白噪聲,而中值濾波對于白噪聲有很好的抑制作用,又不會(huì)引起圖像邊緣的較大失真,所以使用此濾波方式。
圖像配準(zhǔn)是將不同時(shí)間、不同成像設(shè)備或不同條件下獲取的兩幅或多幅圖像進(jìn)行匹配、疊加的過程,因此需要設(shè)法建立兩幅圖像之間的對應(yīng)關(guān)系,確定相應(yīng)幾何變換參數(shù),對兩幅圖像中的一幅進(jìn)行變換后與另一幅進(jìn)行比對操作。由于標(biāo)準(zhǔn)圖像與待檢品圖像在空間位置上有一定錯(cuò)位,為了保證待檢精度,本算法以待檢品圖像為基準(zhǔn),對標(biāo)準(zhǔn)圖像進(jìn)行圖像配準(zhǔn)操作。目前國內(nèi)外常用的配準(zhǔn)方法包括基于特征的配準(zhǔn)算法,基于SIFT的配準(zhǔn)算法,基于相關(guān)算法的配準(zhǔn)方法等。在諸多方法中,基于特征的配準(zhǔn)算法具有計(jì)算量小,配準(zhǔn)效率高的特點(diǎn),然而配準(zhǔn)精度受圖像本身缺陷影響。本項(xiàng)目采用基于質(zhì)心的特征配準(zhǔn)方式,原因在于:1)對于圓柱形圖像,其端面為回轉(zhuǎn)對稱的幾何圖形,所以通過質(zhì)心(即圓心)便能快速配準(zhǔn);2)在配準(zhǔn)精度上雖然受到圖像表面缺陷的影響但這正好也能反應(yīng)出待檢品存在的缺陷。
Matlab強(qiáng)大的圖像分析功能給圖像尋找特征點(diǎn)帶來了方便。利用Matlab的image processing toolbox提供的regionpros函數(shù)以及該函數(shù)下的centroid參數(shù)可以方便的得到被標(biāo)記的閉合二值圖像的質(zhì)心。Centroid參數(shù)是基于圖像的一階矩對閉合圖像求取質(zhì)心。由圖像矩概念可知,對一幅二維連續(xù)圖像f(x,y),p+q階矩的定義為:
對于離散化數(shù)字圖像上式可變?yōu)?
通常0階矩(m00)表示物體的質(zhì)量,1階矩(m10,m01)表示物體的質(zhì)心,2階矩(m20,m02,m11)表示旋轉(zhuǎn)半徑。圖像質(zhì)心坐標(biāo)可由一階矩除以零階矩得到即圖像質(zhì)心的的坐標(biāo)公式為:
此方法的優(yōu)點(diǎn)是:1)對噪聲不敏感:當(dāng)有外部噪聲干擾時(shí),計(jì)算出的質(zhì)心不會(huì)有太大的偏離,因此此方法適用于在線檢測環(huán)境;2)Matlab將此算法集成為一條指令,其運(yùn)行速度更快,工作效率能得到保障。其具體處理流程是:首先對得到的待檢品二值圖像運(yùn)用bwlabel函數(shù)進(jìn)行標(biāo)記,然后利用regionpros函數(shù)及其centroid參數(shù)得到被標(biāo)記閉合區(qū)域的質(zhì)心;Matlab會(huì)自動(dòng)對被標(biāo)記的二值閉合區(qū)域進(jìn)行質(zhì)心計(jì)算,并返回各個(gè)區(qū)域的質(zhì)心坐標(biāo);為保證判斷結(jié)果的準(zhǔn)確性,必須保證待檢品圖像表面沒有因?yàn)榉潜旧砣毕菀蛩卦斐傻膱D像間斷點(diǎn),所以系統(tǒng)設(shè)計(jì)時(shí)在強(qiáng)光源照射下對待檢品采樣,這樣在灰度分割時(shí),待檢品檢測面既能跟背景很好的分割開又可以避免圖像表面產(chǎn)生多余二值區(qū)域,這樣就可以充分反映待檢面的情況,即使出現(xiàn)多個(gè)質(zhì)心坐標(biāo)也可懷疑是由于產(chǎn)品本身缺陷造成。算法雖然僅對單一特征點(diǎn)進(jìn)行配準(zhǔn)但是具有較高的配準(zhǔn)精度,原因除了上述兩點(diǎn)外,還在于:1)調(diào)整方式上:標(biāo)準(zhǔn)圖像的處理環(huán)境與待檢品處理環(huán)境幾乎相同。獲取標(biāo)準(zhǔn)圖像的二值圖像及其質(zhì)心所用方法是將標(biāo)準(zhǔn)件放到送料臺與待檢品進(jìn)行一樣的流程,重復(fù)多次后,根據(jù)得到的標(biāo)準(zhǔn)圖像情況調(diào)整機(jī)構(gòu)使標(biāo)準(zhǔn)圖像各指標(biāo)穩(wěn)定后才開始進(jìn)行待檢品檢測。2)對待檢品采樣時(shí)系統(tǒng)會(huì)暫停,即圖像本身質(zhì)量能得到保證,不會(huì)出現(xiàn)模糊、拖影等現(xiàn)象。
當(dāng)不需要對產(chǎn)品缺陷進(jìn)行高精度測量時(shí),可采用圖像比對的方法迅速給出產(chǎn)品缺陷判斷。算法采用圖像相減的方法,將配準(zhǔn)好的待檢品二值圖像圖像與標(biāo)準(zhǔn)二值圖像進(jìn)行圖像相減操作;Matlab中圖像相減函數(shù)有imabsdiff和imsubtract兩種;進(jìn)行 imabsdiff處理時(shí),當(dāng)相減像素為負(fù)值時(shí)會(huì)自動(dòng)變?yōu)槠浣^對值代替原像素的位置,而imsubtract處理時(shí),當(dāng)像素小于0均置0;顯然,使用imsubtract函數(shù)進(jìn)行處理能避免算法帶來的誤差。兩幅圖像相減存在誰被減的問題,在處理時(shí),讓兩幅圖像分別被對方減一次,從而得到兩幅結(jié)果圖像,分別對兩幅結(jié)果圖像進(jìn)行非0像素統(tǒng)計(jì),取非0像素多的圖像作為結(jié)果圖像,因?yàn)槠渥钅芊从彻ぜ毕萸闆r,如圖2所示。對結(jié)果圖像統(tǒng)計(jì)非0像素的個(gè)數(shù)N,并與預(yù)先設(shè)定的誤差容限A進(jìn)行大小比較:
圖2 兩種情況的結(jié)果圖像
VB.NET與Matlab實(shí)現(xiàn)混合編程方法較為成熟。VB.NET能很好的開發(fā)操作界面,實(shí)現(xiàn)VB.NET與Matlab的混合編程主要通過以下兩個(gè)步驟:
1)將Matlab的M文件轉(zhuǎn)換為COM組件。在Matlab環(huán)境中編寫好M函數(shù)文件后,在Matlab指令窗口輸入deploytool指令,調(diào)出Deployment Project對話框,將項(xiàng)目類型設(shè)置為Generic COM Component后點(diǎn)擊“OK”即可調(diào)出創(chuàng)建COM組件的編輯環(huán)境。設(shè)置類名,并添加相應(yīng)M文件后編譯該工程即可在相應(yīng)位置得到以靜態(tài)鏈接庫形式存在的COM組件。
2)VB.NET中添加COM組件。在VB.NET中添加上一步生產(chǎn)的COM組件到項(xiàng)目的“引用”,即可在VB.NET編程環(huán)境中調(diào)用Matlab編寫的函數(shù)進(jìn)行數(shù)值運(yùn)算和圖像的處理。
以VB.NET與Matlab混合編程為核心的上位機(jī)與下位機(jī)通信流程圖如圖3所示。
圖3 上位機(jī)與下位機(jī)通信流程圖
圖像處理結(jié)果將顯示在操作界面的圖像顯示區(qū)如圖4所示;部分待檢品缺陷處理結(jié)果如圖5所示。
圖4 軟件界面
圖5 部分檢測結(jié)果
對系統(tǒng)進(jìn)行測試,模型工件一共10個(gè)(不合格品6個(gè),合格品4個(gè)),連續(xù)測試。測試 3次的結(jié)果如表 1所示。
表1 實(shí)驗(yàn)數(shù)據(jù)
通過實(shí)驗(yàn)數(shù)據(jù)看出系統(tǒng)整體穩(wěn)定性較好,對缺陷分辨力較高,但分選精度上稍有欠缺。本項(xiàng)目提出的算法以及軟件實(shí)現(xiàn)的方法能在保證一定檢測精度的前提下具有較高的檢測效率,因此具有很好的推廣價(jià)值,尤其對于幾何形狀較為簡單的產(chǎn)品在線檢測以及檢測速度要求較高的場合較為適合,比如活塞缺陷檢測、圓柱軸承滾子檢測、PCB焊點(diǎn)檢測均可使用本文介紹的方法。
[1]錢光耀,崔慶勝,夏二勇,等.基于MMX的太陽能電池板邊緣缺陷檢測軟件系統(tǒng) [J].測量與設(shè)備,2010,07.
[2]馬培勇,羅紅潤,周思柱.基于COM組件的Matlab和VB混編方法在機(jī)械可靠性工程中的應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2012,29(7).
[3]李志軍,傅蓉浣.應(yīng)用于機(jī)器視覺的圖像自動(dòng)比對算法研究,[J].機(jī)電工程,2012 26(7).
[4]Jan Flusser, Barbara Zitova,Tomas Suk.Moments and Moment Invariants in Pattern Recognition.[M]. 2009 John Wiley&Sons Ltd.
[5]岡薩雷斯,等.阮秋琦,等譯.數(shù)字圖像處理(第三版)[M].北京:電子工業(yè)出版社,2011.