鄒宏偉
摘? ?要:近年來(lái),機(jī)器視覺圖像處理技術(shù)得到了大力發(fā)展,如何提高數(shù)字圖像處理的效率和性能是人們廣泛關(guān)注的熱點(diǎn)話題。文章將利用OpenCV編譯技術(shù)來(lái)加強(qiáng)數(shù)字圖像處理效果,先建立OpenCV環(huán)境,進(jìn)而完成OpenCV視頻圖像采集應(yīng)用,利用已截取的圖像來(lái)完成邊緣檢測(cè)和角點(diǎn)提取與檢測(cè)。
關(guān)鍵詞:機(jī)器視覺;數(shù)字圖像處理技術(shù);OpenCV
數(shù)字圖像處理技術(shù)是計(jì)算機(jī)視覺、機(jī)器視覺等現(xiàn)代技術(shù)實(shí)現(xiàn)的技術(shù)前提。為了滿足更多用戶在圖像處理方面的高質(zhì)量需求,現(xiàn)代圖像處理往往需要加強(qiáng)像素級(jí)別的合理操作,從而有利于開展各種基于圖像采集的數(shù)字化分析與理解。OpenCV作為數(shù)字圖像處理技術(shù)中的開源算法數(shù)據(jù)庫(kù),基于計(jì)算機(jī)VC++語(yǔ)言所構(gòu)建的編譯環(huán)境運(yùn)行,是不少數(shù)字圖像處理以及計(jì)算機(jī)視覺用戶的得力輔助工具。現(xiàn)階段,以O(shè)penCV圖像處理算法完成的圖像處理與仿真分析,已經(jīng)在實(shí)際工程中廣泛應(yīng)用。
1? ? 基于OpenCV數(shù)據(jù)庫(kù)的程序環(huán)境構(gòu)建
1.1? 安裝OpenCV
OpenCV圖像處理算法數(shù)據(jù)庫(kù)的安裝過(guò)程要關(guān)注對(duì)環(huán)境變量的設(shè)置,選中“Add\OpenCV\bin to the system PATH”選項(xiàng)后,可完成對(duì)環(huán)境變量PATH的載入。假定已安裝好的OpenCV 路徑為C:\Program Files\OpenCV。進(jìn)入VC++環(huán)境,依次在菜單中點(diǎn)選Tools—Options—Directories,確認(rèn)lib路徑為L(zhǎng)ibrary files,要包含所有OpenCV庫(kù)文件路徑。
1.2? 程序框架的規(guī)范構(gòu)建
按以下步驟完成對(duì)OpenCV應(yīng)用程序的創(chuàng)建:(1)新建工程,依次點(diǎn)選文件—新建—工程,下一步可選win32 Application或win32 console appiication。(2)新建獨(dú)立工作空間workspace,或直接加載新項(xiàng)目到當(dāng)前已建Workspace。(3)依次點(diǎn)選next—An empty project/ok。(4)新建工程文件,依次點(diǎn)選文件—new—files,并選C++ Source file/ok。(5)配置工程,依次點(diǎn)選工程—設(shè)置—所有配置,點(diǎn)“連接”后,點(diǎn)擊“對(duì)象、模塊庫(kù)”添加“cxcore.1ib cv. 1ib m1. 1ib cvaux. lib highgui. 1ib cvcam. 1ib”模塊庫(kù)。按上述5步操作就可完成OpenCV算法數(shù)據(jù)庫(kù)的編程環(huán)境創(chuàng)建。
2? ? 利用OpenCV完成圖像采集
本文利用OpenCV算法數(shù)據(jù)庫(kù)對(duì)視頻頭拍攝的圖像進(jìn)行采集,可使用相關(guān)抓取程序來(lái)予以實(shí)現(xiàn)。將程序語(yǔ)句輸入到新建C++Source file 中,重新連接攝像頭,就能直接得到視頻圖像[1]。本次實(shí)驗(yàn)所采集到的視頻數(shù)字圖像如圖1所示。
3? ? 基于OpenCV的圖像技術(shù)處理
文章所探討的OpenCV圖像技術(shù)處理主要是利用計(jì)算機(jī)軟件完成截圖的圖像變換、幾何變換、濾波、邊緣檢測(cè)、直方圖以及數(shù)學(xué)形態(tài)學(xué)處理等內(nèi)容,通過(guò)各種技術(shù)能夠直接對(duì)圖像進(jìn)行分析與理解,采集后完成底層處理,并形成較高質(zhì)量的圖像以便后期的機(jī)器視覺應(yīng)用。
3.1? 從已獲圖像中截圖
人們往往會(huì)對(duì)靜態(tài)圖像中的一部分內(nèi)容感興趣,可以利用軟件對(duì)感興趣的區(qū)域進(jìn)行必要的截圖。將部分要截取的圖像稱為感興趣區(qū)域(Region of Interest,ROI),截圖過(guò)程主要用到的變量或函數(shù)如下:
CvRect ROI_rect_src;//截取圖像ROI位置與大小
CvRect ROI_rect_dst;//目標(biāo)圖像ROI
cvSetImageROI(src_img,ROI_rect_src);//明確矩形框架后,設(shè)定待截圖像目標(biāo)區(qū)域函數(shù)
cvShowImage(”src_img”,src_img);//加載完成指定圖像ROI函數(shù)
3.2? 圖像處理中的邊緣檢測(cè)技術(shù)
通常,各種圖像包含的各類目標(biāo)的邊緣灰度值常涵蓋有關(guān)該圖像的海量原始信息。邊緣檢測(cè)常常使用各種已經(jīng)成熟的算子來(lái)完成,常見的有高斯差分邊緣檢測(cè)算子DoG,Sobel邊緣檢測(cè)算子、Canny邊緣檢測(cè)算子、二階微分Laplacian邊緣檢測(cè)算子和高斯-拉普拉斯算子LOG等,基本原理都是通過(guò)對(duì)灰度突變類型的二階導(dǎo)數(shù)進(jìn)行分割來(lái)展開實(shí)例計(jì)算,各種算子的應(yīng)用有所側(cè)重[1]。
3.2.1? Sobel邊緣檢測(cè)算子
Sobel邊緣檢測(cè)算子是典型的基于一階導(dǎo)數(shù)的邊緣檢測(cè)算子,主要思想是考察目標(biāo)圖像上出現(xiàn)的不同的像素,特別是對(duì)不同像素的四周各鄰點(diǎn)灰度加權(quán)差進(jìn)行計(jì)算,求得鄰點(diǎn)與就近像素點(diǎn)的鄰近權(quán)值。如圖2所示,若存在某一像素點(diǎn)[i , j],按Sobel算法思想,其偏導(dǎo)數(shù)可用下列公式計(jì)算:
Sobel算子可表示為:
其中,Δfx和Δfy能夠通過(guò)建立兩個(gè)3×3卷積模板來(lái)表示。對(duì)于數(shù)字圖像而言,其中出現(xiàn)的任何一點(diǎn)像素點(diǎn)就能用此兩個(gè)模板以卷積形式實(shí)現(xiàn),因此,圖像邊緣檢測(cè)也基于兩個(gè)模板在圖像中所作規(guī)律性運(yùn)動(dòng)而實(shí)現(xiàn)。
3.2.2? Canny邊緣檢測(cè)算子
Canny邊緣檢測(cè)算法同樣是基于卷積運(yùn)算的算法應(yīng)用,主要是結(jié)合目標(biāo)圖像同時(shí)考慮平滑濾波脈沖響應(yīng)完成一階微分運(yùn)算。計(jì)算結(jié)果能夠表現(xiàn)經(jīng)平滑處理后的圖像,表達(dá)式為:
圖像梯度的計(jì)算可按以下式子展開:
則有卷積運(yùn)算為:
式子中的Δh(x,y)算子,一般稱之為一階微分高斯算子,主要是因算法中多次利用高斯函數(shù)來(lái)充當(dāng)平滑濾波工具。Canny邊緣檢測(cè)技術(shù)中,對(duì)于梯度幅值的限制主要采用非極大點(diǎn)抑制的方法,能夠較為理想地解決因平滑變模糊后的圖像所出現(xiàn)的邊緣增寬的問題。
經(jīng)過(guò)以上算法的運(yùn)算,可以得到圖像處理中邊緣檢測(cè)的相關(guān)結(jié)果。如圖3所示。其中,圖3(a)表示圖1(c)經(jīng)過(guò)Sobel邊緣檢測(cè)算子處理后的效果,圖3(b)表示圖1(c)經(jīng)過(guò)Canny邊緣檢測(cè)算子處理后的效果,圖3(c)表示圖1(b)經(jīng)過(guò)Sobel邊緣檢測(cè)算子處理后的效果。
3.3? 圖像處理中的角點(diǎn)提取技術(shù)
對(duì)于目標(biāo)圖像而言,其中的角點(diǎn)能夠成為描述事物運(yùn)動(dòng)狀態(tài)的重要憑證,還能夠積極輔助完成圖像中視覺特征點(diǎn)的提取與描述。通常,數(shù)字圖像的角點(diǎn)由圖像不同目標(biāo)、不同空間等邊緣交點(diǎn)或邊緣曲率較大的點(diǎn)組成,所以整體上具有相當(dāng)高的曲率。通過(guò)分析角點(diǎn)信息,能夠從中挖掘到圖像目標(biāo)的具體幾何形狀。
當(dāng)前,圖像角點(diǎn)提取的方法較多,常用的兩種思路為:(1)先描述圖像邊界,完成提取,再計(jì)算角點(diǎn)。(2)直接測(cè)出灰度圖像的角點(diǎn)。此外,還可以通過(guò)建立最小化代價(jià)函數(shù)等數(shù)學(xué)方法完成角點(diǎn)的探尋和計(jì)算。圖像角點(diǎn)探測(cè)尋求方法也有很多類型,常見的諸如K-R法、Z-H法和Harris法等[2]。本文主要探討了Harris角點(diǎn)尋求方法,該方法主要思路是應(yīng)用圖像灰度信息挖掘來(lái)完成角點(diǎn)檢測(cè)。通常,在分析圖像角點(diǎn)時(shí)都需要緊密聯(lián)系圖像灰度的變化特征?;诮屈c(diǎn)與自相關(guān)數(shù)的曲率特性的相關(guān)性,可直接列出自相關(guān)函數(shù),并在探測(cè)像素點(diǎn)進(jìn)行一階泰勒多項(xiàng)式展開,進(jìn)而可得到基于Harris法的角點(diǎn)探測(cè)函數(shù)工具。
對(duì)于選定的像素點(diǎn)而言,其中的角點(diǎn)探測(cè)函數(shù)工具計(jì)算值若超出限定值,就稱該像素點(diǎn)為角點(diǎn)。利用Harris法完成角點(diǎn)探測(cè)后,通過(guò)軟件的仿真對(duì)角點(diǎn)所在區(qū)域進(jìn)行灰度內(nèi)插值擬合,就能夠完成角點(diǎn)的提取工作。
4? ? 結(jié)語(yǔ)
計(jì)算機(jī)數(shù)字圖像處理技術(shù)是眾多行業(yè)領(lǐng)域不可缺少的功能性應(yīng)用,能夠成為圍繞圖像開展合理分析、數(shù)字化理解和規(guī)范特征識(shí)別的重要技術(shù)支撐。為了提高圖像處理的效率,應(yīng)該認(rèn)真研究各種算法的實(shí)用性。采用OpenCV圖像處理算法數(shù)據(jù)庫(kù)對(duì)相關(guān)算法進(jìn)行表達(dá)和實(shí)現(xiàn),是有效增強(qiáng)圖像處理與計(jì)算機(jī)視覺的可行手段,值得擴(kuò)大研究與應(yīng)用。
[參考文獻(xiàn)]
[1]江偉.機(jī)器視覺圖像中目標(biāo)識(shí)別及處理方法研究[D].北京:華北電力大學(xué),2015.
[2]王福斌,李迎燕,劉杰,等.基于OpenCV的機(jī)器視覺圖像處理技術(shù)實(shí)現(xiàn)[J].機(jī)械與電子,2010(6):54-57.