11.07.2015 Views

Download document (10.35 MB) - Escuela Superior de Informática ...

Download document (10.35 MB) - Escuela Superior de Informática ...

Download document (10.35 MB) - Escuela Superior de Informática ...

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

90 Capítulo 4. Metodología <strong>de</strong> Trabajo<strong>de</strong> tamaño se utiliza una interpolación bilineal (CV INTER LINEAR). Se necesita <strong>de</strong>clararuna estructura estática global CvMemStorage * necesaria para almacenar estructuras <strong>de</strong> datosque crecen dinámicamente como secuencias, contornos, etc... A<strong>de</strong>más, se necesitan <strong>de</strong>clararlas siguientes variables:c o n s t char ∗ casca<strong>de</strong> name = "haarcasca<strong>de</strong>_frontalface_alt2.xml" ;C v H a a r C l a s s i f i e r C a s c a d e ∗ c a s c a d e = 0 ;don<strong>de</strong> casca<strong>de</strong> name es el nombre <strong>de</strong>l fichero xml que contiene el clasificador entrenadopara <strong>de</strong>tección <strong>de</strong> rostros, y casca<strong>de</strong> es un puntero a una estructura <strong>de</strong> tipo CvHaarClassifier-Casca<strong>de</strong> necesaria para almacenar el clasificador en memoria. A continuación, se carga enmemoria el clasificador utilizando la función cvLoad, se reserva memoria para la estructuramediante cvCreateMemStorage y se llama a la función <strong>de</strong> <strong>de</strong>tección <strong>de</strong> rostros que se encarga<strong>de</strong> convertir la imagen a escala <strong>de</strong> grises y hacerla más pequeña, para que el clasificadorfuncione mejor, y llamar a la función cvHaarDetectObject para <strong>de</strong>tectar caras (ver Algoritmo2). Finalmente, se extrae la cara <strong>de</strong>tectada como Región <strong>de</strong> Interés para la posterior <strong>de</strong>tección<strong>de</strong> boca y ojos, siguiendo el mismo proceso que para la cara pero tomando como entrada laimagen <strong>de</strong>l rostro y utilizando el clasificador correspondiente en cada caso.La búsqueda <strong>de</strong> contornos se realiza para la <strong>de</strong>tección <strong>de</strong> manos. La función encargada <strong>de</strong>esta tarea es find and draw contours(IplImage *frame) (ver Algoritmo 3)Primero se transforma la imagen <strong>de</strong> entrada a escala <strong>de</strong> grises mediante cvCvtColor. Posteriormentese hace una ecualización <strong>de</strong>l histograma para normalizar el brillo y aumentar elcontraste <strong>de</strong> la imagen, seguidamente se somete a la imagen a un proceso <strong>de</strong> umbralización;esto consiste en seleccionar un nivel T que separe dos o más niveles <strong>de</strong> intensidad <strong>de</strong> una imagen,así se intenta separar el personaje que signa <strong>de</strong>l fondo <strong>de</strong> la imagen. La función encargada<strong>de</strong> realizar esta operación es cvThreshold, cuyo valor <strong>de</strong> umbral seleccionado ha sido 45,seleccionado tras realizar múltiples ensayos con los ví<strong>de</strong>os utilizados bajo un entorno controlado<strong>de</strong>finido. A continuación, se proce<strong>de</strong> a la <strong>de</strong>tección <strong>de</strong> contornos propiamente dicha, conla imagen resultante como entrada <strong>de</strong> la función cvStartFindContours. Mediante la funcióncvFindNextContour se recorren los contornos <strong>de</strong>tectados pero sólo se marcarán como válidosaquellos que superen un área estipulada <strong>de</strong> 150 píxeles (HAND CONTOUR STIPULATED),

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!