Python, OpenCV, Hand Tracking

17
Aplicación para la Manipulación de Interfaces Gráficas de OS por medio de Gestos Manuales. Yeison N. Cardona A. 808511 Lina M. Castro R. 810014 Santiago Tabares M. 810561 Jeffry A. Giraldo R. 808530 Universidad Nacional de Colombia sede Manizales Universidad Nacional de Colombia sede Manizales Señales y Sistemas Señales y Sistemas

Transcript of Python, OpenCV, Hand Tracking

Page 1: Python, OpenCV, Hand Tracking

Aplicación para la Manipulación de Interfaces Gráficas de OS por medio de Gestos Manuales.

Yeison N. Cardona A. 808511Lina M. Castro R. 810014

Santiago Tabares M. 810561Jeffry A. Giraldo R. 808530

Universidad Nacional de Colombia sede ManizalesUniversidad Nacional de Colombia sede ManizalesSeñales y SistemasSeñales y Sistemas

Page 2: Python, OpenCV, Hand Tracking

22

Imagen OriginalImagen Original

● Python, OpenCV● 8 FPS

Page 3: Python, OpenCV, Hand Tracking

33

Desenfoque GausianoDesenfoque Gausiano

● Eliminar el ruido y reducir pequeños detalles.

Page 4: Python, OpenCV, Hand Tracking

44

Filtro de PielFiltro de Piel

● Se cambia la imagen a un modelo HSV (para hacer más fácil la manipulación) y se filtra desde una escala inferior a una mayor.

● El resultado del filtro es una imagen binaria.

● Por lo general la imagen resultante contiene muchas regiones aisladas, éstas se eliminan en filtros siguientes.

Page 5: Python, OpenCV, Hand Tracking

55

ErosiónErosión

● Quita la capa externa de píxeles del objeto, es decir, el objeto se hace en un poco más pequeño.

● Suaviza límites del objeto.

● Elimina los píxeles aislados ruidosos.

Page 6: Python, OpenCV, Hand Tracking

66

DilataciónDilatación

● Añade un anillo extra exterior de píxeles en los límites del objeto, es decir, el objeto se hace en un poco más grande.

● Suaviza los bordes del objeto.

● Rellena agujeros.

Page 7: Python, OpenCV, Hand Tracking

77

Hallado de ContornosHallado de Contornos

● La búsqueda se realiza sistemáticamente sobre cada píxel de la imagen.

● En caso de encontrar un píxel objetivo (valor mayor que 0) se guarda y se continúa analizando sus vecinos (8-conectados, es decir, en cruz y en aspa).

● De este modo se van guardando únicamente los puntos contiguos, externos.

Page 8: Python, OpenCV, Hand Tracking

88

Rellenado de ContornosRellenado de Contornos

● Se encargan de encontrar regiones conexas y dibujarlas.

Page 9: Python, OpenCV, Hand Tracking

99

ConvexidadesConvexidades

● Se hayan las convexidades mas significativas, que en este caso están representadas por cada dedo extendido.

Page 10: Python, OpenCV, Hand Tracking

1010

DefectosDefectos

● Se calculan los defectos de convexidad, es decir, los puntos pertenecientes al contorno inicial que difieren de los del recubrimiento.

Page 11: Python, OpenCV, Hand Tracking

1111

CentroideCentroide

● Se puede considerar el centroide como el centro de un rectángulo inclinado mínimo que contenga un área específica.

Page 12: Python, OpenCV, Hand Tracking

1212

Unión Convexidad-DefectoUnión Convexidad-Defecto

● La conexión de los puntos de convexidad y los defectos.

Page 13: Python, OpenCV, Hand Tracking

1313

Discriminación de DedosDiscriminación de Dedos

● Se calculan los ángulos entre las trayectorias convexidad-defecto-convexidad, si es menor a 90 grados, entonces podría tratarse de un dedo.

Page 14: Python, OpenCV, Hand Tracking

1414

Controles en Tiempo RealControles en Tiempo Real

Todos los parámetros de los filtros se pueden editar en tiempo real.

Page 15: Python, OpenCV, Hand Tracking

1515

Interpretación de ComandosInterpretación de Comandos

Dos dedos: Cursor liberado

Un dedo: Cursor capturado

Cinco dedos: Click Izquierdo

Tres dedos: Click Derecho

● La implementación de comandos se hace con el paquete xdotool para GNU/Linux.

● Xdotool permite emular pulsaciones de teclado y eventos de cursor.

● Se necesitan al menos 3 capturas antes de validar un comando.

Page 16: Python, OpenCV, Hand Tracking

1616

Movimiento del CursorMovimiento del Cursor

(X ,Y )

(0,0)

● Se toma las dos últimas posiciones (del centroide) de y se obtiene una posición relativa (X,Y).

● Se construye una trayectoria para desplazar el cursor.

● Se desplaza el cursor sobre esa trayectoria en un thread*.

*Si se recibe una nueva trayectoria antes de terminar el thread éste de termina.

Page 17: Python, OpenCV, Hand Tracking

1717

Atribución-CompartirIgual 3.0 UnportedAtribución-CompartirIgual 3.0 Unported

Aplicación para la Manipulación de Interfaces Gráficas deOS por medio de Gestos Manuales. por Yeison Cardona

se encuentra bajo una Licencia Creative CommonsAtribución-CompartirIgual 3.0 Unported.