圖像二維整數(shù)離散余弦變換(DCT)的DSP程序設(shè)計(jì)與實(shí)現(xiàn) 2 - 副本_第1頁(yè)
圖像二維整數(shù)離散余弦變換(DCT)的DSP程序設(shè)計(jì)與實(shí)現(xiàn) 2 - 副本_第2頁(yè)
圖像二維整數(shù)離散余弦變換(DCT)的DSP程序設(shè)計(jì)與實(shí)現(xiàn) 2 - 副本_第3頁(yè)
圖像二維整數(shù)離散余弦變換(DCT)的DSP程序設(shè)計(jì)與實(shí)現(xiàn) 2 - 副本_第4頁(yè)
圖像二維整數(shù)離散余弦變換(DCT)的DSP程序設(shè)計(jì)與實(shí)現(xiàn) 2 - 副本_第5頁(yè)
已閱讀5頁(yè),還剩12頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目 錄一、 實(shí)習(xí)題目:1二、實(shí)習(xí)目的1三、實(shí)習(xí)任務(wù)與要求:1四、系統(tǒng)原理論述1五、DCT變換流程圖. 4七、仿真調(diào)試及性能分析與實(shí)驗(yàn)5九、實(shí)習(xí)總結(jié)6十、 參考文獻(xiàn):7附錄一:81、 實(shí)習(xí)題目: 圖像二維整數(shù)離散余弦變換(DCT)的DSP程序設(shè)計(jì)與實(shí)現(xiàn)二、實(shí)習(xí)目的1、 熟悉和掌握DCT設(shè)計(jì)方法跟步驟。2、 通過(guò)仿真驗(yàn)證實(shí)現(xiàn)DCT的DSP程序的正確性。3、 掌握專業(yè)實(shí)驗(yàn)中常用的儀器設(shè)備和開(kāi)發(fā)工具。4、 通過(guò)一周的設(shè)計(jì)實(shí)踐培養(yǎng)學(xué)生綜合利用所學(xué)知識(shí)編寫(xiě)DSP程序的 能力,為今后的工作學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。5、 掌握用DSP程序?qū)崿F(xiàn)DCT的原理和方法。6、 熟悉DCT原理。三、實(shí)習(xí)任務(wù)與要求:(1) 利用

2、C語(yǔ)言或匯編語(yǔ)言編寫(xiě)一個(gè)實(shí)現(xiàn)DCT的DSP程序(2) 仿真運(yùn)行(3) 查看分析結(jié)果,記錄必要參數(shù)四、系統(tǒng)原理論述1、概念  離散余弦變換(Discrete Cosine Transform,簡(jiǎn)稱DCT變換)是一種與傅立葉變換緊密相關(guān)的數(shù)學(xué)運(yùn)算。在傅立葉級(jí)數(shù)展開(kāi)式中,如果被展開(kāi)的函數(shù)是實(shí)偶函數(shù),那么其傅立葉級(jí)數(shù)中只包含余弦項(xiàng),再將其離散化可導(dǎo)出余弦變換,因此稱之為離散余弦變換。對(duì)于給定的實(shí)際數(shù)據(jù)序列x(0),X(1) ,x(2). X( N-1 )的DCT(FDCT)算法如下:(1)其中:(2)二維離散余弦變換(FDCT):(3) 其逆運(yùn)算是:(4)其中 N= 8 為 8x8 DCT.

3、2、離散余弦變換用于圖像處理:  圖像數(shù)據(jù)一般有較強(qiáng)的相關(guān)性,若所選用的正交矢量空間的基矢量與圖像本身的主要特征相近,在該正交矢量空間中描述圖像數(shù)據(jù)則會(huì)變得更簡(jiǎn)單。  經(jīng)過(guò)正交變換,會(huì)把原來(lái)分散在原空間的圖像數(shù)據(jù)在新的坐標(biāo)空間中得到集中。對(duì)于大多數(shù)圖像,大量變換系數(shù)很小,只要?jiǎng)h除接近于零的系數(shù),并且對(duì)較小的系數(shù)進(jìn)行粗量化,而保留包含圖像主要信息的系數(shù),以此進(jìn)行壓縮編碼。  在重建圖像進(jìn)行解碼時(shí),所損失的將是一些不重要的信息,幾乎不會(huì)引起圖像的失真。 在變換編碼中,首先要將圖像數(shù)據(jù)分割成子圖像,然后對(duì)子圖像數(shù)據(jù)塊實(shí)施某種變換,如DCT變

4、換,那么子圖像尺寸取多少好呢?根據(jù)實(shí)踐證明子圖像尺寸取4×4、8×8、16×16適合作圖像的壓縮,這是因?yàn)椋?#160; 如果子圖像尺寸取得太小,雖然計(jì)算速度快,實(shí)現(xiàn)簡(jiǎn)單,但壓縮能力有一定的限制。  如果子圖像尺寸取得太大,雖然去相關(guān)效果變好,因?yàn)橄驞FT、DCT等正弦型變換均具有漸近最佳性,但也漸趨飽和。若尺寸太大,由于圖像本身的相關(guān)性很小,反而使其壓縮效果不顯示,而且增加了計(jì)算的復(fù)雜性。  離散余弦變換(Discrete Cosine Tranform,簡(jiǎn)稱DCT)是一種與傅立葉變換緊密相關(guān)的數(shù)學(xué)運(yùn)算。在傅立葉級(jí)數(shù)展開(kāi)式

5、中,如果被展開(kāi)的函數(shù)式是偶函數(shù),那么其傅立葉級(jí)數(shù)中只包含余弦項(xiàng),再將其離散化可導(dǎo)出余弦變換,因此稱之為離散余弦變換。時(shí)間域中信號(hào)需要許多數(shù)據(jù)點(diǎn)表示;在x軸表示時(shí)間,在y軸表示幅度。信號(hào)一旦用傅立葉變換轉(zhuǎn)換到頻率域,就只需要幾點(diǎn)就可以表示這個(gè)相同的信號(hào)。如我們已經(jīng)看到的那樣,原因就是信號(hào)只含有少量的頻率成分。這允許在頻率域中只用幾個(gè)數(shù)據(jù)點(diǎn)就可以表示信號(hào),而在時(shí)間域中表示則需要大量數(shù)據(jù)點(diǎn)。  這一技術(shù)可以應(yīng)用到彩色圖像上。彩色圖像有像素組成,這些像素具有RGB彩色值。每個(gè)像素都帶有x,y坐標(biāo),對(duì)每種原色使用8x8或者16x16矩陣。在灰度圖像中像素具有灰度值,它的x,y坐標(biāo)由灰色的幅度組

6、成。為了在JPEG中壓縮灰度圖像,每個(gè)像素被翻譯為亮度或灰度值。為了壓縮RGB彩色圖像,這項(xiàng)工作必須進(jìn)行三遍,因?yàn)镴PEG分別得處理每個(gè)顏色成分,R成分第一個(gè)被壓縮,然后是G成分,最后是B成分。而一個(gè)8x8矩陣的64個(gè)值,每個(gè)值都帶有各自的x,y坐標(biāo),這樣我們就有了一個(gè)像素的三維表示法,稱作控件表達(dá)式或空間域。通過(guò)DCT變換,空間表達(dá)式就轉(zhuǎn)化為頻譜表達(dá)式或頻率域。從而到達(dá)了數(shù)據(jù)壓縮的目的。 3、量化   量化過(guò)程實(shí)際上就是對(duì) DCT 系數(shù)的一個(gè)優(yōu)化過(guò)程。它是利用了人眼對(duì)高頻部分不敏感的特性來(lái)實(shí)現(xiàn)數(shù)據(jù)的大幅簡(jiǎn)化。   

7、;量化過(guò)程實(shí)際上是簡(jiǎn)單地把頻率領(lǐng)域上每個(gè)成份,除以一個(gè)對(duì)于該成份的常數(shù),且接著四舍五入取最接近的整數(shù)。 這是整個(gè)過(guò)程中的主要有損運(yùn)算。以這個(gè)結(jié)果來(lái)說(shuō),經(jīng)常會(huì)把很多高頻率的成份四舍五入而接近0,且剩下很多會(huì)變成小的正或負(fù)數(shù)。   整個(gè)量化的目的是減小非“0”系數(shù)的幅度以及增加“0”值系數(shù)的數(shù)目。量化是圖像質(zhì)量下降的最主要原因。  因?yàn)槿搜蹖?duì)亮度信號(hào)比對(duì)色差信號(hào)更敏感,因此使用了表1表2兩種量化表:亮度量化值和色差量化值。   表1 JPEG亮度量化表 表2 JPEG色度量化表五、DCT變換流程圖基于DCT的圖像壓縮編碼的程序?qū)?/p>

8、現(xiàn)的流程圖如圖1所示:開(kāi)始輸入圖片分成8*8像素塊進(jìn)行DCT變換輸入量化表對(duì)比系數(shù)進(jìn)行量化對(duì)量化系數(shù)進(jìn)行掃描選擇一幅圖對(duì)其進(jìn)行不同的壓縮比變換反量化反DCT變換顯示所選圖像信噪比結(jié)束 圖2 DCT變換流程圖 六、仿真調(diào)試及性能分析與實(shí)驗(yàn) 打開(kāi)電源,運(yùn)行編譯軟件,打開(kāi)項(xiàng)目文件,編譯運(yùn)行并下載。亮度量化輸出結(jié)果如下圖: 圖3 量化及逆量化結(jié)果圖 圖4 DCT變換前后數(shù)據(jù)圖 圖5 IDCT變換數(shù)據(jù)圖 色度量化結(jié)果如下圖6、圖7: 圖6 DCT變換前后數(shù)據(jù)圖 圖7 量化逆量化及IDCT變換圖七、實(shí)習(xí)結(jié)論 本次實(shí)習(xí)通過(guò)編制DSP程序?qū)崿F(xiàn)離散余弦變換,仿真出了輸入和輸出特性曲線。很好的實(shí)現(xiàn)了DCT,以及F

9、DCT。八、實(shí)習(xí)總結(jié) 在本周的實(shí)習(xí)中,我通過(guò)不斷的查找資料和反復(fù)研究與課題有關(guān)的CCS軟件,編寫(xiě)了一個(gè)實(shí)現(xiàn)離散余弦變換的程序。本次的實(shí)習(xí)是為培養(yǎng)我們的專業(yè)技術(shù)而開(kāi)設(shè)的專業(yè)綜合實(shí)習(xí)課,目的是讓我們熟悉和掌握近代信號(hào)處理的基本專業(yè)知識(shí)及實(shí)驗(yàn)方法,驗(yàn)證信號(hào)處理的基本理論及應(yīng)用技術(shù),掌握專業(yè)實(shí)驗(yàn)中常用的儀器設(shè)備和開(kāi)發(fā)工具,通過(guò)為期兩周的設(shè)計(jì)實(shí)踐培養(yǎng)我們綜合利用所學(xué)知識(shí)進(jìn)行信號(hào)處理的能力,為今后的工作學(xué)習(xí)打下堅(jiān)實(shí)的基礎(chǔ)。 通過(guò)本次的實(shí)習(xí),使我更加了解和認(rèn)識(shí)DSP在實(shí)踐當(dāng)中的應(yīng)用,意識(shí)到了它的重要性和可實(shí)用性。并且同過(guò)這次的實(shí)習(xí)我們還復(fù)習(xí)了C語(yǔ)言和匯編語(yǔ)言相結(jié)合的應(yīng)用技術(shù)。 現(xiàn)在是高科技發(fā)展的時(shí)代,DSP

10、的應(yīng)用領(lǐng)域十分廣泛,因此我們一定要學(xué)好DSP技術(shù)。九、參考文獻(xiàn):1 李楓,潘娜. 算法設(shè)計(jì)與系統(tǒng)方案. 國(guó)防工業(yè)出版社. 2004.72 蘇濤,盧光躍等DSP實(shí)用技術(shù). 西安電子科技大學(xué)出版社. 2002.63 鄒彥,董勝等TMS320C54X DSP實(shí)驗(yàn)指導(dǎo)書(shū).電子工業(yè)出版社 2006.84 付家才.DSP控制工程實(shí)踐技術(shù)電源技術(shù) 2005.65 姚愛(ài)娣基于DSP的系統(tǒng)研究D武漢理工大學(xué) 20066 K. R. Rao and P. Yip.離散余弦變換 : 算法、優(yōu)點(diǎn)和應(yīng)用 Academic Press, Boston, 19907 惠文華,郭新成. 遙感圖像的DCT域處理方法研究.西北大

11、學(xué)學(xué)報(bào)(自然科學(xué)版.2005年05期8 衣文索;聶春燕;基于DSP圖像處理的CDMA遠(yuǎn)傳系統(tǒng)設(shè)計(jì)J;長(zhǎng)春大學(xué)學(xué)報(bào);2008年02期 附錄一:程序模塊源程序#include <stdio.h> #include <math.h> #define N 8 #define PI 3.1415926 int f1NN=   139,144,149,153,155,155,155,155,   144,151,153,156,159

12、,156,156,156,   150,155,160,163,158,156,156,156,   159,161,162,160,160,159,159,159,   159,160,161,162,162,155,155,155,   161,161,161,161,160,157,157,157,   162,162,161,163,162,157,157,157,   162,162,161,161,163,158,158,158,  int&#

13、160;q1NN=        /定義色度量化系數(shù)   17,18,24,47,99,99,99,99,      18,21,26,66,99,99,99,99,     24,26,56,99,99,99,99,99,    47,66,99,99,99,99,99,99,     99,99,99,99,99,

14、99,99,99,    99,99,99,99,99,99,99,99,     99,99,99,99,99,99,99,99,    99,99,99,99,99,99,99,99,      int q2NN=        /定義亮度量化系數(shù)  16,11,10,16,24,40,51,61, &#

15、160; 12,12,14,19,26,58,60,55,  14,13,16,24,40,57,69,56,  14,17,22,29,51,87,80,62,  18,22,37,56,68,109,103,77,   24,35,55,64,81,104,113,92,   49,64,78,87,103,121,120,101,   72,92,95,98,112,100,103,99  void showMat_d(double *matShow

16、); void showMat_i(int *matShow); /顯示函數(shù),輸出為整形數(shù)據(jù)void DCT(int *f,double *F); /經(jīng)過(guò)FDCT變換,f為輸入數(shù)據(jù),F(xiàn)為輸出數(shù)據(jù)void IDCT(int *f,int *F); /經(jīng)過(guò)逆變換,f為輸入數(shù)據(jù),F(xiàn)為輸出數(shù)據(jù)void quant(double *f,int *F); /量化過(guò)程,f為傳進(jìn)的DCT數(shù)據(jù),F(xiàn)為量化后的數(shù)據(jù)void iQuant(int *f,int *F); /逆量化過(guò)程,f為量化后的數(shù)據(jù),void main()  double FNN=0;  

17、     /初始化輸出數(shù)組 int f_1NN=0;   /初始化逆變換的輸出數(shù)組   int f2NN=0;       /自定義輸入數(shù)組的數(shù)據(jù)  int fqNN=0;       /定義量化后的數(shù)組。  int fq_1NN=0;     /定義經(jīng)過(guò)逆變化后的數(shù)組

18、  int i=0,j=0; /printf("輸入數(shù)據(jù)f(x,y)為:n"); showMat_i(int *)f1); /輸出原始數(shù)據(jù)for(i=0;i<N;i+) for(j=0;j<N;j+) f1ij-=128; /減128 printf("nDCT之后,數(shù)據(jù)F(u,v)為:n"); DCT(int *)f1,(double *)F); /DCT變換showMat_d(double *)F); /輸出DCT數(shù)據(jù)quant(double *)F,(int *)fq); /量化printf("n量

19、化后的DCT為:n"); showMat_i(int *)fq); /輸出量化后的DCT數(shù)據(jù)iQuant(int *)fq,(int *)fq_1); /經(jīng)過(guò)逆量化處理printf("n逆量化后的數(shù)為:n"); showMat_i(int *)fq_1); printf("nIDCT之后,數(shù)據(jù)f'(x,y)為:n"); IDCT(int *)fq_1,(int *)f_1); /IDCT變換for(i=0;i<N;i+) for(j=0;j<N;j+) f_1ij+=128; /加128 showMat_i(int *)f_

20、1); /輸出數(shù)據(jù)/ Void showMat_d(double *matShow)   Int i=0; int j=0;  for(i=0;i<N;i+)      for(j=0;j<N;j+)        printf("%5.1f ",(*(double*)matShow+i*N+j);       pr

21、intf("n");     Void showMat_i(int *matShow)   Int i=0;   int j=0;  for(i=0;i<N;i+)      for(j=0;j<N;j+)        printf("%3d ",(*(int*)matShow+i*N+j);&

22、#160;      printf("n");     Void quant(double *f,int *F)   Int i=0;  int j=0;  double tempNN=0.0; For(i=0;i<N;i+)    for(j=0;j<N;j+)     *(double*)temp+i*

23、N+j)=(*(double*)f+i*N+j)/(*(int*)q2+i*N+j);     if(*(double*)temp+i*N+j)<0)      *(int*)F+i*N+j)=(int)(*(double*)temp+i*N+j)-0.5);/-0.5為四舍五入取整          else *(int*)F+i*N+j)=(int)(*(double*)temp+i*N+j)+0.5);&

24、#160; /+0.5為四舍五入取整      void iQuant(int *f,int *F)   Int i=0; int j=0;  double tempNN=0.0;   for (i=0;i<N;i+)    for(j=0;j<N;j+)       *(double*)temp+i*N+

25、j)=(double)*(int*)f+i*N+j)*(*(int*)q2+i*N+j);     if (*(double*)temp+i*N+j)<0)       *(int*)F+i*N+j)=(int)(*(double*)temp+i*N+j)-0.5);/-0.5為四舍五入取整      else  *(int*)F+i*N+j)=(int)(*(double*)temp+i*N+j)+0.5);

26、/+0.5為四舍五入取整       void DCT(int *f,double *F)     /DCT轉(zhuǎn)換   int x,m,n;  double dTempNN = 0.0;    /中間矩陣   double tempNN=0.0;  double coffN = 0.0;  

27、   /變換系數(shù)   coff0 = 1/sqrt(N);   for (m=1;m<N;m+)     coffm=sqrt(2)/sqrt(N);    /一維變換,對(duì)列進(jìn)行一維DCT變換。  for(n=0;n<N;n+)      /每一列遍歷    for(m=0;m<N;m+)   

28、60; /每一行遍歷  for(x=0;x<N;x+)    /每個(gè)cos系數(shù)遍歷  (*(double*)temp+m*N+n)+=(double)(*(int*)f+x*N+n)*coffm*cos(2*x+1)*PI*m/(2*N); /二維變換,對(duì)行進(jìn)行以為DCT變換  for (m=0;m<N;m+)      /每一行遍歷    for(n=0;n<N;n+) 

29、60;   /每一列遍歷  for(x=0;x<N;x+)    /每個(gè)cos系數(shù)遍歷  (*(double*)F+m*N+n)+=(*(double*)temp+m*N+x)*coffn*cos(2*x+1)*PI*n/(2*N);    void IDCT(int *f,int *F)     /逆變換   int y,m,x;  double dTempNN = 0.0;    /中間矩陣   double tempNN =0.0;  double coffN = 0.0;     /變換系數(shù)   coff0 = 1.0/sqrt(N);

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論