袁良祺,劉力雙,顧淑琪,田暢
(北京信息科技大學儀器科學與光電工程系,北京100192)
在生產作業中,想要實現自動化技術在各個領域的應用,對機器視覺的數字圖像進行處理顏色識別以及參數計算往往是重中之重,機器判斷目標的位置主要通過圖像中的某些特征圖形來進行定位,圖像識別系統主要是針對圖像圖形的顏色以及圖像中的各個基本形狀參數進行計算。
計算機視覺檢測是指利用計算機圖像處理系統來模擬人類視覺進行檢測對象的分類、識別和測量的技術,具有檢測效率高、可檢測指標多、可非接觸測量、檢測結果客觀等優點[1]。在圖像的識別與檢測中,檢測的基本圖形如四邊形、圓形及橢圓計算得到參數以后可以進行更加復雜的圖形疊加的參數計算,復雜的圖形都是由簡單的圖形疊加起來的,所以檢測簡單圖形的特征參數對于計算機視覺檢測具有重要的意義。因此可以通過這樣機器視覺檢測系統對復雜圖形零件圖進行參數計算來判斷零件的大小是否標準。
2019 年北京信息科技大學《視覺檢測系統設計與實踐》課程設計主要是針對顏色識別以及基本形狀的參數計算,根據課程設計的題目要求利用MATLAB 設計出一套針對此課程設計的系統具有十分重要的意義。
MATLAB 軟件是美國MathWorks 公司出品的一款商業軟件,廣泛應用于算法開發、數據可視化、數值計算、圖形圖像處理等領域,其圖形用戶界面(Graphical User Interface,GUI)具有高效、方便等特征,有助于直觀、便捷的人機交互界面的快速設計與實現[2-3]。使用MATLAB GUI 提出了一個顏色識別及基本形狀參數計算的方法,設計并實現了一個彩色基本形狀檢測系統。
對于不同使用者需要識別的圖像不同、所識別的圖像大小不同、圖像所在區域不同,本設計采用自由的圖像截取方式,使用者讀取需要識別的圖像后采用roipoly 函數在圖像上使用鼠標進行點的選擇,如圖1(a)所示為截取零件圖中單個橢圓零件的截取圖,藍色點為使用在使用鼠標左鍵在圖像上面進行的選取點操作,選取點的連線應是封閉圖形。選取點的位置任意、選取點的個數任意、選取點的任意、選取點與點之間的長度任意。
在選取的區域點擊右鍵選擇Create Mask 可以獲得截取所截取的區域的形狀,如圖1(b)所示,為截取下來的二值圖,此時可以將截取下來的圖像與原始圖像相乘再加上截取圖像取反,可以得到橫縱像素點與原圖大小相等的被截取下來的橢圓零件圖的圖像,這樣的從多個零件圖中截取到的單個零件圖如圖1(c)所示。

圖1 截取零件圖中單個橢圓零件圖
圖像的顏色識別主要是預先設定一個顏色對應區間,再將圖片有色彩的圖片(一般來說是RGB 圖)進行每個像素點的對應顏色區間的判斷。顏色對應區間可以先讀取任意數量的顏色圖像,通過MATLAB 讀取此圖像像素點的顏色區間值來規定顏色區間范圍,這種規定顏色區間的方法可以稱為顏色識別系統的學習,再將學習到的顏色區間值編寫進程序再對顏色進行判斷。本設計對顏色空間的圖像進行有效處理都是在HSV 空間進行的,然后對于基本色中對應的HSV 分量需要給定一個嚴格的范圍,H:0-180;S:0-255;V:0-255。

表1 十種基礎顏色對應的HSV 顏色分量范圍[2]
在MATLAB 中可以采用rgb2hsv 的函數將RGB圖像轉換到HSV 區域里進行處理,采用if 以及elseif函數來判斷單個像素點的顏色歸屬。表1 為十種基礎顏色分別是黑灰白紅橙黃綠青藍紫的HSV 對應區間數值范圍。例如,圖像中某個像素點的HSV 值分別為5、50、50 則判斷此點為紅色點并計數。
得到圖像的橫縱像素點個數后,再使用兩個for 循環遍歷二維圖像的所有像素點,根據表1 所示HSV 顏色分量范圍對所有像素點的顏色進行對應HSV 區間的識別,并計算各個HSV 顏色分量范圍的像素點個數,判斷像素點數量最多的顏色區域則是被識別物體的顏色,如圖2 所示為顏色識別程序流程圖。

圖2 顏色識別程序流程圖
含有綠色橢圓的零件圖如圖3(a)所示,采用第一步驟所介紹的識別圖像的截取操作,對零件圖中所需要的截取的綠色橢圓截取下來進行顏色識別的準備工作如圖3(b)所示,再將圖片信息進行顏色識別將顏色識別的結果輸出到“可編輯文本”顯示框里輸出如圖3(c)所示,可以得到所需要顏色識別的零件顏色信息。

圖3 單個零件顏色識別效果圖
最大多數的復雜圖形都可以看成簡單圖形的疊加,所以在本設計中僅介紹了部分簡單圖形的參數計算方法以及展現了參數計算效果。
進行基本形狀的參數計算步驟如圖4 所示,對于所有基本圖形的處理都應該截取單個所希望獲得的零件圖,再使用結構元素對圖像進行腐蝕以得到其外部輪廓邊界。由于不同圖形的特征不同,所以跟蹤對象的外部邊界以及進行參數計算的擬合程序也不相同。對于所選擇截取的圖形選擇對應的擬合方法進行擬合得到圖形的參數并輸出顯示。

圖4 圖形進行參數計算基本流程圖
對于橢圓的擬合采用的是最小二乘法進行橢圓擬合,采用MATLAB 的官網上所介紹的橢圓擬合子程序進行橢圓參數的計算,對于橢圓的個數可從一個到幾個不等,橢圓方程如公式(1)所示,可以通過子程序的到各個自變量的系數以及傾斜角度。

通過橢圓參數計算,可以得到如圖3 中的綠色橢圓的參數如表2 所示。

表2 綠色橢圓的各項參數
對于零件圖中的圓形部分,首先分布將圓形截取出來,使之成為單個的零件圖。再對此單個圓形的零件圖進行處理,如圖4 所示,對于圓形的參數計算主要根據圓半徑以及中心點的方法編寫MATLAB 程序。程序的主要思路是將圓的所有點的坐標都得到,然后通過數學計算的方式的得到圓的擬合曲線以及圓的各項參數。其中的難點在于得到了圓上所有的坐標點后如何計算來得到圓的各項參數。圓擬合曲線的公式推導過程部分如下,最小二乘法擬合圓曲線:
R2=(x-A)2+(y-B)2
化簡為一般形式:R2=x2-2Ax+A2+y2-2By+B2
令:
a=-2A
b=-2B
c=A2+B2-R2
轉換方程可以得到圓曲線方程的另一個形式:
x2+y2+ax+by+c=0
只需要求出參數a,b,c 就可以求的圓心半徑的參數[3]:

對于零件圖中的四邊形部分,操作過程與圓形類似首先將四邊形部分截取出來,使之成為單個的零件圖。再對此單個四邊形的零件圖進行處理,如圖4 所示編寫四邊形跟蹤外部邊界及擬合程序。首先利用filter2 函數使用梯度模板進行濾波操作為保留圖中的水平或者垂直直線。其次使用Sobel 算子中的水平模板以及垂直模板獲得的水平以及垂直梯度圖,Sobel 算子對水平邊緣和垂直邊緣有較強的響應,可以得到清晰可見的水平和垂直細節。再次,創建縱向以及橫向的直線結構元素對圖像進行腐蝕,最后分別對四邊形的四條線段進行擬合可以得到直線的斜率以及位移,再通過計算可以的到四邊形各個參數。原始零件圖以及提取垂直水平方向直線并計算參數擬合直線如圖5所示,由于圖像坐標系坐標原點在左上角,作圖坐標系坐標原點在左下角,所以畫出來的圖像會有90°的旋轉。

圖5 四邊形直線提取擬合示意圖
在四邊形的參數計算當中,選擇使用梯度模板的方法來濾掉部分使用者不需要的信息。例如:在處理橫向直線時的縱向直線;在處理橫向直線時的縱向直線為使用者不需要的信息。處理不需要的信息而對所保留的信息進行處理是對四邊形參數計算時的方法之一,像其他的方法例如:通過判斷四邊形四個頂點的頂點位置來進行點與點之間連線的之間參數計算,在理論上來說也可以實現,但是在實際編程中發現判斷點歸屬的問題比較復雜,且若點不是突出在圖形之外則識別點的位置較為困難,所以未采用這種辦法。
本文介紹了一種可以識別彩色工件的檢測系統,可以根據使用環境、使用情況、使用者的不同自由的選擇工件的檢測位置、大小、形狀,具有較高的檢測精度,相比于傳統的人工檢測可以大大降低檢測的成本精力并且提高檢測精確性,并且此系統可以運用在各個領域。