Ime 203
Ime 203
PLACAS DE AUTOMÓVILES
MEDIANTE TÉCNICAS DE VISIÓN
ARTIFICIAL
George Mundaca-Vidarte
Piura, junio de 2016
FACULTAD DE INGENIERÍA
Departamento de Ingeniería Mecánico-Eléctrica
La visión es una capacidad sensorial que le permite al ser humano interpretar el entorno a
través de las habilidades de reconocer, distinguir objetos y calcular distancias, con la
intención de dotar de las mismas habilidades a un computador surge el concepto de visión
artificial como el conjunto de técnicas computacionales para el procesamiento y análisis de
información que provienen de imágenes digitales.
Así también, se busca fomentar el uso de algoritmos de visión artificial para el procesamiento
digital de imágenes con enfoque en diversos campos como la agroindustrias, biomedicina,
seguridad entre otros, que pueda generar propuestas de inversión y desarrollo para la
comunidad.
Introducción ......................................................................................................................... 1
Capítulo 1 Antecedentes...................................................................................................... 3
1.1. Motivación y justificación ......................................................................................... 3
1.2. Objetivos .................................................................................................................... 4
1.3. Metodología ............................................................................................................... 4
1.4. Conceptos generales .................................................................................................. 4
a) Imagen digital .................................................................................................. 4
b) Imagen digital RGB ......................................................................................... 5
Conclusiones .......................................................................................................................57
Bibliografía .........................................................................................................................59
1
Introducción
La visión artificial por computadora es un campo de gran interés para distintos sectores de
la industria, esto se debe a que un gran porcentaje de la información recibida por el hombre
es visual, adquirir dicha información en un sistema computacional es un gran desafío en la
actualidad y se logra mediante el método llamado “Procesamiento y reconocimiento de
imágenes por computadora” [1], el mismo que ha presentado un grado de relevancia en los
últimos años en el cual los investigadores vienen desarrollando aplicaciones en distintos
campos como la agroindustria, la medicina, la seguridad entre otros [2]. El desarrollo de
estos algoritmos busca dar solución a problemas como la detección, identificación y
clasificación de objetos, entre otras diversas necesidades [3].
La elaboración de esta tesis plasma de manera concisa y clara las etapas de esta
investigación, presentándolo en 5 capítulos, en el Capítulo 1: “Antecedentes” explica
brevemente la motivación y justificación del trabajo así como conceptos generales de
imágenes digitales [4], en el Capítulo 2: “Algoritmos de visión artificial” explica los
conceptos de los algoritmos que serán implementados en el desarrollo del sistema en el
entorno Matlab [5], en el Capítulo 3: “Etapas del sistema de visión artificial” se explica las
etapas del sistema, desde la adquisición de la imagen de las placas en formato RGB para
pasar por la etapa de pre-procesado en base a algoritmos de reducción de imagen y
conversión a escala de grises, para luego pasar por la etapa de localización de placa basado
en algoritmos de transformada de Bottom-Hat y convolución lineal [6], luego se procede con
la etapa de corrección de perspectiva con la finalidad de que la posición del automóvil con
respecto a la cámara al momento de la captura no influya en el resultado, esto se realiza en
base a algoritmos de transformada de Hough y transformada proyectiva bidimensional [7],
luego se procede a la etapa de reconocimiento de caracteres (OCR) mediante el método de
correlación de Pearson [8], en el Capítulo 4: “Análisis de los resultados” se analizará los
resultados de las pruebas que se realizaron, finalmente en el Capítulo 5: “Artículo científico”,
contiene el artículo científico resultado de la investigación y que se expuso en el Congreso
2
Capítulo 1
Antecedentes
1.2. Objetivos
Desarrollar un sistema en la plataforma Matlab que pueda identificar los caracteres en placas
de automóviles, sin importar la perspectiva que este se encuentre delante de la cámara al
momento de adquirir la imagen.
1.3. Metodología
a) Adquisición de imágenes
Las imágenes son adquiridas y digitalizadas, las que serán adquiridas por medio de una
cámara RGB.
b) Pre-procesamiento de imágenes
Se aplica algoritmos de visión artificial para pre-procesar las imágenes de muestras y
obtener solo la información necesaria que posteriormente se procesará.
d) Experimentación
Se realizará los experimentos de adquisición de nuevas imágenes
e) Validación y conclusiones
Se pone a prueba las imágenes adquiridas y se analiza la eficacia con la que trabaja el sistema
implementado.
a) Imagen digital
Una imagen digital es una función de intensidad de luz que se expresa por la función 𝑓(𝑥, 𝑦),
donde 𝑥 y 𝑦 son coordenadas llamadas pixeles y el valor de la función es un valor
proporcional a la intensidad de luz de la imagen en dicho pixel [9]. La Figura 1, muestra la
convención de coordenadas que se usará.
5
La imagen digital RGB, es representada por una matriz de tres dimensiones 𝑎 𝑥 𝑏 𝑥 𝑐, donde
a denota el número de pixeles del ancho de la imagen, b denota el número de pixeles del
largo de la imagen y c denota el plano que puede tomar el valor de 1 para el rojo, 2 para el
verde y 3 para el azul. En la Figura 2 se muestra la suma aritmética 𝐼 = 𝑅 + 𝐺 + 𝐵
representada por un cubo. La recta que une el valor mínimo con el valor máximo muestra la
escala de grises [4].
Capítulo 2
2.1. Histogramas
Los histogramas son medidas estadísticas que proporciona información de una imagen y son
utilizadas como medio para evaluar propiedades en ella. Las distribuciones presentes en los
histogramas, denotan la frecuencia con la que existen ciertos valores de intensidad de luz
por cada pixel en la imagen [4]. La Figura 3 muestra el histograma de una imagen digital,
donde el eje de las abscisas representa los valores de intensidad de luz y el eje de las
ordenadas representan número de pixeles que presenta cierto valor.
Cada valor del histograma se define como ℎ(𝑖) que representa al número de pixeles de I
(imagen) con el valor de la intensidad i para todos los valores 0 ≤ 𝑖 < 255. Esto queda
expresado formalmente en la ecuación (1).
Los filtros pueden ser considerados como operaciones de pixel por pixel donde el valor del
nuevo pixel depende del pixel original y de los pixeles que tienen relación de vecindad con
él. Los filtros lineales, son aquellos filtros en que los valores de intensidad de luz en los
pixeles dentro de la región de procesamiento se combinan de manera lineal. La función o
matriz que relaciona el pixel original con su vecindad se le denomina “mascara”. La ecuación
(2) muestra un ejemplo de mascara.
1 1 1 1
𝐻(𝑖, 𝑗) = [1 1 1] (2)
9
1 1 1
Es un filtro lineal que realiza operaciones de pixel por pixel que permite conectar dos
funciones continuas o discretas en una sola [6]. El teorema de convolución está representada
por la ecuación (3), donde I y H son dos funciones discretas bidimensionales.
∞ ∞
′
𝐼 (𝑥, 𝑦) = ∑ ∑ 𝐼(𝑥 − 𝑖, 𝑦 − 𝑗). 𝐻(𝑖, 𝑗) (3)
𝑖=0 𝑗=0
I’ = I ∗ H (4)
Esto aplicado al campo del procesamiento de imágenes, proporciona una herramienta que
permite conectar una imagen (matriz) con una máscara (matriz).
Son técnicas de procesado no lineal aplicado en una imagen, de tal forma que modifica la
geometría de los objetos, proporcionando información sobre la forma o estructura de la
imagen analizada [10]. Mediante este análisis morfológico, es posible extraer información
que sea de utilidad para la representación, identificación y descripción de la forma que
proporcionen características de forma y tamaño.
9
2.4.1. Dilatación
2.4.2. Erosión
2.4.3. Apertura
La apertura se da por una operación de erosión seguida por una operación de dilatación, se
muestra en la ecuación (7).
𝐼 ∘ 𝐻 = (𝐼 ⊖ 𝐻)⨁𝐻 (7)
2.4.4. Clausura
El cierre se da por una operación de dilatación seguida por una operación de erosión, se
muestra en la ecuación (8).
𝐼 • 𝐻 = (𝐼⨁𝐻) ⊖ 𝐻 (8)
2.5.1. Gradiente
El gradiente, es la diferencia de los pixeles vecinos en una dirección que puede ser vertical,
horizontal, radial, etc. Se mostrara un ejemplo, imagine que tiene la siguiente matriz que
puede ser una imagen en escala de grises 256 de niveles en el intervalo de [0 – 255]:
Ahora para hallar los gradientes en cada pixel usaremos la siguiente matriz, [1 0 −1]
entonces el proceso será el siguiente:
Gradiente (1,2)=240-239=1
Gradiente (2,2)=239-240=-1
Gradiente (1,3)=239-131=108
Gradiente (2,3)=240-130=110
Gradiente (1,4)=130-130=0
Gradiente (2,4)=130-129=1
Gradiente (1,5)=131-45=86
Gradiente (2,5)=130-45=85
Gradiente (1,6)=130-44=86
Gradiente (2,6)=129-44=85
240 1 108 0 86 86 44
𝐺=| |
239 −1 110 1 85 85 44
En una imagen existen zonas en las que los pixeles poseen el mismo valor, al evaluar el
gradiente en estas zonas se puede ver la diferencia entre pixeles con el mismo valor resultara
0, también existen zonas en las que los pixeles poseen valores distintos, es decir donde hay
cambio de un color a otro, esto puede ser un borde, una línea que separa un objeto de otro,
en esta zona la diferencia de los valores es bastante apreciable. Con esto se concluye que los
gradientes miden la intensidad de cambio en los colores entre pixeles vecinos a lo largo de
toda la imagen. Nótese que cuando hay un cambio de color blanco al negro, el gradiente es
máximo (255) [10]. Por tanto, en esto se basa este análisis, en localizar zonas potenciales en
las cuales exista grandes cantidades de gradientes elevados, es decir, zonas donde exista la
mayor cantidad de cambio de color de blanco al negro (zona potencial de ubicación de la
placa).
𝜕𝐼 𝜕𝐼
(𝑥, 𝑦) , (𝑥, 𝑦)
𝜕𝑥 𝜕𝑦
𝜕𝐼
(𝑥, 𝑦)
𝜕𝑥
∇𝐼(𝑥, 𝑦) = (9)
𝜕𝐼
(𝑥, 𝑦)
[𝜕𝑦 ]
La ecuación (10) muestra el valor del gradiente que es indiferente a rotaciones de la imagen
y la orientación de las estructuras contenidas en ella. Esta propiedad es importante para la
localización de los puntos bordes de la imagen.
𝜕𝐼 2 𝜕𝐼 2
|∇𝐼| = √( ) + ( ) (10)
𝜕𝑥 𝜕𝑦
De esto se puede deducir entonces, que el gradiente Sobel se puede determinar de manera
horizontal (eje x), o en manera vertical (eje y) y en cuatro direcciones.
La ecuación (14) muestra una máscara del gradiente Sobel horizontal en sus 2 direcciones:
1 0 −1 −1 0 1
[2 0 −2] ; [−2 0 2] (14)
1 0 −1 −1 0 1
La ecuación (15) muestra una máscara del gradiente Sobel vertical en sus 2 direcciones:
−1 −2 −1 1 2 1
[0 0 0 ] ; [ 0 0 0] (15)
1 2 1 −1 −2 −1
Para determinar los gradientes de la placa, se aplica la máscara horizontal ya que las zonas
de gradientes elevados tienen mayor longitud en sentido vertical y facilita la búsqueda de la
zona de la placa en la imagen. La Figura 5 muestra una imagen de un automóvil luego de
aplicarle el gradiente Sobel con máscara vertical, en ella no se puede diferenciar con claridad
la zona placa del resto de la imagen mientras que la Figura 6 muestra la misma imagen del
automóvil pero luego de aplicarle el gradiente Sobel con máscara horizontal donde la zona
de la placa si se puede diferenciar.
13
En MATLAB se digitan las siguientes líneas para determinar los gradientes por el método
sobel:
- Sobel horizontal:
hxe=[1 0 -1;2 0 -2;1 0 -1];
hxo=[-1 0 1;-2 0 2;-1 0 1];
ge=imfilter(iig,hxe);
go=imfilter(iig,hxo);
iir=abs(ge)+abs(go);
14
- Sobel vertical:
hxn=[1 2 1;0 0 0;-1 -2 -1];
hxs=[-1 -2 -1;0 0 0;1 2 1];
gn=imfilter(ii,hxn);
gs=imfilter(ii,hxs);
iit=abs(gn)+abs(gs);
ℎ = 𝑓. 𝑏 − 𝑓 (16)
En MATLAB se digitan las siguientes líneas para hacer la operación Bottom-Hat con una
máscara circular de radio 11 pixeles.
st=strel('disk',11);
ibh=imbothat(Imagen_en_escala_de_grises,st);
15
2.8. Binarización
Consiste en convertir una matriz de escala de grises, a una matriz binaria basándose en un
número de umbral X [4].
𝑎11 ⋯ 𝑎1𝑛
𝐴=[ ⋮ ⋱ ⋮ ] (17)
𝑎𝑚1 ⋯ 𝑎𝑚𝑛
Tal que:
0 ≤ X ≤ 255
La Figura 8, muestra un histograma de una imagen A con valores de 0 a 255 que muestran
los niveles en escala de grises, el valor de X denota el valor umbral, donde los pixeles con
valor menor al umbral se convertirá en 0 y los pixeles con valor mayor al umbral se
convertirá en 1.
Si:
0 ≤ a ≤ X, entonces 𝑎 = 0
X ≤ a ≤ 255, entonces 𝑎 = 1
Como resultado la Figura 9 muestra un histograma de la misma imagen A con todos los
valores de los pixeles binarizados por el efecto umbral.
Método ideado por Paul Hough que permite localizar formas a partir de una distribución de
puntos presentes en una imagen, por ejemplo: líneas, círculos o elipses. Una línea en el
espacio se puede denotar por la ecuación (18).
Dicha ecuación permite una cuantificación lineal de sus parámetros 𝑟 𝑦 𝛼, por lo que el
espacio de Hough (espacio donde se localiza las posibles rectas) y el punto 𝑝𝑖 = (𝑥𝑖 , 𝑦𝑖 ) se
relacionan según la ecuación (19).
𝑀2 𝑁2
𝑟𝑚𝑎𝑥 = √ + (21)
2 2
Es una transformada geométrica que realiza operaciones pixel por pixel, logrando así
operaciones sobre la imagen original como pueden ser: desplazamiento, rotación,
escalamiento o distorsiones, tal como se muestra en la Figura 10.
17
La transformada aplicada a una imagen produce: 𝐼(𝑥, 𝑦) → 𝐼′(𝑥 ′ , 𝑦′) donde el valor del pixel
es cambiado, para cada coordenada de la imagen 𝐼(𝑥, 𝑦) original 𝑥 = (𝑥, 𝑦) corresponde
los puntos 𝑥′ = (𝑥′, 𝑦′) de la imagen 𝐼′(𝑥 ′ , 𝑦′) esto se denota según la ecuación (22).
𝑥 → 𝑥 ′ = 𝑇(𝑥) (22)
Según referencia [11] se tiene las siguientes relaciones que se muestra en la ecuación (23)
para cada punto del plano xy y su correspondiente en el plano x’y’:
𝑥′ = 𝑇. 𝑥 (26)
Define un factor que mide el grado de igualdad entre dos matrices. Se tiene dos matrices
binarias [m × 1] :
𝑥1 𝑦1
𝑥2 𝑦2
X=[…] Y=[…]
𝑥𝑚 y𝑚
Se toma los pares (𝑥𝑖 , 𝑦𝑖 ) y se grafica en el plano cartesiano como se muestra en la Figura 11.
∑𝑚
𝑖=1(𝑥𝑖 × 𝑦𝑖 )
− 𝑋̅ × 𝑌̅
r= 𝑚 (27)
𝑆𝑥 × 𝑆𝑦
19
Donde:
∑𝑚
𝑖=1 𝑥𝑖 ∑𝑚
𝑖=1 𝑦𝑖
𝑋̅ = ; 𝑌̅ =
𝑚 𝑚
̅ Promedio de valores de matriz X.
X:
̅ Promedio de valores de matriz Y.
Y:
∑𝑚
𝑖=1 𝑥𝑖
2 ∑𝑚 𝑦𝑖 2
𝑆𝑥 = √ − 𝑋̅ 2 ; 𝑆𝑦 = √ 𝑖=1 − 𝑌̅ 2
𝑚 𝑚
Donde:
Capítulo 3
Pre-procesado OCR
( (
Localización de
placa Segmentación
Corrección de Binarización
Perspectiva
b) Foto: Para adquirir una foto almacenada en un directorio y trabajar con ella, se debe
almacenar en una variable, que el Matlab leerá como una matriz, de la siguiente manera.
Imagen=imread (‘imagen.jpg’).
Para mostrar la imagen se usa el comando imshow. Matlab puede leer formatos comunes
tales como: .jpg .png, etc.
3.2. Pre-procesado
(a) (b)
Figura 13 (a) Imagen en escala de grises (b) Imagen en formato RGB
Fuente: Elaboración propia
Es una operación que permite reducir las dimensiones de la matriz (imagen) que se está
procesando, con la finalidad de reducir el número de iteraciones y operaciones que deba
hacer el sistema y así reducir el tiempo de respuesta. Se sabe que MATLAB trabaja cada
imagen como una matriz entonces el tiempo que demore el programa en realizar el
procesamiento depende de las dimensiones de la matriz con la que se esté trabajando, de allí
la finalidad del recorte, disminuir la cantidad de iteración que realiza el programa para
hacerlo más rápido. Se debe encontrar un compromiso entre tiempo de demora del
procesamiento y precisión de este, entonces es bueno recortar la imagen siempre y cuando
no se pierda información relevante, para encontrar precisión en los cálculos.
imagen =imagen(1:2:end,1:2:end,1:1:end);
La Figura 15 (a) muestra la imagen del automóvil en escala RGB, Figura 15 (b) muestra su
correspondiente conversión a escala de grises y Figura 15 (c) muestra el complemento de la
imagen.
Esta etapa se basa en una característica fundamental de la placa que es tener letras negras en
un fondo blanco, dado que para este proyecto se tiene en cuenta únicamente placas de este
tipo es decir con fondo blanco. Cuando hay un cambio de color de blanco al negro el
gradiente es máximo (255), por ende en esto se basa este análisis, en localizar zonas
potenciales en las cuales exista grandes cantidades de gradientes elevados es decir zonas
donde exista la mayor cantidad de cambio de color de blanco al negro.
El método usado para esto se basa en variación de gradientes, filtro Sobel y transformada
de Bottom-Hat [4].
25
Esta etapa busca zonas potenciales que cumplan ciertas características que permita encontrar
la posición de la placa en la imagen. El análisis que se plantea está relacionada con el valor
de la placa en escala de grises que en este proyecto son placas de fondo blanco con letras
negras, esto genera en los bordes de la placa y en las letras gradientes con valores elevados,
los filtros que se evalúa para extraer esta característica fueron el operador Sobel como se
muestra en la Figura 16 y la transformada Bottom-Hat como se observa en la Figura 17.
Al evaluar los valores de los gradientes, se puede identificar que los que se encuentran en la
zona de la placa tienen valores muy altos en comparación con los demás, pero alrededor de
toda la imagen existen zonas en las que los gradientes también podrían ser elevados, por lo
tanto se elaboró un procedimiento que permita diferenciar los gradientes de la zona de la
placa de otros, para ello se planteó el siguiente análisis: Debido que los gradientes en la placa
son grandes pues, la diferencia entre los niveles de blanco y negro es muy alta, se diseña un
filtro para pasar solamente gradientes muy elevados, es decir que dependiendo de un valor
critico(umbral) gradientes mayores a él darán 1 lógico(blanco) y valores menores dará 0
lógico(negro) [12]. Se aclara que, este proceso aún no es lo suficientemente robusto, porque
el umbral no puede ser constante, debido a que diferentes imágenes poseen diferente
iluminación, contraste, brillo, de forma que se genera valores de gradientes en la placa tanto
menores como mayores que el valor umbral y por lo tanto, se perdería información de la
placa, lo que se planteó es que el valor umbral dependa de las características de cada imagen,
para esto se usó el histograma en escala de grises que muestra la cantidad de pixeles vs
intensidad de una imagen, con esta herramienta podemos determinar el umbral óptimo que
permita diferenciar los gradientes de la placa (muy elevados), por lo cual se deduce que el
filtro pasa altos localiza solo el área bajo la curva del histograma que contenga cierta
cantidad de pixeles, como se muestra en la Figura 18.
26
Luego se busca el porcentaje bajo la curva del histograma, que sea lo suficiente para eliminar
la información extra y solo capturar la información que pertenece a la zona donde se
encuentra la placa. Este parámetro depende de algunos factores externos, siendo el más
relevante la distancia a la cual se encuentra el vehículo del punto en cual se ha tomado la
fotografía, esto quiere decir que si el vehículo se encuentra muy alejado la zona de la placa
respecto a la imagen total es muy pequeña y por lo tanto requiere de una pequeña porción
del área bajo la curva del histograma, y si se encontrase muy cerca el área de la placa respecto
a la imagen es grande, lo cual indicaría que se necesita un porcentaje mayor de área bajo la
curva del histograma.
Teniendo en cuenta que este umbral no puede ser constante pues, diferentes entornos generan
diferentes gradientes, por lo cual habría que ajustar el umbral para cada situación, el
problema queda resuelto al sujetar el valor del umbral a un valor probabilístico del área bajo
la curva del histograma, este valor puede ser hallado experimentalmente, dicho valor fue
determinado luego de varias pruebas y se determinó 3.5 % menor que el valor máximo de
los gradientes.
La Figura 19 muestra la imagen binarizada con umbral de 3.5 %, en ella se puede ver que la
zona de la placa puede ser diferenciada del entorno de la imagen.
Al observar los resultados de aplicar el filtro del umbral óptimo, se observa que aún no se
obtiene como resultado únicamente la placa, sino que se encuentra con cierto “ruido”.
Para eliminar este ruido y limpiar la imagen, es necesario usar operaciones morfológicas, de
erosión, apertura, dilatación y clausura [6]. La dilatación agrega a la imagen pixeles en cada
1 lógico o pixel blanco que encuentre, mientras que la erosión extrae pixeles en cada 1 lógico
o pixel blanco que encuentre. El número de pixeles que extrae o agrega depende de la
máscara que se le asigne a la operación por ejemplo si se trabaja con una máscara [1 1 1]
esta agregara o extraerá un pixel a cada lado del pixel central.
Donde h es la máscara e ibw es la imagen lógica o en blanco y negro que se desea erosionar
o dilatar.
(a) (b)
Figura 21 (a) Imagen erosionada con una máscara de 5x5; (b) Imagen dilatada con una máscara
de 3x3.
Fuente: Elaboración propia
En este punto del proceso muchas de las imágenes puede que ya no exista ruido y aparezca
únicamente la placa, pero existen aún algunas imágenes que poseen suficiente ruido como
para poder asegurar que la placa es la única zona en ella.
Para continuar en el proceso se diseñó un filtro que pueda determinar donde se encuentra la
mayor concentración de gradientes, esto se hace con ayuda de una máscara la cual tendrá
por función ir promediando los pixeles vecinos en el rango de la máscara y así localizar la
zona específica. Las especificaciones de la máscara dependen de la geometría que se desee
localizar, es decir como la placa es de geometría rectangular se usará una máscara que sea
rectangular y con dimensiones proporcionales a la de una placa. Esto es conveniente pues
suponiendo que la máscara alcanza un rango exactamente igual al de la placa el pixel central
a estas tendrá un promedio muy alto pues la zona de la placa posee muchos 1 que al sumarlo
y dividirlo entre el total de pixeles de la máscara obtendremos un valor aproximado a 1, de
la misma manera los pixeles más cercanos al centro de la placa tendrán promedios altos
mientras que los que se encuentran alejados su promedio será menor. La Figura 22 muestra
una imagen y el resultado al promediar sus pixeles con una máscara con la geometría de la
placa.
Cabe resaltar que la imagen obtenida es una imagen normalizada en escala de grises, nótese
que la zona que posee mayor intensidad es la zona de la placa y otras zonas un poco menos
intensas, ahora para poder distinguir entre estas zonas, solo basta con umbralizar nuevamente
la imagen, por lo cual simplemente se hace el llamado a la función del “umbral óptimo”.
29
Figura 22 Imagen con pixeles promediados con una máscara con la geometría de la placa.
Fuente: Elaboración propia
Se diseñó una máscara en base a la convolución lineal para encontrar cuales son los que
cumplen con la característica de pertenecer a una zona rectangular (con proporciones de la
placa) y además se encuentren lo suficientemente agrupados.
El número de pixeles de la foto esta denominado por MxN, cada parámetro asignado al
proceso así como el tiempo de demora para procesar dependen de los pixeles. Una fotografía
tomada muy cerca del automóvil generara una placa de tamaño grande, ver Figura 23,
mientras que una imagen del auto a una distancia prudente entre 4-8 metros generarán una
imagen de la placa de tamaño medio, ver Figura 24, y si se toma una imagen muy lejana la
placa será de tamaño pequeño.
Para poder eliminar el resto de zonas se binariza la imagen, para esto se usó un umbral de
2% como se muestra en la Figura 27.
31
Ahora si se puede decir, que se localizó la zona de la placa, posteriormente se pasa a dilatar
un poco la imagen obtenida para asegurar que se capturó toda la placa y no correr el riesgo
de capturar solo una parte. Para esto se escogió una máscara h=ones (10,60) es decir, se
expandirá la zona encontrada 10 pixeles en dirección vertical y 60 en dirección horizontal.
Por último, se realiza el corte a la zona localizada, ver Figura 28, esto se realiza con ayuda
de la función imcrop la cual permite realizar un corte rectangular asignando la coordenada
de inicio y las longitudes de corte.
Esta fase del proceso, traslada a un plano frontal cualquier placa que haya sido capturada
con alguna perspectiva [7]. Esta fase localiza las coordenadas de los vértices de la placa de
automóvil mediante la transformada de Hough y realiza un traslado geométrico mediante la
transformada proyectiva bidimensional.
Este proceso detecta la posición de la placa a través de la detección de líneas. Se utiliza como
entrada al algoritmo una imagen binaria 𝐼(𝑥, 𝑦), la cual contiene información de los bordes
(extraídos anteriormente). Se utiliza el valor de uno en la imagen que determina que el pixel es
parte de las aristas de la placa y cero que es parte del fondo, como primer paso se colocan todas
las celdas de la matriz de registros de acumulación a cero, después se recorre la imagen binaria
de tal forma de que cada vez que se encuentre un pixel borde se obtiene los valores de 𝑟,
realizando un barrido de 𝛼 de 0 𝑎 𝜋, sin embargo para encontrar los valores de 𝑟 se emplea
como coordenadas de referencia el centro de la imagen de este modo se va formando una nueva
imagen I(x, y) matricial donde aparece la detección del líneas.
Con el propósito de reducir el tiempo de iteración solo se utiliza los puntos de los bordes
horizontales.
Se crea una matriz en Matlab que contiene los valores 𝑟 y las columnas contienen los valores
de 𝛼, luego se ubica la mayor cantidad de puntos que coinciden con la misma recta y se localiza
los 4 vértices que envuelven a la placa, en algunos experimentos los cuatro vértices no forman
un rectángulo que encierre la placa, si no formaron imágenes trapezoidales. La solución que se
planteó, fue determinar las 4 líneas que envuelve la placa, luego se encuentra las intersecciones
de dichas líneas y se tiene obtienen los 4 vértices que se utilizarán en la fase de la trasformada
proyectiva.
Para encontrar los bordes de la imagen se separó en 2 mitades una superior y otra inferior
llamadas mitad A y mitad B, luego se pudo obtener un mallado más representativo. Con la
finalidad de reducir el costo computacional de esta fase se reduce el campo de iteración de
alpha de 30 a -30 (datos calculados estadísticamente). De este modo, es como primero se
analiza el borde superior de la Izquierda, luego se analiza el borde inferior de la Derecha, para
luego pasar a analizar las líneas verticales izquierda y derecha.
En el análisis de las rectas verticales se encuentra varios problemas por la sensibilidad del Sobel
con aquellas placas que tienen letras al comienzo como K o L o M donde el programa cree es
el comienzo de la placa y el mallado lo hace erróneamente, por tal razón se cambia la
sensibilidad del Sobel de forma que desprecie esos tipos de línea no continua para procesar
solo las líneas verticales más grandes y así mejorar dicho problema.
El borde superior Izquierda almacena los puntos de intersección de la línea del borde superior
con la línea vertical izquierda, borde superior derecha almacena los puntos de intersección de
la línea borde superior con la línea vertical derecha, Borde inferior izquierda almacena los
puntos de intersección de la línea borde inferior con la línea vertical izquierda y Borde inferior
Derecha almacena los puntos de intersección de la línea borde inferior con la línea vertical
derecha, es así como se obtiene los 4 puntos que formaran los vértices necesarias para envolver
la placa y realizar la transformada proyectiva de la imagen como se muestra en la Figura 30.
33
Esta fase se encarga de trasladar a un plano frontal una imagen adquirida con cierta perspectiva
con respecto a la cámara, esto se logra mediante la aplicación de una transformada T que es
una matriz que adopta los 4 puntos encontrados por la transformada de Hough y transforma la
imagen distorsionada a una imagen trasladada a un plano frontal [7]. La Figura 31 muestra
cómo actúa la transformada proyectiva bidimensional.
Y’ (𝑥1 , 𝑦1 ) (𝑥2 , 𝑦2 )
(𝑥 ′ 2 , 𝑦 ′ 2 ) Y
(𝑥 ′1 , 𝑦 ′1 )
T
(𝑥3 , 𝑦3 )
(𝑥 ′ 4 , 𝑦 ′ 4 ) (𝑥 ′ 3 , 𝑦 ′ 3 ) (𝑥4 , 𝑦4 )
X’ X
Figura 31 Transformada Proyectiva Bidimensional.
Fuente: Elaboración propia
Se puede establecer la matriz “T” según la teoría de geometría proyectiva
Luego que los vértices fueron hallados, se calcula la matriz T con la relación entre las
imágenes originales I’ y corregida I. Para generar las dimensiones de la nueva imagen
generada se realiza a partir del ancho y el largo de la placa original tomando como referencia
las dimensiones más grandes, luego se calcula la matriz de transformación T y se procede a
encontrar la nueva imagen corregida.
Función corregida perspectiva: Esta función toma como entrada una imagen donde es cortada
en 2 mitades, una inferior y otra superior y luego se analiza con función Sobel y transformada
de Hough los bordes inferior, superior, derecha e izquierda para obtener los puntos de
intersección, esta función dará como resultado la imagen corregida, esta función hace un
llamado de una función llamada verificación1.
34
Función verificación 1: Función que verifica que los vértices hallados encierren realmente la
región de los caracteres y de este modo realizar la transformación, para que esta función
cumpla sus tareas de manera correcta llama a una función llamada Corrección.
Función Corrección: Función que realiza la ubicación de los vértices, el ordenamiento de los
mismos y la aplicación de la transformada proyectiva, mediante esta función se transforma una
imagen de una determinada perspectiva a una imagen trasladad al plano frontal utilizando la
trasformada T.
3.5. Binarización
Luego que se tiene la imagen corregida, se binariza la imagen, este proceso consiste en hacer
1 ó 0 los pixeles que están en orden matricial de cierto rango en la escala de grises 0-255,
las funciones que se usan para esto se basa en una estadística avanzada donde mide el
gradiente de la figura en escala de grises encontrando así un valor X, la función que binariza
convierte a en 1 a todos los pixeles mayores que el número X y convierte en 0 a todos los
pixeles de la imagen que sea menores a ese valor X en la escala de grises, obteniendo así una
imagen binarizada, es decir un matriz de 0 y 1 que facilita su posterior análisis.
Luego se aplica el filtro Bottom-Hat con la finalidad de eliminar cierto ruido que puede
presentar aun dicha placa como por ejemplo pernos letras, figuras pegadas en la placa o las
letras donde señala el país de procedencia de la placa, que no son necesarios en el análisis
de la placa.
Se puede visualizar en la Figura 33 que se ha eliminado la palabra Perú, así como unos pernos
en la parte superior que tenía al inicio, es claro que la limpieza de la placa no es completa, sin
embargo pasa por otro tipo de filtros.
3.6. Segmentación
3.6.1. Recorte
i=i+1;
end
l=col;
j=col;
while l>=col & j>limcol2
P=sum(co(lim1:lim2,j));
if P==0
l=j;
end
j=j-1;
end
refil=round(fi/2);
m=1;
q=refil;
a=l-k;
while m==1 & q>0
P=sum(co(q,k:l));
if P==0 || P==a
m=q;
end
q=q-1;
end
p=fi;
r=refil;
while p==fi & r<fi
P=sum(co(r,k:l));
if P==0
p=r;
end
if P>l-k-1
p=r;
end
r=r+1;
end
b=p-m; corte=[k m a b];
rct=imcrop(co,corte);
end
Se muestra a continuación las diferentes etapas del sistema. La Figura 38 muestra la imagen
adquirida, Figura 39 muestra la imagen luego de haber sido sometida por la función corrige
perspectiva, la Figura 40 muestra la placa luego de pasar por la función Binariza y la Figura
41 muestra el resultado de la función recorte.
3.6.2. Segmentación
Implica el fraccionamiento de una imagen en segmentos de píxeles que son homogéneos con
respecto a algún criterio.
Se tiene un matriz P=[m × n] binaria (Figura 42), la cual es la imagen de la placa, se procederá
al recorte vertical y luego horizontal.
a) Recorte horizontal
Localiza la parte que se encuentran los caracteres. Realiza lo siguiente:
Se obtiene la sumatoria de los valores de cada fila como muestra la ecuación (29)
∑ p1𝑖
i=1
n
RH = ∑ p2𝑖 (29)
i=1
…
n
∑ p3𝑖
[ i=1 ]
Cada valor del vector RH puede tomar valores desde 0 hasta el número de columnas de la
matriz P según ecuación (30)
39
0 ≤ ∑ pji ≤ n (30)
i=1
b) Recorte vertical
Separa los caracteres de la placa. Para esto realiza lo siguiente:
Se obtiene la sumatoria de los valores de cada columna, según ecuación (28).
m m m
Cada valor del vector RV puede tomar valores desde 0 hasta el número de filas de la matriz P,
según ecuación (29).
0 ≤ ∑(mi , nj ) ≤ n (29)
i=1
Aunque la placa ya está filtrada, a veces pueden existir objetos no deseados, para desaparecer
esos objetos lo que se hace es obtener la suma de casi todas las filas de cada una de las
columnas de manera que se tendrá una matriz de tamaño [1 x número de columnas de
imagen], donde los valores obtenidos indican si el valor obtenido en cada columna se acercan
al número de filas tomadas, si el contenido de casi toda la columna es blanco por tanto no
existirá carácter, en cambio sí se acerca a 0 en la columna existe carácter, es decir, se tendrá
una distribución de grises, ver Figura 45.
40
Ahora lo que se hace es comparar los números obtenidos en la matriz con el número de filas
tomadas, si ese valor se acerca al número de filas, se convierte en blanco (1 lógico) y si no se
convierte en negro (0 lógico), ver Figura 46.
Al ya tener una imagen lógica, se procede a ver cuándo existe una variación de color, si hay
una variación positiva, entonces significa que de negro pasa a blanco (1-0=0) por tanto
podemos decir que el carácter finaliza allí, en cambio sí hay una variación negativa, significa
que empieza un carácter. La Figura 47 muestra la matriz RV y el recorte respectivo de cada
uno de sus caracteres. Por ende se obtiene la matriz de cada carácter de la placa.
c) Problemas presentados
Se tiene que coger un número razonable de filas por los siguientes motivos:
Si se toma todas las filas se pierde información. Comúnmente los “ruidos” se presentan en
la parte inferior por tanto para tener una mejor aproximación se desprecia, como se muestra
en la Figura 48.
Si se toma pocas filas, hay caracteres como la letra J, donde la información importante
desaparece, como se muestra en la Figura 49.
41
El OCR desarrollado se basa en plantillas que contienen todos los números y letras del
abecedario, lo cual al tener segmentadas los caracteres, se puede comparar con dichas
plantillas a través de la función correlación de Matlab para así saber cuál es la plantilla
indicada.
3.7.1. Reducción
Ya que las plantillas creadas tienen una dimensión 42x24 pixeles, se debe reducir los
caracteres de la placa a dicha dimensión, ver Figura 51.
Se importa las imágenes de las plantillas que se encuentran en formato de imagen .bmp a
formato lógico, para tener la matriz de cada una de las plantillas, ver Figura 52.
Luego se compara la matriz de cada carácter obtenidos de la placa con las plantillas creadas.
Para la comparación se usó el método de correlación de Pearson que es una técnica para
investigar la relación entre dos variables continuas y cuantitativas [8]. El coeficiente de
Pearson (r) mide la fuerza de asociación entre dos variables aleatorias, para este caso una
variable es la matriz de cada uno de los caracteres obtenidos de la placa y la otra son las
matrices de cada una de las plantillas.
La función para hallar la correlación de dos matrices en Matlab es “corr2”, la cual toma la
correlación de Pearson, según ecuación (30).
43
∑𝑚 ∑𝑛(𝐴𝑚𝑛 − 𝐴̅)(𝐵𝑚𝑛 − 𝐵̅ )
𝑟= (30)
√(∑𝑚 ∑𝑛(𝐴𝑚𝑛 − 𝐴̅))2 (∑𝑚 ∑𝑛(𝐵𝑚𝑛 − 𝐵̅ ))2
Si el término r es igual a 1, significa que existe una relación directa entre A y B, es decir las
matrices comparadas son iguales. Si el término es -1 significa que la relación es inversa. En
cambio si el resultado es 0, significa que no existe relación entre las matrices.
Se realizó una plantilla para letras y otra para números, con la finalidad de reducir el tiempo
de búsqueda (reducir el costo computacional) y aumentar la fiabilidad del análisis, para eso
se analizó la distribución de los caracteres en la placa de los automóviles en Perú, ver Figura
53. Se puede ver los siguientes patrones en las placas:
Capítulo 4
Se buscó un gradiente crítico (Umbral), para detectar la presencia de la placa, este Umbral
no es un valor constante ya que depende del entorno donde se adquiere la imagen, para lograr
esto se diseñó un algoritmo que analiza el entorno, este algoritmo denominado auto sintonía
determina el gradiente máximo del entorno y determina un valor de Umbral que
proporcionara de manera acertada la presencia de la placa.
Para determinar cuál es el momento apropiado para empezar el análisis del “frame”, se debe
saber que para que el proceso sea exitoso la placa debe estar estática ya que si estuviese en
movimiento la imagen puede ser distorsionada y no se leería correctamente la placa,
entonces el instante inicial no es el instante en que el primer gradiente supera el umbral pues
cabe la posibilidad de que este sea un pico de luminosidad o que recién el automóvil se esté
deteniendo frente a la cámara, por lo tanto un instante prudente para determinar el inicio, es
esperar a que unos 4 o 5 gradientes (de los “frames” o muestras) ya hayan superado el valor
umbral. Así también esta etapa del programa debe dejar de procesar luego de reconocida la
placa, sino se caería en un procesamiento constante en todo el tiempo que el auto se
encuentra detenido enfrente de la cámara. A continuación la Figura 56 muestra el análisis
gráficamente.
1.
Figura 56 Instante de ocurrencia de evento e inicio del proceso completo.
Fuente: Elaboración propia
El programa solo debe procesar cuando se da el evento inicio y esperar hasta que vuelva
ocurrir un nuevo evento para procesar nuevamente, así se procesa solo cuando es necesario,
haciendo el programa más eficiente y rápido.
48
Prueba Exitosa: La imagen se tomó de noche, la luminosidad del flash ayuda a recalcar la
zona de la placa del contexto de la imagen. Se pudo reconocer todos los caracteres de la
placa.
49
Como se puede observar el método es muy efectivo ya que en la mayoría de las pruebas
hechas ha reconocido la placa del vehículo.
En todos los casos vistos anteriormente, se puede observar que el problema principal es el
reconocimiento de caracteres como se observa en el caso 4, lo que sucede es que algunas
ocasiones la matriz de algún carácter tiene ruido y que al compararla con una plantilla, el
coeficiente de correlación es más bajo, por ende otra plantilla puede ser elegida de manera
errónea como su correspondiente.
Cabe indicar con este proceso que las únicas placas que reconoce son las de fondo blanco,
ya que al cambiar de color el gradiente obtenido es muy bajo y no permite localizar la zona
de la placa.
51
Capítulo 5
Artículo científico
2. MARCO TEÓRICO:
1. INTRODUCCION
A continuación se describen algunos teoremas que
Debido a su importancia en la actualidad el respaldan la lógica algorítmica del sistema.
desarrollo de software de procesamiento de
imágenes es utilizado en diferentes ámbitos tales Filtros espaciales:
como el campo vehicular, la seguridad, la
topografía, etc. El desarrollo del software se dio en Filtros son operaciones de pixel por pixel donde el
el entorno MatLAB que nos permita la valor del nuevo pixel depende del pixel original y
identificación en código alfanumérico de las placas de los pixeles que están en relación de vecindad
vehiculares en un centro de parqueo vehicular, con él. La función o matriz que relaciona el pixel
dando una solución a la problemática que genera original con su vecindad se le denomina
no llevar un control automatizado del flujo de autos “mascara”.
en los centros de parqueo, evitando así cualquier
tipo de fraude. 1 1 1
1
Este artículo expone de manera concisa las etapas Ejm: 𝐻(𝑖, 𝑗) = [1 1 1]
9
de este proyecto de manera que el lector tenga un 1 1 1
panorama nuevo del desarrollo del software de
procesamiento de imágenes e incentive su
desarrollo
52
Trasformada de Hough:
Figura 1. Primera derivada de una función
Con la ayuda de esta transformada localizamos
Denota la derivada parcial de la función de la formas paramétricas a partir de una distribución de
imagen I(u,v) con respecto a la variable u o v. El puntos presentes en una imagen.
vector gradiente de la función I en el punto (x,y) Esta transformada localiza las líneas sobre
es: imágenes binarias producidas por la umbralización
𝜕𝐼 del gradiente. Una línea en el espacio es de la
(𝑥, 𝑦)
𝜕𝑥 forma:
∇𝐼(𝑥, 𝑦) = 𝑥𝑐𝑜𝑠𝜃 + 𝑦𝑠𝑒𝑛𝜃 = 𝑟
𝜕𝐼
(𝑥, 𝑦)
[𝜕𝑦 ] Dicha ecuación permite una cuantificación lineal
de sus parámetros 𝑟 𝑦 𝜃, por lo que el espacio de
𝜕𝐼 2 𝜕𝐼 2 Hough (espacio donde se localiza las posibles
El valor es: |∇𝐼| = √( ) + ( )
𝜕𝑥 𝜕𝑦 rectas) y el punto 𝑝𝑖 = (𝑥𝑖 , 𝑦𝑖 ) se relacionan
Esta propiedad es importante para la localización según:
de los puntos bordes de la imagen.
𝑟𝑥𝑖+𝑦 = 𝑥𝑖 𝑐𝑜𝑠𝜃 + 𝑦𝑖 𝑠𝑒𝑛𝜃
Filtro Sobel: 𝑖
Es una máscara que combina de las derivadas Donde el intervalo de los valores para 𝜃 es
𝑑𝐼 𝑑𝐼 0 ≤ 𝜃 ≤ 𝜋, tomamos de referencia el centro de la
parciales 𝑦 obtenemos para cada pixel un
𝑑𝑢 𝑑𝑣 imagen (𝑥𝑐, , 𝑦𝑐 ) el intervalo de los valores de r es:
valor de gradiente.
−𝑟𝑚𝑎𝑥 ≤ 𝑟𝑥,𝑦 (𝜃) ≤ 𝑟𝑚𝑎𝑥
𝑑𝐺(𝑥, 𝑦) 𝐺(𝑥 − 𝛥𝑥, 𝑦) − 𝐺(𝑥, 𝑦)
=
𝑑𝑥 𝛥𝑥
53
1
𝑥′ = (𝑎 𝑥 + 𝑎12 𝑦 + 𝑎13 )
ℎ′ 11 Figura 6. Plano cartesiano
𝑎11 𝑥 + 𝑎12 𝑦 + 𝑎13
=
𝑎31 𝑥 + 𝑎32 𝑦 + 1 El coeficiente de correlación es la pendiente de esta
1 lineal
𝑥 ′ = ′ (𝑎21 𝑥 + 𝑎22 𝑦 + 𝑎23 )
ℎ
𝑎21 𝑥 + 𝑎22 𝑦 + 𝑎23
= ∑𝑚
𝑖=1(𝑥𝑖 × 𝑦𝑖 )
𝑎31 𝑥 + 𝑎32 𝑦 + 1 − 𝑋̅ × 𝑌̅
r= 𝑚
𝑆𝑥 × 𝑆𝑦
Dónde:
∑𝑚
𝑖=1 𝑥𝑖 ∑𝑚
𝑖=1 𝑦𝑖
𝑋̅ = ; 𝑌̅ =
𝑚 𝑚
∑𝑚 𝑥𝑖 2 ∑𝑚 𝑦𝑖 2
Figura 5. Transformación geométrica 𝑆𝑥 = √ 𝑖=1 − 𝑋̅ 2 ; 𝑆𝑦 = √ 𝑖=1 − 𝑌̅ 2
𝑚 𝑚
Los parámetros de la transformación proyectiva
̅ Promedio de valores de matriz X; Y:
X: ̅ Promedio
son determinados a partir de 4 coordenadas
(𝑥1 , 𝑥1′ ); (𝑥2 , 𝑥2′ ); (𝑥3 , 𝑥3′ ); (𝑥4 , 𝑥4′ ), cabe indicar que de valores de matriz Y;𝑆𝑥 : Desviación estándar de
x= (𝑥𝑖 , 𝑦𝑖′ ) son los puntos de la original imagen y variables de X;𝑆𝑦 : Desviación estándar de
𝑥′𝑖 = (𝑥𝑖′ , 𝑥𝑖′ ) son los puntos de la imagen variables de Y.
transformada de modo que:
3. ETAPAS DEL SISTEMA:
𝑥′𝑖 = 𝑎11 𝑥𝑖 + 𝑎12 𝑦𝑖 − 𝑎13 − 𝑎31 𝑥𝑖 𝑥 ′ 𝑖 − 𝑎32 𝑦𝑖 𝑥′𝑖
𝑦′𝑖 = 𝑎21 𝑥𝑖 + 𝑎22 𝑦𝑖 − 𝑎23 − 𝑎31 𝑥𝑖 𝑦 ′ 𝑖 − 𝑎32 𝑦𝑖 𝑦′𝑖 Pre-Procesado
Donde puede ser i=1, 2, 3, 4
El objetivo es poner las condiciones necesarias,
′
Por ende tenemos 𝑥 = 𝐴. 𝑥 ; 𝑥 = 𝐴 . 𝑥′ −1 para el funcionamiento óptimo y eficiente del
proceso.
54
Escala de grises:
(a) (b) (c)
La representación de una imagen en escala de
grises, es la simplificación de la imagen en una Figura 9. (a) Ordenador Sobel (b) Transformada
matriz bidimensional que solo contiene Bottom-Hat (c) Escala de grises
información relevante de la componente de
luminancia del modelo a color YIQ, presentando A partir de la imagen filtrada se puede separar
niveles de intensidad entre 0-255 siendo 0 para el aquellas zonas de pixeles donde los gradientes son
color negro y 255 para el blanco. más elevados, esto es posible binarizando la
imagen con un umbral que sea lo suficientemente
Complemento de la imagen: alto para poder descartar zonas de bajos gradientes
pero suficientemente bajo para no descartar los
El complemento de la imagen se determina mismos gradientes de la placa, teniendo en cuenta
restando a 255 el valor de intensidad de cada pixel que este umbral no puede ser constante pues
perteneciente a la imagen. diferentes entornos generan diferentes gradientes
por lo cual habría que ajustar el umbral para cada
situación, el problema queda resuelto al sujetar el
valor del umbral a un valor probabilístico del área
bajo la curva del histograma, este valor puede ser
hallado experimentalmente, dicho valor fue
determinado luego de varias pruebas y se
determinó 3.5% menor que el valor máximo de los
gradientes.
Localización de la Placa
4.5k
Figura 16. Transformada de Hough
1 ⋯ 1
1
[⋮ ⋱ ⋮] 2k Transformada Proyectiva Bidimensional:
9𝑘 2
1 ⋯ 1
Luego de los vértices hallados en la transformada
Fig.12 dimensiones de la matriz mascara para de Hough, se calcula la matriz de trasformación H
convolución lineal con la correspondencia entre las imágenes
originales I’ y corregida I .Para generar las
dimensiones de la nueva imagen lo hacemos a
partir del ancho y el largo de la placa original
tomando como referencia sus dimensione más
grandes , una vez que tenemos los puntos de la
matriz original y los puntos de la matriz donde va
abarcar la nueva imagen corregida se calcula la
matriz de transformación H .
Corrección de Perspectiva
Para realizar este paso se necesita de la
transformada de Hough para determinar las
coordenadas de los vértices y la Trasforma da Figura 18. Vector RV.
proyectiva Bidimensional para la distorsión de Al binarizar el vector RV con un umbral del 80%,
perspectiva. podemos separar los caracteres de la imagen.
Trasformada de Hough:
Figura 19. Binarización matriz RV.
Esta transformada nos ayuda detectar líneas sobre
imágenes binarias producidas por la umbralización
del gradiente. Luego de efectuada esta parte
podemos ubicar la mayor cantidad de puntos que
coinciden con la misma recta de parámetros (𝜃, 𝜌),
Figura 20. Recorte Vertical
una vez que tenemos el angulo de inclinacion
pasamos a encontrar el vector que encierra la recta
horinzontal.
56
Extracción de patrones:
8. REFERENCIAS:.
M. Seul, L.O’Gorman, M.J.Sammon. Practical
algorithms for image analysis. Descriptions,
examples and code. Cambridge, 2000.
R.C. Gonzáles, R.E. Woods. Digital Image
Processing. Pearson Prentice Hall, 2008.
R.C. Gonzáles, R.E. Woods, S.L. Eddins. Digital
Figura 23. Diagrama de Flujo del sistema en
image processing using MATLAB. Prentice
tiempo real
Hall, 2004.
S.E. Umbaugh. Computer imaging. Digital image
En la imagen anterior se muestra los gradientes del
analysis and processing. Taylor & Francis,
video conforme transcurre el tiempo los puntos
2005.
dentro de los círculos rojos son los instantes donde
W.K.Pratt. Digital image processing. Wiley-
aparece una placa frente a la cámara.
Interscience, 2001.
57
Conclusiones
Se logró el objetivo de desarrollar una plataforma en Matlab que pueda reconocer los
caracteres de las placas de automóviles sin importar la posición en la que se encuentra ante
la cámara, el reconocimiento de caracteres de la placa del automóvil se realizó mediante
OCR (Optical character recognition) y correlación de Pearson.
Existen aún en circulación vehículos que contienen placas en deterioro a pesar del decreto
supremo 017-2008-MTC, capítulo iv - placas de exhibición, publicado el día sábado 19 de
abril del año 2008 en el diario oficial el peruano que dicta que las placas en deterioro deben
de ser cambiadas por unas nuevas con la intención que los caracteres presentes en las placas
puedan ser visibles y reconocibles a simple vista, en caso la ley fuera acatada el error de
23% del sistema implementado se vería reducido.
El sistema implementado permite localizar la placa en 100 % de los experimentos con placas
de fondo blanco sin importar la perspectiva que se encuentra esta con la cámara al momento
de capturar y sin importar las diferentes circunstancias de iluminación que presente el
entorno.
Se realizó una plantilla para letras y otra para números, con la finalidad de reducir el tiempo
de búsqueda (reducir el costo computacional) y aumentar la fiabilidad del análisis, para eso
se analizó la distribución de los caracteres en la placa de los automóviles en Perú y se dedujo
que el primer carácter es una letra, segundo y tercer carácter puede ser letra o número y los
caracteres 4°, 5° y 6° solo son números.
La etapa de pre-procesado no fue demasiada extensa, principalmente fue obtener una imagen
fácil de procesar que contenga la información de la imagen.
En la etapa de segmentación se debe de tomar pocas filas para el recorte ya que hay caracteres
como la letra J donde la información importante desaparece y al final no puede ser
reconocida.
El sistema implementado solo puede reconocer placas con fondo blanco y letras negras esto
se debe a que solo se analizó la variación de gradientes en una sola dirección, esto puede
ser solucionado si se opta por el uso de filtro Canny y densidad de gradientes que analiza la
segunda derivada de los gradientes en todas las direcciones permitiendo reconocer placas
con fondos de distintos colores pero a esto se le suma una carga computacional aún más
elevada.
Bibliografía