<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于DSP的圖像旋轉算法數據調度策略

基于DSP的圖像旋轉算法數據調度策略

作者: 時(shí)間:2008-08-14 來(lái)源:網(wǎng)絡(luò ) 收藏
是一種應用廣泛的數字處理技術(shù),隨著(zhù)應用水平的不斷提高,對在嵌入式系統中實(shí)現高分辨率大的需求也越來(lái)越高。如在航空領(lǐng)域的高分辨率數字地圖圖像的顯示處理過(guò)程中,由于現有的顯示芯片均不能支持圖像功能,就需要在資源有限的嵌入式平臺上實(shí)現大幅面地圖圖像的實(shí)時(shí)旋轉。采用平臺是一種實(shí)現方式,具體實(shí)現時(shí)需仔細考慮兩個(gè)方面的問(wèn)題,一是選用計算量小的旋轉,二是充分發(fā)揮平臺強大的并行計算能力。
目前,已經(jīng)有很多有效降低計算量的圖像旋轉,圖像線(xiàn)性存儲結構的旋轉方法[1]就是其中之一。然而,在平臺上,有限的高速存儲資源限制了這些效率的直接發(fā)揮,需要針對算法及DSP平臺的性能結構特點(diǎn)進(jìn)行高效的。對于圖像旋轉問(wèn)題而言,還需要克服由于存在大量非連續圖像像素地址訪(fǎng)問(wèn)而嚴重影響DSP存取及CPU效率發(fā)揮的問(wèn)題。這是圖像旋轉本身的特殊性,在其他圖像處理技術(shù)中是不存在的。本文主要討論如何利用TI公司TMS320DM642芯片的資源特點(diǎn),進(jìn)行高效圖像旋轉的大規模數據,從而實(shí)現適用于大圖像的DSP實(shí)時(shí)圖像旋轉。
1 圖像線(xiàn)性存儲結構的旋轉方法介紹
目前,圖像旋轉大多采用視口映射的處理。視口是指屏幕上的顯示區域范圍,方法是先計算出旋轉后視口圖像像素在源圖像中的坐標地址值,再依據該地址在源圖像中對應讀取像素值,最后利用讀取的像素值進(jìn)行插值,得到最終旋轉后視口圖像。實(shí)際上,由于存在對稱(chēng)性,一幅圖像任意角度的旋轉可分解為一次90或180或270的旋轉,再加上一次45以?xún)鹊男D。
傳統的圖像旋轉一般通過(guò)矩陣乘法實(shí)現:

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

所以,對圖像作旋轉變換,只需對第一行和第一列的像素用式(1)作矩陣乘法運算,對除第一行和第一列以外的像素,用式(2)進(jìn)行簡(jiǎn)單的加減運算即可。這樣避免了對整幅圖像的每個(gè)像素作矩陣乘法運算,可節省5~6倍的CPU周期。
另外,對于旋轉計算后非整數像素地址的插值,本文采用雙線(xiàn)性插值法,基本能夠滿(mǎn)足對圖像質(zhì)量的要求。
2 圖像旋轉的DSP結構優(yōu)化
2.1 TMS320DM642結構特點(diǎn)

該芯片的結構如圖2所示,它基于C64x內核,采用TI的第二代高級超長(cháng)指令字結構,可在600MHz時(shí)鐘頻率下工作,每個(gè)指令周期可并行8條32位指令,可達到4 800MIPS的峰值計算速度。DM642具有64個(gè)增強DMA(EDMA)通道,可進(jìn)行高效的一維及二維數據傳輸,二維數據傳輸可用于一個(gè)矩形圖像數據塊的高速搬移。


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

圖3 Ping-Pong雙緩沖處理技術(shù)


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


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

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

其中height指源圖像塊的高度。

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


從實(shí)驗結果可以看出,基于圖像線(xiàn)性存儲結構的旋轉算法比傳統的逐點(diǎn)相乘法的確在運算量上有了大幅度削減,因而有效地提高了旋轉速度,但其仍然滿(mǎn)足不了實(shí)際大圖像旋轉的實(shí)時(shí)性要求。通過(guò)采用本文提出的數據調度策略對算法結構及數據調度進(jìn)行優(yōu)化后,算法的DSP執行效率得到了顯著(zhù)提高,可以滿(mǎn)足對DSP大圖像旋轉的實(shí)時(shí)性要求。
本文結合TMS320DM642的性能結構特點(diǎn),針對圖像旋轉算法在DSP平臺上具體實(shí)現過(guò)程中存在的嚴重影響DSP CPU效率發(fā)揮的大量非連續圖像像素地址訪(fǎng)問(wèn)的問(wèn)題,提出了切實(shí)有效的基于視口圖像塊覆蓋的DSP數據調度策略;對算法的結構流程、數據調度等進(jìn)行了優(yōu)化調整,并在此基礎上,在TI TMS320DM642 DSP上實(shí)現了一種實(shí)時(shí)高質(zhì)量大圖像旋轉方案。實(shí)驗表明,本文提出的適用于圖像旋轉算法的DSP數據調度策略,保證了DSP大圖像旋轉的實(shí)時(shí)性,達到了實(shí)用性要求。
參考文獻
[1] 張克黛,李智.圖像旋轉的快速實(shí)現方法研究[J].指揮技術(shù)學(xué)院學(xué)報,1999,(10)2:29-32.
[2] 胡慧之,紀太成.DSP視頻處理系統的數據傳輸優(yōu)化設計[J].泰州職業(yè)技術(shù)學(xué)院學(xué)報,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的圖像數據傳輸優(yōu)化[J].電視技術(shù),2005,(278):66-72.
[5] 李方慧,王飛,何佩琨.TMS320C6000系列DSPs原理與應用(第2版)[M].北京:電子工業(yè)出版社,2003.



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>