《數(shù)字圖像處理在DSP上的實現(xiàn)》由會員分享,可在線閱讀,更多相關《數(shù)字圖像處理在DSP上的實現(xiàn)(9頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、信息與電氣工程學院DSP 應用系統(tǒng)(三級)項目應用系統(tǒng)(三級)項目設計說明書設計說明書(2013/2014 學年第二學期)題 目 : DSP 實現(xiàn)圖像旋轉(zhuǎn) 專業(yè)班級 : 信息 1102 班 學 號 : 學生姓名 : 指導教師 : 設計周數(shù) : 設計成績 : 2015 年 3 月 11 日目目 錄錄1 1、設計任務及目的. 1 1 1.1 設計任務. 11.2 設計目的.22 2、設計原理. 3 33 3、軟件程序. 4 43.1 主程序. 5 3.2 初始化和讀取圖像程序.63.3 命令文件.74 4、運行并觀察結(jié)果 .8.8結(jié) 論.8 8參考文獻.9 9 - 1 -基于 DSP 的圖像旋轉(zhuǎn)1
2、 1 設計任務及目的設計任務及目的1.11.1 設計任務設計任務(1)實現(xiàn)一路模擬視頻信號的采集與顯示。(2)實現(xiàn)單幀圖像的旋轉(zhuǎn)(90) 。(3)圖像采用 120*96 點像素,由 SDRAM 中的 722*288 存儲圖像采樣生成。(4)能從計算機上讀取圖片。(5)編寫圖像旋轉(zhuǎn)程序,在 TMS320C5509 上實現(xiàn)。1.21.2 設計目的設計目的圖像旋轉(zhuǎn)是一種應用廣泛的數(shù)字圖像處理技術,隨著應用水平的不斷提高,對在嵌入式系統(tǒng)中實現(xiàn)高分辨率大圖像旋轉(zhuǎn)的需求也越來越高。如在航空領域的高分辨率數(shù)字地圖圖像的顯示處理過程中,由于現(xiàn)有的顯示芯片均不能支持圖像旋轉(zhuǎn)功能,就需要在資源有限的嵌入式平臺上實
3、現(xiàn)大幅面地圖圖像的實時旋轉(zhuǎn)。采用 DSP 平臺是一種實現(xiàn)方式,具體實現(xiàn)時需仔細考慮兩個方面的問題,一是選用計算量小的旋轉(zhuǎn)算法,二是充分發(fā)揮 DSP 平臺強大的并行計算能力。2 2 設計原理設計原理目前,圖像旋轉(zhuǎn)大多采用基于視口映射的處理。視口是指屏幕上的顯示區(qū)域范圍,方法是先計算出旋轉(zhuǎn)后視口圖像像素在源圖像中的坐標地址值,再依據(jù)該地址在源圖像中對應讀取像素值,最后利用讀取的像素值進行插值,得到最終旋轉(zhuǎn)后視口圖像。實際上,由于存在對稱性,一幅圖像任意角度的旋轉(zhuǎn)可分解為一次 90或 180或 270的旋轉(zhuǎn),再加上一次45以內(nèi)的旋轉(zhuǎn)。傳統(tǒng)的圖像旋轉(zhuǎn)一般通過矩陣乘法實現(xiàn): - 2 -其中, 為旋轉(zhuǎn)角度
4、。由于圖像是線性存儲的,各個像素點之間的相對位置關系確定。如圖 1(a)所示,圖像旋轉(zhuǎn)前,任意像素點 P(x,y)和 P1(x1,y1)、P2(x2,y2)及 A(xA,yA)在幾何上是矩形的四頂點關系。由于旋轉(zhuǎn)變換是線性變換,如圖 1(b)所示,圖像旋轉(zhuǎn)后,各個像素點之間的相對位置關系不發(fā)生變化。所以,對圖像作旋轉(zhuǎn)變換,只需對第一行和第一列的像素用式(1)作矩陣乘法運算,對除第一行和第一列以外的像素,用式(2)進行簡單的加減運算即可。這樣避免了對整幅圖像的每個像素作矩陣乘法運算,可節(jié)省 56 倍的 CPU 周期。由 DSP 的結(jié)構(gòu)特點可知,只有在數(shù)據(jù)和程序均位于片內(nèi)存儲器當中的條件下,DSP
5、 的效率才能得到最大化的發(fā)揮。在大圖像旋轉(zhuǎn)算法中,由于涉及的圖像數(shù)據(jù)量遠大于 DSP 的片內(nèi)存儲器容量,源圖像和最終視口圖像等數(shù)據(jù)必須被存放在片外存儲器中。在這種情況下,為了保證 DSP CPU 高速處理能力的發(fā)揮,必須優(yōu)化數(shù)據(jù)流,將源圖像分塊,依次搬移至片內(nèi)處理,并設法保證 CPU 當前要處理的圖像數(shù)據(jù)塊已經(jīng)事先在片內(nèi)存儲器中準備好了。因此在算法整體優(yōu)化結(jié)構(gòu)上采用 Ping-Pong 雙緩沖技術,利用 EDMA 與 CPU 并行工作來隱藏圖像數(shù)據(jù)塊在片內(nèi)和片外之間的傳輸時間,使 CPU 能連續(xù)不斷地處理數(shù)據(jù),中間不會出現(xiàn)空閑等待。旋轉(zhuǎn)算法的數(shù)據(jù)調(diào)度目的是使算法能夠按照一定的規(guī)則,將源圖像數(shù)據(jù)
6、有規(guī)律地分塊,并按次序分別傳輸?shù)?DSP 片內(nèi)存儲器中,完成計算后,形成視口圖像塊,再將視口圖像塊按同樣的順序進行排列,形成旋轉(zhuǎn)后的視口圖像。整個過程要求調(diào)入和調(diào)出的圖像數(shù)據(jù)均是規(guī)則分塊的,并且調(diào)入的源圖像塊中應該包含計算視口圖像塊的過程中所需要的全部像素數(shù)據(jù),尤其需要解決其中的大量非連續(xù)圖像像素地址訪問問題。設第 N 個源圖像塊為 fN(x,y),旋轉(zhuǎn)后的視口圖像塊為 fN(x,y),則源圖像塊的頂點局部坐標地址值與旋轉(zhuǎn)后視口圖像塊的頂點局部坐標地址值之間的對應關系為:其中 width 指源圖像塊的寬度。視口逆時針旋轉(zhuǎn)的情況與此類似(如圖 5 所示)。區(qū)別有以下兩點:源圖像塊的左邊框中點與相
7、應的視口圖像塊旋轉(zhuǎn)后的左上角頂點對應;- 3 -源圖像塊的頂點局部坐標地址值與視口圖像塊的頂點局部坐標地址值之間的對應關系式應為:hj+i*IMGHEIGHT=yi+(IMGHEIGHT-j)*120其中 imgheight 指源圖像塊的高度。3 3 軟件程序軟件程序3.13.1 初始化和讀取圖像程序初始化和讀取圖像程序#include#define MODEPHOTO1 1#define MODEPHOTO2 2#define GRAYBARLEVEL 16void ReadImage(unsigned char*pImage,char*cFileName,int nWidth,int nH
8、eight);void InitImage(unsigned int nMode,unsigned char*pImage,int nWidth,int nHeight) switch(nMode) case MODEPHOTO1: Readimage(pImage,.DSP.bmp,nWidth,nHeight); break; case MODEPHOTO2: ReadImage(pImage,.1.bmp,nWidth,nHeight); break; default: break; void ReadImage(unsigned char*cFileName,int nWidth,in
9、t nHeight) int j;- 4 - unsigned char*pWork; FILE*fp; if(fp=fopen(cFileName,rb) fseek(fp,1078L,SEEK_SET); pWork=pImage+(nHeight-1)*nWidth; for(j=0;jnHeight;j+,pWork-=nWidth) fread(pWork,nWidth,1,fp); fclose(fp); 3.23.2 圖像旋轉(zhuǎn)程序圖像旋轉(zhuǎn)程序 void change(void); /轉(zhuǎn)換 90void change()int i,j;for(i=0;iIMGWIDTH;i+ )f
10、or(j=0;j IRAM fill=0 .stack IRAM fill=0- 5 - .bss IRAM fill=0 .cinit IRAM fill=0 .const IRAM fill=0 .data IRAM fill=0 .far IRAM fill=0 .switch IRAM fill=0 .sysmem IRAM fill=0 .tables IRAM fill=0 .cio IRAM fill=04 4 運行并觀察結(jié)果運行并觀察結(jié)果圖 1 原圖圖 2 順時針旋轉(zhuǎn) 90 度- 6 -圖 3 對比圖從實驗結(jié)果可以看出,本程序的算法實現(xiàn)了圖像的順時針旋轉(zhuǎn) 90 度。 總結(jié)總結(jié)兩
11、周的三級項目已經(jīng)結(jié)束了,回想起來還真是感受頗深。剛開始拿到題目覺得應該挺簡單的,但真正面對試驗箱的時候覺得無從下手。后來在王老師的講解下,有了一個大體的框架,來來回回重啟過電腦和試驗箱數(shù)次,最終出現(xiàn)了旋轉(zhuǎn)的效果。我是和我們組的成員一起探索中得到了旋轉(zhuǎn)圖像。完成之后,我覺得這次項目設計不僅是一個擴大自己知識面,鍛煉動手能力的機會,而且也明白了與人合作的極大效果。DSP 是理論界一直探討的熱門話題,在此,我特別要感謝我的組員和王老師。在你們的幫助下,從圖像的采集、初始化、抽樣直到旋轉(zhuǎn)才一步步順利完成,其中也出了好多小問題,但我們都是不放棄,堅持去讀代碼,改代碼,直到最終的結(jié)果。 參考文獻參考文獻1姜陽,周錫青 DSP 原理與實驗應用 西安:西安電子科技大學出版社.2008 年 9 月2方華剛. DSP 原理與應用. 北京:機械工業(yè)出版社,2006 年 1 月3張勇. C/C+語言硬件程序設計基于 TMS320C5000 系列 DSP. 西安:西安電子科技大學出版社. 2003 年 5 月4朱虹. 數(shù)字圖像處理. 北京:科學出版社. 2008 年 5 月- 7 -項目設計評 語項目設計成 績指導教師(簽字) 年 月 日