反射式全景視頻實(shí)時(shí)平面顯示技術(shù)的FPGA實(shí)現(xiàn)
摘 要: 介紹了反射式全景圖像展開原理,分析了圖像產(chǎn)生鋸齒失真和階梯化現(xiàn)象的原因,提出了解決問題的算法,并設(shè)計(jì)了FPGA實(shí)現(xiàn)的系統(tǒng)硬件結(jié)構(gòu)。
關(guān)鍵詞: 反射式全景視頻;實(shí)時(shí);平面顯示;FPGA;虛擬場景
虛擬現(xiàn)實(shí)技術(shù)可分為兩類[1],一類是基于三維圖形生成的虛擬場景技術(shù),另一類則是基于實(shí)景采集通過幾何變換獲得近似的真實(shí)場景。反射式全景傳感器非常適合于構(gòu)建實(shí)景采集的真實(shí)場景。在過去的十年中, 多種反射式全景傳感器相繼問世[2]。反射式全景傳感器由攝像機(jī)和曲面反射鏡組成, 與普通攝像機(jī)不同的是,它可以一次性采集360°圓周內(nèi)的全部景象, 因此得到了廣泛應(yīng)用[3]。
目前,反射式全景技術(shù)的研究主要將注意力集中在幾何變換算法和鏡頭校正算法的改進(jìn),對(duì)采集和顯示的同步性問題研究甚少,如文獻(xiàn)[1]和文獻(xiàn)[4]所做的工作是在圖形工作站實(shí)現(xiàn)的,便攜性差,無法適應(yīng)嵌入式多媒體應(yīng)用的要求。另一方面,實(shí)際應(yīng)用中往往要求展開后的平面顯示圖像有較高的分辨率,而反射鏡體積的限制使成像分辨率有限,展開后的圖像呈現(xiàn)有規(guī)律的鋸齒失真和灰度階梯化現(xiàn)象。這就需要通過相應(yīng)的視頻后處理算法生成人眼能夠接受的圖像。上述兩個(gè)問題給反射式全景視頻的實(shí)時(shí)平面顯示在嵌入式視頻處理平臺(tái)上的應(yīng)用帶來挑戰(zhàn)。
1 全景圖像展開算法及其存在的問題
1.1 全景圖像展開算法
1.2 失真現(xiàn)象的產(chǎn)生原因及解決
經(jīng)過變換展開后的平面圖像,其坐標(biāo)變換是非線性采樣過程,即采樣點(diǎn)呈環(huán)狀分布,不同半徑的環(huán)狀采樣點(diǎn)數(shù)相同。如果以原圖像最大半徑的采樣點(diǎn)數(shù)作為基準(zhǔn)對(duì)整幅圖像進(jìn)行展開,則半徑越小放大倍數(shù)越高,從而導(dǎo)致原圖像中靠近圓心的部分展開后存在明顯的鋸齒化和階梯化失真現(xiàn)象。具體地說,由于像素值的不連續(xù)性,直接放大圖像會(huì)使這種不連續(xù)性被放大。鋸齒失真就是由于放大了圖像邊緣的鋸齒狀像素產(chǎn)生的;階梯失真的產(chǎn)生,則是由于不連續(xù)的圖像梯度邊緣像素值直接被復(fù)制放大,使原先并不明顯的梯度邊緣像素值被放大為肉眼能夠分辨的一個(gè)接一個(gè)的階梯。
2 算法的改進(jìn)和硬件實(shí)現(xiàn)
考慮到在平面圖像的放大研究中,為避免圖像失真,常采用經(jīng)典的雙線性插值和三次線性差值及其改進(jìn)算法[5~7]。而全景圖像的展開與平面圖像的放大存在不同,每個(gè)像素的鄰域位置不固定,是非線性的放大過程。因此經(jīng)典的差值算法及其改進(jìn)算法不能應(yīng)用于全景圖像的展開。根據(jù)上述全景圖像展開的特性,結(jié)合FPGA硬件的可實(shí)現(xiàn)性,提出算法如下:對(duì)展開的圖像采用參數(shù)可變的高斯空間濾波,其基本思路是對(duì)展開后的圖像根據(jù)鋸齒和階梯失真的程度,使用不同尺寸的高斯濾波窗進(jìn)行空間濾波。
3 硬件系統(tǒng)實(shí)現(xiàn)
實(shí)時(shí)反射式全景視頻處理要求高的處理能力。例如,NTSC制式視頻標(biāo)準(zhǔn)要求30幀/s,每幀約0.25 M像素,即每秒7.5 M像素流量;PAL制式視頻標(biāo)準(zhǔn)要求25幀/s,而每幀的像素?cái)?shù)卻更多,總的像素流量與NTSC制式基本相當(dāng)。而對(duì)每個(gè)像素的處理量取決于采用的具體算法。通常的方法是使用DSP處理器陣列或單片高端DSP完成。考慮到本算法的查找表操作,需要大量的存儲(chǔ)器資源,對(duì)于DSP處理器來說,由于成本和空間的限制,需要外接DRAM存儲(chǔ)器和復(fù)雜控制邏輯,而外接存儲(chǔ)器控制邏輯存在帶寬限制,使其成為DSP高速圖像處理的主要瓶頸之一。另外,考慮到今后更高分辨率顯示導(dǎo)致的更高的數(shù)據(jù)處理量,DSP的實(shí)現(xiàn)方案將更加難以實(shí)現(xiàn)。FPGA提供了可替代的視頻處理平臺(tái),F(xiàn)PGA支持高效并發(fā)數(shù)據(jù)流結(jié)構(gòu),這對(duì)于圖像處理算法的實(shí)時(shí)實(shí)現(xiàn)至關(guān)重要。此外FPGA內(nèi)部的嵌入式SRAM存儲(chǔ)器是查找表操作的理想選擇。
3.1 整體硬件系統(tǒng)設(shè)計(jì)
本系統(tǒng)實(shí)現(xiàn)平臺(tái)以Altera的FPGA芯片Cyclone II EP2C70F896C6為核心。系統(tǒng)的主要模塊結(jié)構(gòu)如圖2所示。
由于平面顯示器一次只能顯示90°場景,故將全景圖像分為四塊,待需要顯示時(shí)再通過展開算法模塊進(jìn)行展開計(jì)算并顯示。圖像展開算法及VGA控制模塊為本系統(tǒng)中的核心模塊。由于圖像展開時(shí)有效圖像信息占原圖的3/4,為了節(jié)省資源,本文對(duì)分塊之后的圖像篩選出有效圖像部分存入M4K存儲(chǔ)器中,利用VGA控制模塊產(chǎn)生的VGA行列掃描信號(hào)和正余弦查找表實(shí)時(shí)產(chǎn)生M4K存儲(chǔ)器讀地址,實(shí)現(xiàn)展開算法。模塊結(jié)構(gòu)如圖3所示。
3.2 空間濾波器的硬件設(shè)計(jì)
圖4為二維圖像濾波器的結(jié)構(gòu)圖。輸入像素在Line Buffer中前移,產(chǎn)生延遲的一行。Buffer的深度依賴于每一行的像素?cái)?shù)。這些延遲的行的像素不斷輸入濾波器組。在每個(gè)濾波器節(jié)點(diǎn),像素被做特定的濾波操作,全部累加器的結(jié)果在地址樹疊加后產(chǎn)生濾波器輸出。
一般硬件執(zhí)行效率用累加次數(shù)來衡量。這樣,非對(duì)稱濾波器的復(fù)雜度就正比于m×m。m×m是卷積和的尺寸。鋸齒失真噪聲抑制功能由m×m的高斯核實(shí)現(xiàn),這個(gè)核在圖像上按行滑動(dòng)。所謂參數(shù)可變的空間濾波器,即m×m的高斯核尺寸是可調(diào)節(jié)的??紤]到高斯函數(shù)的計(jì)算涉及三角函數(shù)運(yùn)算,每次尺寸改變時(shí)采用硬件計(jì)算生成新的高斯核的方法不妥,且隨著高斯核的尺寸增大計(jì)算時(shí)間也相應(yīng)增大。為了滿足時(shí)鐘同步的要求就必須提供最大高斯核計(jì)算所需的時(shí)間,作為每個(gè)高斯核計(jì)算的固定延時(shí),這樣做顯然在小尺寸的高斯核計(jì)算時(shí)間中存在大量的冗余等待時(shí)間,這對(duì)整個(gè)系統(tǒng)的實(shí)時(shí)性十分不利。考慮視頻圖像的尺寸是一定的,故采用查找表記錄高斯核序列,由于高斯核的尺寸相對(duì)于整幅圖像非常小,且其序列個(gè)數(shù)與圖像的行數(shù)呈正比,故占用的存儲(chǔ)空間也不大。這里將圖像劃分為12個(gè)橫向帶狀區(qū)域,最上方的帶狀區(qū)域采用3×3的高斯核,而下一行則在上一行的基礎(chǔ)上+2,以此類推,最后第n帶狀區(qū)域所使用的高斯核的尺寸為2n+1=25。
4 實(shí)驗(yàn)
4.1 硬件系統(tǒng)實(shí)時(shí)性
本文中系統(tǒng)的延遲指視頻流進(jìn)入FPGA到VGA顯示的時(shí)間差,在系統(tǒng)中表現(xiàn)為A/D輸出數(shù)據(jù)管腳(iTD1_D)上出現(xiàn)的第一個(gè)數(shù)據(jù)和D/A輸入數(shù)據(jù)管腳(oVGA_R,oVGA_G,oVGA_B)上出現(xiàn)的第一個(gè)數(shù)據(jù)之間的時(shí)間差。
使用Quartus II中集成的SignalTap在線邏輯分析儀對(duì)系統(tǒng)延遲進(jìn)行測(cè)量。SignalTap的作用是在系統(tǒng)中添加一個(gè)與JTAG接口相連的模塊,將用戶關(guān)心的管腳數(shù)據(jù)波形通過JTAG接口上傳。由于FPGA芯片內(nèi)部SRAM的限制使SignalTap數(shù)據(jù)長度有限,所以本文設(shè)計(jì)了一個(gè)計(jì)數(shù)器模塊對(duì)上述時(shí)間差中的系統(tǒng)時(shí)鐘(iTD1_CLK27,
27 MHz)進(jìn)行計(jì)數(shù),從而計(jì)算得到系統(tǒng)延遲,以證明本系統(tǒng)的實(shí)時(shí)性。
由于開機(jī)時(shí)間的誤差,所以每次計(jì)算所得的計(jì)數(shù)值都不相同。本文對(duì)展開前、展開后無濾波和展開后濾波分別實(shí)驗(yàn)10次,對(duì)總共30次的實(shí)驗(yàn)結(jié)果進(jìn)行分析得到系統(tǒng)延遲。30次實(shí)驗(yàn)結(jié)果如表1所示。
分別取均值后得到展開前數(shù)據(jù)延遲為2 417 159個(gè)系統(tǒng)時(shí)鐘,即系統(tǒng)延遲為89.254 ms;展開后無濾波數(shù)據(jù)延遲為2 432 706個(gè)系統(tǒng)時(shí)鐘,即系統(tǒng)延遲為90.100 ms;展開后濾波數(shù)據(jù)延遲為2 533 135個(gè)系統(tǒng)時(shí)鐘,即系統(tǒng)延遲為93.820 ms。其中展開算法和濾波算法耗時(shí)分別為0.846 ms和3.720 ms。直觀觀察,顯示器顯示內(nèi)容的移動(dòng)和實(shí)際物體移動(dòng)基本同時(shí)進(jìn)行。
4.2 實(shí)際顯示效果
分別進(jìn)行直接展開、參數(shù)固定和參數(shù)可變高斯空間濾波器處理后展開說明三者區(qū)別。
在圖5(b)中,展開圖像下部鋸齒和階梯失真非常明顯;圖5(c)中雖然下部鋸齒被消除,但是上部圖像也變得模糊,圖像細(xì)節(jié)被嚴(yán)重破壞;圖5(d)中使用的參數(shù)可變高斯濾波器保持了圖像上部的細(xì)節(jié),同時(shí)消除了下部的鋸齒。
本文以ALTERA主流FPGA為開發(fā)平臺(tái),實(shí)現(xiàn)了對(duì)反射式全景攝像機(jī)所得的視頻流的實(shí)時(shí)平面展開,并使用參數(shù)可變高斯濾波器對(duì)展開后產(chǎn)生的鋸齒和階梯失真進(jìn)行了有效的抑制,同時(shí)保留了圖像的細(xì)節(jié)。本系統(tǒng)展開算法耗時(shí)0.846 ms,濾波算法耗時(shí)3.720 ms,而VGA顯示64.4幀/s,平均每幀為15.528 ms,遠(yuǎn)遠(yuǎn)大于本系統(tǒng)算法總耗時(shí)4.566 ms。本系統(tǒng)可以在一幀的時(shí)間內(nèi)完成算法,能夠滿足絕大多數(shù)高速應(yīng)用的要求。
參考文獻(xiàn)
[1] YoshioOnoe,Kazumasa Yamazawa,Haruo Takemura,et al. Telepresence by real-time view-dependent image generation from omnidirectional video streams[J].Computer Vision and Image Understanding,1998,71(2):154-165.
[2] 吳自新.全景視覺系統(tǒng)設(shè)計(jì)與圖像處理技術(shù)研究[D].哈爾濱工程大學(xué),2006.
[3] Niall Winters,José Gaspar,Gerard Lacey,et al.Omni-Directional vision for robot navigation.IEEE Workshop on Omnidirectional Vision(OMNIVIS'00),2000.
[4] NAGAHARA H,YAGI Y,YACHIDA M.Wide field of view head mounted display for tele-presence with an omnidirectional image sensor[J].Conference on Computer Vision and Pattern Recognition Workshop,2003(7).
[5] BOVIK A C.Handbook of image and video processing[M]. Beijing:Publishing House of Electronics Industry,2006.
[6] WANG Q,WARD R K.A new orientation-adaptive interpolation method[J].IEEE Transaction on Image Processing,2007,16(4):889-900.
[7] ALLEBACH J,WONG P W.Edge-directed interpolation[A]. ICIP-1996.Proceedings of IEEE International Conference on Image Processing[C].Lausanne Switzerland:IEEE Press,1996:707-710.