劉金亮 卜凡亮
摘 要:視覺領(lǐng)域中全景圖像受到廣泛關(guān)注。魚眼圖像全景拼接步驟繁多,工作量大且耗時較長,影響實時性。針對該問題設(shè)計了一種MFC+OpenCV相結(jié)合的魚眼全景拼接系統(tǒng)。該系統(tǒng)用C++語言編譯,在VS2012的操作平臺上搭建MFC框架并安裝配置OpenCV開源視覺處理庫,進行輸入輸出、圖像顯示和圖像拼接處理等操作。魚眼全景拼接系統(tǒng)界面整潔,操作便捷,對全景視頻監(jiān)控開發(fā)具有重要現(xiàn)實意義。
關(guān)鍵詞:魚眼圖像;全景拼接;MFC;OpenCV
DOI:10.11907/rjdk.182466
中圖分類號:TP319文獻標(biāo)識碼:A文章編號:1672-7800(2019)001-0112-04
Abstract:In the field of vision, panoramic images have received widespread attention and recognition. The fisheye image panorama stitching has many steps, it is of heavy workload and time-consuming, which affects the real-time performance. A fisheye panoramic stitching system based on MFC+OpenCV is designed. The fisheye panoramic splicing system is compiled in C++ language. On the VS2012 operating platform, the MFC framework is built and the OpenCV open source visual processing library is installed and configured. The fisheye image and the fisheye camera are used for input and output, image display and image splicing processing.? The fisheye panoramic splicing system has a neat interface, convenient operation and simple start-up, which has very important practical significance for the development of panoramic video surveillance.
0 引言
計算機視覺作為一個重要研究領(lǐng)域引起許多學(xué)者關(guān)注[1]。圖像拼接作為該領(lǐng)域的一個分支,其應(yīng)用也越來越廣泛[2]。圖像拼接是指將兩幅相鄰的圖像數(shù)據(jù)集合起來拼接成一幅尺度更大、視角更廣的圖像或全景圖。全景圖像獲取方式主要有兩種:①使用普通相機[3-4],通過拍攝多張具有重疊區(qū)域的小視角圖像,經(jīng)過拼接處理組合成一幅大視角圖像,通常情況下形成全景圖像的照片數(shù)量不低于8張;②直接使用廣角鏡頭拍攝圖像[5-6]。廣角鏡頭是一種焦距短于標(biāo)準(zhǔn)鏡頭、視角大于標(biāo)準(zhǔn)鏡頭的攝影鏡頭,在較短的拍攝距離范圍內(nèi)能拍攝較大面積的景物,而魚眼鏡頭是一種特殊的廣角鏡頭[7],其水平和垂直視角都能達到180°。理論上兩張魚眼圖片就能形成一幅360°×360°的全景圖。但由于周邊畫面畸變嚴(yán)重,通常情況下采用3-4張魚眼圖片即可拼接成全景圖像[8]。
沈柯[9]設(shè)計的全景視圖圖像拼接系統(tǒng),只需將三腳架固定好,用普通相機從多角度拍攝多張圖片系統(tǒng)就可輸出全景拼接結(jié)果。但大量相同圖片數(shù)據(jù)多次利用造成冗余計算,計算量巨大,耗時較長。宋寶森[10]設(shè)計的全景圖像拼接系統(tǒng),需要提前輸入相機鏡頭多個參數(shù),手動計算圖像匹配的變換矩陣值并進行全局調(diào)整,隨后輸出全景圖。雖然最終輸出的全景圖效果較好,但在系統(tǒng)操作過程中需要涉及相關(guān)參數(shù)設(shè)置,且步驟繁多,應(yīng)用場景有限。廖訓(xùn)佚[11]在魚眼全景拼接系統(tǒng)中,首先將各個模塊進行明確的功能劃分,然后在系統(tǒng)中將各模塊耦合起來,操作步驟簡單易學(xué),但功能單一且拼接過程較慢,不適合實時拼接。
針對上述拼接系統(tǒng)設(shè)計的不足,本文使用C++程序、MFC(Microsoft Foundation Classes)界面開發(fā)庫和OpenCV(Open Source Computer Vision Library)圖像處理開源庫,開發(fā)了一套基于魚眼的圖像和視頻雙拼接系統(tǒng)[12]。通過對魚眼圖像的處理,實現(xiàn)魚眼圖像的校正和拼接操作,各個模塊獨立運行,分工明確,最后生成全景拼接圖。同時添加視頻拼接功能模塊,實時全景拼接。
1 全景拼接關(guān)鍵技術(shù)
魚眼全景拼接關(guān)鍵技術(shù)有魚眼校正技術(shù)[13]、圖像匹配技術(shù)[14-15]等。
1.1 魚眼校正技術(shù)
魚眼校正技術(shù)是魚眼全景拼接的基礎(chǔ),校正效果決定后面拼接的質(zhì)量。常見的魚眼校正技術(shù)有球面坐標(biāo)定位法和經(jīng)緯度映射法。魚眼圖像是圓形的,有圓心和半徑,在魚眼圖像的圓形區(qū)域內(nèi)按比例畫出經(jīng)線,然后將同一經(jīng)線上的點校正后為同一橫坐標(biāo),縱坐標(biāo)不變,這就是球面坐標(biāo)定位法原理。球面坐標(biāo)定位法思路簡單,校正效率高但校正質(zhì)量不好,存在明顯的拱形失真,不能應(yīng)用于后續(xù)的拼接操作。而經(jīng)緯度映射法在球面坐標(biāo)定位法基礎(chǔ)上添加了緯度線,即在魚眼圖像區(qū)域內(nèi)按比例畫出經(jīng)緯線,同一經(jīng)度上的點像素校正后具有相同的橫坐標(biāo),同一緯度上的點像素校正后具有相同的縱坐標(biāo)。同球面坐標(biāo)定位法相比,經(jīng)緯度映射法校正效果有了明顯提高,本系統(tǒng)即采用該方法用于魚眼圖像校正。
1.2 圖像匹配技術(shù)
圖像匹配技術(shù)是圖像拼接的關(guān)鍵技術(shù)。圖像匹配技術(shù)分為基于區(qū)域的匹配、基于頻域的匹配和基于特征點的匹配,本系統(tǒng)采用基于特征點的匹配。特征點匹配即對兩幅待匹配的圖像提取它們圖像上明顯的特征信息進行匹配,確定它們之間的空間關(guān)系。由于魚眼圖像校正后仍存在畸變現(xiàn)象,用特征點方法提取的特征信息能很好地進行匹配。本系統(tǒng)采用SURF特征點提取算法,該算法具有旋轉(zhuǎn)、平移、仿射不變性等特性。
2 系統(tǒng)結(jié)構(gòu)與流程設(shè)計
傳統(tǒng)的全景圖像是將待拼接的圖像一步步拼接起來,過程瑣碎,工作量大且耗時較長。魚眼全景拼接系統(tǒng)省去一系列復(fù)雜的指向性操作,簡化全景拼接圖像的合成步驟,在已有算法基礎(chǔ)上搭建魚眼全景拼接系統(tǒng)。
2.1 系統(tǒng)功能
(1)圖像讀取。拼接系統(tǒng)軟件設(shè)計核心在于圖像處理,所以首先要讀取圖像,針對不同存儲格式的圖像都能進行載入操作。
(2)圖像顯示。圖像要能顯示在計算機屏幕上,并可統(tǒng)一將顯示的圖片以同一圖片格式保存在計算機中。
(3)圖像處理。此功能步驟:魚眼圖像校正、圖像特征點檢測和匹配、圖像重映射及融合。魚眼圖像存在畸變,本系統(tǒng)通過經(jīng)緯度映射法對魚眼圖像進行校正;對具有重疊區(qū)域的圖像進行SURF特征點檢測并進行匹配;利用匹配的特征點計算圖像間的變換模型,將這些圖像轉(zhuǎn)換到同一坐標(biāo)系上,并對拼接后的圖像進行融合處理,減少圖像間的重影現(xiàn)象,提高圖像辨識度。這部分算法在OpenCV中實現(xiàn)。
(4)視頻輸入輸出。通過接入實時的魚眼攝像頭,在計算機上實時觀看拍攝的畫面,并經(jīng)過處理呈現(xiàn)出校正拼接后的全景圖像。對視頻的拼接本質(zhì)就是通過捕獲攝像頭的幀對其進行圖像拼接。
系統(tǒng)功能模塊如圖1所示。
2.2 系統(tǒng)流程
魚眼全景拼接系統(tǒng)有兩個獨立的小系統(tǒng),分別是魚眼圖像全景拼接系統(tǒng)和魚眼攝像機實時拼接系統(tǒng)[16-17]。前者主要對圖片進行處理,后者則是對攝像頭導(dǎo)入的實時畫面進行處理[18]。
魚眼全景圖像拼接流程如圖2所示,操作步驟包括對魚眼圖像讀取、顯示,同時對于待拼接圖像選擇性添加或刪除甚至清空。然后對待拼接圖像進行拼接處理,包括魚眼圖像校正、圖像特征點提取及匹配、圖像重映射及融合等。對于拼接的圖像有兩種可能,一種是輸入圖像不符合匹配要求,因為選擇的魚眼圖像不一定擁有共同區(qū)域,或由于圖像拼接過程存在不可控因素導(dǎo)致拼接失敗,此時系統(tǒng)會給出錯誤提示其找原因;一種是拼接成功,這時系統(tǒng)呈現(xiàn)拼接成功反饋的全景圖,在此基礎(chǔ)上可按系統(tǒng)格式要求保留全景圖像或直接選擇退出。
魚眼攝像機實時拼接流程如圖3所示。首先將攝像機鏡頭按一定位置擺好(本實驗中按3個魚眼攝像頭兩兩成120°放好,并根據(jù)3個攝像頭拍下的圖像計算好它們之間的數(shù)據(jù)和拼接算法)。同時打開3個魚眼攝像頭,導(dǎo)入實時畫面并顯示實時拼接全景圖。此種視頻拼接屬于拼接圖像的合成方式,將每一部分視頻幀按照一定的規(guī)則進行處理,然后各段圖像以一定的拼接方式拼接成全景圖像,實現(xiàn)視頻拼接效果。
3 系統(tǒng)實現(xiàn)
3.1 系統(tǒng)軟件開發(fā)環(huán)境
系統(tǒng)開發(fā)環(huán)境:VS2010+OpenCV+MFC。
MFC是微軟基礎(chǔ)類庫的總稱,是一個封裝了大部分Windows API函數(shù)的C++類庫,還是一個基礎(chǔ)框架,作為應(yīng)用程序的交互界面使用,對于編譯框架能夠很好地完成初期Windows界面設(shè)定[19]。
OpenCV是一個基于開源發(fā)行的跨平臺計算機視覺庫,用C++語言編寫,主要接口也是C++語言[20-21],能實現(xiàn)圖像處理和計算機視覺方面的很多通用算法,在本系統(tǒng)中主要用來實現(xiàn)圖像拼接模塊(圖像的特征點檢測和匹配、圖像的重映射及融合)功能。
每個模塊的接口分別表示如下:
3.2 關(guān)鍵代碼
在本文設(shè)計的案件場景重建系統(tǒng)平臺中,OpenCV負責(zé)魚眼圖像校正和圖像拼接功能。捕獲攝像頭幀的關(guān)鍵代碼如下:
3.3 系統(tǒng)試驗
系統(tǒng)試驗從兩部分描述。
(1)魚眼圖像全景拼接。從文件夾中添加3張魚眼圖像,添加了圖像在界面左邊顯示。點擊全景拼接,系統(tǒng)自動將魚眼圖像先校正再匹配進行拼接,界面右邊顯示拼接結(jié)果。點擊保存結(jié)果按鈕就會按指定格式保存全景圖像。魚眼圖像全景拼接如圖5所示。
(2)魚眼攝像機實時拼接。打開3個魚眼鏡頭(兩兩呈120°),在界面左邊實時顯示攝像機拍攝的畫面。點擊視頻拼接按鈕,在界面右邊就會顯示出實時全景拼接圖。點擊保存結(jié)果按鈕可保存當(dāng)前拼接的圖片。魚眼攝像機實時拼接如圖6所示。
4 結(jié)語
本文基于MFC+OpenCV設(shè)計了魚眼全景拼接系統(tǒng),大大提升了全景圖片的生成效率,同時引入了實時視頻拼接功能。該系統(tǒng)畫面簡潔、操作方便、運行流暢、兼容性較強,有一定的參考和應(yīng)用價值。但受限于硬件配置條件,系統(tǒng)拼接展示的實時畫面有卡頓現(xiàn)象,且拼接出來的圖像分辨率較低,拼接圖像的中間仍有明顯的分割線存在,這是后續(xù)算法改進的方向。
參考文獻:
[1] 倪晨旭. 計算機視覺研究綜述[J]. 電子世界,2018(1):91-93.
[2] 薛佳樂.? 圖像拼接算法的研究[D]. 天津:天津理工大學(xué),2018.
[3] 李佳,盛業(yè)華,張卡,等. 基于未標(biāo)定普通相機的全景圖像拼接方法[J]. 系統(tǒng)仿真學(xué)報,2013,25(9):2070-2074.
[4] 林華琦,蘭誠棟. 基于多相機系統(tǒng)標(biāo)定的全景拼接算法研究[J]. 信息通信,2018(3):37-40.
[5] 楊浩新.? 角度不一樣? 效果大不同[N].? 中國攝影報,2018-02-27(007).
[6] 朱佳巍,王旗,范俊輝,等. 一款小型化紅外廣角鏡頭的設(shè)計[J]. 激光與光電子學(xué)進展,2018,55(7):139-144.
[7] 侯國柱,呂麗軍. 一款可見光魚眼鏡頭系統(tǒng)設(shè)計[J]. 光學(xué)與光電技術(shù),2018,16(3):90-95.
[8] 周小康,饒鵬,朱秋煜,等. 魚眼圖像畸變校正技術(shù)研究[J]. 工業(yè)控制計算機,2017,30(10):95-96,99.
[9] 沈柯.? 基于全景視圖管理的3D圖像拼接方法研究與實現(xiàn)[D]. 西安:西安電子科技大學(xué),2014.
[10] 宋寶森.? 全景圖像拼接方法研究與實現(xiàn)[D]. 哈爾濱:哈爾濱工程大學(xué),2012.
[11] 廖訓(xùn)佚.? 魚眼圖像全景拼接系統(tǒng)[D]. 重慶:重慶大學(xué),2009.
[12] 李佳,段平,張馳. 圖像分塊匹配下視頻全景拼接方法[J]. 應(yīng)用基礎(chǔ)與工程科學(xué)學(xué)報,2018(4):697-708.
[13] 邢立新.? 魚眼鏡頭視頻圖像實時校正技術(shù)研究[D]. 哈爾濱:黑龍江大學(xué),2014.
[14] 李倩.? 基于特征描述的圖像匹配技術(shù)研究[D]. 桂林:桂林電子科技大學(xué),2017.
[15] 張曉聞.? 融合優(yōu)化算法的圖像匹配技術(shù)研究[D]. 太原:中北大學(xué),2017.
[16] 何源.? 魚眼圖像無縫全景拼接技術(shù)研究[D]. 太原:山西農(nóng)業(yè)大學(xué),2015.
[17] 汪丹.? 魚眼圖像全景拼接技術(shù)的研究與實現(xiàn)[D]. 長沙:湖南師范大學(xué),2017.
[18] 呂世良,王曉茜,劉金國. 數(shù)字視頻監(jiān)控系統(tǒng)設(shè)計與實現(xiàn)[J]. 測控技術(shù),2014,33(2):80-82,86.
[19] 車忠志,孫雪雁. MFC應(yīng)用程序基本框架分析[J]. 農(nóng)業(yè)網(wǎng)絡(luò)信息,2010(9):145-147.
[20] 毛星云,冷雪飛.? OpenCV編程入門[M]. 北京:電子工業(yè)出版社,2015.
[21] 汪洵瀟.? 基于OpenCV的視頻監(jiān)控數(shù)據(jù)管理系統(tǒng)的設(shè)計與實現(xiàn)[D]. 北京:北京交通大學(xué),2011.
(責(zé)任編輯:杜能鋼)