25
PROCESAMIENTO DE IMÁGENES CON MATLAB Lectura de Imágenes Mediante el comando: Imagen=imread(‘nombre.extensión’) %Imagen es el nombre donde va almacenar la imagen. La imagen a leer debe encontrarse en la carpeta de trabajo de Matlab. Los formatos de imagen soportados por Matlab son: Imagen=imread('equipo.jpg')

Clase 4

Embed Size (px)

Citation preview

Page 1: Clase 4

PROCESAMIENTO DE IMÁGENES CON MATLAB Lectura de Imágenes

Mediante el comando:

Imagen=imread(‘nombre.extensión’) %Imagen es el nombre donde va almacenar la imagen.

La imagen a leer debe encontrarse en la carpeta de trabajo de Matlab. Los formatos de imagen soportados por Matlab son:

Imagen=imread('equipo.jpg')

Page 2: Clase 4

Representación de Imágenes en Matlab En Matlab una imagen en formato de color RGB se representa por tres matrices bidimensionales, correspondientes a los planos R, G y B.

Para obtener los planos R, G y B se ejecutan los comandos: Im_R=Imagen(:,:,1) Im_G=Imagen(:,:,2) Im_B=Imagen(:,:,3) Ejemplo:

Page 3: Clase 4

Tamaño de la Imagen Obtención del tamaño de Imagen:

[m,n,p]=size(Imagen)

Imagen: 197x256x 3 3 planos (R,G y B)

Page 4: Clase 4

Despliegue de Imágenes

Se realiza con el comando: imshow(Imagen)% esta palabra sirve para abrir la

imagen

Dónde: Imagen es del tipo uint8. Escritura de Imágenes ósea copiamos la imagen uno en la dos Con el comando:

imwrite(Imagen,'imagen.jpg');

Page 5: Clase 4

Lectura de Valor de Pixeles

Obtención de valor de pixel Imagen(m,n) ; Cuando Imagen está en escala de grises (un solo plano). Imagen(m,n,p) ; Para imagen RGB. Devuelve el valor del pixel correspondiente al plano p (1, 2 ó 3). Dónde: m,n son las coordenadas del pixel. imshow(Imagen)pixel=impixel

Page 6: Clase 4

Edición de Pixeles Para modificar el valor de un pixel: Imagen(m,n)=x ; Para una imagen en escala de grises. imagen(m,n,p)=x ; Para una imagen RGB. Dónde: x es un número entero entre 0 y 255 correspondiente a escala de grises (0=negro y 255=Blanco)

imshow(Imagen)pixel=impixelImagen(200,750,1)=250;Imagen(200,750,2)=250;Imagen(200,750,3)=250;

Page 7: Clase 4

Al dar doble clic sale la imagen de los pixeles de la marcas en la figura 1

Page 8: Clase 4

Submuestreo

Submuestrear una imagen reduce su tamaño y permite que el procesamiento posterior de la imagen se agilice.

Se toman pixeles equidistantes (muestras), dependiendo del factor elegido, y se desecha el resto de pixeles.

Imagen_ sub=Imagen(1:a:end,1:a:end,1:1:end) Dónde: a es el factor de muestreo. Si a=2 la imagen se reduce a la mitad.

Page 9: Clase 4

Ejemplo: Submuestreo de la imagen Imagen.m por un factor de 4.

Im_sub=Imagen(1:4:end,1:4:end,1:1:end);imshow(Im_sub)

Page 10: Clase 4

Transformación Uint8 - Double En algunos casos es necesario que la imagen a procesar sea del tipo "double", ya que uint8 admite sólo valores enteros entre 0 y 255.

Para transformar de uint8 a double y viceversa: Imagen_double=double(Imagen_uint8) Imagen_uint8=uint8(Imagen_double)

El comando imshow sólo muestra imágenes del tipo uint8.

% código aIm_double=double(Imagen);Im_double=Im_double*0.25;Im_uint8=uint8(Im_double);imshow(Im_double)

%código bIm_double=double(Imagen);Im_double=Im_double*0.25;Im_uint8=uint8(Im_double);imshow(Im_uint8)

Corran primero el código a después el código b

Page 11: Clase 4

Filtraje

Se realiza mediante convolución de matrices. Dónde: Imagen es la matríz a filtrar. f es la matríz filtro. b11,b12,…,bmn son los elementos de la matríz de salida.

Page 12: Clase 4

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 13: Clase 4

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 14: Clase 4
Page 15: Clase 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);

Page 16: Clase 4

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

Page 17: Clase 4

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 18: Clase 4
Page 19: Clase 4

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 20: Clase 4

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 21: Clase 4

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 22: Clase 4

Ejemplo: Método 1.

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

Im_bin = Im_gray>=128imshow(Im_bin)

Page 23: Clase 4

Ejemplo: Método 2.

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

Page 24: Clase 4

Ejercicios

1. Sacar Histograma de una imagen.2.Crear una imagen con todo lo visto en clase pero la imagen deber ser una foto suya.

Page 25: Clase 4

Gracias por su atención