Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Trabajo de diploma
Santa Clara
2014
Trabajo de diploma
Santa Clara
2014
"Año 56 de la Revolución"
Hago constar que el presente trabajo de diploma fue realizado en la Universidad Central
“Marta Abreu” de Las Villas como parte de la culminación de estudios de la
especialidad de Ingeniería en Telecomunicaciones y Electrónica, autorizando a que el
mismo sea utilizado por la institución para los fines que estime conveniente, tanto de
forma parcial como total y que además no podrá ser presentado en eventos, ni
publicados sin autorización de la Universidad.
Los abajo firmantes certificamos que el presente trabajo ha sido realizado según
acuerdo de la dirección de nuestro centro y el mismo cumple con los requisitos que debe
tener un trabajo de esta envergadura referido a la temática señalada.
i
DEDICATORIA
Debo agradecer a muchas personas el haber llegado hasta aquí. A todos, sin
excepción, les agradezco infinitamente. No puedo, sin embargo, dejar de
mencionar a aquellos, sin cuya ayuda, hubiese sido imposible este empeño.
A quienes siempre me han guiado por el camino de la verdad: Mis
padres.
A quienes amo sin medida: Mi hermana y novia.
A quienes me dan aliento para seguir adelante: Mis Compañeros.
A mis Tutores quienes me han hecho crecer y han ejercido gran
influencia en mí como profesional y en lo personal, sin cuya guía
hubiese sido muy difícil la culminación de este trabajo.
ii
AGRADECIMIENTOS
Muchas Gracias
iii
TAREA TÉCNICA
Estudio del estado del arte sobre algoritmos y aplicaciones actuales de
localización y reconocimiento de matrículas vehiculares y sus principales
causas de fallo.
iv
RESUMEN
v
Contenido
Pensamiento ...................................................................................................... i
Dedicatoria ......................................................................................................... ii
Resumen ........................................................................................................... v
Introducción...................................................................................................... 1
vi
2.2 Pre-procesamiento de imágenes ......................................................... 18
Conclusiones .................................................................................................. 56
vii
Recomendaciones.......................................................................................... 57
Anexos ............................................................................................................ 61
viii
INTRODUCCIÓN
1
la matrícula de automóviles en una imagen, y determinar cuáles son los caracteres
en la misma?
El objetivo general de esta investigación es desarrollar un algoritmo para el
reconocimiento automático de matrículas de vehículos utilizando la herramienta de
simulación Matlab.
Para cumplir con este objetivo se proponen los siguientes objetivos específicos:
Realizar un estudio del estado del arte sobre algoritmos y aplicaciones
actuales de localización y reconocimiento de matrículas vehiculares y sus
principales causas de fallo.
Implementar un algoritmo para la localización de una matrícula en una
imagen.
Implementar un algoritmo para el reconocimiento de caracteres de una
matrícula.
2
Conclusiones: Se recogen en esta sección las conclusiones sobre los
resultados obtenidos en la investigación.
Recomendaciones: Se exponen las recomendaciones que se generan a
partir de las conclusiones del trabajo.
Referencias bibliográficas: Se realiza un listado de los documentos
consultados en el desarrollo de la investigación y que aparecen citados en
el texto del informe.
Bibliografía consultada: Se incluye un listado de los documentos
empleados en la investigación y que no se citan en el informe.
Anexos: En esta sección se abordan aspectos relacionados con el tema
tratado no incluidos en el informe sobre el desarrollo de la investigación.
Se brindan los códigos de la función principal implementada para el diseño
del algoritmo.
3
CAPÍTULO I: ESTADO DEL ARTE
1.1 Reconocimiento automático de matrículas
El reconocimiento automático de placas o mejor conocido como ANPR (Automatic
Number Plate Recognition), se le atribuye a la compañía inglesa Police
Development Branch en 1976.
Un sistema ANPR es un equipo especial formado por un software y hardware
específicos, que procesa señales gráficas de entrada como imágenes estáticas o
secuencias de video, y reconocen los caracteres de una matrícula a partir de estas
fuentes. La parte hardware de un sistema ANPR está formado típicamente por una
cámara, una unidad de procesado de imágenes, un disparador u obturador, una
unidad de transmisión y otra de almacenamiento.
El disparador controla físicamente un sensor directamente instalado en un carril.
Siempre que el sensor detecte un vehículo a una distancia apropiada de la
cámara, este activará el mecanismo de reconocimiento. Alternativamente a esta
solución, se encuentra la detección por software o el continuo procesado de una
señal video muestreada. La detección por software, o el procesado continuo de
video, pueden consumir mayores recursos de sistema, pero no necesitan
hardware adicional, como en el caso del hardware con disparador. (Jiménes,
2012). En la figura 1 se muestra el esquema físico de un sistema ANPR.
4
Un sistema ANPR puede ser separado en seis principales pasos: 1) entrada de
imágenes o video de datos con vehículos, 2) pre-procesamiento de la imagen para
elevar la calidad de la misma, 3) detección y localización de la matrícula en la
imagen, 4) segmentación de la matrícula, 5) reconocimiento de los caracteres de
la matrícula, 6) mostrar y guardar los resultados. Los pasos 3 y 4 juegan un papel
importante en el correcto reconocimiento de la matrícula. En la figura 2 se muestra
un diagrama en bloque de un sistema de ANPR en el cual se ven muy bien
identificados los seis pasos comentados con los que consta el algoritmo.
1.2 Aplicaciones
El reconocimiento automático de matrículas mediante un sistema de visión artificial
es un tema de indudable interés comercial con numerosas aplicaciones como el
control de aparcamientos, acceso a instalaciones, tarificación de peajes, cálculo
de la velocidad media entre puntos de una carretera, etc.
5
En los parqueos, el reconocimiento de matrículas es usado para calcular la
duración en la que el coche ha estado aparcado. Cuando un vehículo llega a la
entrada del parqueo, el número de matrícula es automáticamente reconocido y
almacenado en la base de datos. Cuando el vehículo más tarde sale y llega a la
puerta de salida, el número de matrícula es nuevamente reconocido y comparado
con el primero almacenado en la base de datos. La diferencia de tiempo es usada
para calcular el coste del aparcamiento.
Los sistemas de reconocimiento automático de matrículas pueden ser usados en
control de accesos, por ejemplo, esta tecnología es usada en algunas compañías
para conceder el acceso solo a vehículos del personal autorizado.
En algunos países estos sistemas de reconocimiento están instalados a lo largo
de un área de la ciudad para detectar y monitorear el tráfico de vehículos. Cada
vehículo es registrado en una base de datos central y, se puede comparar con una
lista negra de vehículos robados o controlar la congestión en accesos a la ciudad
en las horas pico. En muchas ciudades se utiliza este tipo de sistema como por
ejemplo en Londres (Reino Unido), Gotemburgo (Suecia), Trondhein (Noruega),
Copenhague (Dinamarca), Bristol (Reino Unido), Edimburgo (Escocia), Roma y
Génova (Italia), Helsinki (Finlandia), Hong Kong y Singapur.(Pozo, 2009)
6
Sistema de reconocimiento de matrículas Biartic
Se caracteriza por la capacidad de lecturas masivas en ángulos extremos y en
cualquier situación climatológica con una velocidad de procesamiento muy
elevada. La fiabilidad de lectura es de un 98.5% con una velocidad de
identificación y registro de 15 matrículas por segundo. Los datos del
reconocimiento se recogen en una base de datos junto con la fecha, hora,
fotografía, sentido del movimiento y posición GPS con la que se puede tramitar el
boletín de denuncia desde el propio vehículo patrulla. En el caso de sistemas en
puntos fijos se añade información de velocidades medias. Los datos registrados
son procesados en tiempo real con diferentes bases de datos (listas negras,
blanca, informativas) soportando más de 40 millones de registros teniendo una
respuesta inmediata mientras el sistema continúa procesando más lecturas sin
perder su efectividad.(Rios, 2014)
7
funciones de alarma, que le permite controlar las acciones exteriores, tales como
encender una luz o elevar una barrera. Posee una fiabilidad de un 99% y funciona
de día y de noche.(Sony, 2007)
8
debilidades, por ejemplo si se desea que la respuesta del sistema sea obtenida en
tiempo real los algoritmos empleados deben favorecer la rapidez sobre la
complejidad de los cálculos, lo que puede provocar que cuando las condiciones de
iluminación no son las adecuadas, o la matrícula está sucia o inclinada el sistema
tiende a cometer un mayor número de errores que otros procedimientos que
poseen un mayor tiempo de procesamiento pues en estos se emplean métodos de
clasificación y procesamiento de imágenes más eficientes pero mucho más lento,
de ahí que se deba establecer una relación de compromiso entre la eficacia del
sistema y el tiempo de procesamiento.
A continuación se muestra una serie de algoritmos empleados en ANPR para la
localización y reconocimiento de caracteres de matrícula.
9
detección de bordes y luego la transformada de Hough, de forma tal que esta
última encuentre dos pares de líneas paralelas que formen un paralelogramo, que
es considerado como un posible candidato para matrícula. Como ahora la
transformada de Hough actúa solamente sobre los contornos de los objetos de la
imagen se disminuye considerablemente el tiempo de ejecución y el tiempo
computacional. Este algoritmo tiene la desventaja de dar varios posibles
candidatos a matrícula los cuales deben ser analizados en cuanto a su relación de
alto por ancho para de esta forma seleccionar de forma correcta la matrícula de
todos los demás candidatos.(Kolour and Shahbahrami, 2011)
10
like, dando hasta un 98.75% de exactitud localizando correctamente las
matrículas. Además son empleadas por (Kasaei et al., 2010) en el cual una vez
que se tiene la imagen binaria y filtrada por un filtro de bordes de Sobel, se aplica
un operador de cierre en la dirección horizontal empleando un elemento
estructural con forma rectangular para la localización de la matrícula. En esta
investigación para eliminar el problema de los posibles candidatos, se analizaron
teniendo en cuenta el radio, la forma y las dimensiones de alto y ancho. También
(Mai et al., 2011) emplean el operador morfológico de apertura combinado con
una operación de sustracción para el pre-procesamiento de la imagen. Luego se
emplea un filtro de bordes de Canny y se aplica un operador morfológico de cierre,
uno de apertura para eliminar el ruido, y uno de dilatación para agrandar el tamaño
de los posibles candidatos. Para eliminar el problema de los posibles candidatos
se realiza un análisis de estos muy parecido al estudio anterior.
1.4.5 AdaBoost
El AdaBoost es un algoritmo que se basa en la selección de varios clasificadores
débiles para la construcción de un nuevo clasificador fuerte. Se denominan
clasificadores débiles pues solamente es necesario que estos posean una
probabilidad de acierto ligeramente superior al 50%. Este sistema se basa sobre el
entrenamiento, por lo que para el desarrollo de este algoritmo es necesario
entrenar una base de datos que contenga imágenes de matrículas manualmente
extraídas y sea lo más grande posible. Este algoritmo es muy usado para los
sistemas de ANPR; es empleado por (Dehshibi and Allahverdi, 2011) en el cual
utilizan el AdaBoost como clasificador binario empleando características Haar like
para clasificar varios posibles candidatos a matrículas y mantener las áreas
correctas, a través de este procedimiento se obtiene una exactitud de 96.93%.
Además en este estudio para el reconocimiento de caracteres se empleó un
AdaBoost multiclases de tipo SAMME con una exactitud de un 94.5%. (Dlagnekov,
2004), también emplea este método para la localización de la matrícula, dando
muy buenos resultados los experimentos realizados, de 158 imágenes pasadas al
clasificador fuerte detectó correctamente un 95.6% .
11
1.4.6 Detección de bordes
Este algoritmo es muy empleado en ANPR pues para la localización de la
matrícula se basa en las características física que poseen las matrículas, ya que
estas poseen gran cantidad de bordes verticales debido a los caracteres incluidos
en la misma, en comparación a otras partes del vehículo. Este algoritmo es muy
usado por varios autores como es el caso de (Dorsch et al., 2009) los cuales
emplean un filtro de bordes de Sobel a una imagen binaria, para luego analizar los
picos máximos en la dirección horizontal y vertical de la imagen. Este método tiene
el inconveniente que estos máximos no sólo representan la ubicación de la
matrícula, sino que también pueden haber picos en otras zonas de alta densidad
de bordes, como carteles, fondos arbolados, rejas o alambrados; por lo que es
necesario descartar aquellos que no cumplen con las condiciones típicas de la
matrícula como: ancho mínimo, ancho máximo, alto mínimo, etc. En este trabajo
se logran muy buenos resultados en zonas con pocos bordes verticales, se
detecta un 70% de las matrículas y en zonas con muchos bordes el algoritmo
detecta un 54% de las matrículas. Además este método es empleado por (Saha et
al., 2009) donde se emplea el filtro de bordes de Sobel en la dirección horizontal y
vertical, para luego analizar las zonas de la imagen que contengan un mayor
número de bordes como posibles candidatos a matrículas. Ellos logran en los
experimentos realizados una exactitud de hasta un 92%, pues a diferencia del
trabajo anterior en la etapa de pre-procesamiento se emplea un filtro de mediana
para remover gran parte del ruido de la imagen. (Chunyu et al., 2013), también se
basa en la extracción de bordes de la imagen para la localización de la matrícula,
pero con la particularidad de que se emplea un operador diferencial en la dirección
horizontal y vertical. (Sarker et al., 2013) es otro de los muchos trabajos que
emplea este método con la diferencia de que en este caso sólo analizan la parte
inferior de la foto disminuyendo así el tiempo de procesamiento; para la detección
de bordes emplean un filtro de Sobel. En este trabajo el algoritmo diseñado se
equivocó en 416 imágenes de 52 000 imágenes captadas dando una efectividad
de hasta un 99.2%. (Ashoori-Lalimi and Ghofrani, 2011) emplean la detección de
bordes a través de un filtro de Sobel combinado con los operadores morfológicos
12
de apertura y cierre para eliminar los pequeños detalles de la imagen y de esta
manera quedarnos con los posibles candidatos a matrícula. Los posibles
candidatos a matrícula son analizados en cuanto a sus radios, relación de ancho
por alto, etc. En este estudio se logra una exactitud de hasta un 95.2% a la hora
de localizar la matrícula en la imagen.
13
pequeñas en la imagen se tienen los posibles candidatos de matrícula. Luego
estos son análizados teniendo en cuenta la relación de largo por ancho, umbral de
color, etc.
Una vez analizados los algoritmos más empleados en ANPR estos son evaluados
teniendo en cuenta algunos de los parámetros más importantes en la siguiente
tabla.
Sensibilidad a
Complejidad de Detección de Tiempo
Método condiciones
implementación bordes computacional
ambientales
Programación
Alta Baja No Baja
dinámica
Hough +
Media Baja Sí Alta
bordes
Transformada
Baja Alta Sí Alta
de Gabor
14
los trámites de traspasos, cambios de domicilio, deterioro, pérdida y nuevas
producciones, el monto del sostenimiento era de 198 696 euros al año. La
diversidad de colores tenía sus inconvenientes, pues cada color de matrícula
posee un precio diferente, y la empresa suministradora exige comprar 5 000
unidades como mínimo de cada orden de producción. Este sistema tenía
desventajas relacionadas con la identificación humana y los sistemas
tecnológicos, debido a la poca separación y el escaso contraste entre el color de
fondo y sus caracteres, a la diversidad de colores y a otros factores que influyen
en la ilegibilidad de la matrícula como, por ejemplo, las confusiones entre algunos
caracteres como la O con la Q y con el cero; la B con el 8, la Z con el 2, entre
otros.
Por lo que se decidió realizar un nuevo proceso de reinscripción y cambio de
chapa de identificación de los vehículos mediante la implementación de un nuevo
sistema, más económico para su sostenimiento, más efectivo como elemento de
identificación humana y técnica, y mucho más flexible para su administración. El
cambio está refrendado en el artículo 224 de la Ley 109 del Código de Seguridad
Vial, que le confiere al MININT la facultad para disponer las reinscripciones
generales o parciales, los cambios de chapas de identificación y de licencia de
circulación de los vehículos inscritos.
15
palabra CUBA en posición vertical tienen las matrículas de las personas jurídicas,
elemento que la diferencia de las matrículas de las personas naturales, al
desaparecer la variedad de colores de fondo, pues las chapas no identifican el
sector de pertenencia del medio.
La letra A identifica las matrículas oficiales, actualmente de color blanco; las letras
C, D, y E, para el sector diplomático; la letra K para los extranjeros, las letras F y
M para identificar FAR y MININT, respectivamente, y la T, para los vehículos
rentados al turismo. El resto de las letras no tiene ningún significado. Los
vehículos destinados al servicio de protocolo se identifican, además, con una
pegatina con orla de color azul oscuro y el texto Protocolo. Los vehículos
pertenecientes a la prensa extranjera tienen una pegatina con orla de color verde y
el texto P. Ambas pegatinas se colocan en el centro de la parte superior del
parabrisas delantero.
No se emplean las letras I, O, Q, S, W y la Z para evitar confusiones en la
identificación.(Cruz, 2013)
16
CAPÍTULO II: MATERIALES Y MÉTODOS
17
cámara, por tanto el resultado final de los algoritmos propuestos puede mejorar si
la fuente de las imágenes es adquirida a partir de un ambiente controlado. Sin
embargo, la gran variabilidad presente en la base de casos conformada en un
entorno de adquisición real, le confiere al trabajo una alta aplicabilidad y
versatilidad.
Las imágenes en formato JPG son cargadas por el Matlab en tres matrices cada
una de ella con los colores primarios rojo, verde y azul (RGB) almacenados en tres
matrices en un arreglo de mxnx3, donde „m‟ es el número de filas y „n‟ el número de
columnas de la imagen. Debido a esto el color de cada píxel está determinado por
la combinación de la intensidad de estos colores primarios en el plano donde se
ubica el píxel. Es necesario realizar ciertas transformaciones a esta imagen para
disminuir el tiempo de procesamiento; por lo que, en el bloque de pre-
procesamiento de la imagen lo primero que se realiza es la transformación de la
imagen a escala de grises ya que en esta la información es almacenada en una
sola matriz de mxn. Teniendo en cuenta que el presente trabajo está orientado a
matrículas que tendrán en todos los casos fondo blanco con letras negras, esta
transformación no debe tener mayores implicaciones en el resultado final.
18
2.2.1 Transformación en escala de grises
La transformación en escala de grises tiene la intención de cambiar los niveles de
gris de una imagen entera en una forma uniforme, o sea modifica los niveles de
gris dentro de una ventana definida por una función de mapeo. Esta
transformación usualmente realza el contraste de la imagen logrando que los
detalles puedan ser más visibles. Esto se logra aplicando a todos los píxeles una
función que es la que se encarga del realce de la misma. La imagen en escala de
grises es representada frecuentemente por 4bits/píxeles o 8bits/píxeles, donde la
cantidad de niveles de grises con que contará dicha imagen va a estar
determinado por la cantidad de bits/píxeles como se muestra en la ecuación.(Shih,
2010)
(1)
Donde „R‟, „G‟ y „B‟ son los componentes de crominancia de los colores rojo, verde
y azul respectivamente, mientras que „y‟ es la información de luminancia con la
que serán cargados los píxeles. En la figura 4 se muestra la transformación en
escalas de grises de la imagen original.
Se pueden eliminar ciertos tipos de ruidos empleando filtros lineales, pero los
filtros gaussianos y filtros de mediana son los más empleados para este propósito.
19
Por ejemplo, el filtro de mediana es muy útil removiendo el ruido impulsivo de una
fotografía, de ahí que se haya empleado para la realización de la investigación.
Primero se pasa un filtro de mediana con una máscara de 3x3 píxeles y en caso
de no detectar ningún candidato a matrícula se le pasa entonces el mismo filtro
pero variando la máscara a 5x5, 7x7 y 9x9 píxeles.
Una vez filtrada la imagen se crea una estructura elemental de forma rectangular
de 3x12 píxeles, debido a que las matrículas de los automóviles poseen dicha
20
forma, y se emplean los operadores morfológicos de erosión y de dilatación con la
estructura elemental creada para de esta manera eliminar los pequeños detalles
de la imagen y separar las regiones de interés a través de la erosión y luego la
ampliación de los mismos a partir de la dilatación. Para crear la estructura
elemental se emplea la función de Matlab strel, y para la erosión y dilatación las
funciones de Matlab imerode e imdilate respectivamente. En la figura 6 se muestra
como queda la imagen filtrada luego de ser aplicados los filtros morfológicos de
erosión y dilatación.
Fig. 6: Imagen filtrada luego de ser aplicados los filtros morfológicos de erosión y
dilatación.
21
2.2.3.1 Operadores morfológicos
Dilatación
Sea „A‟ y „B‟ conjuntos de y Ø representando al conjunto vacío, la dilatación de
„A‟ por „B‟ es denotada como y viene dada por la ecuación 4.
{ | ̂ } (4)
{ |[ ̂ ] } (5)
Erosión
Sea „A‟ y „B‟ conjuntos de , la erosión de „A‟ por „B‟ es denotada como y
viene dada por la ecuación 6.
{ | } (6)
Dicha ecuación indica que la erosión de „A‟ por „B‟ es el conjunto de todos los
puntos de „z‟ tal que „B‟, trasladado por „z‟, está contenido en „A‟. La erosión es la
operación contraria a la dilatación por lo que ambas se pueden relacionar, o sea
se puede aplicar la operación inversa siguiendo la ecuación 7. (yan-ying et al.,
2010)
22
̂ (7)
La erosión toma cada píxel del objeto que tiene una conectividad con los píxeles
del fondo y los coloca a 0, o sea pone a 0 todos los píxeles del objeto vecinos a
los píxeles del fondo. (Mendoza and Beltrán, 2009)
Apertura y cierre
Son las combinaciones de erosión/dilatación y dilatación/erosión respectivamente,
que tienen como objetivo simplificar la imagen.
La apertura generalmente alisa los contornos de los objetos rompiendo estrechas
uniones entre objetos de la imagen o eliminando objetos muy estrechos, y
eliminando prolongaciones finas de los objetos.
El cierre tiende a alisar los contornos de los objetos pero realizando la operación
contraria a la apertura pues este generalmente incrementa el grosor de las
estrechas uniones entre objetos y de las finas prolongaciones de estos. Además
de eliminar pequeños huecos y rellenar las irregularidades de los contornos de los
objetos.
Apertura
La apertura de „A‟ por „B‟ es denotada como y viene dada por la ecuación
8.
(8)
Cierre
El cierre de „A‟ por „B‟ es denotada como y viene dada por la ecuación 9.
(9)
23
Donde y son los dominios de „f‟ y „b‟ respectivamente. La condición de que
y que ; es análoga a la definición de la dilatación
binaria en la cual los dos conjuntos tienen que ser solapados por al menos un
elemento.
Luego se haya una imagen resultante entre la diferencia de la imagen filtrada por
el filtro de mediana y la que se obtiene una vez que se aplicaron los operadores
morfológicos, para de esta manera lograr eliminar los lugares de la imagen que
poseen un nivel demasiado oscuro, y así resaltar en esta, los lugares con
predominio de colores claros y de mayor intensidad como es el caso de la
matrícula, la cual es de color blanco y está fabricada de un material reflexivo, lo
que hace que esta región sea de las más brillantes en la imagen, siendo esto una
característica importante a la hora de la localización de las matrículas. Para lograr
esto, se emplea la función de Matlab imsubtract que consiste en la resta de cada
elemento de un arreglo „x‟ con su correspondiente elemento de un arreglo „y‟,
donde los elementos de estos arreglos deben ser de la misma clase y deben
poseer el mismo tamaño. En la figura 7 se muestra como queda la imagen
resultante luego de ser aplicada la función imsubtract, y se puede apreciar
claramente como las partes más oscuras de la imagen que no son de interés se
han eliminado completamente.
24
Fig. 7: Imagen resultante de la resta de las imágenes por medio de la función
imsubtract de Matlab.
25
mayor que el umbral se pone a 1 (blanco) de lo contrario se pone a 0 (negro),
como se muestra en la ecuación 12.
(12)
{
(15)
26
(16)
∑
(17)
∑
(19)
∑
27
Fig. 9: Borrado de pequeñas manchas con una resolución menor que 40 píxeles.
28
Fig. 10: Operadores gradiente de Sobel.
29
Fig. 12: Empleo del operador morfológico de dilatación y la función de Matlab imfill
a una imagen con los bordes detectados.
Fig. 13: Borrado de los manchas en la imagen con una resolución menor que 1500
píxeles.
30
número de filas que columnas. En la figura 14 se muestra como una vez
evaluados los candidatos teniendo en cuenta las características de las matrículas
estos son reducidos en gran medida. En la mitad superior de la imagen se
observa cómo se obtiene la matrícula, pero en la mitad inferior se obtienen más de
un candidato, los cuales poseen características muy similares a las matrículas en
cuanto a su forma.
31
2.3.2 Bagging
Bagging es una técnica donde los datos son tomados de un dataset original en „S‟
tiempos creándose „S‟ nuevos dataset del mismo tamaño al original. Cada dataset
es construido por la selección aleatoria de datos del original con reposición; la
reposición indica que en un mismo dataset pueda ser seleccionado el mismo dato
más de una vez.
Después de tener las „S‟ dataset construidos, se aplica el algoritmo de aprendizaje
a cada uno individualmente. Cuando se quiera clasificar un nuevo dato este se le
pasa a los „S‟ clasificadores y se toma como respuesta el que tenga una mayoría
de voto. (Harrington, 2012)
2.3.3 Boosting
El boosting es una técnica muy similar al bagging, pero en boosting los
clasificadores diferentes son entrenados secuencialmente. Cada nuevo
clasificador es entrenado basado en su desempeño durante el entrenamiento. El
boosting hace nuevos clasificadores sobre datos que son previamente clasificados
por anteriores clasificadores.
El boosting se diferencia al bagging porque la salida es calculada a partir de la
suma de los pesos de los clasificadores. En boosting los clasificadores no tienen
los mismos pesos como en bagging pues los pesos son asignados basándose en
cuan exitosos fueron los clasificadores en las iteraciones previas.
Existen numerosas versiones del boosting pero solo nos referiremos a la
denominada AdaBoost que es una de las técnicas más empleadas en la
actualidad y es la que se emplea en la realización de la investigación.
2.3.4 AdaBoost
El AdaBoost es un algoritmo que se basa en la selección de varios clasificadores
débiles para la construcción de un nuevo clasificador fuerte. Se denominan
clasificadores débiles pues solamente es necesario que estos posean una
probabilidad de acierto mayor o igual a un 51%.
En Adaboost un peso es aplicado a cada ejemplo en el entrenamiento de los datos
el cual es denotado por el vector D, e inicialmente todos serán iguales. Un
clasificador débil es entrenado primeramente a partir de un dataset. Los errores
32
del clasificador débil son calculados y el clasificador débil es entrenado en un
segundo tiempo con la misma base de datos. En este segundo tiempo los pesos
del entrenamiento son ajustados considerando los ejemplos que fueron
incorrectamente clasificados. El objetivo final de AdaBoost es obtener una
respuesta de todos los clasificadores entrenados en cada iteración, por lo que
para esto se le asigna a cada clasificador un valor de α basado en los errores
cometidos por cada clasificador. En la ecuación 22 se muestra como se determina
el error de los clasificadores, y en la ecuación 23 como se determina el valor de α.
En la figura 15 se muestra una representación esquemática bien detallada del
AdaBoost. (Harrington, 2012)
(22)
(23)
Una vez que se ha determinado el valor de se pueden actualizar los pesos del
vector „D‟ si la predicción del clasificador fue correcta como se muestra en la
ecuación 24, en caso de que la predicción fuese incorrecta se actualizan los pesos
del vector D como se muestra en la ecuación 25.
33
(24)
(25)
Fig. 16: Fragmento del alfabeto creado para el entrenamiento de las redes
neuronales.
En las 17 redes neuronales a la hora de pasarle la imagen ya sea para su
entrenamiento o para clasificarlo una vez construida la red neuronal, las imágenes
fueron modificadas a una resolución fija de 15x80 píxeles, por lo que el número
de neuronas que presenta la capa de entrada es de 1200. Además fueron
34
empleadas 2 neuronas en la capa de salida debido a que son dos clases las que
se quieren clasificar.
El número de neuronas que forman las capas de entrada y salida está
determinado por el problema, mientras que el número de capas ocultas y el
número de neuronas en cada una de ellas no está fijado ni por el problema ni por
ninguna regla teórica por lo que el diseñador es quien decide esta arquitectura en
función de la aplicación.
Lo lógico es pensar que la mejor solución sería implementar una red con muchas
capas ocultas y un gran número de neuronas, pero esto trae consigo un aumento
considerable de la carga computacional, lo que implica una mayor dificultad de
implementación en tiempo real y un crecimiento en el tiempo de aprendizaje por
parte de la red.(Serrano et al., 2009)
Una vez planteado esto se realizaron varias pruebas variando el número de
neuronas con que iba a contar la capa oculta y se decidió el empleo de 60 debido
a que fue con el cual se lograron mejores resultados.
35
Fig. 17: Esquema de un modelo neuronal.
36
(27)
∑∑
37
iniciales y finales de los bordes horizontales de la matrícula y
teoremas de trigonometría:
(28)
√
38
Luego la imagen es binarizada y se emplean varias funciones con el objetivo de
eliminar aquellos detalles que no son útiles a la hora de reconocer los caracteres,
como es eliminar las filas que posean una cantidad de cero mayor al 65% y menor
que el 10% de la cantidad de columnas, y eliminar todas las filas y columnas con
todos sus elementos a 1. En la figura 21 se muestra como a la imagen binarizada
se le eliminan los bordes y pequeños detalles, pues estos lo que hacen es
perjudicar el rendimiento del algoritmo, de ahí la necesidad de tratar de
eliminarlos.
39
quedarnos con los siete caracteres alfanuméricos de la matrícula como se muestra
en la figura 22.
Fig. 22: Obtención de los siete elementos que mayor verosimilitud presenten con
respecto a un alfabeto de caracteres previamente creado.
40
en la figura 23 se muestra un fragmento del alfabeto empleado para el
entrenamiento de las redes neuronales de las letras.
Fig. 23: Fragmento del alfabeto empleado para el entrenamiento de las redes
neuronales de las letras.
Las tres restantes redes neuronales clasifican los seis caracteres numéricos por lo
que se construyó para el entrenamiento de las mismas un alfabeto de 490
números, o sea 49 caracteres de cada número desde el 0 hasta el 9, con distintos
niveles de calidad para que el entrenamiento de las redes neuronales sea lo más
real posible a como se presentan los caracteres de las matrículas que se van a
reconocer. Este alfabeto fue construido a partir de recortar fotos de matrículas
captadas a distintas horas del día y con distintos ángulos de captura; en la figura
24 se muestra un fragmento del alfabeto para el entrenamiento de las redes
neuronales de los números.
41
número de neuronas en la capa oculta; y las redes neuronales de las letras
poseen una cantidad de 3 neuronas en la capa de salida pues son tres letras las
que se necesitan clasificar; mientras que las tres restantes redes neuronales
poseen una cantidad de 10 neuronas en la capa de salida pues son diez números
los que se necesitan clasificar. Para la creación del alfabeto cada imagen debe ser
transformada en un vector de 70x1 a partir de la imagen binaria de cada carácter,
los vectores son conformados como una matriz única la cual es aplicada a la red
neuronal.
En la figura 25 se muestra una matrícula con los caracteres alfanuméricos
reconocidos con el empleo de las redes neuronales.
42
CAPÍTULO III: DISCUSIÓN DE RESULTADOS
43
este paso del algoritmo se logra aumentar considerablemente el desempeño del
mismo a la hora de la localización de la matrícula en la imagen. Sin el empleo de
esto el programa logra localizar correctamente 312 matrículas de 325 imágenes
con que cuenta el alfabeto, mientras que con el empleo de esta se detectan 323
matrículas. En la tabla 3.1 se muestra en cuanto incrementa la rendimiento del
algoritmo.
Porcentaje de matrículas
Evaluación del algoritmo Matrículas localizadas
localizadas
Análisis de la imagen
96% 312 de 325
completa
Análisis de la imagen con las
99.3846% 323 de 325
80 primeras filas a 0
Incremento 3.3846% 11
Tabla 3.1: Evaluación del algoritmo con o sin la sustitución de las primeras 80 filas
de la imagen por 0.
En esta etapa se emplea además el filtro de mediana que tiene como objetivo la
eliminación de los ruidos impulsivos en la imagen y juega un papel fundamental a
la hora de la localización de la matrícula. Sin el empleo del filtro se logran captar
253 matrículas de 325 imágenes, mientras que con el empleo de este se logran
captar 323 matrículas. En la tabla 3.2 se muestra en cuanto incrementa la eficacia
del algoritmo con el empleo del filtro de mediana.
Porcentaje de matrículas
Evaluación del algoritmo Matrículas localizadas
localizadas
Incremento 21.5384% 70
Tabla 3.2: Evaluación del algoritmo con o sin el empleo del filtro de mediana.
Como se ha observado en las tablas 3.1 y 3.2 se muestra como el desempeño del
programa a la hora de la localización de la matrícula se ve seriamente afectado sin
44
el empleo de estas técnicas de pre-procesamiento, de ahí la necesidad de su
empleo en la investigación. Las fotos que no fueron detectadas se deben a
diferentes motivos, ya sea por la calidad de la misma o por la intensidad de la
iluminación en que fue tomada la foto, lo cual se ve reflejado en la figura 26 la cual
muestra una de las imágenes en la que no se captó la matrícula.
45
Fig. 28: Imágenes de la localización de la matrícula con el vehículo desde una
posición lateral a la cámara y con distintos ángulos de captura.
46
Como se puede observar en las imágenes mostradas a continuación se puede dar
el caso de que exista en una imagen más de un candidato a matrícula, como es el
caso de la figura 30 en la que se detectan más de una matrícula en una imagen, o
en la figura 31 en la que se detecta la matrícula y otras zonas del vehículo como
posibles candidatos en una misma imagen.
Fig. 31: Imágenes en las que se detecta una matrícula y otras zonas del vehículo
como posibles candidatos.
47
caracteres estén cortados y no es posible identificar los siete caracteres
alfanuméricos. Esto sucede en 3 de las imágenes detectadas por lo que no se
tendrán en cuenta estas para la evaluación de la eficiencia del algoritmo para el
reconocimiento de los caracteres, pero si se tendrán en cuenta para determinar la
eficiencia del algoritmo total. Teniendo en cuenta que el algoritmo no detecta las
matrículas en 2 de las imágenes, el porciento de error del programa en cuanto a la
no detección de sus siete caracteres es 3 de 323, o sea, un 0.9287%.
48
Porcentaje de
Porcentaje del Matrículas
Evaluación del Caracteres matrículas
reconocimiento totalmente
algoritmo reconocidos totalmente
de caracteres identificadas
identificadas
Sin corrección
del ángulo de
92.3214% 2068 de 2240 72.1815% 231 de 320
inclinación
Con corrección
del ángulo de
97.9464% 2194 de 2240 88.75% 284 de 320
inclinación
Tabla 3.3: Evaluación del algoritmo con o sin el empleo de la función de corrección
del ángulo de inclinación.
Como se aprecia en los datos dados y en la figura 32, el desempeño del algoritmo
se afecta considerablemente, de ahí la necesidad del empleo de esta función. En
esta figura, en las dos primeras columnas se muestra la imagen inicial y como no
todos sus caracteres son reconocidos correctamente; mientras que en las dos
restantes columnas se muestra la imagen inicial corregida, y como son eliminados
los errores cometidos por el reconocimiento de sus caracteres con la corrección
del ángulo de inclinación.
49
En las figuras 33 y 34 se muestra cómo se comporta el tiempo de procesamiento
sin y con el empleo de esta función en cada iteración, señalándose en estas con
líneas discontinuas de color azul el tiempo medio de procesamiento, el cual
incrementa en 16,7mseg cuando se emplea la función de corrección del ángulo de
inclinación. Teniendo en cuenta que el tiempo de procesamiento no aumenta
considerablemente y con el empleo de esta se logran muy buenos resultados en
cuanto a la cantidad de caracteres que se reconocen correctamente se decide
utilizarla para el desarrollo de la investigación.
50
Fig. 34: Gráfico del tiempo de procesamiento con el empleo de la función de
corrección del ángulo de inclinación.
51
3.4 Clasificadores implementados
Como se explica en el capítulo 2 para reconocimiento de los caracteres se
emplean redes neuronales combinadas con el bagging, por lo que en este acápite
se demuestra la eficacia del algoritmo propuesto en cuanto al reconocimiento de
los caracteres con el empleo del bagging con respecto a las redes neuronales por
separado, y se compara con el tiempo de procesamiento.
Bagging de letras
Las redes neuronales empleadas para las letras fueron nombradas MKL1, MKL2 y
MKL3 y en la tabla 3.4 se muestra un análisis de la eficacia y el tiempo de
procesamiento de cada una de ellas y el bagging.
Evaluación de los Porcentaje del
Cantidad de letras Tiempo de
clasificadores para las reconocimiento de las
reconocidos procesamiento
letras letras
52
Bagging de números
Las redes neuronales empleadas para los números fueron nombradas MKN1,
MKN2 y MKN3 y en la tabla 3.5 se muestra un análisis de la eficacia y el tiempo de
procesamiento de cada una de ellas y el bagging.
Evaluación de los Porcentaje del
Cantidad de números Tiempo de
clasificadores para los reconocimiento de
reconocidos procesamiento
números números
Como se puede apreciar en la tabla 3.5 con el empleo del bagging se logra
incrementar el desempeño del algoritmo para el reconocimiento de caracteres,
logrado detectar correctamente 12 números más que con la red neuronal MKN3
que es la que presenta un mayor desempeño respecto a las otras y con el
incremento de 49.5mseg del tiempo de procesamiento.
53
superior al 3% y los que menor porcentaje de error presentan son el „4‟, „7‟ y „8‟
con un porciento de error por debajo al 1%.
Total de equivocaciones 7 2 2 11
Total de 8 4 6 5 1 4 4 0 1 2 35
equivocaciones
Total de números 573 264 183 139 110 88 106 118 152 187 1920
Porcentaje de 1.39 1.51 3.27 3.59 0.9 4.54 3.77 0 0.65 1.06 1,82
error
54
Evaluación del rendimiento del
Porcentaje de efectividad Porcentaje de error
programa
Matrículas totalmente
88.75% 11.25%
identificadas
Total de Matrículas
Identificadas
Error en la Localización
55
CONCLUSIONES
56
RECOMENDACIONES
57
REFERENCIAS BIBLIOGRÁFICAS
ASHOORI-LALIMI, M. & GHOFRANI, S. 2011. An Efficient Method for Vehicle License Plate
Detection in Complex Scenes. Circuits and Systems.
CRUZ, A. M. D. 2013. La chapa que viene [Online]. Available: http://digital@juventudrebelde.cu
[Accessed].
CHUNYU, C., FUCHENG, W., BAOZHI, C., XIN, C. & CHEN, Z. 2013. Application of image processing
to the vehicle license plate recognition Proceedings of the 2nd International Conference on
Computer Science and Electronics Engineering (ICCSEE 2013).
DEHSHIBI, M. M. & ALLAHVERDI, R. 2011. Persian Vehicle License Plate Recognition Using
Multiclass AdaBoost. 3rd International Conference on Signal Acquisition and Processing
(ICSAP 2011).
DLAGNEKOV, L. 2004. License Plate Detection Using AdaBoost.
DORSCH, J. P., FORT, V. A. & FURLÁN, L. G. 2009. Reconocimiento automático de matrícula del
automotor.
HARRINGTON, P. 2012. Machine learning in action. Manning Shelter Island [Online]. Available:
http://www.manning.com.
INDUSTRIAL, I. E. A. Y. C. 2005. Segmentación por umbralización. Método de Otsu. Universidad
Nacional de Quilmes.
JIMÉNES, S. E. C. 2012. Identificación y reconocimiento de matrículas de automóviles con Matlab.
Proyecto de fin de carrera, Universidad Politécnica de Madrid.
KANG, D.-J. 2009. Dinamic programing-based method for extraction of license plate numbers of
speeding vehicles on the highway. International journal of automotive technology, Vol. 10
No. 2.
KASAEI, S. H., KASAEI, S. M. & KASAEI, S. A. 2010. New Morphology-Based Method for Robust
Iranian Car Plate Detection and Recognition. International Journal of Computer Theory and
Engineering, Vol. 2 No. 2.
KOLOUR, H. S. & SHAHBAHRAMI, A. 2011. An evaluation of license plate recognition algorithms.
International Journal of Digital Information and Wireless Communications (IJDIWC), Vol. 1.
KTATA, S., BENZARTI, F. & AMIRI, H. 2013. License plate localization using Gabor filters and neural
networks Journal of Computer Science, Vol. 9 No. 10.
58
MACHECHA, V. A. & SEPÚLVEDA, J. Q. 2008. Sistema de reconocimiento y lectura de placas de
vehículos en movimiento. XIII Simposio de tratamiento de señales, imágenes y visión
artificial. STSIVA 2008.
MAI, V., MIAO, D., WANG, R. & ZHANG, H. 2011. An Improved Method for Vietnam License Plate
Location.
MALPARTIDA, E. A. S. 2003. Sistema de visión artificial para el reconocimiento y manipulación de
objetos utilizando un brazo robot. Tesis para Optar el Grado de magister en ingeniería de
control y automatización., Pontificia universidad católica del Perú.
MENDOZA, L. E. M. & BELTRÁN, R. J. Z. 2009. “Desarrollo de una aplivación para el reconocimiento
automático de placas a partir de la imágen digital de un vehículo”. Trabajo de grado
presentado comorequisito parcial paraoptaral Título de INGENIERO EN COMPUTACIÓN,
Universidad de Oriente.
POZO, J. S. D. 2009. Detección de matrículas mediante características binarias locales (LBP).
Proyecto de fin de carrera, Universidad de Murcia.
RIOS, I. 2014. Sistemas de reconocimiento de matrículas Biartic [Online]. Córdoba - Argetnina.
Available: http://biartic.com/Reconocimiento_de_Matriculas.php [Accessed].
SAHA, S., BASU, S., NASIPURI, M. & BASU, D. K. 2009. License Plate Localization from Vehicle
Images: An Edge Based Multi-stage Approach International Journal of Recent Trends in
Engineering, Vol 1, No. 1.
SARKER, M. M. K., YOON, S., LEE, J. & PARK, D. S. 2013. Novel License Plate Detection Method
Based on Heuristic Energy Map. Vol.38C No.12.
SERRANO, A. J., SORIA, E. & MARTÍN, J. D. 2009. Redes neuronales artificiales. Universidad de
Valencia.
SHIH, F. Y. 2010. Image processing and pattern recognition. In: ENGINEERS, T. I. O. E. A. E. (ed.).
Canada: Published by John Wiley & Sons.
SOLUTIONS, M. 2014. Reconocimiento automático de placa de vehículo (ALPR) [Online]. Available:
http://www.motorolasolutions.com [Accessed].
SONY. 2007. Lector de matrículas XCI-NPR-ACR [Online]. Sony Corporation. Available:
http://www.sonybiz.net/vision [Accessed].
VIDEOVIGILANCIA. 2014. Kit reconocimiento matrículas 4 pistas GV lectura y grabación [Online].
Available: http://www.videovigilancia.eu.com/489-kit-reconocimiento-matriculas-4-pistas-
gv-lectura-y-grabacion [Accessed].
59
YAN-YING, G., GUO-QING, Y. & LI-HUI, J. 2010. Adaptive Weighted Morphology Detection
Algorithm of Plane Object in Docking Guidance System. International Journal of Advanced
Robotic Systems, Vol. 7, No. 2, pp. 099-104.
YU, C.-C. & WEN, C.-Y. 2012. Multiple license plates location using the optical flow algorithm and
blob analysis. Forensic science journal, Vol. 11 No. 1.
BIBLIOGRAFÍA CONSULTADA
BRIAND.HAHN & DANIELT.VALENTINE 2007. Essential MATLAB® for Engineers and Scientists. In:
ELSEVIER (ed.).
BRIANR.HUNT, RONALDL.LIPSMAN & JONATHANM.ROSENBERG 2001. A Guide to MATLAB for
Beginners and Experienced Users. In: PRESS, C. U. (ed.).
ETHEMALPAYDıN 2010. Introduction to Machine Learning. London, England.
GOPI, E. S. 2007. Algorithm Collections for Digital Signal Processing Applications Using Matlab. In:
SPRINGER (ed.).
SMOLA, A. & S.V.N.VISHWANATHAN 2008. Introduction to Machine Learning. In: CAMBRIDGE, P.
B. T. P. S. O. T. U. O. (ed.)
60
ANEXOS
Anexo 1. Proceso empleado en la obtención de la localización de matrículas
en una imagen.
Caso 1. Localización de una matrícula en una imagen.
61
Caso 2. Localización de más de una matrícula en una imagen.
62
Anexo 2. Proceso empleado en el reconocimiento de los caracteres
alfanuméricos de las matrículas.
63
Anexo 3. Función principal del algoritmo ANPR propuesto.
function[CaractOK,CaractWrong,NumMatric,MatricWrong,MatricOK,GoodIDF,
BadIDF,VectErr,matricW,NoMat,VectErrLet,NoMatricIndex] = Results1
CompEnt =
['P010112';'P008877';'P010112';'B012856';'P008679';'P009468';'B021476';
'P009468';'B012886';'P079907';...
'P036222';'P010353';'P119744';'B012961';'P008079';'P008079';'P009586';
'P008356';'P119788';'P008930';...
'P008025';'P009464';'P080042';'P008674';'P009497';'P009497';'P008664';
'P010004';'P079874';'P008664';...
'P008945';'P010439';'B012817';'P009905';'B012533';'P008333';'P008010';
'P008078';'P080157';'P008479';...
'P119873';'P119988';'P119988';'P008438';'P119934';'P009493';'B013024';
'B013056';'B022028';'P009740';...
'P008139';'P008025';'P009229';'P010419';'P008414';'B013048';'P033563';
'P008116';'P008671';'B012726';...
'P120047';'P120283';'P009249';'P009993';'P008125';'P009465';'B013029';
64
'B013334';'P008058';'P011569';...
'T002278';'P008587';'P119645';'P009709';'P009493';'P120471';'P120361';
'P010973';'B012975';'B012975';...
'P008545';'P120165';'P010059';'P008380';'P008822';'B022028';'P120272';
'P120361';'T003135';'P120389';...
'P008348';'B012792';'B012792';'P009664';'P010973';'T005919';'P119724';
'T002947';'T002947';'P010973';...
'B042035';'P119850';'B042035';'P119850';'P119586';'B042035';'P010059';
'P008517';'P009454';'P079941';...
'P120221';'P120221';'P120221';'P080236';'P009021';'P079941';'P011625';
'P010074';'P120301';'T001407';...
'P008317';'T001407';'P008473';'P122447';'P122447';'B041722';'P010059';
'P008074';'P009709';'P008573';...
'P008573';'P032697';'B013363';'P008309';'P009139';'B013001';'P009139';
'P120192';'T003356';'P045520';...
'P119974';'P009467';'B012817';'P010152';'P120036';'B013107';'B013118';
'P080305';'P008029';'B013046';...
'P012945';'P008780';'B012931';'P010260';'P010260';'P009096';'P080326';
'P009262';'P010007';'P009586';...
'P119948';'P119948';'P008715';'P008219';'P009709';'P119586';'P008183';
'P008183';'P120015'; 'B012667';...
'P009592';'B012707';'B012897';'P120068';'B011697';'P008220';'P010074';
'P120389';'P032697';'P120361';...
'P029678';'P120195';'P010121';'P009384';'P120561';'P008954';'P080246';
'P120249';'P079960';'P008247';...
'P120249';'P008128';'P079924';'P009369';'P080246';'P080246';'P104619';
'P009369';'B012476';'B013119';...
'B059609';'B059323';'P009227';'B013107';'P120303';'P010059';'P064035';
'P120156';'P009960';'P010183';...
'P119799';'P010439';'P120156';'B013106';'B013106';'P009459';'P120432';
'P038964';'B012566';'B012566';...
'P005024';'P009778';'P120185';'P010439';'P010439';'P064035';'P008995';
'P010007';'P120401';'B003065';...
'P010439';'P119577';'P009960';'B013093';'P008128';'P126266';'P009275';
'T003010';'P119873';'P008317';...
'P008050';'P009502';'P008247';'P120090';'P119703';'B012857';'P009502';
'B012817';'P120327';'P008402';...
'P009304';'P010112';'P119588';'P008622';'P009296';'P012945';'B013106';
65
'B059321';'P080206';'P010112';...
'P033794';'P033794';'P039563';'P008025';'P010385';'P119616';'P119616';
'P080325';'P009275';'P008978';...
'P127742';'P119586';'T001423';'T001423';'P120408';'T001903';'T001423';
'T001903';'P047503';'B013168';...
'P079926';'B059328';'P080232';'P080176';'P080271';'P080271';'P119586';
'P010019';'P010019';'B012476';...
'P008473';'P008473';'P008600';'P120389';'P009484';'P009330';'P008762';
'P010029';'P079868';'P079868';...
'P120361';'P120361';'B012755';'P032697';'P008622';'P008622';'P014857';
'P120389';'P010383';'P008342';...
'B037370';'B037370';'P119870';'P119974';'B013203';'B013203';'P010074';
'P010074';'P008766';'P008220';...
'P080362';'P032697';'P008500';'P008500';'P008247';'B077432';'T001403';
'P008780';'P008968';'P008725';...
'P010342';'P010342';'P120068';'P008122';'P010347';'B077432';'T004714';
'T001403';'T001434';'T001424';...
'T001403';'T003076';'P119586';'P119859';'T003076'];
ExtImg = '.jpg';
[SizeRow, ~] = size(CompEnt);
time = zeros(1,SizeRow);xtime=1:1:SizeRow;
CountError = 0;MatricWrong=0;
nomatric=0;
MK15 = importdata('MKNPROB-100.mat');
MK100 = importdata('MKNPROB-102.mat');
MK98 = importdata('MKN104.mat');
MKL1 = importdata('MKL-900.mat');
MKL2 = importdata('MKL101.mat');
MKL3 = importdata('MKL-500.mat');
GodTurnf = ones(10,7,13);
for i = 1:13
ElevenGods=['001';'011';'021';'031';'041';'051';'061';'071';'081';'091';
'0P1';'0B1';'0T1'];
GodTurn = imread(strcat(ElevenGods(i,:),'.jpg'));
GodTurn = rgb2gray(GodTurn);DClevel = graythresh(GodTurn);
GodTurn = im2bw(GodTurn,DClevel);
66
GodTurn = TrimAlbum(GodTurn);
GodTurnf(:,:,i) = imresize(GodTurn,[10 7]);
end
GoodIDF=zeros(1,SizeRow);VectErr=zeros(1,SizeRow);
VectErrLet = zeros(1,SizeRow);
VectErrNum = zeros(1,SizeRow);
NoMatricIndex = zeros(1,SizeRow);
NoMat=0;
time2 = cputime;
T=zeros(SizeRow,1);
for i = 1:SizeRow
i
ww=1;
MatTrans = num2str(i);
MatAnalysis = imread(strcat(MatTrans,ExtImg));
[a,b,val,ContNoMat] =
Skel_Findf(MatAnalysis,3,ww,MK15,MK100,MK98,MKL1,MKL2,MKL3,GodTurnf);
SSS=0;
if a==0&b==0
[a,b,val,ContNoMat] =
Skel_Findf(MatAnalysis,5,ww,MK15,MK100,MK98,MKL1,MKL2,MKL3,GodTurnf);
end
if a==0&b==0
[a,b,val,ContNoMat] =
Skel_Findf(MatAnalysis,7,ww,MK15,MK100,MK98,MKL1,MKL2,MKL3,GodTurnf);
end
if a==0&b==0
[a,b,val,ContNoMat] =
Skel_Findf(MatAnalysis,9,ww,MK15,MK100,MK98,MKL1,MKL2,MKL3,GodTurnf);
end
if a==0&b==0
[a,b,val,ContNoMat] =
Skel_Findf(MatAnalysis,2,ww,MK15,MK100,MK98,MKL1,MKL2,MKL3,GodTurnf);
end
if a==0&b==0
ww=2.5;
[a,b,val,ContNoMat] =
Skel_Findf(MatAnalysis,3,ww,MK15,MK100,MK98,MKL1,MKL2,MKL3,GodTurnf);
67
end
if a==0&b==0
val='XXXXXXX';
SSS=1;
nomatric=nomatric+1;
NoMatricIndex(i)=i;
if ContNoMat==1
NoMat=NoMat+1;
T(i,1)=1;
end
end
x = char(CompEnt(i,:));
y = char(val);
GoodID=0;
if strcmp(x,y)==0
MatricWrong = MatricWrong+1;
VectErr(i)=i;
for j = 1:7
if strcmp(char(CompEnt(i,j)),char(val(1,j)))==0&&j==1&&SSS==0
CountError=CountError+1;
VectErrLet(i) = i;
GoodID=GoodID+1;
if char(CompEnt(i,j))==char(80)
ContP=ContP+1;
elseif char(CompEnt(i,j))==char(66)
ContB=ContB+1;
elseif char(CompEnt(i,j))==char(84)
ContT=ContT+1;
else
end
elseif strcmp(char(CompEnt(i,j)),char(val(1,j)))==0...
&&j~=1&&SSS==0
CountError=CountError+1;
GoodID=GoodID+1;
VectErrNum(i) = i;
if char(CompEnt(i,j))==num2str('1')
Cont1=Cont1+1;
elseif char(CompEnt(i,j))==num2str('2')
68
Cont2=Cont2+1;
elseif char(CompEnt(i,j))==num2str('3')
Cont3=Cont3+1;
elseif char(CompEnt(i,j))==num2str('4')
Cont4=Cont4+1;
elseif char(CompEnt(i,j))==num2str('5')
Cont5=Cont5+1;
elseif char(CompEnt(i,j))==num2str('6')
Cont6=Cont6+1;
elseif char(CompEnt(i,j))==num2str('7')
Cont7=Cont7+1;
elseif char(CompEnt(i,j))==num2str('8')
Cont8=Cont8+1;
elseif char(CompEnt(i,j))==num2str('9')
Cont9=Cont9+1;
elseif char(CompEnt(i,j))==num2str('0')
Cont0=Cont0+1;
else
end
end
end
GoodIDF(i)=GoodID;
end
time(1,i) = cputime-time2;
time2=cputime;
end
%////////////////////////////////////////////////////////////////////////
%Datos finales
%////////////////////////////////////////////////////////////////////////
matricW=nomatric;
CaractWrong = CountError;
NOlocaliz=(SizeRow-NoMat)*100/SizeRow;
NoIdCaract=((SizeRow-NoMat)-(matricW-NoMat))*100/(SizeRow-NoMat);
CaractOK = ((SizeRow-matricW)*7-CountError)*100/((SizeRow-matricW)*7);
MatricOK = (SizeRow-MatricWrong)*100/(SizeRow-matricW);
NumMatric = SizeRow;
BadIDF=size(GoodIDF(GoodIDF>1),2);
69
GoodIDF=100-(size(GoodIDF(GoodIDF>1),2)/NumMatric)*100;
%////////////////////////////////////////////////////////////////////////
% Gráfico del tiempo de procesamiento de cada caso y el promedio del
% tiempo tomados todos los casos.
%////////////////////////////////////////////////////////////////////////
figure;plot(xtime,time,'g<--','LineWidth',1.6,'MarkerEdgeColor','r');
grid;title('Gráfico de tiempo de procesamiento');xlabel('Iteraciones');
ylabel('Tiempo (Seg)');hold on;
plot(xtime,ones(1,SizeRow)*mean(time),'b--','LineWidth',2);
legend ('Tiempo','Tiempo Medio')
VectErr=VectErr(VectErr>0);
VectErrLet = find(VectErrLet~=0);
VectErrNum = find(VectErrNum~=0);
NoMatricIndex = find(NoMatricIndex~=0);
70