朱朝陽,趙 濤,劉 清,劉 莎
(西安北方光電科技防務(wù)有限公司,陜西 西安 710000)
航空零部件銷釘作為一種高精度零部件,需要兩個(gè)切面的圓度滿足一定精度要求。而目前對(duì)該零部件傳統(tǒng)的質(zhì)量檢測(cè)手段主要還是通過傳統(tǒng)的接觸式測(cè)量方式,如檢測(cè)儀器有圓度測(cè)量?jī)x、三坐標(biāo)測(cè)量?jī)x[1]等來完成。傳統(tǒng)的接觸式測(cè)量方法一方面設(shè)備昂貴,另一方面效率低下,精度不高且對(duì)測(cè)量人員技能要求較高,而且無法對(duì)所有的零件進(jìn)行全面檢測(cè),只能抽檢。近年來由于機(jī)器視覺相關(guān)技術(shù)的發(fā)展,國(guó)內(nèi)外對(duì)機(jī)器視覺相關(guān)技術(shù)的研究不斷升溫,其應(yīng)用領(lǐng)域越來越廣泛[2-3]。
近年來隨著機(jī)器視覺技術(shù)的發(fā)展,圓度測(cè)量技術(shù)得到不斷提升,涌現(xiàn)出許多研究方法。計(jì)算幾何理論由于其測(cè)量結(jié)果準(zhǔn)確,測(cè)量直觀和快速,在圓度測(cè)量中得到廣泛的應(yīng)用[4]。有學(xué)者利用群智能算法的較強(qiáng)尋優(yōu)能力,將粒子群算法應(yīng)用到圓度誤差評(píng)定中[5],較好地解決了圓度誤差評(píng)定這一非線性優(yōu)化問題。吳新杰[6]等采用小波理論開展圓度誤差的評(píng)定,基于小波變換理論可以較精確地提取被測(cè)零件的輪廓曲線,提高圓度誤差的檢測(cè)精度。
文中提出的基于機(jī)器視覺的銷釘圓度測(cè)量技術(shù),首先對(duì)銷釘零件進(jìn)行圖像采集,利用Canny檢測(cè)方法和邊緣輪廓提取技術(shù)提取到被檢測(cè)銷釘?shù)倪吘壿喞?,然后?duì)銷釘?shù)倪吘壿喞ㄟ^最小二乘法進(jìn)行圖像擬合,得到銷釘?shù)那忻鎴A半徑等數(shù)據(jù),最后利用測(cè)量半徑等數(shù)據(jù)計(jì)算出銷釘切面的圓度。該方法采用非接觸式測(cè)量技術(shù),具有檢測(cè)精度高、檢測(cè)效率高的特點(diǎn)。
灰度數(shù)字圖像是每個(gè)像素只有一個(gè)采樣顏色的圖像,彩色圖像是指圖像中的每個(gè)像素值都分成R、G、B三個(gè)基色分量。彩色圖像的圖像數(shù)據(jù)量較大,在圖像運(yùn)算過程中的運(yùn)算量遠(yuǎn)遠(yuǎn)大于繪圖圖像的運(yùn)算量,時(shí)間開銷將會(huì)很大。在數(shù)字圖像處理中,通常將彩色圖像轉(zhuǎn)變成灰度圖像,而灰度化以后的圖像描述與彩色圖像一樣仍然反映了整幅圖像的整體和局部的色度和亮度等級(jí)的分布和特征[7]。因此在測(cè)量銷釘零件的圓度時(shí)使用灰度圖像,從而可以減少系統(tǒng)的運(yùn)算量,提高視覺系統(tǒng)的檢測(cè)效率。
圖像噪聲指圖像中包含了圖像數(shù)據(jù)以外的多余信息。成像設(shè)備本身和周邊環(huán)境的變化等因素影響是噪聲產(chǎn)生的原因,從而導(dǎo)致圖像獲取時(shí)摻雜了多余信息。噪聲是不可避免的,因此系統(tǒng)獲取到的銷釘圖像也不可避免地混入噪聲。在圖像處理過程中,需要首先對(duì)圖像進(jìn)行去噪,這樣后續(xù)進(jìn)行圖像處理時(shí)才能更容易達(dá)到預(yù)期的效果。目前采用濾波器進(jìn)行去噪,不同的濾波有其各自不同的特點(diǎn)。雙邊濾波是一種可以保邊去噪的濾波器,它同時(shí)考慮空域信息和灰度相似性,是將圖像的空間鄰近度和像素值相似度進(jìn)行折衷處理。其原理是在高斯濾波器基礎(chǔ)上多了一個(gè)高斯方差,它是基于空間分布的高斯濾波函數(shù),所以在邊緣附近,離的較遠(yuǎn)的像素不會(huì)太多影響到邊緣上的像素值,這樣就保證了邊緣附近像素值的保存,從而很好地保持了圖像的邊緣信息[8]。
Canny邊緣檢測(cè)算子[9]是John F. Canny于1986年開發(fā)出來的一個(gè)多級(jí)邊緣檢測(cè)算法。Canny算子是一種邊緣檢測(cè)算子,算法中體現(xiàn)了最優(yōu)化的思想,在處理噪聲抑制和邊緣檢測(cè)方面能很好地在二者之間進(jìn)行平衡。雖然傳統(tǒng)Canny算子具有很多優(yōu)點(diǎn),但是同時(shí)也存在3個(gè)方面的缺陷:高斯算法無法同時(shí)兼顧去噪和細(xì)節(jié)處理、梯度計(jì)算的偽邊緣性、雙閾值法檢測(cè)邊緣參數(shù)的不適應(yīng)性。文中采用優(yōu)化后的Canny檢測(cè)方法,主要針對(duì)傳統(tǒng)Canny算子的3個(gè)缺陷進(jìn)行優(yōu)化,從而達(dá)到比較理想的效果。
(1)引導(dǎo)濾波算法替代高斯濾波算法。
引導(dǎo)濾波屬于可以保持邊緣的一種濾波算法[10],能夠在平滑圖像的同時(shí)起到保持邊界的作用,可以應(yīng)用在圖像去霧算法中對(duì)投射率進(jìn)行優(yōu)化,是一種高效的線性去噪算法[11-12]。引導(dǎo)濾波算法可以用于降噪摳圖、去霧、細(xì)節(jié)平滑以及聯(lián)合采樣等方面。
高斯濾波算法采用的核函數(shù)相對(duì)于待處理的圖像是獨(dú)立無關(guān)的,平均權(quán)重魯棒性差,可能引入梯度反轉(zhuǎn)偽影[13]。引導(dǎo)濾波法在進(jìn)行濾波時(shí)需要一幅引導(dǎo)圖像,是一種自適應(yīng)權(quán)重濾波器,在邊緣檢測(cè)精度方面要高于高斯濾波。引導(dǎo)濾波算法的一個(gè)重要假設(shè)是,認(rèn)為保邊濾波后的圖像qi與引導(dǎo)圖像Ii在濾波窗口內(nèi)呈線性關(guān)系。算法首先建立qi與Ii的局部線性關(guān)系,如式(1)所示:
qi=akIi+bk,i∈ωk
(1)
其中,I是輸入圖像的值;q是輸出像素的值;i和k是像素索引;a和b是系數(shù);ωk是以像素點(diǎn)k為中心、半徑為r的濾波窗口。
下式取極小值時(shí),函數(shù)的輸出值與真實(shí)值p的相似度最大。
(2)
其中,e表示濾波效果,p表示待濾波圖像。
在局部線性模型中的關(guān)鍵是求解線性系數(shù)ak、bk,具體求解公式如下:
(3)
(4)
該算法所討論的圖像像素i是假設(shè)在一個(gè)中心位置為k的窗口內(nèi)。
引導(dǎo)濾波對(duì)邊緣起保留作用時(shí),條件I=P一般成立,e=0時(shí),a=1,b=0是點(diǎn)(a,b)為極小值的解,這時(shí)的濾波器沒作用。e>0,在像素強(qiáng)度無顯著變化的區(qū)域,a→0,b→0,即進(jìn)行了一個(gè)加權(quán)均值濾波;若在顯著變化的區(qū)域,a→1,b→0,則濾波效果差有利于保存原邊緣信息。在同一窗口下,當(dāng)e越大時(shí),則濾波的效果越顯著。
(2)采用Sobel算子求梯度。
檢測(cè)圖像x,y方向的Sobel算子分別為:
(5)
(6)
圖像上任一點(diǎn)梯度的幅值與方向分別為:
(7)
θ=arctan[fy(x,y)/fx(x,y)]
(8)
(3)基于最大類間方差法(Otsu法)進(jìn)行雙閾值的確定。
最大類間方差算法(即Otsu法)是由Ostu在1979年提出來的[14]。Ostu法通過利用圖像的灰度直方圖做基礎(chǔ)來進(jìn)行閾值的選擇。當(dāng)圖像的背景與所選取的目標(biāo)區(qū)域的類間方差最大時(shí)來確定該閾值,該準(zhǔn)則可以使得計(jì)算的圖像達(dá)到最佳分割閾值。該算法具有計(jì)算簡(jiǎn)單、穩(wěn)定、有效等優(yōu)點(diǎn)。
如果兩類圖像的閾值是T,目標(biāo)點(diǎn)數(shù)在圖像中的占比為p0,其灰度的均值為g0;背景點(diǎn)數(shù)在圖像中的占據(jù)比為p1,其灰度的均值為g1,則圖像灰度的總均值為:
gT=p0·g0·p1·g1
(9)
目標(biāo)和背景方差為:
σ2(T)=p0·(g0-gT)2+p1·(g1-gT)2
(10)
當(dāng)T最大時(shí),目標(biāo)與背景的差異最顯著。通過該算法可以取得最佳閾值。
圖像輪廓的提取,邊緣檢測(cè)就可以做到,但是得到的輪廓比較粗糙,所以需要再進(jìn)行圖像輪廓提取工作。在檢測(cè)物體的輪廓時(shí),通常會(huì)使用OpenCV圖像處理庫(kù)中的輪廓查找函數(shù)findcontour和提取函數(shù)drawcontour。輪廓查找函數(shù)findcontour的輸入圖像是一幅二值圖像,是經(jīng)過預(yù)處理的邊緣圖像,然后對(duì)邊緣輪廓進(jìn)行識(shí)別與定位,將檢測(cè)到的輪廓像素進(jìn)行存儲(chǔ)[15]。輪廓繪制函數(shù)drawcontour是一個(gè)畫輪廓的函數(shù),將檢測(cè)到的輪廓圖像提出并繪制出來,并將邊界以坐標(biāo)點(diǎn)的形式進(jìn)行保存。最后通過擬合算法求得待測(cè)零件的相關(guān)需求數(shù)據(jù)信息。
通過OpenCV函數(shù)庫(kù)對(duì)零件的邊緣輪廓進(jìn)行輪廓查找與繪制的具體步驟是:
(1)采用改進(jìn)后的Canny算子邊緣檢測(cè)算法對(duì)銷釘零件圖像進(jìn)行預(yù)處理,預(yù)處理后得到包含銷釘切面邊緣信息的二值圖像;
(2)使用輪廓查找函數(shù)findcontours和提取函數(shù)drawcontour來獲取該銷釘零件邊緣圖像中所有邊界的連續(xù)像素序列,使用OpenCV中的contours向量對(duì)結(jié)果進(jìn)行保存;
(3)將存儲(chǔ)在結(jié)構(gòu)中的contours向量中的銷釘零件邊緣像素及坐標(biāo)信息用序列分別進(jìn)行表示;
(4)查找到的銷釘零件邊緣輪廓信息中的坐標(biāo)數(shù)據(jù)進(jìn)行提取并處理。
最小二乘圓法(LSCM)[16-17]是一種數(shù)學(xué)優(yōu)化技術(shù),是將實(shí)際輪廓進(jìn)行擬合得到一個(gè)理想圓,其中,圓心橫坐標(biāo)就是實(shí)際被測(cè)輪廓上點(diǎn)的橫坐標(biāo)的平均值,圓心縱坐標(biāo)就是輪廓上點(diǎn)的縱坐標(biāo)的平均值。該圓心坐標(biāo)滿足最小二乘條件,即圓心到實(shí)際被測(cè)輪廓上各個(gè)點(diǎn)距離的平方和最小。以該最小二乘圓圓心作為評(píng)定基準(zhǔn),做出包容被測(cè)輪廓曲線的兩個(gè)同心圓,這兩個(gè)同心圓的半徑差即為圓度誤差。在圖1中O表示最小二乘圓的圓心,R為最小二乘圓的半徑。被測(cè)輪廓最大圓的半徑Rmax減去最小圓的半徑Rmin即為被測(cè)輪廓的圓度誤差Rerr,即Rerr=Rmax-Rmin。最小二乘圓算法對(duì)銷釘切面的圓度評(píng)定可以達(dá)到很高的精度,因?yàn)殇N釘切面的變形主要是橢圓變形,而銷釘切面圓度測(cè)量的數(shù)據(jù)又符合最小偏差假設(shè),因此,最小二乘圓評(píng)定算法引起的誤差相對(duì)于銷釘切面圓度誤差也很小。
圖1 最小二乘法(LSCM)
圖2為銷釘切面圖像,由于銷釘不是標(biāo)準(zhǔn)的圓,有四個(gè)圓弧,因此采用最小二乘法擬合圓計(jì)算圓度的算法為:
(1)把銷釘切面四個(gè)圓弧邊緣的點(diǎn)取到對(duì)應(yīng)的容器中;
(2)分別從四個(gè)圓弧中任意選三個(gè)圓弧擬合圓并求得半徑R1、R2、R3、R4;
圖2 銷釘切面圖像
(3)在求得的四個(gè)圓半徑中取得最大半徑Rmax和最小半徑Rmin;
(4)銷釘切面的圓度誤差為:Rerr=Rmax-Rmin。
銷釘圓度測(cè)量系統(tǒng)的實(shí)驗(yàn)設(shè)備包括計(jì)算機(jī)部分、工業(yè)相機(jī)、光源及固定支架等輔助設(shè)備。其中工業(yè)相機(jī)設(shè)備使用Basler系列的CCD工業(yè)數(shù)字相機(jī),光源部分根據(jù)銷釘零件的特點(diǎn)選擇了環(huán)形的LED光源,使用這種光源容易突出銷釘?shù)奶卣?。?shí)驗(yàn)系統(tǒng)如圖3所示,相機(jī)通過專用支架固定,光源通過背面方式進(jìn)行照射,容易突出銷釘?shù)妮喞_保待檢測(cè)零件的尺寸范圍及采集圖像的質(zhì)量。
機(jī)器視覺軟件系統(tǒng)運(yùn)行在PC上,運(yùn)行環(huán)境是Windows系統(tǒng),視覺軟件系統(tǒng)是基于QT5.7環(huán)境開發(fā)的,其中視覺軟件系統(tǒng)的圖像處理部分是基于OpenCV來實(shí)現(xiàn)的。OpenCV是基于BSD許可的一種開源的跨平臺(tái)計(jì)算機(jī)視覺庫(kù),OpenCV庫(kù)中的函數(shù)實(shí)現(xiàn)過程簡(jiǎn)單且高效,并且易于二次開發(fā),很多圖像處理算法可以在其基礎(chǔ)上做進(jìn)一步優(yōu)化和擴(kuò)充,因此OpenCV視覺函數(shù)庫(kù)被廣泛應(yīng)用于圖像處理過程中。
銷釘零件左圓度、右圓度要求精度為0.01內(nèi),測(cè)量誤差在0.05范圍內(nèi)。系統(tǒng)搭建好后通過對(duì)20個(gè)樣本進(jìn)行測(cè)量,其中有3個(gè)樣本不合格,1個(gè)樣本左圓度不合格,2個(gè)樣本右圓度不合格,測(cè)量結(jié)果如表1所示。該系統(tǒng)能夠準(zhǔn)確地識(shí)別出不合格樣本。并且重復(fù)測(cè)試20次結(jié)果穩(wěn)定,測(cè)量精度誤差在0.05內(nèi),結(jié)果符合要求。
表1 樣本測(cè)量結(jié)果
續(xù)表1
(1)噪聲誤差影響分析:在進(jìn)行采集檢測(cè)圖像時(shí)會(huì)不可避免地混入一些噪聲,雖然圖像預(yù)處理環(huán)節(jié)能消除一部分噪聲,但是圖像中的噪聲不可能完全消除。
(2)系統(tǒng)硬件誤差影響分析:在讀取銷釘零件邊緣等信息時(shí),由于機(jī)器視覺的硬件系統(tǒng)和周邊物理環(huán)境因素的影響,會(huì)產(chǎn)生誤差,從而使得圖像在讀取過程中精度不夠,造成對(duì)銷釘切面圓度結(jié)果產(chǎn)生誤差。
(3)系統(tǒng)軟件誤差影響:系統(tǒng)軟件誤差主要是由于算法等因素造成,一般情況下算法不可能百分之百準(zhǔn)確,在圖像去噪預(yù)處理環(huán)節(jié),噪聲不可能百分之百消除,因此未消除的噪聲會(huì)對(duì)結(jié)果產(chǎn)生影響,另外邊緣檢測(cè)算法及圓度擬合算法等都會(huì)由于其算法局限性,從而使得計(jì)算出的圓度數(shù)據(jù)出現(xiàn)誤差。
針對(duì)傳統(tǒng)對(duì)航空銷釘圓度的測(cè)量方法存在諸多限制和缺點(diǎn),提出一種基于機(jī)器視覺的銷釘圓度非接觸式的測(cè)量方法,通過使用機(jī)器視覺系統(tǒng)采集銷釘?shù)膬蓚€(gè)切面圖像,并對(duì)圖像進(jìn)行灰度化和去噪,在邊緣檢測(cè)環(huán)節(jié)通過使用改進(jìn)后的Canny邊緣檢測(cè)算法,在對(duì)銷釘邊緣圖的擬合過程中使用了基于最小二乘擬合算法進(jìn)行擬合,最終獲取到銷釘切面的圓度。該測(cè)量方法具有較快的測(cè)量速度與較高的測(cè)量精度和實(shí)時(shí)性,提升了該零部件質(zhì)量檢測(cè)水平和檢測(cè)效率。