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 ...
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.