Reconocimiento de códigos QR basados en Árboles binarios

Report
Alumno: Pedro Ganga Tenorio
Índice
 Introducción
 Aplicaciones de un código QR
 Análisis
 Procesamiento de la imagen para reconocimiento
del código QR
 Representación IBB
 Conclusión
 Bibliografía
Introducción
¿Qué es un código QR?
 Un código QR es un código de barras bidimensional,
que permite almacenar gran cantidad de información,
fue creado por la compañía japonesa Denso Wave.
Los requisitos más importantes para estos datos son la
capacidad de proporcionar un rápido acceso a grandes
volúmenes de datos.
Pudiendo ser leídos desde PC , smartphone o tablet
mediante dispositivos de captura de imagen.
Aplicaciones de un código QR
Son numerosas las aplicaciones relacionadas al campo de
los QR, facilitan acciones como el de tener que introducir
datos de forma manual en los teléfonos. Y a partir de esta
acción poder acceder a numerosos contenidos sobre la
página web con información adicional sobre el producto:
Otras Aplicaciones:
 Distribución de curriculum
 Asesoramiento e información del consumidor.
 Tarjetas de visita y la literatura de la compañía.
 Campañas de marketing.
 Diseño Gráfico .
 Papelería corporativa ( tarjetas de visita,
catálogos) .
Análisis
Para poder realizar el reconocimiento de códigos
QR de forma satisfactoria podremos distinguir 2 fases
principales:
 1º La cual engloba todas aquellas operaciones
destinadas a obtener el código en condiciones óptimas
para su posterior acceso de su contenido.
 2º En la que hacemos uso de árboles binarios basados
en la interpolación (IBB) para acceder al contenido del
código.
1º Procesamiento de la imagen para reconocimiento
del código QR
Antes de poder aplicar cualquier algoritmo basado en
árboles binarios,deberemos procesar la imagen para
evitar situaciones de brillo desigual o distorsión por lo
que comenzaremos describiendo una serie de
operaciones propias del procesamiento de imágenes :
 Binarización
 Corrección de la inclinación
 Corrección Geométrica de la Imagen
Binarización
 A la hora de formalizar nuestro algoritmo ,es necesario
de tener una imagen cuadrada y binaria ( píxeles en
blanco o negro) ,el proceso de binarización de la
imagen consiste en reducir la información de la
misma, dotando a ésta de sólo 2 valores : cierto(1) o
falso(0) . El histograma es el elemento más importante
a la hora de binarizar la imagen. El punto clave de la
binarización es la elección del valor umbral más
adecuado.
Hitograma :
Método Otsu
 Propuso un método donde el valor del umbral se
obtiene maximizando la varianza entre clases. Buscar
un punto adecuado entre los picos del histograma al
ser un documento fundamentalmente en blanco y
negro donde las zonas de grises corresponden a
defectos o manchas de pequeño tamaño en el
documento.
Formalización del algoritmo
Sea p(g) la probabilidad de ocurrencia del valor de gris 0< g
< G (G es el valor de gris máximo). Entonces la
probabilidad de ocurrencia de los pixels en los dos
segmentos es:
K0:
K1:
 Si tomamos dos segmentos (o sea un solo valor umbral) la
suma de estas dosprobabilidades dará evidentemente 1.
 Si g es la media aritmética de los valores de gris en toda la
imagen,y g0 ,y g1 valores medios dentro de cada segmento,
entonces se pueden calcular las variancias dentro de cada
segmento como:
 La meta es mantener la variancia dentro de cada segmento lo
más pequeña posible y conseguir que la variancia entre los dos
segmentos sea lo más grande posible. Así obtenemos:
 La variancia dentro de los segmentos se obtiene de la suma
de ambas:
 El valor umbral t se elige de manera que el cociente Q(t)
sea máximo. Q(t) es por lo tanto la medida buscada. De
esta forma elegimos un valor umbral que optimiza lodos
segmentos en términos de variancia.
Binarizado:
Corrección de la inclinación.
A la hora de realizar una captura,frecuentemente el código QR
viene girado o con cierta inclinación.Tomaremos como patrones
los tres cuadrados concéntricos superpuestos,a los que
llamaremos A,B y C,y los cuales tienen una relación del
módulo entre blanco y negro en todas las direcciones de
1:1:3:1:1.
Una Forma de determinar la inclinación del código será:
Hallaremos el centro de cada una de las tres esquinas de las
que forman el código,para ello realizaremos un barrido
horizontal de cada fila de la imagen. Cada pixel puede
formar parte de una esquina,entonces se determinarán los
siguientes pixels de esa misma fila,si éstos corresponden
con el patrón propuesto más arriba, a falta de verificar que
también cumple el patrón verticalmente ,esta será una de
las esquinas del código. Por lo que guardaremos el pixel
físico central de ésta y seguiremos barriendo la imagen
hasta encontrar las tres esquinas que compone nuestro
código.
En el barrido horizontal ,a partir de la 8-conectividad de cada pixel,se
verificará si éstos verifican el patrón de búsquedas de esquinas
propuesto,a falta de validarlo verticalmente.
Para poder corregir la inclinación del código,el siguiente paso trata
de hallar el ángulo de rotación de nuestro QR:
Tenemos las coordenadas de las 3 esquinas del QR,uniremos los
puntos céntricos de las esquinas y trazaremos una perpendicular
que forme un ángulos de PI/2 con el segmento de mayor
distancia y el vértice que no pertenece a dicho segmento,
logrando así nuestro centro de rotación (O).
Para saber la orientación del giro ,debemos calcular la
pendiente(THETA) del segmento V2V3.
Corrección geométrica de la imagen
La distorsión geométrica de la imagen aparece debido al
ángulo de disparo o debido a una superficie no plana.
Disminuyendo la tasa de reconocimiento de códigos.
El algoritmo para la correción geométrica se explica a
continuación:
Obtención de los cuatro vértices de la imagen.
Debido al proceso de rotación, el ruido esterno ha sido
eliminado ,por lo tanto el código es escaneado línea por línea,en
las 8 direcciones posibles (arriba,abajo, izquierda ,derecha y
diagonales).
Se escanea en línea recta hasta que dos o más
intersecciones encuentran el bloque negro(vértice). Después de
el escaneo en las 8 direcciones,se consiguen,al menos, 16 puntos.
El punto mostrado en ambas direcciones será el vértice.
Obtención de los nuevos valores de los vértices.
Los vértices V1,V2,V3 y V4 son los 4 vértices de la imagen del código QR
sin distorsión.V1',V2',V3' y V4' son los vértices de la imagen actual.
f(x,y) será el valor en la coordenada (x,y) en la imagen corregida, y
f(x',y') el valor en la coordenada (x',y') en la imagen no corregida.
Suponiendo que las coordenadas de Pi(1<=i<=4) son (xi,yi), y las
coordenadas de Pi'(1<=i<=4) son (xi',yi'). Entonces existe la siguiente
relación:
Imagen final
¡Listo para aplicarle un algoritmo de reconocimiento!
Representación IBB
La representación IBB consiste en un conjunto de códigos.
Para obtener estos códigos primero representamos la imagen
binaria mediante un árbol binario. Para obtener el árbol binario
de una imagen binaria (2^n x 2^n) primero se divide
verticalmente la imagen en dos partes iguales. Luego cada parte,
si no es totalmente negra o blanca, se divide horizontalmente.
La imagen se divide así sucesivamente hasta encontrar
partes totalmente negras o blancas. Estas partes totalmente
negras o blancas forman las hojas del árbol. Para obtener la
representación IBB de la imagen calculamos un código a cada
hoja negra de árbol.
Cada hoja negra del árbol representa un bloque en la
imagen. Para obtener su código necesitamos las coordenadas
inferior izquierda del bloque en la imagen (i, j) y el nivel (l) en el
árbol de la hoja que lo representa. El código binario (Q) de un
bloque se obtiene de la siguiente forma:
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
REPRESENTACIÓN IBB
Para calcular el código de una hoja necesitamos la coordenada inferior
izquierda (i,j) del bloque que representa y su nivel de profundidad en el
árbol (I).
Conclusión
En nuestro artículo hemos debatido una alternativa a la hora de
reconocer o generar códigos QR; debido a que los códigos QR son
imágenes cuadradas y binarias podremos hacer uso de la interpolación
(IBB), para obtener el código del árbol binario de la imagen.
Hablamos de unos 500 códigos de media por cada QR cosa que
facilita mucho el procesamiento y decodificación de los mismos,ya que
los PC actuales pueden realizar un máximo de 18.000 millones de
operaciones lógicas por segundo.
Los QR contienen información que puede ser fácilmente leídos a
alta velocidad. En este artículo se muestra como podemos identificar y
codificar un código QR(un software podrá generar cualquier código QR
de la forma inversa,sólo con acceder a la base de datos de codificación
de éstos),ya que su código es abierto y que sus derechos de patente no
son ejercidos,podrá generar un código y formar un QR no registrado.
En conclusión hablamos del futuro de los intercambios de
información,una tecnología en crecimiento y con un rendimiento muy
eficiente.
Bibliografía
 http://www.codigos-qr.com/
 http://es.wikipedia.org/wiki/C%C3%B3digo_QR
 http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnu
mber=5765349
 http://www.sav.us.es/formaciononline/asignaturas/as
igpid/apartados/textos/recursos/interpolacion03/doc
.pdf
 https://operaportal.us.es/archivos/pid/entregables/20112012/Grupo17/Grupo17Documentacin24.pdf
 http://www.sav.us.es/formaciononline/asignaturas/as
igpid/apartados/textos/recursos/interpolacion03/doc
.pdf

similar documents