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

📄 dct.m

📁 code for dct for image processing
💻 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 + -