Métodos

El objetivo de esta sección es presentar el método implementado mediante un diagrama de flujo, explicando detalladamente cada una de las etapas.

Es importante aclarar que partimos de la hipótesis de que los videos con una ROI móvil presentan un movimiento "suave". Es decir, estas zonas de interés no se desplazan de manera abrupta.

Figura 2: Diagrama de flujo

Deteccion de caras

En la primera etapa del proceso, se utilizó el detector de caras Haar cascades para identificar la cara del intérprete de señas. Para evitar confusiones con otras caras presentes en el video, partimos de la hipótesis de que el intérprete siempre se encuentra en el cuadrante inferior derecho del video y que no habrá otras caras en ese cuadrante.

Por esta razón, el primer paso consiste en dividir cada cuadro del video en cuatro cuadrantes y aplicar el detector de caras únicamente en el cuadrante inferior derecho. Este algoritmo nos proporciona las coordenadas de las cuatro esquinas del rectángulo que delimita la cara de la persona.

Estas coordenadas sirven como punto de partida para ubicar nuestra región de interés (ROI).

Figura 3: Caras detectadas.

Transformación de la Imagen a HSV

El siguiente paso para continuar con la detección de la región de interés, es transformar el espacio de colores de la imagen para facilitar su manipulación. Para ello, se utiliza el espacio de color HSV, en el que la imagen se descompone en tres canales distintos: H (tono), S (saturación) e I (intensidad). De estos canales, se selecciona uno para reducir la dimensión de trabajo de 3 a 1.

En la imagen siguiente, se muestra un ejemplo de una imagen descompuesta en sus tres canales individuales.

Figura 4: Imagen divida en los canales HSV

Como se muestra en la figura adjunta, el canal que facilita mejor la visualización de los diferentes colores en la imagen es el tercer canal. Aunque el primer canal también podría haber sido una opción, se observa que el fondo presenta irregularidades de color. Esto representa un desafío adicional al intentar categorizar el fondo basado en el promedio de colores.

Detección de Bordes

Este bloque representa una etapa crucial en el programa, ya que es donde se definen los bordes buscados. El algoritmo utiliza un enfoque basado en una forma de "derivada", en la que, a partir de una banda definida por el parámetro de entrada (pixel_count), se calculan los promedios de la banda anterior y la siguiente. La diferencia entre estos promedios indica la variación entre ambas bandas de píxeles.

Este valor se compara con un umbral especificado en los parámetros de entrada. Si el valor excede el umbral, se interpreta como un cambio abrupto en los colores de la imagen, lo que sugiere la presencia de un borde.

Este proceso se aplica a todos los bordes, excepto al borde superior. En el caso del borde superior, primero se detectan los bordes laterales y, posteriormente, se asciende desde estos bordes para localizar el borde superior. Esta diferencia en el enfoque se debe a que la detección de la cara del intérprete puede variar con el movimiento de la cabeza, y en ocasiones el punto inicial puede quedar fuera del rectángulo buscado, dificultando su detección. Por lo tanto, se optó por detectar primero los bordes laterales, asegurando que el proceso comience desde un punto dentro del rectángulo.

El algoritmo devuelve los cuatro puntos correspondientes al rectángulo identificado en esta iteración.

Verificación del área estimada

Una vez obtenidos los nuevos puntos del borde en el frame, es crucial asegurarse de que estos no difieran abruptamente de los bordes encontrados en el frame anterior. En algunos casos, como en el primer video donde una persona pasa una hoja del mismo color que el fondo, el algoritmo puede extenderse a regiones que no pertenecen al área de interés debido a movimientos en el fondo.

Para abordar este problema, utilizamos inicialmente un parámetro de porcentaje máximo para el cambio en el área. Comparamos el área actual con la anterior utilizando este umbral porcentual. Si la diferencia está dentro del porcentaje establecido, se mantienen los nuevos puntos del borde. En caso contrario, si la diferencia supera el umbral, se realiza un análisis más detallado de cada borde individual.

Para este análisis, empleamos un segundo parámetro de entrada llamado position_threshold, que indica el movimiento máximo permitido para un borde individual. Si el cambio en un borde específico es menor que este umbral, se acepta el nuevo borde detectado para ese borde en particular.

Además, partiendo de la hipótesis de que el área de interés sigue siendo la misma pero puede haber un desplazamiento en el cuadrante, reajustamos los demás bordes para que el área total se mantenga igual a la de la iteración anterior.

Figura 5: Cuadrantes detectados

links

social