基于機(jī)器視覺的零件圖像采集及識別的研究
0 引言
機(jī)器視覺是通過光學(xué)的裝置和非接觸的傳感器自動地接受和處理一個真實物體的圖像,以獲得所需信息或用于控制機(jī)器動作的裝置。機(jī)器視覺借助于計算機(jī)軟件對圖像進(jìn)行定量的分析,其處理的速度與被處理圖像的復(fù)雜程度有關(guān)。它具有快速、可靠、一致性高的優(yōu)點,對于大批量的生產(chǎn)有很好的經(jīng)濟(jì)效益。本課題采用先進(jìn)的圖像采集系統(tǒng)對零件的輪廓進(jìn)行采集,通過vc++.net作為開發(fā)平臺,結(jié)合圖像處理相關(guān)的算法,對零件的輪廓邊緣特征進(jìn)行識別提取。
本文首先通過wat-902黑白ccd(電荷耦合器件)和t2314fics-3工業(yè)自動化鏡頭對平臺正下方方形零件拍攝,由mv-20圖像采集卡將模擬信號轉(zhuǎn)化為數(shù)字信號,將其送入計算機(jī)進(jìn)行圖像二值化處理、區(qū)域分割、邊緣檢測及跟蹤、簡單背景下的物體目標(biāo)與背景的分離以及特征提取等處理,最后融合特征數(shù)據(jù)建立判別函數(shù),實現(xiàn)了對零件圖像的自動識別,本文主要介紹灰度變換,二值化處理和邊緣檢測的算法及其應(yīng)用。
1 灰度變換
灰度變換是圖像增強(qiáng)的重要手段,它可使圖像動態(tài)范圍加大,使圖像對比度擴(kuò)展,圖像更加清晰,特征更加明顯。
本課題采用灰度線性變換方法中的分段變換法進(jìn)行可灰度的拉伸試驗、分段線性變換[1]就是將圖像的灰度區(qū)間分成兩段乃至多段分別進(jìn)行線性變換,它的優(yōu)點是可以根據(jù)用戶的需要,拉伸特征物體的灰度細(xì)節(jié),相對抑制不敢興趣的灰度級。
分段線性變換遵循以下原則:
如果|a-c|>|a-c|,|c-d|<|c-d|,|d-b|=|d-b|,則是擴(kuò)展第1區(qū)間[a,c],壓縮第2區(qū)間[c,d],維持第3區(qū)間[d,b],得到低灰度級被增強(qiáng)的圖像。如果|d-b|<|d-b|,則可得高灰度級被增強(qiáng)的圖像。
圖1是基于vc開發(fā)出的用于分段線性變換設(shè)置方法,圖中利用點(50,30)和點(200,220)將灰度空間分成3段,通過調(diào)整這兩點的坐標(biāo)位置進(jìn)行灰度變換。
2 圖像的二值化
為了進(jìn)行圖像識別,需要將經(jīng)過拍攝到的圖像二值化,因為ccd攝取的圖像f(x,y)為灰階圖像,圖像上的任一像素(x,y)處的灰度級l范圍為0≤1≤l。當(dāng)l=0,像素顏色為黑色;當(dāng)l=1,像素顏色為白色;當(dāng)0≤1≤l,像素顏色為白色,像素顯示黑與白之間的中間色。所謂圖像的二值化,就是使灰度級l只能取0或l,則圖中像素的顏色或者為白,或者為黑,此時圖像被稱為二值圖像(黑白圖像),為了使矩陣運(yùn)算較為簡單,通常取l=1(規(guī)格化)。
圖像二值化的目的是為了從原始圖像中檢測出對象物,即將圖像分成對象物和背景兩個區(qū)域,通常的辦法是設(shè)定一個閾值θ,取原始圖像中灰度級大于θ的像素群為對象物,小于θ的像素群為背景區(qū)域,例如設(shè)原始圖像為f(x,y),二值化后圖像為g(x,y),則
二值化的關(guān)鍵和難點是閾值選擇。在數(shù)字圖像中,無用的背景數(shù)據(jù)以及各種噪聲的數(shù)據(jù)和對象物常常混在一起,閾值的選擇方法很多,這里采用最大方差閾值法[2,3]對零件的圖像進(jìn)行處理。
最大方差閾值法是把待處理圖像的直方圖在某一閾值處分割成兩組,當(dāng)被分割成兩組間方差為最大時,決定閾值。
設(shè)灰度圖像f(x,y)的灰度級為0-l,灰度級i的像素數(shù)為ni,則圖1中,總像素數(shù)為: 將灰度級分為兩組:c0=0~k,c1=k+1~l,則c0產(chǎn)生的概率為:
圖2為二值化前后的直方圖。
3 邊緣檢測
在對圖像進(jìn)行特征提取之前,一般都需要進(jìn)行邊緣檢測,然后進(jìn)行二值化處理,邊緣檢測將突出圖像的邊緣,邊緣以外的圖像區(qū)域通常被削弱甚至被完全去掉。處理后邊界的亮度與原圖中邊緣周圍的亮度變化率成正比。邊緣一般分為階躍性邊緣和屋頂狀邊緣。
在本課題中,零件圖像和背景圖像的灰度值有著顯著的不同,屬于階躍性邊緣,這種邊緣的檢測通常借助空域微分算子進(jìn)行,通過將其模板與圖像卷積來完成,其實質(zhì)是采用某種算法提取出圖像與背景間的交界線,用圖像灰度分布的梯度來反映,因此可以用局部圖像微分技術(shù)來獲得邊緣檢測算子。以下是對幾種經(jīng)典的邊緣檢測算子進(jìn)行理論分析,并對各自的性能特點做出了比較和評價。
以這些理論為依據(jù),這里采用了幾種常用的邊緣檢測方法:roberts邊緣檢測算子、sobel邊緣檢測算子、prewitt邊緣檢測算子、laplace邊緣檢測算子。
3.1 roberts邊緣檢測算子[4,5]
roberts邊緣檢測算子是一種利用局部差分方法尋找邊緣的算子,它根據(jù)任意一對互相垂直方向的差分可用來計算梯度的原理,才能采用對角線方向相鄰兩像素之差,即
適當(dāng)選取門限th并做如下判斷:屬于r(i,j)>th,則(i,j)為階躍狀邊緣點,{r(i,j)}為邊緣圖像。如圖3所示。
3.2 sobel 邊緣檢測算子[4,5]
sobel邊緣檢測算子采用兩個卷積核:
圖像中每個點都要這兩個核進(jìn)行卷積,前一個核對水平邊緣響應(yīng)最大,后一個核對垂直邊緣響應(yīng)最大,兩個模板各司其職。最后把兩個卷積結(jié)果的最大值作為該點的輸出值。對數(shù)字圖像{f(i,j)}的每個像素,考察它上下左右鄰點灰度的加權(quán)差,與其接近的鄰點的值大。
算子如下:
s(i,j)=|δxf|+|δyf|=|(f(i-1,j-1)+2f(i-1,j)+f(i-1,j+1))-(f(i+1,j-1)+2f(i+1,j)+f(i+1,j+1))1+|(f(i-1,j-1)+2f(i,j-1)+f(i+1,j-1))-(f(i-1,j+1)+2f(i,j+1)+f(i+1,j+1))|
sobel算子檢測到的邊緣如圖4所示。
對比兩種算子得到的圖像可以簡單地得出以下結(jié)論:roberts算子檢測水平和垂直的效果好于斜向邊緣,定位精度高,但對噪聲敏感;sobel邊緣檢測算子則對灰度漸變和噪聲較多的圖像處理得較好。
4 結(jié)束語
在該項目的研究過程中,本文所論述的灰度變換中的分段線性變換法、圖像二值化中的最大方差閾值法及邊緣檢測中的roberts邊緣檢測算子、sobel邊緣檢測算子、prewitt邊緣檢測算子、laplace邊緣檢測算子都在vc++.net中實現(xiàn),并已經(jīng)運(yùn)用于整個采集識別過程,實驗表明,灰度變換和二值化能很大地提高對灰度圖像的識別精度,噪聲較低的環(huán)境下,利用roberts算子檢測邊緣定位精度較高,識別出的圖像精度能達(dá)到0.05mm。在此基礎(chǔ)上已開發(fā)出一套完整的零件位姿圖像采集識別系統(tǒng)。
評論