??? 摘 要: 為了在DSP平臺上實(shí)現(xiàn)實(shí)時(shí)大圖像旋轉(zhuǎn)" title="圖像旋轉(zhuǎn)">圖像旋轉(zhuǎn),,結(jié)合TMS320DM642的性能結(jié)構(gòu)特點(diǎn),針對旋轉(zhuǎn)算法中嚴(yán)重影響DSP CPU效率發(fā)揮的大量非連續(xù)圖像像素地址訪問的問題,,提出了基于視口圖像塊覆蓋的DSP圖像旋轉(zhuǎn)算法數(shù)據(jù)調(diào)度策略" title="調(diào)度策略">調(diào)度策略,,對算法的結(jié)構(gòu)流程進(jìn)行了優(yōu)化調(diào)整。
??? 關(guān)鍵詞: 大圖像旋轉(zhuǎn),;數(shù)據(jù)調(diào)度,;DM642;DSP,;實(shí)時(shí),;優(yōu)化
?
??? 圖像旋轉(zhuǎn)是一種應(yīng)用廣泛的數(shù)字圖像處理技術(shù),隨著應(yīng)用水平的不斷提高,,對在嵌入式系統(tǒng)中實(shí)現(xiàn)高分辨率大圖像旋轉(zhuǎn)的需求也越來越高,。如在航空領(lǐng)域的高分辨率數(shù)字地圖圖像的顯示處理過程中,由于現(xiàn)有的顯示芯片均不能支持圖像旋轉(zhuǎn)功能,,就需要在資源有限的嵌入式平臺上實(shí)現(xiàn)大幅面地圖圖像的實(shí)時(shí)旋轉(zhuǎn),。采用DSP平臺是一種實(shí)現(xiàn)方式,具體實(shí)現(xiàn)時(shí)需仔細(xì)考慮兩個(gè)方面的問題,,一是選用計(jì)算量小的旋轉(zhuǎn)算法,,二是充分發(fā)揮DSP平臺強(qiáng)大的并行計(jì)算能力。
??? 目前,,已經(jīng)有很多有效降低計(jì)算量的圖像旋轉(zhuǎn)算法,,基于圖像線性存儲結(jié)構(gòu)" title="存儲結(jié)構(gòu)">存儲結(jié)構(gòu)的旋轉(zhuǎn)方法[1]就是其中之一。然而,,在DSP平臺上,,有限的高速存儲資源限制了這些算法效率的直接發(fā)揮,需要針對算法及DSP平臺的性能結(jié)構(gòu)特點(diǎn)進(jìn)行高效的數(shù)據(jù)調(diào)度,。對于圖像旋轉(zhuǎn)問題而言,,數(shù)據(jù)調(diào)度還需要克服由于存在大量非連續(xù)圖像像素地址訪問而嚴(yán)重影響DSP數(shù)據(jù)存取及CPU效率發(fā)揮的問題。這是圖像旋轉(zhuǎn)本身的特殊性,,在其他圖像處理技術(shù)中是不存在的,。本文主要討論如何利用TI公司TMS320DM642芯片的資源特點(diǎn),,進(jìn)行高效圖像旋轉(zhuǎn)的大規(guī)模數(shù)據(jù)調(diào)度,從而實(shí)現(xiàn)適用于大圖像的DSP實(shí)時(shí)圖像旋轉(zhuǎn),。
1 基于圖像線性存儲結(jié)構(gòu)的旋轉(zhuǎn)方法介紹
??? 目前,,圖像旋轉(zhuǎn)大多采用基于視口映射的處理。視口是指屏幕上的顯示區(qū)域范圍,,方法是先計(jì)算出旋轉(zhuǎn)后視口圖像像素在源圖像中的坐標(biāo)地址值,,再依據(jù)該地址在源圖像中對應(yīng)讀取像素值,最后利用讀取的像素值進(jìn)行插值,,得到最終旋轉(zhuǎn)后視口圖像,。實(shí)際上,由于存在對稱性,,一幅圖像任意角度的旋轉(zhuǎn)可分解為一次90°或180°或270°的旋轉(zhuǎn),,再加上一次±45°以內(nèi)的旋轉(zhuǎn)。
??? 傳統(tǒng)的圖像旋轉(zhuǎn)一般通過矩陣乘法實(shí)現(xiàn):
???
其中,,α為旋轉(zhuǎn)角度,。
??? 本文選用的張克黛[1]等人提出的基于圖像線性存儲結(jié)構(gòu)的旋轉(zhuǎn)方法是一種理論上運(yùn)算效率較高的方法。下面具體介紹,。
??? 由于圖像是線性存儲的,,各個(gè)像素點(diǎn)之間的相對位置關(guān)系確定。如圖1(a)所示,,圖像旋轉(zhuǎn)前,,任意像素點(diǎn)P(x,y)和P1(x1,,y1),、P2(x2,y2)及A(xA,,yA)在幾何上是矩形的四頂點(diǎn)關(guān)系,。由于旋轉(zhuǎn)變換是線性變換,如圖1(b)所示,,圖像旋轉(zhuǎn)后,,各個(gè)像素點(diǎn)之間的相對位置關(guān)系不發(fā)生變化,
???
?
???
?
??? 所以,,對圖像作旋轉(zhuǎn)變換,,只需對第一行和第一列的像素用式(1)作矩陣乘法運(yùn)算,對除第一行和第一列以外的像素,,用式(2)進(jìn)行簡單的加減運(yùn)算即可,。這樣避免了對整幅圖像的每個(gè)像素作矩陣乘法運(yùn)算,可節(jié)省5~6倍的CPU周期。
??? 另外,,對于旋轉(zhuǎn)計(jì)算后非整數(shù)像素地址的插值,,本文采用雙線性插值法,基本能夠滿足對圖像質(zhì)量的要求,。
2 圖像旋轉(zhuǎn)的DSP結(jié)構(gòu)優(yōu)化
2.1 TMS320DM642結(jié)構(gòu)特點(diǎn)
??? 該芯片的結(jié)構(gòu)如圖2所示,,它基于C64x內(nèi)核,采用TI的第二代高級超長指令字結(jié)構(gòu),,可在600MHz時(shí)鐘頻率下工作,,每個(gè)指令周期可并行8條32位指令,,可達(dá)到4 800MIPS的峰值計(jì)算速度,。DM642具有64個(gè)增強(qiáng)DMA(EDMA)通道,可進(jìn)行高效的一維及二維數(shù)據(jù)傳輸,,二維數(shù)據(jù)傳輸可用于一個(gè)矩形圖像數(shù)據(jù)塊的高速搬移,。
?
??? DM642的存儲空間由片內(nèi)和片外兩級存儲體系構(gòu)成,其中片內(nèi)存儲器" title="內(nèi)存儲器">內(nèi)存儲器又分為L1和L2兩層,。第一層L1為CPU Cache,,其訪問速度與CPU的速度相匹配,包括相互獨(dú)立的L1P(16KB)和L1D(16KB),;第二層L2(256KB)具有靈活的RAM/Cache分配,。片外存儲器具備32位的訪問地址,通過EDMA控制器和EMIF外部存儲器接口進(jìn)行數(shù)據(jù)訪問,。其中,,片內(nèi)存儲器和片外存儲器在訪問速度方面存在很大差異。
??? 此外,,作為多媒體處理專用芯片,,DM642具有用于視頻數(shù)據(jù)I/O的專用接口,易于實(shí)現(xiàn)視頻信號的顯示輸出,。
2.2 旋轉(zhuǎn)算法的結(jié)構(gòu)優(yōu)化
??? 針對DM642性能結(jié)構(gòu)特點(diǎn)的算法結(jié)構(gòu)優(yōu)化,,其目的是使上述大圖像旋轉(zhuǎn)快速算法的效率能夠在DSP平臺上得到充分發(fā)揮,其核心思想是合理優(yōu)化存儲空間分配和數(shù)據(jù)傳輸流,,使CPU能連續(xù)不斷地處理圖像數(shù)據(jù),,消除處理過程中的等待延遲。
??? 由DSP的結(jié)構(gòu)特點(diǎn)可知,,只有在數(shù)據(jù)和程序均位于片內(nèi)存儲器當(dāng)中的條件下,,DSP的效率才能得到最大化的發(fā)揮。在大圖像旋轉(zhuǎn)算法中,,由于涉及的圖像數(shù)據(jù)量遠(yuǎn)大于DSP的片內(nèi)存儲器容量,,源圖像和最終視口圖像等數(shù)據(jù)必須被存放在片外存儲器中。在這種情況下,,為了保證DSP CPU高速處理能力的發(fā)揮,,必須優(yōu)化數(shù)據(jù)流,,將源圖像分塊,依次搬移至片內(nèi)處理,,并設(shè)法保證CPU當(dāng)前要處理的圖像數(shù)據(jù)塊已經(jīng)事先在片內(nèi)存儲器中準(zhǔn)備好了,。因此在算法整體優(yōu)化結(jié)構(gòu)上采用Ping-Pong雙緩沖" title="雙緩沖">雙緩沖技術(shù),利用EDMA與CPU并行工作來隱藏圖像數(shù)據(jù)塊在片內(nèi)和片外之間的傳輸時(shí)間,,使CPU能連續(xù)不斷地處理數(shù)據(jù),,中間不會出現(xiàn)空閑等待。
??? Ping-Pong雙緩沖是一種同時(shí)利用兩個(gè)數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)傳輸技術(shù),,它將SRAM分成兩大塊,,一塊用于存儲源圖像塊,另一塊用于存儲旋轉(zhuǎn)后的圖像塊,;每一個(gè)存儲塊又分為兩個(gè)區(qū)(Ping區(qū)和Pong區(qū)),,輪流用于圖像塊傳輸和處理。其具體并行工作流程如圖3所示,。
?
?
圖3 Ping-Pong雙緩沖處理技術(shù)
??? 至于如何在Ping-Pong雙緩沖數(shù)據(jù)傳輸機(jī)制中設(shè)計(jì)和安排傳輸?shù)膱D像數(shù)據(jù)塊,,則必須考慮針對圖像旋轉(zhuǎn)本身的特點(diǎn),設(shè)計(jì)出具體的適用于旋轉(zhuǎn)算法的DSP數(shù)據(jù)調(diào)度策略,。
3 旋轉(zhuǎn)算法的DSP數(shù)據(jù)調(diào)度策略
??? 旋轉(zhuǎn)算法的數(shù)據(jù)調(diào)度目的是使算法能夠按照一定的規(guī)則,,將源圖像數(shù)據(jù)有規(guī)律地分塊,并按次序分別傳輸?shù)紻SP片內(nèi)存儲器中,,完成計(jì)算后,,形成視口圖像塊,再將視口圖像塊按同樣的順序進(jìn)行排列,,形成旋轉(zhuǎn)后的視口圖像,。整個(gè)過程要求調(diào)入和調(diào)出的圖像數(shù)據(jù)均是規(guī)則分塊的,并且調(diào)入的源圖像塊中應(yīng)該包含計(jì)算視口圖像塊的過程中所需要的全部像素?cái)?shù)據(jù),,尤其需要解決其中的大量非連續(xù)圖像像素地址訪問問題,,這樣才能正確地發(fā)揮DSP EDMA和Ping-Pong雙緩沖技術(shù)的性能。
3.1 非連續(xù)像素地址訪問
??? Ping-Pong雙緩沖數(shù)據(jù)傳輸機(jī)制中圖像數(shù)據(jù)塊在片內(nèi),、片外存儲空間的傳輸,,主要依靠EDMA設(shè)置,在后臺進(jìn)行二維數(shù)據(jù)傳輸,。Ping-Pong雙緩沖數(shù)據(jù)傳輸機(jī)制下的EDMA的數(shù)據(jù)傳輸要求待傳輸?shù)膱D像塊具有統(tǒng)一的規(guī)律,,即每次旋轉(zhuǎn)的圖像數(shù)據(jù)的傳輸過程不應(yīng)該因旋轉(zhuǎn)角度的變化而改變。
??? 但是,,旋轉(zhuǎn)后的視口圖像像素的地址排列與其在源圖像中的不同,,不再具有連續(xù)的地址變化特征,并且視口圖像的像素地址在源圖像中的排列關(guān)系隨旋轉(zhuǎn)角度的變化而變化,沒有固定的規(guī)律,,給Ping-Pong雙緩沖數(shù)據(jù)傳輸機(jī)制下的EDMA的數(shù)據(jù)傳輸操作帶來很大困難,,從而導(dǎo)致對源圖像塊的大量非連續(xù)像素地址訪問的問題。該問題是圖像旋轉(zhuǎn)本身所特有的,,如果得不到很好解決,,Ping-Pong雙緩沖數(shù)據(jù)傳輸機(jī)制就無法發(fā)揮作用,旋轉(zhuǎn)算法的實(shí)際DSP執(zhí)行效率也就得不到真正的提高,。因此,,實(shí)現(xiàn)滿足調(diào)入/調(diào)出圖像塊關(guān)系的數(shù)據(jù)調(diào)度就成為實(shí)現(xiàn)高效圖像旋轉(zhuǎn)的關(guān)鍵。
3.2 旋轉(zhuǎn)算法的DSP數(shù)據(jù)調(diào)度策略
??? 本文提出的基于視口圖像塊覆蓋的源圖像數(shù)據(jù)分塊及其調(diào)度策略的思想是實(shí)現(xiàn)源圖像及視口圖像按塊處理,,源圖像塊的范圍覆蓋視口圖像塊,,且易于在源圖像塊內(nèi)進(jìn)行像素?cái)?shù)據(jù)訪問尋址,使源圖像塊內(nèi)像素地址變化具有連續(xù)的特征,,以充分發(fā)揮出DSP EDMA的效率,,并滿足Ping-Pong數(shù)據(jù)流程的規(guī)律性,。旋轉(zhuǎn)算法DSP數(shù)據(jù)調(diào)度策略示意圖分別如圖4和圖5所示,,其要點(diǎn)如下(以視口順時(shí)針旋轉(zhuǎn)為例):
??? (1)視口輸出圖像分塊
??? 如圖4(a)所示,將視口圖像分成矩形塊,,作為每次旋轉(zhuǎn)運(yùn)算的基本單位,,圖像塊之間依次排列。
??? (2)源圖像塊的取法
??? 如圖4(b)所示,,每個(gè)源圖像塊對應(yīng)一個(gè)視口圖像塊,,源圖像塊的尺寸取為視口圖像塊尺寸的4倍(如視口塊尺寸為20×20像素,則源圖像塊就取為40×40像素),,且源圖像塊的上邊框中點(diǎn)與相應(yīng)的視口圖像塊旋轉(zhuǎn)后的左上角頂點(diǎn)對應(yīng),,這樣可保證順時(shí)針旋轉(zhuǎn)角度在0°~90°之間的任意情況下,源圖像塊始終覆蓋其對應(yīng)的旋轉(zhuǎn)后的視口圖像塊,。
?
?
??? (3)兩圖像塊頂點(diǎn)地址對應(yīng)關(guān)系
??? 設(shè)第N個(gè)源圖像塊為fN(x,,y),旋轉(zhuǎn)后的視口圖像塊為f′N(x,,y),,則源圖像塊的頂點(diǎn)局部坐標(biāo)地址值與旋轉(zhuǎn)后視口圖像塊的頂點(diǎn)局部坐標(biāo)地址值之間的對應(yīng)關(guān)系為:
???
其中width指源圖像塊的寬度。
??? 視口逆時(shí)針旋轉(zhuǎn)的情況與此類似(如圖5所示),。區(qū)別有以下兩點(diǎn):
??? ①源圖像塊的左邊框中點(diǎn)與相應(yīng)的視口圖像塊旋轉(zhuǎn)后的左上角頂點(diǎn)對應(yīng),;
??? ②源圖像塊的頂點(diǎn)局部坐標(biāo)地址值與視口圖像塊的頂點(diǎn)局部坐標(biāo)地址值之間的對應(yīng)關(guān)系式應(yīng)為:
???
其中height指源圖像塊的高度。
??? (4)圖像塊的調(diào)度
??? 由式(3)或式(4)計(jì)算出將要從源圖像中取出的對應(yīng)規(guī)則圖像塊的左上角頂點(diǎn)坐標(biāo)(即源圖像塊的起始地址),,然后用EDMA的二維數(shù)據(jù)傳輸將其調(diào)入片內(nèi)L2 SRAM中,。可以看出,源圖像塊不再隨旋轉(zhuǎn)角度的變化而傾斜,,其內(nèi)部像素的排列存在固定規(guī)律,,像素地址具有連續(xù)變化的特征,故可使Ping-Pong雙緩沖數(shù)據(jù)傳輸機(jī)制下的EDMA二維數(shù)據(jù)傳輸順利進(jìn)行,。
??? 這種基于視口圖像塊覆蓋的旋轉(zhuǎn)算法DSP數(shù)據(jù)調(diào)度策略有效地解決了圖像旋轉(zhuǎn)中大量非連續(xù)像素地址訪問的問題,,體現(xiàn)了空間換時(shí)間的思想,通過充分利用EDMA的高效數(shù)據(jù)傳輸,,保證了整個(gè)旋轉(zhuǎn)處理的高速運(yùn)算節(jié)奏,。
4 實(shí)驗(yàn)及其結(jié)果
??? 實(shí)驗(yàn)采用自行研制的高分辨率圖像處理平臺,以TMS320DM642芯片為主處理芯片,,時(shí)鐘為600MHz,,片外為64MB SDRAM。實(shí)驗(yàn)中源圖像通過調(diào)試JTAG口輸入,,旋轉(zhuǎn)后的視口圖像結(jié)果從VPORT口經(jīng)D/A轉(zhuǎn)換后,,以VGA信號輸出。實(shí)驗(yàn)分別實(shí)現(xiàn)兩種尺寸(400×400像素和1024×768像素)的視口圖像旋轉(zhuǎn),,相應(yīng)的源圖像數(shù)據(jù)分別為1024×768像素和1920×1920像素的BMP格式的數(shù)字地圖圖像,,采用0.005弧度旋轉(zhuǎn)角度遞增間隔,對分別采用式(1)的傳統(tǒng)像素逐點(diǎn)矩陣相乘方法,、基于圖像線性存儲結(jié)構(gòu)方法以及基于本文數(shù)據(jù)調(diào)度策略的結(jié)構(gòu)優(yōu)化的線性存儲結(jié)構(gòu)方法三種實(shí)現(xiàn)方式進(jìn)行對比,,分別統(tǒng)計(jì)其平均每幀運(yùn)行時(shí)間并轉(zhuǎn)換成幀率,其結(jié)果如表1所示,。
?
??? 從實(shí)驗(yàn)結(jié)果可以看出,,基于圖像線性存儲結(jié)構(gòu)的旋轉(zhuǎn)算法比傳統(tǒng)的逐點(diǎn)相乘法的確在運(yùn)算量上有了大幅度削減,因而有效地提高了旋轉(zhuǎn)速度,,但其仍然滿足不了實(shí)際大圖像旋轉(zhuǎn)的實(shí)時(shí)性要求,。通過采用本文提出的數(shù)據(jù)調(diào)度策略對算法結(jié)構(gòu)及數(shù)據(jù)調(diào)度進(jìn)行優(yōu)化后,算法的DSP執(zhí)行效率得到了顯著提高,,可以滿足對DSP大圖像旋轉(zhuǎn)的實(shí)時(shí)性要求,。
??? 本文結(jié)合TMS320DM642的性能結(jié)構(gòu)特點(diǎn),針對圖像旋轉(zhuǎn)算法在DSP平臺上具體實(shí)現(xiàn)過程中存在的嚴(yán)重影響DSP CPU效率發(fā)揮的大量非連續(xù)圖像像素地址訪問的問題,提出了切實(shí)有效的基于視口圖像塊覆蓋的DSP數(shù)據(jù)調(diào)度策略;對算法的結(jié)構(gòu)流程,、數(shù)據(jù)調(diào)度等進(jìn)行了優(yōu)化調(diào)整,,并在此基礎(chǔ)上,在TI TMS320DM642 DSP上實(shí)現(xiàn)了一種實(shí)時(shí)高質(zhì)量大圖像旋轉(zhuǎn)方案,。實(shí)驗(yàn)表明,,本文提出的適用于圖像旋轉(zhuǎn)算法的DSP數(shù)據(jù)調(diào)度策略,保證了DSP大圖像旋轉(zhuǎn)的實(shí)時(shí)性,,達(dá)到了實(shí)用性要求,。
參考文獻(xiàn)
[1] 張克黛,,李智.圖像旋轉(zhuǎn)的快速實(shí)現(xiàn)方法研究[J].指揮技術(shù)學(xué)院學(xué)報(bào),1999,,(10)2:29-32.
[2] 胡慧之,,紀(jì)太成.DSP視頻處理系統(tǒng)的數(shù)據(jù)傳輸優(yōu)化設(shè)計(jì)[J].泰州職業(yè)技術(shù)學(xué)院學(xué)報(bào),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的圖像數(shù)據(jù)傳輸優(yōu)化[J].電視技術(shù),2005,(278):66-72.
[5] 李方慧,,王飛,,何佩琨.TMS320C6000系列DSPs原理與應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2003.