国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

魚眼全景拼接系統(tǒng)研究與實(shí)現(xiàn)

2019-06-07 15:08劉金亮卜凡亮
軟件導(dǎo)刊 2019年1期

劉金亮 卜凡亮

摘 要:視覺領(lǐng)域中全景圖像受到廣泛關(guān)注。魚眼圖像全景拼接步驟繁多,工作量大且耗時(shí)較長(zhǎng),影響實(shí)時(shí)性。針對(duì)該問題設(shè)計(jì)了一種MFC+OpenCV相結(jié)合的魚眼全景拼接系統(tǒng)。該系統(tǒng)用C++語(yǔ)言編譯,在VS2012的操作平臺(tái)上搭建MFC框架并安裝配置OpenCV開源視覺處理庫(kù),進(jìn)行輸入輸出、圖像顯示和圖像拼接處理等操作。魚眼全景拼接系統(tǒng)界面整潔,操作便捷,對(duì)全景視頻監(jiān)控開發(fā)具有重要現(xiàn)實(shí)意義。

關(guān)鍵詞:魚眼圖像;全景拼接;MFC;OpenCV

DOI:10.11907/rjdk.182466

中圖分類號(hào):TP319文獻(xiàn)標(biāo)識(shí)碼:A文章編號(hào):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 引言

計(jì)算機(jī)視覺作為一個(gè)重要研究領(lǐng)域引起許多學(xué)者關(guān)注[1]。圖像拼接作為該領(lǐng)域的一個(gè)分支,其應(yīng)用也越來(lái)越廣泛[2]。圖像拼接是指將兩幅相鄰的圖像數(shù)據(jù)集合起來(lái)拼接成一幅尺度更大、視角更廣的圖像或全景圖。全景圖像獲取方式主要有兩種:①使用普通相機(jī)[3-4],通過(guò)拍攝多張具有重疊區(qū)域的小視角圖像,經(jīng)過(guò)拼接處理組合成一幅大視角圖像,通常情況下形成全景圖像的照片數(shù)量不低于8張;②直接使用廣角鏡頭拍攝圖像[5-6]。廣角鏡頭是一種焦距短于標(biāo)準(zhǔn)鏡頭、視角大于標(biāo)準(zhǔn)鏡頭的攝影鏡頭,在較短的拍攝距離范圍內(nèi)能拍攝較大面積的景物,而魚眼鏡頭是一種特殊的廣角鏡頭[7],其水平和垂直視角都能達(dá)到180°。理論上兩張魚眼圖片就能形成一幅360°×360°的全景圖。但由于周邊畫面畸變嚴(yán)重,通常情況下采用3-4張魚眼圖片即可拼接成全景圖像[8]。

沈柯[9]設(shè)計(jì)的全景視圖圖像拼接系統(tǒng),只需將三腳架固定好,用普通相機(jī)從多角度拍攝多張圖片系統(tǒng)就可輸出全景拼接結(jié)果。但大量相同圖片數(shù)據(jù)多次利用造成冗余計(jì)算,計(jì)算量巨大,耗時(shí)較長(zhǎng)。宋寶森[10]設(shè)計(jì)的全景圖像拼接系統(tǒng),需要提前輸入相機(jī)鏡頭多個(gè)參數(shù),手動(dòng)計(jì)算圖像匹配的變換矩陣值并進(jìn)行全局調(diào)整,隨后輸出全景圖。雖然最終輸出的全景圖效果較好,但在系統(tǒng)操作過(guò)程中需要涉及相關(guān)參數(shù)設(shè)置,且步驟繁多,應(yīng)用場(chǎng)景有限。廖訓(xùn)佚[11]在魚眼全景拼接系統(tǒng)中,首先將各個(gè)模塊進(jìn)行明確的功能劃分,然后在系統(tǒng)中將各模塊耦合起來(lái),操作步驟簡(jiǎn)單易學(xué),但功能單一且拼接過(guò)程較慢,不適合實(shí)時(shí)拼接。

針對(duì)上述拼接系統(tǒng)設(shè)計(jì)的不足,本文使用C++程序、MFC(Microsoft Foundation Classes)界面開發(fā)庫(kù)和OpenCV(Open Source Computer Vision Library)圖像處理開源庫(kù),開發(fā)了一套基于魚眼的圖像和視頻雙拼接系統(tǒng)[12]。通過(guò)對(duì)魚眼圖像的處理,實(shí)現(xiàn)魚眼圖像的校正和拼接操作,各個(gè)模塊獨(dú)立運(yùn)行,分工明確,最后生成全景拼接圖。同時(shí)添加視頻拼接功能模塊,實(shí)時(shí)全景拼接。

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)線上的點(diǎn)校正后為同一橫坐標(biāo),縱坐標(biāo)不變,這就是球面坐標(biāo)定位法原理。球面坐標(biāo)定位法思路簡(jiǎn)單,校正效率高但校正質(zhì)量不好,存在明顯的拱形失真,不能應(yīng)用于后續(xù)的拼接操作。而經(jīng)緯度映射法在球面坐標(biāo)定位法基礎(chǔ)上添加了緯度線,即在魚眼圖像區(qū)域內(nèi)按比例畫出經(jīng)緯線,同一經(jīng)度上的點(diǎn)像素校正后具有相同的橫坐標(biāo),同一緯度上的點(diǎn)像素校正后具有相同的縱坐標(biāo)。同球面坐標(biāo)定位法相比,經(jīng)緯度映射法校正效果有了明顯提高,本系統(tǒng)即采用該方法用于魚眼圖像校正。

1.2 圖像匹配技術(shù)

圖像匹配技術(shù)是圖像拼接的關(guān)鍵技術(shù)。圖像匹配技術(shù)分為基于區(qū)域的匹配、基于頻域的匹配和基于特征點(diǎn)的匹配,本系統(tǒng)采用基于特征點(diǎn)的匹配。特征點(diǎn)匹配即對(duì)兩幅待匹配的圖像提取它們圖像上明顯的特征信息進(jìn)行匹配,確定它們之間的空間關(guān)系。由于魚眼圖像校正后仍存在畸變現(xiàn)象,用特征點(diǎn)方法提取的特征信息能很好地進(jìn)行匹配。本系統(tǒng)采用SURF特征點(diǎn)提取算法,該算法具有旋轉(zhuǎn)、平移、仿射不變性等特性。

2 系統(tǒng)結(jié)構(gòu)與流程設(shè)計(jì)

傳統(tǒng)的全景圖像是將待拼接的圖像一步步拼接起來(lái),過(guò)程瑣碎,工作量大且耗時(shí)較長(zhǎng)。魚眼全景拼接系統(tǒng)省去一系列復(fù)雜的指向性操作,簡(jiǎn)化全景拼接圖像的合成步驟,在已有算法基礎(chǔ)上搭建魚眼全景拼接系統(tǒng)。

2.1 系統(tǒng)功能

(1)圖像讀取。拼接系統(tǒng)軟件設(shè)計(jì)核心在于圖像處理,所以首先要讀取圖像,針對(duì)不同存儲(chǔ)格式的圖像都能進(jìn)行載入操作。

(2)圖像顯示。圖像要能顯示在計(jì)算機(jī)屏幕上,并可統(tǒng)一將顯示的圖片以同一圖片格式保存在計(jì)算機(jī)中。

(3)圖像處理。此功能步驟:魚眼圖像校正、圖像特征點(diǎn)檢測(cè)和匹配、圖像重映射及融合。魚眼圖像存在畸變,本系統(tǒng)通過(guò)經(jīng)緯度映射法對(duì)魚眼圖像進(jìn)行校正;對(duì)具有重疊區(qū)域的圖像進(jìn)行SURF特征點(diǎn)檢測(cè)并進(jìn)行匹配;利用匹配的特征點(diǎn)計(jì)算圖像間的變換模型,將這些圖像轉(zhuǎn)換到同一坐標(biāo)系上,并對(duì)拼接后的圖像進(jìn)行融合處理,減少圖像間的重影現(xiàn)象,提高圖像辨識(shí)度。這部分算法在OpenCV中實(shí)現(xiàn)。

(4)視頻輸入輸出。通過(guò)接入實(shí)時(shí)的魚眼攝像頭,在計(jì)算機(jī)上實(shí)時(shí)觀看拍攝的畫面,并經(jīng)過(guò)處理呈現(xiàn)出校正拼接后的全景圖像。對(duì)視頻的拼接本質(zhì)就是通過(guò)捕獲攝像頭的幀對(duì)其進(jìn)行圖像拼接。

系統(tǒng)功能模塊如圖1所示。

2.2 系統(tǒng)流程

魚眼全景拼接系統(tǒng)有兩個(gè)獨(dú)立的小系統(tǒng),分別是魚眼圖像全景拼接系統(tǒng)和魚眼攝像機(jī)實(shí)時(shí)拼接系統(tǒng)[16-17]。前者主要對(duì)圖片進(jìn)行處理,后者則是對(duì)攝像頭導(dǎo)入的實(shí)時(shí)畫面進(jìn)行處理[18]。

魚眼全景圖像拼接流程如圖2所示,操作步驟包括對(duì)魚眼圖像讀取、顯示,同時(shí)對(duì)于待拼接圖像選擇性添加或刪除甚至清空。然后對(duì)待拼接圖像進(jìn)行拼接處理,包括魚眼圖像校正、圖像特征點(diǎn)提取及匹配、圖像重映射及融合等。對(duì)于拼接的圖像有兩種可能,一種是輸入圖像不符合匹配要求,因?yàn)檫x擇的魚眼圖像不一定擁有共同區(qū)域,或由于圖像拼接過(guò)程存在不可控因素導(dǎo)致拼接失敗,此時(shí)系統(tǒng)會(huì)給出錯(cuò)誤提示其找原因;一種是拼接成功,這時(shí)系統(tǒng)呈現(xiàn)拼接成功反饋的全景圖,在此基礎(chǔ)上可按系統(tǒng)格式要求保留全景圖像或直接選擇退出。

魚眼攝像機(jī)實(shí)時(shí)拼接流程如圖3所示。首先將攝像機(jī)鏡頭按一定位置擺好(本實(shí)驗(yàn)中按3個(gè)魚眼攝像頭兩兩成120°放好,并根據(jù)3個(gè)攝像頭拍下的圖像計(jì)算好它們之間的數(shù)據(jù)和拼接算法)。同時(shí)打開3個(gè)魚眼攝像頭,導(dǎo)入實(shí)時(shí)畫面并顯示實(shí)時(shí)拼接全景圖。此種視頻拼接屬于拼接圖像的合成方式,將每一部分視頻幀按照一定的規(guī)則進(jìn)行處理,然后各段圖像以一定的拼接方式拼接成全景圖像,實(shí)現(xiàn)視頻拼接效果。

3 系統(tǒng)實(shí)現(xiàn)

3.1 系統(tǒng)軟件開發(fā)環(huán)境

系統(tǒng)開發(fā)環(huán)境:VS2010+OpenCV+MFC。

MFC是微軟基礎(chǔ)類庫(kù)的總稱,是一個(gè)封裝了大部分Windows API函數(shù)的C++類庫(kù),還是一個(gè)基礎(chǔ)框架,作為應(yīng)用程序的交互界面使用,對(duì)于編譯框架能夠很好地完成初期Windows界面設(shè)定[19]。

OpenCV是一個(gè)基于開源發(fā)行的跨平臺(tái)計(jì)算機(jī)視覺庫(kù),用C++語(yǔ)言編寫,主要接口也是C++語(yǔ)言[20-21],能實(shí)現(xiàn)圖像處理和計(jì)算機(jī)視覺方面的很多通用算法,在本系統(tǒng)中主要用來(lái)實(shí)現(xiàn)圖像拼接模塊(圖像的特征點(diǎn)檢測(cè)和匹配、圖像的重映射及融合)功能。

每個(gè)模塊的接口分別表示如下:

3.2 關(guān)鍵代碼

在本文設(shè)計(jì)的案件場(chǎng)景重建系統(tǒng)平臺(tái)中,OpenCV負(fù)責(zé)魚眼圖像校正和圖像拼接功能。捕獲攝像頭幀的關(guān)鍵代碼如下:

3.3 系統(tǒng)試驗(yàn)

系統(tǒng)試驗(yàn)從兩部分描述。

(1)魚眼圖像全景拼接。從文件夾中添加3張魚眼圖像,添加了圖像在界面左邊顯示。點(diǎn)擊全景拼接,系統(tǒng)自動(dòng)將魚眼圖像先校正再匹配進(jìn)行拼接,界面右邊顯示拼接結(jié)果。點(diǎn)擊保存結(jié)果按鈕就會(huì)按指定格式保存全景圖像。魚眼圖像全景拼接如圖5所示。

(2)魚眼攝像機(jī)實(shí)時(shí)拼接。打開3個(gè)魚眼鏡頭(兩兩呈120°),在界面左邊實(shí)時(shí)顯示攝像機(jī)拍攝的畫面。點(diǎn)擊視頻拼接按鈕,在界面右邊就會(huì)顯示出實(shí)時(shí)全景拼接圖。點(diǎn)擊保存結(jié)果按鈕可保存當(dāng)前拼接的圖片。魚眼攝像機(jī)實(shí)時(shí)拼接如圖6所示。

4 結(jié)語(yǔ)

本文基于MFC+OpenCV設(shè)計(jì)了魚眼全景拼接系統(tǒng),大大提升了全景圖片的生成效率,同時(shí)引入了實(shí)時(shí)視頻拼接功能。該系統(tǒng)畫面簡(jiǎn)潔、操作方便、運(yùn)行流暢、兼容性較強(qiáng),有一定的參考和應(yīng)用價(jià)值。但受限于硬件配置條件,系統(tǒng)拼接展示的實(shí)時(shí)畫面有卡頓現(xiàn)象,且拼接出來(lái)的圖像分辨率較低,拼接圖像的中間仍有明顯的分割線存在,這是后續(xù)算法改進(jìn)的方向。

參考文獻(xiàn):

[1] 倪晨旭. 計(jì)算機(jī)視覺研究綜述[J]. 電子世界,2018(1):91-93.

[2] 薛佳樂.? 圖像拼接算法的研究[D]. 天津:天津理工大學(xué),2018.

[3] 李佳,盛業(yè)華,張卡,等. 基于未標(biāo)定普通相機(jī)的全景圖像拼接方法[J]. 系統(tǒng)仿真學(xué)報(bào),2013,25(9):2070-2074.

[4] 林華琦,蘭誠(chéng)棟. 基于多相機(jī)系統(tǒng)標(biāo)定的全景拼接算法研究[J]. 信息通信,2018(3):37-40.

[5] 楊浩新.? 角度不一樣? 效果大不同[N].? 中國(guó)攝影報(bào),2018-02-27(007).

[6] 朱佳巍,王旗,范俊輝,等. 一款小型化紅外廣角鏡頭的設(shè)計(jì)[J]. 激光與光電子學(xué)進(jìn)展,2018,55(7):139-144.

[7] 侯國(guó)柱,呂麗軍. 一款可見光魚眼鏡頭系統(tǒng)設(shè)計(jì)[J]. 光學(xué)與光電技術(shù),2018,16(3):90-95.

[8] 周小康,饒鵬,朱秋煜,等. 魚眼圖像畸變校正技術(shù)研究[J]. 工業(yè)控制計(jì)算機(jī),2017,30(10):95-96,99.

[9] 沈柯.? 基于全景視圖管理的3D圖像拼接方法研究與實(shí)現(xiàn)[D]. 西安:西安電子科技大學(xué),2014.

[10] 宋寶森.? 全景圖像拼接方法研究與實(shí)現(xiàn)[D]. 哈爾濱:哈爾濱工程大學(xué),2012.

[11] 廖訓(xùn)佚.? 魚眼圖像全景拼接系統(tǒng)[D]. 重慶:重慶大學(xué),2009.

[12] 李佳,段平,張馳. 圖像分塊匹配下視頻全景拼接方法[J]. 應(yīng)用基礎(chǔ)與工程科學(xué)學(xué)報(bào),2018(4):697-708.

[13] 邢立新.? 魚眼鏡頭視頻圖像實(shí)時(shí)校正技術(shù)研究[D]. 哈爾濱:黑龍江大學(xué),2014.

[14] 李倩.? 基于特征描述的圖像匹配技術(shù)研究[D]. 桂林:桂林電子科技大學(xué),2017.

[15] 張曉聞.? 融合優(yōu)化算法的圖像匹配技術(shù)研究[D]. 太原:中北大學(xué),2017.

[16] 何源.? 魚眼圖像無(wú)縫全景拼接技術(shù)研究[D]. 太原:山西農(nóng)業(yè)大學(xué),2015.

[17] 汪丹.? 魚眼圖像全景拼接技術(shù)的研究與實(shí)現(xiàn)[D]. 長(zhǎng)沙:湖南師范大學(xué),2017.

[18] 呂世良,王曉茜,劉金國(guó). 數(shù)字視頻監(jiān)控系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[J]. 測(cè)控技術(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)控?cái)?shù)據(jù)管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D]. 北京:北京交通大學(xué),2011.

(責(zé)任編輯:杜能鋼)

莎车县| 抚顺市| 惠来县| 嘉黎县| 湖北省| 辉南县| 丰台区| 广南县| 平和县| 景谷| 兰考县| 酒泉市| 靖安县| 汉阴县| 墨江| 容城县| 郎溪县| 岑巩县| 石景山区| 石门县| 岳阳市| 兴文县| 叙永县| 永胜县| 山阳县| 武威市| 礼泉县| 龙门县| 海丰县| 巴彦淖尔市| 余江县| 宁安市| 隆尧县| 华阴市| 利津县| 贡山| 秭归县| 民勤县| 兰西县| 平舆县| 民县|