姜金華,王 倩,姜景科
(1.上海第二工業(yè)大學(xué)智能制造與控制工程學(xué)院,上海 201209;2.上海大學(xué)機(jī)電工程與自動(dòng)化學(xué)院,上海 200444)
近年來,智能制造以飛躍式的跨度在制造業(yè)的各個(gè)維度得到了體現(xiàn)。螺絲作為零部件中重要的連接器件,在各類設(shè)備中都有廣泛的應(yīng)用。而在拆解設(shè)備的過程,如果不能有效地對(duì)螺絲進(jìn)行拆解,則會(huì)造成設(shè)備的暴力拆解。這將大大降低拆解的效率與廢舊材料的回收利用率。
機(jī)器視覺在當(dāng)前的工業(yè)應(yīng)用非常廣泛,包括視覺測(cè)量、產(chǎn)品分揀、視覺定位等[1-4]。本文中,機(jī)器視覺主要應(yīng)用到拆解流水線的螺絲拆解中,主要用于獲取目標(biāo)測(cè)量物的特征點(diǎn),并對(duì)其進(jìn)行相應(yīng)的處理轉(zhuǎn)換,從而獲得所需的物理量[5-6]。
人工蜂群(artificial colony algorithm,ABC)算法是一種元啟發(fā)式群體智能優(yōu)化算法[7],由土耳其學(xué)者 Karaboga 在2005年提出。該算法是一種模擬蜜蜂群體尋找優(yōu)良蜜源的仿生類智能計(jì)算方法[8-9]。人工蜂群算法的主要特點(diǎn)是不需要了解問題的特殊信息,只需要對(duì)問題的尋優(yōu)結(jié)果進(jìn)行優(yōu)劣的比較[10-11]。通過蜂群個(gè)體在局部的尋優(yōu)行為,最終在群體中使全局最優(yōu)值凸顯出來,使得整個(gè)算法具有較好的全局搜索能力。這是一種廣義的鄰域搜索算法,有著較快的收斂速度,具有較強(qiáng)的通用性,能夠很好地與實(shí)際問題相結(jié)合,應(yīng)用方向較為廣泛[12]。
基于圖像處理的螺絲內(nèi)紋偏轉(zhuǎn)角度測(cè)量的程序設(shè)計(jì)結(jié)構(gòu)流程如圖1所示。
圖1 程序設(shè)計(jì)結(jié)構(gòu)流程圖
首先,需要對(duì)原始圖像進(jìn)行灰度化、濾波和二值化處理,從而將原始的彩色圖像轉(zhuǎn)換為理想的二值化圖像。對(duì)獲得的二值化圖像進(jìn)行濾波、填充,然后將螺絲內(nèi)紋的圖像剪裁,并獲內(nèi)紋的輪廓圖像。將輪廓的像素信息轉(zhuǎn)換為坐標(biāo)信息,對(duì)輪廓的坐標(biāo)進(jìn)行轉(zhuǎn)換、分割,并對(duì)分割的各部分?jǐn)?shù)據(jù)進(jìn)行曲線擬合。最后,應(yīng)用人工蜂群算法對(duì)每條擬合曲線求最大值并計(jì)算各部分的偏轉(zhuǎn)角度,利用均值濾波減小各部分偏轉(zhuǎn)角度在求解中造成的誤差。
在獲取螺絲的原始圖像后,首先將彩色圖像轉(zhuǎn)換為灰度圖像,從而降低圖像的數(shù)據(jù)量,減小后續(xù)圖像的計(jì)算量。灰度化處理一般有:平均值法、最大值法和加權(quán)平均值法。這里采用R(0.30)、G(0.59)、B(0.11)的加權(quán)平均值法。對(duì)轉(zhuǎn)換后的圖像進(jìn)行均值濾波,從而對(duì)圖像中的高頻噪點(diǎn)進(jìn)行處理。為了更進(jìn)一步降低圖像數(shù)據(jù)量,以減小后續(xù)圖像處理的計(jì)算量,需要對(duì)濾波后的圖像進(jìn)行二值化處理。圖像的二值化處理不僅減小了圖像數(shù)據(jù)的大小,也使得圖像的邊緣信息更加清晰。在此采用閾值變化法實(shí)現(xiàn)圖像的二值化處理。圖2為螺絲的原始圖像。圖3為二值化圖像。
圖2 原始圖像
圖3 二值化圖像
從圖3可以看出,螺絲內(nèi)紋的二值化圖像中存在孔洞,會(huì)對(duì)后續(xù)的輪廓提取造成影響。為了避免二值化圖像中存在的噪點(diǎn),在填充孔洞之前使用中值濾波再進(jìn)行一次濾波。首先,對(duì)處理后的圖像進(jìn)行取反操作,并對(duì)螺絲內(nèi)紋中的孔洞區(qū)域進(jìn)行填充操作。然后,對(duì)填充后的圖像進(jìn)行邊緣特征的提取,獲取螺絲內(nèi)紋的邊緣輪廓。最后,將螺絲內(nèi)紋的輪廓圖從處理后的圖像中剪裁下來并求內(nèi)紋區(qū)域的中心坐標(biāo)。螺絲內(nèi)紋輪廓如圖4所示。
圖4 螺絲內(nèi)紋輪廓圖
將圖像的原點(diǎn)平移至內(nèi)紋的中心坐標(biāo)以建立新的坐標(biāo)系,計(jì)算當(dāng)前坐標(biāo)系下輪廓各像素點(diǎn)的新坐標(biāo)值。將直角坐標(biāo)系下的坐標(biāo)轉(zhuǎn)換為相對(duì)應(yīng)的極坐標(biāo)值,得到齒輪輪廓的極坐標(biāo)集合C(i為坐標(biāo)點(diǎn)個(gè)數(shù))。
C={(r1,θ1),(r2,θ2),...,(ri,θi)}
(1)
極坐標(biāo)系下的輪廓如圖5所示。將集合C中的坐標(biāo)序列根據(jù)角度ri進(jìn)行從小到大的排序,獲得新的坐標(biāo)集合C′。將新的坐標(biāo)集合C′映射到直角坐標(biāo)系中,得到如圖6所示的直角坐標(biāo)系下的輪廓。
圖5 極坐標(biāo)系下的輪廓圖
圖6 直角坐標(biāo)系下的輪廓圖
本次使用十字形螺絲,內(nèi)紋的輪廓在直角坐標(biāo)系中呈現(xiàn)四個(gè)波峰。但圖像不符合標(biāo)準(zhǔn)的周期函數(shù)圖像,所以采用將坐標(biāo)數(shù)據(jù)分割的方法將坐標(biāo)數(shù)據(jù)分割為四個(gè)單峰波形。單峰波形在曲線擬合中可以采用高斯曲線擬合。
坐標(biāo)數(shù)據(jù)的分割中,四個(gè)波峰的大致相位差為90°。所以在數(shù)據(jù)的分割中,首先需要找到一個(gè)合適的分割原點(diǎn)。在此,對(duì)所有坐標(biāo)的幅值尋找最小值,將幅值最小值rmin的坐標(biāo)作為坐標(biāo)數(shù)據(jù)的分割原點(diǎn),將坐標(biāo)軸上該點(diǎn)左邊的數(shù)據(jù)平移至數(shù)據(jù)的末尾,得到新的坐標(biāo)集合A。
A={(rmin,θmin),(rmin+1,θmin+1),...,(ri,θi),...,
(ri+min-1,θi+min-1)}
(2)
以每90°為一個(gè)范圍,將集合A的數(shù)據(jù)根據(jù)角度值進(jìn)行四等分,得到{A1,A2,A3,A4}。由于每一組數(shù)據(jù)都是根據(jù)角度值進(jìn)行均分,會(huì)導(dǎo)致每一組數(shù)據(jù)的首個(gè)數(shù)據(jù)或者最后一個(gè)數(shù)不為最小值的情況。為了保證擬合曲線的二階導(dǎo)數(shù)始終小于零,需要對(duì)分割后的四個(gè)集合進(jìn)行數(shù)據(jù)調(diào)整,確保擬合出的曲線均為單一的凸函數(shù)。
數(shù)據(jù)調(diào)整的主要步驟為:將每一組數(shù)據(jù)根據(jù)角度值分為兩部分,分別求這兩部分幅值的最小值。將前半部分?jǐn)?shù)據(jù)中幅值最小值左邊的數(shù)據(jù)調(diào)整至前一個(gè)數(shù)據(jù)集合的尾部,將后半部分?jǐn)?shù)據(jù)中最小值右邊的數(shù)據(jù)調(diào)整至下一個(gè)數(shù)據(jù)集合的頭部。
每一組數(shù)據(jù)呈高斯曲線形式,故在曲線擬合部分采用高斯曲線擬合。為簡(jiǎn)化程序設(shè)計(jì)中初始參數(shù)的選取,將四組數(shù)據(jù)分別平移至第一象限,使每組數(shù)據(jù)均能使用同一組初始參數(shù)進(jìn)行曲線擬合。本文在將各組數(shù)據(jù)平移至第一象限內(nèi)時(shí),將每組數(shù)據(jù)的第一個(gè)數(shù)據(jù)平移至0°處、同組其余數(shù)據(jù)平移相同的相位角度,并記錄下每組數(shù)據(jù)的平移角度(θ1,θ2,θ3,θ4)。調(diào)整后的坐標(biāo)數(shù)據(jù)如圖7所示。
圖7 調(diào)整后的坐標(biāo)數(shù)據(jù)圖
根據(jù)圖7的數(shù)據(jù)可以看出,每個(gè)波峰部分的數(shù)據(jù)在幅值上有較大波動(dòng)。在使用傳統(tǒng)的方法時(shí),需要截取波峰部分的數(shù)據(jù),選擇出其最大值或這部分波峰數(shù)據(jù)的中間數(shù)值作為波峰峰值點(diǎn)。截取波峰數(shù)據(jù)對(duì)波峰極值點(diǎn)的選擇有較大的影響,會(huì)造成最終得到的偏轉(zhuǎn)角度有較大的誤差。本文采用了曲線擬合的方法獲取每個(gè)波峰的極值點(diǎn),根據(jù)數(shù)據(jù)的分布選擇高斯曲線擬合,對(duì)比一階、二階及高階高斯曲線的效果,在保證曲線的擬合度的情況下選擇三階高斯曲線擬合。擬合函數(shù)為:
(3)
分別對(duì)四組數(shù)據(jù)進(jìn)行三階高斯曲線擬合,得到的數(shù)據(jù)擬合曲線如圖8所示。
圖8 數(shù)據(jù)擬合曲線圖
在人工蜂群算法中,蜂群由觀察蜂、采蜜蜂和偵查蜂組成,每個(gè)蜜源只對(duì)應(yīng)一個(gè)采蜜蜂。當(dāng)蜜源被采蜜蜂和觀察蜂耗盡時(shí),即在最大搜索次數(shù)內(nèi)無法在找到更優(yōu)解,采蜜蜂變?yōu)閭刹榉?,隨機(jī)尋找新的蜜源。在人工蜂群算法中主要有三個(gè)控制參數(shù):蜜源的數(shù)目(采蜜蜂的數(shù)量)、最大搜索次數(shù)Limit和最大迭代次數(shù)maxCycle。
初始時(shí)刻所有蜜蜂沒有先驗(yàn)知識(shí),所有蜜蜂的角色全部為偵查蜂。全局隨機(jī)搜索蜜源,得出各自的“收益度”。根據(jù)蜜源“收益度”對(duì)比,將蜜蜂轉(zhuǎn)為采蜜蜂和觀察蜂兩類。其中,“收益度”較高的一半轉(zhuǎn)為采蜜蜂。
①初始時(shí)刻,隨機(jī)生成N個(gè)可行解(X1,X2,...,XNs)。具體隨機(jī)產(chǎn)生的可行解Xi為:
(4)
式中:j∈{1,2,…,D},j為D維解向量的某個(gè)分量。
通過分別計(jì)算各個(gè)向量的適應(yīng)度函數(shù)值并進(jìn)行排序,適應(yīng)度值較高的一半作為初始采蜜蜂種群X(0)。
②第n步的采蜜蜂X(n)在當(dāng)前位置附近的領(lǐng)域范圍內(nèi)搜索新的蜜源位置。搜索公式為:
(5)
式中:j∈{1,2,…,D},k∈{1,2,…,N},N為采蜜蜂個(gè)體數(shù)量,i≠k,j和k均為隨機(jī)生成。
③在采蜜搜索到的新位置向量new_Xi和原位置向量Xi中,采用貪婪選擇算子選取更優(yōu)適應(yīng)度的繼承給下一代種群,保證種群進(jìn)化方向不會(huì)后退。其概率分布為:
P{Ts(Xi,new_Xi)=new_Xi=
(6)
④觀察蜂依照采蜜蜂種群適應(yīng)度值,采用選擇算子計(jì)算選擇一個(gè)采蜜蜂,并在其領(lǐng)域內(nèi)進(jìn)行新位置的搜索。選擇概率為:
(7)
⑤同步驟②和步驟③,記錄下更新后達(dá)到的最優(yōu)適應(yīng)度值及其相應(yīng)參數(shù)。
⑥當(dāng)個(gè)體采蜜蜂在蜜源周圍搜索次數(shù)s達(dá)到最大搜索次數(shù),但仍未獲得到更優(yōu)解,則重新初始化該采蜜蜂的位置。初始化公式為:
Xi(n)=Xmin+rand()(Xmax-Xmin)
(8)
⑦滿足停止條件(iter>maxCycle),則停止計(jì)算并輸出最優(yōu)解及其相應(yīng)的參數(shù),否則轉(zhuǎn)向步驟②。
本文設(shè)置初始種群總數(shù)30,采蜜蜂數(shù)量15,偵查蜂5,最大迭代次數(shù)100,最大搜索次數(shù)3。根據(jù)采蜜蜂數(shù)來初始隨機(jī)解的數(shù)量,通過隨機(jī)生成15個(gè)角度值,計(jì)算得到15個(gè)幅值并記錄下其中最大的幅值與角度值。然后計(jì)算觀察蜂跟隨采蜜蜂的概率,判斷觀察蜂是否在采蜜蜂所在解的鄰域內(nèi)尋找新的解求幅值,偵查蜂則在角度值的范圍內(nèi)隨機(jī)生成新的角度值求解幅值。如果求出的幅值為當(dāng)前最優(yōu)解,則偵查蜂轉(zhuǎn)換為采蜜蜂。采蜜蜂在各自當(dāng)前解的鄰域內(nèi)搜索新的解,判斷得到的幅值是否更優(yōu)。當(dāng)循環(huán)三次不能得到更優(yōu)解時(shí),則采蜜蜂放棄當(dāng)前解并成為偵查蜂尋找新解。尋找新解的最大迭代次數(shù),即采蜜蜂、觀察蜂、偵查蜂尋找新解的總次數(shù)。函數(shù)優(yōu)化曲線如圖9所示。
圖9 函數(shù)優(yōu)化曲線圖
通過人工蜂群算法,能夠快速求得函數(shù)的最大值。在對(duì)四個(gè)函數(shù)的最大值求解過程中,在算法迭代到40次左右就能夠獲取各個(gè)擬合函數(shù)的最大值。
通過獲取每一部分?jǐn)M合函數(shù)的最大值,確定其相對(duì)應(yīng)的內(nèi)紋輪廓的峰值位置,即每一部分內(nèi)紋輪廓的中心點(diǎn)。該中心點(diǎn)與整個(gè)螺絲內(nèi)紋的中心點(diǎn)相連的軸線與X軸正方向所構(gòu)成的夾角,即為當(dāng)前內(nèi)紋的偏轉(zhuǎn)角度。通過前文中對(duì)圖像輪廓進(jìn)行坐標(biāo)系的轉(zhuǎn)換,其相對(duì)應(yīng)的偏轉(zhuǎn)角度即為幅值最大值相對(duì)應(yīng)的角度值。
φi=θi+ri±90k
(9)
(10)
式中:k的取值根據(jù)φi決定。
將φi的取值范圍控制在±45°范圍內(nèi),使得偏轉(zhuǎn)角度控制在最小范圍內(nèi),后期在旋轉(zhuǎn)螺絲刀的姿態(tài)中實(shí)現(xiàn)最優(yōu)化。最后通過對(duì)獲得的四個(gè)偏轉(zhuǎn)角度進(jìn)行均值處理。本文測(cè)試圖像最終獲得的偏轉(zhuǎn)角度為38.08°。旋轉(zhuǎn)效果圖如圖10所示。對(duì)原始圖像進(jìn)行所求偏轉(zhuǎn)角度的旋轉(zhuǎn),可以看出效果較為理想。
圖10 旋轉(zhuǎn)效果圖
本文通過使用圖像處理與人工蜂群算法相結(jié)合的方法來實(shí)現(xiàn)螺絲當(dāng)前姿態(tài)下的偏轉(zhuǎn)角度計(jì)算:使用圖像處理技術(shù),獲取螺絲內(nèi)紋的輪廓,并將輪廓數(shù)據(jù)進(jìn)行轉(zhuǎn)換與函數(shù)擬合;利用人工蜂群算法,對(duì)擬合出的函數(shù)進(jìn)行尋優(yōu),最終獲取當(dāng)前姿態(tài)下的偏轉(zhuǎn)角度。本方法結(jié)合了圖像處理的精度高與人工蜂群算法計(jì)算量小、快速獲取全局最優(yōu)的特點(diǎn),計(jì)算出精度較高的偏轉(zhuǎn)角度。同時(shí),該方法有較好的拓展性,適用于各種類型的螺絲內(nèi)紋的偏轉(zhuǎn)角度計(jì)算。