摘要:機(jī)器視覺圖像處理技術(shù)是信息時代新興的科技,已被廣泛應(yīng)用于醫(yī)療、航天、工業(yè)等行業(yè)領(lǐng)域。而在各領(lǐng)域應(yīng)用中,圖像處理的工作量是巨大的,將OpenCV作為圖像處理的函數(shù)庫,不僅會節(jié)省人力、縮短開發(fā)周期,還會提高工作效率。文章闡述了OpenCV在VC++環(huán)境下的構(gòu)建和視頻圖像采集,進(jìn)而實(shí)現(xiàn)圖像處理技術(shù)中的邊緣檢測和角點(diǎn)提取等。
關(guān)鍵詞:Open CV;機(jī)器視覺;圖像處理
圖像處理(Image processing)是利用計算機(jī)技術(shù)對圖像進(jìn)行分析,進(jìn)而對圖像進(jìn)行壓縮、復(fù)原和匹配等操作,進(jìn)而達(dá)到對圖像精確、高效處理的技術(shù)。OpenCV(Open Source Computer Vision Library)是開放源代碼圖像處理算法庫在Linux、VC++等環(huán)境中的運(yùn)行,為圖像處理技術(shù)提供便捷[1]?;贠penCV的機(jī)器視覺圖像處理技術(shù),可以縮短開發(fā)周期,還可以對圖像處理算法技術(shù)進(jìn)行仿真。
一、OpenCV環(huán)境建立
VC++編譯環(huán)境下OpenCV的構(gòu)建,主要是安裝、變量配置與框架建立。
假如OpenCV的安裝路徑是D:\Program Files\OpenCV,安裝時或者安裝結(jié)束后,要將“\OpenCV]bin”添加到系統(tǒng)變量中,即環(huán)境變量。
將 Open CV圖像處理中需要的庫文件加入到VC++中,需要啟動VC++,在工具菜單的directories,選擇Library files對lib路徑進(jìn)行設(shè)置。
OpenCV程序框架建立過程是,首先,新建工程(win32 Application);其次,在新工程的保存路徑下創(chuàng)建單獨(dú)的workspace;再次,將新的work保存到VC++的Source file路徑中;最后添加工程配置,將需要的lib添加到模塊庫中。OpenCV的環(huán)境構(gòu)建結(jié)束
二、OpenCV視頻圖像采集
將OpenCV的視頻圖像采集程序輸入到Source file中,再接入攝像頭就可以捕獲圖像。OpenCV對圖像進(jìn)行采集的主要程序語句如下:
主函數(shù):void Winmain (int argc,char*argv[])
OpenCV捕獲的圖像對象:CVCapture*camera= 0
程序結(jié)束將捕獲對象釋放:cvreleaseCapture(camer)
將采集到的圖像轉(zhuǎn)化并顯示出來:this->setImage(cvimage)
三、OpenCV圖像處理技術(shù)
1.截取感性趣的圖像
如果知識對圖像中的某一幀有興趣,便可以利用OpenCV圖像處理技術(shù)對感興趣的部分截取,主要程序如下:
CvRect Video_rect sr;
CvRect Video_rect ds;
cvshowImage(“src_ima”,src_ima);
2.對圖像實(shí)施邊緣檢測
圖像邊緣是指圖像灰度變化最明顯的部分,其中有很多原始的圖像信息。通過對圖像分割、圖像特征識別與提取等信息對圖像進(jìn)行分析,進(jìn)而實(shí)現(xiàn)圖像邊緣檢測。目前,常用的是邊緣檢測算子,如Sobel、Canny、Roberts等檢測方法,下面對Sobel和Roberts檢測法進(jìn)行闡述[2]。
(1)Sobel算子是對圖像上的每一個像素的周圍點(diǎn)的灰度值計算加權(quán)差,即用點(diǎn)計算區(qū)域的像素。 主要計算公式如下:
Sobel算子的模板是3×3的,如圖1所示。
圖1 Sobel算子模板
則和的Sobel算子如下,
(2)Roberts是對垂直方向的加權(quán)差分計算梯度,比如對角線方向的兩點(diǎn)像素:
和二者的卷積為
以上兩種方法是,通過二者卷積的最值,作為邊緣檢測的輸出值。
3.對圖像實(shí)施角點(diǎn)提取
視覺特點(diǎn)的提取、形狀描述等是通過圖像實(shí)施角點(diǎn)的提取來實(shí)現(xiàn)的。圖像角點(diǎn)中含有大量的圖像信息,對于機(jī)器視覺的圖像處理具有很重要的作用。對原始圖像的角點(diǎn)提取的主要程序如下:
#define max_corners 10;
int main (int argc,chaer*argv);
int coenerC=max_ corners;
cvpoint2D32 corners[max_ corners];
cvScalar color=CV_RGB (255,0,0);
cvGoodFeaturesToTrack(grayImage,corners1,corners2,corners,cornerCount, 0.05,5, 0);
總結(jié):OpenCV具有很好的可移植性,同時有著強(qiáng)大的圖像處理能力和矩陣運(yùn)算能力?;贠penCV的機(jī)器視覺圖像處理技術(shù)的應(yīng)用,不僅會減少圖像處理開發(fā)程序人員的工作量,還保障了圖像處理的準(zhǔn)確、高效,也達(dá)到了提升工作效率的目的。運(yùn)用VC++編譯環(huán)境下OpenCV的運(yùn)行,推動了圖像處理技術(shù)的更快發(fā)展。
參考文獻(xiàn):
[1]柏濤濤.基于機(jī)器視覺與圖像處理的IC淺插檢測研究與應(yīng)用[J].河北北方學(xué)院學(xué)報(自然科學(xué)版),2015(4):36-40.
[2]劉慶宏,王聲文,白彥慶.基于OpenCV的機(jī)器視覺功能開發(fā)及在工業(yè)生產(chǎn)中的應(yīng)用[J].制造技術(shù)與機(jī)床,2015(3):40-43.
作者簡介:郝旋(1992—),男,漢族,籍貫:安徽懷寧,單位:廣東工業(yè)大學(xué)2016級學(xué)生,研究方向:圖像處理與機(jī)器視覺。
(作者單位:廣東工業(yè)大學(xué))