En este ejemplo voy a tomar una imagen PGM de 8 bits en escala de grises (256 tonos de grises o 2^8) y la voy a convertir a 5 bits (32 tonos de grises o 2^5). Ese es el objetivo de la cuantización, al menos la cuantización en imágenes, el poder representar una imagen con diferente número de bits que la original tratando de que la imagen cuantizada se vea lo más parecido a la original, que obviamente es prácticamente imposible.
clear;clc;
imagen = double(imread('boat.pgm'));figure(); imshow(uint8(imagen));
title('Imagen Original 8 bits');[cols rows] = size(imagen);
%--------------------------------------------------------
l = (2^3);
imQ = UniformQuantizationToImage(imagen,l);figure(); imshow(uint8(imQ));
title('Imagen Cuantizada 4 bits');for i=1:6
a = i*4;
imWNoise = imagen + generateNoiseImage(cols,rows,-a,a);
imR = UniformQuantizationToImage(imWNoise,l);
figure(); imshow(uint8(imR));
title(['Imagen con Ruido aleatorio[-a a] con a= ', num2str(a)]);
end
%--------------------------------------------------------
function imgQuantized=UniformQuantizationToImage(imgToQuantize,levels)
%Aplicar quantizacion uniforme a la imagen
imQ = floor(imgToQuantize.*((levels+1)/256))+1;
%Recuperar imagen en base a la cuantizada para mostrar
%la pérdida de información
imgQuantized = imQ.*((256/levels)-1);
end
No hay comentarios:
Publicar un comentario