李道萍, 楊 波
(上海理工大學(xué) 光電信息與計算機工程學(xué)院, 上海 200093)
基于光學(xué)原理的三維測量,由于其具有高精度、非接觸、易于控制等優(yōu)點,日益受到人們的重視。光學(xué)三維測量的本質(zhì)是通過分析被三維物體面形調(diào)制的光場分布來獲得被測物體的三維信息。目標(biāo)光斑對應(yīng)的三維曲面上某點的高度是由該點在攝相機CCD表面的位置來確定的,那么光斑位置是否準(zhǔn)確是決定測量精度的關(guān)鍵因素。目前比較常見的檢測光斑中心的算法有灰度質(zhì)心法、圓擬合法、Hough變換法以及多種改進(jìn)算法等。
灰度質(zhì)心法對于均勻光斑能夠較準(zhǔn)確定位,計算速度快,但是抗干擾能力差,對于情況復(fù)雜的實際圖像,定位精度很差,而且只能定位中心,不能計算半徑[1-3]。圓Hough檢測是目前應(yīng)用最為廣泛的方法之一,其可靠性高,對噪聲、變形、部分區(qū)域殘缺、邊緣不連續(xù)等有較好的適應(yīng)性,但其缺點是計算量大,占據(jù)內(nèi)存多,同時Hough變換需要對參數(shù)空間離散化,限制了檢測精度,另外參數(shù)空間得票最多的點未必唯一,選擇不同的點得到的圖像空間曲線差異比較大[4-9]。圓擬合法時間復(fù)雜度較小,運算的精度很高,而且算法的速度非???但它也有十分明顯的缺點,即抗干擾能力很差,當(dāng)隨機噪聲存在時,中心運算精度會明顯降低,當(dāng)遇到很強的外界干擾時,所得到的圓心甚至可能會產(chǎn)生明顯的錯誤[10-12]。
如果光斑光強分布均勻,使用恰當(dāng)?shù)乃惴梢允构獍叨ㄎ痪冗_(dá)到亞像素級別,但是在一些實際測量中,光斑存在散斑,加之目標(biāo)物體的反射以及各種干擾,使得CCD采集到的光斑強度極不均勻,嚴(yán)重影響了定位精度,上述方法均不再適用。為此,本文提出了一種光斑中心定位算法,該算法能夠有效克服噪聲及光強不均勻的情況,同時,通過選取合適的二值化閾值,不僅能夠定位光斑中心,而且能夠獲取光斑半徑。
灰度質(zhì)心法就是應(yīng)用像素的灰度值作為權(quán)重來計算光斑的質(zhì)心,設(shè)圖片的像素為m×n,每個像素點的灰度值為G(x,y),那么計算的質(zhì)心(x0,y0)可表示為
(1)
基于圓擬合檢測激光光斑中心的算法的依據(jù)是:采用最小二乘法的原理(殘差平方和最小)來逼近激光光斑的輪廓。
最小二乘法圓擬合曲線為
R2=(x-A)2+(y-B)2
(2)
即
R2=x2-2Ax+A2+y2-2By+B2
(3)
式中:R為圓的半徑;A、B為常數(shù)。
圓的另一種形式為
x2+y2+ax+by+c=0
(4)
令a=-2A,b=-2B,c=A2+B2-R2,則只需求出參數(shù)a,b,c即可求出圓的圓心和半徑。
Hough變換是利用點-線對偶性,將圖像空間中的曲線通過曲線公式轉(zhuǎn)換到對應(yīng)的參數(shù)空間,對相同參數(shù)進(jìn)行累加,那么圖像空間的提取曲線就轉(zhuǎn)化成求取參數(shù)空間的峰值問題。
f(a1,a2,…,an,x,y)=0
(5)
式中:(a1,a2,…,an)是參數(shù)空間中的點;(x,y)是解析曲線上的點,對于圓形曲線來說,半徑是r,圓心是(a,b),解析式為
(x-a)2+(y-b)2=r2
(6)
那么,圖像空間中的一個圓(xi,yi)對應(yīng)參數(shù)空間中的一個點(a,b,r)。
圓變換的參數(shù)空間為三維的,在三維空間上進(jìn)行數(shù)據(jù)累加的時間、空間消耗是非常大的。在具體應(yīng)用中幾乎是不可實現(xiàn)的。
圖1為光斑中心定位的處理流程。
圖1圖片處理流程
Fig.1FlowchartofImageprocessing
準(zhǔn)備一張如圖2(a)所示的光斑圖,首先將圖像轉(zhuǎn)變?yōu)榛叶葓D像,使用最大類間方差法[13]找到圖片的一個合適的閾值,然后在MATLAB中采用graythresh函數(shù),最后用函數(shù)im2bw進(jìn)行二值化,得到如圖2(b)所示的二值化圖像。選擇合適的結(jié)構(gòu)元素對二值圖進(jìn)行閉操作,閉操作通常能夠消除狹窄的間斷和細(xì)長的鴻溝,消除小的空洞,并填補輪廓線中的斷裂[14],如I=imclose(IM,SE),(IM為待處理圖像,SE為結(jié)構(gòu)元素),進(jìn)行閉操作后得到如圖2(c)所示的圖片。由于二值圖的像素值只有0和1,首先運用find函數(shù)找到像素值為1的部分(即白色部分),并對其求均值得到(x0,y0),即
(7)
圖2 圖片處理流程Fig.2 Flow chart of image processing
這樣就可以找到光斑圓心的大致位置。接著再找出圖片中像素值為0的一系列點(x,y),然后進(jìn)行以下循環(huán):
(1) 求出距離圓心(xm,ym)(m=0,1,2,…)最近的點(xi,yi),距離為rm
(8)
(2) 移動圓心(xm,ym)使之與點(xi,yi)的距離在直線方向上增加1,即
(9)
此時,圓心位置進(jìn)行了更新。
(3) 不斷地重復(fù)(1)(2)步驟,每一循環(huán)需要判斷計算出的距離是否小于上一循環(huán)的距離,直到計算出的距離rm+1 (4)求出距離點(xm+1,ym+1)最近的黑點,距離即為所求的半徑rm+1,圓心為(xm+1,ym+1)。如圖2(d)所示。 用MATLAB產(chǎn)生一組夫瑯禾費衍射光斑,圖像大小為300×300,400×400,…,900×900,1 000×1 000共8幅圖片,并對其加入隨機噪聲,如圖3所示,采用4種中心定位算法計算其圓心位置。 圖3 計算機生成的夫瑯禾費衍射圖樣(含噪聲)Fig.3 Computer generated Fraunhofer diffraction pattern(with noise) 應(yīng)用新算法和其他3種算法分別對這8幅圖像的光斑中心進(jìn)行定位,得到中心坐標(biāo)減去理論坐標(biāo)后的誤差,如圖4所示,并對不同算法的誤差進(jìn)行了統(tǒng)計,如表1所示。從中可以看出,該算法誤差小于0.5像素且比其他經(jīng)典算法精度高,穩(wěn)定性也最好。 圖4 4種算法計算得到的8張衍射圖樣的圓心位置誤差Fig.4 The error of the center location for 8 diffraction patterns calculated by 4 kinds of algorithms 算法x方向平均誤差/像素y方向平均誤差/像素x方向標(biāo)準(zhǔn)差/像素y方向標(biāo)準(zhǔn)差/像素灰度質(zhì)心法1.270 725-0.179 8371.625 212 3321.330 609 563圓擬合法0.111 587-0.148 3250.287 389 3850.078 456 498Hough變換法0.125 0000.250 0000.517 549 1700.462 910 050新算法0.085 350-0.014 4710.189 777 8930.211 460 412 為了對算法進(jìn)行驗證,我們采集了兩種光斑圖樣,如圖5所示,(a)圖為激光光源直接打在CCD上形成的圖樣,(b)圖為夫瑯禾費衍射系統(tǒng)接收到的圖樣。實驗中采集到的光斑圖像由于受到空氣中雜質(zhì)、CCD暗電流噪聲、光子散粒噪聲、反射面不均勻等的影響,不適用于直接提取光斑中心,在求取光斑中心之前,必須要對圖像進(jìn)行預(yù)處理以消除光斑外的小亮點、小暗點和其他雜散光的影響。從圖中可以看出,新算法對光斑進(jìn)行了較準(zhǔn)確的定位,光斑輪廓擬合也很合理。 圖5 光斑圖Fig.5 Light spot 通過對常用定位算法的分析,提出了采用迭代法逐步逼近的方法計算出光斑半徑及圓心。對計算機生成的8張含有噪聲的衍射圖樣進(jìn)行中心定位,并與其他傳統(tǒng)算法進(jìn)行比較,統(tǒng)計出各算法的誤差,結(jié)果表明,該算法誤差小于0.5像素且比其他經(jīng)典算法精確。采用CCD相機、激光器等搭建了夫瑯禾費圓孔衍射測試系統(tǒng),經(jīng)采集光斑圖像并對其進(jìn)行光斑定位,進(jìn)一步驗證了本文算法的正確性與合理性。3 與傳統(tǒng)算法的比較
4 對實驗生成的光斑進(jìn)行定位
5 結(jié) 論