?? exa080902_dct2.m
字號:
%-------------------------------------------------------------------------
% exa080902_dct2.m, for example 8.9.2 and 8.7.1
% to test dct2.m;
% 運行時,鍵入文件名 exa080902_dct2(k),給定k的值即可,k=0~8
%-------------------------------------------------------------------------
function exa080902_dct2(k)
% 調出圖像數據 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
% 輸出二維圖像;
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');
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -