鄒宏偉



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