舒啟林,山 博
(沈陽理工大學(xué) 機(jī)械工程學(xué)院,遼寧 沈陽 110159)
在現(xiàn)代生產(chǎn)中,微小機(jī)械零件的應(yīng)用越來越廣泛,對(duì)于微小機(jī)械零件尺寸的測量要求也愈來越多。經(jīng)調(diào)查發(fā)現(xiàn),當(dāng)今國內(nèi)市場上一些微小型的零件主要測量方式為傳統(tǒng)的人工測量,傳統(tǒng)的測量方法包括游標(biāo)卡尺、千分尺、量規(guī)、百分表、千分表等測量方法,有些微小零件的測量甚至要借助顯微鏡進(jìn)行,雖然操作起來比較直接,但測量過程中會(huì)存在一些問題,比如不易持握,測量過程中受人為因素和環(huán)境因素的影響較大,難以保證精度,更不要說速度,無法實(shí)現(xiàn)自動(dòng)測量和非接觸式測量。圖像測量技術(shù)具有非接觸、動(dòng)態(tài)測量范圍大的特點(diǎn),對(duì)于微小的被測機(jī)械零件可以通過調(diào)節(jié)攝像系統(tǒng)的放大倍數(shù),方便的實(shí)現(xiàn)毫米量級(jí)、微米量級(jí)甚至納米量級(jí)的參數(shù)測量。而且只要能夠保證采集圖片的攝像系統(tǒng)有足夠高的分辨率,就能通過算法實(shí)現(xiàn)較高的測量精度。
技術(shù)主要是通過對(duì)待加工零件的圖像進(jìn)行處理從而獲得其尺寸及位置信息,其中,圖像邊緣信息檢測是該技術(shù)的關(guān)鍵之處。圖像邊緣檢測是整個(gè)圖像測量中最基礎(chǔ),也是最重要的一部分。被測圖像經(jīng)過圖像增強(qiáng)、去噪濾波等一系列處理后,就可以利用圖像邊緣檢測算子進(jìn)行像素級(jí)邊緣檢測,也就是圖像的粗定位。為提高定位的精確度,在此之后才可以進(jìn)行圖像的亞像素級(jí)邊緣定位,因此準(zhǔn)確粗定位可以保證整個(gè)測量的精確性,如果像素級(jí)邊緣檢測造成了大的偏差,那么后續(xù)的亞像素級(jí)邊緣處理就不可能得準(zhǔn)確地結(jié)果[1-2]。文獻(xiàn)[3]在用canny算子進(jìn)行粗定位后,采用滑動(dòng)邊緣點(diǎn)的高斯擬合亞像素方法提高定位精度,文獻(xiàn)[4]中張虎等人用高斯擬合曲線的方法求出邊緣點(diǎn)后用曲率濾波和均值濾波方法加以濾波消除孤立點(diǎn)和噪聲點(diǎn)。以上兩種方法可以看出,滑動(dòng)邊緣點(diǎn)及曲率濾波均是為了消除粗定位不準(zhǔn)確所造成的誤差。因此提高粗定位的準(zhǔn)確性可以很大程度上可以減少后續(xù)處理中的程序,大大縮短測量時(shí)間。
較經(jīng)典的傳統(tǒng)邊緣檢測算子有Roberts算子、Sobel算子、Prewitt算子、Laplacian算子和Canny算子等。Roberts算子、Sobel算子、Prewitt算子屬于一階微分算子,其基本原理是進(jìn)行微分運(yùn)算,利用微分突出灰度的變化,微分計(jì)算值較高處就是圖像的邊緣,可將這些值作為判別邊緣點(diǎn)的依據(jù)。一階微分算子雖然計(jì)算簡單迅速,但容易出現(xiàn)偽邊緣且邊緣較粗,僅適用于對(duì)精度要求不高的檢測。Laplace是基于二階導(dǎo)數(shù)的邊緣檢測算子,Laplace算子具有與坐標(biāo)軸方向無關(guān),坐標(biāo)軸旋轉(zhuǎn)后梯度結(jié)果不變的特點(diǎn),是一個(gè)標(biāo)量。對(duì)線端及孤立點(diǎn)檢測效果好,但邊緣信息易丟失,對(duì)噪聲極敏感,整體效果不如梯度算子,很少直接用于邊緣檢測。
1986年John Canny提出了canny邊緣檢測算子,該方法在去噪和邊緣檢測之間得到了一個(gè)最佳的平衡,成為目前應(yīng)用比較廣泛的邊緣檢測算子之一。Canny邊緣檢測主要分一下幾個(gè)部分:高斯濾波圖像平滑去噪,計(jì)算圖像中的梯度強(qiáng)度,非極大值抑制,雙閾值檢測,邊緣的連接。該傳統(tǒng)canny算法中高斯濾波中的均方差及雙閾值檢測中的高低閾值設(shè)定需要人為地根據(jù)經(jīng)驗(yàn)設(shè)定,且不同的圖像閾值不同,不具有科學(xué)性及廣泛適用性。由于人為設(shè)定的主觀性和隨機(jī)性必然會(huì)導(dǎo)致邊緣定位的誤差。因此就該問題提出了改進(jìn)的canny算法,從而提高粗定位定位精度,減少亞像素定位的后續(xù)處理的工作量,減少處理時(shí)間[5-8]。
為解決上述的人為設(shè)定系數(shù)造成的誤差問題,本節(jié)采用自適應(yīng)中值濾波代替高斯濾波、用(3×3)鄰域法計(jì)算梯度幅值、并采用基于迭代法的閾值分割方法進(jìn)行處理,具體方法如下。
傳統(tǒng)的高斯濾波很難同時(shí)兼顧邊緣信息的保留和噪聲的平滑。自適應(yīng)中值濾波不僅可以有效地減少噪聲的影響,還可以較好的保留圖像的基本邊緣信息。其具體算法如下:
(1)首先設(shè)定 f(x,y)為圖像像素點(diǎn)(x,y)的灰度值,W(x,y)為當(dāng)前灰度窗口的大小,設(shè)定初始窗口大小W=3,fmin,fmed,fmax分別為工作窗口內(nèi)的灰度最小值,灰度中值,灰度最大值。
(2)若 fmin<fmed<fmax,則轉(zhuǎn)至(3),否則增大 W(x,y)的尺寸,若W(x,y)的尺寸小于 Wmax,則重復(fù)步驟(2),否則輸出 f(x,y)。
(3)若fmin<f(x,y)<fmax,則輸出f(x,y),否則輸出fmed。
Canny邊緣檢測算子通常是采用(2×2)鄰域求梯度,容易造成邊緣信息細(xì)節(jié)的丟失及假邊緣的出現(xiàn)。采用基于此改進(jìn)的(3×3)鄰域法來計(jì)算梯度幅值,該方法考慮8鄰域內(nèi)水平方向,垂直方向,45°方向及135°方向的邊緣梯度幅值變化進(jìn)行計(jì)算,可一定程度抑制假邊緣的出現(xiàn),具體如下:
首先計(jì)算X方向偏導(dǎo)數(shù)
Y方向偏導(dǎo)數(shù)
45°方向?qū)?shù)
135°方向?qū)?shù)
由此計(jì)算水平方向差分
垂直方向差分
該算法可以減少噪聲的干擾,提高魯棒性。
傳統(tǒng)的canny算子選取閾值時(shí)需要根據(jù)經(jīng)驗(yàn)人為地設(shè)定閾值,而且需要反復(fù)進(jìn)行試驗(yàn),選取的閾值還不具有普遍的適用性。采用基于迭代法的高低閾值檢測,根據(jù)不同圖像各個(gè)像素的灰度值計(jì)算分析出高低閾值,從而確定邊緣點(diǎn),減少了噪聲的影響并降低了誤定位。具體的步驟如下:
(1)計(jì)算圖像的初始閾值
式中:k—迭代次數(shù),fmax、fmin—圖像中灰度值的最大值、最小值。
(2)用Tk把圖像分成兩部分H1、H2
(3)計(jì)算 H1、H2的灰度均值 M1、M2
式中:f(i,j)—圖像中(i,j)點(diǎn)的灰度值,NL(i,j)、NH(i,j)分別滿足如下條件:
(4)重新計(jì)算新的閾值
(5)若Tk+1=Tk,或者滿足規(guī)定要求,則結(jié)束。否則k=k+1,轉(zhuǎn)至(2)。
(6)迭代結(jié)束,取最終的M1,M2分別為進(jìn)行圖像分割時(shí)的高閾值和低閾值。
為了滿足測定中對(duì)定位精度的要求,在實(shí)現(xiàn)像素級(jí)邊緣定位之后,需要在此基礎(chǔ)上進(jìn)行亞像素級(jí)邊緣定位從而獲得更高的精度[9-10]。采用高斯擬合亞像素法進(jìn)行亞像素定位,具體方法如下。
粗定位邊緣點(diǎn)及其梯度方向的鄰近點(diǎn),如圖1所示。
圖1 粗定位邊緣點(diǎn)及其梯度方向的鄰近點(diǎn)Fig.1 Coarsely Positioned Edge Points and Their Neighbors in the Gradient Direction
其中,P點(diǎn)為粗定位邊緣點(diǎn),任相鄰點(diǎn)間的距離為L,當(dāng)P點(diǎn)的梯度方向與水平方向夾角 α<45°時(shí),L=1/cos(θ);若 α>45°,則L=1/sin(θ),單位為像素。設(shè)p0(x0,y0),當(dāng)α<45°時(shí),A點(diǎn)的橫坐標(biāo)x1=x0+1,圖中梯度方向的相鄰點(diǎn)并非都是整像素點(diǎn),所以需要對(duì)這些點(diǎn)進(jìn)行灰度線型插值處理。首先找到距A點(diǎn)最相近的兩個(gè)整像素點(diǎn),如圖中三角形點(diǎn)所在位置,通過這兩點(diǎn)的灰度值計(jì)算出A點(diǎn)的灰度值。
式中:f(x1,y1)—A 點(diǎn)的灰度值;[y1]—y1的整數(shù)部分。
若 α>45°,則 y1=y0+1
以此類推可確定A-J的灰度值。
設(shè) f(x1,y1)為 A 點(diǎn)灰度值,f(x-1,y-1)為 F 點(diǎn)灰度值,則 P點(diǎn)的灰度差值為:
以此類推,計(jì)算出其他像素點(diǎn)的灰度差值。
根據(jù)高斯亞像素?cái)M合原理,圖像邊緣點(diǎn)灰度值變化呈高斯分布,高斯曲線的表達(dá)式為:
為了找出曲線的頂點(diǎn)位置,把兩邊取對(duì)數(shù)變換后成為一個(gè)關(guān)于u的二次曲線:
根據(jù)方孔徑采樣定理可得,像素的灰度差值為:
式中:m?。?5,5],m—整數(shù)。
分別將以求得的灰度差值帶入式(15)中,其中A、B、C為二次曲線需求解的參數(shù),設(shè)向量E=[A B C]T,式左邊各點(diǎn)的灰度差值構(gòu)成向量U:
U=[f-5,f-4,f-3,f-2,f-1,f0,f1,f2,f3,f4,f5],式右邊的系數(shù)構(gòu)成矩陣V,用最小二乘法E=(VTV)-1VTU計(jì)算可得到A、B、C的值,設(shè)粗定位邊緣點(diǎn)坐標(biāo)位置為P0(x0,y0),亞像素邊緣點(diǎn)與粗定位邊緣點(diǎn)的距離δ,δ=-B/2A,這樣根據(jù)δ和求取的邊緣點(diǎn)梯度方向直線的斜率可以求出亞像素級(jí)邊緣點(diǎn)的坐標(biāo)位置為p′(x0+δ×cos(θ),y0+δ×sin(θ))。
在遼寧省科技基金的支持下,我們自主研發(fā)了超精密數(shù)控微型磨床,該數(shù)控微磨床主要用于微小機(jī)械和微機(jī)械零件的制造,重點(diǎn)解決介于傳統(tǒng)超精密加工技術(shù)與微機(jī)械加工技術(shù)之間的制造技術(shù)問題。為了驗(yàn)證這里算法,對(duì)該微磨床加工的微型零件進(jìn)行尺寸檢測。實(shí)驗(yàn)現(xiàn)場硬件設(shè)施,如圖2、圖3所示。系統(tǒng)的軟件部分主要包括系統(tǒng)控制部分、圖像處理部分、結(jié)果輸出和分析部分。軟件系統(tǒng)各模塊全部采用MATLAB平臺(tái)開發(fā)設(shè)計(jì),在windows7環(huán)境下運(yùn)行,系統(tǒng)為全中文操作界面,簡單易學(xué),操作方便。該系統(tǒng)在實(shí)現(xiàn)系統(tǒng)的標(biāo)定和改進(jìn)算法的零件尺寸測量的一鍵處理功能外,還設(shè)計(jì)了其他的圖像處理功能,包括圖像增強(qiáng)、圖像去噪、邊緣檢測的幾種不同的常用方法系統(tǒng),如圖4所示。
圖2 實(shí)驗(yàn)現(xiàn)場(1)Fig.2 Experimental Site(1)
圖3 實(shí)驗(yàn)現(xiàn)場(2)Fig.3 Experimental Site(2)
圖4 圖像測量系統(tǒng)Fig.4 Image Measurement System
為驗(yàn)證改進(jìn)算法的優(yōu)越性,在對(duì)原始圖像進(jìn)行預(yù)處理濾波去噪后,首先采用傳統(tǒng)canny算子進(jìn)行粗定位,隨后進(jìn)行亞像素定位,最后進(jìn)行尺寸標(biāo)定得到被測零件的物理尺寸,圖像的采集及運(yùn)行后的結(jié)果,如圖5~圖7所示。
圖5 原圖Fig.5 Original Image
圖6 傳統(tǒng)Canny算子邊緣檢測Fig.6 Traditional Canny Operator Edge Detection
圖7 高斯擬合亞像素邊緣檢測Fig.7 Gaussian Fitting Subpixel Edge Detection
經(jīng)以上處理后得到零件的圓心位置及半徑長度,經(jīng)多次測量,取平均值,得到的結(jié)果,如表1所示。在得到上述結(jié)果后,先采用同樣的圖像處理方法,之后運(yùn)行改進(jìn)后的算法與之進(jìn)行比較,得到運(yùn)行結(jié)果,如圖8、圖9所示。改進(jìn)算法最終得到的零件尺寸測量參數(shù)結(jié)果,如表2所示。
表1 傳統(tǒng)算子定位精度Tab.1 Traditional Operator Positioning Accuracy
圖8 改進(jìn)的canny算子邊緣檢測Fig.8 Improved Canny Operator Edge Detection
圖9 高斯擬合亞像素邊緣檢測Fig.9 Gaussian Fitting Subpixel Edge Detection
表2 改進(jìn)算子定位精度Tab.2 Improved Operator Positioning Accuracy
在傳統(tǒng)的canny邊緣檢測算子的基礎(chǔ)上提出了改進(jìn)的邊緣檢測算法,并應(yīng)用亞像素高斯擬合算法檢測改進(jìn)算法的優(yōu)越性。從仿真實(shí)驗(yàn)結(jié)果看,傳統(tǒng)算法的誤定位率為2.61%,而改進(jìn)算法的誤定位率為1.26%,表明改進(jìn)的算法相比傳統(tǒng)的邊緣檢測算法可以獲得更清晰的邊緣,消除了人為因素的不科學(xué)性,在有效減少噪聲的同時(shí)最大程度上保留了圖像的邊緣信息,亞像素誤定位率有明顯降低,獲得了較好的定位效果,且運(yùn)行的時(shí)間較短,實(shí)時(shí)性較高。但在實(shí)驗(yàn)中仍存在很多的不足之處,導(dǎo)致測量過程中會(huì)造成一定的誤差。如成像系統(tǒng)誤差包括光學(xué)誤差、機(jī)械誤差和電學(xué)誤差,電子噪聲造成的誤差,量化誤差,光源、溫度和震動(dòng)造成的誤差等。除了硬件系統(tǒng)造成的誤差,圖像測量中我們通常會(huì)通過算法的編程來提高系統(tǒng)的測量精度,算法的選擇會(huì)影響圖像邊緣的清晰度及攝像機(jī)鏡頭畸變的減小甚至消除。同時(shí)在進(jìn)行圖像去噪平滑時(shí)雖然可以濾除一部分噪聲,但也會(huì)消除部分有效邊緣信息,從而造成一定的測量誤差。另外在系統(tǒng)計(jì)算時(shí)由于保留精度也會(huì)造成誤差累積??傊?,盡管軟件算法可以提高測量精度,但是也不可避免的存在一定的誤差,實(shí)際達(dá)到的精度要小于理論值[11-12]。