Reconocimiento de imágenes
estáticas
Reconocimiento de imágenes
Diseño de Sistemas Digitales
Alejandro Silvestri
2008
Técnicas elementales
• Normalización
o Resolución y profundidad de colores
o Brillo y contraste
• Separación por rangos de colores
o Obtención de un bitmap binario (1 bit por pixel)
• Parametrización de manchas
o Cantidad de manchas en la imagen
 y coordenadas de algún pixel de cada una
o Superficie en pixels
 Algoritmo fill flood
o Baricentros
 Posición
 Giro
o Topología
Normalización: resolución
A mayor definición, mejor imagen, pero más píxeles por
recorrer, y por lo tanto peor performance.
Reducir la resolución por software es costoso (lento), por lo
que se prefiere que el dispositivo de entrada provea las
imágenes con la resolución necesaria, y no más.
Un píxel de baja resolución se corresponde con un área de
píxeles de alta resolución.
Para reducir la resolución hay dos técnicas:
• Promedio: un píxel de baja resolución se obtiene
promediando los colores de los píxeles correspondientes
de alta resolución
• Representante: se elige a "dedo" un píxel dentro del área
de alta resolución. Este método es más rápido, pero se
pueden perder detalles
Normalización: profundidad de colores
Los ojos perciben las imágenes en blanco y negro
principalmente, a la que se le agrega información de color
captada por otros "sensores" de menor resolución.
La mayoría de las aplicaciones de reconocimiento de imágenes
sólo requieren imágenes monocromáticas.
Del mismo modo que con la resolución, es más efectivo
obtener las imágenes en tonos de grises que convertiras por
software.
Hay dos técnicas similares de conversión para obtener la
luminancia (L):
• Promedio o suma: L = (R + G + B) / k k puede ser 1 o 3
• Prmedio ponderado: L = kr.R + kg.G + kb.B
Normalización de brillo y contraste
El brillo de una imagen es la luminancia promedio.
El contraste de una imagen es la dispersión de la lumninancia.
Para comparar dos imágenes (la imagen recibida por el
dispositivo y una imagen de referencia) y reducir los efectos del
cambio de iluminación y contraste, se realiza una
normalización de la siguiente manera:
1. Se obtiene el brillo Br de la imagen recibida
2. Se compara con el brillo Bn de la imagen de referencia
3. Se calcula k = Bn / Br
4. Se multiplican los píxeles por k
De este modo el brillo de la imagen normalizada será Bn
De manera similar se procede con el contraste.
Separación de colores
Consiste en al obtención de un bitmap monocromático (binario,
de un solo bit por píxel), de la misma resolución que la imagen.
Cada pixel de la imagen se evalúa con una función binaria
"pasa no pasa".
Si la función devuelve true, el pixel binario correspondiente se
establece en 1. De lo contrario se establece en 0.
Típicamente se evalúa un umbral de luminancia. Los píxeles
más brillantes se establecen en 1, y los más oscuros en 0.
Manchas
El bimap monocromático es una imagen con píxeles blancos y
negros (unos y ceros).
Se denomina mancha a un grupo continuo de píxeles blancos
aislados del resto.
El área de una mancha se determina aplicando un algoritmo
Flood Fill, decidiendo si se consideran continuos los píxeles
unidos por un vértice
Parametrización de manchas
Cargando una imagen binaria en un bitmap trinario, es posible
utilizar el algoritmo flood fill de modo que cambie los píxels
blancos por gris, para marcar así aquéllas manchas que ya han
sido registradas.
Recorriendo todo el bitmap en busca de píxels blancos, y
aplicando el algoritmo Flood Fill cada vez que se encuentra
uno, se recorren todas las manchas de la imagen.
Un primer dato que se obtiene es la cantidad de manchas. En
un vector se pueden registrar los parámetros de cada mancha.
Superficie
El algoritmo Fill Flood requiere como único parámetro un píxel
inicial, dentro de la mancha.
Con una ligera modificación, el algoritmo Fill Flood puede
contar la cantidad de píxeles de la mancha.
Esta cantidad es la superficie de la mancha.
Filtro de ruido
La mala calidad del dispositivo de imágenes puede degenerar
en la aparición de manchas indeseadas, denominadas ruido.
Típicamente se trata de píxeles aislados, por lo que es posible
distinguir estas manchas espúreas por su reducido tamaño.
Un filtro general de ruido consiste en eliminar las manchas de
superficie menor a una cota dada, por ejemplo 5 píxeles.
Posición: baricentro
Cualquier píxel de una mancha sirve para indicar la posición de
la misma.
Sin embargo, el baricentro es el mejor método para definir una
coordenada que represente la posición de la mancha. Un gran
ventaja consiste en la repetibilidad del proceso, de manera que
la mancha y su posición están relacionadas de manera
unívoca.
El baricentro se obtiene como el promedio de las coordenadas
de todos los píxeles de la mancha, y se puede incorporar al
algoritmo Flood Fill.
Tensor de inercia
El tensor de inercia es un baricentro de 2º orden, y consta de
tres parámetros: x2, y2, xy, que se suelen representar en forma
de matriz simétrica de 2x2.
El parámetro x2 resulta de promediar el cuadrado de las
distancias en x de los píxeles al baricentro.
El parámetro y2 resulta de promediar el cuadrado de las
distancias en y de los píxeles al baricentro.
El parámetro xy resulta de promediar el producto de las
componentes x e y de las distancias los píxeles al baricentro.
Tensor de inercia
Conceptualmente, el tensor de inercia obtiene una elipse
característica, con idénticas propiedades inerciales.
Esta elipse releva tres parámetros propios de la mancha:
• Eje mayor (longitud de la elipse)
• Eje menor (ancho de la elipse)
• Orientación (ángulo del eje mayor)
Estos parámetros se obtienen al diagonalizar el tensor, a través
de una rotación (doble rotación, por tratarse de un momento de
2º orden)
Vector de manchas
El vector consta de un elemento por mancha, cada uno con los
siguientes parámetros:
• Coordenadas x e y del píxel inicial (sobre el que se aplica el
algoritmo Flood Fill)
• Superficie
• Posición, coordenadas del baricentro
• Tensor de inercia diagonal:
o Longitud del eje mayor
o Longitud del eje menor
o Ángulo de giro
Otros campos útiles
•
•
•
•
Alto y ancho del rectángulo mínimo que contiene la mancha
Bitmap binario de la mancha
Bitmap de la imagen original, de la región de la mancha
Momentos superiores
o Los momentos de órdenes superiores (mayores a 1)
tienen propiedades muy útiles para parametrizar
topologías. Algunas de ellas permiten parametrizar
formas, de manera independiente a su posición, rotación
y tamaño. Estos momentos se utilizan en técnicas de
reconocimiento de caracteres.
Vectorización de la mancha
La vectorización permite conservar la información de la forma
de una mancha sin necesidad de conservar el bitmap.
Las ventajas son la reducción de espacio de memoria, y la
consecuente mayor velocidad de proceso.
La vectorización se realiza sobre el contorno de la mancha,
aproximando con curvas de spline, típicamente Bezier
cuádricas o cúbicas.
A partir de la vectorización es posible determinar la naturaleza
cóncava o convexa de la forma, cuántas concavidades tiene y
otras características topológicas que resulten relevantes.
Bezier
Bezier lineal
Bezier cuadrática
Bezier cúbica
Bezier general
Las imágenes animadas se obtuvieron de Wikipedia, de las
páginas relativas a los temas correspondientes (Fill Flood y
Bezier).
Descargar

Reconocimiento de imágenes estáticas