Proyecto Final Version Def - Iit - Universidad Pontificia Comillas

   EMBED

Share

Preview only show first 6 pages with water mark for full document please download

Transcript

! ! ! ! ! "#$%&!'!(!)&*+$,# ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( -./,0&! 1( '.%$+/200,3.!452#%,+.!67#8%&$!1!9&0%,+.!1:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: ;( ?@?( !"$6')&..%/"(-1(<6'A*.$' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@B( ?@C( 96'"',6-:- @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@D( <( =.>?,@,@!8$&A,+!B!&C%$#00,3.!/&!0#$#0%&$D@%,0#@ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::: E( C@?( 9-6-.$*6E#$%.-(F&:G,1'H-1@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@I( "#$#$( %&'()&)*+,-./*!0)!12&34(56,( ############################################################################################################## 7( C@C( 9-6-.$*6E#$%.-(7GH'6)*#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@J( "#"#$( %&'()&)*+,-./*!0)!836590):#################################################################################################################### ;( "#"#"( <=)&'(5:!0)!>'(.-,-./*##############################################################################################################################$$( C@K( 9-6-.$*6E#$%.-(L-",'G)%"@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ?C( "#?#$( %&'()&)*+,-./*!0)!@,*4530.*###############################################################################################################$"( "#?#"( A2:+.B.-,-./*!0)(!2:5!0)!'9)-)*+.():#######################################################################################################$C( F( '.%&$G#H!B!/&@0$,80,3.!/&!?#!7&$$#*,&.%#!/&!#.>?,@,@ ::::::::::::::::::::::::::::::::::::::::::::::: 1I( K@?( ;%#*M'(*(%)*"$%8%.-.%/"()*(*1*:*"$'# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ?D( K@C( N&".%'"-:%*"$' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ ?I( ?#"#$( D5+/*!E)()-+59 ###############################################################################################################################################$7( ?#"#"( 1.:+,!B5+5:!F!0.9)-+59.5!0)!.&G4)*):####################################################################################################$H( ?#"#?( D5+/*!I5:+9,9 ###############################################################################################################################################$;( ?#"#C( I505:!0)!0)+)--./*!F!2&69,():!0)!0)+)--./* ##################################################################################"J( ?#"#K( L)+)--./*!F!(.:+,!0)!9):2(+,05:###############################################################################################################"$( ?#"#M( N'-./*!-5*!9)-59+)!0)!(,!.&,4)*###########################################################################################################"C( J( K&@2?%#/+@ ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 1%#%#(<6*+%' @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ CI( O@C( Q6H'1()*()*.%#%/" @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ KR( C#"#$( <=)&'(5:!0)!,'(.-,-./* ##############################################################################################################################?C( O@K( 0-#-#()*(6*.'"'.%:%*"$'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ KD( C#?#$( <9959):!0)(!NO@#############################################################################################################################################?7( C#?#"( >-.)9+5:!0)(!NO@ ###########################################################################################################################################?;( C#?#?( O5&',9,-./*!)*+9)!,-.)9+5:!F!B,((5:!0)(!NO@###################################################################################CJ( ;( 6+.0?2@,+.&@:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: J<( I( "$&@282&@%+!/&?!8$+B&0%+ :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: JJ( D@?( 9'#$*#()*(%",*"%*6E-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ OO( D@C( !"+*6#%/"(A(.'#$*()*(:-$*6%-1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ OB( D@K( !"+*6#%/"(A(.'#$*()*(:-$*6%-1 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ OD( E( =.&C+@::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: JL( I@?( 9/)%,'(S*66-:%*"$-@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ OT( 7#$#$( L)+)-+59############################################################################################################################################################CH( 7#$#"( P2*-./*!,965(#################################################################################################################################################MM( ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 4 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 7#$#?( P2*-./*!I5:+9,9!%&,4)*##########################################################################################################################M7( 7#$#C( P2*-./*!8,9G&)+95: ###################################################################################################################################M7( 7#$#K( P2*-./*!8,9G&)+95:3@,*"*#! 5 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 1 Introducción Equation Chapter 1 Section 1 1.1 Introducción al proyecto La meta principal de este proyecto es detectar anomalías en la calidad de las imágenes que se capturan en las instalaciones de peajes. Esto es útil para mejorar las condiciones de mantenimiento cuando se detecta que las imágenes no poseen la calidad deseada. Además sirve para reducir la tasa de fallos del reconocedor automático de matrículas disminuyendo así los costes que cada fallo supone. Para ello se usarán varias herramientas de análisis y se han estudiado diferentes características que puedan ayudar a determinar la calidad de las fotos en cuestión con la mejor precisión posible. El proyecto se divide en varios apartados incluyendo un análisis previo, la construcción de una herramienta de trabajo, y por supuesto una evaluación de los resultados obtenidos. Intuitivamente se ha trabajado con una pequeña selección de fotos mal capturadas de forma intencionada con el intento de recrear defectos típicos en la imagen como pueden ser el desenfoque de la cámara o diversos problemas meteorológicos (lluvia, niebla etc.). Este planteamiento ha permitido familiarizarse con los parámetros que ayudan a detectar anomalías en la calidad de las imágenes. Como ejemplo sirven las fotos siguientes:( Figura 1.1 Fotos con defectos simulados (desenfoque y niebla) Posteriormente, tras obtener una serie de indicadores de calidad con las imágenes simuladas, se ha comprobado la validez de estos parámetros con una amplia biblioteca de imágenes reales capturadas en una instalación de peaje. Así pues, se ha demostrado la capacidad que tienen los indicadores de calidad escogidos para reducir la tasa de fallos del reconocedor automático de matrículas mejorando así su eficiencia y reduciendo los costes que cada fallo supone. ( ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 5 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 1.2 Cronograma Octubre Noviembre Diciembre Enero Febrero Marzo Abril Análisis previo Fotos Algoritmos de detección Construcción de la herramienta Análisis de los resultados Documentación Figura 1.2 Cronograma ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 6 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 2 Análisis previo y extracción de características La extracción de determinadas características de las imágenes son de vital importancia a la hora de analizar la calidad de la imagen. Tras un breve periodo de experimentación (utilizando las imágenes con defectos simulados descritas en la introducción), se determinó que existían tres características cuyos valores podían aportar información valiosa. A continuación se explicarán de forma detallada para facilitar la comprensión al lector. 2.1 Característica Lum_global El primero de tres valores que se usarán para determinar la calidad de las imágenes es “Lum_global”. Este parámetro, como su nombre ya indica de forma intuitiva, permite conocer la luminosidad media de la imagen en cuestión. Se determina un cálculo muy sencillo al poder manipular las matrices de cada imagen en Matlab. 2.1.1 Implementación de Lum_global Como primera aproximación para entender este parámetro se han elegido dos imágenes de un único peaje, una de día (Fig 2.1) y otra de noche (Fig 2.2). Estas imágenes se han convertido previamente a escala de grises. Figura 2.1 peaje día ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 7 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 2.2 Peaje noche Observando las imágenes parece claro que la luminosidad media de la foto en el día es claramente mayor al de la noche. El cálculo de la luminosidad media se hace de forma muy sencilla gracias al lenguaje de programación de Matlab. Basta con sumar todos los elementos que componen cada matriz y dividir entre el número de píxeles (filas*columnas). Esto en código se refleja de la siguiente manera. %cálculo de luminosidad global para día a = imread('nombre_foto.jpg'); [m,n]=size(a) lum_global_dia = (sum(sum(a))/(m*n)) donde “m” son las filas y “n” las columnas. Si se ejecuta este código para las imágenes presentadas en las figuras 2.1 y 2.2 se obtienen los siguientes valores del parámetro lum_global: lum_global_dia = 126.3892 ; lum_global_noche = 110.5794 ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 8 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Como reflejan los números calculados la luminosidad media en la foto de día es efectivamente mayor. Sin embargo esta diferencia no es muy elevada. Esto puede ser por las luces del coche, del semáforo y de la propia instalación del peaje que elevan la luminosidad de forma considerable. En cualquier caso será prematuro intentar extraer conclusiones solo a partir de dos imágenes. 2.2 Característica P_bordes Este parámetro quizás sea uno de los más determinantes a la hora de estimar el nivel de calidad de una foto. En este caso lo que se pretende es calcular el porcentaje de píxeles que han sido identificados como bordes, es decir, detectar el nivel de nitidez de la imagen. En fotos desenfocadas o borrosas las transiciones de un píxel a otro se producen de manera suave mientras que en fotos bien enfocadas y nítidas las transiciones son mucho más bruscas. De esta manera, se detectarán menos bordes en aquellas fotos que no sean muy nítidas. 2.2.1 Implementación de P_bordes Para obtener los bordes, existen herramientas en Matlab como la función “Edge” que para meter una matriz de una foto cualquiera devuelve otra matriz binaria del mismo tamaño con 1’s en todos los píxeles que hayan sido identificados como bordes y 0’s en el resto. De esta forma se podrá estudiar este parámetro de forma sencilla y cómoda. Cogiendo una foto en escala de grises tendremos una matriz de dos dimensiones donde cada elemento que la compone oscila entre 0 (negro) y 256 (blanco) en función de la intensidad luminosa de cada píxel. Al aplicarle la función “Edge” Matlab devolverá una matriz binaria del mismo tamaño, es decir, en blanco y negro donde todos los píxeles que se hayan catalogado como bordes serán 1’s y todos lo demás serán 0’s. Figura 2.3 Antes de detección de bordes ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 9 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Por ejemplo, dada la imagen de buena calidad de la figura 2.3, aplicando la función “Edge” con un umbral/(la sensibilidad del filtro) de 0,04 y un filtro “Sobel” se obtiene una matriz que también se puede representar como imagen (ver Fig 2.4). Figura 2.4 Bordes detectados en la imagen Fig 2.3 Como se puede observar los bordes detectados se representan de color blanco y el fondo restante negro. Así pues, el parámetro “P_bordes” refleja el porcentaje de blanco que hay en la foto superior, es decir, el porcentaje de bordes que posee la imagen. Para ello basta con sumar todos los 1’s de la matriz y dividir entre su tamaño y multiplicar por 100. La implementación que se ha realizado en Matlab resulta especialmente sencilla gracias a la disponibilidad de la función “edge”: [matriz_binaria] = edge(mariz_original,'sobel',0.04); %detección de bordes con función sobel pbordes = 100*(sum(sum(b)))/(m*n); %calcula la píxeles que son bordes respecto a toda la foto en el caso de la foto superior, P_bordes = proporción de 5,99% ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 10 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 2.2.2 Ejemplos de Aplicación Para ilustrar el comportamiento del parámetro P_bordes se ha utilizado una secuencia de imágenes en la que se ha ido desenfocando de manera progresiva disminuyendo la distancia focal del objetivo respecto al ótpimo. La primera imagen está perfectamente enfocada, mientras que la tercera está visiblemente desenfocada. Aplicando este algoritmo a la secuencia de fotos de la figura 2.5 se observa como el parámetro “P_bordes” se reduce a medida que la cámara se va desenfocando. Figura 2.5 Secuencia de imágenes !"#$%&'()*+%, 4"5"'6 4"5"': 4"5"'= -.$"%/&0'123 7899 ;87< ;8;: ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 11 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Así pues, “P_bordes” parece ser un buen parámetro para detectar la falta de nitidez en la imagen, ya sea por causas externas como puede ser la niebla o por causas internas de la propia cámara como un problema en el sistema de enfoque. 2.3 Característica Rango_din El rango dinámico de la imagen (Rango_din) es el tercer parámetro que se ha utilizado en este análisis. Lo que se pretende a través del citado rango es averiguar la diferencia de luminosidad entre el píxel más claro y el píxel más oscuro, lo cual es un indicador de la calidad de la imagen. Para hacer esto se usan percentiles (5% y 95%) de modo que el 5% más oscuro y más claro de la foto no se tiene en cuenta para poder evitar así que un píxel aislado pueda llevar a confusión como se observa en el ejemplo a continuación. 2.3.1 Implementación de Rango_din Utilizando como ejemplo las siguientes imágenes (con y sin niebla) resulta lógico pensar que “Rango_din” deberá disminuir a medida que se nubla la foto pues habrá menos diferencia de luminosidad, es decir, estará menos contrastada. Figura 2.6 Fotografía sin niebla ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 12 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 2.7 Fotografía con niebla (simulada de forma analógica) El cálculo se hace en escala de grises utilizando el comando “prctile” para calcular los percentiles 95 y 5. El código en Matlab es el siguiente: c=rgb2gray('foto1');% se pasa la foto 1 a escala de grises d=rgb2gray('foto2');%se pasa la foto 2 a escala de grises %se ponen todos los elementos de cada matriz en un vector r1=c(:); r2=d(:); pnovc1= prctile(r1,95); % cálculo de percentiles pc1=prctile(r1,5); rango_din_foto1= pnovc1-pc1; pnovc2= prctile(r2,95); % cálculo de percentiles y de pc2=prctile(r2,5); rango_din_foto2= pnovc2-pc2; Aplicando el algoritmo a las imágenes de las figuras anteriores (2.6 y 2.7) se obtiene los siguientes valores de rango dinámico. Nombre figura Foto con niebla(foto 2) Foto normal(foto 1) Rango_din 138 218 ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 13 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Se observa en la tabla anterior que la imagen con niebla es más uniforme en luminosidad y por tanto presenta una diferencia entre el percentil 95 y el percentil 5 más pequeña. 2.3.2 Justificación del uso de precentiles Como se explicó antes, el uso de los percentiles puede ser de utilidad ya que en caso de que un píxel aislado se dispare por un reflejo o por cualquier otro motivo puede llevar a una distorsión de la realidad como se puede observar en el próximo ejemplo. Si se repite el mismo caso que antes pero pintando un solo píxel de blanco y otro de negro (difícil de detectar en la imagen global, ver figuras 2.8 y 2.9),una estimación del rango dinámico sin incluir percentiles indicará que es el máximo posible (255). El resultado mejora sensiblemente al considerar percentiles. Foto con niebla (con píxel aislado blanco y píxel aislado negro) Foto normal Figura 2.8 foto normal y foto con niebla (con píxel aislado blanco y píxel aislado negro) Figura 2.9 Zoom en la figura 2.8 para mostrar el píxel blanco puro ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 14 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Nombre figura Foto con niebla Foto normal Rango_din 255 218 Como se puede observar en el cuadro superior, el valor del “Rango_din” en el caso de la foto nublada se ha disparado. Ya que no tiene sentido que dos píxeles disparen el valor de este parámetro se usarán el percentil 95 y el percentil 5 para conseguir estimaciones más robustos frente a datos anómalos. Los resultados en este caso exactamente igual que el primer ejemplo. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 15 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 3 Interfaz y descripción de la herramienta de análisis Como en cualquier trabajo de investigación, la creación de una herramienta de análisis ayuda y agiliza en gran medida el flujo de resultados. Para ello se ha creado una interfaz denominada “Detector” para automatizar el cálculo de los parámetros de calidad en distintos conjuntos de imágenes. El funcionamiento de la herramienta se explica en los próximos puntos para facilitar la comprensión al lector o usuario de la propia herramienta. 3.1 Diseño e identificación de elementos Antes del propio funcionamiento de la interfaz resulta conveniente explicar brevemente el diseño y el aspecto gráfico de la misma. A continuación se muestra un mapa y la lista de elementos para facilitar la identificación de cada componente y familiarizar al usuario con el “detector”. Figura 3.1 Elementos fundamentales de la herramienta ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 16 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( elemento 1 2 3 4 5 6 7 8 9 10 11 12 13 14 nombre botón selector selección de fotos directorio botón mostrar modos de selección de algoritmo botón detectar opción recorte umbrales de detección lista de resultados porcentaje fotos buenas porcentaje fotos malas botón evaluar lista fotos recortadas botón mostrar recorte Figura 3.2 lista de elementos 3.2 Funcionamiento En este apartado se explica de forma detallada la función de cada elemento de la interfaz y su utilidad. Se explican los objetos en el orden en que generalmente se aplican para procesar un conjunto de imágenes de manera automática. 3.2.1 Botón Selector Este elemento como su propio nombre indica, es el botón que permite al usuario acceder a cualquier directorio de imágenes para escoger las fotos deseadas y posteriormente analizarla. Figura 3.3 Selección de imágenes mediante el botón asociado ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 17 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 3.2.2 Lista fotos y directorio de imágenes El elemento “2” es el espacio reservado para mostrar la lista de fotos seleccionadas. Como después se verá, el botón mostrar localizado justo debajo permitirá visualizar cualquier archivo que se seleccione de la lista. Además en el elemento “3” se muestra el nombre y ruta del directorio donde están localizadas las imágenes escogidas. Si tras saltar la ventana al pulsar el botón selector se escogen un determinado número de archivos se mostrarán en la lista como se aprecia en la figura 3.4 donde se han elegido 6 imágenes. Además es fácil saber de qué directorio se han extraído ya que también aparece en el recuadro a la derecha de la lista. En el ejemplo de la figura inferior el directorio es “/Volumes/FLASH DRIVE /fotos totales/buenas dia totales/ ”. Lista de fotos y directorio Figura 3.4 Lista de imágenes y directorio asociado ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 18 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 3.2.3 Botón Mostrar El botón mostrar permite ver cualquier imagen de la lista de fotos. Siguiendo el ejemplo anterior, si se selecciona la cuarta foto de la lista y a continuación se pincha en el botón mostrar aparece la siguiente imagen. Figura 3.5 Botón mostrar Así pues, el botón Mostar es de gran utilidad ya que al analizar los parámetros de las fotos seleccionadas se podrán visualizar a la misma vez, permitiendo comprobar fácilmente la coherencia de los resultados. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 19 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 3.2.4 Modos de detección y umbrales de detección Antes de pinchar sobre el botón Detectar será necesario fijar el modo que se desea emplear ya que existen tres posibilidades. Como se puede ver en la figura 3.1 los tres modos son mutuamente excluyentes. A continuación se describe cada modo. Figura 3.6 Modos de detección I. Automático: Este modo de detección funciona a través de un árbol de decisión generado automáticamente a raíz de los resultados obtenidos a lo largo del proyecto. Se ha programado internamente la herramienta para que automáticamente refleje los mismos resultados que el árbol de modo que sin necesidad de ajustar ningún umbral se pueda saber cuantas fotos de las escogidas tienen algún tipo de fallo y cuantas son correctas. Según la clasificación realizada por el árbol, debido a que la longitud de las condiciones impuestas por el proceso de clasificación no son pocas, el código se explicará más adelante en el apartado de resultados. II. Manual “and”: Este modo permite ajustar de forma manual los umbrales “Lum_global”, “P_bordes” y “Rango_din” de forma que si la foto analizada tiene los tres parámetros por debajo de los respectivos umbrales impuestos por el usuario la foto se cataloga como defectuosa. Reflejado en código de Matlab la condición sería la siguiente: if (p2,*"*#! 20 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Nota: Los campos reservados para introducir los umbrales deseados por el usuario (Fig 3.7) se mantendrán inactivos si no se ha elegido cualquiera de los dos modos manuales. Figura 3.7 Umbrales de detección 3.2.5 Detección y lista de resultados Después de haber elegido uno de los tres modos disponibles de detección, el botón Detectar será el encargado de generar una lista de resultados donde se muestra el nombre de los archivos escogidos y los valores de sus respectivos parámetros. Cada uno de estos ficheros se analiza a través de un código para saber si la foto en cuestión es defectuosa o no. En caso de que la foto tenga defectos, el nombre del fichero se acompañará con dos asteriscos tal y como indica en la leyenda situada encima de la lista de resultados (ver figura 3.8). Además, a la derecha de la lista de resultados existen dos campos (elementos 10 y 11 según figura 3.8) donde se muestra el porcentaje de fotos realizadas con éxito y el porcentaje de fotos defectuosas. De este modo, si se quiere analizar una foto en particular se podrán observar sus características en la lista de resultados y además observarla pinchando en el botón mostrar. Si al finalizar la detección el usuario tiene interés en ver el número de fotos que se han procesado y los resultados de forma gráfica también tendrá la posibilidad de hacerlo pinchando en el botón Evaluar (elemento 12 según figura 3.2). Si se escoge una amplia selección de imágenes y el modo automático el detector tendrá el aspecto siguiente: ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 21 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 3.8 Ejemplo detección Como se aprecia en la figura 3.8 ya están pobladas la lista de fotos y el directorio donde se puede apreciar que se han extraido una serie de imágenes pertenecientes a la carpeta “noche malas”. Si se pincha a continuación en el “botón Detectar” la herramienta pasará a tener el aspecto siguiente: Figura 3.9 Lista de resultados ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 22 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Se ve ahora que la lista de resultados está poblada y que los campos a la derecha de la lista también se han rellenado de forma automática con un determinado porcentaje. Al haberse escogido para este ejemplo una selección de fotos pertenecientes a la carpeta “Malas noche totales” parece coherente que un 88,7% de las imágenes procesadas resulten defectuosas. El 11,3% restantes que se han catalogado como imagenes buenas son un mero reflejo de que el algoritmo de detección de la herramienta no es perfecto ya que presenta un pequeño error. Si por ejemplo ahora se quisiese contrastar la imagen “146694-011120102027-16851460_11_1.jpg” (la que está seleccionada en figura 3.9) con sus parámetros de la lista de resultados bastaría con buscarla en la lista de fotos y pinchar en Mostrar, (ver figura 3.10). Figura 3.10 Foto 146694 En efecto, la foto es defectuosa, tal y como lo marcan los asteriscos a la derecha del fichero en la lista de resultados. Si se quisiese ahora analizar cuantas fotos han resultado ser defectuosas de forma gráfica bastaría con pinchar en el botón “Evaluar” mostrando la herramienta la siguiente figura donde se puede observar en un diagrama de barras y en un diagrama de sectores dicho porcentaje. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 23 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 3.11 Gráfica resultados 3.2.6 Opción con recorte de la imagen La opción con recorte es simplemente una variante a la detección normal explicada en el apartado 3.2.4. Todo lo explicado sigue siendo válido, siendo posible pinchar sobre la opción con recorte (elemento 7 según figura 3.1) para que el usuario pueda elegir de forma totalmente libre la zona de cada foto que desea procesar. Al igual que con la lista de fotos y el botón “Mostrar”, también existe una lista de recortes donde se almacenará la zona de interés escogida por el usuario y un botón “Mostrar recorte” que permite visualizar la misma. Esta opción resulta muy útil cuando se quiere analizar el valor que toman los parámetros de calidad en una determinada zona de la imagen (por ejemplo la zona de la matrícula) en lugar de obtener los parámetros de la imagen total. Escogiendo una pequeña muestra de imágenes y pinchando sobre el modo automático y la opción con recorte el detector tiene el siguiente aspecto. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 24 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 3.12 Opción recorte 1 Pinchando ahora sobre el botón “Detectar” se abrirá una ventana mostrando la primera foto y ofreciendo al usuario elegir la zona de la foto que desea analizar. Figura 3.13 Opción recorte 2 ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 25 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Haciendo doble clic en la esquina inferior de la zona deseada, el recorte elegido se almacenará y se pasará a la siguiente foto de la lista hasta terminar. Después de haber elegido los recortes en todas las fotos, estos aparecerán en la lista de recortes (elemento 13 según figura 3.2) pudiéndose ver en cualquier momento el elegido al pulsar el botón “Mostrar recortes”, (vease la figura 3.14). Figura 3.14 Visualización de un recorte ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 26 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 4 Resultados Para saber si son realmente útiles los parámetros descritos en el capítulo 2, es necesario realizar una serie de pruebas para validar su eficiencia. En este capítulo se explicarán tanto los resultados obtenidos como la manera en que se han conseguido. 4.1 Análisis previo Teniendo en cuenta que ya se dispone de la interfaz para agilizar el flujo de resultados conviene probar ahora con una selección de fotos amplia ya que no se sabe realmente si la extracción de características discutida en el capítulo 2 aportará validez a la hora de saber si una foto es defectuosa o no. Para esto se han seleccionado aproximadamente 1600 fotos de los días 1 y 10 de noviembre del año 2010 pertenecientes a un peaje real para posteriormente dividirlas en 4 directorios distintos, mostrados a continuación: Figura 4.1 División en carpetas De esta forma, el objetivo ha sido disponer de 4 grupos de fotografías previamente clasificadas para poder identificar de que carpeta proviene la foto pudiendo saber entonces, si es defectuosa o no. Para esto, lo primero ha sido ejecutar la herramienta de trabajo para cada carpeta y almacenar todos los datos en un archivo de texto (se ha optado por trabajar con Microsoft Excel, ver anexo 1). Dibujando en Matlab la luminosidad global frente a P_bordes para todas las fotos (Fig 4.2) se debería conseguir diferenciar según la zona de donde proviene cada foto. Se ha optado por dibujar en verde todas las fotos que provengan de una carpeta sin defecto y en rojo todas las que provengan de una con defecto. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 27 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( A su vez, las de noche se han dibujado en forma de cuadrado, mientras que las de día se han dibujado con el signo +. Se pueden distinguir 4 zonas (ver Fig 4.3). Figura 4.2 lum_global frente a P_bordes Figura 4.3 Zonas ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 28 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Lógicamente, un cierto solape en todas las zonas es inevitable lo que implica que no son perfectamente distinguibles y que será prácticamente imposible no cometer error a la hora de construir un algoritmo que pretenda detectar de que zona proviene la foto. Dibujando un diagrama de cajas para la luminosidad global para cada uno de los grupos considerados se obtiene queda la siguiente figura: Figura 4.4 Diagrama de cajas lum_global En la figura se puede apreciar que la noche y el día son separables parcialmente utilizando un umbral de corte por luminosidad global cercano al 120. Las zonas de solape seguramente sean causa de un deslumbramiento de las luces por la noche aumentando de esta forma muchísimo la luminosidad y dificultando el determinar si es diurna o nocturna. De todos modos el diagrama refleja que el valor 120 marca una división bastante aceptable entre el día y la noche. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 29 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( La figura 4.5 muestra el diagrama de cajas para el parámetro P_bordes en cada uno de los grupos considerados. Figura 4.5 Diagrama de cajas P_bordes En este diagrama también se puede apreciar una división bastante aceptable entre malas_día/buenas_día y malas_noche/buenas_noche. De forma aproximada parece ser que el valor que marca el defecto diurno es 0.1 mientras que el valor que marca el defecto nocturno es 0.05. Estos valores obtenidos a partir de los diagramas de cajas con equivalentes a los que se había dibujado intuitivamente en la figura 4.3 (pag 28). Aprovechando que todo los datos están almacenados y clasificados en Excel el objetivo ahora será determinar el algoritmo óptimo para determinar a partir de que valores la foto queda catalogada como buena o defectuosa. Para esto se empleará un árbol de decisión. 4.2 Árbol de decisión El objetivo ahora es saber que valores de Lum_global y P_bordes consiguen diferenciar con precisión que clase de foto se está analizando. Como ya se ha visto en el punto anterior existen zonas que diferencian los distintos tipos de fotos con cierta claridad lo cual implica que el árbol debería tener un porcentaje de acierto aceptable. Usando los archivos almacenados en Excel y distinguiendo exclusivamente entre fotos malas y fotos buenas se ha construido el siguiente árbol: ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 30 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 4.6 Árbol de decisión ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 31 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( El árbol reflejado en la figura anterior no es más que el intento de dividir la nube de puntos de la figura 4.2 en determinadas zonas que maximicen el número de aciertos a la hora de intentar clasificarlas como buenas o malas. Si se dibujan las líneas que delimitan cada región intentando reproducir los resultados del árbol se obtiene lo siguiente. Figura 4.7 Zonas definidas automáticamente por el árbol Según lo reflejado en la figura 4.7 y el árbol de decisión de la figura 4.6, todas las imágenes que tengan sus valores comprendidos entre determinados umbrales que hagan la foto caer en las zonas rojas serán catalogadas como defectuosas mientras las que tengan sus valores en zona verde serán clasificadas como buenas. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 32 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Estas condiciones se han implantado de forma explícita en el modo automático de la herramienta con la siguiente función de Matlab: function[buenas,malas] = arbol(lg,pb,buenas,malas) if pb>=0.10345 buenas=buenas+1; else if pb<0.0309 malas=malas+1; else if lg<117.955 if pb<0.03725 if lg<106.73 malas=malas+1; else if pb<0.03145 buenas=buenas+1; else malas=malas+1; end end else buenas=buenas+1; end else if pb<0.07595 if lg<124.035 if pb<0.0709 if pb<0.0527 buenas=buenas+1; else malas=malas+1; end else buenas=buenas+1; end else if pb<0.0483 malas=malas+1; else if pb<0.06345 if pb<0.0569 malas=malas+1; else buenas=buenas+1; end else malas=malas+1; end end end else if lg<136.875 if lg<118.935 malas=malas+1; else buenas=buenas+1; end else malas=malas+1; end end end end end return ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 33 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Implantando el código anterior en la herramienta se ha definido la modalidad automática de la misma. Si ahora se prueba con la muestra entera de fotografías pertenecientes a la cuatro carpetas citadas en el apartado 4.1 debería conseguir un porcentaje de acierto aceptable. Además se probará con cada carpeta por separado para ver que porcentaje de aciertos obtiene de forma individual. La siguiente tabla refleja el porcentaje de acierto global y el particular en cada tipo de foto. 01%&(23+4( :(;(23+4( 01%&(23&"$>% :(;(23&"$>% :%A$;( !"#$%&'()%*+%*($,%#'"*-./ !"#$%&'()%*+%*%##"#*-./ 5678 975 6<7= 9=76 5?76 @7= 667< 997< B@7C 897C 4.2.1 Ejemplos de aplicación A continuación se muestran varios ejemplos mostrando casos en los que se ha acertado y en los que se ha fallado al aplicar la lógica de clasificación del árbol de decisión, es decir, al considerar las zonas de la figura 4.7 como criterio de clasificación. Figura 4.8 fotos diurnas bien hechas Figura 4.9 fotos diurnas bien hechas ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 34 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Con los valores de la tabla, las imágenes quedan en zona verde situación que es correcta ya que no existen anomalías en ninguna de las dos fotos. Figura 4.10 foto diurna mal hecha hecha Figura 4.11 foto diurna mal Las fotos superiores reflejan un caso de acierto y un caso de fallo. La primera de las dos (izquierda) se situa en zona roja según los valores, lógico pues la foto está completamente desenfocada. Sin embargo, la segunda se situa en zona verde, incorrecto pues la foto tiene un poco de suciedad en la mitad superior. Al ser un caso difícil de detectar ya que la foto no está demasiado mal se ha colado en zona verde y por tanto ha clasificado la foto incorrectamente. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 35 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Figura 4.12 acierto malas_noche Figura 4.13 fallo malas_noche Los valores de la figura 4.11 caen en zona roja y por tanto son correctos ya que la foto esta muy borrosa. Sin embargo, la foto de la figura 4.12 cae en zona verde, clasificándose incorrectamente, ya que la foto tiene defectos en las faros y no es demasiado nítida. Como se ha visto en los ejemplos superiores, el árbol de decisión no funciona a la perfección ya que siempre existen casos dudosos que dificultan mucho la clasificación de la foto. 4.3 Tasas de reconocimiento Este apartado se analiza la validez que tienen los parámetros que se han utilizado a lo largo del estudio para reducir la tasa de fallos del reconocedor automático de las matrículas (OCR). El árbol creado anteriormente demuestra la posibilidad de ajustar unos umbrales capaces de detectar la calidad de las imágenes que se desean analizar. Bien es cierto que estos umbrales tienen que ajustarse para cada instalación de peaje en concreto ya que el fondo de la imagen, elemento que se usa como constante para este estudio, es diferente en cada peaje. Si se olvidan los umbrales concretos del apartado anterior y se analiza la calidad de las imágenes de forma genérica se puede comprobar como la validez de los parámetros escogidos es indiscutible, cosa que será muy útil a la hora de reducir la tasa de fallos del OCR. Recogiendo una serie de datos de un peaje concreto y tras un filtro utilizado para encontrar fotos defectuosas, se han estudiado una serie de fotos donde la matrícula detectada por el OCR no coincide con la matrícula leída por el operario humano. A ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 36 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( continuación se muestran ejemplos donde por alguna razón el OCR ha fallado y posteriormente ejemplos donde el OCR ha acertado. 4.3.1 Errores del OCR OCR matrícula detectada UV8451 Operario humano UV8453 Figura 4.14 Ejemplo 1: fallo matrícula (haz de luz) OCR matrícula detectada SP5712 Operario humano SP5732 Figura 4.15 Ejemplo 2: fallo matrícula (haz de luz) ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 37 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( OCR matrícula detectada TYBO34 Operario humano DY9034 Figura 4.16 Ejemplo 3: fallo matrícula (calidad) OCR matrícula detectada 1R7P2P Operario humano LR7820 Figura 4.17 Ejemplo 4: fallo matrícula (calidad) ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 38 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 4.3.2 Aciertos del OCR Figura 4.18 Ejemplo 1: acierto matrícula OCR matrícula detectada CT6184 Operario humano CT6184 Figura 4.19 Ejemplo 2: acierto matrícula ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 39 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( OCR matrícula detectada XN7445 Operario humano XN7445 Figura 4.20 Ejemplo 3: acierto matrícula 4.3.3 Comparación entre aciertos y fallos del OCR Utilizando ahora la herramienta de trabajo se van a organizar mediante la siguiente tabla los valores obtenidos en los casos de acierto con los casos de fallo para estudiar si existe diferencias bruscas en los parámetros y así poder disminuir la tasa de fallos del OCR. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 40 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( Como se puede observar en los ejemplos anteriores las dos primeras fotos (UV8453 y SP5732) generan confusión por un haz de luz que atraviesa la matrícula tapando zonas de algunas letras y dificultando mucho la lectura de la misma. Esto se refleja bastante bien en la tabla superior ya que tanto el porcentaje de bordes y sobre todo el la descompensación del rango dinámico con respecto a la luminosidad global reflejan valores inusuales si se comparan con los casos de aciertos. El caso de las dos fotos restantes, donde el OCR falla debido a un problema de brillo elevado y mala calidad, también es notablemente visible en la tabla superior. Comparando los valores se ve que la luminosidad global de las fotos (235 y 234) es elevadísima al igual que el porcentaje de bordes (15% y 14%) es bajo respecto a los valores en los casos de acierto. Así pues, los defectos en las cuatro fotos superiores donde el OCR falla, se podrían detectar a través de un ajuste de los parámetros en cuestión, pudiendo de esta forma reducir la tasa de fallos del OCR y evitar costes adicionales que estos fallos puedan suponer. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 41 ! !"#$%$&$'()*(!"+*#$%,-.%/"(0*."'1/,%.-(2!!03(4(5"%+*6#%)-)(7'"$%8%.%-(9':%11-#( 5 Conclusiones Se ha presentado un sistema para clasificar imágenes de acuerdo a su calidad. Dicha clasificaciónn se basa en 3 parámetros de calidad que se analizan mediante un árbol de decisión y cuya lógica se ha programado posteriormente en una herramienta de análisis permitiendo al usuario el uso de una modalidad automática. Como conclusión general del proyecto se puede afirmar que la detección de la calidad de las imágenes puede resultar muy ventajosa tanto para el mantenimiento de las cámaras en los peajes como para reducir la tasa de fallos del reconocedor automático de matrículas. Sin embargo, cabe destacar que el ajuste de los parámetros de calidad escogidos debe hacerse para cada instalación ya que el fondo de la imagen difiere en cada caso, sin embargo este ajuste es muy sencillo y no requiere demasiado tiempo por lo que el estudio realizado se puede considerar aplicable a cualquier instalación. ;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#! 42