徐揚,王曉曼,朱佶,劉鵬,姜浩
(1.長春理工大學 電子信息工程學院,長春 130022;2.中國華錄·松下電子信息有限公司,大連 116023)
圖像拼接技術主要目的在于將多幅有重疊區域的圖像拼接成一幅完整的大視場圖像,其過程主要為圖像配準和圖像融合兩步,圖像配準工作在于找出兩幅圖像中的重疊區域的坐標關系并將兩幅圖像拼成一幅圖像,圖像融合工作主要在于消除圖像配準工作拼接圖像中由于亮度、對比度等因素引起的拼接縫,最后得出一幅完整的圖像。隨著技術的發展,目前視頻拼接技術發展已經比較成熟,各種視頻拼接的技術已經在我們的日常生活中投入使用,如車載監控、智能監管、交通等領域都涉及到大視場成像,會用到視頻拼接技術。目前國內有多種軟件處理圖像拼接,如 videostitch、Kolor autopano、video pro等,這類軟件已經具有較高的拼接精度,但是都需要預先拍攝原始圖像,再通過軟件對圖像作拼接處理,達不到實時性的要求,在實際的工程運用中很難適用。在基于硬件的圖像拼接系統研究中,圖像配準通常由上位機完成算法部分,也難以達到實時性要求。
針對無法滿足實時性的問題,本文基于現場可編程門陣列FPGA設計了一套圖像拼接系統,采用兩個拍攝位置固定的CMOS攝像頭同時獲取兩路圖像,并進行亮度調節,FPGA對采集到的圖像信息進行圖像配準工作,計算出平移量,得出重疊區域,最后采用加權算法消除拼接縫,進行圖像融合,由VGA接口輸出顯示。系統流程如圖1所示。

圖1 系統流程圖
系統總體結構框圖如圖2所示,以Altera公司的Cyclone IV芯片作為核心芯片,系統整體由電源、JTAG、圖像采集、圖像緩存、數據處理和顯示部分構成。由FPGA對雙目攝像頭進行配置,獲取前端兩個CMOS攝像頭采集的視頻數據,再通過SDRAM控制模塊將兩路視頻數據傳輸給2片DDR2作緩存,最后根據VGA顯示時序讀出數據并做圖像配準和融合工作后由VGA顯示。

圖2 系統總體結構框圖
系統的硬件電路主要為圖像采集、緩存和輸出接口部分。
系統采用OV5640雙目攝像頭采集兩路圖像,輸出RGB格式視頻,兩個攝像頭的信號線相互獨立,與FPGA開發板擴展口相連,FPGA通過IIC配置兩個攝像頭的分辨率,完成IIC配置后接收視頻信號。IIC對復位信號和SDA、SCL進行配置,FPGA提供20k時鐘信號,在初始化OV5640時對0X5587寄存器修改完成兩個攝像頭的亮度預處理??刂撇糠诌B接圖如圖3所示。
本系統選取兩個攝像頭的分辨率為320*240,幀頻60fps,像素時鐘24M,以RGB565格式輸出。FPGA接收的每連續2個8位RGB數據作為一個16位RGB565格式的像素數據進行緩存。FPGA通過接收CMOS_HREF信號采集有效圖像數據。VSYNC信號作為緩存讀時序的觸發信號,時序圖如圖4所示。

圖3 OV5640與FPGA控制部分連接圖

圖4 CMOS采集時序
考慮到數據采集的像素時鐘和數據處理的FPGA芯片時鐘以及數據輸出的VGA時鐘三者是不同的,因此需要加緩存模塊來將三者隔離,系統采用2片MT47系列的DDR2芯片進行數據緩存,它的容量為1Gbit,16位數據位,兩片DDR2容量為2Gbit,32位數據位,帶寬高達10Gbit,滿足緩存兩路分辨率為320*240,幀頻60Hz視頻數據的要求,FPGA和兩片DDR2的端口對應圖5所示。兩片DDR2芯片分別緩存兩路圖像數據,每個存儲單元存放一個像素16bit圖像數據,按照1幀所對應的地址排列,由兩組FIFO模塊,每組兩個FIFO,分別控制兩路數據的讀寫操作,模塊圖如圖6所示。

圖5 FPGA與DDR2端口對應圖

圖6 DDR2緩存模塊圖
本系統顯示接口采用VGA接口,將RGB三色模擬信號輸出顯示,對FPGA輸出的16位數字信號轉化為模擬信號,采用外接ADV7125數模轉換芯片轉換。ADV7125芯片具有3通道8位數據口,可將RGB信號轉化為3路模擬信號輸出,輸入RGB565格式信號時將多余數據口接地,時鐘和控制消隱信號由FPGA提供,如圖7所示。

圖7 FPGA與ADV7125連接圖
系統的軟件設計主要集中在圖像拼接部分。其中對圖像明暗度的預處理已經通過改變OV5640寄存器完成,圖像拼接主要包括圖像配準和圖像融合兩個部分,兩個部分的功能由Altera EP4CE6F17C8芯片完成。
圖像配準算法主要分為兩種,基于灰度特征的配準和基于變換域的配準,而無論是類似基于灰度特征的harris算法還是基于變換域的FFT法,計算量都十分龐大,故一般基于硬件的圖像拼接的圖像配準部分都由ARM或者DSP來完成計算,再將偏移量傳給FPGA做處理。而考慮到兩個攝像頭的位置固定,因此視場角相同的情況下兩幅圖像的偏移量是固定的,故不必用復雜算法計算出兩幅圖像的偏移量,因此采用相位標校方法對圖像配準。先將采集到的兩路圖像在顯示器上顯示,設CMOS1圖像為P1,CMOS2圖像為P2,P1起始坐標為(0,0),P2起始坐標為(320,0),P1和P2有明顯的重疊區域,采用標校方法消除重疊區域,具體原理如下:
(1)選取合適背景,取多個定位點a、b、c...將攝像頭對準背景采集圖像。
(2)測算出 a、b、c...多點在 P1和 P2的位置
并計算出兩個參考點在P1和P2上的相對距離

其中


(5)將P2整體在x方向平移Δ,在y方向平移Δ,得到兩幅圖像的重疊區域分辨率為:

在FPGA中,圖像配準工作在VGA_Controller模塊中完成,如圖8所示。oCoord_X和oCoord_Y為VGA顯示時掃描的橫縱坐標,oRequest1和oRequest2分別為兩路圖像數據的讀取信號,模塊內部設置常量X_START和Y_START,分別表示行列消隱部分。起始時將兩幅圖像分別以起始點(0,0)和(320,0)顯示在顯示屏上,再通過改變有效輸出數據消隱X_START和Y_START的大小,逼近背景板上的定位點,直到起始點為定位點為止,即可得出多出消隱部分即為定位點坐標,得出3個定位點的6個坐標后,即可計算得出平均偏移距離和重疊區域大小,根據重疊區域大小將P2與P1拼接起來,得到有拼接縫的拼接圖像,再進行下一步圖像融合工作。

圖8 VGA_Controller模塊bsf框圖
在得出兩幅圖像的重疊區域后,開始拼接縫區域作圖像融合工作,考慮到算法在硬件系統中的使用的難易程度,采用了計算較方便的線性加權平均法。由于通過相位標校已經得出拼接縫的位置,故不必對全區域作自適應加權,只需在拼接縫附近作加權平均算法,達到消除拼接縫的目的。
由于之前已經做過關于亮度的預處理,因此對于重疊區域作分組加權法,根據相位標校所得圖像重疊區域為220列像素,將這220列像素分為10組,每組22列像素,對每一組的像素乘上不同權值進行圖像融合處理。將標校后的圖像分為A、B、C三個區域,其中A區和C區分別為CMOS1和CMOS2拍攝到的圖像區域,B區為重疊區域,將B區劃分成10組,從左至又分別為B0,B1,B2,B3,B4......B8,B9設拼接后圖像信息為I(x,y),A區圖像信息為A(x,y),C區圖像信息為C(x,y),σ1為權值,則融合公式如下所示:

其中,對于σ1的取值如表1所示。

表1 σ1取值表
由于FPGA內部計算小數乘法計算量較大,FPGA本身對于2的整數次冪的操作較容易實現,因此將σ1的值用2的負數次冪的形式相加表示,則16位圖像數據和權值的小數乘法運算可轉化為16位數據左移不同位數并且相加的加法運算,轉換公式如下:

因此16位視頻數據乘法的計算結果可以轉化為Data值分別左移a、b、c...n位之后相加的值。而精確度越高,則加法運算中2的負高位次冪越多,本次數據位為16位,因此n的取值不超過15即可,本次精確度到0.01以后,則各個區域σ1的轉化后的值如表2所示。

表2 近似值轉化表
在對2幅圖像進行融合處理時,將A、B、C三個區域分開處理,當計數器掃描到A、C區域時,直接輸出A/C區圖像數據,當掃描到B區域時,將兩組數據按上述線性加權算法處理后輸出,根據oCoord_X大小劃分A、B、C區域,最終輸出加權平均值Data_average_R、Data_average_G、Data_average_B作為輸出值。模塊圖和仿真圖如圖9、圖10所示。

圖9 圖像融合模塊Data_average bsf框圖

圖10 加權平均算法仿真圖
系統使用Altera公司的FPGA開發板,采用OV5640雙目攝像頭采集圖像數據,OV5640通過開發板擴展口與開發板相連,兩個攝像頭保持一定間距。如圖11所示。

圖11 圖像拼接系統示意圖
在對兩個攝像頭初始化階段進行兩路視頻的亮度預處理,基本效果如圖12。兩幅圖像亮度基本趨于一致。

圖12 亮度預處理后圖像
亮度處理后對圖像作標校工作,首先選取一個背景板,在上面標定a、b、c三個點,將攝像頭對準背景板拍攝圖像,如圖13所示,經過圖像標校后坐標位置如表3所示。

表3 a、b、c三點位置坐標
得出三點位置后根據公式計算出對應的偏移量,X方向為222,Y方向為15,得出實際重疊區域大小為220*225,由于受到實際固定角度的影響,兩個攝像頭拍出圖像在水平方向上有所偏移,去除上邊界后得出實際分辨率為406*192,再根據重疊區域大小將兩幅圖像作拼接并做加權算法,對兩副圖像重疊區域作加權,在2個時鐘后輸出新的像素值,由于圖像配準得出兩個攝像頭重疊區域后不必再次計算偏差量,因此拼接過程中加權算法速率直接影響圖像拼接后的幀頻,兩幅圖像初始幀頻為60幀/s,經加權處理后最終拼接圖像處理一幀時間為18.7ms,幀頻為53幀/s,滿足實時性要求。最終得到圖像拼接完成圖,如圖14所示。

圖13 初始2路圖像對比圖

圖14 圖像拼接處理完成圖
經過圖像融合處理后圖像的視場有所擴展,且無明顯的拼接痕跡,幀頻無明顯下降,達到了預期的效果。
本文基于FPGA實驗平臺,通過外接雙目攝像頭,完成了圖像采集、緩存、處理的雙攝像頭圖像拼接系統。系統中緩存模塊有效解決了圖像采集、數據傳輸之間的時鐘同步問題,圖像拼接部分利用兩路攝像頭拍攝位置固定這一點進行寄存器調整亮度和相位標校調整重疊位置,不采用軟件算法的手段對圖像的位置和亮度進行調整,完成圖像亮度預處理和圖像配準的過程,確保了實時性,且保證有較高的精確度,在此基礎上對拼接圖像重疊區域分組作加權平均處理,在處理時將小數相乘運算轉化為2的冪次運算,保證較高精確度的同時大大減少了計算量,使圖像漸變平滑,消除拼接縫,完成效果較好,達到了預期的目標。對于硬件拼接圖像有一定應用價值。