趙彬彬,洪榮晶,2
(1.南京工業(yè)大學(xué)機(jī)械與動力工程學(xué)院,江蘇 南京 211816;2.江蘇省工業(yè)裝備數(shù)字化制造及控制技術(shù)重點(diǎn)實(shí)驗(yàn)室,江蘇 南京 210009)
齒輪測量是保證齒輪精度的重要手段[1],在齒輪測量中,計算齒輪參數(shù)需要齒廓的精確位置,而漸開線齒廓的形狀由基圓確定,且計算理論齒廓也需要齒輪基圓參數(shù)。因此確定基圓的中心和半徑是齒輪測量中的重要環(huán)節(jié)。確定齒輪中心有多種方法,按獲取數(shù)據(jù)的方式可分為:接觸式和非接觸式。接觸式通過齒輪測量中心[2]、三坐標(biāo)測量儀[3]、激光測距儀[4]等設(shè)備提取齒輪齒廓的位置坐標(biāo),用反求方式求中心坐標(biāo)。非接觸式用攝像機(jī)等設(shè)備提取齒輪齒廓的數(shù)字量信息,利用重心法[5-6],Hough圓變換[7-8],最小二乘圓擬合[9-11]等方法求中心坐標(biāo)。上述方法在確定基圓參數(shù)的過程中,受齒輪軸孔形狀、是否有鍵槽的影響,存在局限性。
考慮到漸開線齒廓在輪廓中的高占比,能提供大量的坐標(biāo)數(shù)據(jù),以及Hough圓變換在圓形輪廓檢測中對噪聲和不連續(xù)性不敏感的優(yōu)點(diǎn)。這里提出了一種用于視覺系統(tǒng)的基于Hough漸開線變換的齒輪中心坐標(biāo)求解方法。
在圖像坐標(biāo)系中建立漸開線的數(shù)學(xué)模型f(x,α)=0,式中x=(x,y)為像素的圖像坐標(biāo),α為確定漸開線形狀的參數(shù)向量(下文簡稱為參數(shù)向量)。如圖1所示,有漸開線齒廓方程:
圖1 圖像中標(biāo)準(zhǔn)漸開線示意圖Fig.1 Standard Involute in Image Coordinates
式中:rb—基圓的半徑;?—漸開線在點(diǎn)B處的展開角,對于順時針展開的漸開線,?按順時針取值。
圖1中的漸開線基圓圓心在圖像坐標(biāo)系原點(diǎn),初始相位角為0,對(1)式做旋轉(zhuǎn)和平移變換,推廣到任意位置,如圖2所示。
圖2 任意位置漸開線示意圖Fig.2 Involute of Random Position in Image Coordinates
2.1.1 像素的梯度
在求解參數(shù)向量α?xí)r,如果只使用式(2),自由變量的個數(shù)較多,計算復(fù)雜度高。為了降低自由變量的個數(shù),用像素的梯度增加約束,記每處像素的梯度角ψ=Ψ(x)。
如圖2中所示,B'點(diǎn)處梯度的方向?yàn)橹本€C'B',其梯度角滿足下面的公式:
式中:dx和dy—該點(diǎn)處沿X和Y方向的梯度分量。
圖2中漸開線A'B'上每點(diǎn)的梯度角ψ與漸開線的初始相位角θ及該點(diǎn)處的展開角?存在等式關(guān)系:
展開角?為負(fù)時,表示順時針展開的漸開線。
按照Hough變換的思想,漸開線的Hough變換可以通過以下的形式實(shí)現(xiàn)。首先,設(shè)定一個累加數(shù)列C,C(α)表示滿足漸開線形式f(x,α)=0的參數(shù)向量α出現(xiàn)的次數(shù),設(shè)C(α)的初值為0;其次,對圖像中的每個像素點(diǎn)x,聯(lián)立式(2)和式(4)求出所有解α=(xo,yo,rb,θ,?),在相應(yīng)的累加數(shù)列C中有:
尋找累加數(shù)列C中的局部最大值,作為圖像中漸開線的參數(shù)。實(shí)際應(yīng)用中,只需要漸開線基圓的坐標(biāo)和半徑,即α的前三個分量。所以取前三個分量來構(gòu)建累加數(shù)列C,降低C的空間維度,便于累加計數(shù)和搜索極值。
2.1.2 離散化參數(shù)向量
在求解參數(shù)向量α的過程中,由于圖像采集和邊緣提取算法的誤差,代入方程的點(diǎn)x和梯度角ψ并不精確。由此得到的參數(shù)向量α也不準(zhǔn)確,這些不準(zhǔn)確的值分布在理想值的附近,給在累加數(shù)列C中尋找局部最大值造成影響。為了避免這樣的影響,在C進(jìn)行累加前,通過某種方式用離散后的參數(shù)向量值代替原始值。
考慮到圖像坐標(biāo)系是以像素為單位的離散坐標(biāo)系,選擇合適的分度將α離散化。如圖3所示,在參數(shù)空間oXoYoRb中,設(shè)定參數(shù)向量α中(xo,yo)的分度為ΔL,rb的分度為ΔR。由ΔL和ΔR定義了一個以α為起點(diǎn)的長方體鄰域,當(dāng)計算值落在該鄰域內(nèi)時,即:
圖3 離散化的參數(shù)空間Fig.3 Discretized Parameter Space
用α代替αc在累加數(shù)列C中進(jìn)行計數(shù)。參加累加計數(shù)的點(diǎn)是以參數(shù)空間原點(diǎn)為起始點(diǎn),ΔL、ΔR為分度的等距點(diǎn)。
將判斷計算值αc落在哪個點(diǎn)鄰域的映射記為g,有:
當(dāng)αc不在設(shè)定的參數(shù)空間取值范圍內(nèi)時,返回空值,不代入累加數(shù)列C。
此時累加數(shù)列C的計算公式改為:
通過離散化近似,使落在鄰域內(nèi)的點(diǎn)都以該鄰域的起點(diǎn)參與計數(shù),這樣既可以使基圓參數(shù)結(jié)果控制在ΔL、ΔR的精度內(nèi),也可以補(bǔ)償圖像采集和處理過程中引入的誤差。
對攝像機(jī)采集的齒輪圖像,采用上述的漸開線Hough變換原理,按照圖像處理過程,求得齒輪中心坐標(biāo),如圖4所示。
圖4 圖像處理流程Fig.4 Block Diagram of Image Processing
2.2.1 圖像濾波
由于圖像采集過程中光源、攝像機(jī)傳感器和其它外界因素的干擾,齒輪圖像存在噪聲。這里采用中值濾波方法,它在不模糊圖像邊緣的同時也可以有效的去除噪聲[6]。
設(shè)P(x,y)為圖像中第i行第j的像素點(diǎn)的灰度值,使用(3×3)大小的濾波核,濾波后該像素點(diǎn)的新灰度值P'(x,y)為:
式中:i,j—取區(qū)間[-1,1]中的整數(shù);
Med—取該集合內(nèi)像素點(diǎn)灰度的中值。
2.2.2 圖像卷積求梯度角
像素點(diǎn)的梯度角ψ可以通過該點(diǎn)處X和Y方向的梯度分量,用反正切函數(shù)求取。這里選用Scharr算子[12]進(jìn)行卷積,它有較高的精度和較低的敏感性。
選擇Scharr算子的卷積核大小為(3×3),點(diǎn)(x,y)處沿X和Y方向的梯度值Gx、Gy及梯度角ψ可由如下公式計算:
式中:SXi,j和SYi,j—沿X和Y方向的算子中的系數(shù),反正切函數(shù)arctan根據(jù)Gx、Gy的正負(fù)及比值返回角度值。
2.2.3 邊緣提取
濾波后的齒輪圖像經(jīng)邊緣提取后,得到邊緣圖像。邊緣像素坐標(biāo)將會用于后續(xù)Hough變換,這里采用Canny算子。它是一種雙閾值的混合邊緣算子,具有誤差率低、定位性好的優(yōu)點(diǎn)。
記邊緣圖像為E,E(x,y)=1表示該像素點(diǎn)為邊緣點(diǎn)。
2.2.4 漸開線Hough變換
用上兩節(jié)得到的梯度角和邊緣圖像,將第2.1的原理轉(zhuǎn)化成可行的圖像處理操作。
設(shè)定ΔL、ΔR的值為一個像素單位,D為參數(shù)空間取值范圍,[xmin,xmax][ymin,ymax][-?max,?max][rbmin,rbmax]是x、y、?、rb的取值區(qū)間,有如下的程序:
上述程序?qū)崿F(xiàn)了Hough漸開線變換。將[ymin,ymax]按設(shè)定的線程數(shù)n分段,對每一段(i=1,…,n)做漸開線Hough變換,得到累加數(shù)列Ci的結(jié)果。當(dāng)所有線程的運(yùn)算結(jié)束時,對累加數(shù)列Ci做矩陣加法,即:
這樣的多線程操作可以成倍的縮減漸開線Hough變換過程的時間。遍歷累加數(shù)列C,尋找其中的局部極大值,并設(shè)定一個閾值T(c可以取最大值的85%),記錄同時是局部最大值且大于閾值Tc的點(diǎn)對應(yīng)的參數(shù)向量,即:
式中Δαk=(ΔL,ΔL,ΔR),由于圖像中的漸開線齒廓都屬于同一個齒輪,滿足要求的αk通常只有一個。當(dāng)有多個αk時,取最大值附近m個分度(m看分度的大小自行決定)范圍內(nèi)滿足條件參數(shù)向量的平均值作為結(jié)果。漸開線Hough變換得到的最終結(jié)果,其中包含需要齒輪中心坐標(biāo)。
齒輪基圓參數(shù)提取的實(shí)驗(yàn)裝置示意圖,如圖5所示。有Basler acA2440-35um 型號的CMOS 灰度相機(jī),分辨率為(2448×2048)pixel;相機(jī)配備有Moritex ML-M1218HR 型號的定焦鏡頭,焦距12.01mm,視角范圍為(40.52×30.70)°;實(shí)驗(yàn)裝置底部安放了可調(diào)光強(qiáng)的白色LED面光源。相機(jī)與電腦由USB3.0接口連接,采集圖像傳入電腦后,用基于OpenCV的C++程序進(jìn)行圖像處理。
圖5 視覺實(shí)驗(yàn)裝置Fig.5 Computer Vision Experiment Equipment
分別使用重心法、Hough 圓變換、最小二乘圓擬合與Hough漸開線變換方法提取齒輪基圓參數(shù),比較各自結(jié)果驗(yàn)證可行性。
實(shí)驗(yàn)中對齒數(shù)z=24,模數(shù)m=5mm的6級精度圓柱直齒輪采集圖像??紤]定焦鏡頭產(chǎn)生的畸變,選用三階徑向畸變和切向畸變的畸變模型,用(8×8)的棋盤標(biāo)定板對相機(jī)進(jìn)行標(biāo)定和畸變矯正,標(biāo)定后重投影誤差為0.14pixel。
相同圖片下,各方法求得的齒輪基圓參數(shù),如表1所示。
表1 基圓參數(shù)求解結(jié)果Tab.1 Test Results of Base Circle Parameter
實(shí)驗(yàn)中前三種方法參考文獻(xiàn)[5,7,11]中的圖像處理流程,以圖像左上頂點(diǎn)為原點(diǎn),用標(biāo)定所得像素當(dāng)量將結(jié)果單位轉(zhuǎn)為mm。四種方法求出的基圓參數(shù)相互收斂,其中由于景深效應(yīng)的影響,依賴二值化閾值的重心法代入了較多齒輪內(nèi)圈像素的噪音,基圓坐標(biāo)和半徑的值與其它三種方法的差距較大。
齒輪理論基圓半徑為56.382mm,后三種方法與理論值的誤差分別為0.178mm、0.093mm和0.037mm,Hough漸開線變換方法的誤差最小。由于Hough圓變換在所用視覺庫中有底層加速,處理速度最快,除此之外,Hough漸開線變換在多線程的幫助下,時間優(yōu)于其它兩種方法。實(shí)驗(yàn)所用圖片,如圖6(a)所示。齒輪邊緣圖像,如圖6(b)所示。Hough漸開線變換的結(jié)果,如圖6(c)所示。
圖6 實(shí)驗(yàn)中的圖片F(xiàn)ig.6 Images in Experiments
為驗(yàn)證Hough漸開線變換法的準(zhǔn)確性,使用生成的標(biāo)準(zhǔn)齒輪圖像進(jìn)行仿真實(shí)驗(yàn)。
在(1200×900)大小的8位灰度空白圖像中,基圓圓心隨機(jī)選取圖像中央?yún)^(qū)域,以齒數(shù)z=17,模數(shù)m=36pixe(l以像素作為長度單位)作齒輪圖像。設(shè)置齒輪區(qū)域灰度值為30,其他部分灰度值為255,同時對每個像素點(diǎn)添加均方差為2灰度的高斯噪聲模擬隨機(jī)誤差。
運(yùn)行10次仿真測試,其中前8次為帶內(nèi)孔的的齒輪圖像,第9次為帶有鍵槽的齒輪圖像,第10次為缺齒的齒輪圖像,后兩次的齒輪圖像,如圖7所示。它們最終的結(jié)果,如表2、表3所示。
表2 仿真測試結(jié)果Tab.2 Results of Simulation Test
表3 各參數(shù)的標(biāo)準(zhǔn)差Tab.3 Standard Deviation of Each Parameter
圖7 仿真中的圖片F(xiàn)ig.7 Image in Simulation
在仿真測試中,設(shè)定參數(shù)空間的分度ΔL、ΔR都為0.2pixel,每次測試中步驟相同。仿真結(jié)果顯示,測試值與理論值最大偏差為1.5pixel,基圓中心坐標(biāo)和半徑誤差的標(biāo)準(zhǔn)差在1pixel以內(nèi)。一般Hough圓檢測法和重心法的誤差在(1~2)pixel內(nèi)[5],Hough漸開線變換在通用方法范圍內(nèi)。后兩次的仿真結(jié)果顯示,Hough 漸開線變換對存在鍵槽和缺齒的齒輪圖片同樣可以得到圓心,它的適用性比重心法和最小二乘圓擬合法要好,且無需修改圖像處理的步驟。綜合比較下,Hough漸開線變換在運(yùn)算時間和誤差結(jié)果上都明顯好于重心法和Hough圓檢測法,且在通用性上存在優(yōu)勢,可以達(dá)到檢測齒輪中心的目的。
這里用Hough漸開線變換來提取齒輪圖像的基圓參數(shù),闡述了Hough漸開線變換的原理和圖像處理流程。由于Hough變換不受齒輪內(nèi)孔鍵槽等影響,且對于齒廓邊緣的噪聲和不連續(xù)性不敏感,相比其他方法有更大的通用性,在處理速度上也有優(yōu)勢。在模數(shù)為5mm的圓柱直齒輪實(shí)驗(yàn)中,Hough漸開線變換法所求基圓半徑與理論值的誤差為0.037mm,與其他方法的比較結(jié)果顯示這里的方法具有可行性。仿真測試結(jié)果表明,該方法所得結(jié)果與理論值誤差的標(biāo)準(zhǔn)差在1pixel內(nèi),當(dāng)測量小模數(shù)齒輪時可以達(dá)到較高精度。按該方法求出的基圓參數(shù),可以后續(xù)用于齒輪參數(shù)及齒輪偏差的計算。