08 marzo 2009

Mucho ruido y pocas nueces. Cuantización escalar con Dithering aplicando ruido pseudo-aleatorio en MATLAB

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

CuantizacionUnif_BLOG_01

CuantizacionUnif_BLOG_02 CuantizacionUnif_BLOG_03 CuantizacionUnif_BLOG_04 CuantizacionUnif_BLOG_05 CuantizacionUnif_BLOG_06 CuantizacionUnif_BLOG_07 CuantizacionUnif_BLOG_08

0 Comentarios:

Publicar un comentario en la entrada

¿Qué he escrito?

This is I

Mi foto
Blog dedicado a escribir sobre procesamiento digital de imagenes y dudas existenciales. / Blog to write about digital image processing and existencial doubts.

Cuenta Cuantos