Procesamiento digital de imágenes con matlab
Upcoming SlideShare
Loading in...5
×
 

Procesamiento digital de imágenes con matlab

on

  • 109,252 views

Procesamiento digital de imágenes con Matlab

Procesamiento digital de imágenes con Matlab

Statistics

Views

Total Views
109,252
Views on SlideShare
106,581
Embed Views
2,671

Actions

Likes
40
Downloads
4,817
Comments
20

32 Embeds 2,671

http://lonely113.blogspot.com 1222
http://avidelbigoti.blogspot.com.es 417
http://fotoacustica.wikispaces.com 390
http://lonely113.blogspot.mx 296
http://lonely113.blogspot.com.es 142
http://lonely113.blogspot.com.ar 84
http://ced.ucla.edu.ve 26
http://sistemasmultimediasymkkdlf.blogspot.com 19
http://lonely113.blogspot.com.br 15
http://avidelbigoti.blogspot.com 11
http://lonely113.blogspot.fr 7
http://www.avidelbigoti.blogspot.com.es 5
http://lonely113.blogspot.ro 4
http://intensivenyess10.katinia.com 4
http://lonely113.blogspot.de 3
http://lonely113.blogspot.it 3
http://avidelbigoti.blogspot.fr 3
https://twitter.com 2
http://lonely113.blogspot.in 2
http://lonely113.blogspot.ca 2
http://avidelbigoti.blogspot.gr 2
http://translate.googleusercontent.com 2
http://bigoti1.rssing.com 1
http://www.linkedin.com 1
http://sistemasmultimediasymkkdlf.blogspot.com.es 1
http://avidelbigoti.blogspot.de 1
http://avidelbigoti.blogspot.it 1
http://avidelbigoti.blogspot.com.br 1
http://avidelbigoti.blogspot.com.ar 1
http://lonely113.blogspot.be 1
http://lonely113.blogspot.co.il 1
http://sistemasmultimediasymkkdlf.blogspot.mx 1
More...

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

110 of 20 Post a comment

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Hola a todos, estoy creando un pequeño blog con toda la informacion referente al procesado de imágenes mediante la herramienta Matlab y quedria que vierais el blog, lo comentárais y pregunteis dudas o añadais sugerencias de cosas que podría realizar con las imágenes:

    http://matlabimagenes.blogspot.com.es/

    Para más informacion contactar por correo electrónico: nachete1993@gmail.com
    Are you sure you want to
    Your message goes here
    Processing…
  • @anamariagil77 yo hice un trabajo con redes neuronales para el reconocimiento de caracteres y de lo que más me sirvió fue la página de www.mathworks.com. Cuesta encontrar la información porque tiene demasiadas cosas y otra complicación es que está en ingles.
    Are you sure you want to
    Your message goes here
    Processing…
  • gracias victoria por tu respuesta, estoy buscando computacion en la nube para el procesamiento y analisis de imagenes y no encuentro muy buena informacion. no conocen algun articulo, blog, trabajo que me pueda servir.
    Are you sure you want to
    Your message goes here
    Processing…
  • Muy buen aporte!
    Are you sure you want to
    Your message goes here
    Processing…
  • @anamariagil77
    Suponiendo que tenes un arreglo Mat con todas tus imágenes le asignas por ejemplo la primer del arreglo a una variable haciendo
    I = Mat(:,1)

    Si queres armar un arreglo con más imágenes del primero usas los :, por ejemplo para asignar las primeras 24 imagenes:
    I = Mat(:,1:24)

    Tené en cuenta que el arreglo Mat contiene los datos de las imágenes ubicados por columnas por eso los : van en el lugar de la fila, para que traslade todos los datos de la imagen de la columna que indicas con el número.
    Espero haberme explicado bien y que te sirva!
    Are you sure you want to
    Your message goes here
    Processing…

110 of 20

Post Comment
Edit your comment

Procesamiento digital de imágenes con matlab Procesamiento digital de imágenes con matlab Presentation Transcript

  • PROCESAMIENTO DE IMÁGENES CON MATLAB 1http://lonely113.blogspot.com
  • Lectura de Imágenes 2Mediante 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 .xwdhttp://lonely113.blogspot.com
  • Ejemplo: Lectura de una imagen *.jpg 3La imagen "fruta.jpg" se encuentra en el directorio detrabajo. >> Im_RGB=imread(fruta.jpg);http://lonely113.blogspot.com
  • Representación de Imágenes en Matlab 4En Matlab una imagen en formato de color RGB serepresenta por tres matrices bidimensionales,correspondientes a los planos R, G y B. 1=R 2=G 3=Bhttp://lonely113.blogspot.com
  • Obtención de los Planos RGB 5Para 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
  • Tamaño de la Imagen 6Obtención del tamaño de Imagen: >> [m,n,p]=size(Im_RGB) m= 600 n= 800 p= 3 Im_RGB: 600x800 3 planos (R,G y B)http://lonely113.blogspot.com
  • Despliegue de Imágenes 7Se realiza con el comando: Imshow(Imagen) Dónde: Imagen es del tipo uint8. >> imshow(Im_RGB)http://lonely113.blogspot.com
  • Escritura de Imágenes 8Con el comando: imwrite(Imagen,’nombre.extensión’) >> imwrite(Im_RGB,imagen.jpg);http://lonely113.blogspot.com
  • Lectura de Valor de Pixeles 9Obtenció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. >> Im_RGB(300,300,1) ans = 255 >> Im_RGB(300,300,2) ans = 178 >> Im_RGB(300,300,3) ans = 10http://lonely113.blogspot.com
  • Selección manual y Lectura de Valor de Pixel 10 Mostrar la imagen con el comando imshow. Escribir el comando: pixel=impixel; Clic en el pixel y Enter. >> imshow(Im_RGB) >> pixel=impixel pixel = 252 144 115http://lonely113.blogspot.com
  • Edición de Pixeles 11Para 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) >> Im_RGB(200,750,1)=255; >> Im_RGB(200,750,2)=255; >> Im_RGB(200,750,3)=255;http://lonely113.blogspot.com
  • Perfil de Imagen 12 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; 300 >> imshow(Im_RGB) >> improfile 250 200 150 100 50 0 0 50 100 150 200 250 300 350 400 450 500 Distance along profile http://lonely113.blogspot.com
  • Submuestreo 13Submuestrear una imagen reduce su tamaño y permite queel procesamiento posterior de la imagen se agilice. a11 a12 a13 a14 a15 a16 a17 a18 … a1nSe 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.http://lonely113.blogspot.com
  • Ejemplo: Submuestreo de la imagen Im_RGBpor un factor de 4. 14 >> Im_sub=Im_RGB(1:4:end,1:4:end,1:1:end); >> imshow(Im_sub)http://lonely113.blogspot.com
  • Transformación Uint8 - Double 15 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. http://lonely113.blogspot.com
  • Ejemplo: Se requiere resaltar el gris en unaimagen por un factor 0.25. 16>> Im_double=double(Im_RGB);>> Im_double=Im_double*0.25;>> Im_uint8=uint8(Im_double);>> Imshow(Im_uint8)http://lonely113.blogspot.com
  • Filtraje 17Se 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.http://lonely113.blogspot.com
  • Filtraje 18 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.http://lonely113.blogspot.com
  • Ejemplo: Filtraje promedio 19Para 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
  • Ejemplo: Detección de bordes. 20 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
  • Filtro Mediana 21 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
  • Detección de Bordes 22 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
  • Ejemplo: 23Se 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
  • Binarización 24 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.http://lonely113.blogspot.com
  • Ejemplo: Método 1. 25Binarización de una imagen con un umbral de 128. >> Im_bin=Im_gray>=128http://lonely113.blogspot.com
  • Ejemplo: Método 2. 26 >> Im_bin=im2bw(Im_RGB,0.5)http://lonely113.blogspot.com
  • Erosión y Dilatación 27Son 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 la imagen.Ambas operaciones se aplican a imágenes binarizadas.http://lonely113.blogspot.com
  • Dilatación 28Se utiliza el comando: Result=imdilate(Imagen,SE) Dónde: SE es la estructura del arreglo a utilizar como rejilla. 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
  • Dilatación 29Suponiendo que se utiliza una matriz identidad de orden 3 como rejilla (mostrada conbordes 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
  • Ejemplo: 30Aplicando 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
  • Erosión 31Se utiliza el comando: Result=imerode(Imagen,SE) Dónde: SE es la estructura del arreglo a utilizar como rejilla. Imagen es previamente binarizada.http://lonely113.blogspot.com
  • Erosión 32Suponiendo que se utiliza una matriz identidad de orden 3 como rejilla (mostrada conbordes 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
  • Ejemplo: 33Aplicando 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
  • Vecindad 34Para 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-8http://lonely113.blogspot.com
  • Conectividad 35Dos 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 se consideraría como un solo objeto (vecindad diagonal).http://lonely113.blogspot.com
  • Cuenta y Etiquetado de Objetos en una Imagen 36Para 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))http://lonely113.blogspot.com
  • Ejemplo: 37Se 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= 5http://lonely113.blogspot.com
  • Selección de un Objeto 38Para 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
  • Ejemplo: 39Se selecciona el objeto inferior derecho y se aísla en lavariable Im_sel. >> imshow(Im_bin) >> Im_sel=bwselect(8); >> imshow(Im_sel)http://lonely113.blogspot.com
  • Captura de Imágenes Mediante Cámaras Conectadas a la Pc 40Resulta 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
  • Obtención de Información del Dispositivo 41Comandos 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 el comando anterior. Si sólo se cuenta con un dispositivo conectado el DeviceID será 1. Este comando muestra información del dispositivo conectado (cámara) .http://lonely113.blogspot.com
  • Ejemplo: Ejecutando los comandos 42 >> imaqhwinfo ans = InstalledAdaptors: {winvideo} El adaptador instalado es MATLABVersion: 7.8 (R2009a) "winvideo". ToolboxName: Image Acquisition Toolbox ToolboxVersion: 3.3 (R2009a)‘ >> imaqhwinfo(winvideo) Hay un dispositivo de ans = AdaptorDllName: [1x81 char] adquisición de imágenes AdaptorDllVersion: 3.3 (R2009a) AdaptorName: winvideo instalado (DeviceID). DeviceIDs: {[1]} DeviceInfo: [1x1 struct] >> imaqhwinfo(winvideo,1) El dispositivo instalado es ans = DefaultFormat: RGB24_640x480 una webcam "ilook300". DeviceFileSupported: 0 Soporta 13 formatos de DeviceName: iLook 300 DeviceID: 1 adquisición. Formato por ObjectConstructor: videoinput(winvideo, 1) SupportedFormats: {1x13 cell} defecto: RGB 640x480.http://lonely113.blogspot.com
  • Preparación del Dispositivo 43 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
  • Ejemplo: Preparación de dispositivo 44 >> 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
  • Pre - Visualización 45Para desplegar la pre-visualización de las imágenes a capturar ejecutar elcomando: preview(video) >> preview(video)http://lonely113.blogspot.com
  • Captura 46Para capturar una imagen ejecutar: Image=getsnapshot(‘cam’) >> foto=getsnapshot(video); >> imshow(foto)http://lonely113.blogspot.com
  • Image Acquisition tool 47Facilita el trabajo de realizar la captura de imágenes mediante línea de comandos.Para acceder a esta herramienta ejecutar: imaqtool >> imaqtoolhttp://lonely113.blogspot.com
  • Aplicaciones 48 Se presentan 3 aplicaciones sencillas del procesamiento de imágenes: 1. Detección de bordes de una imagen. 2. Cuenta de objetos de características similares presentes en una imagen. 3. Reconocimiento Óptico de Caracteres (OCR) mediante un algoritmo implementado por terceros. En todos los casos las imágenes serán obtenidas mediante una cámara web.http://lonely113.blogspot.com
  • 1. Detección de bordes de una imagen 49 >> 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) No se especifica formato de captura, entonces se asume el formato por defecto (RGB 640x480). Las imágenes obtenidas paso a paso se muestran en la siguiente diapositiva.http://lonely113.blogspot.com
  • 1. Detección de Bordes de una Imagen 50 Im_RGB Im_gray Im_edge Im_edge2http://lonely113.blogspot.com
  • 2. Conteo de Objetos 51 Se desea contar el número de transistores en la imagen. Para ello se utiliza el etiquetado de objetos, pero el problema es que si no se realiza tratamiento previo también se etiquetarán los pines de cada transistor. Para resolver este problema primero se aplican las operaciones de erosión (hasta que desaparezcan los pines y solo quede el cuerpo) y luego dilatación (para obtener objetos a contar de regular tamaño).http://lonely113.blogspot.com
  • 2. Conteo de Objetos 52 >> 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= 10http://lonely113.blogspot.com
  • 2. Conteo de Objetos 53 Im_RGB Im_binhttp://lonely113.blogspot.com
  • 2. Conteo de Objetos 54 La imagen se invierte para poder seguir con el procedimiento de tratamiento de imagen. Si no se aplica erosión se etiquetaría cada objeto aislado, dando como resultado un número de objetos muy superior al real. Im_bin2http://lonely113.blogspot.com
  • 2. Conteo de Objetos 55 Im_erode Im_dilate Con estas dos operaciones se obtiene sólo el cuerpo de los transistores en su tamaño original, los pines ya fueros desechados. La imagen está lista ahora para el etiquetado y conteo.http://lonely113.blogspot.com
  • 3. Reconocimiento de Caracteres 56  Se desea reconocer los caracteres presentes en una imagen adquirida 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". Los caracteres deben estar en mayúsculas en negro y fondo blanco.  Una vez hecho esto ejecutar el comando: OCRhttp://lonely113.blogspot.com
  • 3. Reconocimiento de Caracteres 57 >> 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); >> ocrhttp://lonely113.blogspot.com
  • 3. Reconocimiento de Caracteres 58 text text_bin text_bin contiene elementos no deseados (puntos blancos) que podrían perjudicar el proceso de reconocimiento de caracteres. Estos elementos se eliminan aplicando la operación de erosión.http://lonely113.blogspot.com
  • 3. Reconocimiento de Caracteres 59 text_erode text_dilate Enseguida se aplica la operación de dilatación para contrarrestar el efecto de la erosión en el texto.http://lonely113.blogspot.com
  • 3. Reconocimiento de Caracteres 60 text_fin Es necesario que el texto esté en negro con fondo blanco para aplicar el algoritmo.http://lonely113.blogspot.com
  • http://lonely113.blogspot.com 61