蔣慶磊 聶永濤 吳慧君
(濰坊工程職業(yè)學(xué)院 山東 青州 262500)
基于C++的圖像檢測(cè)系統(tǒng)的設(shè)計(jì)
蔣慶磊 聶永濤 吳慧君
(濰坊工程職業(yè)學(xué)院 山東 青州 262500)
本文是基于C++編寫圖像處理程序,完成圖像檢測(cè)系統(tǒng)的設(shè)計(jì),系統(tǒng)功能包括:打開(kāi)*.bmp文件,圖像的灰度處理、二直化、閾值變換、平滑濾波、邊緣檢測(cè),智能識(shí)別等。系統(tǒng)開(kāi)發(fā)和程序運(yùn)行平臺(tái)為Win7,采用C++Builder軟件。檢測(cè)系統(tǒng)通過(guò)調(diào)試運(yùn)行,初步實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。
C++;圖像處理;檢測(cè)系統(tǒng);C++Builder
無(wú)論是在機(jī)電產(chǎn)品研發(fā)中,還是從事圖像檢測(cè)處理工作,都需要有良好的圖像處理的能力。數(shù)字圖像處理是運(yùn)用相關(guān)數(shù)字技術(shù),對(duì)圖像采取特定算法進(jìn)行處理,實(shí)現(xiàn)預(yù)期目標(biāo)。伴隨數(shù)字計(jì)算機(jī)技術(shù)的快速發(fā)展,數(shù)字圖像處理技術(shù)已經(jīng)發(fā)展成為一門學(xué)科,具有廣泛的應(yīng)用。借助C++編程,設(shè)計(jì)圖像檢測(cè)系統(tǒng),實(shí)現(xiàn)圖像的智能識(shí)別判斷,提高圖像檢測(cè)的效率。
1.1 C++語(yǔ)言。C++是兼容了C,保持了C的優(yōu)點(diǎn),是面向?qū)ο蟮木幊淘O(shè)計(jì)的語(yǔ)言。在C++的集成環(huán)境下,可以直接調(diào)試和運(yùn)行大多數(shù)的C程序代碼。這樣既繼承和開(kāi)發(fā)了當(dāng)前已在廣泛的軟件,又節(jié)省了人物力。C++編程突出了各個(gè)模塊程序的獨(dú)立性,增強(qiáng)了程序的可移植性,優(yōu)化了程序代碼的結(jié)構(gòu),強(qiáng)化了程序的擴(kuò)充性。C++的優(yōu)點(diǎn)是語(yǔ)句簡(jiǎn)練,語(yǔ)法靈活寬松,方便了用戶書(shū)寫編程。但存在由于編譯時(shí)采用寬松的語(yǔ)法,不容易發(fā)現(xiàn)許多邏輯上的錯(cuò)誤,加大了用戶編程的難度。
1.2 C++集成環(huán)境。C++程序和C程序的編譯和調(diào)試都可以在C++集成環(huán)境下進(jìn)行。一般在C++集成環(huán)境下規(guī)定:C程序定義為擴(kuò)展名為c.的源程序;同時(shí),C++程序定義為擴(kuò)展名為cpp.的源程序。
1.3 C++Builder軟件應(yīng)用。C++Builder軟件的優(yōu)點(diǎn)是菜單簡(jiǎn)單、功能齊全、效率較高,融合了C++編程。C++Builder包含Delphi可視化控件,編譯快捷,兼容了組件技術(shù),是一種可視化的程序設(shè)計(jì)工具,能夠忽略沒(méi)有變化的代碼和函數(shù),快速進(jìn)行編譯、連接。該軟件新增加了SOAP/WebService、WebSnap技術(shù)。借助上述技術(shù),可以在32位系統(tǒng)上編寫高效的Windows和Internet應(yīng)用程序。該軟件的開(kāi)發(fā)工具包含可視化的窗口設(shè)計(jì)端、控件面板、工程項(xiàng)目管理器、調(diào)試控制器等,方便程序員進(jìn)行創(chuàng)建、設(shè)計(jì)程序。BCB軟件采用多樣的輸入/輸出驅(qū)動(dòng)裝置,可以和很多輸入/輸出設(shè)備,如PLC、特種模塊、輸入/輸出板卡、特種儀表等,構(gòu)成現(xiàn)場(chǎng)使用的系統(tǒng)。借助如支持服務(wù)器遠(yuǎn)距離交互、轉(zhuǎn)換變化數(shù)據(jù)方法等通信方法,實(shí)現(xiàn)與外設(shè)進(jìn)行數(shù)據(jù)交互。因此,在圖像處理過(guò)程中采用BCB編程是很必要的。
2.1 灰度的處理。工業(yè)現(xiàn)場(chǎng)中獲取的零件圖像大部分是32位真彩色圖像,具有較高的分辨率,占用很大內(nèi)存,信息量大,不便于快速進(jìn)行模式識(shí)別,因此,把現(xiàn)場(chǎng)獲取的真彩圖像變換成256色.bmp圖像,再變換成8位灰度圖像。
2.2 變換閾值。現(xiàn)場(chǎng)獲取的零件彩色圖像,變換成灰度圖像,分256個(gè)等級(jí)。變換閾值就是把灰度圖像變換成黑/白兩色的二值圖像。借助灰度的直方圖獲取谷底的閾值范圍,并提取閾值。再對(duì)灰度圖像采取變換閾值,實(shí)現(xiàn)零件圖像的二值化。
2.3 均衡灰度。均衡灰度是把灰度圖像在每一個(gè)級(jí)別上均采用同像素進(jìn)行顯示,來(lái)優(yōu)化圖像的對(duì)比度,均勻化灰度的分布。其處理原理是借助壓縮初始圖像中的像素較少的區(qū)域,延伸像素較多的區(qū)域。
2.4 平滑圖像。平滑圖像是比較實(shí)用的處理方式,實(shí)現(xiàn)去除圖像的噪聲,主要包含椒鹽、隨機(jī)等類型噪聲。平滑圖像的空間方法分為線性、非線性和自適應(yīng)等類型的處理,頻率處理方法是采用低通濾波除噪。
2.5 圖像濾波。圖像濾波的一種算法是選取包含奇數(shù)點(diǎn)的窗口,把初始化的圖像像素與其中心進(jìn)行整合,提取特定窗口對(duì)應(yīng)的灰度數(shù)值,并按照升序排列灰度,選取中間值來(lái)替換窗口中心像素點(diǎn)的值。該算法解決了濾波后細(xì)節(jié)模糊的缺點(diǎn)。
2.6 圖像銳化。圖像銳化是一種圖像強(qiáng)化的方法。在平滑圖像后存在圖像邊界及輪廓模糊的缺點(diǎn),因此盡量克服上述問(wèn)題,可以采用圖像銳化方法,使圖像的邊界更加清晰。算法是借助微積分,可以采用梯度運(yùn)算,獲取更加清晰的圖像輪廓,不改變圖像的原始灰度。
2.7 分割閾值。分割圖像的閾值有很多方法,比如把每一個(gè)像素等分到各自區(qū)域,稱為區(qū)域劃分;針對(duì)區(qū)域的邊界,進(jìn)行獲取識(shí)別,稱為邊界算法。對(duì)圖像進(jìn)行分割閾值提取輪廓的過(guò)程是:根據(jù)灰度直方圖進(jìn)行確定檢測(cè)零件圖像的閾值,再對(duì)檢測(cè)圖像實(shí)現(xiàn)二值化,進(jìn)行圖像銳化,采用特定算法獲取檢測(cè)圖像的邊緣輪廓。
3.1 軟件的功能面板?;趫D像處理技術(shù)的零件加工質(zhì)量檢測(cè)系統(tǒng)的軟件界面如圖1所示。登錄功能界面,借助文件菜單中的“打開(kāi)位圖”項(xiàng)目打開(kāi)在本地電腦上存放的零件原始彩色圖像,可以進(jìn)行原始圖像和圖像處理后的效果顯示。對(duì)零件圖像進(jìn)行灰度處理、圖像濾波的功能界面如圖2所示,可以選取不同的濾波方式。對(duì)零件圖像進(jìn)行平滑處理,功能界面如圖3所示。圖像的二值化、灰度直方圖等功能界面,如圖4所示。提取圖像邊緣輪廓,其功能界面如圖5所示。
圖1 登陸界面
圖2 灰度處理
圖3 圖像平滑
圖4 (a)二值化
圖4 (b)直方圖
圖5 閾值分割
3.2 圖像處理實(shí)例。本檢測(cè)系統(tǒng)可以檢測(cè)直徑為6 mm的針閥體零件內(nèi)孔加工質(zhì)量,其中抽取了6個(gè)需要檢測(cè)的內(nèi)孔圖像,如圖6所示。上述6個(gè)零件圖像,按照一定算法處理后的結(jié)果,如圖7所示。
3.3 檢測(cè)系統(tǒng)運(yùn)行結(jié)果。統(tǒng)計(jì)完特征參數(shù)后,再進(jìn)行圖像的分割,根據(jù)特定參數(shù),判別零件加工質(zhì)量是否合格,運(yùn)行結(jié)果如圖8所示。
圖6 原始圖像
圖7 處理后圖像
圖8 運(yùn)行結(jié)果
本檢測(cè)系統(tǒng)的調(diào)試結(jié)果表明,該檢測(cè)結(jié)果穩(wěn)定、準(zhǔn)確,適用于零件加工質(zhì)量的現(xiàn)場(chǎng)質(zhì)檢,同時(shí)該檢測(cè)系統(tǒng)易于操作、效果明顯,實(shí)現(xiàn)了基于BCB編程的檢測(cè)系統(tǒng)開(kāi)發(fā),具有廣闊的市場(chǎng)前景。
本論文是濰坊市科技發(fā)展項(xiàng)目課題的階段性研究成果,項(xiàng)目編號(hào):2016GX083
[1]歐振國(guó).基于C++Builder環(huán)境下電力倉(cāng)庫(kù)管理系統(tǒng)的指紋識(shí)別與條形碼技術(shù)[J].農(nóng)村電氣化,2017(2):32~34.
[2]齊林宇,唐晶,魏文澤,等.基于C++Builder的換熱器性能試驗(yàn)平臺(tái)測(cè)控軟件的開(kāi)發(fā)[J].計(jì)算機(jī)測(cè)量與控制,2016,24(6):139~142.