Problems with Matlab Projects? You may face many Problems, but do not worry we are ready to solve your Problems. All you need to do is just leave your Comments. We will assure you that you will find a solution to your project along with future tips. On Request we will Mail you Matlab Codes for Registered Members of this site only, at free service...Follow Me.

Quality Effects on JPEG Image Compression

Quality Effects on JPEG Image Compression Using MATLAB

OBJECTIVES

Investigate the grayscale JPEG image compression with the quality effects

Investigate the color JPEG image compression with the quality effects.

PROCEDURE:

Part A: Grayscale JEPG Image

The grayscale JPEG image compression includes the following steps. a. Dividing the image into 8x8 blocks. b. Transforming each block using the discrete-cosine transform. c. Scaling and Quantizing DCT coefficients. d. Lossless-compressing the quantized DCT coefficients. Note that we do not pursue the loss compression here assuming that the lossless compressed DCT coefficients will be exactly recovered during the decoding stage. Examine the following sample MATLAB program provided by your instructor.

close all; clear all; clc

% This test program is a part of simulation for Grayscale JPEG image

% comression.

% image size: 240x320

X=imread('cruiseog','TIFF'); %note the image size= 240x320

Y=rgb2gray(X); %Y =grayscale image

size(Y)

Q=[ 16 11 10 16 24 40 51 61; %quantization quality factor

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];

factor=1;

Q=factor*Q;

Order=[ 0 1 5 6 14 15 27 28; %zig-zag path

2 4 7 13 16 26 29 42;

3 8 12 17 25 30 41 43;

9 11 18 24 31 40 44 53;

10 19 23 32 39 45 52 54;

20 22 33 38 46 51 55 60;

21 34 37 47 50 56 59 61;

35 36 48 49 57 58 62 63];

count=0; % number of image blocks; total number of blocks =30x40=1200

for i=1:30

for j=1:40

count=count+1;

P(1:8,1:8,count)=Y((i-1)*8+1:i*8,(j-1)*8+1:j*8);

end

end

for m=1:1200

F(:,:,m)=round(dct2(P(:,:,m))); % 2-D DCT transform

FF(:,:,m)=round(F(:,:,m) ./Q); % quantization of DCT coefficients

end

%Coding and lossless compression. (not included)

%decoding

for m=1:1200

FC(:,:,m)=FF(:,:,m) .*Q; % recover 2-D DCT coefficients

PP(:,:,m)=round(idct2(FC(:,:,m))); % recover the 8x8 image image

err(:,:,m)=single(PP(:,:,m))-single(P(:,:,m)); % quantization vector

end

count=0;

for i=1:30

for j=1:40

count=count+1;

YY((i-1)*8+1:i*8,(j-1)*8+1:j*8)=PP(1:8,1:8,count); % recover image

end

end

YY=uint8(YY); % level adjustment

figure

subplot(1,2,1),imshow(Y); % original image

title('Orignal image');

subplot(1,2,2),imshow(YY) % JPEG image

title('JPEG compressed image');

In the program, Q contains the scaled factors while FF(:,:m) contains the quantized DCT coefficients. If we reduce the range of the FF(:,:,m), we will achieve more compression with trading off the image quality.

Run the MATLAB program to complete the following table using the specified scale factor, and examine the range of the quantized DCT coefficients and image quality.

factor

MATLAB>max(FF(:)

Quality

1

2

5

10

20

Write a brief summary.

Part B: Color JPEG Image

Examine the following MATLAB program provided by your instructor. The principles of the color JPEG image compression include: a. converting RGB image components to YIQ image components. b. Applying DCT transform to each the YIQ image components, respectively. c. Scaling and quantizing YIQ image components using the corresponding quantization factor (Q for Y image while Qc for I and Q images in the program), respectively. d. lossless coding the DCT coefficients (we do not pursue here).

close all; clear all; clc

% This test program is a part of simulation for color JPEG image

% compression.

% image size: 240x320x3

X=imread('grandorg','TIFF');

X=single(X); % single precision

Y=rgb2gray(X); % Y -channel

Q=[ 16 11 10 16 24 40 51 61; % quality factor for Y components

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];

QC=[17 18 24 47 99 99 99 99; % quality factor of I or Q components

18 21 26 66 99 99 99 99;

24 26 56 99 99 99 99 99;

47 66 99 99 99 99 99 99;

99 99 99 99 99 99 99 99;

99 99 99 99 99 99 99 99;

99 99 99 99 99 99 99 99;

99 99 99 99 99 99 99 99];

factorY=1;

Q=factorY*Q;

factorC=1;

QC=factorC*QC;

Order=[ 0 1 5 6 14 15 27 28; %zig-zag path

2 4 7 13 16 26 29 42;

3 8 12 17 25 30 41 43;

9 11 18 24 31 40 44 53;

10 19 23 32 39 45 52 54;

20 22 33 38 46 51 55 60;

21 34 37 47 50 56 59 61;

35 36 48 49 57 58 62 63];

%transform to YIQ

YIQ(:,:,1)=0.299*X(:,:,1)+0.587*X(:,:,2)+0.114*X(:,:,3);

YIQ(:,:,2)=0.596*X(:,:,1)-0.274*X(:,:,2)-0.322*X(:,:,3);

YIQ(:,:,3)=0.212*X(:,:,1)-0.523*X(:,:,2)+0.311*X(:,:,3);

count=0; % number of 8x8x3 image blocks for Y components

for i=1:30

for j=1:40

count=count+1;

P(1:8,1:8,count)=YIQ((i-1)*8+1:i*8,(j-1)*8+1:j*8,1);

end

end

for m=1:1200 % operating for 30x40x3 blocks =1200 blocks

F(:,:,m)=round(dct2(P(:,:,m))); % DCT transform

FF(:,:,m)=round(F(:,:,m) ./Q); % DCT coefficient quantization

end

count=0; % operate for I componenets

for i=1:30

for j=1:40

count=count+1;

PI(1:8,1:8,count)=YIQ((i-1)*8+1:i*8,(j-1)*8+1:j*8,2);

end

end

for m=1:1200

F(:,:,m)=round(dct2(PI(:,:,m))); %DCT transform

FFI(:,:,m)=round(F(:,:,m)./QC); % DCT coefficient quantization

end

count=0; % operating for Q component

for i=1:30

for j=1:40

count=count+1;

PQ(1:8,1:8,count)=YIQ((i-1)*8+1:i*8,(j-1)*8+1:j*8,3);

end

end

for m=1:1200

F(:,:,m)=round(dct2(PQ(:,:,m))); %DCT transform

FFQ(:,:,m)=round(F(:,:,m)./QC); % DCT coefficient quantzation

end

% Further coding and lossless compression (not included)

%decoding

for m=1:1200

FC(:,:,m)=FF(:,:,m) .*Q; % recovering DCT coefficients

PP(:,:,m)=round(idct2(FC(:,:,m))); % recovering 8x8 image block for Y component

end

count=0;

for i=1:30

for j=1:40

count=count+1;

YY((i-1)*8+1:i*8,(j-1)*8+1:j*8,1)=PP(1:8,1:8,count); % Y components

end

end

for m=1:1200 %recoverinbg the I component

FIC(:,:,m)=FFI(:,:,m).*QC;

PPI(:,:,m)=round(idct2(FIC(:,:,m)));

end

count=0;

for i=1:30

for j=1:40

count=count+1;

YY((i-1)*8+1:i*8,(j-1)*8+1:j*8,2)=PPI(1:8,1:8,count);

end

end

for m=1:1200 %recoverinbg the Q component

FQC(:,:,m)=FFQ(:,:,m).*QC;

PPQ(:,:,m)=round(idct2(FQC(:,:,m)));

end

count=0;

for i=1:30

for j=1:40

count=count+1;

YY((i-1)*8+1:i*8,(j-1)*8+1:j*8,3)=PPQ(1:8,1:8,count);

end

end

%transform to RGB

RGB(:,:,1)=1.0*YY(:,:,1)+0.956*YY(:,:,2)+0.621*YY(:,:,3);

RGB(:,:,2)=1.0*YY(:,:,1)-0.272*YY(:,:,2)-0.647*YY(:,:,3);

RGB(:,:,3)=1.0*YY(:,:,1)-1.106*YY(:,:,2)+1.703*YY(:,:,3);

X=uint8(X); %level adjustment

RGB=uint8(RGB);%level adjustment

subplot(1,2,1),imshow(X);title('Original image');

subplot(1,2,2),imshow(RGB); title('JPEG image');

Run the MATLAB program to complete the following table using the specified scale factors, and examine the ranges of the quantized DCT coefficients and image quality.

Factor Y

Factor C

MAT>max(FF(:) )

MAT>max(FFI(:))

MAT>max(FFQ(:))

Quality

1

1

2

2

5

4

10

8

4

10

Write a brief summary.

0 comments:

Post a Comment

Recent Comments

Popular Matlab Topics

Share your knowledge - help others

Crazy over Matlab Projects ? - Join Now - Follow Me

Sites U Missed to Visit ?

Related Posts Plugin for WordPress, Blogger...

Latest Articles

Special Search For Matlab Projects

MATLAB PROJECTS

counter

Bharadwaj. Powered by Blogger.