利用圖像處理技術(shù),在50*50CM的區(qū)域內(nèi)識(shí)別出5枚硬幣(硬幣位置任意),并且控制機(jī)械手逐一拾取5枚硬幣,然后把5枚硬幣逐一疊放到指定位置(指定位置隨機(jī))。
圖像處理過程詳解
——LabVIEWVision Assistant
硬幣位置識(shí)別算法分析與設(shè)計(jì)
硬幣的識(shí)別是本系統(tǒng)軟件設(shè)計(jì)最為關(guān)鍵的一步,只有識(shí)別的穩(wěn)定、精確才能控制機(jī)械手拾取硬幣。硬幣的最主要特征為圓形、銀白色、直徑約為25mm。設(shè)計(jì)識(shí)別算法時(shí)也是主要依據(jù)這幾個(gè)特征進(jìn)行選擇相應(yīng)的算法模塊,才能很好的區(qū)分周圍環(huán)境的雜物。處理的總思想:先采集含硬幣的圖片,進(jìn)行一系列的濾波、分割、填補(bǔ)后把除圓形外的雜物排除,再用硬幣模版搜索整幅圖像來確定是否有和硬幣一樣大小的圓形。找到圓形后選擇輸出其中心坐標(biāo)。下面詳細(xì)介紹利用Vision Assistant來快速搭建識(shí)別硬幣的算法,并輸出像素坐標(biāo)。
1.1導(dǎo)入圖片
打開Vision Assistant并單擊左上角的圖片按鈕,導(dǎo)入一幅圖片。
在圖中我們可以看到五枚硬幣,并且還有坐標(biāo)軸、圓圈等雜物,總之現(xiàn)在的圖像是雜亂的,如果用當(dāng)前的圖像直接去搜索硬幣無法做到穩(wěn)定,因?yàn)楫?dāng)光照等外部條件改變時(shí)背景的白色和硬幣的白色在像素值上非常接近很難進(jìn)行識(shí)別。為此在搜索硬幣前必須進(jìn)行一定的閥值濾波。把硬幣外形顯示出來,也就是靠顏色去匹配較難,但靠外形匹配容易而且穩(wěn)定。
1.2轉(zhuǎn)換RGB
圖片中的圖像是RGB的,要先把圖片轉(zhuǎn)成單色的,這樣更利于識(shí)別和后續(xù)算法的處理。在軟件界面的左下部分的Processing Functions中單擊選擇Color。再選擇Color Plane Extraction這一函數(shù)模塊。
處理后我們看到硬幣暗淡了許多,這樣更有利于下一步的分割。
1.3閥值濾波
在Processing Functions中選擇Groyscale,再選擇Threhold。該函數(shù)的功能是選擇閥值以內(nèi)的圖像并且用紅色表示出來。如下圖所示。
在look for選擇,默認(rèn)是Bright Object,所以白色的背景變成了紅色,也就是白色為選擇處理的內(nèi)容。硬幣相對(duì)背景而言是較黑的,所以應(yīng)該在此項(xiàng)選擇Dark Object。
可以看到較黑的硬幣變成了紅色被選中,同時(shí)可以調(diào)節(jié)Threhold Range這一滑調(diào)控件來調(diào)節(jié)閥值,直到滿足硬幣被選中變紅色這一要求為止。然后點(diǎn)擊OK完成本步驟。這是點(diǎn)擊OK后的效果圖,
圖中除硬幣外還有很多的雜物也被標(biāo)注紅色了,這是不希望看到的。
1.4移除小雜物
在processing function中選中Binary,再繼續(xù)選中ADV.Morphology這一函數(shù)模塊。這一函數(shù)包含移除小物體、大物體、補(bǔ)全圖像漏缺等功能。進(jìn)入界面后選中Remove small things ,選中后可以看到圖中軸坐標(biāo)上的阿拉伯?dāng)?shù)字被移除了。
1.5移除邊緣雜物
再選擇一次ADV.Morphology這一函數(shù)模塊,再點(diǎn)擊Remove border object。把圖像中的邊緣去掉,去掉后的效果如下圖所示。
1.6補(bǔ)漏洞
再選擇一次ADV.Morphology這一函數(shù)模塊,再點(diǎn)擊Full holes,從下圖中可以看到,五枚硬幣全部變?yōu)闊o漏洞的紅色。至此五枚硬幣的外形已經(jīng)很完整的提取出來,下一步就是要判斷這五個(gè)外形是不是要找的硬幣。
1.7二值化圖像
在processing function中選擇grayscale中的lookup table這一函數(shù)模塊。該函數(shù)的功能為把圖像進(jìn)行二值化處理,最后輸出像素為0或1的圖像,便于后續(xù)處理。在彈出的界面中選擇equalize這一選項(xiàng),可以看到圖像立即變成了黑白圖像。白色部分即為剛剛被紅色標(biāo)出來的硬幣輪廓。
1.8查找圓形
這是整個(gè)圖像處理中最為關(guān)鍵的一步,LabVIEW vision提供了很多方法來查找具有一定外形的物體,比如shape detection、pattern matching等函數(shù)。而本系統(tǒng)采用的是share matching這一函數(shù),因?yàn)轭櫭剂x這個(gè)函數(shù)的功能是根據(jù)給定外形去查找圖像中是否有相同外形的物體。它的適應(yīng)性更強(qiáng)更穩(wěn)定。在processing functionz中選擇share matching這一函數(shù)模塊。
進(jìn)入界面后單擊create template,彈出選擇界面,選擇圖中任意一個(gè)圓形作為識(shí)別的模版即可。然后單擊finish,即可完成識(shí)別模版選擇。
模版選擇好后,自動(dòng)識(shí)別出五枚硬幣,并且用綠色方框標(biāo)注出來,下方顯示的是對(duì)應(yīng)的硬幣的中心坐標(biāo)。例如第一枚硬幣的中心坐標(biāo)在圖中藍(lán)色方形取閱,它的中心x坐標(biāo)為235,中心y軸坐標(biāo)是94。如下圖所示。
到這一步硬幣識(shí)別已經(jīng)成功了,但是坐標(biāo)還沒有輸出給LabVIEW程序框圖,后續(xù)的電機(jī)控制也就無法進(jìn)行。為此必須選擇坐標(biāo)輸出給后續(xù)的VI。
1.9坐標(biāo)輸出
在右下方單擊select controls這一控件,
進(jìn)入界面后,再在Number of matchings和Shape report前打勾表示這兩項(xiàng)內(nèi)容為輸出內(nèi)容。最后電機(jī)Finish。
在程序框圖中的最后為輸出兩個(gè)控件,一個(gè)是硬幣數(shù)目,另一個(gè)是包含坐標(biāo)信息的簇。至此,硬幣識(shí)別的圖像處理部分全部完成。
2.目標(biāo)點(diǎn)識(shí)別算法分析與設(shè)計(jì)
目標(biāo)點(diǎn)為一紅色的長(zhǎng)方塊,它的識(shí)別與上一節(jié)介紹的硬幣識(shí)別方法類似,只是第8步稍微有些差異,即把匹配的圓形改為方形即可。如下圖所示。
3.利用圖像閉環(huán)控制機(jī)械手算法設(shè)計(jì)
之前介紹的圖像處理算法最后輸出的坐標(biāo)為像素坐標(biāo)并不是真實(shí)的物理坐標(biāo),這樣對(duì)于后面的電機(jī)控制非常不方便,因此在設(shè)計(jì)控制算法前先要進(jìn)行坐標(biāo)換算??紤]到圖像的長(zhǎng)寬像素不一樣(長(zhǎng)為720,寬576,從圖像的左下角處可以讀出),因此必須分開單獨(dú)標(biāo)定,先標(biāo)定x軸方向再標(biāo)定y軸方向。分以下步驟進(jìn)行。
1)x軸像素標(biāo)定。
打開overlay這個(gè)函數(shù)模塊,該模塊的功能為文字標(biāo)注并且自動(dòng)顯示出文字所在的像素坐標(biāo)位置。任取尺子上的兩點(diǎn)A、B,記下A在尺子上的刻度(選擇110MM),從圖中左下角位置直接讀出像素坐標(biāo)(690,286) (這個(gè)坐標(biāo)是可以改變的,當(dāng)這個(gè)坐標(biāo)改變時(shí)圖像中的文字的位置也會(huì)改變。為了便于計(jì)算,同時(shí)為了刻度的均勻性減少圖像畸變帶來的誤差,在選點(diǎn)時(shí)盡量選擇靠近圖像左右邊緣的點(diǎn),如圖中的A點(diǎn)很靠近右邊而且剛好是整數(shù)110MM的刻度);再記下B在尺子上的刻度(250MM),從圖中左下角讀出像素坐標(biāo)(53,286)。
計(jì)算AB兩點(diǎn)真實(shí)長(zhǎng)度Lx=250-110=240mm,對(duì)應(yīng)的像素坐標(biāo)長(zhǎng)度Lp=690-53=637。則可計(jì)算在x軸方向,每?jī)蓚€(gè)像素點(diǎn)的對(duì)應(yīng)的實(shí)際長(zhǎng)度Lpx=240/637=0.3767 mm/pix。
2)y軸的像素標(biāo)定。
與x軸標(biāo)定類似記錄下y軸上的兩點(diǎn)C、D坐標(biāo)。如下面兩張圖所示,分別為C點(diǎn)刻度175mm,C像素坐標(biāo)(284,27);D點(diǎn)刻度100mm,D點(diǎn)像素坐標(biāo)(284,407)。
計(jì)算CD兩點(diǎn)真實(shí)長(zhǎng)度Ly=175-100=75mm,對(duì)應(yīng)的像素坐標(biāo)長(zhǎng)度Lp=407-27=380pix。則可計(jì)算在y軸方向,每?jī)蓚€(gè)像素點(diǎn)的對(duì)應(yīng)的實(shí)際長(zhǎng)度Lpy=75/380=0.197 mm/pix。
3)建立坐標(biāo)系。
以像素中心O(720/2,576/2)=(360,288)為原點(diǎn),以x軸方向向右為正,以y軸方向向上為正建立xoy坐標(biāo)系。則從圖像處理后出來的像素坐標(biāo)即可轉(zhuǎn)換成真實(shí)的坐標(biāo)。例如Z(x,y),則z的真實(shí)坐標(biāo)Zx=(x-360)×Lpx=(x-360)×0.3767mm;Zy=(y-288)×0.197mm。
建立好坐標(biāo)系后,在分析機(jī)械手的控制算法前,先分析下機(jī)械手控制模型。在下圖中假設(shè)機(jī)械手平臺(tái)上有一枚硬幣A(x,y),則對(duì)應(yīng)的在攝像頭圖像中的坐標(biāo)為A’(x’,y’)。而當(dāng)前時(shí)刻機(jī)械手上的電磁鐵的位置在O’點(diǎn)。O’A’的距離即為要機(jī)械手與硬幣的距離,也是要控制電機(jī)所走的距離,關(guān)于高度Z可暫時(shí)忽略。為了讓機(jī)械手從O’點(diǎn)走到A’可以先把R軸伸長(zhǎng),再使θ軸轉(zhuǎn)過一定的角度即可。
在之前寫的硬件設(shè)計(jì)(長(zhǎng)著眼睛的機(jī)械手(六))中可以知道R軸上的步進(jìn)電機(jī)的步距為0.01mm,則R軸步進(jìn)電機(jī)脈沖數(shù)n=x’/0.01;但在實(shí)際調(diào)試中并不止控制一次電機(jī),而是把x’作為反饋控制量去控制R軸的電機(jī),只要x’>2mm,就一直輸出脈沖n給步進(jìn)電機(jī),直到x’<2mm。
在控制地盤θ軸上與R軸不相同,因?yàn)榈妆P為直流電機(jī)控制。想直接通過控制直流電機(jī)來使轉(zhuǎn)盤轉(zhuǎn)到一定的位置是不可能,而且還有考慮到轉(zhuǎn)盤齒輪的行程差。為此必須采用實(shí)時(shí)閉環(huán)的方法而且要用脈寬的長(zhǎng)短來控制電機(jī)的轉(zhuǎn)速。在小區(qū)域內(nèi)可以用y’近似去代替O’與A’的角度差,再用y’去控制直流電機(jī)的驅(qū)動(dòng)時(shí)間。Y’有正負(fù)電機(jī)也能正反轉(zhuǎn)。直到y(tǒng)’<5為止。
整個(gè)控制方法的核心在于,不管x’和y’具體值是多少,只要機(jī)械手不在硬幣的正上方(也就是x’y’大于某個(gè)值)就不斷去驅(qū)動(dòng)電機(jī),直到機(jī)械手很接近硬幣的正上方為止。在機(jī)械手走到硬幣的上方后,再控制Z軸的步進(jìn)電機(jī)使之下降一定的距離,再使電磁鐵得電即可把硬幣拾取。
控制機(jī)械手到目標(biāo)方塊的上方也是類似的思路,根據(jù)圖像中方塊的位置坐標(biāo)進(jìn)行反饋控制電機(jī),直到坐標(biāo)在一定的范圍內(nèi)。再控制Z軸下降,下降到一定的高度后再釋放電磁鐵使硬幣放下。
-
軟件
+關(guān)注
關(guān)注
69文章
4945瀏覽量
87513 -
圖像處理技術(shù)
+關(guān)注
關(guān)注
0文章
33瀏覽量
10067 -
算法分析
+關(guān)注
關(guān)注
0文章
9瀏覽量
7630
原文標(biāo)題:圖像處理——過程全解析,配圖超詳細(xì)!
文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論