《電子技術應用》
您所在的位置:首頁 > 可編程邏輯 > 設計應用 > 全景圖像實時展開在FPGA上的實現(xiàn)
全景圖像實時展開在FPGA上的實現(xiàn)
摘要: 全景攝像機可以使用一個攝像頭獲取周圍360°的環(huán)境信息,與以往的多攝像機獲取方法相比大大節(jié)省了硬件資源,并且在還原全景圖時避免了多畫面拼接產(chǎn)生的“鬼影”問題。但由于反射式全景攝像機獲取的畫面為極坐標視圖,為適應人眼觀察習慣需要對其進行展開。本文在FPGA上實現(xiàn)了對反射式全景圖像的實時展開,在27MHz系統(tǒng)時鐘的驅(qū)動,生成122萬像素的展開圖像達到了21.97fps的幀速。
關鍵詞: FPGA 全景圖像 EP2C70
Abstract:
Key words :

 目前,全景技術的研究主要將注意力集中在集合變換算法和鏡頭矯正算法的改進,對實時性問題研究較少。本系統(tǒng)利用FPGA對圓形極坐標圖像進行實時展開。

  系統(tǒng)總體設計

  本系統(tǒng)在以EP2C70 FPGA芯片為核心的DE2-70開發(fā)板上實現(xiàn),系統(tǒng)主要模塊如圖1所示。

  (1)視頻采集模塊:將ADV7180芯片輸出的數(shù)字視頻信號采集到SDRAM中緩存,并獲取相應的控制信號。

  (2)VGA控制模塊:將已經(jīng)處理好的數(shù)字視頻信號輸出到ADV7123,之后進入VGA顯示器進行顯示,并生成VGA控制信號和坐標信號。

  (3)展開算法模塊:利用VGA控制模塊產(chǎn)生的坐標信號對極坐標數(shù)字視頻信號進行展開操作,生成矩形視頻信號。

  系統(tǒng)模塊設計

  根據(jù)系統(tǒng)框圖,本系統(tǒng)可分為以下幾個主要模塊:視頻采集模塊、展開算法模塊和VGA控制模塊。系統(tǒng)時鐘為ADV7180產(chǎn)生的27MHz像素時鐘,保證了采集與處理的同步進行。

 

  視頻采集模塊

  視頻采集模塊接收由ADV7180芯片串行輸出的格式為ITU-R BT.656、分辨率為720×525的數(shù)字視頻信號,并提取信號中有效像素信息,同時將其轉(zhuǎn)換為分辨率為640×480的數(shù)字視頻信號,存入SDRAM中,之后,再提取緩存中數(shù)據(jù)轉(zhuǎn)換為適合VGA顯示的RGB信號傳輸?shù)胶罄m(xù)模塊。

  ITU-R BT.656解碼器

  ITU-R BT.656協(xié)議以27MHz速率復用傳送數(shù)字視頻數(shù)據(jù),其順序是:Cb,Y,Cr,Y,Cb,Y,Cr,?? 其中,Cb,Y,Cr 這三個字指的是同一個像素的亮度和色差信號,之后的Y 對應于下一個像素的亮度。Y、Cb、Cr在傳輸中數(shù)據(jù)量的比為Y:Cb:Cr=4:2:2。另外,信號同時包括相應的場、行信號。ITU-R BT.656解碼器的目的是將ADV7180芯片產(chǎn)生的ITU-R BT.656協(xié)議數(shù)據(jù)流中的8位像素信息提取出來,并根據(jù)協(xié)議中的控制信號生成相應的行列掃描信號與像素有效信號。在提取像素信息的同時,將數(shù)據(jù)存儲順序變換為:Y,Cb,Y,Cr,Y,Cb,Y,Cr??。在存入SDRAM時,偶數(shù)地址存儲{Y,Cb},奇數(shù)地址存儲{Y,Cr}。

  SDRAM控制器

  SDRAM控制器采集ITU-R BT.656解碼器輸出的像素信號,將其存入DE2-70開發(fā)板上的IS42S16160B SDRAM中。系統(tǒng)將其設計為一個四端口控制器,包括兩個讀口和兩個寫口,并且使用108MHz時鐘驅(qū)動SDRAM控制器和SDRAM芯片,保證在分頻之后,每一個讀寫端口的頻率為27MHz,與像素時鐘同步。

       由于ADV7180產(chǎn)生的視頻數(shù)據(jù)流是隔行掃描數(shù)據(jù),分為奇數(shù)場和偶數(shù)場,所以SDRAM控制器除了對數(shù)據(jù)流進行存儲,還要在讀取數(shù)據(jù)時進行去交織操作。SDRAM控制器的雙讀口設計可以出色地完成去交織任務。在讀取數(shù)據(jù)時,利用VGA的行掃描信號控制這兩個讀口分別讀?。寒擵GA控制器掃描到奇數(shù)行時,由第一個讀口讀取相應奇數(shù)行數(shù)據(jù);否則,由第二個讀口讀取相應偶數(shù)行數(shù)據(jù)。之后,再合并這兩個讀口讀取的數(shù)據(jù)得到逐行掃描的、分辨率為640×480的視頻數(shù)據(jù)流。

  YCbCr到RGB轉(zhuǎn)換模塊

  本系統(tǒng)的最終目的是將視頻流輸出到VGA顯示器進行顯示,而從SDRAM讀取得到的數(shù)據(jù)是YCbCr422格式,不符合VGA顯示要求,所以需要將其轉(zhuǎn)換為RGB數(shù)據(jù)格式。

  首先將YCbCr422格式轉(zhuǎn)換為YCbCr444格式。在每一個時鐘上跳沿,判斷當前VGA列掃描信號,若當前列為奇數(shù),則將SDRAM讀口得到的16位YCbCr信號的前8位賦值給Y作為當前像素的Y值,后8位賦值給Cr作為當前像素的Cr值,Cb保持不變;若當前列為偶數(shù),則YCbCr的前8位仍為當前像素的Y值,后8位為當前像素的Cb值,Cr保持不變。這樣就保證了輸出的Y、Cb、Cr三個信號是當前像素的對應描述信號。

  在確定了每個像素對應的YCbCr值之后,就可以通過如下公式計算得到對應的RGB值。

DE2-70上的EP2C70 FPGA芯片內(nèi)嵌了150個乘法器塊,每一個乘法器塊可以配置為兩個9×9位的乘法器或者一個18×18位的乘法器。所以本系統(tǒng)使用QuartusⅡ中集成的MegaWizard Plug-In Manager配置乘加器模塊用于實現(xiàn)YCbCr顏色空間到RGB顏色空間的轉(zhuǎn)換。另外,上述轉(zhuǎn)換公式涉及浮點運算,在Verilog中不易實現(xiàn),所以將公式中各浮點值左移9位變?yōu)檎麛?shù),從而公式調(diào)整為:

展開算法模塊為本系統(tǒng)的核心模塊,利用EP2C70內(nèi)嵌的M4K存儲器和正余弦生成器實現(xiàn)了極坐標視圖到直接坐標視圖的實時展開。

  人眼視角約為120°。考慮到人眼觀察的習慣,系統(tǒng)將圓形的極坐標視圖分割成為第一、二、三、四象限四個部分,每部分90°,由使用者選取感興趣的部分進行展開,這樣既符合人眼觀察的習慣,又節(jié)省了空間。

 

  視頻分塊

  全景極坐標視圖在顯示器上顯示時類似于圖5,其中矩形代表整個顯示器顯示的內(nèi)容,分辨率為640×480,圓形代表全景圖像出現(xiàn)的位置,半徑大約為240個像素,所以可以按圖5中虛線部分將視頻每一幀分為4塊,每一塊分辨率為240×240。系統(tǒng)使用VGA控制器生成的行列掃描信號標定當前像素的位置,當像素位置位于全景圖像區(qū)域內(nèi)時,則將像素值存入M4K存儲器,否則繼續(xù)搜索下一個滿足條件的像素。

  M4K存儲器設計

  M4K存儲器是內(nèi)嵌在EP2C70中的存儲器塊,其中每一塊容量達到4096bit,可配置為真雙口存儲器,在EP2C70芯片上共有250塊M4K存儲器塊。本系統(tǒng)使用了209塊M4K存儲器塊,借助其高尋址精度,實現(xiàn)圖像的實時展開。

  M4K存儲器寫地址

  將數(shù)據(jù)寫入M4K存儲器時,可以將數(shù)據(jù)流按照圖像顯示順序全部存入,這樣就需要生成0~360°的所有正余弦查找表;同時,由于存入了全部圖像信息,將會有1/4左右的無效像素點,浪費了寶貴的存儲器資源。系統(tǒng)利用M4K存儲器精確的尋址操作將第二、三、四象限的信息在存入時進行翻轉(zhuǎn),使得存入M4K存儲器的圖像僅顯示為第一象限的特性,則只需要生成0~90°的正余弦表就可以完成對整幅圖像的展開計算。其次,固定攝像頭之后,圓形全景圖像在顯示器中的位置是固定的,所以可以確定每一行有效像素的坐標范圍。當行列掃描信號在此范圍之內(nèi),則將該像素值存入M4K存儲器中,否則,繼續(xù)尋找下一個符合條件的像素點。所以,對第i象限的第M行第N個像素,如果為有效像素,則存入M4K存儲器的地址按如下規(guī)則計算:

這里的M和N取值范圍均為[0,239],Invalid_pixel(K)表示在第K行第一個有效像素之前所有無效像素點總數(shù)。

        M4K存儲器讀地址

  M4K存儲器的讀操作完成了全景圖像的展開。本系統(tǒng)采用極坐標與直角坐標的對應關系實現(xiàn)全景圖像展開。如圖6所示,全景圖像中的點P(x,y)在矩形圖像中對應的點為P’(x’,y’),則x’,y’與x,y的對應關系應為:



其中xΔ為橫坐標方向角度步長,yΔ為縱坐標方向上的半徑步長,分別由以下參數(shù)確定:

  之前對不同象限圖像的翻轉(zhuǎn)存儲操作已經(jīng)簡化了M4K中數(shù)據(jù)的讀取,所以只需要0~90°的正余弦查找表,查找表長度為640。在VGA顯示器上的第M行第N個像素,其對應像素值在M4K存儲器中的地址按如下規(guī)則進行計算:

其中sin_table(N)和cos_table(N)為正余弦查找表中第N列對應的正余弦值。

  VGA控制模塊

  VGA控制模塊根據(jù)系統(tǒng)時鐘生成行同步信號和場同步信號,同時接收前端模塊生成的RGB像素信號,并參照VGA顯示標準對VGA顯示進行控制。本系統(tǒng)采用640×480的顯示分辨率,幀速為64.4fps。

  系統(tǒng)性能

  本系統(tǒng)每一幀畫面分辨率為640×480,像素時鐘為27MHz,在不考慮實時顯示而只考慮存儲的條件下,一秒鐘內(nèi)可存儲87.89幀圖像。另外,如果忽視人眼觀察習慣,一次性展開整幅圖像,幀速將降低為原來的四分之一,即21.97fps,展開圖像分辨率提高到2560×480。

  總結

  本文以Terasic公司的DE2-70開發(fā)板為平臺,實現(xiàn)了對反射式全景攝像機采集的全景視頻流的實時展開,系統(tǒng)結構清晰,具有較高的穩(wěn)定性和可操作性。系統(tǒng)時鐘為27MHz,顯示分辨率為640×480,幀速達到64.4fps,達到了實時性的要求。

 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉(zhuǎn)載。