阮殿旭
(沙洲職業(yè)工學(xué)院,江蘇 張家港 215600)
在機(jī)器人零配件生產(chǎn)裝配等過(guò)程中,對(duì)零件的關(guān)鍵尺寸和參數(shù)進(jìn)行測(cè)量是整臺(tái)機(jī)器人集成后的重要質(zhì)量保證手段,其測(cè)量結(jié)果直接影響機(jī)器人的質(zhì)量和后續(xù)工序能否正常進(jìn)行。近年來(lái),隨著視覺(jué)技術(shù)的發(fā)展,在基于計(jì)算機(jī)視覺(jué)和圖像處理技術(shù)的零件檢測(cè)方面的應(yīng)用越來(lái)越廣泛,在機(jī)器人零件測(cè)量方面,直線(xiàn)檢測(cè)和圓形檢測(cè)應(yīng)用最為普遍。其中直線(xiàn)和圓形的檢測(cè)最經(jīng)典的算法是霍夫變換(Hough Transform),經(jīng)過(guò)多年發(fā)展和改進(jìn),從最初始的霍夫變換到各種改進(jìn)型霍夫變換算法,已經(jīng)成為一類(lèi)最常用的龐大的算法族[1],經(jīng)擴(kuò)展后的霍夫變換也可以檢測(cè)其他簡(jiǎn)單的圖像結(jié)構(gòu),如橢圓等。
在初始霍夫變換基礎(chǔ)上,通過(guò)參數(shù)變換和耦合等方面的改進(jìn),出現(xiàn)了很多改進(jìn)算法。本文對(duì)采用區(qū)域劃分和參數(shù)空間變換點(diǎn)聚集狀態(tài)選擇優(yōu)化的方法進(jìn)行改進(jìn),通過(guò)粒子群算法實(shí)現(xiàn)霍夫變換參數(shù)的優(yōu)化,同時(shí)通過(guò)置信投票優(yōu)化,去除懶惰粒子,降低算法的計(jì)算量,提高處理速度,同時(shí)提高目標(biāo)物體的投票結(jié)果精度。
初始霍夫變換是由Paul Hough 于1962年提出的圖像處理中的一種特征提取技術(shù)?;舴蜃儞Q通過(guò)一種投票算法檢測(cè)具有特定形狀的物體,將圖像空間中的圖形檢測(cè)對(duì)應(yīng)為參數(shù)空間的投票統(tǒng)計(jì),將圖像空間和參數(shù)空間形成映射關(guān)系,在一個(gè)參數(shù)空間中通過(guò)計(jì)算累計(jì)結(jié)果的局部最大值,得到一個(gè)符合該特定形狀的集合作為霍夫變換結(jié)果。通常將參數(shù)空間稱(chēng)作Hough 空間,投票的維數(shù)取決于檢測(cè)圖形的參數(shù)的個(gè)數(shù)。
霍夫變換原理是利用圖像空間點(diǎn)與變換空間線(xiàn)的對(duì)偶性,將圖像空間中檢測(cè)的所有點(diǎn)參數(shù)變換到參數(shù)空間中成為相對(duì)應(yīng)的線(xiàn),選出參數(shù)空間中變換的多條曲線(xiàn)相交點(diǎn),其對(duì)應(yīng)橫軸和縱軸的值作為圖像空間線(xiàn)的參數(shù),就是對(duì)應(yīng)圖像空間中的直線(xiàn)參數(shù)。但由于原始圖像空間每個(gè)像素轉(zhuǎn)換到變換空間都是一條曲線(xiàn),為曲線(xiàn)交點(diǎn)投票,投票越多,該點(diǎn)所對(duì)應(yīng)的圖像空間的這條線(xiàn)檢測(cè)目標(biāo)的可能性越大,因此該類(lèi)算法涉及大量的投票,雖然原理簡(jiǎn)單,但變換和投票需要大量的計(jì)算空間,運(yùn)行速度慢、效率低,而且對(duì)于小尺寸的直線(xiàn)檢測(cè)結(jié)果不夠精確,很難滿(mǎn)足實(shí)時(shí)要求和精度要求,從而影響了霍夫變換實(shí)際應(yīng)用范圍[2]。
霍夫變換是實(shí)現(xiàn)兩個(gè)坐標(biāo)空間的映射,由于圖像上的像素?cái)?shù)量大,所需的計(jì)算量就很大,占據(jù)大量?jī)?nèi)存,檢測(cè)耗時(shí)嚴(yán)重,很難達(dá)到實(shí)時(shí)測(cè)量。因此,很多學(xué)者通過(guò)研究改進(jìn),提出了檢測(cè)速度快、精度高的優(yōu)化霍夫變換。Galambos 等使用梯度信息來(lái)控制投票過(guò)程,將像素正確地分配給一條線(xiàn),以加速算法[3]。Matas 等提出概率霍夫變換,隨機(jī)獲取圖像坐標(biāo)系中的前景像素點(diǎn),變換到Hough 空間,對(duì)極坐標(biāo)上的曲線(xiàn)交點(diǎn)進(jìn)行投票,根據(jù)投票數(shù)量找出最可能的直線(xiàn)[4]。Cheng Z 提出一種嚴(yán)格的隨機(jī)霍夫變換方法,用小的隨機(jī)樣本集取代全部樣本集進(jìn)行預(yù)處理,以減少錯(cuò)誤選擇點(diǎn)[5]。陳陽(yáng)等提出了基于約束優(yōu)化的車(chē)道線(xiàn)識(shí)別算法[6],首先采用概率統(tǒng)計(jì)原理對(duì)車(chē)道線(xiàn)點(diǎn)集分類(lèi),依據(jù)分類(lèi)情況投票判斷車(chē)道線(xiàn),其次采用極徑極角約束優(yōu)化在目標(biāo)區(qū)域篩選目標(biāo)車(chē)道線(xiàn)。張英濤提出一種基于精簡(jiǎn)粒子群優(yōu)化的霍夫變換算法[7],采用精簡(jiǎn)粒子群優(yōu)化算法對(duì)霍夫變換進(jìn)行優(yōu)化。李亞娣等提出了基于Canny 算子和Hough 變換的夜間車(chē)道線(xiàn)檢測(cè)[8],在邊緣圖像底部區(qū)域中利用Hough 變換進(jìn)行直線(xiàn)擬合,在斜率約束的基礎(chǔ)上提取內(nèi)側(cè)車(chē)道線(xiàn)。
粒子群優(yōu)化算法(Particle Swarm Optimization)是一種群體智能進(jìn)化算法,1995年由Eberhart博士和Kennedy 博士提出。粒子群優(yōu)化算法模擬鳥(niǎo)群捕食行為,鳥(niǎo)群在一片食物源隨機(jī)分布的區(qū)域找到最大的食物源(優(yōu)化問(wèn)題的全局最優(yōu)解),尋找食物時(shí),通過(guò)鳥(niǎo)群個(gè)體之間的信息交流,讓其他鳥(niǎo)最終都能聚集到最大食物源處,也即尋找到區(qū)域內(nèi)的最優(yōu)解。
在n 維解空間中,粒子群優(yōu)化算法初始化為一群隨機(jī)粒子,表示為Bi= (b1,b2, …,bn),每個(gè)粒子包含兩個(gè)屬性,即速度和位置,粒子速度Vi= (v1,v2, …,vn),粒子位置 (x1,x2, …,xn),粒子通過(guò)更新速度和位置尋找最優(yōu)解,更新的條件是跟蹤不同位置的極值(pbest,gbest),其中:pbest為粒子群的個(gè)體最優(yōu)位置,gbest為群體最優(yōu)位置的n 維向量;更新計(jì)算使用式(1):
式中:ci,c2為加速常數(shù),調(diào)節(jié)學(xué)習(xí)步長(zhǎng);rand()為隨機(jī)函數(shù),取值范圍在0-1 之間,以增加全局性;w為慣性權(quán)重,調(diào)節(jié)空間的搜索范圍;i為當(dāng)前粒子。
將粒子群算法與霍夫變換相結(jié)合,同時(shí)引入投票優(yōu)化策略。對(duì)原始圖片的前景像素進(jìn)行霍夫變換,把得到的變換空間參數(shù)作為粒子群個(gè)體的位置,使用粒子群優(yōu)化算法尋找最優(yōu)解,將霍夫變換的累加數(shù)組設(shè)置為適應(yīng)度函數(shù)值,通過(guò)迭代得到最優(yōu)的參數(shù),在迭代過(guò)程中,引入投票優(yōu)化策略,將每次更新的粒子中的“懶惰粒子”剔除,有助于提高運(yùn)算效率。
在圖像坐標(biāo)系中,用y kx b= + 表示直線(xiàn)的方程,當(dāng)直線(xiàn)角度為90 度,即k=∞時(shí),b的取值無(wú)法滿(mǎn)足計(jì)算,因此,將直線(xiàn)方程替換為極坐標(biāo)方程如式(2):
原始圖像坐標(biāo)系中的一點(diǎn)P(X1,Y1),使用霍夫變換后得到式(3):
此時(shí)從圖像坐標(biāo)系變換到Hough 空間坐標(biāo)系中,P(X1,Y1)一個(gè)點(diǎn)變換為一條正弦曲線(xiàn),圖像坐標(biāo)系中一條直線(xiàn)變換到Hough 空間,則是一組有一個(gè)共同相交點(diǎn)的正弦曲線(xiàn),并且這一組曲線(xiàn)的交點(diǎn)所對(duì)應(yīng)的(ρ,θ) 即為原始圖像坐標(biāo)系中直線(xiàn)的參數(shù)。
改進(jìn)的霍夫變換算法過(guò)程:
(1)確定初始粒子群為Q( 0) = {P1,P2…PN},種群規(guī)模為N,為極坐標(biāo)系參數(shù)ρ和θ設(shè)置ρ0和0θ初始值,并將累加數(shù)組初始化為0;
(2)對(duì)原始圖像進(jìn)行基于Canny 算子的邊緣識(shí)別,獲得檢測(cè)對(duì)象邊緣點(diǎn)集合;
(3)在集合中隨機(jī)任取兩點(diǎn)P1和P2,計(jì)算P1和P2連接成一條直線(xiàn),其斜率和截距參數(shù)作為粒子的初始化位置X0,并重復(fù)將所有任意兩點(diǎn)組成的直線(xiàn)參數(shù)粒子都完成初始賦值;
(4)對(duì)每個(gè)種群粒子的速度進(jìn)行初始化賦值V0;
(5)通過(guò)適應(yīng)度函數(shù),計(jì)算種群粒子的適應(yīng)度值f(X0(k,ρ k,θk));
(6)種群粒子對(duì)最佳適應(yīng)度值和當(dāng)前適應(yīng)度值進(jìn)行比較,并根據(jù)適應(yīng)度值更新種群粒子的位置P;
(7)從當(dāng)前種群中選出最佳適應(yīng)度的位置作為全局最佳值;
(8)對(duì)參數(shù)空間中的交叉點(diǎn)進(jìn)行投票統(tǒng)計(jì)優(yōu)化,將一些進(jìn)化效果不明顯的“懶惰粒子”剔除;
(9)更新下一代進(jìn)化時(shí)種群粒子的速度;
(10)更新種群中粒子的位置;
(11)返回第5 步,重復(fù)執(zhí)行,直到迭代完成。
實(shí)驗(yàn)測(cè)試硬件環(huán)境:計(jì)算機(jī)(CPU 主頻3.40GH,內(nèi)存4G),軟件環(huán)境:VC++6.0。圖像對(duì)象為Buddy6F 型號(hào)的六軸協(xié)作機(jī)器人減速器盤(pán)型零件,檢測(cè)目標(biāo)利用霍夫變換檢測(cè)直線(xiàn)確定V 型角的角度。
通過(guò)對(duì)圖像進(jìn)行具體分析可知,如果對(duì)整個(gè)圖片進(jìn)行處理,需要更大的計(jì)算量和內(nèi)存。在本文中確定需要檢測(cè)的目標(biāo)位置為盤(pán)類(lèi)零件的端部(帶有V 型槽),用Opencv4.3 庫(kù)進(jìn)行編程,實(shí)現(xiàn)對(duì)V 型槽區(qū)域ROI 的操作。
使用到的函數(shù):矩形的表示 Rect 類(lèi)>Rect(x,y,width,heigh)。
Rect 類(lèi)的成員變量有x、y、width、height,分別定位在圖片的左上角點(diǎn)的坐標(biāo)和選擇區(qū)域的寬和高。結(jié)果如圖1、圖2 所示。
圖1 機(jī)器人減速器盤(pán)形零件實(shí)圖
圖2 機(jī)器人減速器盤(pán)形零件局部興趣區(qū)域圖
算法按照以下步驟完成:
(1)控制相機(jī)拍攝目標(biāo)圖片;
(2)利用OPENCV 相關(guān)函數(shù)實(shí)現(xiàn)興趣區(qū)域的選擇和截??;
(3)對(duì)圖片中V 型夾角的兩條邊進(jìn)行改進(jìn)的霍夫變換,找出邊線(xiàn),測(cè)量角度。
測(cè)試結(jié)果如圖3、圖4 所示,兩張圖大小均為600×480。圖3 是利用經(jīng)典Hough 變換得到的結(jié)果,圖4 是利用本文算法并且統(tǒng)計(jì)投票閾值80%時(shí)的粒子群優(yōu)化檢測(cè)結(jié)果。
圖3 利用傳統(tǒng)霍夫變換得到直線(xiàn)檢測(cè)圖像
圖4 利用80%投票閾值粒子群優(yōu)化得到直線(xiàn)檢測(cè)圖像
用本文設(shè)計(jì)的算法(PSOCVHT)與概率霍夫變換算法(PPHT)、限制隨機(jī)霍夫變換算法(RRHT)的性能進(jìn)行比較,由對(duì)比結(jié)果(表1)可知,本文算法具有較高的效率和更高的檢測(cè)精確度。
表1 PSOCVHT 與PPHT、RRHT 處理結(jié)果比較
將直線(xiàn)圖形的霍夫變換與粒子群算法相結(jié)合,并引入投票優(yōu)化,提出了基于粒子群優(yōu)化改進(jìn)霍夫變換的協(xié)作機(jī)器人減速器盤(pán)類(lèi)零件角度測(cè)量算法,該改進(jìn)算法與利用傳統(tǒng)Hough 變換檢測(cè)算法進(jìn)行了對(duì)比實(shí)驗(yàn),結(jié)果表明:選用合理的投票閾值的粒子群優(yōu)化算法對(duì)霍夫變換改進(jìn),不僅降低了霍夫變換的計(jì)算量,而且提高了角度檢測(cè)的準(zhǔn)確率。
沙洲職業(yè)工學(xué)院學(xué)報(bào)2021年4期