0% encontró este documento útil (0 votos)
21 vistas5 páginas

Extracción de Características de Logotipos

El documento describe el proceso de extracción de características de imágenes como parte de un sistema de reconocimiento de logotipos. Se explican técnicas comunes de extracción de características e implementación en OpenCV. Se extraen características como número de contornos, redondez, puntos de la cubierta convexa y momentos de Hu.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
21 vistas5 páginas

Extracción de Características de Logotipos

El documento describe el proceso de extracción de características de imágenes como parte de un sistema de reconocimiento de logotipos. Se explican técnicas comunes de extracción de características e implementación en OpenCV. Se extraen características como número de contornos, redondez, puntos de la cubierta convexa y momentos de Hu.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

1

Talle 5 - Extracción de características


Diego Alexander Rodríguez Vargas, diarodriguezva@[Link], codigo: 285607
Julián Alexander Vargas Jiménez, juavargasji@[Link], codigo: 285615

Resumen—El escrito en cuestión presenta el proceso de ex- dado que algunas características son dependientes del tamaño,
tracción de ciertas características sobre un conjunto de datos como por ejemplo, el código de la cadena o un caso más
que están siendo utilizados en el reconocimiento y detección de simple, valores como el perímetro y el área, las imágenes
logotipos. Inicialmente se explican las técnicas más comunes uti-
lizadas en la extracción de características que fueron utilizadas en deben ser normalizadas. Para llevar a cabo este proceso, se
este trabajo. Más adelante, se indica la manera de implementar toma como base que cad imagen va a tener un alto igual a 50
algunas funciones disponibles en OpenCv para este proceso junto pixeles con su respectivo ancho.
con sus respectivos resultados. Por último, se realiza un análisis Además, si se tiene en cuenta que se debe llevar a cabo
de componentes principales PCA sobre los datos obtenidos. un proceso de segmentación, la imagen de origen debe ser
Palabras Claves—Código de la cadena, Compacidad, Contorno, binaria y debe poseer únicamente bordes que la delimitan;
Cubierta Convexa, Diámetro, Eje Menor, Extracción de Carac- por tal razón, a la imagen de trabajo se le realizó un pre-
terísticas, Logotipo, Momentos de Hu, OpenCv, Perímetro. procesamiento usando un filtro de Canny. La imagen después
de la normalización y el filtrado se presenta en la figura 1
I. I NTRODUCCIÓN
Na vez realizada una respectiva etapa de preprocesamien-
U to y segmentación, se puede iniciar el proceso e selección
y/o extracción de características, las cuales serán la base de los
métodos de clasificación, que es a saber, el objetivo principal
en sistemas de detección y reconocimiento de imágenes, obje-
Figura 1. Normalización y filtrado
tivo general del curso. Como se ha mencionado, el problema
de detección no consiste simplemente en obtener un número
finito de características asociadas, sino además asegurar que IV. O BTENCIÓN VECTOR DE CARACTERÍSTICAS
dichas características sean lo suficientemente discriminantes La búsqueda de contornos tanto internos como externos (la
para que no se creen erróneas y/o falsas detecciones. Debido cual es una técnica básica de segmentación de imágenes) es
a ello, se realiza un análisis de componentes principales PCA posible realizarla con OpenCV mediante la función cvFind-
(Principal Component Analysis) con las características de cada Contours. La función cvFindContours recibe como parámetros
una de las imágenes. la imagen a la cual se desean determinar los contornos, un
espacio de almacenamiento donde se almacenan las secuencias
II. P LANTEAMIENTO DEL EJERCICIO (objeto tipo cvMemStorage), y un objeto tipo cvSeq * donde
Se propone para un mínimo de treinta imágenes rela- se guardan los puntos que conforman los contornos hallados
cionadas con el proyecto el cálculo numérico de por lo [?, book1]
menos quince características. Finalmente, estos datos deben La estructura de la función cvFindContours se muestra en
ser sometidos a un análisis de componentes principales. la figura 2. El proceso de hallar los contornos solo implica
Con el fin de explorar y ante todo aprender los diversos la mitad del proceso, de manera que el siguiente y último
métodos estudiados en las sesiones teóricas, se conforma el paso consiste en graficar los contornos. Esto se logra mediante
vector de características sin tomar en cuenta aspectos tales la función cvDrawContours, la cual requiere la imagen en
como el color, pues, este procedimiento ya fue utilizado en donde se graficaran los contornos, la secuencia donde están
talleres anteriores. De este modo, se proponen características almacenados (objeto cvSeq * que posee los contornos ya
como: calculados con cvFindContours), y los parámetros de color y
Número de contornos espesor de las líneas con las que se graficarán los contornos.
Redondez La estructura de la función cvFindContours se muestra en la
Puntos relacionados con defectos en la cubierta convexa, figura 3.
aquí se incluye el punto final, el inicial y el de mayor
profundidad
Los siete momentos invariantes de Hu
Diámetro y eje mayor

III. P REPROCESAMIENTO DE LAS IMÁGENES


Dado que no todas las imágenes tienen las mismas dimen-
siones, incluso aquellas que representan una misma figura, y
2

Figura 2. Código fuente para encontrar contornos segmento lineal PQ el cual quede totalmente contenido
dentro de S.

Figura 6. Definición de envolvente convexa


Figura 3. Código fuente para dibujar contornos

El resultado de usar la función DrawContours se muestra La definición anterior estrictamente no permite la con-
en la figura 4 strucción de algoritmos para un conjunto de puntos
convexo. Así pues, se define la envolvente convexa como:
un conjunto S es convexo si éste es exactamente igual a
la intersección de todos los planos medios contenidos en
él.[1]
OpenCv cuenta con la función cvConvexHull2 que permite
Figura 4. Contornos encontrados al usuario encontrar la envolvente convexa a partir de un
contorno preestablecido. No obstante, este método tiene al-
Dentro de la parametrización de la función se indicó que gunas particularidades. Los contornos que se analizan deben
se necesitaba únicamente los contornos exteriores y adicional- ser exclusivamente exteriores, debido a ello la función cvFind-
mente que la secuencia almacenaría el código de la cadena. Contours se debe parametrizar con CVR ET RE XT ERN AL.
En este punto del programa, se obtiene la primer característica Para su posterior visualización, se deben especificar un número
que corresponde con el número de contornos y que es devuelta de puntos que se utilizarán para representar la envolvente, y
por la función cvFindContours. No obstante, la forma de utilizar la función cvDrawContours. La parametrización de las
obtener los datos de la secuencia de puntos no es tan directa, funciones cvFindContours y cvConvexHull2 se presentan en la
es necesario declara un objeto de tipo CvSeqReader que se figura 7:
encarga de ello. La figura 5 muestra el código utilizado para
obtener los datos del código de la cadena.

Figura 7. Código fuente para generar la envoltura convexa

La envolvente es almacenada en la secuencia de puntos hull


definida por medio de 100 puntos. La envolvente resultante se
presenta en la figura 8

Figura 5. Código fuente para leer código de la cadena

Es importante indicar que nuestro problema se basa prin-


cipalmente en detecciones de forma, pues, es de esperarse
que cada uno de ellos tiene una forma característica asociada.
Con esto en mente, se implementó el código de la cadena y
ahora el problema se concentra en encontrar otra característica
dependiente de formas, y es a saber, el método de detección
de la envolvente convexa.
La envolvente convexa de un objeto geométrico (tal como
un set de puntos o un polígono) es el set convexo más
pequeño que contiene tal objeto. Dentro de las definiciones
para conjunto convexo S, se tiene:
Un conjunto de puntos S es convexo si cualquiera dos
puntos P y Q están dentro de S, y se puede trazar un Figura 8. Envolvente convexa
3

Al observar las imágenes mostradas en la figura 8 se


puede apreciar que el contorno del logotipo no corresponde
totalmente con la envolvente convexa, debido a ello, se definen
defectos referidos a la envolventes, los cuales brindan infor-
mación acerca de la forma de nuestro contorno que es el fin
último de este método. La función cvConvexityDefects calcula
Figura 10. Código para encontrar momentos de Hu
los defectos presentes en la envoltura convexa. Los parámetros
de esta función son en esencia el contorno, la envolvente y una Dentro de las características típicas que se tienen para
variable para el manejo de memoria. Es importante aclarar que el análisis de formas, se encuentra el perímetro y el área.
la envolvente debió ser parametrizada de una manera diferente Las funciones cvArcLength y cvContourArea realizan estos
que en el caso anterior, ya que no se desea visualizarla, cálculos de forma directa. A partir del perímetro y el área
sino simplemente generar la secuencia de puntos, en otras se definen otras dos características, la compacidad, definida
palabras, no se define en la función cvConvexHull2 un número como el perímetro al cuadrado sobre el área, y la redondez
determinado de puntos. La figura 9 presenta las funciones definida como 4 veces pi sobre el cuadrado del perímetro. Para
necesaria para encontrar los defectos sobre la envolvente. el análisis planteado, se toman el perímetro y la compacidad
dentro del vector de características, sabiendo que la redondez
no aporta mucho debido a que ya se está incluyendo la
compacidad que es su recíproco.
Las últimas características analizadas tienen que ver con el
eje menor y el eje mayor (diámetro) de los contornos. Para
extraer dichas características se utiliza la siguiente función:
CvBox2D boxMin = cvMinAreaRect2(contours,0);

Figura 9. Código para encontrar los defectos de la envolvente convexa


En resumen, se define el vector de características así:
La función cvConvexHull2 devuelve una secuencia de pun- Número de contornos
tos, la cual debe ser convertida a una estructura tipo CVCon- Posición X del primer punto del defecto de la envolvente
vexityDefect para poder tomar la información que se necesita. Posición Y del primer punto del defecto de la envolvente
Ahora bien, lo único que se necesita es acceder a los atributos Posición X del último punto del defecto de la envolvente
de esta estructura para obtener el valor de las características. Posición Y del último punto del defecto de la envolvente
Con el método de los defectos de la envolvente convexa, se Posición X del punto más profundo del defecto de la
definen las siguientes características: envolvente
Posición Y del punto más profundo del defecto de la
Coordenada x y y del punto inicial donde se presente un
envolvente
defecto.
Primer momento de Hu
Coordenada x y y del punto final donde se presente un
Segundo momento de Hu
defecto.
Tercer momento de Hu
Coordenada x y y del punto más alejado de la envolvente
Cuarto momento de Hu
convexa.
Quinto momento de Hu
Por otro lado, y teniendo en cuenta que para el desarrollo Sexto momento de Hu
del proyecto se van a considerar logotipos que posiblemente Séptimo momento de Hu
tengan una rotación, por ese motivo, es muy conveniente Perímetro
proponer alternativas que sean invariantes a transformaciones Redondez
tales como: traslaciones, rotaciones y escalamientos. Uno de Diámetro
los métodos ampliamente utilizados son los denominados Eje menor
momentos de Hu.
El método de los momentos invariantes es derivado las V. E XTRACCIÓN DE CARACTERÍSTICAS
invariantes algebraicas aplicadas a la función generadora de Una vez definido el vector de características, se debe realizar
momentos bajo una transformación de rotación. Un conjunto un proceso de selección y/o extracción de las mismas, con el
de momentos invariantes consiste de un set de combinaciones objetivo de reducir la complejidad y redundancia y trabajar
no lineales de momentos centrales que permanecen constantes con datos que realmente sean discriminantes, que se verá
bajo rotaciones. Hu definió siete funciones computadas a reflejado en una clasificación más selectiva. Por lo tanto, se
partir de los momentos centrales de orden tres, las cuales son decide realizar un análisis de componentes principales PCA
invariantes con respecto a escabilidad traslación y rotación. utilizando los valores de vectores de característicos sobre diez
Utilizando las funciones disponibles en la librería de imágenes por clase, que son a saber: Adidas Classic, Adidas,
OpenCv, el cálculo de los momentos de Hu se realiza de forma Nike, Puma, Kappa y Lotto. Las imágenes utilizadas en el
directa. La figura 10 muestra el código implementado para esta análisis de componentes principales se presenta en los anexos
labor. en la figura 12
4

Los parámetros necesarios para efectuar el análisis de com- final, se observó que los momentos de Hu, al contrario de
ponentes principales por medio de la función cvCalcPCA son: las supuesto inicialmente, no son características discriminantes
una matriz con los datos, una matriz donde se almacenarán los que aporten al proceso de clasificación, sin embargo, medidas
valores propios, otra para los promedios, otra matriz donde se como el número de contornos y el perímetro son medidas muy
almacenarán los vectores propios, y una bandera indicando buenas para este problema.
el orden de los datos sobre la matriz de entrada. El código
utilizado se presenta en la figura 11 R EFERENCIAS
[1] Soft Surfer. Convex hull. [Link]
algorithm_0109.htm, October 2012.

Figura 11. Código para efectuar PCA

La tabla I muestra los valores propios obtenidos:

1 1073415 10 11.405823
2 20154.7011 11 0.000927
3 4517.64697 12 0.000024
4 2890.18334 13 0
5 2216.2775 14 0
6 827.28375 15 0
7 405.01528 16 0
8 59.98835 17 0
9 43.54792 18 0
Cuadro I
VALORES P ROPIOS

Al realizar un cálculo rápido, se aprecia que con los cinco


primeros valores se obtiene el 99.87 % de los datos. Los
vectores propios asociados a estos valores se presentan en
la figura 13 de los anexos. Por último, si se analizan los
vectores propios, se puede dar cuenta que la variable 2 y las
variables de la 12 a la 15, no aportan nada, debido a ello,
se decide suprimirlas. Al final, se seleccionan las siguientes
características.
Número de contornos
Posición X del primer punto del defecto de la envolvente
Posición Y del primer punto del defecto de la envolvente
Posición X del último punto del defecto de la envolvente
Posición Y del último punto del defecto de la envolvente
Posición X del punto más profundo del defecto de la
envolvente
Posición Y del punto más profundo del defecto de la
envolvente
Perímetro
Diámetro
Eje menor

VI. C ONCLUSIÓN
Para el proyecto propuesto de reconocimiento y detección
de logotipos, se realiza una etapa de preprocesamiento de
imágenes, llevando a cabo procesos de filtración y redimen-
sionamiento. Debido a que se trata principalmente de un
problema de detección de formas, pues, los logotipos se
encuentran en diferentes colores dependiendo del producto,
se decide enfocar el análisis en la búsqueda de características
referidas a formas. Con las 18 características propuestas, se
decide efectuar un análisis de componentes principales con
el objetivo de reducir la dimensionalidad del problema. Al
5

Figura 12. Imágenes utilizadas en PCA

Figura 13. Vectores Propios

También podría gustarte