下载此文档

图像的离散余弦变换代码.doc


文档分类:IT计算机 | 页数:约4页 举报非法文档有奖
1/4
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/4 下载此文档
文档列表 文档介绍
对图像进行离散余弦变换(DCT)处理(图像变换)的源代码#defineEXTRA_NAME"***@dcttransform."#include""#definePoint(x,y)lpPoints[(x)+(y)*nWidth]PLEX*PLEX*FD,intpower){ intcount; inti,j,k,bfsize,p; doubleangle; COMPLEX*W,*X1,*X2,*X; count=1<<power; W=(COMPLEX*)malloc(PLEX)*count/2); X1=(COMPLEX*)malloc(PLEX)*count); X2=(COMPLEX*)malloc(PLEX)*count); for(i=0;i<count/2;i++) { angle=-i*pi*2/count; W[i].re=cos(angle); W[i].im=sin(angle); } memcpy(X1,TD,PLEX)*count); for(k=0;k<power;k++) { for(j=0;j<1<<k;j++) { bfsize=1<<(power-k); for(i=0;i<bfsize/2;i++) { p=j*bfsize; X2[i+p]=Add(X1[i+p],X1[i+p+bfsize/2]); X2[i+p+bfsize/2]=Mul(Sub(X1[i+p],X1[i+p+bfsize/2]),W[i*(1<<k)]); } } X=X1; X1=X2; X2=X; } for(j=0;j<count;j++) { p=0; for(i=0;i<power;i++) { if(j&(1<<i))p+=1<<(power-i-1); } FD[j]=X1[p]; } free(W); free(X1); free(X2);}voidDCT_Pre(double*f,double*F,intpower){ inti,count; COMPLEX*X; doubles; count=1<<power; X=(COMPLEX*)malloc(PLEX)*count*2); memset(X,0,PLEX)*count*2); for(i=0;i<count;i++) { X[i].re=f[i]; } FFT(X,X,power+1); s=1/sqrt(count); F[0]=X[0].re*s; s*=sqrt(2); for(i=1;i<count;i++) { F[i]=(X[i].re*cos(i*pi/(count*2))+X[i].im*sin(i*pi/(count*2)))*s; } free(X);}voidDct(){ intw=1,h=1,wp=0,hp=0; while(w*2<=nWidth) { w*=2; wp++; } while(h*2<=nHeight) { h*=2; hp++; } intx,y; BYTE*lpPoints=newBYTE[nWidth*nHeight]; GetPoints(lpPoints); double*f=n

图像的离散余弦变换代码 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数4
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mkjafow
  • 文件大小18 KB
  • 时间2020-06-19