新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于FPGA的固定倍率圖像縮放的實現(xiàn)

基于FPGA的固定倍率圖像縮放的實現(xiàn)

作者: 時間:2017-06-05 來源:網(wǎng)絡(luò) 收藏

航空電子圖像處理系統(tǒng)為操作者提供各種圖像及字符信息,隨著傳感器、顯示器的性能指標(biāo)不斷提升,圖像處理系統(tǒng)的設(shè)計面臨越來越大的挑戰(zhàn),其中的功能是圖像處理系統(tǒng)的關(guān)鍵技術(shù)要求。功能有兩種實現(xiàn)方案:1)軟件實現(xiàn),其優(yōu)點是算法選擇靈活多樣,生成的畫面質(zhì)量較高,缺點是運算時間長。2)硬件實現(xiàn),其優(yōu)點是分辨率高,實時性強,缺點是不易實現(xiàn)功能強大的優(yōu)秀算法。

近年來,技術(shù)發(fā)展迅速,片內(nèi)集成了PLL、硬件乘法器、存儲器,具有了實現(xiàn)優(yōu)秀算法的充足資源。許多航空電子嵌入式圖像處理系統(tǒng)是由固定的視頻源和顯示設(shè)備組成,系統(tǒng)中的倍率是固定的。文中針對此展開重點研究,基于硬件,實現(xiàn)固定倍率的圖像縮放。

1 圖像縮放的算法

數(shù)字圖像的縮放是一個處理2維離散信號的過程。輸出圖像中任一個像素F(x,y),均可以在輸入圖像f(x,y)的像素矩陣中找到其對應(yīng)的位置,如圖1所示。

F(x,y)的值可以對其鄰域的原始圖像進行二維得到。

其中mxn為鄰域范圍,f(i,j)是輸入原始圖像,s(i,j)為系數(shù)函數(shù)。

本文引用地址:http://www.butianyuan.cn/article/201706/349002.htm

因為圖像中鄰近的像素存在著相關(guān)性,所以輸出圖像像素可以依據(jù)其在原始輸入圖像映射位置鄰域的像素數(shù)據(jù)卷積得到。鄰域范圍內(nèi)各個像素的相關(guān)度由系數(shù)函數(shù)決定,鄰域的范圍決定了算法的運算速度。

基于硬件實現(xiàn)固定倍率的圖像縮放,為了降低FPGA設(shè)計的復(fù)雜性,提高圖像縮放算法的運算速度,增強系統(tǒng)的實時性,將2維分解成2次1維,對輸入原始圖像像素先進行行方向的卷積,再進行列方向的卷積,從而得到輸出圖像像素。

2 圖像縮放的FPGA實現(xiàn)

2.1 基于FPGA實現(xiàn)圖像縮放的功能結(jié)構(gòu)

基于FPGA實現(xiàn)圖像縮放的功能結(jié)構(gòu)圖如圖2所示。

卷積計算模塊的硬件結(jié)構(gòu)由算法決定,每個點時鐘周期內(nèi),對輸入原始圖像像素和系數(shù)先進行行方向的卷積,再進行列方向的卷積,從而得到輸出圖像像素。系數(shù)產(chǎn)生功能是依據(jù)控制模塊確定的狀態(tài),產(chǎn)生算法要求的系數(shù)。輸入緩存由控制模塊不斷刷新,保證每一時鐘輸入給卷積計算模塊相應(yīng)的像素數(shù)據(jù)。輸出緩存提供下一環(huán)節(jié)數(shù)據(jù)流接口。

控制模塊是核心邏輯部分,可以采用逆向映射方式(按照輸出像素的時間順序遞增,選擇對應(yīng)的輸入像素得到結(jié)果),也可以采用順向映射方式(直接在輸入像素的時序中產(chǎn)生輸出像素)。

逆向映射方式工作在輸出圖像的時鐘域,控制模塊根據(jù)縮放倍率、分辨率和同步信號,確定輸入像素坐標(biāo)的增量大小,使得在每一時鐘周期輸入緩存中出現(xiàn)相應(yīng)的像素數(shù)據(jù)。因為逆向映射方式需要使輸出時鐘域與輸入時鐘域保持同步,所以需要大容量的輸入數(shù)據(jù)存儲空間,才能確保在每個時鐘周期提供相應(yīng)的輸入像素數(shù)據(jù)。順向映射方式輸入和輸出像素有很強的時序?qū)?yīng)關(guān)系,按照輸入像素的時序進程實時確定輸出像素的時序,輸出圖像分辨率發(fā)生變化,但幀頻一致。圖像縮放過程中,輸入一個像素可能會輸出2個或3個像素,控制模塊可以采用輸出緩存、雙口RAM、變換時鐘域、增加數(shù)據(jù)總線寬度等方法達到這種同步。順向映射方式符合輸入圖像的時序,不需要大容量的數(shù)據(jù)存儲空間,具體根據(jù)圖像縮放算法的鄰域大小而定。

2.2 基于FPGA實現(xiàn)圖像縮放的方法

基于FPGA實現(xiàn)圖像縮放時,無論是逆向映射方式還是順向映射方式,控制模塊的設(shè)計都比較復(fù)雜。為了發(fā)揮FPGA的優(yōu)勢,大幅度降低設(shè)計難度,簡化硬件結(jié)構(gòu),文中把圖像縮放過程設(shè)計為一個單元體的循環(huán)過程,在單元體內(nèi)部,可以事先計算出卷積系數(shù)。例如,把每行720個像素,放大到768個像素,相當(dāng)于每輸入15個像素,輸出16個像素。此時可以把15個像素作為一個單元體,事先計算出每個輸入像素周期的卷積系數(shù),在FPGA中設(shè)計一個包含15種情況的狀態(tài)機即可。單元體的像素數(shù)量越少,事先計算卷積系數(shù)和狀態(tài)機設(shè)計的工作量就越少,因此像素的數(shù)量控制在20個以內(nèi),必要時可以采用近似的整數(shù)比。當(dāng)輸出像素的數(shù)量與實際要求相差很小時,圖像邊緣部分增加或減少幾個像素對顯示效果影響甚微,因此各種圖像縮放倍率情況下,相應(yīng)個數(shù)的輸入像素都可以作為一個合適的單元體。

為論述方便,文中以將768x576的輸入圖像放大到1 024x768為例,說明基于FPGA實現(xiàn)對輸入原始圖像像素先進行行方向的卷積,再進行列方向的卷積,從而得到輸出圖像像素。
2.2.1 基于FPGA實現(xiàn)行方向的卷積

圖像在行方向的放大比例為3:4,即單元體為3個輸入像素和4個輸出像素,如圖3所示。

輸入圖像的AB空間中均勻分布X1、X2、X3,3個像素,放大后輸出圖像的這個空間將輸出y0、y1、y2、y3,4個像素。這個單元體的時序關(guān)系是:當(dāng)輸入X1像素時,輸出Y0像素;當(dāng)輸入X2像素時,輸出Y1像素;當(dāng)輸入X3像素時,輸出Y2和Y3像素。行方向的卷積公式為:

基于FPGA實現(xiàn)的源程序如下:

基于FPGA實現(xiàn)的仿真時序圖如圖4所示。

在本例中時鐘為輸入的點時鐘,為了在X3像素周期時輸出2個像素:Y2和Y3,采用了擴充數(shù)據(jù)總線的方式。

2.2.2 基于FPGA實現(xiàn)列方向的卷積

數(shù)據(jù)流在行方向放大后寫入雙口RAM,然后從另一側(cè)端口讀出進行列方向的放大。由于行方向的卷積算法,雙口RAM中至少應(yīng)存儲連續(xù)的3行輸入圖像像素數(shù)據(jù),其中2行輸入圖像像素數(shù)據(jù)處于被讀出狀態(tài),產(chǎn)生放大后的輸出圖像像素,另一行空間被寫入當(dāng)前的輸入圖像像素數(shù)據(jù),循環(huán)刷新。

列方向的單元體和行方向相同,也由3個輸入像素和4個輸出像素組成,每種狀態(tài)下也是同樣的卷積系數(shù),只是圖像橫向的空間變換成圖像豎向的空間,因此基于FPGA實現(xiàn)列方向的卷積的方法與基于FPGA實現(xiàn)行方向的卷積的方法相同,此處不再贅述。

3 結(jié)束語

基于FPGA實現(xiàn)圖像縮放,需要根據(jù)圖像縮放的倍率確定包含適當(dāng)數(shù)量像素的單元體。在單元體內(nèi)部,根據(jù)圖像縮放算法確定每個輸出像素的計算公式和卷積系數(shù),確定實現(xiàn)點時鐘倍頻效果的硬件方案。順向映射方式輸入和輸出處于幀同步狀態(tài),由于輸出像素數(shù)量多于輸入像素,輸出像素的點時鐘頻率要高于輸入像素。本文行方向的放大過程,點時鐘頻率平均增加1/3倍,列方向的放大過程,點時鐘頻率還要繼續(xù)增加1/3倍。實現(xiàn)倍頻效果可以采用更高頻的獨立時鐘,或者倍頻輸入點時鐘,再或者增加數(shù)據(jù)總線寬度。為節(jié)省數(shù)據(jù)存儲空間,當(dāng)對圖像放大時,先進行列方向的放大,后進行行方向的放大;當(dāng)對圖像縮小時,先進行行方向的縮小,后進行列方向的縮小。

基于FPGA實現(xiàn)圖像縮放功能實時性強、分瓣率高。許多航空電子嵌入式圖像處理系統(tǒng)是由固定的視頻源和顯示設(shè)備組成,系統(tǒng)中圖像縮放的倍率是固定的。本文基于FPGA硬件實現(xiàn)固定倍率的圖像縮放,能夠大幅度降低設(shè)計難度,減少工作量。

基于FPGA硬件實現(xiàn)固定倍率的圖像縮放的方法已經(jīng)應(yīng)用于某款航空電子產(chǎn)品中,電路板的原有硬件沒有變動,對電路板中FPGA重新進行了設(shè)計,增加了新的內(nèi)容,應(yīng)用效果良好。



關(guān)鍵詞: 圖像縮放 卷積運算 FPGA

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉