蘇春妮
(玉林師范學院計算機科學與工程學院,廣西玉林,537000)
隨著工業技術的高速發展,機械零件尺寸測量已成為工業生產中的一個重要環節,而且對尺寸測量技術水平的要求也越來越高[1]。許多機械零件需要檢測孔心距離和外徑、輪廓的不規則度,用來檢測機械零件是否滿足生產精度的要求,如機械零件傳動鏈板要求鏈板兩孔中心距離嚴格控制在公差范圍內,這樣才能確保裝配好的鏈條節距一致,所以鏈板兩孔中心距離的測量非常重要[2]。而基于圖像處理的機械零件尺寸測量方法,具有非接觸、速度快、精度高的特點,滿足工業生產對零件測量速度和精度的要求。
基于圖像的機械零件尺寸測量軟件系統中數字圖像處理的算法復雜,使用面向對象設計方法來可以解決復雜的處理模塊的問題。類具有封裝、繼承和多態等特性,將機械零件尺寸測量軟件系統建立在類層次結構基礎上,這樣修改和增加新算法就更加容易,從而保證軟件系統具有良好的擴充性[3]。本文將中成熟的算法加入到算法類庫中,能夠短時間內將有關的圖像處理算法組合成可靠的零件尺寸測量系統,快速精確地測量出零件的尺寸。
成像系統獲取的圖像往往帶有各種各樣的噪聲,會影響圖像的質量。所以在對圖像進行特征提取與分析之前,必須改善圖像的質量,行之有效的方法是對原始圖像進行圖像預處理。
(1)灰度化
在機械零件尺寸測量中,彩色圖像的RGB 三個分量不需要進行分析。為了減小圖像原始數據量,將彩色圖像轉化成灰度圖像,有利于減少后續處理的計算量,加快檢測速度。調用OpenCVC[4]函數cvCvtColor(),實現RGB 圖像向灰度圖像轉變。
(2)平滑濾波
機械零件圖像在采集過程中往往存在一定程度的噪聲干擾,會影響圖像質量,給圖像分析等后續工作帶來了困難,因此去除噪聲是圖像處理的一項重要內容。為了達到既能消除噪聲又能保護圖像細節的目的,在此使用非線性濾波器中的中值濾波器,其基本原理是把圖像中一點的值用該點的一個鄰域中各點值的中值代替,消除孤立的噪聲點。調用OpenCV函數cvSmooth(),中值濾波模板大小為默認的3×3。
邊緣是指圖像局部灰度變化最顯著的部分。邊緣主要存在于目標與目標、區域與區域之間,是圖像分割、紋理特征提取和形狀特征提取等圖像分析的重要基礎。為了能更好地提取出機械零件圖像的邊緣,首先對圖像的灰度圖進行二值化處理,然后利用邊緣檢測算子-canny 算子檢測出二值圖像的邊緣。
(1)閾值分割
閾值分割法計算簡單,而且總能用封閉且連通的邊界定義不交疊的區域,對目標與背景有較強對比的圖像顯示出較好的分割效果。這種方法的一個關鍵技術是最優閾值的確定,如果閾值選取過高,則過多的目標區域將被劃分為背景區;反之,如果閾值選取過低,則過多的背景區域被劃分為目標區域。在本文我們采用圖像的二值化處理,選擇一個閾值T,調用OpenCVC 函數cvThreshold(),將圖像轉換為黑白二值圖像。
(2)邊緣檢測
邊緣檢測有很多算法,常用的檢測算子有Roberts算子、Sobel 算子、Prewitt 算子、Laplacian 算子、Canny 算子。Canny 算子具有良好的邊緣檢測性能,調用OpenCVC 函數cvCanny(),使用canny 算子,檢測出機械零件的邊緣。
Hough 變換[5]的基本原理在于,利用點與線的對偶性,將圖像空間的線條變為參數空間的聚集點,從而檢測給定圖像是否存在給定性質的曲線。圓的方程為:(x-a)^2+(yb)^2=r^2,其中圓心為(a,b),半徑為r,通過Hough變換,將圖像空間對應到參數空間。調用OpenCVC 函數cvHoughCircles()根據Hough 變換檢測出圓。
基于上述算法介紹,機械零件圖像處理算法流程是圖像預處理(灰度化、平滑濾波)、邊緣提取(閾值分割、邊緣檢測)、Hough 變換檢測圓[2]。
軟件系統在VS2008 環境中應用OpenCV 來開發,實現基本的數字圖像處理算法。軟件程序流程圖如圖1 所示。

圖1 軟件程序流程圖
(1)IplImage 圖像數據結構體
由于OpenCV 主要針對的是計算機視覺方面的處理,因此在函數庫中,最重要的結構體是IplImage 結構。IplImage 結構來源于Intel 的另外一個函數庫Intel Image Processing Library (IPL),該函數庫主要是針對圖像處理。IplImage 包括了圖像的長寬高等信息[4]。
(2)CvvImage 類
平常使用OpenCV 時總是跳出一個個窗口,很難將項目進行系統集成,特別是在MFC 等Windows 環境中加載顯示OpenCV 中的IplImage 圖像;使用OpenCV highgui.h 中定義的CvvImage 類,可以很好的實現OpenCV 和Windows MFC顯示接口。CvvImage 類主要用于圖像的顯示、保存、讀取[4]。
(3)CImgView 類
本圖像處理軟件CImgView類包括以下幾個函數:void CImg View::OnRgb2gray() 圖像灰度化函數、void CImg View::OnSmooth() 平滑濾波函數、void CImg View::OnLaplace() 閾值化函數、void OnThreshold Change() 邊緣檢測函數、void CImg View::On Canny() 邊緣銳化函數、void CImg View::OnHoughlen()hough 變換函數,這個類主要是用來實現圖像處理算法。
軟件系統操作界面模塊在VS2008 環境中應用OpenCV 開發,本文數字圖像處理軟件來說,應用單文檔的應用程序。用戶界面通過圖像處理類庫的公共外部接口請求各種圖像處理服務,完成必要的處理任務[6]。
基于圖像的零件尺寸測量系統軟件能夠實現圖像灰度化,圖像濾波,邊緣銳化,閾值分割,邊緣檢測,零件尺寸測量的功能,將所有功能做成菜單項放置在菜單欄上,每個菜單項又有各個的子菜單,軟件界面圖2 所示。

圖2 軟件操作界面
本次零件尺寸測量選自行車鏈條的傳動鏈板做實驗,圖3 中(1)到(6),是對鏈板兩個孔中心之間的距離進行測量實驗步驟,圖4 和圖5 是測量結果。

圖3 傳動鏈板兩孔中心距測量

圖4 Hough 變換結果
Hough 變換測量得到的兩個孔徑的圓心坐標分別是(60,62),(170,64)。兩孔中心距離如圖5 所示約為110。

圖5 距離測量結果
本文以傳動鏈板為研究對象,使用面向對象技術實現數字圖像處理算法的軟件設計方法,將各種數字圖像處理方法封裝在一個特殊圖像類的層次結構中。增強軟件系統的擴充性,且易于維護,能夠適應數字圖像處理技術的發展。實驗結果表明,經過軟件處理圖像最后得到鏈板兩圓孔中心位置,利用公式可以求出兩孔的距離,達到零件測量的要求。此外,該零件尺寸測量系統不限于傳動鏈板零件尺寸測量,還可以用于有需要測量兩孔孔心距離的零件,本文開發的軟件系統對工業生產有一定的實用價值。