韓進宇,吳超群
(武漢理工大學(xué) 機電工程學(xué)院,湖北 武漢 430070)
在汽車卡鉗機器人自動化打磨時,為了能夠自動規(guī)劃機器人的打磨路徑,需要知道毛刺區(qū)域的輪廓信息和毛刺區(qū)域的位置信息。傳統(tǒng)毛刺信息檢測主要依靠測量工具進行手動測量,在對工件毛刺進行測量時容易對毛刺和測量工具造成磨損,并且當工件毛刺形狀比較復(fù)雜,毛刺數(shù)量比較多時測量效率不高。另外,汽車卡鉗屬于鑄造件,其毛刺的形狀和大小的一致性非常差,不同工件具有不同形狀和大小的毛刺,使得機器人離線編程難度加大。采用視覺對汽車卡鉗毛刺區(qū)域進行檢測和定位,既可以提高效率,又不會對毛刺區(qū)域造成損壞。因此研究復(fù)雜環(huán)境下汽車卡鉗毛刺打磨區(qū)域檢測和定位的圖像處理算法,可以實現(xiàn)汽車卡鉗毛刺打磨區(qū)域的在線檢測[1-2]。
毛刺檢測和定位系統(tǒng)主要由工業(yè)CMOS相機、PC機、光源、工件臺、過渡工裝和CMOS安裝支架等構(gòu)成,系統(tǒng)結(jié)構(gòu)如圖1所示。
圖1 毛刺檢測和定位系統(tǒng)示意圖
由于CMOS相機本身存在不可避免的安裝誤差,采用多幅棋盤格圖像對相機的內(nèi)外參數(shù)進行標定。該方法運用了針孔成像原理和9×6(每格20 mm)的棋盤格,介于自標定和傳統(tǒng)標定方法之間,既具有較好的魯棒性,又不需要制作昂貴的標定板[3]。標定實驗完成后得到相機的內(nèi)參矩陣A和畸變矩陣B如式(1)和式(2)所示。結(jié)合內(nèi)參矩陣和畸變矩陣進行仿射變換即可對圖像進行畸變矯正。在相機標定過程中總會存在一定問題,因此矯正后的圖像并不一定非常標準,只能優(yōu)化原有圖像,提高后續(xù)毛刺加工區(qū)域的定位精度。
(1)
B=[-0.117 00 0.770 00 -0.007 00
0.001 07 0.003 50]
(2)
完成圖像的畸變矯正后為了得到毛刺輪廓區(qū)域的位置信息,需要對檢測系統(tǒng)進行線性標定,建立卡鉗圖像像素點和工件毛刺區(qū)域?qū)嶋H位置尺寸的對應(yīng)關(guān)系。首先對采集的標準量塊的圖像進行畸變矯正,然后對量塊圖像進行相應(yīng)的圖像處理,計算出數(shù)字圖像中標準量塊的長度值r(pixel),若標準量塊的實際物理尺寸為r1(mm),那么系統(tǒng)的線性標定系數(shù)為k,如式(3)所示。
k=r1/r
(3)
為了降低標定誤差,對標準量塊進行多次人工測量和視覺測量,計算多個標定系數(shù),然后對所有標定系數(shù)取平均值得到最終的標定系數(shù)為0.087 mm/pixel。
根據(jù)汽車卡鉗實際的物理尺寸,在已知圖像大小為(2 500,1 900)的條件下剪切出圖像目標區(qū)域(region of interest,ROI),針對感興趣區(qū)域提取有效的圖像特征,最后對圖像特征進行分析和識別,ROI區(qū)域如圖2所示。根據(jù)實際拍攝圖像的大小,選取對角坐標為(1 000,900)和(1 450,1 530)的矩形區(qū)域?qū)ㄣQ中心矩形區(qū)域進行剪切提取。
圖2 ROI區(qū)域
由于工廠環(huán)境和圖像采集儀器的影響,使得卡鉗圖像在采集和傳輸時會混入各種噪聲和失真。這些噪聲和失真會對圖像中的目標區(qū)域的特征提取造成影響,因此需要先對圖像進行降噪處理。
經(jīng)典的濾波方法有均值濾波、中值濾波、高斯濾波等,采用這些濾波方法對圖像進行降噪處理時會對毛刺區(qū)域的邊緣造成破壞,不利于毛刺加工區(qū)域檢測。筆者采用基于圖像梯度信息的自適應(yīng)濾波對卡鉗圖像進行濾波處理[4],該方法步驟如下:
(1)設(shè)定迭代次數(shù)K;
(4)
(3)計算濾波核的權(quán)系數(shù),如式(5)所示:
ω(k)(m,n)=
(5)
式中:h為恒定參數(shù),他確定了可保留下的邊緣幅度。
(4)對f(k+1)(m,n)進行卷積運算,計算公式如式(6)所示:
f(k+1)(m,n)=
(6)
(5)根據(jù)指定的迭代次數(shù)K進行迭代,如果k=K,迭代結(jié)束,否則k++,轉(zhuǎn)步驟(2),自適應(yīng)濾波流程如圖3所示。
圖3 自適應(yīng)濾波流程
根據(jù)實驗發(fā)現(xiàn)K=3,h=14時該算法對圖像的邊緣有一定的銳化效果,同時對輪廓內(nèi)部區(qū)域有很好的平滑效果,自適應(yīng)濾波結(jié)果如圖4所示。
圖4 自適應(yīng)濾波結(jié)果圖
在對卡鉗毛刺區(qū)域進行提取和定位前,需要完成卡鉗圖像前景和背景的分割。全局閾值分割和局部閾值分割是常見的兩類閾值分割方法。全局閾值分割算法的計算效率高,但是對光照不均的圖像無法進行正確的分割。汽車卡鉗圖像存在光照不均和反光等問題,采用大津法(Otsu)等全局閾值分割法進行工件圖像分割時會造成一些邊緣缺失[5],如圖5所示。
圖5 全局閾值二值化圖
針對全局閾值分割存在的問題,筆者采用局部自適應(yīng)閾值法對圖像進行二值化,該算法單獨計算每一個像素點k×k領(lǐng)域內(nèi)的灰度均值減去常數(shù)C的結(jié)果作為該點的閾值,使用局部自適應(yīng)閾值分割結(jié)果如圖6所示。
圖6 自適應(yīng)閾值二值圖
由于工件表面鍍鋅,采集的工件照片存在反光區(qū)域,在完成閾值分割后該區(qū)域和背景區(qū)域灰度值相同,無法進行有效的區(qū)分,此時需要對二值圖像的反光區(qū)域進行去除。采用一種具有拓撲分析能力的邊界跟蹤算法將一幅二值圖像轉(zhuǎn)換成邊界描述。由于提取的信息是兩種邊界的包圍關(guān)系,這兩種邊界是:外層邊界和孔洞邊界。既然外層邊界和1連通域(1-component)之間、孔洞邊界和0連通域(0-component)之間存在一對一的對應(yīng)關(guān)系,則給定二值圖像的拓撲結(jié)構(gòu)是確定的[6]。根據(jù)這一原理調(diào)用Opencv中findcounter函數(shù)輸出檢測到的每一個連通區(qū)域輪廓點的集合vector〈vector〈point〉〉,然后調(diào)用drawContours()函數(shù)填充指定區(qū)域[7],得到去除反光區(qū)域的二值圖像,具體程序流程如圖7所示。
如圖8所示,分別對打磨好的模板工件圖像1和帶有未處理毛刺的工件圖像2進行二值化操作,得到去除反光的二值化圖像1和圖像2,將圖像1減去圖像2即可得到毛刺區(qū)域的二值化圖像[8]。使用Opencv中findcounter()函數(shù)查找每一毛刺區(qū)域的輪廓,然后使用Moment()函數(shù)計算每個輪廓的中心矩,進而計算出每個毛刺區(qū)域輪廓的質(zhì)心位置。
圖8 毛刺區(qū)域提取圖
累計概率霍夫變換(progressive probabilistic hough transform,PPHT)算法在對圖像中的直線進行檢測時,可以設(shè)定直線的最小長度和該直線被擬合出來次數(shù)的累加值,只有當累加值大于設(shè)定閾值的直線才會取出。對打磨好的工件模板圖像的ROI區(qū)域二值圖像進行Canny邊緣檢測得到中心矩形的單邊緣圖像[9],然后使用累積概率霍夫變換檢測矩形四條邊的直線區(qū)域[10],根據(jù)檢測到的四條邊線的直線段區(qū)間求取矩形區(qū)域的4個頂點坐標(1 046,933)、(1 393,933)、(1 046,1 470)、(1 393,1 470),由于系統(tǒng)硬件標定精度為0.087 mm/pixel進而求得矩形區(qū)域中心點的位置坐標(106.1 mm,104.5 mm),實驗結(jié)果如圖9所示。
圖9 矩形中心位置
根據(jù)上述方法對一批卡鉗毛刺進行圖像處理,得到了每個毛刺區(qū)域輪廓的質(zhì)心相對定位矩形中心位置的像素坐標,根據(jù)標定精度再將像素坐標轉(zhuǎn)換成對應(yīng)的物理坐標,實驗結(jié)果如表1所示。利用所得到的物理坐標對毛刺區(qū)域進行定位可為后續(xù)的毛刺打磨工序提供依據(jù)。
表1 毛刺檢測實驗結(jié)果
研究汽車卡鉗毛刺檢測和定位的方法,針對傳統(tǒng)濾波算法容易使毛刺邊緣模糊的問題,提出了一種基于梯度信息的自適應(yīng)濾波算法,針對工件圖像光照不均提出使用自使用閾值分割代替全局閾值分割,通過模板工件二值圖像和未打磨工件二值圖像相減獲得毛刺加工區(qū)域二值圖像,最后檢測定位矩形的中心位置對毛刺區(qū)域進行定位。該檢測系統(tǒng)的毛刺區(qū)域定位精度可以達到0.087 mm/pixel。