top of page

Compression of JPEG using MATLAB

Abstract:

Now a days Create, edit, and generate images in a very regular system for transmission is main priority. Original image data generated by the camera sensor is a very large store, and therefore is not efficient. It has become particularly troublesome to move or bandwidth-limited systems wherein the object is to be conservative bandwidth cost, such as the World Wide Web. This scenario requires the use of efficient image compression techniques, such as the JPEG algorithm technology, the quality of the compressed image height to which the perceived image with almost no loss. Today JPEG algorithms have become the de facto standard for image compression. The amount of hardware MATLAB code can be output to a quantized DCT version of the input image and techniques used to achieve expeditious manner JPEG algorithm were investigated procedures.




CODE:

clc;

clear all;

I = imread('image to be compressed');

I1=I;

[row coln]= size(I);

I= double(I);

%---------------------------------------------------------

% Subtracting each image pixel value by 128

%--------------------------------------------------------

I = I - (128*ones(256));


quality = input('What quality of compression you require - ');


%----------------------------------------------------------

% Quality Matrix Formulation

%----------------------------------------------------------

Q50 = [ 16 11 10 16 24 40 51 61;

12 12 14 19 26 58 60 55;

14 13 16 24 40 57 69 56;

14 17 22 29 51 87 80 62;

18 22 37 56 68 109 103 77;

24 35 55 64 81 104 113 92;

49 64 78 87 103 121 120 101;

72 92 95 98 112 100 103 99];

if quality > 50

QX = round(Q50.*(ones(8)*((100-quality)/50)));

QX = uint8(QX);

elseif quality < 50

QX = round(Q50.*(ones(8)*(50/quality)));

QX = uint8(QX);

elseif quality == 50

QX = Q50;

end

%----------------------------------------------------------

% Formulation of forward DCT Matrix and inverse DCT matrix

%----------------------------------------------

DCT_matrix8 = dct(eye(8));

iDCT_matrix8 = DCT_matrix8'; %inv(DCT_matrix8);





%----------------------------------------------------------

% Jpeg Compression

%----------------------------------------------------------

dct_restored = zeros(row,coln);

QX = double(QX);

%----------------------------------------------------------

% Jpeg Encoding

%----------------------------------------------------------

%----------------------------------------------------------

% Forward Discret Cosine Transform

%----------------------------------------------------------


for i1=[1:8:row]

for i2=[1:8:coln]

zBLOCK=I(i1:i1+7,i2:i2+7);

win1=DCT_matrix8*zBLOCK*iDCT_matrix8;

dct_domain(i1:i1+7,i2:i2+7)=win1;

end

end

%-----------------------------------------------------------

% Quantization of the DCT coefficients

%-----------------------------------------------------------

for i1=[1:8:row]

for i2=[1:8:coln]

win1 = dct_domain(i1:i1+7,i2:i2+7);

win2=round(win1./QX);

dct_quantized(i1:i1+7,i2:i2+7)=win2;

end

end





%-----------------------------------------------------------

% Jpeg Decoding

%-----------------------------------------------------------

% Dequantization of DCT Coefficients

%-----------------------------------------------------------

for i1=[1:8:row]

for i2=[1:8:coln]

win2 = dct_quantized(i1:i1+7,i2:i2+7);

win3 = win2.*QX;

dct_dequantized(i1:i1+7,i2:i2+7) = win3;

end

end

%-----------------------------------------------------------

% Inverse DISCRETE COSINE TRANSFORM

%-----------------------------------------------------------

for i1=[1:8:row]

for i2=[1:8:coln]

win3 = dct_dequantized(i1:i1+7,i2:i2+7);

win4=iDCT_matrix8*win3*DCT_matrix8;

dct_restored(i1:i1+7,i2:i2+7)=win4;

end

end

I2=dct_restored;




% ---------------------------------------------------------

% Conversion of Image Matrix to Intensity image

%----------------------------------------------------------



K=mat2gray(I2);



%----------------------------------------------------------

%Display of Results

%----------------------------------------------------------

figure(1);imshow(I1);title('original image');

figure(2);imshow(K);title('restored image from dct');




67 views0 comments

Recent Posts

See All
bottom of page