The Still Image compression For Effective Use Of Bandwidth

Sir,
My project is "The Still Image compression For Effective Use Of Bandwidth". I have sucessfully compiled my code for gray scale images but while trying to compress color images getting an error that to while calculating mean square error(MSE) and peak signal to noise ratio (PSNR)indicating " ??? Error using ==> minus Number of array dimensions must match for binary array op. So, please kindly reply me soon what is the problem in the code and why it is possible to calculate MSE and PSNR only for gray scale images and not for color images.
MY code is
%%reading an image
input_image=imread('1.png');
input_image = imresize(input_image,[256 256]);
imshow(input_image);
handles.input_image=input_image;
[r c p]=size(input_image);
if p==3 %%%if p=3 then it is coler image
warndlg('convert color image into Gray image');
input_image=rgb2gray(input_image); %%%converting color image into gray image
end
input_image=imresize(input_image,[256 256]);
input_image=double(input_image);
[LL LH HL HH]= dwt2(input_image,'haar');
new_image=[...
LL LH
HL HH ...
];
figure, imshow(new_image,[]);
handles.new_image=new_image;
image_LL=handles.new_image;
[row1 col1] = size(image_LL);
Image_LL_resize = round(reshape(image_LL,[1 row1*col1]));
New_Image_LL_resize= round(Image_LL_resize/10);
%%%%%%%%% Huffman Encoding %%%%%%%%%%%
leng = length( New_Image_LL_resize);
maxr = max( New_Image_LL_resize);
minr = min( New_Image_LL_resize);
j = 1;
for i = minr:maxr
N = find(New_Image_LL_resize==i);
count = length(N);
probab(j) = count/leng;
j = j+1;
end
size_of_dict = length(probab);
[dictval avglen] = huffmandict([minr:maxr],[probab]);
y = huffmanenco( New_Image_LL_resize,dictval);
bitstream_image = y;
%%%%% finding length of bitstream %%%%%
bitstream = length(y);
disp('Length of Compressed Huffman Bitstream');
display(bitstream);
handles.dictval=dictval;
handles.y=y;
warndlg('Encoding Process Completed');
%%decoding
dictval=handles.dictval;
y=handles.y;
Dec_Out = huffmandeco(y,dictval);
len=length(Dec_Out);
row1=sqrt(len);
col1=row1;
New_Decim = reshape(Dec_Out,[row1 col1]);
New_Decim = New_Decim*10;
% figure(1),imshow(New_Decim,[]);
warndlg('Decoding Proces Completed');
handles.New_Decim = New_Decim;
%%Inverse DWT
Rec_image = handles.New_Decim;
%apply idwt
% img_idwt = idwt2(
[rows cols] = size(Rec_image);
for i = 1:rows/2
for j = 1:cols/2
CA(i,j) = Rec_image(i,j);
end
end
for i = rows/2+1:rows
for j = 1:cols/2
CH(i-rows/2,j) = Rec_image(i,j);
end
end
for i = 1:rows/2
for j = cols/2+1:cols
CV(i,j-cols/2) = Rec_image(i,j);
end
end
for i = rows/2+1:rows
for j = cols/2+1:cols
CD(i-rows/2,j-cols/2) = Rec_image(i,j);
end
end
% figure,imshow(CA,[]);
% figure,imshow(CH,[]);
% figure,imshow(CV,[]);
% figure,imshow(CD,[]);
output_image = idwt2(CA,CH,CV,CD,'haar');
%axes(handles.axes4);
figure, imshow(output_image,[]);
handles.output_image = output_image;
%%MSE
img1 = handles.input_image;
img2 = handles.output_image;
img2=imresize(img2,[256 256]);
[M N] = size(img1);
img2 = uint8(img2);
MSE = sum(sum((img1-img2).^2))/(M*N);
set(handles.edit1,'string',MSE);
handles.MSE = MSE;
%%PSNR
PSNR =abs(10*log10(255*255/MSE));

댓글 수: 2

ur code is so good i am getting output thank u so much
how to use this code for dct instead of dwt plz help me

댓글을 달려면 로그인하십시오.

 채택된 답변

Walter Roberson
Walter Roberson 2011년 4월 13일

0 개 추천

To handle a color image, compress the R, G, and B planes separately.

추가 답변 (0개)

카테고리

도움말 센터File Exchange에서 Color and Styling에 대해 자세히 알아보기

질문:

2011년 4월 13일

댓글:

2014년 2월 6일

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by