摘 要: 為了在DSP平臺上實現實時大圖像旋轉,結合TMS320DM642的性能結構特點,針對旋轉算法中嚴重影響DSP CPU效率發揮的大量非連續圖像像素地址訪問的問題,提出了基于視口圖像塊覆蓋的DSP圖像旋轉算法數據調度策略,對算法的結構流程進行了優化調整。
關鍵詞: 大圖像旋轉;數據調度;DM642;DSP;實時;優化
圖像旋轉是一種應用廣泛的數字圖像處理技術,隨著應用水平的不斷提高,對在嵌入式系統中實現高分辨率大圖像旋轉的需求也越來越高。如在航空領域的高分辨率數字地圖圖像的顯示處理過程中,由于現有的顯示芯片均不能支持圖像旋轉功能,就需要在資源有限的嵌入式平臺上實現大幅面地圖圖像的實時旋轉。采用DSP平臺是一種實現方式,具體實現時需仔細考慮兩個方面的問題,一是選用計算量小的旋轉算法,二是充分發揮DSP平臺強大的并行計算能力。
目前,已經有很多有效降低計算量的圖像旋轉算法,基于圖像線性存儲結構的旋轉方法[1]就是其中之一。然而,在DSP平臺上,有限的高速存儲資源限制了這些算法效率的直接發揮,需要針對算法及DSP平臺的性能結構特點進行高效的數據調度。對于圖像旋轉問題而言,數據調度還需要克服由于存在大量非連續圖像像素地址訪問而嚴重影響DSP數據存取及CPU效率發揮的問題。這是圖像旋轉本身的特殊性,在其他圖像處理技術中是不存在的。本文主要討論如何利用TI公司TMS320DM642芯片的資源特點,進行高效圖像旋轉的大規模數據調度,從而實現適用于大圖像的DSP實時圖像旋轉。
1 基于圖像線性存儲結構的旋轉方法介紹
目前,圖像旋轉大多采用基于視口映射的處理。視口是指屏幕上的顯示區域范圍,方法是先計算出旋轉后視口圖像像素在源圖像中的坐標地址值,再依據該地址在源圖像中對應讀取像素值,最后利用讀取的像素值進行插值,得到最終旋轉后視口圖像。實際上,由于存在對稱性,一幅圖像任意角度的旋轉可分解為一次90°或180°或270°的旋轉,再加上一次±45°以內的旋轉。
傳統的圖像旋轉一般通過矩陣乘法實現:

其中,α為旋轉角度。
本文選用的張克黛[1]等人提出的基于圖像線性存儲結構的旋轉方法是一種理論上運算效率較高的方法。下面具體介紹。
由于圖像是線性存儲的,各個像素點之間的相對位置關系確定。如圖1(a)所示,圖像旋轉前,任意像素點P(x,y)和P1(x1,y1)、P2(x2,y2)及A(xA,yA)在幾何上是矩形的四頂點關系。由于旋轉變換是線性變換,如圖1(b)所示,圖像旋轉后,各個像素點之間的相對位置關系不發生變化,


所以,對圖像作旋轉變換,只需對第一行和第一列的像素用式(1)作矩陣乘法運算,對除第一行和第一列以外的像素,用式(2)進行簡單的加減運算即可。這樣避免了對整幅圖像的每個像素作矩陣乘法運算,可節省5~6倍的CPU周期。
另外,對于旋轉計算后非整數像素地址的插值,本文采用雙線性插值法,基本能夠滿足對圖像質量的要求。
2 圖像旋轉的DSP結構優化
2.1 TMS320DM642結構特點
該芯片的結構如圖2所示,它基于C64x內核,采用TI的第二代高級超長指令字結構,可在600MHz時鐘頻率下工作,每個指令周期可并行8條32位指令,可達到4 800MIPS的峰值計算速度。DM642具有64個增強DMA(EDMA)通道,可進行高效的一維及二維數據傳輸,二維數據傳輸可用于一個矩形圖像數據塊的高速搬移。

DM642的存儲空間由片內和片外兩級存儲體系構成,其中片內存儲器又分為L1和L2兩層。第一層L1為CPU Cache,其訪問速度與CPU的速度相匹配,包括相互獨立的L1P(16KB)和L1D(16KB);第二層L2(256KB)具有靈活的RAM/Cache分配。片外存儲器具備32位的訪問地址,通過EDMA控制器和EMIF外部存儲器接口進行數據訪問。其中,片內存儲器和片外存儲器在訪問速度方面存在很大差異。
此外,作為多媒體處理專用芯片,DM642具有用于視頻數據I/O的專用接口,易于實現視頻信號的顯示輸出。
2.2 旋轉算法的結構優化
針對DM642性能結構特點的算法結構優化,其目的是使上述大圖像旋轉快速算法的效率能夠在DSP平臺上得到充分發揮,其核心思想是合理優化存儲空間分配和數據傳輸流,使CPU能連續不斷地處理圖像數據,消除處理過程中的等待延遲。
由DSP的結構特點可知,只有在數據和程序均位于片內存儲器當中的條件下,DSP的效率才能得到最大化的發揮。在大圖像旋轉算法中,由于涉及的圖像數據量遠大于DSP的片內存儲器容量,源圖像和最終視口圖像等數據必須被存放在片外存儲器中。在這種情況下,為了保證DSP CPU高速處理能力的發揮,必須優化數據流,將源圖像分塊,依次搬移至片內處理,并設法保證CPU當前要處理的圖像數據塊已經事先在片內存儲器中準備好了。因此在算法整體優化結構上采用Ping-Pong雙緩沖技術,利用EDMA與CPU并行工作來隱藏圖像數據塊在片內和片外之間的傳輸時間,使CPU能連續不斷地處理數據,中間不會出現空閑等待。
Ping-Pong雙緩沖是一種同時利用兩個數據緩沖區的數據傳輸技術,它將SRAM分成兩大塊,一塊用于存儲源圖像塊,另一塊用于存儲旋轉后的圖像塊;每一個存儲塊又分為兩個區(Ping區和Pong區),輪流用于圖像塊傳輸和處理。其具體并行工作流程如圖3所示。





