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 91Algoritmo 2 Detección <strong>de</strong> rostros1: double scale = FACE SCALED;2: IplImage *gray = NULL;3: IplImage *small img = NULL;4: CvSeq *faces = 0;5: si (!storage) entonces6: gray = cvCreateImage (cvSize (img.width,img.height), DEPTH, CHANNELS );7: small img = cvCreateImage (cvSize (cvRound (img.width/scale),cvRound(img.height/scale)), DEPTH, CHANNELS);8: storage = cvCreateMemStorage (0);9: si no10: cvClearMemStorage (storage);11: fin si12: cvCvtColor (img, gray, CV BGR2GRAY);13: cvResize (gray, small img, CV INTER LINEAR);14: faces = cvHaarDetectObjects (small img, casca<strong>de</strong>, storage, 1.1, 2,CV HAAR DO CANNY PRUNING, cvSize(HAAR WIDTH, HAAR HEIGHT));15: CvRect* r = (CvRect*) cvGetSeqElem (faces, i);16: faceCoords[0] = (r.x+r.width) * scale;17: faceCoords[1] = (r.y+r.height) * scale;18: faceCoords[2] = r.x * scale + faceCoords[0];19: faceCoords[3] = r.x * scale + faceCoords[1];20: cvSetImageROI(img, cvRect(faceCoords[0],faceCoords[1],faceCoords[2],faceCoords[3]));21: <strong>de</strong>tectEyes(img);22: <strong>de</strong>tectMouth(img);que es el área algo inferior al área <strong>de</strong> una mano en la imagen capturada. Aquellas áreas seleccionadasson, en un alto porcentaje, las manos <strong>de</strong>l personaje que signa, por lo que sonpintadas en rojo mediante la función cvDrawContours. Por último, se liberan recursos mediantela función cvEndFindContours para que no haya pérdidas <strong>de</strong> memoria en este proceso.4.3.2. Proceso <strong>de</strong> <strong>de</strong>tección <strong>de</strong>l movimiento con técnicas <strong>de</strong> Optical FlowEn un proceso paralelo al comentado en el apartado anterior se realiza la <strong>de</strong>tección <strong>de</strong>lmovimiento <strong>de</strong> brazos y <strong>de</strong> gestos faciales (ver Figura 4.6). Para ello se emplea una técnica<strong>de</strong> Visión por Computador llamada Optical Flow, y en particular, el algoritmo Piramidal<strong>de</strong> Lucas y Kana<strong>de</strong>. La i<strong>de</strong>a fundamental <strong>de</strong> esta técnica es que se basa en el movimientorelativo <strong>de</strong> los píxeles <strong>de</strong> una imagen cuando la cámara se <strong>de</strong>splaza con relación a un objetoque se encuentra en la escena enfocada.

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

Saved successfully!

Ooh no, something went wrong!