基于FPGA實現固定倍率的圖像縮放[圖]

摘要:基于FPGA硬件實現固定倍率的圖像縮放,將2維卷積運算分解成2次1維卷積運算,對輸入原始圖像像素先進行行方向的卷積,再進行列方向的卷積,從而得到輸出圖像像素。把圖像縮放過程設計為一個單元體的循環(huán)過程,在單元體內部,事先計算出卷積系數。降低了FPGA設計的復雜性,提高了圖像縮放算法的運算速度,增強了系統的實時性,已經應用于某款航空電子產品中,應用效果良好。

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

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

1 圖像縮放的算法

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

圖1 輸入和輸出圖像像素的映射關系

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

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

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

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

2 圖像縮放的FPGA實現

2.1 基于FPGA實現圖像縮放的功能結構

基于FPGA實現圖像縮放的功能結構圖如圖2所示。

圖2 功能結構圖

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

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

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

2.2 基于FPGA實現圖像縮放的方法

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

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

2.2.1 基于FPGA實現行方向的卷積

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

圖3 單元體示意圖

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

基于FPGA實現的源程序如下:

基于FPGA實現的仿真時序圖如圖4所示。

圖4 時序圖

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

2.2.2 基于FPGA實現列方向的卷積

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

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

3 結束語

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

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

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

作者:鄭鑫 閆鈞華 來源:《電子設計工程》


微信掃描分享本文到朋友圈
掃碼關注5G通信官方公眾號,免費領取以下5G精品資料
  • 1、回復“YD5GAI”免費領取《中國移動:5G網絡AI應用典型場景技術解決方案白皮書
  • 2、回復“5G6G”免費領取《5G_6G毫米波測試技術白皮書-2022_03-21
  • 3、回復“YD6G”免費領取《中國移動:6G至簡無線接入網白皮書
  • 4、回復“LTBPS”免費領取《《中國聯通5G終端白皮書》
  • 5、回復“ZGDX”免費領取《中國電信5GNTN技術白皮書
  • 6、回復“TXSB”免費領取《通信設備安裝工程施工工藝圖解
  • 7、回復“YDSL”免費領取《中國移動算力并網白皮書
  • 8、回復“5GX3”免費領取《R1623501-g605G的系統架構1
  • 本周熱點本月熱點

     

      最熱通信招聘

      最新招聘信息