姜文濤,劉 江,賀峻峰,聶偉樂,周國良,衛(wèi) 宏,閆 麗
(西安應用光學研究所,西安 710000)
目前圖像拼接[1]方式主要有兩種:第一種是通過單個鏡頭和單個相機,通過旋轉相機將拍攝到的序列圖像順次拼接得到廣角圖像[2]。由于只使用了一個鏡頭和一個傳感器,為了得到實時的全景圖像需要高速旋轉的裝置來帶動相機,盡管如此得到的拼接圖像仍會存在掃描延時。第二種是通過多個鏡頭和多個相機根據視場角設計相對結構關系,使相機組覆蓋更大的區(qū)域,再利用圖像算法進行配準計算,找到重疊區(qū)域,進行重疊區(qū)域對齊、變換、融合,組成一幅視野寬廣的場景圖像[3]。本文僅研究第二種拼接方式。
針對多路高清視頻的海量數(shù)據及拼接系統(tǒng)的實時性要求,本文選取Jetson平臺為圖像處理器。通過獲取的圖像進行標定計算出每路高清相機的內參及外參,再根據圖像重疊區(qū)域的配準計算進行數(shù)據融合和圖像變換,最后根據相機的位置關系選擇適合顯示的投影變換,合并中間計算過程生成復合變換模型,利用嵌入式平臺實時處理多路的圖像變化和拼接后圖像顯示。
基于特征點提取的圖像配準算法相對全局灰度運算的方法如光流、灰度投影等,精度更高,在圖像拼接中普遍使用。SIFT是對圖像平移旋轉縮放等符合透視變換模型,最為經典,精確度最高的算法,然而其計算量巨大,耗時很長,在一些強實時場景下無法使用,因此,最近一些年在SIFT之后,產生了大量特征點描述子,包括SURF、FAST、BRISK、BRIEF以及最新的ORB等,其均是在某一方面對SIFT進行簡化,總體性能相比SIFT均有一定差距,但大大提高了SIFT的計算實時性[4],在本文的傳感器拼接中,因傳感器位置固定后,只需一次配準,對實時性無明確要求,故為保證拼接精度,本研究依然采用SIFT特征匹配作為圖像配準算法。
高斯卷積核作為實現(xiàn)尺度變換過程中唯一的變換核已經被Koendetink證明,再后來高斯卷積作為唯一的線性核也被Lindeberg等人證明了。因此,基于高斯卷積核實現(xiàn)原始圖像的尺度變換,獲取圖像在多尺度空間的表示序列,再在不同尺度的空間內對序列進行特征提取,是尺度空間理論的核心內容。
Lowe在2004年提出了高斯差函數(shù)DoG(Difference of Gaussian),由高斯卷積核在不同尺度和圖像卷積運算生成,可以提高檢測尺度空間中穩(wěn)定特征點位置的有效率。在提取特征點的過程中,通過高斯核和圖像在不同尺度下的卷積搭建金字塔,再利用相鄰尺度的空間函數(shù)之差搭建DoG高斯金字塔子塔,然后在DoG空間進行極值檢測。由于DoG值對噪聲和邊緣較敏感,檢測得到的局部極值點要通過對一些低對比度及不穩(wěn)定的候選點進行精確定位才能作為特征點[5],特征點提取如圖1和圖2所示。
k-d tree(short for k-dimensional tree)提供了一種待查和查詢記錄之間最符合記錄的高效機制,因此降低了查找最佳匹配的計算量。該搜索算法可以近似為遞歸算法,通過輪換使用識別器和各維度的關鍵碼進行比較,逐步在搜索的時候縮小范圍,最終找到需要的點[6]。
k-d tree算法在檢查結點的時候會花費大量的時間,最后能滿足最近鄰條件的只有很少一部分節(jié)點。當k-d tree的方法用在高維度數(shù)據的時候,任何查詢都可能使大部分節(jié)點被訪問和比較,搜索效率會下降甚至會不停地搜索。針對k-d tree算法在高維度空間的搜索效率低的缺點,本研究采用BBF(Best Bin First)方法[7]。
通過對葉子結點設置最大值可以縮短搜索時間,這個改進對k-d tree找到最近鄰點有一定的提高,但葉子結點的檢查順序還只是根據k-d tree的結構來決定的。以結點和被查詢結點的距離遞增順序來檢索結點的改進方法解決了未考慮被查詢點的位置的問題,結點和被查詢結點的距離是指它們之間的最短距離。同時BBF算法對超時進行了限定,在優(yōu)先級的隊列中當所有節(jié)點都經過檢查或超過設定時間時,檢索算法會返回并找出最佳結果作為近似的最近鄰。特征匹配點對檢測如圖3所示。
SIFT特征向量生成后首先需要進行匹配,也就是相似性度量,即采用歐式距離、馬氏距離等距離函數(shù)匹配特征之間的相似性程度。其次是消除錯配,任何特征描述和相似度量都無法完全避免錯配,此步驟主要根據各種約束對錯配點對進行消除。這里消除錯誤的匹配點對,對候選點中最佳匹配點進行特征向量匹配,最后得到所需的圖像特征向量,是利用RANSAC隨機樣本的一致性算法實現(xiàn)的。
RANSAC稱為隨機抽樣一致性算法,它是通過估計數(shù)學模型參數(shù)的一種迭代算法[8]。其主要特點是,正確概率會隨著模型的參數(shù)隨著迭代次數(shù)的增加逐步得到提高。主要思路是,通過采樣和驗證的策略,反復選擇數(shù)據中一組隨機局內點,合成一個大概率適用于局內點的模型。每次迭代從數(shù)據集的采樣模型中選取需要的最少數(shù)目特征點并計算模型參數(shù),再在數(shù)據集中經過統(tǒng)計得到符合該模型參數(shù)的特征點數(shù)量,符合樣本最多的參數(shù)則是模型的最終參數(shù)值。即:內點是符合模型的特征點,外點是不符合模型的特征點。消除錯匹配點對的圖像配準圖如圖4所示。
目前投影模型主要有平面投影、柱面投影、球面投影及墨卡托投影等,針對日后半球全景顯示的研究,本研究使用了球面投影。
基準坐標系定義了一個原點為視點,其中的任意一點P(U,V,W)在相機坐標系中對應點設為P′(U′,V′,W′),它們的對應關系可以用下面的變換來表示:
(U′,V′,W′)T=R×(U,V,W)T
(1)
其中:R為三維單位正交矩陣,表示R矩陣的方法有很多,通常有方向角和四元組。相機方向角都包含俯仰角和偏轉角,繞相機的光軸旋轉的角,分別用α、β、γ表示[9]。本文旋轉變換的矩陣使用的方向角表示方法如下,R表示為:
(2)
實景圖像的基本度量單位一般統(tǒng)一為像素,為了計算球體半徑,文本采用等距離匹配算法對相機的焦距進行估計。設f是相機的焦距,?是相機旋轉一次光軸的夾角,di是相鄰照片的交點至照片的位移,則滿足下列公式:
(3)
若覆蓋球面的n幅圖像由多個同型號相機進行拍攝,則有:
(4)
f值根據序列圖像di值求得后就得到了球面模型的半徑,然后把各層圖像投影到半徑為f的球面模型上。
球面投影[10]的反變換是把球面拼接圖像生成可觀察到的視圖,推導得出:
(5)
這就是球面反投影公式。輸入圖像的像素點經過該投影變換后一般都是有小數(shù),這些結果映射在非整數(shù)坐標的輸出圖像位置。所以數(shù)據在投影變換過程中不具有連續(xù)性,會出現(xiàn)由鋸齒現(xiàn)象而導致變形,本文采用雙線性插值算法解決投影過程的變形。球面投影算法仿真結果如圖5所示。
本文利用NVIDIA公司低功耗高性能嵌入式平臺實現(xiàn)全景圖像拼接。Jetson TX2集成的6核CPU,由2個丹佛加4個A57組成,GPU部分采用Pascal架構,擁有256個CUDA,并且板載了8G內存。拼接設計基于OpenCV[11]對算法進行優(yōu)化,利用CPU對特征提取、最佳點配準、反投影變換進行計算及公式優(yōu)化合并,最終得到復合矩陣變換模型,再用GPU完成圖像變換及拼接圖顯示。本文設計了多路高清圖像實時拼接顯示,相機采用小米運動相機實時輸出1 280×720分辨率的廣角圖像,拼接顯示圖像分辨率為1 920×1 080。由于輸入視頻設置為720P@60 Hz彩色圖像,經計算1路高清相機的數(shù)據率為1.24 Gb/s,4路相機即為4.96 Gb/s。因此同時采集對數(shù)據總線讀取和圖像處理開銷都很大,本文將圖像格式由RGB轉變?yōu)閅UV4∶2∶2,即一個像素對應16bit位寬,減小了33%圖像輸入的數(shù)據量。多相機結構模型及拼接顯示如圖6~圖11所示。
圖6顯示兩個白色相機和綠色相機分別水平夾角50度,在分別參照安裝面夾角20度,四個相機覆蓋超大視場,最終拼接圖像如圖7所示;圖8顯示4個相機兩兩夾角45°,可以覆蓋超過180°超寬視場,最終拼接圖像如圖9所示;圖10顯示3個白色相機兩兩夾角45°,兩個綠色相機和中間白色相機兩兩夾角60°,可以覆蓋半球視場,最終拼接圖像如圖11所示。
提出了一種基于SIFT特征提取的改進算法,并利用Jetson平臺實現(xiàn)了全景圖像拼接的設計。利用復合矩陣變換模型實現(xiàn)了重疊區(qū)的圖像融合和投影拼接顯示,簡化了圖像處理過程,利用嵌入式平臺可以在線處理并實時顯示拼接后的高清圖像,具有很強的實用性。