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),
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.
- Page 1:
UNIVERSIDAD DE CASTILLA-LA MANCHAES
- Page 5:
TRIBUNAL:Presidente:Vocal1:Vocal2:S
- Page 9:
ResumenSegún datos de la CNSE (Con
- Page 15:
AgradecimientosQuiero mostrar mi m
- Page 18 and 19:
XÍNDICE GENERAL4.3.2. Proceso de d
- Page 20 and 21:
XIIÍNDICE DE FIGURAS4.7. Diagrama
- Page 22 and 23:
XIVÍNDICE DE TABLAS
- Page 24 and 25:
XVILISTA DE ALGORITMOS
- Page 26 and 27:
2 Capítulo 1. IntroducciónLa leng
- Page 28 and 29:
4 Capítulo 1. IntroducciónPor otr
- Page 30 and 31:
6 Capítulo 1. Introducciónmódulo
- Page 32 and 33:
8 Capítulo 2. Objetivos del proyec
- Page 34 and 35:
10 Capítulo 2. Objetivos del proye
- Page 36 and 37:
12 Capítulo 3. Antecedentes, Estad
- Page 38 and 39:
14 Capítulo 3. Antecedentes, Estad
- Page 40 and 41:
16 Capítulo 3. Antecedentes, Estad
- Page 42 and 43:
Optical FlowRaúl Varas Martínez18
- Page 44 and 45:
20 Capítulo 3. Antecedentes, Estad
- Page 46 and 47:
22 Capítulo 3. Antecedentes, Estad
- Page 48 and 49:
24 Capítulo 3. Antecedentes, Estad
- Page 50 and 51:
26 Capítulo 3. Antecedentes, Estad
- Page 52 and 53:
28 Capítulo 3. Antecedentes, Estad
- Page 54 and 55:
30 Capítulo 3. Antecedentes, Estad
- Page 56 and 57:
y =x2+ 2x+ 5mediante el polinomio d
- Page 58 and 59:
34 Capítulo 3. Antecedentes, Estad
- Page 60 and 61:
36 Capítulo 3. Antecedentes, Estad
- Page 62 and 63:
38 Capítulo 3. Antecedentes, Estad
- Page 64 and 65: 40 Capítulo 3. Antecedentes, Estad
- Page 66 and 67: 42 Capítulo 3. Antecedentes, Estad
- Page 68 and 69: 44 Capítulo 3. Antecedentes, Estad
- Page 70 and 71: 46 Capítulo 3. Antecedentes, Estad
- Page 72 and 73: 48 Capítulo 3. Antecedentes, Estad
- Page 74 and 75: 50 Capítulo 3. Antecedentes, Estad
- Page 76 and 77: 52 Capítulo 3. Antecedentes, Estad
- Page 78 and 79: 54 Capítulo 3. Antecedentes, Estad
- Page 80 and 81: 56 Capítulo 3. Antecedentes, Estad
- Page 82 and 83: 58 Capítulo 3. Antecedentes, Estad
- Page 84 and 85: trices para concatenarlas y multipl
- Page 86 and 87: 62 Capítulo 3. Antecedentes, Estad
- Page 88 and 89: 64 Capítulo 3. Antecedentes, Estad
- Page 90 and 91: 66 Capítulo 3. Antecedentes, Estad
- Page 92 and 93: 68 Capítulo 3. Antecedentes, Estad
- Page 94 and 95: 70 Capítulo 3. Antecedentes, Estad
- Page 96 and 97: 72 Capítulo 3. Antecedentes, Estad
- Page 98 and 99: 74 Capítulo 3. Antecedentes, Estad
- Page 100 and 101: 76 Capítulo 3. Antecedentes, Estad
- Page 102 and 103: 78 Capítulo 3. Antecedentes, Estad
- Page 104 and 105: 80 Capítulo 3. Antecedentes, Estad
- Page 106 and 107: 82 Capítulo 4. Metodología de Tra
- Page 108 and 109: 84 Capítulo 4. Metodología de Tra
- Page 110 and 111: 86 Capítulo 4. Metodología de Tra
- Page 112 and 113: 88 Capítulo 4. Metodología de Tra
- Page 116 and 117: 92 Capítulo 4. Metodología de Tra
- Page 118 and 119: 94 Capítulo 4. Metodología de Tra
- Page 120 and 121: 96 Capítulo 4. Metodología de Tra
- Page 122 and 123: 98 Capítulo 4. Metodología de Tra
- Page 124 and 125: 100 Capítulo 4. Metodología de Tr
- Page 126 and 127: 102 Capítulo 4. Metodología de Tr
- Page 128 and 129: 104 Capítulo 4. Metodología de Tr
- Page 130 and 131: 106 Capítulo 4. Metodología de Tr
- Page 132 and 133: 108 Capítulo 4. Metodología de Tr
- Page 134 and 135: 110 Capítulo 4. Metodología de Tr
- Page 136 and 137: 112 Capítulo 4. Metodología de Tr
- Page 138 and 139: 114 Capítulo 5. ResultadosTodas la
- Page 140 and 141: 116 Capítulo 5. ResultadosVídeos
- Page 142 and 143: 118 Capítulo 5. Resultados5.2. Res
- Page 144 and 145: 120 Capítulo 5. Resultados• Boca
- Page 146 and 147: 122 Capítulo 5. ResultadosVídeos
- Page 148 and 149: 124 Capítulo 6. Conclusiones y Pro
- Page 150 and 151: 126 Capítulo 6. Conclusiones y Pro
- Page 152 and 153: 128 Capítulo 6. Conclusiones y Pro
- Page 154 and 155: 130 Capítulo 6. Conclusiones y Pro
- Page 156 and 157: 132 Capítulo 6. Conclusiones y Pro
- Page 158 and 159: 134 Capítulo A. DiagramasUSERcallb
- Page 160 and 161: 136 Capítulo B. Manual de usuarioF
- Page 162 and 163: 138 Capítulo B. Manual de usuarioM
- Page 164 and 165:
140 Capítulo B. Manual de usuarioL
- Page 166 and 167:
142 Capítulo B. Manual de usuarioP
- Page 168 and 169:
144 Capítulo C. Manual de Instalac
- Page 170 and 171:
146 Capítulo D. Código fuente/src
- Page 172 and 173:
148 Capítulo D. Código fuente77 i
- Page 174 and 175:
150 Capítulo D. Código fuente113
- Page 176 and 177:
152 Capítulo D. Código fuente233
- Page 178 and 179:
154 Capítulo D. Código fuente3533
- Page 180 and 181:
156 Capítulo D. Código fuente473
- Page 182 and 183:
158 Capítulo D. Código fuente593
- Page 184 and 185:
160 Capítulo D. Código fuente713
- Page 186 and 187:
162 Capítulo D. Código fuente833
- Page 188 and 189:
164 Capítulo D. Código fuente43 /
- Page 190 and 191:
166 Capítulo D. Código fuente163
- Page 192 and 193:
168 Capítulo D. Código fuente7 *
- Page 194 and 195:
170 Capítulo D. Código fuente124
- Page 196 and 197:
172 BIBLIOGRAFÍA[17] OpenGL Archit