proyecto final version def - IIT - Universidad Pontificia Comillas

Anuncio
!
!
!
!
!
"#$%&!'!(!)&*+$,#
!
!"#$%$&$'()*(!"+*#$%,-.%/"(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?%#/+@ ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: <E(
O@?( P">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@<O#########################################################################################################################MH(
7#$#M( P2*-./*!E)()--.5*,9!P.-Q)95:!%&,4# ####################################################################################################7J(
I@C( U-1'6*#(H-#*()*()-$'# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ I?(
;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#!
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<pbumb&&p3<rdumb&&p1<lgumb)! foto
defectuosa
III. Manual
“or”: Permite ajustar de forma manual los umbrales al igual que en el
modo manual “and” excepto que en este caso la foto se cataloga como
defectuosa si cualquiera de los tres parámetros está por debajo de su respectivo
umbral. En código de Matlab la condición sería la siguiente:
if
(p2<pbumb||p3<rdumb||p1<lgumb)! foto
defectuosa
;*$*..%/"()*(8-11'#(*"(%"#$-1-.%'"*#()*(<*-=*#()*(-&$'<%#$-#(-(<-6$%6()*(%:>,*"*#!
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
Descargar