蔣慶磊 聶永濤 吳慧君
(濰坊工程職業學院 山東 青州 262500)
基于C++的圖像檢測系統的設計
蔣慶磊 聶永濤 吳慧君
(濰坊工程職業學院 山東 青州 262500)
本文是基于C++編寫圖像處理程序,完成圖像檢測系統的設計,系統功能包括:打開*.bmp文件,圖像的灰度處理、二直化、閾值變換、平滑濾波、邊緣檢測,智能識別等。系統開發和程序運行平臺為Win7,采用C++Builder軟件。檢測系統通過調試運行,初步實現了設計目標。
C++;圖像處理;檢測系統;C++Builder
無論是在機電產品研發中,還是從事圖像檢測處理工作,都需要有良好的圖像處理的能力。數字圖像處理是運用相關數字技術,對圖像采取特定算法進行處理,實現預期目標。伴隨數字計算機技術的快速發展,數字圖像處理技術已經發展成為一門學科,具有廣泛的應用。借助C++編程,設計圖像檢測系統,實現圖像的智能識別判斷,提高圖像檢測的效率。
1.1 C++語言。C++是兼容了C,保持了C的優點,是面向對象的編程設計的語言。在C++的集成環境下,可以直接調試和運行大多數的C程序代碼。這樣既繼承和開發了當前已在廣泛的軟件,又節省了人物力。C++編程突出了各個模塊程序的獨立性,增強了程序的可移植性,優化了程序代碼的結構,強化了程序的擴充性。C++的優點是語句簡練,語法靈活寬松,方便了用戶書寫編程。但存在由于編譯時采用寬松的語法,不容易發現許多邏輯上的錯誤,加大了用戶編程的難度。
1.2 C++集成環境。C++程序和C程序的編譯和調試都可以在C++集成環境下進行。一般在C++集成環境下規定:C程序定義為擴展名為c.的源程序;同時,C++程序定義為擴展名為cpp.的源程序。
1.3 C++Builder軟件應用。C++Builder軟件的優點是菜單簡單、功能齊全、效率較高,融合了C++編程。C++Builder包含Delphi可視化控件,編譯快捷,兼容了組件技術,是一種可視化的程序設計工具,能夠忽略沒有變化的代碼和函數,快速進行編譯、連接。該軟件新增加了SOAP/WebService、WebSnap技術。借助上述技術,可以在32位系統上編寫高效的Windows和Internet應用程序。該軟件的開發工具包含可視化的窗口設計端、控件面板、工程項目管理器、調試控制器等,方便程序員進行創建、設計程序。BCB軟件采用多樣的輸入/輸出驅動裝置,可以和很多輸入/輸出設備,如PLC、特種模塊、輸入/輸出板卡、特種儀表等,構成現場使用的系統。借助如支持服務器遠距離交互、轉換變化數據方法等通信方法,實現與外設進行數據交互。因此,在圖像處理過程中采用BCB編程是很必要的。
2.1 灰度的處理。工業現場中獲取的零件圖像大部分是32位真彩色圖像,具有較高的分辨率,占用很大內存,信息量大,不便于快速進行模式識別,因此,把現場獲取的真彩圖像變換成256色.bmp圖像,再變換成8位灰度圖像。
2.2 變換閾值。現場獲取的零件彩色圖像,變換成灰度圖像,分256個等級。變換閾值就是把灰度圖像變換成黑/白兩色的二值圖像。借助灰度的直方圖獲取谷底的閾值范圍,并提取閾值。再對灰度圖像采取變換閾值,實現零件圖像的二值化。
2.3 均衡灰度。均衡灰度是把灰度圖像在每一個級別上均采用同像素進行顯示,來優化圖像的對比度,均勻化灰度的分布。其處理原理是借助壓縮初始圖像中的像素較少的區域,延伸像素較多的區域。
2.4 平滑圖像。平滑圖像是比較實用的處理方式,實現去除圖像的噪聲,主要包含椒鹽、隨機等類型噪聲。平滑圖像的空間方法分為線性、非線性和自適應等類型的處理,頻率處理方法是采用低通濾波除噪。
2.5 圖像濾波。圖像濾波的一種算法是選取包含奇數點的窗口,把初始化的圖像像素與其中心進行整合,提取特定窗口對應的灰度數值,并按照升序排列灰度,選取中間值來替換窗口中心像素點的值。該算法解決了濾波后細節模糊的缺點。
2.6 圖像銳化。圖像銳化是一種圖像強化的方法。在平滑圖像后存在圖像邊界及輪廓模糊的缺點,因此盡量克服上述問題,可以采用圖像銳化方法,使圖像的邊界更加清晰。算法是借助微積分,可以采用梯度運算,獲取更加清晰的圖像輪廓,不改變圖像的原始灰度。
2.7 分割閾值。分割圖像的閾值有很多方法,比如把每一個像素等分到各自區域,稱為區域劃分;針對區域的邊界,進行獲取識別,稱為邊界算法。對圖像進行分割閾值提取輪廓的過程是:根據灰度直方圖進行確定檢測零件圖像的閾值,再對檢測圖像實現二值化,進行圖像銳化,采用特定算法獲取檢測圖像的邊緣輪廓。
3.1 軟件的功能面板。基于圖像處理技術的零件加工質量檢測系統的軟件界面如圖1所示。登錄功能界面,借助文件菜單中的“打開位圖”項目打開在本地電腦上存放的零件原始彩色圖像,可以進行原始圖像和圖像處理后的效果顯示。對零件圖像進行灰度處理、圖像濾波的功能界面如圖2所示,可以選取不同的濾波方式。對零件圖像進行平滑處理,功能界面如圖3所示。圖像的二值化、灰度直方圖等功能界面,如圖4所示。提取圖像邊緣輪廓,其功能界面如圖5所示。

圖1 登陸界面

圖2 灰度處理

圖3 圖像平滑

圖4 (a)二值化

圖4 (b)直方圖

圖5 閾值分割
3.2 圖像處理實例。本檢測系統可以檢測直徑為6 mm的針閥體零件內孔加工質量,其中抽取了6個需要檢測的內孔圖像,如圖6所示。上述6個零件圖像,按照一定算法處理后的結果,如圖7所示。
3.3 檢測系統運行結果。統計完特征參數后,再進行圖像的分割,根據特定參數,判別零件加工質量是否合格,運行結果如圖8所示。

圖6 原始圖像

圖7 處理后圖像

圖8 運行結果
本檢測系統的調試結果表明,該檢測結果穩定、準確,適用于零件加工質量的現場質檢,同時該檢測系統易于操作、效果明顯,實現了基于BCB編程的檢測系統開發,具有廣闊的市場前景。
本論文是濰坊市科技發展項目課題的階段性研究成果,項目編號:2016GX083
[1]歐振國.基于C++Builder環境下電力倉庫管理系統的指紋識別與條形碼技術[J].農村電氣化,2017(2):32~34.
[2]齊林宇,唐晶,魏文澤,等.基于C++Builder的換熱器性能試驗平臺測控軟件的開發[J].計算機測量與控制,2016,24(6):139~142.