Reconocimiento de gestos utilizando solo técnicas simples

8

Estoy siguiendo un curso de visión por computadora y tengo este ejercicio: escribir un programa que, dada una imagen de la mano, pueda reconocer si la mano está abierta, cerrada, en un puñetazo o sosteniendo una postura "ok", usando solo la Técnicas proporcionadas hasta ahora (píxel 4/8 conectado, región conectada, búsqueda de contorno, búsqueda de agujeros, propiedad de blob como centroide, área, perímetro, excentricidad, momentos de imagen, transformación de imagen como inversión / potencia / log / corrección gamma / estiramiento de contraste, histograma computación y ecualización).

Lo he hecho con algunas propiedades básicas de blob (la mano cerrada tiene una baja excentricidad, "ok" tiene un agujero, la mano abierta tiene una gran diferencia entre el área de la elipse inscrita en el blob y el área del blob con una baja excentricidad) .. Parece que funciona, pero la primera imagen es un poco problemática.

Creo que podría haber algo más para hacer un algoritmo más robusto. Tal vez algún tipo de propiedad de momento? ¿Podría ayudar algún eje de blob / orientación / puntos extremos?

Imágenes de prueba de PS:

ok2

Okay

abierto

puñetazo

nkint
fuente
¿Se te permite usar esqueletización ? Vea el artículo relevante de Wikipedia para más ideas.
Emre
no no está permitido porque es el contenido de una clase futura!
nkint
Puede intentar aplicar la aproximación agregada simbólica al contorno exterior de cada objeto. Básicamente, reducir una forma compleja a una serie temporal y luego agruparlos de alguna manera.
Ivo Flipse
creo que lo que no tiene que utilizar cualquier tipo de aprendizaje automático, simplemente una manera inteligente de combinar isses escritos en la pregunta ..
nkint
tal vez alguna característica morfológica?
nkint

Respuestas:

2

Puedes intentar mirar los momentos invariantes de Hu. Se pueden construir a partir de momentos básicos, y son invariantes rotación, escala, reflexión y traducción.

Calcule primero un conjunto de contornos de entrenamiento y luego aplíquelos al contorno de prueba.

Hay implementaciones en Matlab y OpenCV, por lo que recuerdo.

CB
fuente
2

De acuerdo con el libro Programación de la visión por computadora con Python, un enfoque interesante es usar características densas de SIFT (también conocido como HoG) en sus imágenes, y alimentar estas características a un clasificador.

No lo intenté yo mismo, pero parece un buen enfoque. Además, el inventor de la función HoG propone la aplicación Flutter que funcionó bastante bien en mis pruebas, y sería muy extraño si el inventor no usara sus propias características o un derivado cercano.

sansuiso
fuente
2

Uno de mis amigos hizo esto para su tesis de pregrado. Lo que básicamente hizo fue codificar las propiedades de cada gesto. Por ejemplo, en la primera figura, tome una máscara rectangular sobre las porciones de la mano. Las partes donde la piel se encuentra con el borde de la máscara rectangular deben anotarse y marcarse. Luego, se pueden comparar las posiciones relativas del borde más grande y el borde más pequeño.

Entonces, para apuntar hacia arriba, tendrá un borde más pequeño hacia arriba y un borde más grande en la muñeca.

Para apuntar hacia los lados, tiene un borde más pequeño en un lado y un borde más grande en la parte inferior.

Las instrucciones, como mínimo, se pueden cubrir de esta manera.

Naresh
fuente