豆永坤 王洪申 張翔宇 徐鵬飛
(蘭州理工大學(xué)機(jī)電工程學(xué)院 甘肅 蘭州 730050)
標(biāo)準(zhǔn)漸開線直齒圓柱齒輪應(yīng)用廣泛,齒輪輪齒對(duì)于齒輪傳動(dòng)的平穩(wěn)性起著關(guān)鍵性作用。齒輪的主要失效形式也集中在輪齒上,如:輪齒折斷、齒面磨損、齒面點(diǎn)蝕等,這些失效形式都會(huì)對(duì)齒輪輪齒的輪廓造成影響。因此,可以通過對(duì)齒輪輪齒輪廓的檢測(cè),檢測(cè)一個(gè)齒輪的輪齒是否失效;也可用來(lái)判定使用過的齒輪是否具有可繼續(xù)使用性。
基于工業(yè)視覺的齒輪檢測(cè)具有自動(dòng)化程度高、非接觸、低成本等優(yōu)點(diǎn)。許多學(xué)者對(duì)其進(jìn)行了研究,Saini等[1]借助圖像處理算法與計(jì)算機(jī)視覺對(duì)塑料齒輪的缺陷進(jìn)行識(shí)別;Ali等[2]應(yīng)用計(jì)算機(jī)視覺的方法來(lái)改善齒輪輪廓檢測(cè)的安全性和可靠性;Wang等[3]基于機(jī)器視覺設(shè)計(jì)了齒輪參數(shù)的檢測(cè)系統(tǒng);王文成[4]利用單個(gè)輪齒像素總數(shù)的比較方法對(duì)輪齒的缺陷進(jìn)行檢測(cè);賀秋偉等[5]對(duì)微型齒輪輪齒缺陷采用圖像處理技術(shù)和支持向量機(jī)的方法進(jìn)行檢測(cè);楊淑瑩等[6]對(duì)齒輪實(shí)際圖像和設(shè)計(jì)圖像采用互信息的方法進(jìn)行配準(zhǔn),然后對(duì)兩幅圖像進(jìn)行小波融合,基于兩幅圖像的重合效果,來(lái)判斷齒輪產(chǎn)品是否合格;趙霞等[7]對(duì)齒輪的齒形誤差通過建立齒形誤差的圖像法測(cè)量數(shù)學(xué)模型來(lái)進(jìn)行檢測(cè)。
本文借助Halcon軟件,使用Microsoft Visual Studio 2010設(shè)計(jì)了齒輪齒型檢測(cè)系統(tǒng),系統(tǒng)結(jié)構(gòu)流程如圖1所示。首先對(duì)齒輪圖像進(jìn)行采集與預(yù)處理,對(duì)齒輪圖像進(jìn)行尺寸檢測(cè),獲取齒輪基本參數(shù);根據(jù)獲取的參數(shù),畫出標(biāo)準(zhǔn)輪齒輪廓;然后提取待測(cè)齒輪輪齒輪廓;最后計(jì)算對(duì)應(yīng)位置的實(shí)際輪齒輪廓與標(biāo)準(zhǔn)輪齒輪廓的Hausdorff距離,看是否小于設(shè)定的公差,來(lái)判定輪齒是否合格,完成對(duì)齒輪輪齒的檢測(cè)。
圖1 系統(tǒng)結(jié)構(gòu)流程圖
Halcon是德國(guó)MVtec公司開發(fā)的一套完善的標(biāo)準(zhǔn)的機(jī)器視覺算法包,擁有應(yīng)用廣泛的機(jī)器視覺集成開發(fā)環(huán)境。為了讓使用者能在最短的時(shí)間里開發(fā)出視覺系統(tǒng),其包含了一套交互式的程序設(shè)計(jì)界面HDevelop,可在其中以Halcon程序代碼直接撰寫、修改、執(zhí)行程序,并且可以查看運(yùn)行過程中的所有變量。設(shè)計(jì)完成后,可以直接輸出C++等不同的程序代碼,套入程序中。
如圖2所示,使用HDevelop界面的菜單,運(yùn)用一系列編輯的Halcon算子對(duì)圖像進(jìn)行處理。處理完成后,把算子以C++代碼的形式導(dǎo)入開發(fā)的系統(tǒng)中。
圖2 HDevelop界面
本文采集圖像所用的工業(yè)相機(jī)為西安維視MV-EM 120C工業(yè)相機(jī),鏡頭分辨率為1 280×960,檢測(cè)精度為0.05 mm。
使用open_framegrabber算子打開相機(jī),grab_image_start算子對(duì)齒輪圖像進(jìn)行采集,得到的齒輪圖像如圖3所示。
圖3 齒輪圖像采集
圖像在采集和傳輸中會(huì)不可避免的受到噪聲的污染,影響人們對(duì)圖像的理解和分析處理。圖像去噪的目的就是濾除噪聲,減少噪聲的影響。圖像中主要的噪聲是椒鹽噪聲和高斯噪聲,首先使用Halcon中自帶的中值濾波算子median_image對(duì)采集的齒輪圖像進(jìn)行處理,消除椒鹽噪聲的影響;再采用高斯濾波算子gauss_image,消除高斯噪聲的影響。處理過的圖像如圖4所示。
如式(1)所示,設(shè)原始圖像為f(x,y),二值化后的圖像為g(x,y),閾值為M,其中1為目標(biāo)圖像的值,0為背景圖像的值。對(duì)圖像進(jìn)行二值化能夠清晰地區(qū)分背景圖像和目標(biāo)圖像。
(1)
使用HDevelop界面中的灰度直方圖工具,根據(jù)灰度直方圖中圖像灰度值分布的疏密程度,選用合適的閾值對(duì)濾波后的齒輪圖像進(jìn)行二值化, 齒輪圖像的灰度直方圖如圖5(a)所示,二值化的圖像如圖5(b)所示。采用的算法如下:
threshold (ImageGauss, Regions, 0, 77)
其中,ImageGauss為輸入的圖像變量,Regions為輸出的圖像變量;0和77分別是選取的最小和最大灰度值。齒輪圖像灰度值在0和77之間的被設(shè)定為目標(biāo)圖像,大于77的為背景圖像。
圖5 圖像分割
二值化后的齒輪圖像,雖然把目標(biāo)齒輪和背景圖像分別提取出來(lái),難免會(huì)把圖像中的一些雜點(diǎn)也當(dāng)做目標(biāo)區(qū)域提取了出來(lái),因此需要使用算法把雜點(diǎn)濾掉,提取目標(biāo)齒輪。Halcon中的connection算子可以根據(jù)區(qū)域的連通關(guān)系,把圖像中的各個(gè)區(qū)域獨(dú)立分開,只需要把齒輪區(qū)域提取出來(lái)即可。
而目標(biāo)齒輪又是二值圖像中最大的非背景區(qū)域,所以使用select_shape_std把二值圖像中最大的非背景區(qū)域提取出來(lái),也即把目標(biāo)齒輪提取出來(lái)。算法如下:
select_shape_std(ConnectedRegions,SelectedRegions,′max_area′, 70)
其中,ConnectedRegions為圖像中獨(dú)立的各個(gè)非背景區(qū)域,SelectedRegions為選出的最大區(qū)域,即是齒輪區(qū)域?!甿ax_area’是最大區(qū)域參數(shù),“70”為相似程度參數(shù),數(shù)值越大相似程度越高,最大值為100,70為默認(rèn)值。
由齒輪的各個(gè)參數(shù)可以畫出一個(gè)標(biāo)準(zhǔn)漸開線直齒圓柱齒輪,齒輪的漸開線齒廓形狀也是由齒輪的參數(shù)決定的??梢允褂肏alcon中的算子獲取齒輪的一些基本參數(shù)。采用的算子如下:
fill_up(SelectedRegions,RegionFillUp)
smallest_circle(RegionFillUp,OuterRow,OuterColumn,OuterRadius)
inner_circle(RegionFillUp,InnerRow,InnerColumn,InnerRadius)
fill_up算子把齒輪的內(nèi)部的孔填充,以免內(nèi)部的孔對(duì)參數(shù)獲取造成影響;smallest_circle算子獲取齒輪的齒頂圓半徑和齒頂圓的中心坐標(biāo);inner_circle算子獲取齒輪的齒根圓半徑和齒根圓的中心坐標(biāo)。其中RegionFillUp為填充內(nèi)孔之后的齒輪區(qū)域,OuterRadius是獲得的齒頂圓半徑, (OuterRow,OuterColumn) 為齒頂圓的中心坐標(biāo),InnerRadius是獲得的齒根圓半徑, (InnerRow,InnerColumn) 為齒根圓的中心坐標(biāo)。由da=2×OuterRadius和df=2×InnerRadius,可以得到齒輪的齒頂圓直徑和齒根圓直徑。
(1) 根據(jù)齒根圓的中心坐標(biāo)和齒根圓半徑,生成一個(gè)圓區(qū)域,使得這個(gè)區(qū)域把齒根圓以內(nèi)區(qū)域完全包含進(jìn)去,如圖6(a)所示,算子語(yǔ)句如下:
gen_circle(Circle,InnerRow,InnerColumn,InnerRadius)
采用下面的算子獲取此圓區(qū)域的補(bǔ)集,如圖6(b)所示。
complement(Circle,RegionComplement)
對(duì)填充齒輪區(qū)域和圓區(qū)域補(bǔ)集區(qū)域求交集,可以得到只包含輪齒的區(qū)域,這樣可以采用相應(yīng)的算法得到齒輪的齒數(shù)。得到的只包含輪齒圖像如圖6(c)所示。
圖6 提取輪齒過程
(2) 使用connection算子根據(jù)連通性把各個(gè)輪齒獨(dú)立分開,再使用count_obj計(jì)算齒輪的輪齒數(shù)量,使用的算子語(yǔ)句如下:
connection(RegionIntersection,ConnectedDefect)
count_obj(ConnectedDefect,Z)
其中,ConnectedDefect表示根據(jù)連通性各個(gè)獨(dú)立的輪齒區(qū)域,Z表示齒數(shù)。由公式m=da/(Z+2),d=mz,db=d×cosα,可以得到齒輪的模數(shù)m,分度圓直徑d和基圓直徑db。由齒數(shù)Z,可以得到兩個(gè)輪齒中心的夾角P=360°/Z。
圖7為漸開線生成原理圖,因?yàn)闈u開線是從基圓上的點(diǎn)開始的,可以利用基圓上的點(diǎn)(x1,y1)來(lái)確定漸開線上對(duì)應(yīng)的點(diǎn)(x,y)。圖中,L為漸開線發(fā)生線,漸開線發(fā)生線L和漸開線發(fā)生線L在基圓上做純滾動(dòng)繞過的圓弧S距離相等。
圖7 漸開線生成原理圖
用(x1,y1)表示(x,y)的公式如下所示:
(2)
式中:rb為齒輪基圓的半徑,γ為點(diǎn)(x1,y1)、基圓圓心連線與水平線的夾角。
基于此,以齒輪的齒頂圓中心為圓心,分別畫出基圓、齒頂圓和水平位置齒輪輪齒兩側(cè)的漸開線,通過對(duì)這些輪廓求交、修剪,得到一個(gè)標(biāo)準(zhǔn)的輪齒輪廓。然后把這個(gè)輪齒輪廓以角度P順時(shí)針旋轉(zhuǎn),得到齒輪的各個(gè)標(biāo)準(zhǔn)輪齒輪廓。處理的過程如圖8所示。
圖8 生成標(biāo)準(zhǔn)輪齒輪廓
3.2.1 對(duì)齒輪圖像進(jìn)行旋轉(zhuǎn)
使用Halcon算子獲取一個(gè)待測(cè)齒輪輪齒輪廓,并計(jì)算此輪齒輪廓與基圓的兩個(gè)交點(diǎn),可知這兩個(gè)交點(diǎn)連線的中點(diǎn)與齒頂圓的中心連線肯定過輪齒的中心,如圖9(a)所示。計(jì)算這條線與水平線的夾角為β。對(duì)待側(cè)齒輪圖像順時(shí)針旋轉(zhuǎn)β角,剛好選取的這個(gè)輪齒旋轉(zhuǎn)到水平位置,如圖9(b)所示。
圖9 齒輪圖像旋轉(zhuǎn)的過程
3.2.2 獲取旋轉(zhuǎn)后的齒輪區(qū)域的各個(gè)輪齒輪廓
獲取各個(gè)輪齒的區(qū)域,然后提取其輪廓。如圖10所示。
圖10 提取實(shí)際齒輪的各個(gè)輪廓
使用的算子語(yǔ)句如下:
gen_contour_region_xld(DestRegions,Contours,′border′)
get_contour_xld(Contours,Row,Col)
其中,DestRegions為對(duì)應(yīng)的輪齒區(qū)域,Contours為提取的輪齒輪廓,′border′為以“邊界像素點(diǎn)的邊界”為提取類型。Row和Col為對(duì)應(yīng)輪廓的行坐標(biāo)和列坐標(biāo)。這里提取的齒廓是亞像素精度的輪廓。
Hausdorff距離是用來(lái)計(jì)算兩曲線間距離的一種重要的算法,常用于衡量?jī)蓚€(gè)集合之間差別的度量?,F(xiàn)已廣泛應(yīng)用于計(jì)算幾何、圖像匹配、圖像識(shí)別[8-11]等領(lǐng)域。
Hausdorff距離詳述如下:平面中有兩條曲線A、B,如圖11所示。
圖11 曲線A、B
其矢量方程可表示為:
A:A=A(a)
B:B=B(b)
平面中曲線A、B間的Hausdorff距離可分為單向和雙向Hausdorff距離,其中A到B的單向Hausdorff距離是指曲線A上任意一點(diǎn)到曲線B的最小距離中的一個(gè)最大值[12],表示為:
式中:d(A(a),B(b))表示點(diǎn)a與點(diǎn)b間的歐幾里得距離。同理,B到A的單向Hausdorff距離可表示為:
單向Hausdorff距離通常用來(lái)表示一條曲線相對(duì)于另一條曲線的最大偏差。我們?nèi)蓚€(gè)單向Hausdorff距離中的大者作為曲線A與B的雙向Hausdorff距離,(簡(jiǎn)稱Hausdorff距離)用來(lái)表示集合A、B間的最大偏差。通常表示為:
H(A,B)=max{h(A,B),h(B,A)}
選取一對(duì)實(shí)際齒廓與理論齒廓為例,如圖12所示。其中虛線表示輪齒的實(shí)際齒廓線,實(shí)線表示輪齒的理論齒廓線。計(jì)算兩條曲線的Hausdorff距離,以此值是否小于一定的公差來(lái)判定輪齒合格與否。
圖12 實(shí)際齒廓與理論齒廓
圖13 齒廓總偏差圖形
由于燈光等因素的影響,采集的齒輪圖像,與真實(shí)齒輪有所偏差。在邊緣提取的過程中也會(huì)對(duì)齒輪齒廓形狀造成誤差,設(shè)定上述過程中造成的誤差為1個(gè)像素值。
在對(duì)齒輪圖像旋轉(zhuǎn)過程中,選取的輪齒輪廓和基圓輪廓的兩個(gè)交點(diǎn)取的都是整像素坐標(biāo)點(diǎn),同樣會(huì)造成偏差,造成的偏差肯定小于1個(gè)像素值,這里取0.5個(gè)像素值。
綜上所述,齒廓的總公差E等于齒廓偏差、圖像采集誤差與圖像處理過程中造成的誤差之和,得到齒廓的總公差為:
使用MFC與Halcon混合聯(lián)編,設(shè)計(jì)一個(gè)基于對(duì)話框的齒輪輪齒缺陷檢測(cè)系統(tǒng),如圖13所示。把在Halcon中使用的算子,導(dǎo)出并生成C++代碼,套入此系統(tǒng)中。系統(tǒng)界面有采集齒輪圖像、圖像預(yù)處理、獲取齒輪參數(shù)、畫出標(biāo)準(zhǔn)漸開線輪齒輪廓、旋轉(zhuǎn)齒輪圖像、提取齒輪輪廓、計(jì)算Hausdorff距離及選出有缺陷的輪齒處理過程。
以實(shí)際齒廓與理論齒廓的Hausdorff距離是否小于公差E為準(zhǔn),來(lái)判定輪齒是否合格。不合格的輪齒將被選出,顯示在圖14中的圖形顯示窗口中。
圖14 輪齒檢測(cè)系統(tǒng)界面
計(jì)算實(shí)際齒廓與理論齒廓的Hausdorff距離的程序如下:
//計(jì)算Hausdorff距離
double distance(feature_t *F1, feature_t *F2, int numA, int numB)
{
double hAB;
double hBA;
//結(jié)構(gòu)體F1表示實(shí)際齒廓坐標(biāo)點(diǎn)集合,結(jié)構(gòu)體F2表示理
//論齒廓坐標(biāo)點(diǎn)集合,numA為F1中的元素個(gè)數(shù),numB為F2
//中的元素個(gè)數(shù)。
hAB = computeDirDistance(F1, F2, numA, numB) ;
hBA = computeDirDistance(F2, F1, numA, numB) ;
return max(hAB, hBA);
}
double computeDirDistance(feature_t *F1, feature_t *F2, int numA, int numB)
//計(jì)算單向Hausdorff距離
{
double *disA = new double[numA];
double temp;
double aB = MAX_DISTANCE;
//把一個(gè)極大值賦給aB
for (int i = 0; i < numA; i++)
{
for (int j = 0; j < numB; j++)
{
double dX = F1[i].X - F2[j].X, dY = F1[i].Y - F2[j].Y;
temp = sqrt((double)(dX*dX + dY*dY));
aB = min(temp,aB);
}//計(jì)算一個(gè)點(diǎn)與另一個(gè)集合各個(gè)點(diǎn)的歐幾里得距離
disA[i] = aB;
aB = MAX_DISTANCE;
}//計(jì)算一個(gè)集合各個(gè)點(diǎn)與另一個(gè)集合各個(gè)點(diǎn)的歐幾里
//得距離
sort(disA, numA);
double dis;
dis = disA[numA - 1];
delete []disA;
return dis;
}
void sort(double a[], int n)
//升序排列數(shù)組元素
{
double temp;
for(int i=0; i for(int j=i+1; j { if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } } } 使用的齒輪為漸開線直齒圓柱齒輪,其中有一個(gè)輪齒已經(jīng)斷裂,使用本文方法對(duì)其進(jìn)行檢測(cè)。測(cè)得齒輪的齒數(shù)為18,模數(shù)為2.499 6,分度圓直徑為44.992 8,采集的齒輪圖像如圖3所示。查閱第五版機(jī)械手冊(cè)得:此參數(shù)下12級(jí)精度的漸開線直齒圓柱齒輪的齒廓總偏差為81 μm,因?yàn)橄鄼C(jī)精度為50 μm,換算為像素單位,齒廓總偏差為1.62個(gè)像素值。由此可以得到對(duì)應(yīng)的齒廓總公差為: E=1+0.5+0.81=2.31 此齒輪對(duì)應(yīng)的各個(gè)輪齒輪廓的Hausdorff距離如表1所示。 表1 各個(gè)輪齒輪廓Hausdorff距離 續(xù)表1 選出不合格的輪齒,如圖15所示,黑色輪齒即為不合格輪齒。 圖15 選出有缺陷的輪齒 圖16為不合格的輪齒實(shí)際齒廓線與理論齒廓線。其中虛線表示輪齒的實(shí)際齒廓線,實(shí)線表示輪齒理論齒廓線,從圖中可以看出斷齒被選出來(lái)。 圖16 有缺陷的輪齒的輪廓比較圖 齒輪為使用過一段時(shí)間的漸開線直齒圓柱齒輪,經(jīng)檢測(cè)齒輪的齒數(shù)為16,模數(shù)為1.989 3,分度圓直徑為31.828 8 mm,如圖17所示。查閱第五版機(jī)械手冊(cè)得:此參數(shù)下12級(jí)精度的漸開線直齒圓柱齒輪的齒廓總偏差為58 μm,換算為像素單位,齒廓總偏差為1.16個(gè)像素值。由此可以得到對(duì)應(yīng)的齒廓總公差為: E=1+0.5+0.58=2.08 圖17 齒輪圖像 齒輪對(duì)應(yīng)的各個(gè)輪齒輪廓的Hausdorff距離如表2所示。 表2 各個(gè)輪齒輪廓Hausdorff距離 選出不合格的輪齒,如圖18所示,黑色輪齒即為不合格輪齒,可以看到有一半以上的輪齒已經(jīng)損壞。 圖18 選出有缺陷的輪齒 圖19為從圖18中選出的兩對(duì)不合格的輪齒實(shí)際齒廓線與理論齒廓線。其中虛線表示輪齒的實(shí)際齒廓線,實(shí)線表示輪齒的理論齒廓線。 圖19 有缺陷的輪齒的輪廓比較圖 從上述的兩個(gè)檢測(cè)實(shí)例中可以看出,使用本算法可以較好地檢測(cè)出標(biāo)準(zhǔn)漸開線直齒圓柱齒輪斷齒缺陷和輪齒磨損。 本文借助Halcon,利用圖像處理算法提取標(biāo)準(zhǔn)漸開線直齒圓柱齒輪實(shí)際輪齒輪廓。根據(jù)齒輪的基本參數(shù)畫出標(biāo)準(zhǔn)的漸開線輪齒輪廓,并計(jì)算兩者的Hausdorff距離,以其是否小于設(shè)定的公差,來(lái)判定齒輪輪齒是否合格。經(jīng)過對(duì)實(shí)際齒輪的檢測(cè),可以看出,此方法可以很好地檢測(cè)出有缺陷的齒輪輪齒。 由于是與標(biāo)準(zhǔn)輪廓相比較,本文算法能夠較準(zhǔn)確地檢測(cè)出標(biāo)準(zhǔn)漸開線直齒圓柱齒輪輪齒表面的缺陷。其適用于對(duì)流水線上有缺陷的齒輪進(jìn)行識(shí)別,也可以對(duì)使用過的齒輪進(jìn)行檢測(cè),看是否有重用的價(jià)值。根據(jù)不同類型齒輪的特點(diǎn),可以通過修改相應(yīng)的處理過程,應(yīng)用于對(duì)其他類型齒輪輪齒的檢測(cè)。 [1] Saini P,Anand M R.Identification of Defects in Plastic Gears Using Image Processing and Computer Vision:A Review[J].International Journal of Engineering Research,2014,3(2):94-99. [2] Ali M H,Kurokawa S,Uesugi K.Application of machine vision in improving safety and reliability for gear profile measurement[J].Machine Vision & Applications,2014,25(6):1549-1559. [3] Wang Wencheng,Guan Fengnian,Ma Shiyong,et al.Measurement System of Gear Parameters Based on Machine Vision[J].Measure and Control,2015,48(8):242-248. [4] 王文成.基于Halcon的齒輪缺陷檢測(cè)系統(tǒng)設(shè)計(jì)[J].機(jī)械傳動(dòng),2014,38(9):60-62,98. [5] 賀秋偉,王龍山,于忠黨,等.基于圖像處理和支持向量機(jī)的微型齒輪缺陷檢測(cè)[J].吉林大學(xué)學(xué)報(bào)(工學(xué)版),2008,38(3):565-569. [6] 楊淑瑩,任翠池,張成,等.基于機(jī)器視覺的齒輪產(chǎn)品外觀缺陷檢測(cè)[J].天津大學(xué)學(xué)報(bào)(自然科學(xué)與工程技術(shù)版),2007,40(9):1111-1114. [7] 趙霞,毛建東.齒輪齒形誤差圖像測(cè)量方法的研究[J].機(jī)床與液壓,2009,37(6):124-128. [8] Chen X D,Ma W,Xu G,et al.Computing the Hausdorff distance between two B-spline curves[J].Computer-Aided Design,2010,42(12):1197-1206. [9] Bai Y B,Yong J H,Liu C Y,et al.Polyline approach for approximation Hausdorff distance between plannar free-form curves[J].Computer-Aided Design,2011,43(6):687-698. [10] 郭桂旭,惠斌,馮劍.基于改進(jìn)Hausdorff距離的分層景象匹配算法[J].計(jì)算機(jī)應(yīng)用研究,2014,31(12):3837-3840. [11] 楊學(xué)文,馮志全,黃忠柱,等.結(jié)合手勢(shì)主方向和類-Hausdorff距離的手勢(shì)識(shí)別[J].計(jì)算機(jī)輔助設(shè)計(jì)與圖形學(xué)學(xué)報(bào),2016,28(1):75-81. [12] Alt H,Scharf L.Computing the Hausdorff Distance between Curved Objects[J].International Journal of Computational Geometry & Applications,2008,18(4):307-320.4 應(yīng)用實(shí)例
4.1 斷齒的檢測(cè)
4.2 磨損齒輪輪齒的檢測(cè)
5 結(jié) 語(yǔ)