Filtro de imagen en Matlab
El siguiente ejecicio nos muestra como aplicar un filtro a una imagen en blanco y negro, ¿porque en blanco y negro? Fácil, cuando se trabaja en imagenes en blanco y negro o escala de grises nuestra matriz es simple: image(x,y) Para imagenes a color se tendría que trabajar con 3 matricies: image(x,y,R) image(x,y,G) image(x,y,B) Donde cada matriz representando un color.
%leemos la imagen
imgrgb = imread('http://jootix.com/upload/DesktopWallpapers/cache/unknown-girl-unknown-girl-1920x1200.jpg');
%va a gris en double
img = double(rgb2gray(imgrgb));
%tamaño de la imagen
[r, c] = size(img);
%cargamos el filtro
fil=[-1,0,1;-1,0,1;-1,0,1];
%creamos area de trabajo para agregar marcos
nimb = zeros(r+2,c+2);
%poner la imagen original dentro de la nueva
for i = 1:r
for j = 1:c
nimb(i+1,j+1)=img(i,j);
end
end
%para las esquinas
nimb(1,1)=img(1,1);
nimb(1,c+2)=img(1,c);
nimb(r+2,1)=img(r,1);
nimb(r+2,c+2)=img(r,c);
%para el marco de arriba y abajo
for i = 1:c
nimb(1,i+1)=img(1,i);
nimb(r+2,i+1)=img(r,i);
end
%para el marco de los lados
for i=1:r
nimb(i+1,1)=img(i,1);
nimb(i+1,c+2)=img(i,c);
end
%multiplicamos
for i = 2:(r-1)
for j = 2:(c-1)
nimb(i,j) = sum(sum(fil.*img(i-1:i+1, j-1:j+1)));
end
end
%pasamos la imagen a formato uint8
imgend=uint8(nimb);
%mostramos la imagen en gray con filtro
imshow(imgend)
Tags: Matlab