蘇春妮
(玉林師范學(xué)院計(jì)算機(jī)科學(xué)與工程學(xué)院,廣西玉林,537000)
隨著工業(yè)技術(shù)的高速發(fā)展,機(jī)械零件尺寸測(cè)量已成為工業(yè)生產(chǎn)中的一個(gè)重要環(huán)節(jié),而且對(duì)尺寸測(cè)量技術(shù)水平的要求也越來(lái)越高[1]。許多機(jī)械零件需要檢測(cè)孔心距離和外徑、輪廓的不規(guī)則度,用來(lái)檢測(cè)機(jī)械零件是否滿足生產(chǎn)精度的要求,如機(jī)械零件傳動(dòng)鏈板要求鏈板兩孔中心距離嚴(yán)格控制在公差范圍內(nèi),這樣才能確保裝配好的鏈條節(jié)距一致,所以鏈板兩孔中心距離的測(cè)量非常重要[2]。而基于圖像處理的機(jī)械零件尺寸測(cè)量方法,具有非接觸、速度快、精度高的特點(diǎn),滿足工業(yè)生產(chǎn)對(duì)零件測(cè)量速度和精度的要求。
基于圖像的機(jī)械零件尺寸測(cè)量軟件系統(tǒng)中數(shù)字圖像處理的算法復(fù)雜,使用面向?qū)ο笤O(shè)計(jì)方法來(lái)可以解決復(fù)雜的處理模塊的問(wèn)題。類具有封裝、繼承和多態(tài)等特性,將機(jī)械零件尺寸測(cè)量軟件系統(tǒng)建立在類層次結(jié)構(gòu)基礎(chǔ)上,這樣修改和增加新算法就更加容易,從而保證軟件系統(tǒng)具有良好的擴(kuò)充性[3]。本文將中成熟的算法加入到算法類庫(kù)中,能夠短時(shí)間內(nèi)將有關(guān)的圖像處理算法組合成可靠的零件尺寸測(cè)量系統(tǒng),快速精確地測(cè)量出零件的尺寸。
成像系統(tǒng)獲取的圖像往往帶有各種各樣的噪聲,會(huì)影響圖像的質(zhì)量。所以在對(duì)圖像進(jìn)行特征提取與分析之前,必須改善圖像的質(zhì)量,行之有效的方法是對(duì)原始圖像進(jìn)行圖像預(yù)處理。
(1)灰度化
在機(jī)械零件尺寸測(cè)量中,彩色圖像的RGB 三個(gè)分量不需要進(jìn)行分析。為了減小圖像原始數(shù)據(jù)量,將彩色圖像轉(zhuǎn)化成灰度圖像,有利于減少后續(xù)處理的計(jì)算量,加快檢測(cè)速度。調(diào)用OpenCVC[4]函數(shù)cvCvtColor(),實(shí)現(xiàn)RGB 圖像向灰度圖像轉(zhuǎn)變。
(2)平滑濾波
機(jī)械零件圖像在采集過(guò)程中往往存在一定程度的噪聲干擾,會(huì)影響圖像質(zhì)量,給圖像分析等后續(xù)工作帶來(lái)了困難,因此去除噪聲是圖像處理的一項(xiàng)重要內(nèi)容。為了達(dá)到既能消除噪聲又能保護(hù)圖像細(xì)節(jié)的目的,在此使用非線性濾波器中的中值濾波器,其基本原理是把圖像中一點(diǎn)的值用該點(diǎn)的一個(gè)鄰域中各點(diǎn)值的中值代替,消除孤立的噪聲點(diǎn)。調(diào)用OpenCV函數(shù)cvSmooth(),中值濾波模板大小為默認(rèn)的3×3。
邊緣是指圖像局部灰度變化最顯著的部分。邊緣主要存在于目標(biāo)與目標(biāo)、區(qū)域與區(qū)域之間,是圖像分割、紋理特征提取和形狀特征提取等圖像分析的重要基礎(chǔ)。為了能更好地提取出機(jī)械零件圖像的邊緣,首先對(duì)圖像的灰度圖進(jìn)行二值化處理,然后利用邊緣檢測(cè)算子-canny 算子檢測(cè)出二值圖像的邊緣。
(1)閾值分割
閾值分割法計(jì)算簡(jiǎn)單,而且總能用封閉且連通的邊界定義不交疊的區(qū)域,對(duì)目標(biāo)與背景有較強(qiáng)對(duì)比的圖像顯示出較好的分割效果。這種方法的一個(gè)關(guān)鍵技術(shù)是最優(yōu)閾值的確定,如果閾值選取過(guò)高,則過(guò)多的目標(biāo)區(qū)域?qū)⒈粍澐譃楸尘皡^(qū);反之,如果閾值選取過(guò)低,則過(guò)多的背景區(qū)域被劃分為目標(biāo)區(qū)域。在本文我們采用圖像的二值化處理,選擇一個(gè)閾值T,調(diào)用OpenCVC 函數(shù)cvThreshold(),將圖像轉(zhuǎn)換為黑白二值圖像。
(2)邊緣檢測(cè)
邊緣檢測(cè)有很多算法,常用的檢測(cè)算子有Roberts算子、Sobel 算子、Prewitt 算子、Laplacian 算子、Canny 算子。Canny 算子具有良好的邊緣檢測(cè)性能,調(diào)用OpenCVC 函數(shù)cvCanny(),使用canny 算子,檢測(cè)出機(jī)械零件的邊緣。
Hough 變換[5]的基本原理在于,利用點(diǎn)與線的對(duì)偶性,將圖像空間的線條變?yōu)閰?shù)空間的聚集點(diǎn),從而檢測(cè)給定圖像是否存在給定性質(zhì)的曲線。圓的方程為:(x-a)^2+(yb)^2=r^2,其中圓心為(a,b),半徑為r,通過(guò)Hough變換,將圖像空間對(duì)應(yīng)到參數(shù)空間。調(diào)用OpenCVC 函數(shù)cvHoughCircles()根據(jù)Hough 變換檢測(cè)出圓。
基于上述算法介紹,機(jī)械零件圖像處理算法流程是圖像預(yù)處理(灰度化、平滑濾波)、邊緣提?。ㄩ撝捣指睢⑦吘墮z測(cè))、Hough 變換檢測(cè)圓[2]。
軟件系統(tǒng)在VS2008 環(huán)境中應(yīng)用OpenCV 來(lái)開(kāi)發(fā),實(shí)現(xiàn)基本的數(shù)字圖像處理算法。軟件程序流程圖如圖1 所示。
圖1 軟件程序流程圖
(1)IplImage 圖像數(shù)據(jù)結(jié)構(gòu)體
由于OpenCV 主要針對(duì)的是計(jì)算機(jī)視覺(jué)方面的處理,因此在函數(shù)庫(kù)中,最重要的結(jié)構(gòu)體是IplImage 結(jié)構(gòu)。IplImage 結(jié)構(gòu)來(lái)源于Intel 的另外一個(gè)函數(shù)庫(kù)Intel Image Processing Library (IPL),該函數(shù)庫(kù)主要是針對(duì)圖像處理。IplImage 包括了圖像的長(zhǎng)寬高等信息[4]。
(2)CvvImage 類
平常使用OpenCV 時(shí)總是跳出一個(gè)個(gè)窗口,很難將項(xiàng)目進(jìn)行系統(tǒng)集成,特別是在MFC 等Windows 環(huán)境中加載顯示OpenCV 中的IplImage 圖像;使用OpenCV highgui.h 中定義的CvvImage 類,可以很好的實(shí)現(xiàn)OpenCV 和Windows MFC顯示接口。CvvImage 類主要用于圖像的顯示、保存、讀取[4]。
(3)CImgView 類
本圖像處理軟件CImgView類包括以下幾個(gè)函數(shù):void CImg View::OnRgb2gray() 圖像灰度化函數(shù)、void CImg View::OnSmooth() 平滑濾波函數(shù)、void CImg View::OnLaplace() 閾值化函數(shù)、void OnThreshold Change() 邊緣檢測(cè)函數(shù)、void CImg View::On Canny() 邊緣銳化函數(shù)、void CImg View::OnHoughlen()hough 變換函數(shù),這個(gè)類主要是用來(lái)實(shí)現(xiàn)圖像處理算法。
軟件系統(tǒng)操作界面模塊在VS2008 環(huán)境中應(yīng)用OpenCV 開(kāi)發(fā),本文數(shù)字圖像處理軟件來(lái)說(shuō),應(yīng)用單文檔的應(yīng)用程序。用戶界面通過(guò)圖像處理類庫(kù)的公共外部接口請(qǐng)求各種圖像處理服務(wù),完成必要的處理任務(wù)[6]。
基于圖像的零件尺寸測(cè)量系統(tǒng)軟件能夠?qū)崿F(xiàn)圖像灰度化,圖像濾波,邊緣銳化,閾值分割,邊緣檢測(cè),零件尺寸測(cè)量的功能,將所有功能做成菜單項(xiàng)放置在菜單欄上,每個(gè)菜單項(xiàng)又有各個(gè)的子菜單,軟件界面圖2 所示。
圖2 軟件操作界面
本次零件尺寸測(cè)量選自行車鏈條的傳動(dòng)鏈板做實(shí)驗(yàn),圖3 中(1)到(6),是對(duì)鏈板兩個(gè)孔中心之間的距離進(jìn)行測(cè)量實(shí)驗(yàn)步驟,圖4 和圖5 是測(cè)量結(jié)果。
圖3 傳動(dòng)鏈板兩孔中心距測(cè)量
圖4 Hough 變換結(jié)果
Hough 變換測(cè)量得到的兩個(gè)孔徑的圓心坐標(biāo)分別是(60,62),(170,64)。兩孔中心距離如圖5 所示約為110。
圖5 距離測(cè)量結(jié)果
本文以傳動(dòng)鏈板為研究對(duì)象,使用面向?qū)ο蠹夹g(shù)實(shí)現(xiàn)數(shù)字圖像處理算法的軟件設(shè)計(jì)方法,將各種數(shù)字圖像處理方法封裝在一個(gè)特殊圖像類的層次結(jié)構(gòu)中。增強(qiáng)軟件系統(tǒng)的擴(kuò)充性,且易于維護(hù),能夠適應(yīng)數(shù)字圖像處理技術(shù)的發(fā)展。實(shí)驗(yàn)結(jié)果表明,經(jīng)過(guò)軟件處理圖像最后得到鏈板兩圓孔中心位置,利用公式可以求出兩孔的距離,達(dá)到零件測(cè)量的要求。此外,該零件尺寸測(cè)量系統(tǒng)不限于傳動(dòng)鏈板零件尺寸測(cè)量,還可以用于有需要測(cè)量?jī)煽卓仔木嚯x的零件,本文開(kāi)發(fā)的軟件系統(tǒng)對(duì)工業(yè)生產(chǎn)有一定的實(shí)用價(jià)值。