19
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.

C05

Embed Size (px)

Citation preview

Page 1: C05

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.

Page 2: C05

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))

Page 3: C05
Page 4: C05

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);

Page 5: C05

Solo que aquí se cambia el nombre de la imagen medusa

Page 6: C05

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)

Page 7: C05
Page 8: C05

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".

Page 9: C05

Im_RGB=imread('medusa.jpg');imshow(Im_RGB)Im_gray=rgb2gray(Im_RGB);figure, imshow(Im_gray)Im_edge=edge(Im_gray,'sobel');figure, imshow(Im_edge)

Page 10: C05

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.

Page 11: C05

Ejemplo: Método 1.

Binarización de una imagen con un umbral de 128.

Im_bin = Im_gray>=128imshow(Im_bin)

Page 12: C05

Im_RGB=imread('animales.jpg'); Im_gray=rgb2gray(Im_RGB);Im_bin = Im_gray>=128imshow(Im_gray)figure, imshow(Im_bin)

Page 13: C05

Ejemplo: Método 2.

m_bin=im2bw(Im_RGB,0.5)imshow(m_bin)

Page 14: C05

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))

Page 15: C05

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))

Page 16: C05

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.

Page 17: C05

imshow(Im_bin)Im_sel=bwselect(8);figure, imshow(Im_sel)

Se selecciona el objeto inferior derecho y se aísla en la variable Im_sel.

Page 18: C05

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

Page 19: C05

Gracias por su atención