procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02

61
 PROCESAMIENTO DE IMÁGENES CON MATLAB http://lonely113.blogspot.com 1

Transcript of procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 1/61

PROCESAMIENTO DE

IMÁGENES CON MATLAB

http://lonely113.blogspot.com

1

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 2/61

Lectura de Imágenes

Mediante el comando:

Imagen=imread(‘nombre.extensión’) 

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

Formato Extensión

TIFF .tiff 

JPEG .jpg

GIF .gif 

BMP .bmp

PNG .png

XWD .xwd

http://lonely113.blogspot.com

2

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 3/61

Ejemplo: Lectura de una imagen *.jpg

La imagen "fruta.jpg" se encuentra en el directorio detrabajo.

>> Im_RGB=imread('fruta.jpg');

http://lonely113.blogspot.com

3

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 4/61

Representación de Imágenes en Matlab

En Matlab una imagen en formato de color RGB serepresenta por tres matrices bidimensionales,correspondientes a los planos R, G y B.

1=R 2=G3=B

http://lonely113.blogspot.com

4

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 5/61

Obtención de los Planos RGB

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:

>> Im_R=Im_RGB(:,:,1);>> Im_G=Im_RGB(:,:,2);>> Im_B=Im_RGB(:,:,3);

http://lonely113.blogspot.com

5

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 6/61

Tamaño de la Imagen

Obtención del tamaño de Imagen:

Im_RGB: 600x8003 planos (R,G y B)

>> [m,n,p]=size(Im_RGB)m =

600n =

800p =

3

http://lonely113.blogspot.com

6

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 7/61

Despliegue de Imágenes

Se realiza con el comando:

Imshow(Imagen)

Dónde: Imagen es del tipo uint8.

>> imshow(Im_RGB)

http://lonely113.blogspot.com

7

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 8/61

Escritura de Imágenes

Con el comando:

imwrite(Imagen,’nombre.extensión’) 

>> imwrite(Im_RGB,'imagen.jpg');

http://lonely113.blogspot.com

8

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 9/61

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 pixelcorrespondiente al plano p (1, 2 ó 3).

Dónde: m,n son las coordenadas del pixel.

>> Im_RGB(300,300,1)ans =

255>> Im_RGB(300,300,2)ans =

178>> Im_RGB(300,300,3)ans =

10

http://lonely113.blogspot.com

9

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 10/61

Selección manual y Lectura de Valor dePixel

Mostrar la imagen con el comando imshow. Escribir el comando: pixel=impixel; Clic en el pixel y Enter.

>> imshow(Im_RGB)>> pixel=impixelpixel =

252 144 115

http://lonely113.blogspot.com

10

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 11/61

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 aescala de grises (0=negro y 255=Blanco)

>> Im_RGB(200,750,1)=255;>> Im_RGB(200,750,2)=255;>> Im_RGB(200,750,3)=255;

http://lonely113.blogspot.com

11

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 12/61

Perfil de Imagen

Mostrar la imagen con el comando: imshow . Escribir el comando: improfile Trazar la línea para obtener el perfil en la imagen (clic en inicio y clic en final) y Enter. Si se desea se puede guardar el perfil en una variable. Ejecutando:

perfil=improfile;

>> imshow(Im_RGB)>> improfile

0 50 100 150 200 250 300 350 400 450 5000

50

100

150

200

250

300

Distance along profile

http://lonely113.blogspot.com

12

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 13/61

Submuestreo

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

Se toman pixeles equidistantes (muestras), dependiendo delfactor 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.

a11 a12 a13 a14 a15 a16 a17 a18 … a1n

http://lonely113.blogspot.com

13

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 14/61

Ejemplo: Submuestreo de la imagen Im_RGBpor un factor de 4.

>> Im_sub=Im_RGB(1:4:end,1:4:end,1:1:end);>> imshow(Im_sub)

http://lonely113.blogspot.com

14

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 15/61

Transformación Uint8 - Double

En algunos casos es necesario que la imagen a procesarsea del tipo "double", ya que uint8 admite sólo valoresenteros 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 tipouint8.

http://lonely113.blogspot.com

15

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 16/61

 Ejemplo: Se requiere resaltar el gris en unaimagen por un factor 0.25.

>> Im_double=double(Im_RGB);>> Im_double=Im_double*0.25;>> Im_uint8=uint8(Im_double);>> Imshow(Im_uint8)

http://lonely113.blogspot.com

16

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 17/61

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 loselementos de la matríz de salida.

http://lonely113.blogspot.com

17

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 18/61

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 laimagen a filtrar se debe convertir al tipo double.

El filtraje se debe realizar plano por plano en unaimagen RGB.

Se agrega ruido a una imagen con el comando imnoise.Revisar los archivos de ayuda de Matlab para masinformación.

http://lonely113.blogspot.com

18

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 19/61

Ejemplo: Filtraje promedio

Para eliminar o reducir el ruido de una imagen.

>> foto=imread('fruta.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))

http://lonely113.blogspot.com

19

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 20/61

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('medusa.jpg');>> Im_gray=rgb2gray(Im_RGB);

>> Im_edge=filter2(filter,Im_gray);>> imshow(Im_RGB);>>figure,imshow(Im_edge);

http://lonely113.blogspot.com

20

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 21/61

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('fruta.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)

http://lonely113.blogspot.com

21

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 22/61

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.

http://lonely113.blogspot.com

22

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 23/61

Ejemplo:

Se realiza la detección de bordes de una imagen utilizando la máscara de"sobel".

>> Im_RGB=imread('Penguins.jpg');>> Im_gray=rgb2gray(Im_RGB);>> Im_edge=edge(Im_gray,'sobel');

>> imshow(Im_edge)

http://lonely113.blogspot.com

23

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 24/61

Binarización

Conversión de una imagen en escala de grises a unaimagen 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.

http://lonely113.blogspot.com

24

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 25/61

Ejemplo: Método 1.

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

>> Im_bin=Im_gray>=128

http://lonely113.blogspot.com

25

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 26/61

Ejemplo: Método 2.

>> Im_bin=im2bw(Im_RGB,0.5)

http://lonely113.blogspot.com

26

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 27/61

Erosión y Dilatación

Son las operaciones morfológicas más utilizadas.

DILATACIÓN: Adiciona pixeles en las fronteras de la

imagen.

EROSIÓN: Remueve pixeles de las fronteras de laimagen.

 Ambas operaciones se aplican a imágenes binarizadas.

http://lonely113.blogspot.com

27

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 28/61

Dilatación

Se utiliza el comando:

Result=imdilate(Imagen,SE)

Dónde: SE es la estructura del arreglo a utilizar comorejilla.

Imagen es previamente binarizada.

Existen varias maneras de obtener una estructura SE.Se realiza mediante el comando "strel". Revisar losarchivos de ayuda de Matlab.

http://lonely113.blogspot.com

28

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 29/61

Dilatación

Suponiendo que se utiliza una matriz identidad de orden 3 como rejilla (mostrada con bordes resaltados en la imagen), el resultado de aplicar la operación de dilatación en elpixel que se traslapa con el elemento central de la rejilla es:

"Si alguno de los pixeles de la rejilla configurados como 1 coincide con al menos uno dela imagen el pixel resultante es 1". 

http://lonely113.blogspot.com

29

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 30/61

Ejemplo:

  Aplicando dilatación a una imagen binarizada, utilizando unaestructura generada a partir de una matriz cuadrada de "1" deorden 30.

>> SE=strel('square',30);>> Im_RGB=imread('imagen.jpg');>> Im_gray=rgb2gray(Im_RGB);>> Im_edge=edge(Im_gray,'sobel');>> Im_dilate=imdilate(Im_edge,se);

>> imshow(Im_edge);>> figure,imshow(Im_dilate)

http://lonely113.blogspot.com

30

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 31/61

Erosión

Se utiliza el comando:

Result=imerode(Imagen,SE)

Dónde: SE es la estructura del arreglo a utilizarcomo rejilla.

Imagen es previamente binarizada.

http://lonely113.blogspot.com

31

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 32/61

Erosión

Suponiendo que se utiliza una matriz identidad de orden 3 como rejilla (mostrada con bordes resaltados en la imagen), el resultado de aplicar la operación de erosión en elpixel que se traslapa con el elemento central de la rejilla es:

"Todos los pixeles de la rejilla configurados como 1 deben coincidir con todos los de laimagen, si esto no sucede el resultado del pixel es 0". 

http://lonely113.blogspot.com

32

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 33/61

Ejemplo:

 Aplicando la operación de erosión a la imagen dilatada utilizando unaestructura generada por una matriz cuadrada de "1" de orden 15.

>> SE=strel('square',15);>> Im_erode=imerode(Im_dilate,SE);>> imshow(Im_dilate)>> figure,imshow(Im_erode)

http://lonely113.blogspot.com

33

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 34/61

 Vecindad

Para determinar si dos pixeles son vecinos o no (adyacentes).

 Vecindad-4: Se consideran pixeles conectados en direccionesperpendiculares (arriba, abajo, derecha, izquierda).

 Vecindad-8: Se consideran también los pixeles vecinosdiagonales.

  Vecindad-4 Vecindad-8

http://lonely113.blogspot.com

34

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 35/61

Conectividad

Dos pixeles están con la misma etiqueta están conectados si existe un camino del uno al otro a travésde pixeles vecinos con la misma etiqueta.

La conectividad en Matlab puede ser:

Conexión-4: Se toma en cuenta la vecindad-4 para determinar la conectividad de pixeles.

Conexión-8: Se toma en cuenta la vecindad-8 para determinar la conectividad de pixeles.

ETIQUETADO: Agrupación de pixeles con características similares

Si se elige conectividad conexión-4 se

consideraría como dos objetos diferentes,pero si se elige conectividad conexión-8 seconsideraría como un solo objeto (vecindaddiagonal).

http://lonely113.blogspot.com

35

C E i d d Obj

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 36/61

Cuenta y Etiquetado de Objetos en unaImagen

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

http://lonely113.blogspot.com

36

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 37/61

Ejemplo:

Se contará el número de objetos de la siguiente imagen:

>> Im_RGB=imread('imagen.jpg');

>> Im_bin=im2bw(Im_RGB,0.5)>>imshow(Im_bin)>> Im_bin=not(Im_bin);>> imshow(Im_bin)>> Im_label=bwlabel(Im_bin,8);>> n=max(max(Im_label))

n=5

http://lonely113.blogspot.com

37

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 38/61

Selección de un Objeto

Para seleccionar manualmente un objeto y aislarlo se realizael 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.

http://lonely113.blogspot.com

38

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 39/61

Ejemplo:

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

>> imshow(Im_bin)>> Im_sel=bwselect(8);>> imshow(Im_sel)

http://lonely113.blogspot.com

39

C t d I á M di t Cá

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 40/61

Captura de Imágenes Mediante CámarasConectadas a la Pc

Resulta de suma utilidad para implementar algoritmosde visión o adquisición de imágenes en tiempo realutilizando dispositivos simples y de bajo costo talescomo las webcams.

Matlab incluye el toolbox "Image Acquisition" paraeste fin.

El toolbox incluye la herramienta Image Aquisition tool"imaqtool" que se utilizará posteriormente.

http://lonely113.blogspot.com

40

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 41/61

Obtención de Información del Dispositivo

Comandos a utilizar:

Imaqhwinfo

Devuelve la información del hardware y software disponibles, tales como:  Adaptador de video instalado, versión de Matlab, Toolbox (nombre y  versión).

Imaqhwinfo(‘adaptor’) 

Donde adaptor es el nombre del adaptador instalado, por lo general winvideo. Este comando devuelve información relacionada al adaptador.

Imaqhwinfo(‘adaptor’,DeviceID)

Donde DeviceID es el ID del dispositivo a utilizar obtenido con elcomando anterior. Si sólo se cuenta con un dispositivo conectado elDeviceID será 1. Este comando muestra información del dispositivoconectado (cámara) .

http://lonely113.blogspot.com

41

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 42/61

Ejemplo: Ejecutando los comandos

El adaptador instalado es" winvideo".

Hay un dispositivo deadquisición de imágenesinstalado (DeviceID).

El dispositivo instalado es

una webcam"

ilook300"

.Soporta 13 formatos deadquisición. Formato pordefecto: RGB 640x480.

>> imaqhwinfoans =

InstalledAdaptors: {'winvideo'}MATLABVersion: '7.8 (R2009a)'

ToolboxName: 'Image Acquisition Toolbox'ToolboxVersion: '3.3 (R2009a)‘ 

>> imaqhwinfo('winvideo')

ans =AdaptorDllName: [1x81 char]

AdaptorDllVersion: '3.3 (R2009a)'AdaptorName: 'winvideo'

DeviceIDs: {[1]}DeviceInfo: [1x1 struct]

>> imaqhwinfo('winvideo',1)ans =

DefaultFormat: 'RGB24_640x480'DeviceFileSupported: 0

DeviceName: 'iLook 300'DeviceID: 1

ObjectConstructor: 'videoinput('winvideo', 1)'SupportedFormats: {1x13 cell}

http://lonely113.blogspot.com

42

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 43/61

Preparación del Dispositivo

Crear la estructura:

cam=imaqhwinfo(‘adaptor’,DeviceID)

Para poder obtener las características del dispositivo con facilidad.

Por ejemplo, para obtener los formatos soportados:cam.SupportedFormats

Ejecutar el comando:

 video=videoinput(‘adaptor’,DeviceID,’Format’) 

Construye un objeto de entrada de video (nexo entre el dispositivo y Matlab). Si no se especifica Format se asume el formato por defecto.

http://lonely113.blogspot.com

43

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 44/61

Ejemplo: Preparación de dispositivo

>> cam=imaqhwinfo('winvideo',1);

>> cam.SupportedFormats

ans =

Columns 1 through 4'I420_160x120' 'I420_176x144' 'I420_320x240' 'I420_352x288'Columns 5 through 8

'I420_640x480' 'RGB24_1280x960' 'RGB24_1600x1200''RGB24_160x120'

Columns 9 through 12'RGB24_176x144' 'RGB24_320x240' 'RGB24_352x288'

'RGB24_640x480'Column 13

'RGB24_800x600'

>> video=videoinput('winvideo',1,'RGB24_640x480');

http://lonely113.blogspot.com

44

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 45/61

Pre - Visualización

Para desplegar la pre-visualización de las imágenes a capturar ejecutar elcomando:

preview(video) 

>> preview(video)

http://lonely113.blogspot.com

45

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 46/61

Captura

Para capturar una imagen ejecutar:

Image=getsnapshot(‘cam’) 

>> foto=getsnapshot(video);>> imshow(foto)

http://lonely113.blogspot.com

46

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 47/61

Image Acquisition tool

Facilita el trabajo de realizar la captura de imágenes mediante línea de comandos.

Para acceder a esta herramienta ejecutar:

imaqtool

>> imaqtool

http://lonely113.blogspot.com

47

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 48/61

 Aplicaciones

Se presentan 3 aplicaciones sencillas del procesamiento deimágenes:

1. Detección de bordes de una imagen.

2. Cuenta de objetos de características similarespresentes en una imagen.

3. Reconocimiento Óptico de Caracteres (OCR) medianteun algoritmo implementado por terceros.

En todos los casos las imágenes serán obtenidas medianteuna cámara web.

http://lonely113.blogspot.com

48

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 49/61

No se especifica formato de captura, entonces se asume el formato pordefecto (RGB 640x480).

Las imágenes obtenidas paso a paso se muestran en la siguientediapositiva.

>> cam=imaqhwinfo(‘winvideo’,1); >> video=videoinput('winvideo',1);>> preview(video)>> Im_RGB=getsnapshot(video);>> imshow(Im_RGB)>> Im_gray=rgb2gray(Im_RGB);

>> Im_gray=medfilt2(Im_gray);>> figure,imshow(Im_gray)>> Im_edge=edge(Im_gray,'sobel');>> figure,imshow(Im_edge)>>Im_edge2=not(Im_edge);>> figure,imshow(Im_edge2)

http://lonely113.blogspot.com

1. Detección de bordes de una imagen 49

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 50/61

Im_RGB Im_gray 

Im_edge Im_edge2

http://lonely113.blogspot.com

1. Detección de Bordes de una Imagen 50

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 51/61

2. Conteo de Objetos

Se desea contar el número de transistores en laimagen.

Para ello se utiliza el etiquetado de objetos, pero elproblema es que si no se realiza tratamiento previotambién se etiquetarán los pines de cada transistor.

Para resolver este problema primero se aplican lasoperaciones de erosión (hasta que desaparezcan lospines y solo quede el cuerpo) y luego dilatación (paraobtener objetos a contar de regular tamaño).

http://lonely113.blogspot.com

51

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 52/61

2. Conteo de Objetos

>> cam=imaqhwinfo(‘winvideo’,1); >> video=videoinput(‘winvideo’,1); >> Im_RGB=getsnapshot(video);>> imshow(Im_RGB)>> Im_bin=im2bw(Im_RGB,0.5);>> figure, imshow(Im_bin)>> Im_bin2=not(Im_bin);>> figure, imshow(Im_bin2)>> SE=strel('square',10);>> Im_erode=imerode(Im_bin2,SE);>> figure, imshow(Im_erode)>> Im_dilate=imdilate(Im_erode,SE);

>> figure,imshow(Im_dilate)>> Im_label=bwlabel(Im_dilate,8);>> n=max(max(Im_label))n =

10

http://lonely113.blogspot.com

52

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 53/61

2. Conteo de Objetos

Im_RGB Im_bin

http://lonely113.blogspot.com

53

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 54/61

2. Conteo de Objetos

La imagen se invierte parapoder seguir con elprocedimiento de tratamiento

de imagen.

Si no se aplica erosión seetiquetaría cada objetoaislado, dando como resultadoun número de objetos muy superior al real.

Im_bin2

http://lonely113.blogspot.com

54

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 55/61

2. Conteo de Objetos

Con estas dos operaciones se obtiene sólo el cuerpo de los transistores en sutamaño original, los pines ya fueros desechados. La imagen está lista ahora para eletiquetado y conteo.

Im_erode Im_dilate

http://lonely113.blogspot.com

55

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 56/61

3. Reconocimiento de Caracteres

Se desea reconocer los caracteres presentes en una imagenadquirida mediante la webcam y almacenar el texto en un archivo.txt.

El algoritmo OCR utilizar se obtuvo de la página:

http://www.matpic.com/esp/matlab/ocr.html. Para usar el algoritmo los archivos a descargados se deben copiar

a la carpeta de trabajo de Matlab.

La imagen se debe guardar con el nombre "TEST_1.jpg". Loscaracteres deben estar en mayúsculas en negro y fondo blanco.

Una vez hecho esto ejecutar el comando:

OCR  

http://lonely113.blogspot.com

56

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 57/61

3. Reconocimiento de Caracteres

>> cam=imaqhwinfo('winvideo',1);>> video=videoinput('winvideo',1);>> preview(video)>> text=getsnapshot(video);>> imshow(text)

>> text_bin=im2bw(text,0.5);>> figure,imshow(text_bin)>> SE=strel('square',5);>> text_erode=imerode(text_bin,SE);>> figure,imshow(text_erode)>> text_dilate=imdilate(text_erode,SE);

>> figure,imshow(text_dilate)>> text_fin=not(text_dilate);>> figure,imshow(text_fin)>> imwrite(text_fin,'TEST_1.jpg');>> ocr

http://lonely113.blogspot.com

57

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 58/61

3. Reconocimiento de Caracteres

text_bin contiene elementos no deseados (puntos blancos) que podrían perjudicar el procesode reconocimiento de caracteres. Estos elementos se eliminan aplicando la operación deerosión.

text text_bin

http://lonely113.blogspot.com

58

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 59/61

3. Reconocimiento de Caracteres

Enseguida se aplica la operación de dilatación para contrarrestar elefecto de la erosión en el texto.

text_erode text_dilate

http://lonely113.blogspot.com

59

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 60/61

3. Reconocimiento de Caracteres

Es necesario que el texto esté en negro con fondo blanco paraaplicar el algoritmo.

text_fin

http://lonely113.blogspot.com

60

5/11/2018 procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 - slidepdf.com

http://slidepdf.com/reader/full/procesamientodigitaldeimgenesconmatlab-110215205203-phpapp02 61/61