国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于MATLAB 的彩色基本形狀檢測(cè)設(shè)計(jì)

2019-10-15 07:17:50袁良祺劉力雙顧淑琪田暢
現(xiàn)代計(jì)算機(jī) 2019年24期
關(guān)鍵詞:零件圖像素點(diǎn)四邊形

袁良祺,劉力雙,顧淑琪,田暢

(北京信息科技大學(xué)儀器科學(xué)與光電工程系,北京100192)

0 引言

在生產(chǎn)作業(yè)中,想要實(shí)現(xiàn)自動(dòng)化技術(shù)在各個(gè)領(lǐng)域的應(yīng)用,對(duì)機(jī)器視覺的數(shù)字圖像進(jìn)行處理顏色識(shí)別以及參數(shù)計(jì)算往往是重中之重,機(jī)器判斷目標(biāo)的位置主要通過圖像中的某些特征圖形來進(jìn)行定位,圖像識(shí)別系統(tǒng)主要是針對(duì)圖像圖形的顏色以及圖像中的各個(gè)基本形狀參數(shù)進(jìn)行計(jì)算。

計(jì)算機(jī)視覺檢測(cè)是指利用計(jì)算機(jī)圖像處理系統(tǒng)來模擬人類視覺進(jìn)行檢測(cè)對(duì)象的分類、識(shí)別和測(cè)量的技術(shù),具有檢測(cè)效率高、可檢測(cè)指標(biāo)多、可非接觸測(cè)量、檢測(cè)結(jié)果客觀等優(yōu)點(diǎn)[1]。在圖像的識(shí)別與檢測(cè)中,檢測(cè)的基本圖形如四邊形、圓形及橢圓計(jì)算得到參數(shù)以后可以進(jìn)行更加復(fù)雜的圖形疊加的參數(shù)計(jì)算,復(fù)雜的圖形都是由簡(jiǎn)單的圖形疊加起來的,所以檢測(cè)簡(jiǎn)單圖形的特征參數(shù)對(duì)于計(jì)算機(jī)視覺檢測(cè)具有重要的意義。因此可以通過這樣機(jī)器視覺檢測(cè)系統(tǒng)對(duì)復(fù)雜圖形零件圖進(jìn)行參數(shù)計(jì)算來判斷零件的大小是否標(biāo)準(zhǔn)。

2019 年北京信息科技大學(xué)《視覺檢測(cè)系統(tǒng)設(shè)計(jì)與實(shí)踐》課程設(shè)計(jì)主要是針對(duì)顏色識(shí)別以及基本形狀的參數(shù)計(jì)算,根據(jù)課程設(shè)計(jì)的題目要求利用MATLAB 設(shè)計(jì)出一套針對(duì)此課程設(shè)計(jì)的系統(tǒng)具有十分重要的意義。

MATLAB 軟件是美國(guó)MathWorks 公司出品的一款商業(yè)軟件,廣泛應(yīng)用于算法開發(fā)、數(shù)據(jù)可視化、數(shù)值計(jì)算、圖形圖像處理等領(lǐng)域,其圖形用戶界面(Graphical User Interface,GUI)具有高效、方便等特征,有助于直觀、便捷的人機(jī)交互界面的快速設(shè)計(jì)與實(shí)現(xiàn)[2-3]。使用MATLAB GUI 提出了一個(gè)顏色識(shí)別及基本形狀參數(shù)計(jì)算的方法,設(shè)計(jì)并實(shí)現(xiàn)了一個(gè)彩色基本形狀檢測(cè)系統(tǒng)。

1 識(shí)別圖像的截取

對(duì)于不同使用者需要識(shí)別的圖像不同、所識(shí)別的圖像大小不同、圖像所在區(qū)域不同,本設(shè)計(jì)采用自由的圖像截取方式,使用者讀取需要識(shí)別的圖像后采用roipoly 函數(shù)在圖像上使用鼠標(biāo)進(jìn)行點(diǎn)的選擇,如圖1(a)所示為截取零件圖中單個(gè)橢圓零件的截取圖,藍(lán)色點(diǎn)為使用在使用鼠標(biāo)左鍵在圖像上面進(jìn)行的選取點(diǎn)操作,選取點(diǎn)的連線應(yīng)是封閉圖形。選取點(diǎn)的位置任意、選取點(diǎn)的個(gè)數(shù)任意、選取點(diǎn)的任意、選取點(diǎn)與點(diǎn)之間的長(zhǎng)度任意。

在選取的區(qū)域點(diǎn)擊右鍵選擇Create Mask 可以獲得截取所截取的區(qū)域的形狀,如圖1(b)所示,為截取下來的二值圖,此時(shí)可以將截取下來的圖像與原始圖像相乘再加上截取圖像取反,可以得到橫縱像素點(diǎn)與原圖大小相等的被截取下來的橢圓零件圖的圖像,這樣的從多個(gè)零件圖中截取到的單個(gè)零件圖如圖1(c)所示。

圖1 截取零件圖中單個(gè)橢圓零件圖

2 圖像的顏色識(shí)別

圖像的顏色識(shí)別主要是預(yù)先設(shè)定一個(gè)顏色對(duì)應(yīng)區(qū)間,再將圖片有色彩的圖片(一般來說是RGB 圖)進(jìn)行每個(gè)像素點(diǎn)的對(duì)應(yīng)顏色區(qū)間的判斷。顏色對(duì)應(yīng)區(qū)間可以先讀取任意數(shù)量的顏色圖像,通過MATLAB 讀取此圖像像素點(diǎn)的顏色區(qū)間值來規(guī)定顏色區(qū)間范圍,這種規(guī)定顏色區(qū)間的方法可以稱為顏色識(shí)別系統(tǒng)的學(xué)習(xí),再將學(xué)習(xí)到的顏色區(qū)間值編寫進(jìn)程序再對(duì)顏色進(jìn)行判斷。本設(shè)計(jì)對(duì)顏色空間的圖像進(jìn)行有效處理都是在HSV 空間進(jìn)行的,然后對(duì)于基本色中對(duì)應(yīng)的HSV 分量需要給定一個(gè)嚴(yán)格的范圍,H:0-180;S:0-255;V:0-255。

表1 十種基礎(chǔ)顏色對(duì)應(yīng)的HSV 顏色分量范圍[2]

在MATLAB 中可以采用rgb2hsv 的函數(shù)將RGB圖像轉(zhuǎn)換到HSV 區(qū)域里進(jìn)行處理,采用if 以及elseif函數(shù)來判斷單個(gè)像素點(diǎn)的顏色歸屬。表1 為十種基礎(chǔ)顏色分別是黑灰白紅橙黃綠青藍(lán)紫的HSV 對(duì)應(yīng)區(qū)間數(shù)值范圍。例如,圖像中某個(gè)像素點(diǎn)的HSV 值分別為5、50、50 則判斷此點(diǎn)為紅色點(diǎn)并計(jì)數(shù)。

得到圖像的橫縱像素點(diǎn)個(gè)數(shù)后,再使用兩個(gè)for 循環(huán)遍歷二維圖像的所有像素點(diǎn),根據(jù)表1 所示HSV 顏色分量范圍對(duì)所有像素點(diǎn)的顏色進(jìn)行對(duì)應(yīng)HSV 區(qū)間的識(shí)別,并計(jì)算各個(gè)HSV 顏色分量范圍的像素點(diǎn)個(gè)數(shù),判斷像素點(diǎn)數(shù)量最多的顏色區(qū)域則是被識(shí)別物體的顏色,如圖2 所示為顏色識(shí)別程序流程圖。

圖2 顏色識(shí)別程序流程圖

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

圖3 單個(gè)零件顏色識(shí)別效果圖

3 基本形狀的參數(shù)計(jì)算

最大多數(shù)的復(fù)雜圖形都可以看成簡(jiǎn)單圖形的疊加,所以在本設(shè)計(jì)中僅介紹了部分簡(jiǎn)單圖形的參數(shù)計(jì)算方法以及展現(xiàn)了參數(shù)計(jì)算效果。

進(jìn)行基本形狀的參數(shù)計(jì)算步驟如圖4 所示,對(duì)于所有基本圖形的處理都應(yīng)該截取單個(gè)所希望獲得的零件圖,再使用結(jié)構(gòu)元素對(duì)圖像進(jìn)行腐蝕以得到其外部輪廓邊界。由于不同圖形的特征不同,所以跟蹤對(duì)象的外部邊界以及進(jìn)行參數(shù)計(jì)算的擬合程序也不相同。對(duì)于所選擇截取的圖形選擇對(duì)應(yīng)的擬合方法進(jìn)行擬合得到圖形的參數(shù)并輸出顯示。

圖4 圖形進(jìn)行參數(shù)計(jì)算基本流程圖

3.1 橢圓的參數(shù)計(jì)算

對(duì)于橢圓的擬合采用的是最小二乘法進(jìn)行橢圓擬合,采用MATLAB 的官網(wǎng)上所介紹的橢圓擬合子程序進(jìn)行橢圓參數(shù)的計(jì)算,對(duì)于橢圓的個(gè)數(shù)可從一個(gè)到幾個(gè)不等,橢圓方程如公式(1)所示,可以通過子程序的到各個(gè)自變量的系數(shù)以及傾斜角度。

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

表2 綠色橢圓的各項(xiàng)參數(shù)

3.2 圓形的參數(shù)計(jì)算

對(duì)于零件圖中的圓形部分,首先分布將圓形截取出來,使之成為單個(gè)的零件圖。再對(duì)此單個(gè)圓形的零件圖進(jìn)行處理,如圖4 所示,對(duì)于圓形的參數(shù)計(jì)算主要根據(jù)圓半徑以及中心點(diǎn)的方法編寫MATLAB 程序。程序的主要思路是將圓的所有點(diǎn)的坐標(biāo)都得到,然后通過數(shù)學(xué)計(jì)算的方式的得到圓的擬合曲線以及圓的各項(xiàng)參數(shù)。其中的難點(diǎn)在于得到了圓上所有的坐標(biāo)點(diǎn)后如何計(jì)算來得到圓的各項(xiàng)參數(shù)。圓擬合曲線的公式推導(dǎo)過程部分如下,最小二乘法擬合圓曲線:

R2=(x-A)2+(y-B)2

化簡(jiǎn)為一般形式:R2=x2-2Ax+A2+y2-2By+B2

令:

a=-2A

b=-2B

c=A2+B2-R2

轉(zhuǎn)換方程可以得到圓曲線方程的另一個(gè)形式:

x2+y2+ax+by+c=0

只需要求出參數(shù)a,b,c 就可以求的圓心半徑的參數(shù)[3]:

3.3 四邊形的參數(shù)計(jì)算

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

圖5 四邊形直線提取擬合示意圖

4 系統(tǒng)結(jié)構(gòu)功能的其他實(shí)現(xiàn)辦法

在四邊形的參數(shù)計(jì)算當(dāng)中,選擇使用梯度模板的方法來濾掉部分使用者不需要的信息。例如:在處理橫向直線時(shí)的縱向直線;在處理橫向直線時(shí)的縱向直線為使用者不需要的信息。處理不需要的信息而對(duì)所保留的信息進(jìn)行處理是對(duì)四邊形參數(shù)計(jì)算時(shí)的方法之一,像其他的方法例如:通過判斷四邊形四個(gè)頂點(diǎn)的頂點(diǎn)位置來進(jìn)行點(diǎn)與點(diǎn)之間連線的之間參數(shù)計(jì)算,在理論上來說也可以實(shí)現(xiàn),但是在實(shí)際編程中發(fā)現(xiàn)判斷點(diǎn)歸屬的問題比較復(fù)雜,且若點(diǎn)不是突出在圖形之外則識(shí)別點(diǎn)的位置較為困難,所以未采用這種辦法。

5 結(jié)語

本文介紹了一種可以識(shí)別彩色工件的檢測(cè)系統(tǒng),可以根據(jù)使用環(huán)境、使用情況、使用者的不同自由的選擇工件的檢測(cè)位置、大小、形狀,具有較高的檢測(cè)精度,相比于傳統(tǒng)的人工檢測(cè)可以大大降低檢測(cè)的成本精力并且提高檢測(cè)精確性,并且此系統(tǒng)可以運(yùn)用在各個(gè)領(lǐng)域。

猜你喜歡
零件圖像素點(diǎn)四邊形
圓錐曲線內(nèi)接四邊形的一個(gè)性質(zhì)
基于canvas的前端數(shù)據(jù)加密
四邊形逆襲記
4.4 多邊形和特殊四邊形
“軸承的配合制選用”的教學(xué)心得
淺談機(jī)修鉗工實(shí)訓(xùn)中的零件測(cè)繪
《機(jī)械制圖》中裝配圖的識(shí)讀
速讀·中旬(2017年6期)2017-07-29 17:53:13
基于逐像素點(diǎn)深度卷積網(wǎng)絡(luò)分割模型的上皮和間質(zhì)組織分割
繪制工程圖紙時(shí)常見問題分析及研究
基于Node-Cell結(jié)構(gòu)的HEVC幀內(nèi)編碼
修文县| 越西县| 六盘水市| 法库县| 武威市| 宜昌市| 彭阳县| 大关县| 丹东市| 沈丘县| 勃利县| 枣强县| 老河口市| 林西县| 崇阳县| 丹巴县| 自贡市| 礼泉县| 西宁市| 乌苏市| 永胜县| 济宁市| 邵阳市| 石楼县| 八宿县| 洛川县| 辽中县| 瑞丽市| 富阳市| 江城| 平舆县| 共和县| 巴彦淖尔市| 林口县| 岑溪市| 宕昌县| 廊坊市| 枞阳县| 辉县市| 高淳县| 榆林市|