
圖3 Ping-Pong雙緩沖處理技術
至于如何在Ping-Pong雙緩沖數據傳輸機制中設計和安排傳輸的圖像數據塊,則必須考慮針對圖像旋轉本身的特點,設計出具體的適用于旋轉算法的DSP數據調度策略。
3 旋轉算法的DSP數據調度策略
旋轉算法的數據調度目的是使算法能夠按照一定的規則,將源圖像數據有規律地分塊,并按次序分別傳輸到DSP片內存儲器中,完成計算后,形成視口圖像塊,再將視口圖像塊按同樣的順序進行排列,形成旋轉后的視口圖像。整個過程要求調入和調出的圖像數據均是規則分塊的,并且調入的源圖像塊中應該包含計算視口圖像塊的過程中所需要的全部像素數據,尤其需要解決其中的大量非連續圖像像素地址訪問問題,這樣才能正確地發揮DSP EDMA和Ping-Pong雙緩沖技術的性能。
3.1 非連續像素地址訪問
Ping-Pong雙緩沖數據傳輸機制中圖像數據塊在片內、片外存儲空間的傳輸,主要依靠EDMA設置,在后臺進行二維數據傳輸。Ping-Pong雙緩沖數據傳輸機制下的EDMA的數據傳輸要求待傳輸的圖像塊具有統一的規律,即每次旋轉的圖像數據的傳輸過程不應該因旋轉角度的變化而改變。
但是,旋轉后的視口圖像像素的地址排列與其在源圖像中的不同,不再具有連續的地址變化特征,并且視口圖像的像素地址在源圖像中的排列關系隨旋轉角度的變化而變化,沒有固定的規律,給Ping-Pong雙緩沖數據傳輸機制下的EDMA的數據傳輸操作帶來很大困難,從而導致對源圖像塊的大量非連續像素地址訪問的問題。該問題是圖像旋轉本身所特有的,如果得不到很好解決,Ping-Pong雙緩沖數據傳輸機制就無法發揮作用,旋轉算法的實際DSP執行效率也就得不到真正的提高。因此,實現滿足調入/調出圖像塊關系的數據調度就成為實現高效圖像旋轉的關鍵。
3.2 旋轉算法的DSP數據調度策略
本文提出的基于視口圖像塊覆蓋的源圖像數據分塊及其調度策略的思想是實現源圖像及視口圖像按塊處理,源圖像塊的范圍覆蓋視口圖像塊,且易于在源圖像塊內進行像素數據訪問尋址,使源圖像塊內像素地址變化具有連續的特征,以充分發揮出DSP EDMA的效率,并滿足Ping-Pong數據流程的規律性。旋轉算法DSP數據調度策略示意圖分別如圖4和圖5所示,其要點如下(以視口順時針旋轉為例):
(1)視口輸出圖像分塊
如圖4(a)所示,將視口圖像分成矩形塊,作為每次旋轉運算的基本單位,圖像塊之間依次排列。
(2)源圖像塊的取法
如圖4(b)所示,每個源圖像塊對應一個視口圖像塊,源圖像塊的尺寸取為視口圖像塊尺寸的4倍(如視口塊尺寸為20×20像素,則源圖像塊就取為40×40像素),且源圖像塊的上邊框中點與相應的視口圖像塊旋轉后的左上角頂點對應,這樣可保證順時針旋轉角度在0°~90°之間的任意情況下,源圖像塊始終覆蓋其對應的旋轉后的視口圖像塊。


(3)兩圖像塊頂點地址對應關系
設第N個源圖像塊為fN(x,y),旋轉后的視口圖像塊為f′N(x,y),則源圖像塊的頂點局部坐標地址值與旋轉后視口圖像塊的頂點局部坐標地址值之間的對應關系為:

其中width指源圖像塊的寬度。
視口逆時針旋轉的情況與此類似(如圖5所示)。區別有以下兩點:
①源圖像塊的左邊框中點與相應的視口圖像塊旋轉后的左上角頂點對應;
②源圖像塊的頂點局部坐標地址值與視口圖像塊的頂點局部坐標地址值之間的對應關系式應為:

其中height指源圖像塊的高度。
(4)圖像塊的調度
由式(3)或式(4)計算出將要從源圖像中取出的對應規則圖像塊的左上角頂點坐標(即源圖像塊的起始地址),然后用EDMA的二維數據傳輸將其調入片內L2 SRAM中。可以看出,源圖像塊不再隨旋轉角度的變化而傾斜,其內部像素的排列存在固定規律,像素地址具有連續變化的特征,故可使Ping-Pong雙緩沖數據傳輸機制下的EDMA二維數據傳輸順利進行。
這種基于視口圖像塊覆蓋的旋轉算法DSP數據調度策略有效地解決了圖像旋轉中大量非連續像素地址訪問的問題,體現了空間換時間的思想,通過充分利用EDMA的高效數據傳輸,保證了整個旋轉處理的高速運算節奏。
4 實驗及其結果
實驗采用自行研制的高分辨率圖像處理平臺,以TMS320DM642芯片為主處理芯片,時鐘為600MHz,片外為64MB SDRAM。實驗中源圖像通過調試JTAG口輸入,旋轉后的視口圖像結果從VPORT口經D/A轉換后,以VGA信號輸出。實驗分別實現兩種尺寸(400×400像素和1024×768像素)的視口圖像旋轉,相應的源圖像數據分別為1024×768像素和1920×1920像素的BMP格式的數字地圖圖像,采用0.005弧度旋轉角度遞增間隔,對分別采用式(1)的傳統像素逐點矩陣相乘方法、基于圖像線性存儲結構方法以及基于本文數據調度策略的結構優化的線性存儲結構方法三種實現方式進行對比,分別統計其平均每幀運行時間并轉換成幀率,其結果如表1所示。

從實驗結果可以看出,基于圖像線性存儲結構的旋轉算法比傳統的逐點相乘法的確在運算量上有了大幅度削減,因而有效地提高了旋轉速度,但其仍然滿足不了實際大圖像旋轉的實時性要求。通過采用本文提出的數據調度策略對算法結構及數據調度進行優化后,算法的DSP執行效率得到了顯著提高,可以滿足對DSP大圖像旋轉的實時性要求。
本文結合TMS320DM642的性能結構特點,針對圖像旋轉算法在DSP平臺上具體實現過程中存在的嚴重影響DSP CPU效率發揮的大量非連續圖像像素地址訪問的問題,提出了切實有效的基于視口圖像塊覆蓋的DSP數據調度策略;對算法的結構流程、數據調度等進行了優化調整,并在此基礎上,在TI TMS320DM642 DSP上實現了一種實時高質量大圖像旋轉方案。實驗表明,本文提出的適用于圖像旋轉算法的DSP數據調度策略,保證了DSP大圖像旋轉的實時性,達到了實用性要求。
參考文獻
[1] 張克黛,李智.圖像旋轉的快速實現方法研究[J].指揮技術學院學報,1999,(10)2:29-32.
[2] 胡慧之,紀太成.DSP視頻處理系統的數據傳輸優化設計[J].泰州職業技術學院學報,2006,(6)3:28-30.
[3] DANIELSSON P E.High-Accuracy Rotation of Images[J].Graphical Models and Image Processing,1992,54(4):340-344.
[4] 曾慶如,畢篤彥,王洪迅.TMS320C64x EDMA的圖像數據傳輸優化[J].電視技術,2005,(278):66-72.
[5] 李方慧,王飛,何佩琨.TMS320C6000系列DSPs原理與應用(第2版)[M].北京:電子工業出版社,2003.





