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