Lets Learn together... Happy Reading

" Two roads diverged in a wood, and I,
I took the one less traveled by,
And that has made all the difference "-Robert Frost

2-D Discrete Cosine Transform


DCT is a technique for converting a signal into elementary frequency components.
It is widely used in image compression. Check Inverse discrete cosine transform for the reverse process.





MATLAB CODE:

%CONSIDER A MATRIX
A=[4 2 9 60; 7 10 5 77;88 66 44 3];
%PREALLOCATE THE MATRICES
B=zeros(size(A));
Temp=zeros(size(A));
display(A);






%FIND THE SIZE OF THE MATRIX
[M N]=size(A);
for i=1:M
    for j=1:N
       
        if(i==1)
          AlphaP=sqrt(1/M);
        else
          AlphaP=sqrt(2/M);
        end
       
        if(j==1)
          AlphaQ=sqrt(1/N);
        else
          AlphaQ=sqrt(2/N);
        end


For A(1,1),  m=1 and n=1. If m= 1 then AlphaP=sqrt(1/M)=0.5774
If n=1 then AlphaQ=sqrt(1/N)=0.5000


For A(2,3),m=1 and n=3. AlphaP=sqrt(2/M)=0.8165
 AlphaQ =  sqrt(2/N) = 0.7071









Temp=0;
       for x=1:M
            for y=1:N
                   cs1=cos((pi*(2*x-1)*(i-1))/(2*M));
                cs2=cos((pi*(2*y-1)*(j-1))/(2*N));
                Temp=Temp+(A(x,y)*cs1*cs2);
             end
        end
       B(i,j)=AlphaP*AlphaQ*Temp;
    end
end
%2-D discrete Cosine Transform
display(B);






EXAMPLE 2



%2-D DISCRETE COSINE TRANSFORM FOR AN IMAGE


%READ THE IMAGE
I=imread('coins.png');
I=I(90:150,140:210);



A=double(I);

%PREALLOCATE THE MATRIX
B=zeros(size(A));
Temp=zeros(size(A));
[M N]=size(A);


%
x=1:M;
x=repmat(x',1,N);
y=repmat(1:N,M,1);


for i=1:M
    for j = 1: N
   
        if(i==1)
          AlphaP=sqrt(1/M);
        else
          AlphaP=sqrt(2/M);
        end
       
        if(j==1)
          AlphaQ=sqrt(1/N);
        else
          AlphaQ=sqrt(2/N);
        end
       
             
               
        cs1=cos((pi*(2*x-1)*(i-1))/(2*M));
        cs2=cos((pi*(2*y-1)*(j-1))/(2*N));
        Temp=A.*cs1.*cs2;
              
      
        B(i,j)=AlphaP*AlphaQ*sum(sum(Temp));
    end
end

%OUTPUT
figure,
subplot(2,1,1);imshow(I);title('Original Image');
subplot(2,1,2),imshow(log(abs(B)),[]);
colormap(jet);title('After DCT');





















like button Like "IMAGE PROCESSING" page

2 comments:

SACHIN KANSAL said... Reply to comment

Nice...

Sai Santhosh kota said... Reply to comment

Temp=zeros(size(A)) in first code . Is it right?? It should be just a variable.

Enjoyed Reading? Share Your Views

Previous Post Next Post Home
Related Posts Plugin for WordPress, Blogger...
Google ping Hypersmash.com