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.

4.3. Segmentación <strong>de</strong> imágenes y captura <strong>de</strong> movimiento 2D 89Algoritmo 1 Captura <strong>de</strong> ví<strong>de</strong>o1: CvCapture *capture = NULL;2: IplImage *frame, frame copy = NULL;3: storage = cvCreateMemStorage(0);4: capture = cvCaptureFromAVI(inputFile);5: si (capture) entonces6: initializeFaceCapture();7: mientras (cvGrabFrame(capture)) hacer8: frame = cvRetrieveFrame(capture);9: frame copy = cvCreateImage(cvSize(frame.width, frame.height), IPL DEPTH 8U,frame.channels);10: <strong>de</strong>tect face eyes mouth(frame copy);11: find and draw contours(frame copy);12: fin mientras13: cvReleaseImage(frame copy);14: cvReleaseCapture(capture);15: fin siLa búsqueda <strong>de</strong> rostros, ojos y boca se realiza mediante un clasificador Haar para cadauno <strong>de</strong> ellos. Los clasificadores son propios <strong>de</strong> OpenCV y ya han sido previamente entrenados.Tras las búsqueda <strong>de</strong> cada zona en cada imagen se <strong>de</strong>vuelve un array <strong>de</strong> punteros aestructuras don<strong>de</strong> se almacena la información <strong>de</strong> cada zona <strong>de</strong>tectada. Esto permite hacer recortes<strong>de</strong> imagen mediante selección <strong>de</strong> Regiones <strong>de</strong> Interés (ROI), en el caso <strong>de</strong>l rostro, opintar la zona <strong>de</strong>tectada en cada frame, en el caso <strong>de</strong> ojos y boca.El algoritmo <strong>de</strong> <strong>de</strong>tección <strong>de</strong> rostros (equivalente para el <strong>de</strong> ojos y boca) emplea unafunción proporcionada por las bibliotecas <strong>de</strong> OpenCv llamada cvHaarDetectObjects, la cualutiliza un clasificador almacenado en un fichero en formato xml para <strong>de</strong>tectar caras en unaimagen. En este caso se trata <strong>de</strong> caras frontales, dado que el clasificador esta entrenado conesa funcionalidad.Se hace uso <strong>de</strong> la función cvCvtColor (const CvArr* src, CvArr* dst, int co<strong>de</strong>) para transformarla imagen original a escala <strong>de</strong> grises y la función cvResize (CvArr* src, CvArr* dst, intinterpolation) para reducirla <strong>de</strong> tamaño e invocar al clasificador para <strong>de</strong>tectar la cara en estecaso, la cual será extraída como región <strong>de</strong> interés (ROI) para posteriormente <strong>de</strong>tectar la bocay los ojos en una imagen más pequeña y con sólo información <strong>de</strong>l rostro. Para la reducción

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

Saved successfully!

Ooh no, something went wrong!