王玥 付強(qiáng) 姚江云
摘 ? 要:本文主要討論全景相機(jī)系統(tǒng)的實現(xiàn)算法。簡單介紹如下,可以利用Matlab計算出攝像頭的內(nèi)部參數(shù),利用雙線性插值算法在(FPGA)上對攝像頭采集的畸變圖像進(jìn)行校正,還可以用SIFT算法和BRIEF 算法來提取特征點(diǎn)和匹配特征點(diǎn),利用最小二乘法計算變換矩陣。最后將所得參數(shù)與校正后的圖像數(shù)據(jù)傳送到電腦端整合出坐標(biāo)變換后的圖像,實現(xiàn)圖像配準(zhǔn)與融合。
關(guān)鍵詞:全景相機(jī)系統(tǒng) ?特征點(diǎn) ?畸變圖像配準(zhǔn) ?圖像配準(zhǔn)與融合
中圖分類號:TP39 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識碼:A ? ? ? ? ? ? ? ? ? ? ? 文章編號:1674-098X(2020)04(c)-0051-02
1 ?相機(jī)的標(biāo)定與圖像畸變校正
因為不同的攝像頭之間存在鏡頭畸變系數(shù)不同這個固有的因素,并且攝像頭的畸變系數(shù)要用標(biāo)定獲取,通過USB2.0傳輸每個攝像頭采集到的圖像數(shù)據(jù)到上位機(jī),用Matlab 計算得到攝像頭內(nèi)部參數(shù)矩陣和鏡頭畸變系數(shù)矩陣,依次對每個攝像頭進(jìn)行畸變校正。緩存在片外存儲器中的圖像數(shù)據(jù)是畸變校正模塊的輸入數(shù)據(jù),圖像數(shù)據(jù)經(jīng)過畸變校正之后通過并行的6路輸出,使6個16位的圖像數(shù)據(jù)在每個時鐘周期同時輸出,像素在圖像中的位置信息和片上存儲信息同時輸入并用分時復(fù)用的方法保存到DDR中。雙線性插值算法具有噪聲小、消耗小等優(yōu)點(diǎn),運(yùn)用此算法在FPGA上進(jìn)行實時畸變校正并求出圖像的變換矩陣,將求得的圖像變換參數(shù)和畸變校正等圖像數(shù)據(jù)傳送到電腦端,進(jìn)行圖像融合和顯示。全景相機(jī)具有多個不同的攝像頭,而每個攝像頭所處的位置也有所不同,當(dāng)進(jìn)行圖像采集的時候,同一個物體依據(jù)攝像頭拍攝的位置不同所得到的數(shù)據(jù)肯定不同。另外,只有相鄰的攝像頭采集的圖像才會有重疊區(qū),所以只要求得相鄰的攝像頭拍攝到的圖像的變換矩陣,然后兩幅圖像的變換矩陣的乘積就是全景圖像成像的關(guān)鍵。即利用相鄰攝像頭采集的相似圖像計算變換矩陣。
2 ?圖像特征點(diǎn)的檢測與匹配
圖像特征點(diǎn)的檢測和匹配主要需要三個模塊來實現(xiàn),包括:特征點(diǎn)的提取模塊和特征點(diǎn)的匹配模塊以及特征點(diǎn)的生成模塊。依據(jù)圖像間灰度值及紋理等信息的相似程度進(jìn)行圖像配準(zhǔn),同一個圖像的信息都在同一標(biāo)系,要完成圖像的拼接就要把各個攝像頭拍到的圖像變換到同一個標(biāo)系。這樣我們可以知道,要實現(xiàn)全景相機(jī)的功能,必須要圖像配準(zhǔn)。而且圖像配準(zhǔn)又是最消耗時間的過程,而這個過程就是本設(shè)計所要研究的重點(diǎn)內(nèi)容之一。本設(shè)計是用SIFT算法來實現(xiàn)圖像的特征點(diǎn)配準(zhǔn),通過不同圖像間匹配的特征點(diǎn)對來獲取圖像間的變換矩陣。SIFT 算法由以下幾部分構(gòu)成:高斯差分尺度空間、檢測特征點(diǎn)、計算特征點(diǎn)梯度、特征描述子的生成等。高斯差分尺度空間模塊的構(gòu)建,要實行高斯卷積、圖像降采樣、圖像相減運(yùn)算;特征點(diǎn)的模塊檢測,就是找出差分尺度空間里面的極值,并且要利用剔除低對比度和邊緣點(diǎn)的方法,來比較準(zhǔn)確的獲取特征點(diǎn)的坐標(biāo)和尺度;計算特征點(diǎn)的梯度,就是要計算出特征點(diǎn)附近的梯度幅值和幅角,然后利用梯度直方圖計算出特征點(diǎn)的梯度,最后就可以得到特征描述子了。高斯差分尺度空間模塊從DDR中獲得各個攝像頭采集到的圖像數(shù)據(jù),并且將處理過的數(shù)據(jù)傳送至特征點(diǎn)的檢測模塊中去,其用意就是獲得特征點(diǎn)的位置數(shù)據(jù),然后把得到的信息進(jìn)行存儲;而特征點(diǎn)的描述模塊獲得這些信息和特征點(diǎn)周圍的數(shù)據(jù)即可以生成特征描述向量,之后把這個向量在存儲模塊的DDR中進(jìn)行儲存;特征點(diǎn)匹配模塊從DDR中讀取特征點(diǎn)描述向量,進(jìn)行特征點(diǎn)匹配,再將匹配得出的特征點(diǎn)對存入存儲模塊中。SIFT利用高斯差分尺度空間來檢測圖像的坐標(biāo),即可以提取到尺度不變的特征點(diǎn)信息。BRIEF 算法是利用二進(jìn)制的字符串來求出特征點(diǎn)的描述數(shù)據(jù)的,此計算方法求出的特征描述子與其他特征描述子相比提取速度快,節(jié)約內(nèi)存,匹配快。不僅具有旋轉(zhuǎn)不變性而且便于利用 FPGA 實現(xiàn)。特征提取和特征描述選用SIFT和BRIEF實現(xiàn),最終目的是實現(xiàn)特征匹配。以查找表為基礎(chǔ)的 BRIEF特征點(diǎn)描述模塊,由四個部分組成:分別是圖像塊緩存、特征點(diǎn)緩存、查找表和二進(jìn)制字符串。圖像塊緩存模塊將高斯尺度空間中的圖片緩存在片上雙端口RAM中,二進(jìn)制字符串模塊用來計算圖像塊緩存中相關(guān)點(diǎn)對的地址,并從緩存中獲取其灰度值。特征點(diǎn)緩存模塊將特征點(diǎn)信息檢測模塊中的輸出結(jié)果緩存在FIFO中,并通過高斯分布取得點(diǎn)對,通過Matlab軟件生成滿足條件的點(diǎn)對信息,將其存在片上ROM中形成查找表,進(jìn)行點(diǎn)對比較,構(gòu)成二進(jìn)制字符串,即特征描述。圖像特征匹配實際上就是在匹配相近的二進(jìn)制字符串,方法是利用漢明距離,即將等長的兩個字符按位相減之后獲得的結(jié)果不是零的數(shù)字總數(shù)。取得圖像的特征點(diǎn)后,再使用BRIEF算法求出特征描述符,然后就可以使用特征描述符之間的漢明距離來求出匹配點(diǎn)對。
3 ?圖像變換矩陣求解
為了得到最優(yōu)匹配點(diǎn)對,我們要對特征點(diǎn)進(jìn)行提純,之后再利用擬合匹配點(diǎn)對來求出變換矩陣。各個攝像頭由于角度位置的不同,拍出的圖像之間會存在傾角,本設(shè)計利用投影變化的方法來求出圖像的變換矩陣,投影矩陣參數(shù)的解可以采用最小二乘法取得。在FPGA上用RANSAC算法剔除離群點(diǎn),對特征點(diǎn)對進(jìn)行提純,并利用最小二乘法在FPGA上求得變換矩陣,運(yùn)用FPGA上的豐富DSP模塊進(jìn)行求解。這部分主要工作為設(shè)定RANSAC算法參數(shù),包括:迭代次數(shù)、最小粗匹配點(diǎn)數(shù)、確定內(nèi)點(diǎn)的閾值、內(nèi)點(diǎn)與總匹配點(diǎn)對的比例閾值;首先從特征點(diǎn)對里面隨機(jī)選出四個建立方程組求解,得到投影矩陣;接下來求出其余的特征點(diǎn)對經(jīng)過投影矩陣得到的對應(yīng)點(diǎn),再求出對應(yīng)點(diǎn)和所有的候選特征點(diǎn)之間的距離,并且需要根據(jù)內(nèi)點(diǎn)閾值判斷是不是屬于一致集;最后再計算出一致集里面的元素的個數(shù)占比總匹配點(diǎn)對,以及要迭代的次數(shù),如果這兩個數(shù)據(jù)中的任何一個大于或者等于之前設(shè)置好的閾值,那么就可以說明當(dāng)前的一致集是最優(yōu)的,否則跳出繼續(xù)迭代,直至選出最優(yōu)一致集。在這個過程中首先要得到n個估計模型,每個模型由任意獲取的4個匹配點(diǎn)對構(gòu)成;其次在所有匹配點(diǎn)對集中,陸續(xù)選取一個點(diǎn)對在多個不同的模型中進(jìn)行檢驗,為了提高正確率,選取點(diǎn)對的時候按照漢明距離從小到大的順序選取,因為漢明距離越小匹配正確率越高;然后求得這個點(diǎn)對制定的模型的總數(shù)n,如果n大于之前設(shè)定好的閾值,那么此點(diǎn)對就是內(nèi)點(diǎn);最后再計算出內(nèi)點(diǎn)的數(shù)目,直到總數(shù)大于設(shè)定的閾值的時候就結(jié)束計算,把點(diǎn)對進(jìn)行存儲。矩陣參數(shù)的求解方法是利用提純之后得到的點(diǎn)對進(jìn)行計算。在FPGA中實現(xiàn)邏輯控制模塊,通過FPGA中自帶的DSP 模塊實現(xiàn)計算模塊。最后將變換矩陣參數(shù)和預(yù)處理后的圖像數(shù)據(jù)傳送到電腦上,在PC端經(jīng)過圖像坐標(biāo)變換計算、圖像剪切得到一副匹配后的全景圖像。
4 ?結(jié)語
本文通過在FPGA上對全景相機(jī)的圖像畸變校正、圖像特征點(diǎn)提取、圖像特征點(diǎn)描述符生成、圖像特征點(diǎn)匹配和圖像間變換矩陣求出來,大大提高了全景相機(jī)中圖像配準(zhǔn)的速度。實現(xiàn)了不失真的全景圖像的實時顯示。
參考文獻(xiàn)
[1] 李佳,盛業(yè)華,張卡,等.基于未標(biāo)定普通相機(jī)的全景圖像拼接方法[J].系統(tǒng)仿真學(xué)報,2013,25(9):2070-2074.
[2] 崔漢國,陳軍,王大宇.魚眼圖像校正及拼接的研究與實現(xiàn)[J].計算機(jī)工程,2007(10):190-192.
[3] 朱錚濤,黎紹發(fā).鏡頭畸變及其校正技術(shù)[J].光學(xué)技術(shù), 2005,31(1):136-138.