全景視頻拼接關鍵技術

一、原理介紹

圖像拼接(Image Stitching)是一種利用實景圖像組成全景空間的技術,它將多幅圖像拼接成一幅大尺度圖像或360度全景圖,圖像拼接技術涉及到計算機視覺、計算機圖形學、數字圖像處理以及一些數學工具等技術。圖像拼接其基本步驟主要包括以下幾個方面:攝相機的標定、傳感器圖像畸變校正、圖像的投影變換、匹配點選取、全景圖像拼接(融合),以及亮度與顏色的均衡處理等,以下對各個步驟進行分析。

攝相機標定

由于安裝設計,以及攝相機之間的差異,會造成視頻圖像之間有縮放(鏡頭焦距不一致造成)、傾斜(垂直旋轉)、方位角差異(水平旋轉),因此物理的差異需要預先校準,得到一致性好的圖像,便于后續圖像拼接。

相機的運動方式與成像結果之間的關系見下圖。

圖1:相機的運動方式與成像結果之間的關系

圖像坐標變換

在實際應用中,全景圖像的獲得往往需要攝像機以不同的位置排列和不同的傾角拍攝。例如由于機載或車載特性,相機的排列方式不盡相同,不能保證相機在同一面上,如柱面投影不一定在同一個柱面上,平面投影不一定在同一平面上;另外為了避免出現盲區,相機拍攝的時候往往會向下傾斜一定角度。這些情況比較常見,而且容易被忽略,直接投影再拼接效果較差。因而有必要在所有圖像投影到某個柱面(或平面)之前,需要根據相機的位置信息和角度信息來獲得坐標變換后的圖像。

理論上只要滿足靜止三維圖像或者平面場景的兩個條件中的任何一個,兩幅圖像的對應關系就可以用投影變換矩陣表示,換句話說只要滿足這其中任何一個條件,一個相機拍攝的圖像可以通過坐標變換表示為另一個虛擬相機拍攝的圖像。

一般情況下8參數的透視投影變換最適合描述圖像之間的坐標關系,其中8參數的矩陣為[m0,m1,m2;m3,m4,m5; m6,m7,1];各參數對應的相機運動表示如下:

如圖2顯示的是相機向下傾斜一定角度拍攝圖像,這個角度與m6和m7具有對應關系,如果要獲得校正圖像,只需要對8參數矩陣求逆后進行坐標變換。

(a) 原始圖像

圖2:(a) 原始圖像;(b)x方向形變效果;(c)傾斜校正后效果

圖像畸變校正

由于制造、安裝、工藝等原因,鏡頭存在著各種畸變。為了提高攝像機拼接的精度,在進行圖像拼接的時候必須考慮成像鏡頭的畸變。一般畸變分為內部畸變和外部畸變,內部畸變是由于攝影本身的構造為起因的畸變,外部畸變為投影方式的幾何因素起因的畸變。鏡頭畸變屬于內部畸變,由鏡頭產生的畸變一般可分為徑向畸變和切向畸變兩類。徑向畸變就是集合光學中的畸變像差,主要是由于鏡頭的徑向曲率不同而造成的,有桶形畸變和枕型畸變兩種。切向畸變通常被人為是由于鏡頭透鏡組的光學中心不共線引起的,包括有各種生成誤差和裝配誤差等。一般人為,光學系統成像過程當中,徑向畸變是導致圖像畸變的主要因素。徑向畸變導致圖像內直線成彎曲的像,且越靠近邊緣這種效果越明顯。根據徑向畸變產生的機理,對視頻圖像進行校正。效果如圖3(b)所示,經過校正的圖像,其有效像素區域縮小,一般可通過電子放大的方式進行校正,如圖3(c)所示。

(b)(c)

圖3:(a)為原始采集圖像;(b)為經過徑向失真校正的圖像;(c)為經過放大的圖像

圖像投影變換

由于每幅圖像是相機在不同角度下拍攝得到的,所以他們并不在同一投影平面上,如果對重疊的圖像直接進行無縫拼接,會破壞實際景物的視覺一致性。所以需要先對圖像進行投影變換,再進行拼接。一般有平面投影、柱面投影、立方體投影和球面投影等。

平面投影就是以序列圖像中的一幅圖像的坐標系為基準,將其圖像都投影變換到這個基準坐標系中,使相鄰圖像的重疊區對齊,稱由此形成的拼接為平面投影拼接;柱面投影是指采集到的圖像數據重投影到一個以相機焦距為半徑的柱面,在柱面上進行全景圖的投影拼接;球面投影是模擬人眼觀察的特性,將圖像信息通過透視變換投影到眼球部分,構造成一個觀察的球面;立方體投影是為了解決球面影射中存在的數據不宜存儲的缺點,而發展出來的一種投影拼接方式,它適合于計算機生成圖像,但對實景拍攝的圖像則比較困難。如下圖4所示,圖像拼接處理流程示意圖。

圖4:圖像拼接處理流程示意圖

匹配點選取與標定

由于特征點的方法較容易處理圖像之間旋轉、仿射、透視等變換關系,因而經常被使用,特征點包括圖像的角點以及相對于其領域表現出某種奇異性的興趣點。Harris等提出了一種角點檢測算法,該算法是公認的比較好的角點檢測算法,具有剛性變換不變性,并在一定程度上具有仿射變換不變性,但該算法不具有縮放變換不變性。針對這樣的缺點,Lowe提出了具有縮放不變性的SIFT特征點。

圖5 兩幅圖像中標定的匹配特征點

如上圖5所示,圖像的拼接需要在圖像序列中找到有效的特征匹配點。圖像的特征點尋找直接影響圖像拼接的精度和效率。對于圖像序列,如果特征點個數≥4個,則很容易自動標定圖像匹配點;如果特征點很少,圖像拼接往往不能取得較為理想的效果。

圖像拼接融合

圖像拼接的關鍵兩步是:配準(registration)和融合(blending)。配準的目的是根據幾何運動模型,將圖像注冊到同一個坐標系中;融合則是將配準后的圖像合成為一張大的拼接圖像。

在多幅圖像配準的過程中,采用的幾何運動模型主要有:平移模型、相似性模型、仿射模型和透視模型。

圖像的平移模型是指圖像僅在兩維空間發生了 方向和 方向的位移,如果攝像機僅僅發生了平移運動,則可以采用平移模型。圖像的相似性模型是指攝像機本身除了平移運動外還可能發生旋轉運動,同時,在存在場景的縮放時,還可以利用縮放因子 多縮放運動進行描述,因此,當圖像可能發生平移、旋轉、縮放運動時,可以采用相似性模型。圖像的仿射模型是一個6參數的變換模型,即具有平行線變換成平行線,有限點映射到有限點的一般特性,具體表現可以是各個方向尺度變換系數一致的均勻尺度變換或變換系數不一致的非均與尺度變換及剪切變換等,可以描述平移運動、旋轉運動以及小范圍的縮放和變形。圖像的透視模型是具有8個參數的變換模型,可以完美地表述各種表換,是一種最為精確變換模型。

圖像融合技術一般可分為非多分辨率技術和多分辨率技術兩類。在非多分辨率技術中主要有平均值法、帽子函數法、加權平均法和中值濾波法等。多分辨率技術主要有高斯金字塔、拉普拉斯金字塔、對比度金字塔,梯度金字塔和小波等。

(e)

圖6 柱面全景圖像拼接

(a)-(d)為四幅不同視角的圖像,(e)為最終拼接得到的柱面全景圖像

亮度與顏色的均衡處理

因為相機和光照強度的差異,會造成一幅圖像內部,以及圖像之間亮度的不均勻,拼接后的圖像會出現明暗交替,這樣給觀察造成極大的不便。

亮度與顏色均衡處理,通常的處理方式是通過相機的光照模型,校正一幅圖像內部的光照不均勻性,然后通過相鄰兩幅圖像重疊區域之間的關系,建立相鄰兩幅圖像之間直方圖映射表,通過映射表對兩幅圖像做整體的映射變換,最終達到整體的亮度和顏色的一致性。

二、國內外現狀

全景拼接偵察系統在國外已經有了較早的研究,早在1992年,劍橋大學的L.G.Brown就對圖像拼接的核心技術進行總結,1996年微軟研究院的Richard Szeliski提出基于運動的全景拼接模型。Szeliski后來又相繼發表了若干這方面論文,2000年Shmuel Peleg提出改進方法,根據相機的運動方式自適應選擇拼接模型,2003年M.Brown發表了SIFT特征進行圖像拼接的方法,但計算量很大,2007年Seong Jong Ha提出移動相機系統的全景拼接方法,不僅保證效果,而且運算速度也不錯。

在國內方面,也有不少高校科研機構對視頻拼接技術及應用進行研究,其中,上海凱視力成信息科技有限公司研發的“全景視覺態勢感知系統” 最具代表性,該系統功能完善、技術先進、性能可靠,并已成功應用于多種車型。

上海凱視力成信息科技有限公司全景視覺態勢感知系統——PVS9112型是實時的全固態無機械運動的高清360度凝視視頻系統,系統提供實時的連續覆蓋整個戰場的全運動視頻,人機交互界面直觀快捷。系統適應于惡劣環境,支持彩色和紅外傳感器,可以黑天和白天全天候工作,實時地圖像處理和高清視頻的顯示,顯示界面同時提供360度全景窗口和感興趣區域的高清畫面。系統提供開發式結構,便于同其它系統如雷達等集成到一起,以獲得一個完整的態勢理解。

傳感頭:

圖8 幾種傳感頭

圖形界面:

圖9 PVS9112圖形界面

特點:

  • 實時的360度視頻全景顯示,便于對態勢的感知理解、安全監視、目標探測。從而提高平臺的攻擊能力和安全防護性。

  • 支持高清彩色和紅外傳感器。日夜均可工作。

  • 顯示全局拼接畫面、局部感興趣。

  • 圖形交互界面。并支持多種人機交互接口,支持觸摸屏、鼠標、鍵盤、自定義按鍵、操縱搖桿等,可無縫接入已有系統。

  • 無運動部件,高可靠性。

  • 適應車船飛機等惡劣的工作環境。

可選特征:

  • 目標檢測與告警

  • 自動多目標跟蹤

  • 視頻記錄和回放

  • 可選支持PTZ長距離光電探測系統,在全景視頻上可以通過觸摸的方式控制PTZ的快速轉動到指定的位置,克服了傳統操控PTZ方式的缺陷,使得PTZ攝像機的功效大大提高。

  • 圖像透霧增強算法

  • 電子穩像算法

開放式體形架構:

二、應用

從圖像拼接的實際應用來看,主要有大型航空照片,衛星圖像拼接,車載系統監控,虛擬場景實現,視頻壓縮;很多資料上都提及車載系統的拼接,這種拼接偵查系統可以用于不同車輛,如反恐、安全監視、偵察、巡邏和警車等;系統給操作者提供車輛周圍的實時全景圖像,使之能夠感知全面而豐富的態勢,操縱車輛的同時還可以有效將自己保護在車內,不用通過車輛的擋風玻璃就可以實時操控。全景圖像極大地增強了用戶的視覺感知系統,使其在特種車輛、軍用以及民用方面都擁有廣闊的市場前景。與傳統的多畫面監控相比,全景拼接畫面更符合人眼觀察,極大地提高了偵察的準確性。但很少提及機載系統,因此,機載方面只要設計合理,應用前景是巨大的。

應用實例:

方式一:基本模式

攝像機組 + 一或兩個終端,支持記錄或不記錄,每個終端所顯示內容可以不同。

方式二:增強模式

攝像機組 + 2以上終端,可通過GigE網絡來擴展連接其他設備,如視頻記錄儀等。 采集和預處理模塊,實現對視頻信號的捕獲,并對攝像機組進行管理,如PTZ控制等。在這一層,實現對不同路數、不同接口形式的攝像機的支持。并作必要的預處理功能,如圖像的縮放平移投影變換、數據壓縮等,為后續處理器準備好數據。模塊還通過多個GigE網絡,將視頻數據分發給多個不同的處理器或其它設備,如視頻記錄儀等。這種組成結構,可適應不同應用需求:如不同的攝像機種類和數量,終端處理功能要求不同等等。

關于視頻拼接產品的介紹

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252631.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252631.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252631.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Part8 多態性 8.1運算符重載

1運算符重載的規則C 幾乎可以重載全部的運算符,而且只能夠重載C中已經有的。不能重載的運算符:“.”、“.*”、“::”、“?:”重載之后運算符的優先級和結合性都不會改變。 重載的兩種形式:   1 重載為類的非靜態成員函數;   …

H面試程序(29):求最大遞增數

要求&#xff1a;求最大遞增數 如&#xff1a;1231123451 輸出12345 #include<stdio.h> #include<assert.h> void find(char *s) {int maxleng 0;int length 1;int pos 0;int i 0;while(s[i] !\0){ if((s[i])<0||(s[i]>9)){assert(0);}if((s[i1]-0) &g…

reorder-list

/*** Definition for singly-linked list.* class ListNode {* int val;* ListNode next;* ListNode(int x) {* val x;* next null;* }* }*///思路:通過不同的首結點獲取到不同的尾結點,然后拼接public class Solution {public ListNode get…

四大主流芯片架構(X86、ARM、RISC-V和MIPS)

目前市場上主流的芯片架構有 X86、ARM、RISC-V和MIPS四種&#xff1a; 序號架構特點代表性的廠商運營機構發明時間1X86性能高&#xff0c;速度快&#xff0c;兼容性好英特爾&#xff0c;AMD英特爾1978年2ARM成本低&#xff0c;低功耗蘋果&#xff0c;谷歌&#xff0c;IBM&…

微博預計要火一陣的SleepSort之Shell及C實現

今日在微博看到如此奇妙的代碼。竟然還有新的sort算法&#xff0c;對于我這樣的渣渣必須研究一下&#xff0c;代碼例如以下&#xff1a; #!/bin.bash function f() {sleep "$1" //sleep 這么多secho "$1" }while [ -n "$1" ] //第一個參數不為空…

相關類以及常用方法

1、system&#xff1a;(系統相關類&#xff09; 常用方法&#xff1a; a) : system.arraycopy(制定數組&#xff0c;開始復制的位置&#xff0c;目標數組&#xff0c;開始粘貼的位置&#xff0c;需要復制的長度) 。 將指定源數組中的數組從指定位置復制到目標數組的指定位…

2021-11-15

本文將重點圍繞國產CPU的發展歷程與當前產業鏈各領軍企業的布局情況作詳盡解讀&#xff08;并包含特大號獨家整理的最新進展&#xff09;&#xff0c;具體如下&#xff1a; 1、國產CPU發展歷程回溯 2、飛騰&#xff1a;PK生態的主導者 3、鯤鵬&#xff1a;快速崛起的領導者 …

關于在ubuntu下配置AMD顯卡驅動的總結

同樣先卸載先前版本 代碼:sudo sh /usr/share/ati/fglrx-uninstall.sh代碼:sudo apt-get remove --purge fglrx fglrx_* fglrx-amdcccle* fglrx-dev*重啟 代碼:sudo reboot下載驅動&#xff0c;右邊直接有ubuntu32位和64位驅動鏈接&#xff1a;http://support.amd.com/en-us/do…

Python3中的hasattr()

Python3已經將此內置函數移除了。查閱Python v3.0 documentation發現可以使用 hasattr(object, name)內置函數來完成callable的功能&#xff0c;方式如下&#xff1a; 3.0之前&#xff1a;callable(func) 3.0之后&#xff1a;hasattr(func, __call__) 這兩者結果是相同的。 轉載…

計算機結構簡圖

北橋,南橋是主板上芯片組中最重要的兩塊了.它們都是總線控制器.他們是總線控制芯片.相對的來講,北橋要比南橋更加重要.北橋連接系統總線,擔負著cpu訪問內存的重任.同時連接這AGP插口,控制PCI總線,割斷了系統總線和局部總線,在這一段上速度是最快的.南橋不和CPU連接通常用來作I/…

原始Ajax

var $ { request:function(obj){ //1. 獲得xmlhttprequest對象兼容性處理 var xhr; //undefined未定義 try{ //主流瀏覽器里面的ajax對象 xhr new XMLHttpRequest(); }catch(e){ //IE低版本的瀏覽器 xhr new ActiveXObject("Microsoft.XMLHTTP"); } //2. 建立和…

Servlet 與 Ajax 交互一直報status=parsererror

Servlet 與 Ajax 交互一直報statusparsererror 原因&#xff1a;servlet 返回的數據不是 Json 格式 1、JS代碼為&#xff1a; 1 var jsonStr {clusterNum:2,iterationNum:3,runTimes:4};2 $.ajax({3 type: "post",4 //http://172.2…

25LINQ拾遺及實例

投影 □ 遍歷數組索引&#xff0c;Select獲取 int[] indexes {0, 2}; string[] strs {"a", "b", "c", "d"}; var result from i in indexes select strs[i]; foreach (string str in result) { Console.Write(str " &quo…

國產CPU的6大品牌,3大路線對比

這些年來&#xff0c;中國最想發展的科技產品是什么&#xff1f;那必須是芯片&#xff0c;特別是2018年中興事件、2019年華為事件之后&#xff0c;國內的芯片產業就徹底地火爆了起來。 按照數據顯示&#xff0c;截止至2020年10月份&#xff0c;國內已經有27萬家芯片企業&#…

BluePrint和ORM

一、藍圖創建 1 #引入庫文件2 from flask import Blueprint,request,jsonify3 4 user Blueprint(5 "site",6 __name__,7 template_floder"templates_folder_path",8 static_floder"static" 9 ) #創建藍圖 10 1…

【js實例】Array類型的9個數組方法,Date類型的41個日期方法,Function類型

前文提要:【js實例】js中的5種基本數據類型和9種操作符 Array類型的9個數組方法 Array中有9個數組方法: 1.檢測數組 2.轉換方法 3.棧方法 4.隊列方法 5.沖排序方法6.操作方法 7.位置方法 8.迭代方法 9.歸并方法 在實例中介紹,實例如下 /* Array類型 js數組中的每一項可以用來保…

調用詠南中間件插件演示

function GetSvrData(const accountNo, defineId: WideString; inParams: OleVariant): OleVariant; virtual; abstract; // accountNo&#xff0c;帳套編號 // defineId3位插件編號2位自定義編號&#xff0c;defineId必須是唯一的 // inParams&#xff0c;TDataSet.Params的OL…

龍芯與飛騰roadmap

飛騰roadmap 龍芯roadmap 龍芯系列處理器芯片是龍芯中科技術有限公司研發的具有自主知識產權的處理器芯片&#xff0c;產品以32位和64位單核及多核CPU/SOC為主&#xff0c;主要面向國家安全、高端嵌入式、個人電腦、服務器和高性能機等應用。產品線包括龍芯1號小CPU、龍芯2號中…

vim 多窗口操作

1、打開多個窗口打開多個窗口的命令以下幾個&#xff1a;橫向切割窗口:new窗口名(保存后就是文件名) :split窗口名&#xff0c;也可以簡寫為:sp窗口名縱向切割窗口名:vsplit窗口名&#xff0c;也可以簡寫為&#xff1a;vsp窗口名2、關閉多窗口可以用&#xff1a;q!&#xff0c;…

BZOJ 2440 完全平方數(莫比烏斯-容斥原理)

題目鏈接&#xff1a;http://61.187.179.132/JudgeOnline/problem.php?id2440 題意&#xff1a;給定K。求不是完全平方數&#xff08;這里1不算完全平方數&#xff09;的倍數的數字組成的數字集合S中第K小的數字是多少&#xff1f; 思路&#xff1a;首先&#xff0c;答案不超過…