SlideShare una empresa de Scribd logo
1 de 9
Descargar para leer sin conexión
Sandra Lucía de la Fuente Bermúdez
Análisis de imágenes
Dr. José Joel González Barbosa.
CICATA – IPN Unidad Querétaro.
2014-06-01
Tarea. Reconocimiento de Letras
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página1
Resumen. El presente documento, reporta una metodología para la detección de letras T
y Y, utilizando diversas herramientas vistas en el curso de análisis de imágenes.
Introducción
La detección y reconocimiento de objetos/características por medio de
imágenes, es una técnica muy utilizada, debido a su alta efectividad y a que es un
método no abrasivo. Es utilizado en la industria (i.e. en la detección de fallas y
esfuerzos mecánicos), en medicina (i.e. en la detección de lesiones y
enfermedades), y en la construcción (i.e. en la detección de fallas en el
pavimento), por mencionar algunas aplicaciones. Este reporte sugiere el
reconocimiento de letras T y Y, por medio de detección de líneas mediante la
transformada de Hough. Esta solución es muy sencilla, debido al alcance de la
tarea.
Desarrollo
La imagen se procesa como se muestra en el diagrama de la figura 1.
Figura 1. Diagrama de procesamiento digital de imágenes.
Obtención de la
imagen
Preprocesamiento Segmentación
Detección de
CaracterísticasClasificación
Resultado/
diagnóstico
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página2
La imagen (figura 2) utilizada fué editada en CorelDraw® en formato .PNG para
una mejor detección de contornos.
Figura 2. Imagen original.
Para el pre-procesamiento, se binarizó la imagen (figura 3), mediante la detección
automática del umbral mediante la técnica de Otsu [1,2], preparando la imagen
para la segmentación.
Figura 3. Imagen binarizada.
Para la segmentación, antes identifico los objetos, es decir la cantidad de letras,
en la imagen mediante la función bwconncomp (bw,n), donde bw es la imagen
binaria, y n es el parámetro de conectividad (4, 8, o arbitrario). La función
bwconncomp encuentra todos los objetos conectados en una imagen binaria [3].
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página3
Seguido de la detección de objetos, cada objeto es etiquetado con el mismo valor
entero, para este caso, lo llamamos image (ver código). Posteriormente, es
mostrado gráficamente cada objeto, para ser recortado de manera personalizada
(figura 4) y hacer más eficiente en tiempo y memoria la ejecución del código.
Figura 4. Recorte personalizado de la letra detectada.
Seguido de esto, se procede a la detección de bordes mediante el cálculo del
gradiente del objeto, para simplificar el proceso (figura 5).
Figura 5. Borde del objeto.
Para la detección de características, se obtiene el número de líneas de longitud
mínima a la mitad del largo de la letra, basado en la transformada de Hough [4-6].
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página4
Código
%% Limpieza del código
clear all; close all; imtool close all; clc; warning off
%% Inicialización de variables
Ix=[-1,0,1; -1,0,1;-1,0,1]; Iy=Ix';
n_t=0; n_y=0;
%% Obtención de la imagen
I=imread('Letras.png');
%% Pre-procesamiento
level=graythresh(I);
Ibin = im2bw(I, level); % Binarización de imagen
set(0,'DefaultFigureWindowStyle','docked'),
figure(1), imshow(Ibin), title(['fontsize{20}{color[rgb]{0 .5 .4}Imagen
original binarizada}']);
%% Segmentación
% Detección de objetos
cc=bwconncomp(Ibin,8); % Detección de objetos con 8 vecindades
cc.NumObjects; % Número de objetos detectados
% Etiquetado de objetos
for (n=1:cc.NumObjects)
image{n} = false(size(Ibin));
image{n}(cc.PixelIdxList{n}) = true;
figure, imshow(image{n}),
title(['fontsize{20}{color[rgb]{.2 .5 .2}Seleccione la zona de interés
de la imagen}']);
image{n}=imcrop; %Recorte de imagen (para incrementar la rapidez de
procesamiento).
end
close all, clc % Limpieza
%% Detección de características:
figure(1), imshow(Ibin), title(['fontsize{20}{color[rgb]{0 .5 .4}Imagen
original binarizada}']);
for (n=1:cc.NumObjects)
ima = double(image{n});
% Detección de bordes:
Convf_x= conv2(ima,Ix,'same');
Convf_y= conv2(ima,Iy,'same');
Gradientef{n}=sqrt((power(Convf_x,2))+(power(Convf_y,2)));% Gradiente de
la imagen
% figure ('Name', 'Gradiente'), imshow(Gradientef{n}), title('Detección
de contornos: Gradiente');
BW=Gradientef{n};
%% Identificación de línea mayor en el objeto, por medio de Hough, para
establecer un patrón de umbral en la detección de líneas (esto permite
detectar líneas en base a la proporción del tamaño particular del
objeto/letra de estudio):
[H,T,R] = hough(BW); % Transformada de Hough
P = houghpeaks(H,6,'threshold',ceil(0.3*max(H(:))));% Identificación de
picos/ puntos de inflexión en la transformada de Hough
x = T(P(:,2)); y = R(P(:,1));
% Extracción de segmentos de líneas en base a la transformada de Hough
lines = houghlines(BW,T,R,P,'FillGap',100,'MinLength',200); % Find lines
and plot them
max_len = 0;
%% Identificación de líneas por medio de Hough:
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página5
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
len = norm(lines(k).point1 - lines(k).point2); % Determine the
endpoints of the longest line segment
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
BW=Gradientef{n}; %% Ajuste de detección de líneas para cada imagen:
[H,T,R] = hough(BW); % Transformada de Hough
P = houghpeaks(H,6,'threshold',ceil(0.3*max(H(:)))); % Identificación de
picos/ puntos de inflexión en la transformada de Hough
x = T(P(:,2)); y = R(P(:,1));
% Extracción de segmentos de líneas en base a la transformada de Hough
lines = houghlines(BW,T,R,P,'FillGap',100,'MinLength',max_len/2); %Ajuste
de detección de líneas: el umbral es la mitad de la longitud de la línea
mayor detectada.
figure, imshow(BW), hold on
max_len = 0;
%% Representación gráfica de las líneas detectadas:
for k = 1:length(lines)
xy = [lines(k).point1; lines(k).point2];
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); % Plot
beginnings and ends of lines
plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red');
len = norm(lines(k).point1 - lines(k).point2); % Determine the
endpoints of the longest line segment
if ( len > max_len)
max_len = len;
xy_long = xy;
end
end
%% Clasificación
if(length(lines)==4) %Si existen cuatro líneas, se trata de una T, en
otro caso, se trata de una Y.
title(['fontsize{18}{color[rgb]{.3 .3 .7}Tenemos una T}'])
Str=sprintf('Nota: el número de líneas detectadas para la figura
%g=%g. La letra detectada es una T!',n,length(lines));
n_t=n_t+1;
else
title(['fontsize{18}{color[rgb]{.3 .3 .7}Tenemos una Y}'])
Str=sprintf('Nota: el número de líneas detectadas para la figura
%g=%g. La letra detectada es una Y!',n,length(lines));
n_y=n_y+1;
end
annotation('textbox', [0,0,0.1,0.1],...
'String', Str);
end
%% Resultado
Str_f=sprintf('Tenemos un total de %g letras T y %g letras Y en la
figura.',n_t,n_y);
figure (1),
annotation('textbox', [0,0,0.1,0.1],...
'String', Str_f);
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página6
Resultados
Después de extraer el número de líneas de cada objeto, se procede a su
clasificación. Se tiene la característica principal que, para cada letra T involucrada
en el procesamiento, sin excepción, presenta cuatro líneas (figura 6), mientras
que para cada letra Y procesada, sin excepción, presenta 6, y en un caso singular,
5 líneas (figura 7). De aquí se definen los términos para clasificar la letra T y Y.
Figura 6. Detección de letra T.
Figura 7. Detección de letra Y.
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página7
La clasificación anterior nos permite definir la cantidad de letras T y Y en la imagen
(figura 8).
Figura 8. Resultado de imagen 1.
Como estudio adicional, genero una imagen similar con rotaciones en las letras y
variaciones en las proporciones típicas, el resultado es satisfactorio (figura 9).
Figura 9. Resultado de la imagen 2.
Análisis de imágenes. CICATA – IPN, Unidad Qro.
Página8
Conclusiones
Después de analizar varias características (detección de la zona de cruce de
líneas en cada letra por máscara, transformada particular de Fourier, y número de
líneas), se decidió conveniente y práctico analizar la imagen clasificando la letra
según la cantidad de líneas en el objeto de estudio; este método es funcional,
rápido, y eficiente. Se cubrió la necesidad del alcance planteada, de manera
robusta, siempre y cuando la imagen esté en formato PNG.
Si la imagen se encuentra en formato JPEG, se deberá adaptar el código para una
correcta detección de líneas.
No se realizaron pruebas en imágenes con otros caractéres.
Referencias
[1] X. Xu, S. Xu, L. Jin, and E. Song. “Characteristic analysis of Otsu threshold and its
applications,” ELSEVIER. China, 2010.
[2] MathWorks. “Im2bw,” Matlab Documentation Center (mathworks.com).
[3] MathWorks. “Image Processing Toolbox 7. User’s Guide,” MATLAB.
[4] MathWorks. “hough,” Matlab Documentation Center (mathworks.com).
[5] MathWorks. “houghpeaks,” Matlab Documentation Center (mathworks.com).
[6] MathWorks. “houghlines,” Matlab Documentation Center (mathworks.com).

Más contenido relacionado

La actualidad más candente

Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2jcbp_peru
 
Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii
 Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii
Utp pdiva_lab4_procesamiento digital de imagenes con matlab iijcbenitezp
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacionluis_xD
 
Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv
 Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv
Utp pdiva_lab6_procesamiento digital de imagenes con matlab ivjcbenitezp
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1Saya Paredes
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gioRobert Wolf
 
Gráficos en matlab eda
Gráficos en matlab edaGráficos en matlab eda
Gráficos en matlab edaJhonny Rosas
 
Laboratorio pds grafica de convolucion mas funcion mas vector
Laboratorio pds grafica de convolucion mas funcion mas vectorLaboratorio pds grafica de convolucion mas funcion mas vector
Laboratorio pds grafica de convolucion mas funcion mas vector3inar
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)luis freddy
 
Pds 2011 2-balotario de preguntas pc4
Pds 2011 2-balotario de preguntas pc4Pds 2011 2-balotario de preguntas pc4
Pds 2011 2-balotario de preguntas pc4jcbenitezp
 

La actualidad más candente (13)

Utp 2015-2_pdi_lab2
 Utp 2015-2_pdi_lab2 Utp 2015-2_pdi_lab2
Utp 2015-2_pdi_lab2
 
Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii
 Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii
Utp pdiva_lab4_procesamiento digital de imagenes con matlab ii
 
Trabajo de computacion
Trabajo de computacionTrabajo de computacion
Trabajo de computacion
 
Inicialización del modo gráfico de C
Inicialización del modo gráfico de CInicialización del modo gráfico de C
Inicialización del modo gráfico de C
 
grafos estructura de datos
grafos estructura de datosgrafos estructura de datos
grafos estructura de datos
 
Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv
 Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv
Utp pdiva_lab6_procesamiento digital de imagenes con matlab iv
 
Informe técnico 1
Informe técnico 1Informe técnico 1
Informe técnico 1
 
Tema 13 gráficas en java por gio
Tema 13   gráficas en java por gioTema 13   gráficas en java por gio
Tema 13 gráficas en java por gio
 
Semana 03 software libre maxima
Semana 03 software libre maximaSemana 03 software libre maxima
Semana 03 software libre maxima
 
Gráficos en matlab eda
Gráficos en matlab edaGráficos en matlab eda
Gráficos en matlab eda
 
Laboratorio pds grafica de convolucion mas funcion mas vector
Laboratorio pds grafica de convolucion mas funcion mas vectorLaboratorio pds grafica de convolucion mas funcion mas vector
Laboratorio pds grafica de convolucion mas funcion mas vector
 
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
3 desarollo manejo datos capitulo 2 -01 arreglos dos dimensiones (5)
 
Pds 2011 2-balotario de preguntas pc4
Pds 2011 2-balotario de preguntas pc4Pds 2011 2-balotario de preguntas pc4
Pds 2011 2-balotario de preguntas pc4
 

Similar a Análisis de imágenes: reconocimiento de letras

282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx
282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx
282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docxJessicaGarcaCardona1
 
Segmentacion de Imagenes
Segmentacion de ImagenesSegmentacion de Imagenes
Segmentacion de ImagenesMafer Pinto
 
(2012) [ingeuan] deteccion vehicular
(2012) [ingeuan] deteccion vehicular(2012) [ingeuan] deteccion vehicular
(2012) [ingeuan] deteccion vehicularOscar Avilés
 
Procesamiento digital de imágenes
Procesamiento digital de imágenesProcesamiento digital de imágenes
Procesamiento digital de imágenesjvelalazquezdiaz
 
Utp pd_iy_va_sap10 detecciòn de bordes
 Utp pd_iy_va_sap10 detecciòn de bordes Utp pd_iy_va_sap10 detecciòn de bordes
Utp pd_iy_va_sap10 detecciòn de bordesjcbp_peru
 
Utp pd_iy_va_sap10 detecciòn de bordes
 Utp pd_iy_va_sap10 detecciòn de bordes Utp pd_iy_va_sap10 detecciòn de bordes
Utp pd_iy_va_sap10 detecciòn de bordesc09271
 
Correciones radiometricas
Correciones radiometricasCorreciones radiometricas
Correciones radiometricasEDIER AVILA
 
Imagen Fundamentos III
Imagen Fundamentos IIIImagen Fundamentos III
Imagen Fundamentos IIIOmar Sanchez
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2jcbp_peru
 
Sistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento ySistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento yviisonartificial2012
 
Vb Ii, Unidad Iv MéTodos Graficos
Vb Ii, Unidad Iv MéTodos GraficosVb Ii, Unidad Iv MéTodos Graficos
Vb Ii, Unidad Iv MéTodos GraficosUTP, TA
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dSebastian Cuenca
 
Digitalización y documentación del patrimonio: de la divulgación a la pres...
Digitalización y documentación del patrimonio: de la divulgación a la pres...Digitalización y documentación del patrimonio: de la divulgación a la pres...
Digitalización y documentación del patrimonio: de la divulgación a la pres...Jose Pereira
 
Graficos en Qt.ppt
Graficos en Qt.pptGraficos en Qt.ppt
Graficos en Qt.pptDarioKlug
 
Graficos de Funciones en Visual Basic subido JHS
Graficos de Funciones en Visual Basic subido JHSGraficos de Funciones en Visual Basic subido JHS
Graficos de Funciones en Visual Basic subido JHSjohnny herrera
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabJuan Ete
 

Similar a Análisis de imágenes: reconocimiento de letras (20)

282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx
282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx
282361940-Seguimiento-de-Objetos-de-Colores-Con-Webcam-en-Matlab.docx
 
Segmentacion de Imagenes
Segmentacion de ImagenesSegmentacion de Imagenes
Segmentacion de Imagenes
 
(2012) [ingeuan] deteccion vehicular
(2012) [ingeuan] deteccion vehicular(2012) [ingeuan] deteccion vehicular
(2012) [ingeuan] deteccion vehicular
 
Procesamiento digital de imágenes
Procesamiento digital de imágenesProcesamiento digital de imágenes
Procesamiento digital de imágenes
 
Utp pd_iy_va_sap10 detecciòn de bordes
 Utp pd_iy_va_sap10 detecciòn de bordes Utp pd_iy_va_sap10 detecciòn de bordes
Utp pd_iy_va_sap10 detecciòn de bordes
 
Utp pd_iy_va_sap10 detecciòn de bordes
 Utp pd_iy_va_sap10 detecciòn de bordes Utp pd_iy_va_sap10 detecciòn de bordes
Utp pd_iy_va_sap10 detecciòn de bordes
 
Correciones radiometricas
Correciones radiometricasCorreciones radiometricas
Correciones radiometricas
 
Imagen Fundamentos III
Imagen Fundamentos IIIImagen Fundamentos III
Imagen Fundamentos III
 
Diseño e implementacion.pptx
Diseño e implementacion.pptxDiseño e implementacion.pptx
Diseño e implementacion.pptx
 
Utp pdi_2014-2 lab2
 Utp pdi_2014-2 lab2 Utp pdi_2014-2 lab2
Utp pdi_2014-2 lab2
 
2437215 procesamiento-de-imagenes-con-matrices
2437215 procesamiento-de-imagenes-con-matrices2437215 procesamiento-de-imagenes-con-matrices
2437215 procesamiento-de-imagenes-con-matrices
 
Sistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento ySistema de visión artificial para el reconocimiento y
Sistema de visión artificial para el reconocimiento y
 
Vb Ii, Unidad Iv MéTodos Graficos
Vb Ii, Unidad Iv MéTodos GraficosVb Ii, Unidad Iv MéTodos Graficos
Vb Ii, Unidad Iv MéTodos Graficos
 
Plots
PlotsPlots
Plots
 
Graficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3dGraficas en matlab 2 d y 3d
Graficas en matlab 2 d y 3d
 
Digitalización y documentación del patrimonio: de la divulgación a la pres...
Digitalización y documentación del patrimonio: de la divulgación a la pres...Digitalización y documentación del patrimonio: de la divulgación a la pres...
Digitalización y documentación del patrimonio: de la divulgación a la pres...
 
Graficos en Qt.ppt
Graficos en Qt.pptGraficos en Qt.ppt
Graficos en Qt.ppt
 
Graficos de Funciones en Visual Basic subido JHS
Graficos de Funciones en Visual Basic subido JHSGraficos de Funciones en Visual Basic subido JHS
Graficos de Funciones en Visual Basic subido JHS
 
Graficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlabGraficas en 2 d y 3d matlab
Graficas en 2 d y 3d matlab
 
!Prograc10
!Prograc10!Prograc10
!Prograc10
 

Más de Sandra Lucia

The impact of_international_standardization_IEC
The impact of_international_standardization_IECThe impact of_international_standardization_IEC
The impact of_international_standardization_IECSandra Lucia
 
Como eliminar correos desde outlook
Como eliminar correos desde outlookComo eliminar correos desde outlook
Como eliminar correos desde outlookSandra Lucia
 
Desarrollo corea del sur
Desarrollo corea del surDesarrollo corea del sur
Desarrollo corea del surSandra Lucia
 
Eliminación gaussiana
Eliminación gaussianaEliminación gaussiana
Eliminación gaussianaSandra Lucia
 
Formulario Contrastes y Comparaciones de Medias
Formulario Contrastes y Comparaciones de MediasFormulario Contrastes y Comparaciones de Medias
Formulario Contrastes y Comparaciones de MediasSandra Lucia
 
CONTRASTES - COMPARACIONES DE MEDIAS
CONTRASTES - COMPARACIONES DE MEDIASCONTRASTES - COMPARACIONES DE MEDIAS
CONTRASTES - COMPARACIONES DE MEDIASSandra Lucia
 
Structure from motion (summary)
Structure from motion (summary)Structure from motion (summary)
Structure from motion (summary)Sandra Lucia
 
Presentación rama estudiantil IEEE ITC
Presentación rama estudiantil IEEE ITCPresentación rama estudiantil IEEE ITC
Presentación rama estudiantil IEEE ITCSandra Lucia
 
Archivo base para planificación
Archivo base para planificaciónArchivo base para planificación
Archivo base para planificaciónSandra Lucia
 
Impact of international standardization in Mexico/ Impacto de normas internac...
Impact of international standardization in Mexico/ Impacto de normas internac...Impact of international standardization in Mexico/ Impacto de normas internac...
Impact of international standardization in Mexico/ Impacto de normas internac...Sandra Lucia
 

Más de Sandra Lucia (15)

The impact of_international_standardization_IEC
The impact of_international_standardization_IECThe impact of_international_standardization_IEC
The impact of_international_standardization_IEC
 
Como eliminar correos desde outlook
Como eliminar correos desde outlookComo eliminar correos desde outlook
Como eliminar correos desde outlook
 
Reporte ieee
Reporte ieeeReporte ieee
Reporte ieee
 
Desarrollo corea del sur
Desarrollo corea del surDesarrollo corea del sur
Desarrollo corea del sur
 
Creatividad
CreatividadCreatividad
Creatividad
 
Eliminación gaussiana
Eliminación gaussianaEliminación gaussiana
Eliminación gaussiana
 
IBM y 3M
IBM y 3MIBM y 3M
IBM y 3M
 
Formulario Contrastes y Comparaciones de Medias
Formulario Contrastes y Comparaciones de MediasFormulario Contrastes y Comparaciones de Medias
Formulario Contrastes y Comparaciones de Medias
 
CONTRASTES - COMPARACIONES DE MEDIAS
CONTRASTES - COMPARACIONES DE MEDIASCONTRASTES - COMPARACIONES DE MEDIAS
CONTRASTES - COMPARACIONES DE MEDIAS
 
Structure from motion (summary)
Structure from motion (summary)Structure from motion (summary)
Structure from motion (summary)
 
Presentación rama estudiantil IEEE ITC
Presentación rama estudiantil IEEE ITCPresentación rama estudiantil IEEE ITC
Presentación rama estudiantil IEEE ITC
 
IEEE Benefits
IEEE BenefitsIEEE Benefits
IEEE Benefits
 
Tutorial 1 IEEE
Tutorial 1 IEEETutorial 1 IEEE
Tutorial 1 IEEE
 
Archivo base para planificación
Archivo base para planificaciónArchivo base para planificación
Archivo base para planificación
 
Impact of international standardization in Mexico/ Impacto de normas internac...
Impact of international standardization in Mexico/ Impacto de normas internac...Impact of international standardization in Mexico/ Impacto de normas internac...
Impact of international standardization in Mexico/ Impacto de normas internac...
 

Análisis de imágenes: reconocimiento de letras

  • 1. Sandra Lucía de la Fuente Bermúdez Análisis de imágenes Dr. José Joel González Barbosa. CICATA – IPN Unidad Querétaro. 2014-06-01 Tarea. Reconocimiento de Letras
  • 2. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página1 Resumen. El presente documento, reporta una metodología para la detección de letras T y Y, utilizando diversas herramientas vistas en el curso de análisis de imágenes. Introducción La detección y reconocimiento de objetos/características por medio de imágenes, es una técnica muy utilizada, debido a su alta efectividad y a que es un método no abrasivo. Es utilizado en la industria (i.e. en la detección de fallas y esfuerzos mecánicos), en medicina (i.e. en la detección de lesiones y enfermedades), y en la construcción (i.e. en la detección de fallas en el pavimento), por mencionar algunas aplicaciones. Este reporte sugiere el reconocimiento de letras T y Y, por medio de detección de líneas mediante la transformada de Hough. Esta solución es muy sencilla, debido al alcance de la tarea. Desarrollo La imagen se procesa como se muestra en el diagrama de la figura 1. Figura 1. Diagrama de procesamiento digital de imágenes. Obtención de la imagen Preprocesamiento Segmentación Detección de CaracterísticasClasificación Resultado/ diagnóstico
  • 3. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página2 La imagen (figura 2) utilizada fué editada en CorelDraw® en formato .PNG para una mejor detección de contornos. Figura 2. Imagen original. Para el pre-procesamiento, se binarizó la imagen (figura 3), mediante la detección automática del umbral mediante la técnica de Otsu [1,2], preparando la imagen para la segmentación. Figura 3. Imagen binarizada. Para la segmentación, antes identifico los objetos, es decir la cantidad de letras, en la imagen mediante la función bwconncomp (bw,n), donde bw es la imagen binaria, y n es el parámetro de conectividad (4, 8, o arbitrario). La función bwconncomp encuentra todos los objetos conectados en una imagen binaria [3].
  • 4. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página3 Seguido de la detección de objetos, cada objeto es etiquetado con el mismo valor entero, para este caso, lo llamamos image (ver código). Posteriormente, es mostrado gráficamente cada objeto, para ser recortado de manera personalizada (figura 4) y hacer más eficiente en tiempo y memoria la ejecución del código. Figura 4. Recorte personalizado de la letra detectada. Seguido de esto, se procede a la detección de bordes mediante el cálculo del gradiente del objeto, para simplificar el proceso (figura 5). Figura 5. Borde del objeto. Para la detección de características, se obtiene el número de líneas de longitud mínima a la mitad del largo de la letra, basado en la transformada de Hough [4-6].
  • 5. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página4 Código %% Limpieza del código clear all; close all; imtool close all; clc; warning off %% Inicialización de variables Ix=[-1,0,1; -1,0,1;-1,0,1]; Iy=Ix'; n_t=0; n_y=0; %% Obtención de la imagen I=imread('Letras.png'); %% Pre-procesamiento level=graythresh(I); Ibin = im2bw(I, level); % Binarización de imagen set(0,'DefaultFigureWindowStyle','docked'), figure(1), imshow(Ibin), title(['fontsize{20}{color[rgb]{0 .5 .4}Imagen original binarizada}']); %% Segmentación % Detección de objetos cc=bwconncomp(Ibin,8); % Detección de objetos con 8 vecindades cc.NumObjects; % Número de objetos detectados % Etiquetado de objetos for (n=1:cc.NumObjects) image{n} = false(size(Ibin)); image{n}(cc.PixelIdxList{n}) = true; figure, imshow(image{n}), title(['fontsize{20}{color[rgb]{.2 .5 .2}Seleccione la zona de interés de la imagen}']); image{n}=imcrop; %Recorte de imagen (para incrementar la rapidez de procesamiento). end close all, clc % Limpieza %% Detección de características: figure(1), imshow(Ibin), title(['fontsize{20}{color[rgb]{0 .5 .4}Imagen original binarizada}']); for (n=1:cc.NumObjects) ima = double(image{n}); % Detección de bordes: Convf_x= conv2(ima,Ix,'same'); Convf_y= conv2(ima,Iy,'same'); Gradientef{n}=sqrt((power(Convf_x,2))+(power(Convf_y,2)));% Gradiente de la imagen % figure ('Name', 'Gradiente'), imshow(Gradientef{n}), title('Detección de contornos: Gradiente'); BW=Gradientef{n}; %% Identificación de línea mayor en el objeto, por medio de Hough, para establecer un patrón de umbral en la detección de líneas (esto permite detectar líneas en base a la proporción del tamaño particular del objeto/letra de estudio): [H,T,R] = hough(BW); % Transformada de Hough P = houghpeaks(H,6,'threshold',ceil(0.3*max(H(:))));% Identificación de picos/ puntos de inflexión en la transformada de Hough x = T(P(:,2)); y = R(P(:,1)); % Extracción de segmentos de líneas en base a la transformada de Hough lines = houghlines(BW,T,R,P,'FillGap',100,'MinLength',200); % Find lines and plot them max_len = 0; %% Identificación de líneas por medio de Hough:
  • 6. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página5 for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; len = norm(lines(k).point1 - lines(k).point2); % Determine the endpoints of the longest line segment if ( len > max_len) max_len = len; xy_long = xy; end end BW=Gradientef{n}; %% Ajuste de detección de líneas para cada imagen: [H,T,R] = hough(BW); % Transformada de Hough P = houghpeaks(H,6,'threshold',ceil(0.3*max(H(:)))); % Identificación de picos/ puntos de inflexión en la transformada de Hough x = T(P(:,2)); y = R(P(:,1)); % Extracción de segmentos de líneas en base a la transformada de Hough lines = houghlines(BW,T,R,P,'FillGap',100,'MinLength',max_len/2); %Ajuste de detección de líneas: el umbral es la mitad de la longitud de la línea mayor detectada. figure, imshow(BW), hold on max_len = 0; %% Representación gráfica de las líneas detectadas: for k = 1:length(lines) xy = [lines(k).point1; lines(k).point2]; plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green'); plot(xy(1,1),xy(1,2),'x','LineWidth',2,'Color','yellow'); % Plot beginnings and ends of lines plot(xy(2,1),xy(2,2),'x','LineWidth',2,'Color','red'); len = norm(lines(k).point1 - lines(k).point2); % Determine the endpoints of the longest line segment if ( len > max_len) max_len = len; xy_long = xy; end end %% Clasificación if(length(lines)==4) %Si existen cuatro líneas, se trata de una T, en otro caso, se trata de una Y. title(['fontsize{18}{color[rgb]{.3 .3 .7}Tenemos una T}']) Str=sprintf('Nota: el número de líneas detectadas para la figura %g=%g. La letra detectada es una T!',n,length(lines)); n_t=n_t+1; else title(['fontsize{18}{color[rgb]{.3 .3 .7}Tenemos una Y}']) Str=sprintf('Nota: el número de líneas detectadas para la figura %g=%g. La letra detectada es una Y!',n,length(lines)); n_y=n_y+1; end annotation('textbox', [0,0,0.1,0.1],... 'String', Str); end %% Resultado Str_f=sprintf('Tenemos un total de %g letras T y %g letras Y en la figura.',n_t,n_y); figure (1), annotation('textbox', [0,0,0.1,0.1],... 'String', Str_f);
  • 7. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página6 Resultados Después de extraer el número de líneas de cada objeto, se procede a su clasificación. Se tiene la característica principal que, para cada letra T involucrada en el procesamiento, sin excepción, presenta cuatro líneas (figura 6), mientras que para cada letra Y procesada, sin excepción, presenta 6, y en un caso singular, 5 líneas (figura 7). De aquí se definen los términos para clasificar la letra T y Y. Figura 6. Detección de letra T. Figura 7. Detección de letra Y.
  • 8. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página7 La clasificación anterior nos permite definir la cantidad de letras T y Y en la imagen (figura 8). Figura 8. Resultado de imagen 1. Como estudio adicional, genero una imagen similar con rotaciones en las letras y variaciones en las proporciones típicas, el resultado es satisfactorio (figura 9). Figura 9. Resultado de la imagen 2.
  • 9. Análisis de imágenes. CICATA – IPN, Unidad Qro. Página8 Conclusiones Después de analizar varias características (detección de la zona de cruce de líneas en cada letra por máscara, transformada particular de Fourier, y número de líneas), se decidió conveniente y práctico analizar la imagen clasificando la letra según la cantidad de líneas en el objeto de estudio; este método es funcional, rápido, y eficiente. Se cubrió la necesidad del alcance planteada, de manera robusta, siempre y cuando la imagen esté en formato PNG. Si la imagen se encuentra en formato JPEG, se deberá adaptar el código para una correcta detección de líneas. No se realizaron pruebas en imágenes con otros caractéres. Referencias [1] X. Xu, S. Xu, L. Jin, and E. Song. “Characteristic analysis of Otsu threshold and its applications,” ELSEVIER. China, 2010. [2] MathWorks. “Im2bw,” Matlab Documentation Center (mathworks.com). [3] MathWorks. “Image Processing Toolbox 7. User’s Guide,” MATLAB. [4] MathWorks. “hough,” Matlab Documentation Center (mathworks.com). [5] MathWorks. “houghpeaks,” Matlab Documentation Center (mathworks.com). [6] MathWorks. “houghlines,” Matlab Documentation Center (mathworks.com).