Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
m.file
function result = apply_reinhard_global_tonemap(hdr_map, a)
fprintf('== Applying Reinhard Global Tonemap (a = %.3f) ==\n', a);
[height, width, num_channels] = size(hdr_map);
num_pixels = height * width;
delta = 0.0001;
luminance_map = compute_luminance_map(hdr_map);
C = double(delta + luminance_map);
key = exp((1 / num_pixels) * sum(sum(log(C))));
scaled_luminance = (a / key) * luminance_map;
display_luminance = scaled_luminance ./ (1 + scaled_luminance);
result = apply_tonemap(hdr_map, luminance_map, display_luminance);
end
M.file
function Anew=imgreader(x)
%reading the image
A=imread(x);
%convert it to grayscale
%AS=rgb2gray(A);
AS=A;
%encoding process
for i=1:blockSize:rowSize
for j=1:blockSize:colSize
%performing the DCT
B(i:i+jump,j:j+jump) = dct2(s(i:i+jump,j:j+jump));
%performing the quantization
Bq(i:i+jump,j:j+jump)=quantization(B(i:i+jump,j:j+jump),blockSize);
zigzag(count,1:zzcount)=zzag(Bq(i:i+jump,j:j+jump));
count=count+1;
end
end
disp('Original Image')
AS(1:printLimit,1:printLimit)
disp('After level shift')
s(1:printLimit,1:printLimit)
disp('After DCT')
B(1:printLimit,1:printLimit)
disp('After Quantization')
Bq(1:printLimit,1:printLimit)
zigzag(1,1:zzcount);
%for putting it into a file and compressing
save('compImg.mat','zigzag');
compImage=gzip('compImg.mat')
Bnew=[];
ASnew=[];
%decoding process
for i=1:blockSize:rowSize
for j=1:blockSize:colSize
%performing the dequantization
Bnew(i:i+jump,j:j+jump)=invQuantization(Bq(i:i+jump,j:j+jump),blockSize);
%performing the inverse DCT
ASnew(i:i+jump,j:j+jump) = round(idct2(Bnew(i:i+jump,j:j+jump)));
end
end
disp('dequantization')
%Bnew(1:printLimit,1:printLimit)
disp('Inverse DCT')
%ASnew(1:printLimit,1:printLimit)
Anew=ASnew+128;
Anew=uint8(Anew);
rgbImage = cat(3,Anew,Anew,Anew);
figure
imshow(A)
title('Original Image')
figure
imshow(Anew)
title('Compressed Image')
im1_stats = dir('new.jpg');
aw=im1_stats;
p=aw.bytes;
msgbox({sprintf('Original Image,%g (KB)',p/1000)});
im1_stats = dir('Compressed Image');
aw=im1_stats;
pp1=aw.bytes;
msgbox({sprintf('Compressed Image,%g (KB)',pp1/1000)});
end
Might be wrong…but achieve Compressed Image size become as 29.173KB