魏源,孫富昱,劉力雙
(北京信息科技大學(xué)光電信息科學(xué)與工程系,北京100089)
隨著數(shù)字化技術(shù)在當(dāng)今生活中占得比重越來越高,數(shù)字圖像處理的必要性日益增加。它綜合了光學(xué)、機(jī)械、電子、計算機(jī)等多方面的技術(shù)應(yīng)用,涉及到計算機(jī)、模式識別、圖像處理、信號處理、人工智能、光機(jī)電一體化等多個領(lǐng)域?!稊?shù)字圖像處理》是隨著計算機(jī)和信息技術(shù)發(fā)展應(yīng)運(yùn)而生的一門新興課程,已經(jīng)成為信息類專業(yè)本科生的重要專業(yè)課[1]。該課程主要講授如何通過使用計算機(jī)對待操作的圖像信息進(jìn)行處理的方法與技術(shù),具體處理過程如降噪、銳化、特征提取、增強(qiáng)等。課程通過上述處理過程實(shí)現(xiàn)對圖像的質(zhì)量的改善,如亮度增強(qiáng)、顏色轉(zhuǎn)換等;實(shí)現(xiàn)對圖像特征信息的提取,如邊緣檢測、顏色特征提取等;實(shí)現(xiàn)圖像的數(shù)據(jù)變換,多應(yīng)用于圖像的傳輸過程。
MATLAB有強(qiáng)大的數(shù)字圖像處理工具箱,用它進(jìn)行實(shí)驗(yàn),省去了復(fù)雜的編程過程,能大大地簡化程序,從而把精力集中在算法的研究上,這些特點(diǎn)特別適合圖像處理實(shí)驗(yàn)教學(xué)[2]。數(shù)字圖像處理技術(shù)和視覺檢測技術(shù)的理論與實(shí)驗(yàn)操作的高效結(jié)合,是將該技術(shù)應(yīng)用于實(shí)踐的基礎(chǔ)。本文設(shè)計并制作基于MATLAB的學(xué)生用視覺檢測實(shí)驗(yàn)系統(tǒng)。
本系統(tǒng)旨在提高學(xué)生的動手能力與編程能力,給高校教師和學(xué)生更大的系統(tǒng)設(shè)計空間,因此開放性較高,滿足根據(jù)不同被測物體材質(zhì)與測量環(huán)境而針對性提供光源、鏡頭、相機(jī)等硬件設(shè)備的現(xiàn)實(shí)要求。本系統(tǒng)主體由結(jié)構(gòu)硬件部分與控制部分構(gòu)成。結(jié)構(gòu)硬件部分系統(tǒng)設(shè)計細(xì)分如下:平臺底座、載物臺、鏡頭升降及其移動結(jié)構(gòu)、光源切換結(jié)構(gòu)??刂撇糠钟绍浖幊膛c硬件電路構(gòu)成。
下文以2020年北京信息科技大學(xué)視覺檢測課設(shè)為例,以學(xué)生視角展示利用該系統(tǒng)實(shí)現(xiàn)MATLAB GUI界面設(shè)計、顏色識別和精密工件尺寸參數(shù)測量功能。下文部分涉及系統(tǒng)功能實(shí)現(xiàn)原理和方法、系統(tǒng)功能實(shí)現(xiàn)過程、結(jié)果和誤差分析等內(nèi)容。
(1)MATLAB GUI界面設(shè)計
①掌握MATLAB軟件與GUI的基本操作方法。
②采用MATLAB編寫GUI界面,實(shí)現(xiàn)可讀入計算機(jī)內(nèi)存儲的圖片顯示。
③實(shí)現(xiàn)USB相機(jī)的圖像采集和實(shí)時顯示。
(2)顏色識別
①掌握視覺檢測系統(tǒng)的圖像顏色識別算法設(shè)計。
②實(shí)現(xiàn)讀入計算機(jī)圖片進(jìn)行識別。
(3)精密工件尺寸參數(shù)測量
①掌握視覺檢測系統(tǒng)的標(biāo)定算法設(shè)計,并選擇標(biāo)定方法,實(shí)現(xiàn)標(biāo)定程序,并完成系統(tǒng)的標(biāo)定。
②掌握視覺檢測系統(tǒng)的工件參數(shù)提取算法設(shè)計,實(shí)現(xiàn)如下圖工件圖像的檢測和定位。
圖1 待測工件圖
(1)MATLAB GUI界面功能實(shí)現(xiàn)原理與方法
通過使MATLAB編寫程序?qū)崿F(xiàn)利用GUI界面圖像采集、實(shí)時顯示和圖像存儲功能。利用MATLAB的GUI進(jìn)行視覺檢測系統(tǒng)的課程設(shè)計好處在于其實(shí)時性高、互動性強(qiáng)、自由度高、模塊性高,采用GUI交叉設(shè)計的方法可實(shí)現(xiàn)多個模塊進(jìn)行互通互聯(lián),可以實(shí)現(xiàn)主GUI及其附屬功能GUI的統(tǒng)一調(diào)配管理,展現(xiàn)了其強(qiáng)大的用戶互動能力[3]。
學(xué)生通過選擇合適光源以及成像設(shè)備,調(diào)試好焦距后通過電腦端MATLAB軟件配對外設(shè)USB攝像頭實(shí)現(xiàn)對圖像的獲取。
(2)顏色識別實(shí)現(xiàn)原理與方法
圖像的彩色處理一般有RGB處理和HSV處理兩種。
①RGB模型
RGB模型基于三基色原理,適當(dāng)選取三種基色如紅、綠、藍(lán)(并不唯一),將它們按照不同的比例合成,就會產(chǎn)生不同的顏色。其中合成的顏色的亮度取決于三基色的亮度之和,色度(色調(diào)和飽和度)取決于三基色各分量的比例。這三種基色彼此獨(dú)立,任一種基色不能由其他兩種基色配出。
通過圖2可以看到,三維立方體的三個軸分別是R、G、B,它所構(gòu)成的顏色空間是一個單位立方體;三個坐標(biāo)軸上的立方體頂點(diǎn)分別是紅、綠、藍(lán);如果RGB三個分量相等產(chǎn)生的就是黑白灰顏色,其他比例時候合成就是彩色。
圖2 RGB模型
一般情況下多次拍攝一種顏色圖片,其RGB分量可能是有一定的波動范圍的(受光線、CCD噪聲等影響)。所以學(xué)生設(shè)計程序也是要有一定的區(qū)間范圍,而不是絕對的。此次課設(shè)任務(wù)需要識別的顏色信息中,有一些顏色很相近,采用RGB劃分可能需要劃分很精確,才可以做到精準(zhǔn)識別,因此不采用此類辦法。
②HIS模型
HIS模型構(gòu)成的顏色空間是一個棗核形的三維空間,由兩個底面對接在一起的圓錐體構(gòu)成,如下圖所示。色調(diào)、飽和度和明度也是顏色的三個獨(dú)立特性,其中I與顏色無關(guān),而H和S與人對顏色的感知是密切相關(guān)的。
圖3 HIS模型
本文中系統(tǒng)應(yīng)用實(shí)例采取HIS模式獲取圖像顏色信息。因?yàn)镮分量與圖像的彩色信息無關(guān),H和S分量與人感受顏色的方式是緊密相連的。如圖3的棗弧形模型中下圓錐頂點(diǎn)為黑色,上圓錐頂點(diǎn)是白色,離黑色越近灰色越深,離白色越近則灰色越淺。在該模型中,一個切面圓內(nèi),到中心距離表示其飽和度,離中心越近飽和度越小,離中心越遠(yuǎn)飽和度越大。規(guī)范HSI分量的范圍為H:0~180,S:0~255,I:0~255。
預(yù)設(shè)若干個顏色,設(shè)定其每一個顏色對應(yīng)的HIS顏色分布區(qū)間。獲取圖像主要顏色信息,是要找到滿足預(yù)設(shè)顏色區(qū)間范圍內(nèi)的最大面積的顏色。為實(shí)現(xiàn)上述過程應(yīng)對圖像每一個像素點(diǎn)進(jìn)行顏色判斷。讀取每一個像素點(diǎn)對應(yīng)的HSV信息,并將其與預(yù)設(shè)顏色的顏色區(qū)間進(jìn)行比較,從而確定其所屬顏色。下圖出標(biāo)準(zhǔn)顏色的HIS區(qū)間,其中個別顏色數(shù)據(jù)根據(jù)攝像頭采集圖像顏色信息的差異進(jìn)行微調(diào),更細(xì)分顏色如橘黃色、明黃色可根據(jù)對應(yīng)HIS區(qū)間進(jìn)行調(diào)整。
表1 標(biāo)準(zhǔn)顏色的HIS區(qū)間
(3)精密工件尺寸參數(shù)測量實(shí)現(xiàn)原理與方法
復(fù)雜閉合圖形都可通過基礎(chǔ)圖形變換和組合得到,因此對于基礎(chǔ)圖形如四邊形、橢圓、圓的參數(shù)測量精度將直接影響到整個系統(tǒng)的工作精度。課程要求對2.1.3 所示工件圖像中各個工件樣本實(shí)現(xiàn)參數(shù)測量。本文將重點(diǎn)闡述橢圓、四邊形的參數(shù)測量原理與方法。
標(biāo)定方法一般可分為兩類,一類為不考慮畸變的線性標(biāo)定方法,這種情況下一般是采用了經(jīng)過像差校正的鏡頭,而且測量和標(biāo)定都采用圖像中心區(qū)域,畸變帶來的誤差很小,不考慮畸變使得圖像處理變得簡單,需要考慮的參數(shù)少;另一類為考慮畸變的標(biāo)定,即當(dāng)鏡頭畸變較大時,標(biāo)定就需要考慮畸變情況,從而在測量時對畸變帶來的誤差加以修正。本次工件參數(shù)測量的采集圖片不存在圖像畸變。
學(xué)生實(shí)驗(yàn)難點(diǎn)之一是將圖像的像素空間與實(shí)物空間建立聯(lián)系,獲取圖像實(shí)際尺寸與圖像像素之間轉(zhuǎn)換關(guān)系,并建立測量坐標(biāo)系完成系統(tǒng)標(biāo)定。根據(jù)兩點(diǎn)坐標(biāo)公式就可以求出實(shí)際該工件左下頂點(diǎn)和右下頂點(diǎn)坐標(biāo)距離,然后利用“單位像素對應(yīng)長度計算出圖像實(shí)際尺寸與圖像像素之間轉(zhuǎn)換關(guān)系。
建立測量坐標(biāo)系需要完成坐標(biāo)轉(zhuǎn)化,即將某點(diǎn)在當(dāng)前圖像坐標(biāo)系中的坐標(biāo),轉(zhuǎn)換到測量圖像坐標(biāo)系中的坐標(biāo)。以實(shí)際工件左下的頂點(diǎn)作為坐標(biāo)系原點(diǎn),下側(cè)邊緣作為X軸。則能夠獲得兩個坐標(biāo)之間的轉(zhuǎn)換關(guān)系。某點(diǎn)圖像坐標(biāo)系中坐標(biāo)(X,Y),某點(diǎn)在測量坐標(biāo)系中坐標(biāo)(X’,Y’)。
圖4 圖像空間坐標(biāo)系
轉(zhuǎn)換公式為:
①橢圓工件尺寸參數(shù)測量
調(diào)用成型函數(shù)“fit_ellipse.m”橢圓擬合程序中時用的是二次曲線標(biāo)準(zhǔn)化法進(jìn)行橢圓擬合。
其原理是:橢圓上的點(diǎn)在平面坐標(biāo)系下的方程為二次多項(xiàng)式,為了獲得標(biāo)準(zhǔn)曲線方程,通常需要兩步,第一步是對平面坐標(biāo)系的坐標(biāo)進(jìn)行擬合,確定平面坐標(biāo)系下的二次曲線方程系數(shù);第二步是通過坐標(biāo)系之間的平移和旋轉(zhuǎn)消去二次混乘項(xiàng)和一次項(xiàng),求得標(biāo)準(zhǔn)坐標(biāo)系下的曲線方程,進(jìn)而確定橢圓參數(shù)。表示在某平面二次曲線上觀測的n個點(diǎn)的坐標(biāo),二次曲線方程可表示為:
式(3)中,a0,a1,…,a5為待定系數(shù),對坐標(biāo)作正規(guī)化處理后,二次曲線方程可表示為:
式(5)中:
參數(shù)a'1,a'2,…,a'5的迭代初值可以取為0,對所有測量點(diǎn)列出誤差方程,組成法方程后求解參數(shù)改正數(shù),并迭代至改正數(shù)收斂,從而求得曲線方程系數(shù)。標(biāo)準(zhǔn)化后橢圓的幾何特征參數(shù)可表示為:
橢圓中心坐標(biāo):
長半軸方位角:
短半軸方位角:
②四邊形工件尺寸參數(shù)測量
擬合四邊形各邊用到了最小二乘擬合的原理:已知離散點(diǎn)上的數(shù)據(jù)集,即已知在點(diǎn)集上的函數(shù)值,構(gòu)造一個解析函數(shù)(其圖形為一曲線)使在原離散點(diǎn)上盡可能接近給定的值。
設(shè)x和y之間的函數(shù)關(guān)系由直線方程
給出。式中有兩個待定參數(shù),a0代表截距,a1代表斜率。對于等精度測量所得到的N組數(shù)據(jù)(xi,yi),i=1,2,…,N,xi值被認(rèn)為是準(zhǔn)確的,所有的誤差只聯(lián)系著yi。下面利用最小二乘法把觀測數(shù)據(jù)擬合為直線。
用最小二乘法估計參數(shù)時,要求觀測值yi的偏差的加權(quán)平方和為最小。對于等精度觀測值的直線擬合來說,可使:
最小即對參數(shù)a(代表a0,a1)最佳估計,要求觀測值yi的偏差的平方和為最小。
根據(jù)式(12)的要求,應(yīng)有:
整理后得到正規(guī)方程組:
解正規(guī)方程組便可求得直線參數(shù)a0和a1的最佳估計值a?0和a?1。即:
(1)MATLAB GUI界面功能實(shí)現(xiàn)過程
MATLAB GUI設(shè)計的過程分為兩部分,第一部分為獲取攝像頭的參數(shù),第二部分為按鍵及圖像窗口的設(shè)置及編程。
首先需要在MATLAB中安裝攝像頭外部支持以調(diào)用攝像頭,安裝完畢后,點(diǎn)擊MATLAB菜單中App里面的Image Acquisition,在彈出的右側(cè)窗口里可以選擇要使用的攝像頭。選取完畢后,從右下角的窗口中獲取該攝像頭的參數(shù)。
圖5 攝像頭的參數(shù)
第二部分為按鍵及圖像窗口的設(shè)置及編程。根據(jù)本次實(shí)驗(yàn)?zāi)康姆治觯缑娣譃閮刹糠?,顯示窗口區(qū)域和按鍵操作區(qū)域。顯示窗口區(qū)域中包含讀取計算機(jī)圖片窗口、攝像頭的實(shí)時顯示窗口和圖像采集窗口。按鍵操作區(qū)域應(yīng)包含響應(yīng)操作功能的按鍵。下面進(jìn)行對按鍵及圖像窗口的編程,選中對象右擊——點(diǎn)擊View Callbaks,選中Callback.跳轉(zhuǎn)到.m文件對應(yīng)位置,并對代碼進(jìn)行編輯。設(shè)置獲取圖片的位置及名稱,將讀取圖片顯示在圖像窗口1中。將獲取的攝像頭參數(shù)粘貼在videoinput的括號內(nèi),并用imshow函數(shù)實(shí)現(xiàn)USB攝像所頭采集圖像的顯示。將攝像頭實(shí)時畫面顯示在圖像窗口2中。用getsnaoshot語句實(shí)現(xiàn)攝像頭當(dāng)前畫面的捕捉,并將捕捉的畫面顯示在圖像窗口3中。最后,設(shè)置保存圖片的位置及名稱。
(2)顏色識別功能實(shí)現(xiàn)過程
因GUI有實(shí)時性高、互動性強(qiáng)、自由度高、模塊性高特點(diǎn),實(shí)現(xiàn)顏色識別中,將結(jié)果顯示在GUI界面。讀入圖片獲取的是RGB分量,通過函數(shù)rgb2hsv轉(zhuǎn)換成HSV模型分量。認(rèn)為當(dāng)前圖片同一顏色像素最多的即為當(dāng)前圖片主要顏色信息,因此設(shè)置了顏色計數(shù)變量。通過行列遍歷的方式,掃描圖片上每一點(diǎn),并判斷其顏色,每次判斷一個點(diǎn)就把該顏色的計數(shù)加1。找到顏色最多的點(diǎn),即為當(dāng)前圖片顏色顯示,結(jié)果以文字形式顯示在GUI界面靜態(tài)文本框中。
(3)精密工件參數(shù)測量功能實(shí)現(xiàn)過程
因GUI有實(shí)時性高、互動性強(qiáng)、自由度高、模塊性高特點(diǎn),實(shí)現(xiàn)精密工件參數(shù)測量中,將結(jié)果顯示在GUI界面。工件的尺寸參數(shù)測量部分設(shè)計過程分為兩部分,第一部分獲得圖像中的像素和實(shí)際坐標(biāo)之間的比例轉(zhuǎn)換關(guān)系及實(shí)現(xiàn)測量坐標(biāo)系的建立,第二部分為工件的擬合部分。
在第一部分,學(xué)生需要測定的參數(shù)包括以知實(shí)際長度線,在圖像坐標(biāo)系下,其左坐標(biāo)點(diǎn)和右坐標(biāo)點(diǎn);單位像素對應(yīng)的實(shí)際長度比例關(guān)系;圖像坐標(biāo)系與測量坐標(biāo)系的偏轉(zhuǎn)角。目前已知工件圖內(nèi)框的下邊框的實(shí)際長度是36mm,選擇邊框左下交點(diǎn)作為測量坐標(biāo)系的原點(diǎn)。要求首先在圖像坐標(biāo)系下,獲取工件邊框左下點(diǎn)和右下點(diǎn)的坐標(biāo)并計算坐標(biāo)距離。
第一部分實(shí)施步驟如下:
(1)讀入工件圖,對工件圖經(jīng)行灰度化和二值化,采用腐蝕算法對圖片經(jīng)行腐蝕。用原二值化圖像減去經(jīng)過腐蝕后的圖像,獲得工件圖的邊緣圖像,如圖6所示。
圖6 腐蝕工件圖像
(2)采用MATLAB自帶輪廓跟蹤算法函數(shù)bw?boundaries獲得圖像邊緣并分類,為直線擬合做準(zhǔn)備。
(3)通過求兩直線交點(diǎn)方式,保證左下點(diǎn)及右下點(diǎn)坐標(biāo)值的精度。學(xué)生需要分別對左、下、右三條邊進(jìn)行擬合。根據(jù)所獲得的三條邊的斜率和截距求交左下交點(diǎn)坐標(biāo)和右下交點(diǎn)坐標(biāo)。
已知任意相交兩直線,其交點(diǎn)坐標(biāo)可以通過如下關(guān)系獲得,過程如下:
設(shè)兩直線表達(dá)式如下:
求出角的坐標(biāo)(X,Y),p1(2)是第一條直線方程中第一個元素。通過上述關(guān)系就可求出交點(diǎn)。進(jìn)行代數(shù)計算可獲得較為準(zhǔn)確的圖像坐標(biāo)距離,進(jìn)而求得圖像實(shí)際尺寸與圖像像素之間轉(zhuǎn)換關(guān)系。
第二部分實(shí)施步驟如下:
(1)橢圓擬合實(shí)現(xiàn)過程
首先將橢圓輪廓單獨(dú)提取出來,利用坐標(biāo)轉(zhuǎn)換公式轉(zhuǎn)換其坐標(biāo)系,最后調(diào)用橢圓擬合函數(shù),輸出橢圓擬合圖像。
(2)四邊形擬合實(shí)現(xiàn)過程
首先將其輪廓單獨(dú)提取出來,利用坐標(biāo)轉(zhuǎn)換公式轉(zhuǎn)換其坐標(biāo)系,然后用最小二乘法擬合直線,并輸出擬合結(jié)果,最后利用擬合直線求出所需參數(shù)。分別對四條邊長區(qū)域進(jìn)行遍歷,分別獲得四條直線的相關(guān)參數(shù),然后分別對四條直線使用polyfit函數(shù)進(jìn)行最小二乘擬合,再利用polyval函數(shù)生成擬合直線的表達(dá)式。擬合的四邊形如圖8所示。
圖7 橢圓擬合圖
圖8 四邊形擬合圖
在參數(shù)計算部分中,首先需要求出四個角的坐標(biāo),利用公式:
求出角的坐標(biāo)(X,Y),p1(2)是第一條直線方程中第一個元素。
再利用公式:
計算出每條邊邊長。
最后利用公式:
求出四個角的角度。其中a、b、c為所求角和角的兩邊確定的三角形的三條邊長。
(1)MATLAB GUI界面
如圖9所示,設(shè)計GUI界面由3個圖像框,以及4個按鍵組成。其中按鍵1實(shí)現(xiàn)打開攝像頭功能,按鍵2實(shí)現(xiàn)保存圖片功能,按鍵3實(shí)現(xiàn)讀取圖片功能,按鍵4實(shí)現(xiàn)退出功能。
圖9 按鍵1、按鍵2執(zhí)行結(jié)果
圖10 按鍵3選取目標(biāo)文件圖像
圖11 按鍵3執(zhí)行結(jié)果
(2)顏色識別
打開GUI界面,點(diǎn)擊“選取圖片”按鍵,便可以從計算機(jī)中選取相應(yīng)的顏色識別圖片。選取后,選取的圖片會顯示在圖形窗口里,GUI界面上標(biāo)有“顏色”字樣的動態(tài)文本框內(nèi)會自動顯示選取圖片的顏色識別結(jié)果。再次點(diǎn)擊“重置”按鍵,可重置內(nèi)容并重新選取待識別圖像并識別圖像顏色。進(jìn)行下一幅圖片的顏色識別。點(diǎn)擊“退出”按鍵,可以關(guān)閉GUI界面。圖像顏色識別的GUI界面如圖12。
圖12 紅色識別案例
(3)精密工件參數(shù)測量
學(xué)生分別對最初的測試圖片測量結(jié)果、修改后的測試圖片測量結(jié)果和評比圖片測試結(jié)果進(jìn)行了誤差分析。并將表格中,相對誤差大于1%的值進(jìn)行了標(biāo)注,如圖13。
測得的評比圖片的工件參數(shù)也十分精確,誤差也達(dá)到了評分標(biāo)準(zhǔn)的最好要求。橢圓的短軸雖然誤差小于0.1mm,但是相對誤差大于1%。經(jīng)分析,應(yīng)該是因?yàn)闄E圓短軸的數(shù)值過小導(dǎo)致的其相對誤差過高。
圖13 誤差分析
為提升理工科學(xué)生們掌握數(shù)字圖像處理技術(shù)和視覺檢測技術(shù)的實(shí)踐應(yīng)用的能力,培養(yǎng)動手能力與設(shè)計能力,探索出符合OBE理念的教學(xué)模式。本文在《數(shù)字圖像處理》課程理論基礎(chǔ)上,提出完整的夠鍛煉學(xué)生的實(shí)踐動手能力的視覺檢測實(shí)驗(yàn)系統(tǒng)的設(shè)計思路。系統(tǒng)應(yīng)用實(shí)例提供對圖像信息采集處理的應(yīng)用案例的教學(xué)實(shí)驗(yàn)應(yīng)用,根據(jù)不同課程需求可提供不同實(shí)驗(yàn)的穩(wěn)定的實(shí)驗(yàn)環(huán)境。該系統(tǒng)貼合教學(xué)實(shí)踐目標(biāo),能有效激發(fā)學(xué)生興趣與提升學(xué)生實(shí)踐能力,將有效提高教學(xué)質(zhì)量。