<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于DSP的圖像旋轉(zhuǎn)算法數(shù)據(jù)調(diào)度策略

          基于DSP的圖像旋轉(zhuǎn)算法數(shù)據(jù)調(diào)度策略

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

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

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

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


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

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


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


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

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

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

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


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



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();