abril 11, 2020 10:00 am

Jesús

>>> Descarga el código de este post aquí <<<

Anteriormente hablamos del detector Harris, el cual se fundamenta en conceptos propios del álgebra lineal, como el cálculo del determinante y la traza de una matriz, con el objeto de medir la “esquinosidad” de una región. 

En particular, la ecuación usada para calcular este atributo, conocido como R, es la siguiente:

R = determinante(M)  – k * (traza(M) ^ 2)

Una forma alternativa de expresarla, basada en los autovalores (también conocidos como valores propios o Eigen) de la matriz M, es esta:

R = A1 * A2 – k * ((A1 + A2) ^ 2)

No obstante, según Shi y Tomasi, autores del detector GFTT (cuyas iniciales significan, en inglés, Good Features to Track o Buenas Características a Trazar) llegaron a la realización de que hay una mejor forma de cuantificar la “esquinosidad”:

R = min(A1, A2)

Dada esta versión simplificada de la ecuación, para determinar si una región es una esquina, basta con que se cumpla que R sea mayor o igual a un determinado umbral (T). Puesto de otra forma, R>= T.

¡Suficiente teoría! Pongámonos manos a la obra.

Código

>>> Descarga el código de este post aquí <<<

Empecemos como siempre: creando el entorno virtual, e instalando las librerías necesarias.

Las dependencias de este proyecto son:

El programa de abajo hace uso de la implementación del detector GFTT incorporado en OpenCV para encontrar las esquinas en la foto de ejemplo. Mi recomendación es que leas con detenimiento los comentarios que acompañan a la implementación antes de ejecutar el script:

Con el siguiente comando podemos correr el programa:

El resultado será el siguiente (la imagen de la derecha contiene 2351 puntos clave, aunque es probable que muchos de ellos se solapen entre sí).



El día de hoy estudiamos una pequeña mejora al ya competente detector de Harris. Aunque el método propuesto por Shin y Tomasi es más compacto y sencillo de entender, en la práctica no hay un claro ganador entre Harris y GFTT. Si bien es cierto que GFTT tiende a ser más estable, un aspecto a recalcar es que, sin importar qué tan bueno sea un detector en la teoría, siempre debemos probarlos todos para poder tomar una decisión respaldada por datos, por experimentos, no por corazonadas. 

>>> Descarga el código de este post aquí <<<

Descarga el proyecto de ejemplo, altéralo a tu gusto y comparte tus descubrimientos en los comentarios.

¡Nos vemos!

Sobre el Autor

Jesús Martínez es el creador de DataSmarts, un lugar para los apasionados por computer vision y machine learning. Cuando no se encuentra bloggeando, jugando con algún algoritmo o trabajando en un proyecto (muy) cool, disfruta escuchar a The Beatles, leer o viajar por carretera.

Paso 2/2: Celebra tu NUEVO EMPLEO en Machine Learning ?

A %d blogueros les gusta esto: