王國虎,薛進學
(1.鄭州工業(yè)應用技術(shù)學院 機電工程學院,河南 新鄭 451152;2.河南科技大學 機電工程學院,河南 洛陽 471003)
近年來,為適應自動化水平和勞動力成本的不斷提高這一趨勢,各類碼垛機器人得到廣泛應用。碼垛機器人的使用提高了工業(yè)生產(chǎn)的自動化、智能化、標準化程度[1]。其中,機器人視覺作為碼垛機器人應用的一項關(guān)鍵技術(shù)變得越來越重要。機器人視覺系統(tǒng)要求碼垛機器人能夠?qū)Σ煌螤罟ぜ诖a垛時進行判斷與識別。首先機器人視覺系統(tǒng)對工件進行圖像獲取、識別和定位,然后經(jīng)控制部分作出判斷,控制碼垛機器人抓取工件將其置于指定的位置。
在一幅數(shù)字圖像中,邊緣信息雖然只占有有限的像素,但包含了大量的圖像特征信息。因此,邊緣檢測技術(shù)是機器人視覺、數(shù)字圖像處理和圖像分析領域研究的重點和難點[2]。傳統(tǒng)的邊緣檢測算法,如Sobel算法、Roberts算法、Prewitt算法、Log算法、Krich算法等處理效果不理想。1986年John Canny首次提出了Canny邊緣檢測算法,該算法能有效彌補其他傳統(tǒng)邊緣檢測算法的不足,因此Canny算法被認定為邊緣檢測方法中較好的算法[3]。
但是,由于科技的進步,要求邊緣檢時對外部復雜的影響因素處理能力提升。由于對噪聲比較敏感,傳統(tǒng)Canny算法在檢測過程中會有偽邊緣和孤立邊緣點產(chǎn)生,影響了圖像的處理效果[4]。又因為在采用雙閾值方法定位邊緣時,選擇下限閾值會對圖像處理結(jié)果產(chǎn)生很大影響,下限閾值過大時容易丟失邊緣細節(jié),無法形成完整邊緣曲線,造成邊緣曲線出現(xiàn)間斷;而下限閾值過小時又會出現(xiàn)大量的偽邊緣[5]。并且傳統(tǒng)Canny算法獲取的邊緣不能達到單像素級,在一個邊緣點會出現(xiàn)多個響應的現(xiàn)象。這些問題制約了傳統(tǒng)Canny算法在實際生產(chǎn)中的應用。為此,國內(nèi)外很多專家學者對圖像邊緣檢測技術(shù)進行了深入研究,提出了多種改進方法,取得了較好的應用效果。
本文根據(jù)碼垛機器人工作的實際情況,提出一種優(yōu)化改進方法。
碼垛機器人視覺系統(tǒng)是通過碼垛機器人視覺傳感器抓取圖像,然后將圖像傳送至處理單元,通過數(shù)字化處理,根據(jù)像素分布和亮度、顏色等信息,進行尺寸、形狀、顏色等的判別,進而根據(jù)判別結(jié)果控制現(xiàn)場設備動作的系統(tǒng)[6]。
機器人視覺系統(tǒng)一般由光源、光學系統(tǒng),CCD/CMOS攝像機、圖像采集卡、圖像處理軟件、監(jiān)視器、計算機、通信(輸入/輸出)單元等組成。組成關(guān)系如圖1所示。
常用的圖像處理方法有圖像增強、圖像平滑、邊緣銳化、圖像分割和圖像識別等[7]。
圖1 碼垛機器人視覺系統(tǒng)的組成
由于通過碼垛機器人視覺系統(tǒng)獲取的初始圖像質(zhì)量較低,不利于后續(xù)處理,首先要通過圖像處理軟件對其進行圖像處理,輸出改善質(zhì)量后的圖像,以便于計算機對圖像分析、處理和識別,然后通過設計合理的高通濾波器對圖像進行梯度濾波,得到邊緣信息[8]。
邊緣檢測法以物體的邊界對圖像進行分割,通過檢測圖像中的局部不連續(xù)性得到圖像的邊緣(通常將畫面上灰度突變部分當作邊緣),通過一些策略把局部邊緣分割成局部區(qū)域的方法確定物體邊緣。
常用的邊緣檢測的梯度算法有Robert、Sobel、Prewitt和Canny等,在實際應用中這些算法檢測效果各有特點。其中Canny算法由于具有較高的信噪比和檢測精度,在圖像處理領域有著廣泛的應用。
傳統(tǒng)Canny算法通過高斯濾波器對圖像進行平滑處理之后再對梯度幅值進行非極大值抑制,最后設置全局高低閾值th1和th2,選取邊緣點[9]。其邊緣檢測有以下優(yōu)點:(1)信噪比好;(2)定位精度高;(3)單邊緣響應性好。根據(jù)以上準則,Canny推導出最優(yōu)邊緣檢測算法的一個近似實現(xiàn),即邊界點位于圖像被高斯函數(shù)平滑后的梯度幅值的極大點。
由于自動化生產(chǎn)要求機器視覺對外界復雜的條件,如光照不足、噪聲干擾等有更好的適應性,Canny算法的不足主要有:(1)噪聲影響圖像平滑,抑制噪聲過強會使圖像邊緣位置產(chǎn)生偏移;(2)邊緣檢測的高低閾值th1和th2需要實驗測試并通過人為設定,無法滿足自動化檢測的要求。
為彌補Canny算法的不足,本文通過改進的Canny算法,在采用在像素3×3鄰域內(nèi)通過計算x,y,45°,135°這4個方向一階偏導數(shù)有限差分來確定像素梯度幅值的方法,通過構(gòu)造梯度直方圖以及構(gòu)造高、低閾值的方法自動確定最佳閾值。
傳統(tǒng)的Canny算法采用2×2鄰域一階偏導的有限差分來計算平滑后的圖像梯度幅值和方向,x方向和y方向偏微分Px、Py為:
(1)
(2)
梯度幅值M(i,j)為:
(3)
梯度方向θ(i,j)為:
(4)
式中:M(i,j)—反映了圖像像素點(i,j)處的邊緣強度;θ(i,j)—垂直于邊緣的方向。
傳統(tǒng)Canny算法通過濾波抑制噪聲會造成圖像過度光滑,進而造成邊緣丟失及虛假邊緣的產(chǎn)生。本文采用在像素3×3鄰域內(nèi)通過計算x,y,45°,135°這4個方向一階偏導數(shù)有限差分來確定像素梯度幅值的方法,算法如下:
x方向偏導數(shù)Px為:
Px=I[i+1,j]-I[i-1,j]
(5)
y方向偏導數(shù)Py為:
Py=I[i,j+1]-I[i,j-1]
(6)
45°方向偏導數(shù)P45°為:
P45°=I[i-1,j+1]-I[i+1,j-1]
(7)
135°方向偏導數(shù)P135°為:
P135°=I[i+1,j+1]-I[i-1,j-1]
(8)
像素梯度幅值M(i,j)為:
(9)
梯度方向θ(i,j)為:
(10)
改進算法采用3×3鄰域內(nèi)包含8方向的鄰域?qū)μ荻确店嚵蠱(i,j)中的所有像素沿梯度方向進行梯度幅值的插值,檢測幅度的極大值點,進而得到邊緣點,滿足處理過程中抑制噪聲的要求[10]。
Canny算法不能根據(jù)圖像的特征自適應地確定高、低閾值參數(shù),需要進行多次試驗和數(shù)據(jù)統(tǒng)計,并人為設定。鑒于此,本文使用自適應動態(tài)閾值的確定方法。
(1)構(gòu)建梯度直方圖
筆者統(tǒng)計經(jīng)過非極大值抑制后圖像N[i,j]中標志位不為0的像素的梯度幅值,構(gòu)建出梯度直方圖。
(2)構(gòu)建高、低閾值
為了不產(chǎn)生虛假邊緣,必須在梯度直方圖的非邊緣區(qū)域以外的范圍選取高閾值τh。根據(jù)均值和方差的計算方法,本研究利用μ0(t)和σ0或者μ1(t)和σ1計算出非邊緣區(qū)域的范圍。研究發(fā)現(xiàn):利用μ0(t)和σ0確定非邊緣區(qū)域,進而在處理過程中自適應地確定高、低閾值的方法效果良好。當高閾值τh大于μ0(t)與σ0之和時可以認為τh在非邊緣區(qū)域以外,較好地防止虛假邊緣在輪廓圖中出現(xiàn)。
為驗證改進Canny邊緣檢測算法的應用效果,筆者對圖像進行閾值選取實驗,選取最高、低閾值系數(shù)為0.1、0.3對碼垛機器人攝像機視覺圖像進行邊緣檢測,圖像處理結(jié)果如圖(2,3)所示。
圖2 傳統(tǒng)Canny算法(τl=0.1,τh=0.3)
圖3 傳統(tǒng)Canny算法(τl=0.2,τh=0.4)
本研究選取最高、低閾值系數(shù)為0.2、0.4,對碼垛機器人攝像機視覺圖像進行邊緣檢測,圖像處理結(jié)果如圖4所示。
圖4 改進的Canny算法
由圖2、圖4可知:在未找到最適宜最高閾值和最低閾值的情況下,圖像處理結(jié)果會丟失大量的圖片邊緣信息,導致邊緣檢測結(jié)果不連貫。
為對比改進的自適應Canny算法和其他幾種算法的檢測效果,筆者分別取傳統(tǒng)Canny算法、Prewitt算法和Robert算法對碼垛機器人攝像機視覺圖像進行邊緣檢測。傳統(tǒng)Canny算法邊緣檢測出現(xiàn)斷邊及邊緣信息缺失情況,如圖5所示。
圖5 傳統(tǒng)Canny算法
Prewitt算法邊緣檢測結(jié)果如圖6所示。
圖6 Prewitt算法
Robert算法邊緣檢測結(jié)果如圖7所示。
圖7 Roberts算法
由圖7可知:均有斷邊及關(guān)鍵點邊緣信息丟失情況產(chǎn)生。而如圖4所示改進的Canny算法邊緣檢測結(jié)果可以抑制虛假邊緣,并能有效保留原始圖像邊緣信息,其邊緣檢測比傳統(tǒng)Canny算法、Prewitt算法和Robert算法的效果好。
本文介紹了碼垛機器人視覺系統(tǒng)的組成,研究了視覺檢測的原理和方法,針對實際應用中Canny算法在圖像邊緣處理過程中對噪聲敏感和無法自動適應閾值的缺點,通過改變梯度幅值計算方法和自適應設定閾值的方法對其進行了改進。
實驗結(jié)果表明:改進后的Canny算法能有效避免斷邊及虛假邊緣的產(chǎn)生,并能自適應地設定高低閾值取得良好的邊緣處理效果,在圖像邊緣處理效果上要優(yōu)于傳統(tǒng)的Canny算法、Prewitt算法和Robert算法,但改進方法在應用過程中存在運算速度較慢的問題,有待進一步研究解決。