[摘 要] 提出了一種視頻序列到全景圖的快速轉換方法。首先對視頻進行抽幀, 獲得初始幀序列,利用特徵點匹配及RANSAC方法計算幀匹配質量及匹配區域, 選取匹配質量高的幀進行拼接並通過加權平均法進行圖像融合,最後得到全景圖。
[關鍵詞] 特徵匹配 RANSAC 視頻 全景圖
1 引言
通常製作360度全景圖可以使用專業的全景設備直接獲取,也可先使用普通的成像設備拍攝足夠多的具有重疊區域的圖像序列,然後將這些圖像拼接組成一幅全景圖像。
由於成本較低,不需要昂貴的專業設備,利用序列圖像進行全景圖拼接是近年來的研究熱點,其中又分為對靜態序列圖像拼接的研究,以及對視頻序列拼接的研究。
靜態圖像序列中的每一張圖像都是單獨拍攝,能夠精確設置控焦距、曝光等拍攝參數,因而夠獲得較好的成像質量,但操作過程卻相對複雜。
視頻序列拍攝操作簡單,只需使用錄像設備旋轉一周錄製,但不能準確控制拍攝參數。旋轉過程中光源位置、景物距離的變化,以及拍攝時出現抖動等情況都會導致視頻序列的成像質量較低,給後期拼接工作帶來麻煩。
本文主要研究視頻序列的拼接,提出了一種視頻序列到全景圖的快速轉換方法,通過幀的選取、匹配、拼接等步驟生成全景圖像。
2 現狀
目前,用於製作全景圖的軟體很多,其中較著名的有Helmut Dersch公司開發的PTGUI以及Pablo d'Angelo 為主開發開源全景攝影圖像拼接軟體hugin等,這些軟體都是基於Helmut Dersch's Panorama Tools,通過控制點對靜態圖像拼接,輸出一張更大幅面的全景圖像。
另外還有一些用於製作全景圖的手機應用,如利用視頻製作全景圖的bubbli,目前該應用只能運行在系統為ios7以上的設備。
3 關鍵算法
3.1 圖像匹配
圖像匹配技術是一種通過對圖像內容、特徵、結構、關係、紋理及灰度等對應關係,相似性和一致性的分析,尋求相同圖像目標的方法。目前圖像匹配的方法有很多種,根據圖像的維數可以分為 2D 和 2D 匹配、2D和 3D 匹配、3D和 3D匹配;根據圖像特徵提取的層次可以分為基於灰度的匹配、基於特徵的匹配。
本系統採用了基於特徵的圖像匹配方法。
基於特徵的匹配方法首先在原始圖像中提取特徵,然後用相似性度量函數和約束條件確定幾何變換,最後將該變換關係作用於待匹配圖像。常用的特徵匹配基元包括區域、邊緣、輪廓、直線、興趣點、顏色、紋理、矩等顯著特徵,總的概括為點、邊緣及面等特徵,由於面特徵提取過程比較複雜,耗時較多,因此基於特徵的匹配算法主要研究利用點特徵和邊緣特徵進行匹配。
3.2 Sift算法
尺度不變特徵變換算法,即 SIFT(Scale Invariant Feature Transform)算法是一種提取局部特徵的算法,由 David Lowe 於 1999 年提出的一種基於尺度空間的,對圖像平移、旋轉、縮放等特性保持不變的圖像局部特徵描述子。
相較於其它特徵提取算法,SIFT 算法對亮度變化、尺度縮放、旋轉、噪聲和仿射變換有很好的魯棒性,特徵描述子信息豐富,獨立性好、算法穩定。
SIFT算法在尺度空間尋找極值點,提取位置、尺度、旋轉不變量其構造步驟分為尺度空間的構造、檢測尺度空間的極值點、精確確定極值點位置、特徵點方向分配、生成特徵點描述子五個具體步驟。
SIFT 特徵點描述子的生成過程如下:
1) 以關鍵點為圓心將關鍵點鄰域旋轉 θ,θ 為關鍵點的梯度主方向,從而保證了旋轉的不變性。
2) 在旋轉後的圖像中,以關鍵的中心取 16×16 的鄰域窗口,即為關鍵點的鄰域窗口,每個小格代表關鍵點鄰域窗口中的一個像素,箭頭的長度為像素的模值,箭頭的方向為像素的方向,這個方向是旋轉後的像素方向。
3) 將 16×16 的矩形窗口均勻分為 16 個 4×4 個子區域,採用高斯模糊的方法,然後計算每個區域中 8 個方向的梯度累加值。
4) 得到特徵點描述子特徵向量,為 4×4×8=128 維向量。經過以上的變換,SIFT 特徵向量已經剔除了尺度變換、旋轉變化的影響,接著將特徵點描述子進行歸一化處理進一步減少光照的影響。此外,為了減少大梯度值的影響,為其設定一個閾值為 0.2,如果向量中某一維的值大於 0.2,則將其重置為 0.2,並重新進行歸一化處理。
3.3 RANSAC算法
SIFT 算法將待匹配的特徵點用 BBF 方法找到 k 個最近鄰,然後利用最近鄰比率方法判斷特徵點的匹配度。最近鄰比率方法廣泛用於基於特徵的圖像匹配,該方法簡單方便並且比較穩定,但匹配的準確率往往不夠理想。需通過其他方法提高 SIFT 特徵點的匹配精度。
RANSAC 算法是一種魯棒參數估計方法,它通過迭代的方法對一組觀測數據集進行數學模型擬合,然後採用隨機抽樣驗證去除噪聲點。其優點是可靠性強、精度高、魯棒性強,對圖像噪聲和提取不準確的特徵點有強健的承受能力,並具有較好的剔除誤匹配點的能力,SIFT 匹配對通過 RANSAC 幾何校驗之後可以有效濾除錯誤匹配,從而使得結合 RANSAC 的 SIFT 的性能更加優良,應用更為廣泛。
3.4 圖像融合
圖像融合是採用某種算法對兩幅或多幅圖像進行綜合處理,最終形成一幅新的圖像。根據融合處理所處的階段不同,圖像的融合處理通常可以在三個不同層次上進行像素級圖像融合、特徵級圖像融合以及決策級圖像融合。
像素級圖像融合方法可大體分為七類加權融合和主成分分析圖像融合方法、假彩色圖像融合方法、基於馬爾可夫隨機場的圖像融合方法、基於調製的圖像融合方法、基於統計的圖像融合方法、基於神經網絡的圖像融合方法以及基於多解析度分解的圖像融合方法。
其中最直接的融合方法就是對源圖像進行加權平均作為融合結果。加權平均運算提高了融合圖像的信噪比,但削弱了圖像的對比度,在一定程度上使得圖像中的邊緣、輪廓變模糊了。這種方法具有算法簡單、融合速度快的優點,適用於序列圖像的融合。
4 系統的設計與實現
4.1 需求分析
本系統主要為用戶提供視頻轉制全景圖的功能,同時還包括對全景圖的管理功能、展示功能以及分享功能。
圖3–1系統用例圖
1.新建任務
用戶上傳自拍的視頻進行全景圖製作。
2.任務管理
用戶可以進入任務列表頁面查看任務狀態,任務完成後可以對其進行查看、共享、轉載、刪除等操作。
在進行中的任務分為以下狀態:進行中、已成功、失敗等狀態
共享操作可以將全景圖添加到分享頁面
轉載操作可以獲得全景圖轉載代碼,通過複製、粘貼代碼可以將全景圖片嵌入其他頁面
刪除操作可以刪除需要刪除的全景圖
3.分享
默認情況下,全景圖片對其他用戶不可見,可以將圖片添加到共享頁面供其他用戶使用,也可以取消共享。
4.2程序架構
本系統分為用戶交互端和視頻轉換服務端兩部分。
用戶交互端負責接收用戶請求,向視頻轉換服務端提交任務,並提供對全景圖的管理功能,採用php、html5實現
視頻轉換服務端接受用戶端提交的任務請求並管理任務隊列,完成視頻文件到全景圖的轉換工作,採用c++語言實現,基於opencv庫。
系統架構圖
用戶提交視頻後,交互端先向服務端申請任務唯一標識,在獲得標識後完成視頻上傳工作,向服務端提交任務請求。服務端在接收到新任務請求後,先將請求放就請求隊列。由任務控制器從隊列中取出任務,並啟動視頻轉換程序,完成轉換工作,最後將任務結果返饋給交互端。
系統時序圖
4.3視頻轉換程序設計
視頻轉換程序是本系統最核心部分,負責完成視頻序列到全景圖的轉換任務。
轉換任務分為視頻抽幀、幀匹配與拼接、全景圖生成三部分工作。
1. 視頻抽幀
視頻轉全景圖的基本思想就是對視頻中的幀進行拼合,然而視頻中幀數量巨大,相鄰幀之間重複度大,一個時長60秒幀率30fps的視頻包含1800個幀,如果對視頻中全部幀進行處理,將耗費相當長的時間,這樣做不僅效率低下,而且完全沒有必要。
在本系統中,規定輸入的視頻以勻速旋轉一周的方式錄製,在進行視頻轉換時,只需要抽取部分幀便可完成拼接工作。
設置抽取幀數為N,根據視頻總幀數算出幀距間隔INTVAL,在理想情況下,從第一幀開始,每隔INTVAL抽取一幀與前幀拼合,直至視頻結束。
但實際情況下,視頻錄製的效果可能並不理想,等間隔抽取的幀未必是最適合的幀,因此每抽取一幀時,需要對該幀的畫面質量以及與前幀的匹配效果進行評估,如果當前幀不能達到要求,則需要在間隔範圍內逐幀回溯尋找更合適的幀。
2.幀匹配與拼接
每抽取一幀時,將已拼合圖A與當前幀B進行匹配。
首先利用sift算法分別提取兩張A、B的特徵點,然後利用距離比值法篩選匹配點。再利用RANSAC算法對特徵點進行分析,計算出最佳匹配的變換矩陣H,利用H對幀B做投影變換,獲得B在A中四個頂點的坐標。
根據變換後的坐標等參數評估當前幀是否符合要求,如符合則繼續進行拼接,否則放棄當前幀。
在進行拼接時,首先調整B的亮度與A匹配,然後根據變換坐標將B投射到A上,重合部分使用加權平均法進行融合。
3. 全景圖生成
在對抽取的幀依次進行拼接後,會得到一幅初始全景圖片,對初始全景圖進行處理後,將得到最終的全景圖像。
首先,要對初始全景圖進行首尾對齊。
初始全景圖首部和尾部會出現重複區域,因此需要對起始部分和和結尾部分再進行一次匹配,根據得到的變換坐標找到重複區域邊界,然後對初始全景圖進行裁剪,將重複部分去除。
其次,要去除初始全景圖中的空白區域。
在拼接過程中,由於對幀進行了投影變換,原來矩形圖像會出變形變,在拼接圖像的頂部和底部都會出現空白區域。為了去除這些空白區域,在每一次拼接完成時,都要記錄空白區域的範圍,並通過比較得到空白區域的最大邊界值,最後在生成全景圖時,根據最大邊界值裁去空白區域。
轉換程序流程圖
4.4視頻轉換程序的實現
轉換程序採用C++語言實現,基於OPENCV視頻庫。主要代碼如下:
5測試
本系統的測試主要採用黑盒測試。
5.1測試環境
(1)硬體環境
交互端硬體:ios智能設備、android智能設備、pc。
服務端硬體:cpu: E5506 2.13GHZ 內存:4G
(2)系統環境
交互端:支持html5的瀏覽器
服務端:windows server 2008
5.2系統功能測試
5.3運行效果圖
6 總結
本項目研究了從視頻序列到360度全景圖的轉換系統,主要利用特徵匹配等算法實現全景圖的轉換功能,採用html5技術實現前端交互功能。
從所生成的全景圖效果看,本系統與專業設備與軟體生成還有一定差距,但本系統具有更好的兼容性,操作方便、快捷,適合用戶的一般性要求。
參考文獻
[1] 朱雲芳,葉秀清,顧偉康.視頻序列的全景圖拼接技術.浙江大學,2006
[2] 江鐵,朱桂斌,孫奧.全景圖像拼接技術研究現狀綜述. 重慶通信學院,2012
[3] 汪松.基於SIFT算法的圖像匹配方法研究.西安電子科技大學,2013
[4] 趙燁,蔣建國,洪日昌.基於RANSAC的SIFT匹配優化.合肥工業大學,2014
[5] 維基百科.panotools.http://wiki.panotools.org/Main_Page
(責編:郝孟佳、熊旭)