EMMA8459 发表于 2006-5-18 09:13

毕业设计,急!HAPPY教授帮忙看一下

<P>function MSE=dct2(check,trueImage,Cnum)<BR>%trueImage为待压缩的原图像,Cnum为压缩时保留的系数个数<BR>%check&lt;1×6&gt;为checkbox的选项数据,控制输出<BR>h = waitbar(0,'Please wait...');    %等待条<BR>      for i=1:100,<BR>            waitbar(i/100,h)<BR>      end<BR>      close(h)<BR>file=trueImage;</P>
<P>trueImage=imread(trueImage);<BR>trueImage1=trueImage;<BR>if jpgread(file)==0      %导入jpgread函数,判断是否为彩色图像<BR>trueImage1=rgb2gray(trueImage);   %如果是彩色图像转成灰度的<BR>end<BR>trueImage=double(trueImage1)/255;<BR>dctm=dctmtx(8);<BR>%进行基于子块的DCT变换<BR>imageDCT=blkproc(trueImage,,'P1*x*P2',dctm,dctm.');<BR>DCTvar=im2col(imageDCT,,'distinct').';<BR>n=size(DCTvar,1);<BR>DCTvar=(sum(DCTvar.*DCTvar)-(sum(DCTvar)/n).^2)/n;<BR>=sort(DCTvar);<BR>Cnum=64-Cnum;<BR>mask=ones(8,8);   <BR>mask(order(1:Cnum))=zeros(1,Cnum);<BR>im8x8=zeros(9,9);<BR>im8x8(1:8,1:8)=mask;<BR>im128x128=kron(im8x8(1:8,1:8),ones(16));<BR>if check(2)==1<BR>figure('name','DCT系数');<BR>imshow(im128x128);<BR>title('DCT系数');<BR>end<BR>if check(3)==1<BR>figure('name','8*8DCT变换系数图'); <BR>mesh(imageDCT);   <BR>title('8*8DCT变换系数图');<BR>end<BR>dctm=dctmtx(8);<BR>newImage=blkproc(imageDCT,,'P1*(x.*P2)*P3',dctm.',mask(1:8,1:8),dctm);<BR>if check(5)==1<BR>figure('name','重构图像对比');<BR>subplot(1,2,1);<BR>imshow(trueImage1);<BR>title('原始图像');<BR>subplot(1,2,2);<BR>    imshow(newImage);<BR>title('重构图像');<BR>end<BR>if check(6)==1<BR>figure('name','误差图像');<BR>imshow(trueImage-newImage+0.45);    %对误差图像曾亮显示<BR>title('误差图像');<BR>end<BR>error=(trueImage-newImage).^2;   %均方误差计算<BR>A=sum(error(:));<BR>B=prod(size(trueImage));<BR>MSE=A/B;<BR>这是灰度变换,彩色变换如何修改,请HAPPY教授指点,谢谢</P><BR>
页: [1]
查看完整版本: 毕业设计,急!HAPPY教授帮忙看一下