1. Filtraje
Se puede utilizar el comando:
imagen2=filter2(filter,Imagen);
Dónde: filter es la matriz filtro.
El comando filter2 no admite uint8, por lo tanto la imagen a filtrar se
debe convertir al tipo double.
El filtraje se debe realizar plano por plano en una imagen RGB.
Se agrega ruido a una imagen con el comando imnoise. Revisar los
archivos de ayuda de Matlab para mas información.
2. Ejemplo: Filtraje promedio
Para eliminar o reducir el ruido de una imagen
foto=imread('animales.jpg');
foto=imnoise(foto,'salt & pepper');
foto_R=foto(:,:,1);
foto_G=foto(:,:,2);
foto_B=foto(:,:,3);
filtro=1/9*[1 1 1;1 1 1;1 1 1];
foto2_R=filter2(filtro,double(foto_R));
foto2_G=filter2(filtro,double(foto_G));
foto2_B=filter2(filtro,double(foto_B));
foto2(:,:,1)=foto2_R;
foto2(:,:,2)=foto2_G;
foto2(:,:,3)=foto2_B;
imshow(uint8(foto))
figure,imshow(uint8(foto2))
3.
4. Ejemplo: Detección de bordes
Se puede realizar similar al caso anterior, definiendo un filtro para
detección de bordes.
La imagen a filtrar debe estar en escala de grises.
Para convertir RGB a escala de grises se utiliza el comando:
Imagen_gray=rgb2gray(Imagen_RGB);
filter=[1 2 1;0 0 0;-1 -2 -1];
Im_RGB=imread('animales.jpg');
Im_gray=rgb2gray(Im_RGB);
Im_edge=filter2(filter,Im_gray);
imshow(Im_RGB);
figure,imshow(Im_edge);
6. Filtro Mediana
Se realiza para atenuar el ruido de una imagen.
Usualmente se aplica a imágenes en escala de grises.
Imagen2=medfilt2(Imagen)
Ejemplo:
Im_RGB=imread('medusa.jpg');
Im_gray=rgb2gray(Im_RGB);
Im_gray=imnoise(Im_gray, 'salt & pepper');
imshow(Im_gray)
Im_filt=medfilt2(Im_gray);
figure, imshow(Im_filt)
7.
8. Detección de Bordes
Se realiza con el comando:
imagen_edge=edge(imagen_gray,’mascara’);
Se requiere que la imagen esté en escala de grises.
mascara es el tipo de mascara a utilizar (sobel, canny,prewit, …) ya
predefinidas en Matlab
Ejemplo:
Se realiza la detección de bordes de una imagen utilizando la
máscara de "sobel".
10. Binarización
Conversión de una imagen en escala de grises a una imagen lógica
(0=negro, 1=blanco).
Se realiza con el comando:
Imagen_bin=imagen<=Umbral
Dónde: Umbral es un número entre 0 y 255.
También se puede usar el siguiente comando cuando se requiere
binarizar una imagen RGB directamente.
Imagen_bin=im2bw(Imagen,level)
Dónde: level es el nivel de umbral entre 0 y 1.
14. Cuenta y Etiquetado de Objetos en una Imagen
Para contar la cantidad de objetos presentes en una imagen se realiza el
procedimiento:
1. Leer la imagen.
2. Convertirla a escala de grises y posteriormente binarizarla.
3. En la imagen binarizada se requiere que los objetos a contar estén en blanco (1) y
con fondo negro (0), si no fuera así se puede aplicar el comando:
Im_bin=not(Im_bin)
4. Ejecutar el siguiente comando para etiquetar los objetos. Cada objeto
encontrado se etiqueta con un número entero: 1, 2, 3,…:
Im_label=bwlabel(Im_bin,C)
Dónde: C=4 u 8 (Conexión)
5. Para obtener el número de objetos:
n=max(max(Im_label))
15. Ejemplo:
Se contará el número de objetos de la siguiente imagen:
Im_RGB=imread('cuadros.jpg');
Im_bin=im2bw(Im_RGB,0.5)
imshow(Im_bin)
Im_bin=not(Im_bin);
figure, imshow(Im_bin)
Im_label=bwlabel(Im_bin,8);
n=max(max(Im_label))
16. Selección de un Objeto
Para seleccionar manualmente un objeto y aislarlo se realiza el
procedimiento:
1. Mostrar la imagen binarizada con el comando imshow.
2. ejecutar el comando:
Im_sel=bwselect(C)
Dónde: C=4 u 8 (Conexión)
3. Clic en el objeto y Enter.
4. Si se desea, desplegar el objeto seleccionado Im_sel.
18. Tarea
1. Sacar Histograma de una imagen.
2. Crear una imagen con todo lo visto en clase pero la imagen deber ser una
foto suya.
3. Captura de Imágenes Mediante Cámaras Conectadas a la Pc.
4. Detección de Bordes de una Imagen
5. Conteo de Objetos
6. Reconocimiento de Caracteres