Esta tecnica consiste en comparar cada pixel de la imagen con un determinado umbral (valor limite que determina si un pixel sera de color blanco o negro). Los valores de la imagen que sean mayores que el umbral toman un valor 255 (blanco), el resto de pixeles toman valor 0(negro).
Por ejemplo, si queremos binarizar esta imagen (la conocida fotografia de Lena) , primero debemos convertirla a escala de grises y luego aplicar la Binarizacion .
CODIGO EN MATLAB
Binarizacion.m
function [I]=Binarizacion(imagen,umbral)
[f,c]=size(imagen);
for i=1:f
for j=1:c
if double(imagen(i,j))<umbral
I(i,j)=0;
else
I(i,j)=255;
end
end
end
I=uint8(I);
En la ventana de comandos de MATLAB escribe lo siguiente:
i=imread('ruta');
g=rgb2gray(i);
b=Binarizacion(g,95);
imshow(b);
Nota: en la primera linea donde dice ruta escribe la ruta de la imagen .Ejemplo:
i=imread('C:\Documents and Settings\Carlos\Escritorio\lena.jpg');
RESULTADOS
La imagen binarizada es la siguiente :

EXCELENTE TUTORIAL :)
ResponderEliminarHola Gran trabajo el que realizas en este blog!!
ResponderEliminarQuería comentarte que yo estoy publicando también algunos programas basados en procesamiento de imagen con Matlab como reconocimiento de monedas u otros similares.
Además he hecho un pequeño tutorial sobre este tema y quería comentártelo sobretodo lo de los programas que he realizado para que les eches un vistazo si puedes y me comentes que tal los ves y si podría mejorar algún aspecto:
http://matlabimagenes.blogspot.com.es/
Que significa este error? Gracias de antemano.
ResponderEliminarError using rgb2gray>parse_inputs (line 88)
RGB must be a m x n x 3 array.
Error in rgb2gray (line 35)
X = parse_inputs(varargin{:});
significa que tu imagen es monocromatica y no se puee convertir de RGB a grises. Es decir, ya està en escala de grises
EliminarEstas desperdiciando el potencial de matlab y utilizando for anidado inecesario ya que matlab es un laboratorio de matrices.
ResponderEliminarTu codigo se puede simplificar mucho:
i=imread('ruta');
g=rgb2gray(i);
b=g>=umbral;
b=double(b);
imshow(b);
Por nada