Filtro 3x3 Matlab

by Pablo 11. June 2011 10:00

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)

-----------------------------------------

resultado: imgend

Tags: ,

Matlab

About the author

Mexicano, soy Telemático, me gustan las Telecomunicaciones, aficionado a la programación, leer y buena música.

Un Ingeniero es una máquina de resolver problemas y ahorrar recursos; un Ingeniero en Telemática es capaz de enviar cualquier tipo de mensaje a cualquier parte del mundo.

Month List

Page List