⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 exe080901_dct2.m

📁 Matlab程序为清华大学胡广书版信号处理的上机习题答案
💻 M
字号:
%-------------------------------------------------------------------------
% exe080901_dct2.m
%   k ------ 压缩时的参数,舍掉k个点用以重建, 0<p<=8
%-------------------------------------------------------------------------
clear
k=0
% 调出图像数据 girl.bmp;
X=imread('girl.bmp','bmp');

A=double(X);
B=zeros(size(A));
C=zeros(size(A));

% 作二维DCT,每一小块为 8×8;
s=size(A);
for m=1:s(1)
   if rem(m,8)==0
       for n=1:s(2)
           if rem(n,8)==0
               B((m-8+1):m,(n-8+1):n)=dct2(A((m-8+1):m,(n-8+1):n));
               B((m-k+1):m,(n-8+1):n)=0;
               B((m-8+1):m,(n-k+1):n)=0;
           end
       end
   end
end
  
% 逆DCT,重建信号;
for m=1:128
    if rem(m,8)==0
        for n=1:128
            if rem(n,8)==0
                C((m-8+1):m,(n-8+1):n)=idct2(B((m-8+1):m,(n-8+1):n));
            end
        end
    end
end

% 输出二维图像;
figure
C=uint8(C);
subplot(2,2,1);
subimage(X);
axis square;xlabel('original image')
subplot(2,2,2);
subimage(C);
axis square;xlabel('reconstructed image K=6');


C=double(C);
X=double(X);
MSE=0;
for m=1:128
    MSE=MSE+sum((X(m:m,1:128)-C(m:m,1:128)).*(X(m:m,1:128)-C(m:m,1:128)))/128;
end
MSE=MSE/128
SNR=10*log10(255^2/MSE)
  
                             

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -