%% quantdequant.m
% quantize and dequantize an image
% show resultant image and compute distortion
% needs energy.m
% S. Allen Broughton - 29 Sep 10
%% load picture
load mandrill
%% quantize-dequantize
b = 2; % bits per pixel
r = 2^b; % number of quantization levels
M = max(max(X));
m = min(min(X));
h = (M-m)/r;
qX = ceil((X-m)/h)-1;
dqqX = m+h*(qX+0.5);
%% show original
figure(1)
colormap(gray)
imagesc(X)
%% show final
figure(2)
colormap(gray)
imagesc(dqqX)
%% compute percentage distortion
diff = X-dqqX;
mD = 100*energy(diff)/energy(X)