📄 dct.m
字号:
%Name: Chaitanya Salunke
%Roll No: 504046
%Assignment 8: Image Transforms
F = double(imread('rice.png'));
figure('Name','Comparison of Results of Image Transformations');
subplot(121);
imshow(mat2gray(F));
title('Input Image');
[Nr Nc] = size(F);
SI = [];
for k1 = 1:Nr/8
for k2 = 1:Nc/8
P = F(8*(k1-1)+1:8*k1,8*(k2-1)+1:8*k2);
SI = [SI ; P];
end
end
PC = size(SI,1)/8;
%DCT
Sdct = [];
alpha = sqrt(1/4)*ones(Nr/8,1);
alpha(1) = alpha(1)/sqrt(2);
cN = zeros(8);
for k1 = 1:8
for k2 = 1:8
cN(k1,k2) = cos(pi*(2*k1-1)*(k2-1)/16);
end
end
for C = 1:PC
I = SI((C-1)*8+1:C*8,1:8);
G = zeros(8);
for k1 = 1:8
for k2 = 1:8
for n1 = 1:8
for n2 = 1:8
G(k1,k2) = G(k1,k2) + I(n1,n2)*cN(n1,k1)*cN(n2,k2);
end
end
G(k1,k2) = G(k1,k2)*alpha(k1)*alpha(k2);
end
end
Sdct = [Sdct ; G];
end
%IDCT
Sidct = [];
for C = 1:PC
G = Sdct((C-1)*8+1:C*8,1:8);
I = zeros(8);
for n1 = 1:8
for n2 = 1:8
for k1 = 1:8
for k2 = 1:8
I(n1,n2) = I(n1,n2) + alpha(k1)*alpha(k2)*G(k1,k2)*cN(n1,k1)*cN(n2,k2);
end
end
end
end
Sidct = [Sidct ; I];
end
OP = zeros(Nr,Nc);
for C = 1:PC
I = Sidct((C-1)*8+1:C*8,1:8);
ri = ceil(C/32);
ci = mod(C,32);
if (ci == 0)
ci = 32;
end
OP((ri-1)*8+1:ri*8,(ci-1)*8+1:ci*8) = I;
end
subplot(122);
imshow(mat2gray(OP));
title('Reconstructed Image by Analysis using 8x8 DCT');
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -