200
TheAteR 3D : Algoritmo de conversi´ on para videos teatrales Carlos Aar´on Campos Sol´ ıs Jorge Edmundo Villuendas Hern´andez Escuela Superior de Ingenier´ ıa Mec´anica y El´ ectrica Departamento de Ingenier´ ıa en Comunicaciones y Electr´onica Instituto Polit´ ecnico Nacional TESIS Para obtener el t´ ıtulo de Ingeniero en Comunicaciones y Electr´ onica 4 de Marzo del 2015

TheAteR3D: Algoritmo de conversi´on para videos teatrales · 2017-05-02 · TheAteR3D: Algoritmo de conversi´on para videos teatrales Carlos Aar´on Campos Sol´ıs Jorge Edmundo

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

TheAteR3D: Algoritmo deconversion para videos teatrales

Carlos Aaron Campos SolısJorge Edmundo Villuendas Hernandez

Escuela Superior de Ingenierıa Mecanica y Electrica

Departamento de Ingenierıa en Comunicaciones y Electronica

Instituto Politecnico Nacional

TESIS

Para obtener el tıtulo de

Ingeniero en Comunicaciones y Electronica

4 de Marzo del 2015

Asesores Dr. Jesus Jaime Moreno EscobarTecnicos M. en C. Beatriz Adriana Jaime Fonseca

Academia de ComputacionDepartamento Academico de Ingenierıa en Comunicaciones y ElectronicaEscuela Superior de Ingenierıa Mecanica y Electrica

Instituto Politecnico Nacional

Asesor Dr. Jesus Jaime Moreno EscobarMetodologico

Academia de ComputacionDepartamento Academico de Ingenierıa en Comunicaciones y ElectronicaEscuela Superior de Ingenierıa Mecanica y Electrica

Instituto Politecnico Nacional

Jurado Presidente: M. en C. Jafeth Ascension Alonso CarreonEvaluador Secretario: Ing. Marıa Isabel Romero Zuniga

3er Vocal: M. en C. Fernando Noya Chavez

Academia de ComputacionDepartamento Academico de Ingenierıa en Comunicaciones y ElectronicaEscuela Superior de Ingenierıa Mecanica y Electrica

MetodologicoInstituto Politecnico Nacional

This document was typeset by the author using LATEX2ε.

The research described in this book was carried out at Escuela Superior de Inge-nierıa Mecanica y Electrica, Instituto Politecnico National of Mexico.

Copyright c⃝ 2015 by Carlos Campos, and Jorge Villuendas. All rights re-served. No part of this publication may be reproduced or transmitted in any formor by any means, electronic or mechanical, including photocopy, recording, or any in-formation storage and retrieval system, without permission in writing from the authors.

Printed in Mexico

A Carlos Campos Fermın y Gudelia Solıs Repizo

Carlos Campos

A Jorge Luis Villuendas Hernandez y Jose Ernesto VilluendasHernandez

Jorge Villuendas

Agradecimientos

Por esos momentos que no encontraba solucion ni direccion en el trayecto de micarrera, noches de desvelo frente a la computadora para poder entregar trabajosal dıa siguiente. Pasar todo el dıa en la escuela y vivir dıas de estres con misamigos por terminar tareas, a pesar de eso nunca faltaron buenos momentos ydiversion.

Por haberme encontrado en mi camino a excelentes profesores que me ensenaronno solo conocimientos de la carrera, me dejaron aprendizajes cuando mas lo nece-site, me ensenaron que por mas que parezca que ya nada tiene solucion debemosver mas alla y entregarnos con todo.

A mis padres porque estuvieron en los momentos cuando mas lo necesite sinimportar nada, dando palabras de aliento, ayudando en tareas, proyectos y hac-erme saber que no estaba solo. Por esos reganos que en algun momento llegue anecesitar.

A Borolis porque me dio esas chispas de diversion en los momentos indi-cados, levantarse en las mananas muy temprano y que viera que no me faltaranada, hacer mis problemas suyos e intentar resolverlos juntos. Dejandome unaensenanza la cual hoy en dıa la tengo presente, no dejar de intentarlo hasta quepueda lograrlo.Gracias por todo.

Al Abuelo que siempre tuvo palabras para mı, total apoyo academico, solobastaba decir que me ayudara para que comenzara a investigar e intentarme ex-plicar. Por todos esos dıas que pudiendo entrar mas tarde a sus labores, nosacompanamos dıa con dıa con tal que no me fuera solo. Por esas platicas tanextensas pero con una gran ensenanza de vida.Te quiero.

A mi hermana Karla G., que tuve su apoyo incondicional en todo momento,aportandome sus conocimientos, experiencias y aprendizajes de vida. Ensenarmeque nada es facil y que verdaderamente lo que vale la pena cuesta. Agradezco suforma de ser conmigo, ya que gracias a eso hoy para mı es un modelo a seguir.Gracias por tu compania

Y por ultimo pero no menos importante, a mi amigo y hermano Adrian,haciendo notar su basto apoyo academico que gracias a el he logrado muchas

i

cosas de las que no tenıa idea que podıa hacer, siempre tuvo palabras para mi,palabras que finalmente me ensenaron el camino que debıa seguir.Gracias por todo.

Carlos Aaron Campos SolısEscuela Superior de Ingenierıa Mecanica y Electrica, Unidad Zacatenco

Instituto Politecnico Nacional, Mexico, 2015

ii

Quiero

Quiero agradecer a todos mis maestros ya que ellos me ensenaron valorar losestudios y a superarme cada dıa.

Tambien agradezco a mi padre Jorge Luis porque el estuvo en los dıas masdifıciles de mi vida como estudiante, el que me alento en todo momento y el queme apoyo en esos dıas de desvelo esperando a que terminara, a mi hermano JoseErnesto porque es la chispa de diversion que me ayudaba a despejar mi mente,la distraccion que me ayudaba de manera inconsciente y sacar las mejores ideaspara esos problemas escolares.

Y agradezco a Dios por darme la salud que tengo, por tener una cabeza conla que puedo pensar muy bien y ademas un cuerpo sano y una mente de bien.

Estoy seguro que mis metas planteadas daran fruto en el futuro y por endeme debo esforzar cada dıa para ser mejor en la escuela y en todo lugar sin olvidarel respeto que engrandece a la persona.

Gracias por todo.

Jorge Edmundo Villuendas HerandezEscuela Superior de Ingenierıa Mecanica y Electrica, Unidad Zacatenco

Instituto Politecnico Nacional, Mexico, 2015

iii

iv

Abstract

The purpose of this document is to convert videos theatrical a second dimension (2D)to a third dimension (3D) processing from a single camera captured images. To doso is to study the principles of human vision particularly stereoscopic vision, tools togenerate effect and as a digital image is formed.

To bring the conversion process, it is intended to carry out the respective develop-ment of an algorithm capable of performing the process to convert a 3D scenario calledTheAteR3D, this algorithm is based on image processing or individual frames . Initiallyobtaining a 2D video is broken down into frames and processes for the conversion of3D final video will be. To do this you need to know to make the conversion algorithm,which are comprised of chapters.

In chapter one the problems afflicting the culture that exists in Mexico, mainly thetheater will be, surveys were made by DANE in 2011, and was observed as decreasedthe cultural habit to form the person grows will be. Issues that arise with 3D tech-nology and difficult access to it, and misuse of technology especially the internet. Thedevelopment of an algorithm called 3D1 which aims to give more public access tothis technology at low cost is proposed. So, meet the overall objectives and specificalgorithm, the hypothesis and finally the project scope.

Will give a brief introduction by historical evidence of human vision, its structureand how it works, stereoscopic vision and its beginnings, digital tools to see the 3Deffect as skin and pedestrian detectors, and the first devices as in chapter two the stere-oscopes.

In chapter three of them will present the tools to perform the algorithm TheAteR3D

as textbf MatLab and textbf ffmpeg, visualization techniques, scanned images, gog-gles, helmet to see the 3D effect.

v

In chapter four will be released algorithm development TheAteR3D basis of thepreceding chapters, we will see further what is and how the textbf MatLab tool isused, textbf ffmpeg detector pedestrian map generation gap and then generate thestereo pair and get a composite 3D anaglyph image, finally converting the sequence ofvideo frames.

In chapter five experiments with the algorithm will take to determine the degree ofpublic acceptance, particularly quality experience that is targeted for 15-25 years.

Finally in chapter six the conclusions will be discussed based on the experimen-tal results, therefore providing firm mathematical basis for accepting or rejecting thealgorithm TheAteR3D.

vi

Resumen

La finalidad del presente documento es realizar la conversion de videos teatrales de unasegunda dimension (2D) a una tercera dimension (3D), a partir del procesamiento deimagenes capturadas con una sola camara. Para ello, se pretende estudiar los princi-pios de la vision humana como es el efecto de la Induccion Cromatica y en particularla vision estereoscopica, herramientas para generar el efecto y como se constituye unaimagen digital.

Con el fin de llevar el proceso de conversion, se pretende llevar a cabo el respectivodesarrollo de un algoritmo capaz de realizar el proceso para convertir a un escenario 3Dllamado TheAteR3D, este algoritmo se basara en el tratamiento de imagenes o fotogra-mas individuales. Obteniendo inicialmente un video 2D se fragmentara en fotogramasy se llevaran procesos para la conversion 3D del video final. Para ello, es necesarioconocer el algoritmo de renderizacion DIBR (Depth Image Based Rendering).

En el capıtulo uno se vera la problematica que aqueja a la cultura que existe enMexico, principalmente al teatro, se veran encuestas que se hicieron por DANE en el2011 y se observara como ha disminuido el habito cultural con forme la persona crece.Ademas, problematicas que surgen con la tecnologıa 3D y el difıcil acceso a ella, el maluso de la tecnologıa especialmente el internet. Se propone el desarrollo de un algoritmollamado TheAteR3D que pretende dar acceso a mas publico a este tipo de tecnologıa abajos costos. Ası, conocer los objetivos general y particulares del algoritmo, la hipotesisy finalmente el alcance del proyecto.

Ası, en el capıtulo dos se dara una breve introduccion mediante datos historicos dela vision humana, su estructura y como funciona, la vision estereoscopica y sus inicios.Ademas, las herramientas digitales para observar el efecto 3D como detectores de piel,peaton y los primero dispositivos como los estereoscopios de wendell y Wheatstone.

Despues, en el capıtulo tres se daran a conocer las herramientas para realizar el al-

vii

goritmo TheAteR3D como, MatLab y ffmpeg, tecnicas de visualizacion y la mediciona efectos visuales como son la de asimilacion y contraste.

En el capıtulo cuatro se dara a conocer el desarrollo del algoritmo TheAteR3D

basandose de las capıtulos anteriores, donde se conocera a profundidad en que consis-ten las herramienta MatLab y ffmpeg, detector de peaton, generacion del mapa dedisparidad para despues generar el par estereoscopico y obtener una imagen compuestael cual se llamapra par esteroescopico para que finalmente se obtenga la imagen 3Danaglifa, con la imagen compuesta se convertira la secuencia de fotogramas en video.

En el capıtulo cinco se llevaran experimentos con el algoritmo para conocer el gradode aceptacion del publico, calidad de experiencia particularmente a que va dirigida laaplicacion TheAteR3D a personas jovenes.

Finalmente en el capıtulo seis se expondran las conclusiones, basandose de losresultados experimentales, como las aportaciones y trabajos a futuro del algoritmoTheAteR3D.

viii

ix

GLOSARIO

Glosario

AMR Audio Modem Riser.

Anaglifo Recurso para producir imagenes con efecto tridimensionala partir de imagenes bidimensionales en dos colores.

AVI Audio Video Interleave, Intercalado de Audio y Vıdeo.

CCD Charge Coupled Device, Dispositivo de Carga Acoplada.

CFA Color filter array, Arreglo de Filtros de color

CIWaM Chromatic Induction Wavelet Model, Modelo de Induccion Cromaticabasado en Wavelet.

CPU Central Processing Unit, Unidad Central de Proceso.

DANE Departamento Administrativo Nacional de la Estadistica.

DIBR Depth Image Based Rendering, Profundidad de la imagen basada en larenderizacion.

DM Disparity Map, Mapa de Disparidad.

FLV Flash Video, Vıdeo en formato Flash.

HDM Head Mounted Display, Pantalla montada en la cabeza.

LCD Liquid Crystal Display, Pantalla de Cristal Lıquito.

MPEG-1 Moving Picture Expert Group, Grupo de Trabajo de Expertos deimagenes en movimineto.

MPI Message Passing Interface, Interfaz de Paso de Mensajes.

QoE Quality of Experience, Calidad de la Experiencia.

OpenMP Open Multiprocessing, Multiprocesamiento Abierto.

SPMD Single Program, Multiple Data , Programa, Multiples Datos.

WAV Formato de audio de forma de onda tambien conocido.

WDT Discrete Wavelet Transform, Transformada Wvelet Discreta.x

GLOSARIO

xi

GLOSARIO

xii

Contenido

Lista de Figuras xv

Lista de Tablas xix

1 Introduccion 11.1 Planteamiento del problema . . . . . . . . . . . . . . . . . . . . . 11.2 Justificacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Hipotesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.4.1 General . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4.2 Particulares . . . . . . . . . . . . . . . . . . . . . . . . . . 4

1.5 Alcance del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . 51.6 Tesis del Proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

2 Elementos de un sistema 3D 72.1 Ojo Humano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

2.1.1 Fisiologıa y Descripcion . . . . . . . . . . . . . . . . . . . 72.1.2 Vision estereoscopica . . . . . . . . . . . . . . . . . . . . . 92.1.3 Importancia en la vida humana . . . . . . . . . . . . . . . 10

2.2 Deteccion de caracterısticas humanas . . . . . . . . . . . . . . . . 132.2.1 Deteccion de piel . . . . . . . . . . . . . . . . . . . . . . . 13

2.2.1.1 Modelos No-Parametricos . . . . . . . . . . . . . 142.2.1.2 Modelo de color Parametricos . . . . . . . . . . . 16

2.2.2 Deteccion de peaton . . . . . . . . . . . . . . . . . . . . . 172.3 Tecnicas de visualizacion 3D . . . . . . . . . . . . . . . . . . . . . 19

2.3.1 Generalidades . . . . . . . . . . . . . . . . . . . . . . . . . 192.3.2 Problematica . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4 Optimizacion del tiempo de procesamiento. . . . . . . . . . . . . . 22

3 Imagen 3D/Estereoscopica 253.1 Imagen digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253.2 Video Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283.3 Captura de Imagenes 3D . . . . . . . . . . . . . . . . . . . . . . . 30

3.3.1 Captura de una imagen . . . . . . . . . . . . . . . . . . . . 303.3.2 Par Estereoscopico . . . . . . . . . . . . . . . . . . . . . . 323.3.3 Ubicacion de camaras estereoscopicas . . . . . . . . . . . . 34

3.4 Tecnicas de visualizacion estereoscopica . . . . . . . . . . . . . . . 353.4.1 Tecnica Anaglifa . . . . . . . . . . . . . . . . . . . . . . . 363.4.2 Tecnica de Polarizacion . . . . . . . . . . . . . . . . . . . 38

xiii

CONTENIDO

3.4.3 Tecnica Infitec . . . . . . . . . . . . . . . . . . . . . . . . 393.4.4 Tecnica LCD . . . . . . . . . . . . . . . . . . . . . . . . . 393.4.5 Tecnica Casco HMD . . . . . . . . . . . . . . . . . . . . . 40

3.5 Procesamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . 413.5.2 Representacion y codificacion . . . . . . . . . . . . . . . . 413.5.3 Sintetizacion . . . . . . . . . . . . . . . . . . . . . . . . . . 423.5.4 Espacio de color percibido . . . . . . . . . . . . . . . . . . 433.5.5 Transformada Wavelet . . . . . . . . . . . . . . . . . . . . 453.5.6 Contraste Visual . . . . . . . . . . . . . . . . . . . . . . . 473.5.7 Induccion Cromatica . . . . . . . . . . . . . . . . . . . . . 483.5.8 Aplicando el algoritmo DIBR . . . . . . . . . . . . . . . . 50

3.6 Herramientas para procesar DIBR . . . . . . . . . . . . . . . . . . 533.6.1 MatLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 533.6.2 FFMPEG . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4 Algoritmo TheAteR3D 594.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 594.2 Descomposicion del video . . . . . . . . . . . . . . . . . . . . . . . 604.3 Reconocimiento del escenario 3D . . . . . . . . . . . . . . . . . . 624.4 Generacion del par estereoscopico . . . . . . . . . . . . . . . . . . 654.5 Representacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 674.6 Generacion del vıdeo final . . . . . . . . . . . . . . . . . . . . . . 704.7 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

5 Resultados Experimentales 795.1 Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795.2 Definicion del experimento . . . . . . . . . . . . . . . . . . . . . . 795.3 Procedimiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805.4 Encuesta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815.5 Grado de aceptacion . . . . . . . . . . . . . . . . . . . . . . . . . 82

6 Conclusiones 896.1 Conclusiones Finales . . . . . . . . . . . . . . . . . . . . . . . . . 896.2 Contribuciones . . . . . . . . . . . . . . . . . . . . . . . . . . . . 896.3 Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

A Encuesta de consumo cultural 91

B Codigo de TheAteR3D 105B.1 Descomposicion del video a imagenes . . . . . . . . . . . . . . . . 105B.2 dibr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106B.3 Deteccion Peatones . . . . . . . . . . . . . . . . . . . . . . . . . . 110B.4 Composicion del video a partir de imagenes . . . . . . . . . . . . 110

C Interface de TheAteR3D 113

Referencias 171

Indice 175

xiv

Lista de Figuras

1.1 Teatro vs Eventos . . . . . . . . . . . . . . . . . . . . . . . . . . . 11.2 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21.3 Lentes anaglifos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.4 Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.5 Tecnologıa 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4

2.1 Ojo humano. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82.2 Estructura del ojo Humano . . . . . . . . . . . . . . . . . . . . . 92.3 Base de la vision Estereoscopica. . . . . . . . . . . . . . . . . . . . 102.4 Vision Estereoscopica. . . . . . . . . . . . . . . . . . . . . . . . . 102.5 Cavernas de Lascaux . . . . . . . . . . . . . . . . . . . . . . . . . 112.6 Estereoscopio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122.7 Camara de Brewster. . . . . . . . . . . . . . . . . . . . . . . . . . 122.8 Estereoscopio de Wendell. . . . . . . . . . . . . . . . . . . . . . . 132.9 Deteccion en movimiento. . . . . . . . . . . . . . . . . . . . . . . 182.10 Deteccion por forma. . . . . . . . . . . . . . . . . . . . . . . . . . 192.11 Visualizacion volumetrica. . . . . . . . . . . . . . . . . . . . . . . 192.12 Visualizacion estereoscopica. . . . . . . . . . . . . . . . . . . . . . 202.13 Mapa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.14 Peso de la imagen . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.15 Computo paralelo. . . . . . . . . . . . . . . . . . . . . . . . . . . 24

3.1 Modelo RGB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263.2 Estructura de una imagen digital. . . . . . . . . . . . . . . . . . . 273.3 Acercamiento de la imagen . . . . . . . . . . . . . . . . . . . . . . 273.4 Canales del pixel . . . . . . . . . . . . . . . . . . . . . . . . . . . 273.5 Video Digital . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 293.6 Filtro de colores. . . . . . . . . . . . . . . . . . . . . . . . . . . . 313.7 Sensor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 323.8 Suposicion de la segunda imagen . . . . . . . . . . . . . . . . . . 333.9 Par estereoscopico . . . . . . . . . . . . . . . . . . . . . . . . . . . 333.10 Modelo paralelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 343.11 Modelo convergente. . . . . . . . . . . . . . . . . . . . . . . . . . 353.12 Modelo de camara unica. . . . . . . . . . . . . . . . . . . . . . . . 353.13 Vision Estereoscopica. . . . . . . . . . . . . . . . . . . . . . . . . 363.14 Lentes anaglifos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.15 Anaglifo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373.16 Lentes polarizados . . . . . . . . . . . . . . . . . . . . . . . . . . 383.17 Lentes infitec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 393.18 Lentes LCD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.19 Casco HDM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

xv

LISTA DE FIGURAS

3.20 Proceso . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413.21 Camara Virtual. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.22 Disparidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.23 Percepcion de color. . . . . . . . . . . . . . . . . . . . . . . . . . . 443.24 Percepcion de color. . . . . . . . . . . . . . . . . . . . . . . . . . . 453.25 Descomposicion Wavelet . . . . . . . . . . . . . . . . . . . . . . . 473.26 Asimilacion y Contraste . . . . . . . . . . . . . . . . . . . . . . . 483.27 Efecto sombra . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.28 Disparidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493.29 Algoritmo dibr . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513.30 Sintetizacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 523.31 Mediante filtro pasa bajas gaussiano. . . . . . . . . . . . . . . . . 523.32 Escenario de extrapolacion. . . . . . . . . . . . . . . . . . . . . . 533.33 Relleno de agujeros. . . . . . . . . . . . . . . . . . . . . . . . . . . 533.34 Diagrama FFmpeg. . . . . . . . . . . . . . . . . . . . . . . . . . . 57

4.1 Algoritmo TheAteR3D . . . . . . . . . . . . . . . . . . . . . . . . 614.2 Fragmentacion del video. . . . . . . . . . . . . . . . . . . . . . . . 614.3 Codigo para fragmentar el video. . . . . . . . . . . . . . . . . . . 624.4 Imagen a video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.5 Reconocimiento del actor. . . . . . . . . . . . . . . . . . . . . . . 634.6 Peaton MatLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 634.7 Mapa de disparidad . . . . . . . . . . . . . . . . . . . . . . . . . . 644.8 Mapa de disparidad . . . . . . . . . . . . . . . . . . . . . . . . . . 644.9 Par estereoscopico. . . . . . . . . . . . . . . . . . . . . . . . . . . 654.10 Par estereo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 654.11 Par estereoscopico. . . . . . . . . . . . . . . . . . . . . . . . . . . 664.12 Par estereoscopico. . . . . . . . . . . . . . . . . . . . . . . . . . . 674.13 Imagen compuesta anaglifa. . . . . . . . . . . . . . . . . . . . . . 674.14 Imagen compuesta anaglifa. . . . . . . . . . . . . . . . . . . . . . 684.15 Imagen compuesta anaglifa. . . . . . . . . . . . . . . . . . . . . . 694.16 Imagen compuesta anaglifa. . . . . . . . . . . . . . . . . . . . . . 694.17 Lentes anaglifos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.18 Video final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 704.19 Video final . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 714.20 Bienvenida a TheAteR3D. . . . . . . . . . . . . . . . . . . . . . . 724.21 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 724.22 Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 734.23 Seccion 3D de la interface . . . . . . . . . . . . . . . . . . . . . . 734.24 Dispositivos compatibles. . . . . . . . . . . . . . . . . . . . . . . . 744.25 Formatos compatibles . . . . . . . . . . . . . . . . . . . . . . . . . 744.26 Conversion anaglifa o par estereo. . . . . . . . . . . . . . . . . . . 754.27 Computo paralelo. . . . . . . . . . . . . . . . . . . . . . . . . . . 764.28 Escenarios de la interface. . . . . . . . . . . . . . . . . . . . . . . 764.29 Reproduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774.30 Guardado de video final 3D . . . . . . . . . . . . . . . . . . . . . 77

5.1 Resultado ANOVA . . . . . . . . . . . . . . . . . . . . . . . . . . 845.2 Resultado ANOVA . . . . . . . . . . . . . . . . . . . . . . . . . . 84

A.1 Encuesta DANE pag.1 . . . . . . . . . . . . . . . . . . . . . . . . 91A.2 Encuesta DANE pag.2 . . . . . . . . . . . . . . . . . . . . . . . . 92A.3 Encuesta DANE pag.3 . . . . . . . . . . . . . . . . . . . . . . . . 92A.4 Encuesta DANE pag.4 . . . . . . . . . . . . . . . . . . . . . . . . 93

xvi

LISTA DE FIGURAS

A.5 Encuesta DANE pag.5 . . . . . . . . . . . . . . . . . . . . . . . . 93A.6 Encuesta DANE pag.6 . . . . . . . . . . . . . . . . . . . . . . . . 94A.7 Encuesta DANE pag.7 . . . . . . . . . . . . . . . . . . . . . . . . 94A.8 Encuesta DANE pag.8 . . . . . . . . . . . . . . . . . . . . . . . . 95A.9 Encuesta DANE pag.9 . . . . . . . . . . . . . . . . . . . . . . . . 95A.10 Encuesta DANE pag.10 . . . . . . . . . . . . . . . . . . . . . . . . 96A.11 Encuesta DANE pag.11 . . . . . . . . . . . . . . . . . . . . . . . . 96A.12 Encuesta DANE pag.12 . . . . . . . . . . . . . . . . . . . . . . . . 97A.13 Encuesta DANE pag.13 . . . . . . . . . . . . . . . . . . . . . . . . 97A.14 Encuesta DANE pag.14 . . . . . . . . . . . . . . . . . . . . . . . . 98A.15 Encuesta DANE pag.15 . . . . . . . . . . . . . . . . . . . . . . . . 98A.16 Encuesta DANE pag.16 . . . . . . . . . . . . . . . . . . . . . . . . 99A.17 Encuesta DANE pag.17 . . . . . . . . . . . . . . . . . . . . . . . . 99A.18 Encuesta DANE pag.18 . . . . . . . . . . . . . . . . . . . . . . . . 100A.19 Encuesta DANE pag.19 . . . . . . . . . . . . . . . . . . . . . . . . 100A.20 Encuesta DANE pag.20 . . . . . . . . . . . . . . . . . . . . . . . . 101A.21 Encuesta DANE pag.21 . . . . . . . . . . . . . . . . . . . . . . . . 101A.22 Encuesta DANE pag.22 . . . . . . . . . . . . . . . . . . . . . . . . 102A.23 Encuesta DANE pag.23 . . . . . . . . . . . . . . . . . . . . . . . . 102A.24 Encuesta DANE pag.24 . . . . . . . . . . . . . . . . . . . . . . . . 103

xvii

LISTA DE FIGURAS

xviii

Lista de Tablas

3.1 Valores numericos obtenidos de los colores primarios por cada pixelde la muestra tomada. . . . . . . . . . . . . . . . . . . . . . . . . 28

3.2 Filtro de Analisis y Sintesis 5/3. . . . . . . . . . . . . . . . . . . . 463.3 Filtro de Analisis y Sintesis 9/7. . . . . . . . . . . . . . . . . . . . 46

5.1 Datos recabados de las 30 personas. . . . . . . . . . . . . . . . . . 835.2 Datos recabados quitando las columnas que no tuvieron alteraciones. 855.3 Datos recabados de las personas que pertenecen al rango de edades. 86

xix

LISTA DE TABLAS

xx

Capıtulo 1

Introduccion

1.1 Planteamiento del problema

El habito a la cultura comienza a temprana edad, es cuando la personalidad y lasocializacion se forman. En Mexico, los habitos culturales en los jovenes carecen,en el caso del teatro, son una actividad desaprovechada dado que compite condiferentes medios de entretenimiento tales como: el cine, el futbol, los conciertosmusicales, internet, la television, etc. En Mexico, el teatro enfrenta serios pro-blemas tales como la falta de fomento y desarrollo por parte del gobierno, lo quereduce los recursos para producir una obra teatral dando como resultado falta depublico.

Figura 1.1: Encuesta realizada por DANE en el 2011, el consumo del Teatrocomparado con eventos masivos y/o cerrados. Anexo A

Ası, en el ano 2011 DANE (5) compara los diferentes medios de entreten-imiento tal como se muestran en la Figura 1.1. En este estudio se obtuvo que lamayor parte de los ninos y jovenes prefieren asistir a eventos masivos (conciertosy ferias) o lugares cerrados (cine o recitales de musica) que a obras teatrales.Tambien se observa que los ninos menores a 5 anos asisten mas a este tipo deeventos teatrales a comparacion de las personas de 12 anos o mas, es inexplicablela razon de este tipo de situaciones pero se piensa que es por la influencia de los

1

1. INTRODUCCION

padres. En cambio con las personas de mayores a 12 anos toman sus propias de-cisiones y por este factor cultural prefieran eventos masivos que una obra teatral.

Por otro lado, cabe mencionar que la capacidad que permite percibir el volu-men, distancia y profundidad de una imagen es la vision estereoscopica la cual deaquı en adelante sera llamada 3D/estereoscopica. La problematica que enfrentala tecnologıa digital estereoscopica o 3D digital es el costo de produccion y visu-alizacion, lo que lo hace inaccesible a todo publico, pagando ası costos elevadospor parte del espectador para tener acceso a dicha experiencia como se muestraen la Figura 1.2.

Figura 1.2: Recintos de proyecciones 3D son de altos costos y no accesibles a todopublico (29).

Otro problema del 3D digital es el tiempo de conversion o renderizacion delvideo y para solucionar esto se utilizara una herramienta llamada Computo Par-alelo. Dicha herramienta consiste en realizar una ejecucion de dos o mas procesosal mismo tiempo optimizando el uso de los procesadores de la computadora. Ası,esta herramienta hace que un programa se ejecute mas rapidamente porque exis-ten mas procesadores que trabajan en forma simultanea y coordinada en diferentespartes de un problema, lo que reducira el tiempo de conversion del video.

Debido al gran avance tecnologico que ha surgido en los ultimos anos, lacomputacion y el internet han crecido exponencialmente, siendo ası herramientasesenciales para la comunicacion entre individuos. Lamentablemente, en muchosde los casos es comun que no sean utilizadas de manera correcta por parte de losjovenes, dado que estos suelen centrarse principalmente en establecer contactos yla socializacion, olvidando aspectos importantes que ayuden a la formacion per-sonal.

2

1.2 Justificacion

1.2 JustificacionAtrayendo la atencion del publico llevando acabo proyecciones teatrales en unformato 3D digital. Al hacerlo estereoscopico anaglifo (filtrado de espectroscromaticos totalmente opuestos) reducirıa costos en la elaboracion de proyec-ciones, las cuales podran observar en cualquier tipo de monitor, pantalla o dispo-sitivo portatil. El efecto de filtrado de espectros cromaticos totalmente opuestosse observara con unos lentes anaglifos como los de la Figura 1.3.

Figura 1.3: Lentes anaglifos utilizados para visualizar imagenes 3D digital com-puestos por una mica color rojo y la otra color azul cyan (1).

Tomando en cuenta la problematica existente con el formato 3D digital se de-sarrollara un algoritmo TheAteR3D capaz de convertir videos de obras teatrales2D a 3D digital, con una calidad de experiencia (QoE) aceptable, esto es, la ex-periencia al observar el video y para el espectador sea de su agrado, adoptando latecnologıa 3D/estereodcopica. Con ello, se pretende dar acceso a nuevos publicos,principalmente jovenes entre 15 y 25 anos para los que esta destinado y ası dardifusion a las obras teatrales mediante la tecnologıa 3D dando representacionesde manera alternativa.

1.3 Hipotesis

Implementacion de la tecnologıa digital 3D apoyada de la computacion y con elinternet, permitiendo:

• Difusion.

• Calidad de experiencia.

• Costos accesibles.

Como se muestra en la Figura 1.4, el algoritmo TheAteR3D tiene como entradaun video 2D, en este caso una representacion teatral, el proceso es experimentar

3

1. INTRODUCCION

Figura 1.4: Proceso del algoritmo TheAteR3D.

un tratamiento por el algoritmo TheAteR3D y al final como salida se obtiene elvideo 3D final.

Figura 1.5: Tecnologıa 3D para representar videos de manera alternativa (2).

1.4 Objetivos

1.4.1 GeneralIncrementar la calidad de experiencia de videos teatrales mediante la aplicacionTheAteR3D enMatLab representandolos de manera alternativa y atraer a nuevospublicos de entre 15 a 25 anos.

1.4.2 Particulares

• Analizar los orıgenes del efecto 3D/estereoscopico.

• Exponer las herramientas y metodologıas necesarias para convertir un es-cenario 2D a uno 3D usando MatLab.

4

1.5 Alcance del Proyecto

• Procesar digitalmente un escenario 2D para su conversion a un escenario3D con la aplicacion TheAteR3D y algoritmos de vision 3D/estereoscopico.

• Estimar el grado de aceptacion en el publico del algoritmo TheAteR3D.

1.5 Alcance del Proyecto

La mayorıa de las personas son conscientes de la necesidad de adoptar 3D, perono desean abandonar la funcionalidad del 2D, siendo que la tercera dimensiones una tecnologıa que con el paso del tiempo ha ido creciendo exponencialmentepresentando nuevas experiencias visuales.

TheAteR3D busca aumentar la calidad de la experiencia de videos teatrales,siendo que es una forma alternativa de representar un video 3D/estereoscopicobasandose en la segunda dimension (ancho y alto). TheAteR3D agrega profundi-dad, dando otra representacion al video teatral y ası obtener una calidad de laexperiencia aceptable para el espectador.

Por otro lado, para desarrollar el algoritmo TheAteR3D es necesario conocerlos orıgenes de la tecnologıa 3D/estereoscopica, como ha evolucionado, los dife-rentes procesos y metodos que se emplea para lograr el efecto. En sus inicios fuepoco aceptada, dado que el espectador experimentaba molestias visuales, provo-cando mareos, dolores de cabeza, nauseas, etc.

Basandose en los antecedentes historicos TheAteR3D aumentarıa la calidad dela experiencia y darıa un nuevo aspecto a las representaciones de videos teatrales.

Existen diversos dispositivos o procedimientos que son utiles para realizar elefecto 3D, mas no todos son aptos o accesibles para el diseno de TheAteR3D. Ası,se buscarıa una aceptacion y accesibilidad hacia el publico. Para ello utilizaranlentes anaglifos, estos son de bajo costo y muy facil de adquirir en comparacioncon el casco 3D o lentes polarizados siendo estos ultimos de costo elevado y difıcilde conseguir.

Ası, el desarrollo de TheAteR3D procesara digitalmente un escenario en dosdimensiones a uno en tres dimensiones mediante la suposicion de una segundaimagen y provocar el efecto 3D.

El modelo empleado en la aplicacion de TheAteR3D para la captura de imagenes,es el modelo de camara unica, en el cual no existe la calibaracion espacial decamara, ya que de la imagen original izquierda se supone la imagen derecha paraobtener el par estereoscopico y todo esto es mediante la computacion. Ası mismoreduce los costos, ya que no es necesario usar dos camaras y es de mas facil accesoa jovenes que requieran convertir un video a 3D.

Con los experimentos aplicados a TheAteR3D se encontrara el grado aceptaciondel espectador al apreciar el video teatral codificado.

5

1. INTRODUCCION

1.6 Tesis del Proyecto

TheAteR3D se basara en la vision estereoscopica que es la facultad que tiene elojo humano de integrar las dos imagenes que esta viendo en una sola por mediodel cerebro.

Algunas de las tecnicas de desarrollo y visualizacion mas importantes en laactualidad son:

• Deteccion de piel.

• Deteccion de cara.

• Deteccion de peaton.

En vision por computadora existen aplicaciones que requieren el procesamientode imagenes de la piel humana.

El algoritmo TheAteR3D emplea el color de las estructuras de la piel diferen-ciando efectos de sombreado, iluminacion y distorsion separando el fondo con ladeteccion de la piel, esto generara el efecto estereoscopico y se aprecia mediantelentes anaglifos.

Por otro lado, el computo paralelo juega un papel importante en el desarrollode TheAteR3D ya que optimiza el proceso de tratamiento de las imagenes, re-duciendo el tiempo de procesamiento, siendo que los procesadores multinucleo yla programacion en paralelo estan presente en todas partes.

Las imagenes que forman el par estereoscopico se representan con imagenessuperpuestas, utilizando dos colores complementarios. Se visualizan a traves delentes con un filtro de diferente color para cada ojo. De esta manera, el efectoestereoscopico TheAteR3D proyecta representaciones de videos teatrales provo-cando profundidad dando un aspecto alternativo en la calidad de la experiencia.

6

Capıtulo 2

Elementos de un sistema 3D

2.1 Ojo Humano

2.1.1 Fisiologıa y Descripcion

El ojo es un organo que detecta la luz siendo la base del sentido de la vista. Secompone de un sistema sensible a los cambios de luz, capaz de transformar estosen impulsos nerviosos. Los como las especies animales no hacen mas que detectarsi los alrededores estan iluminados u oscuros. Existen con mayor complejidadcomo son el ojo humano. (15)

Las partes del ojo son esenciales para la existencia humana porque gracias aellas se capta, percibe y encuentran las imagenes percibidas. En la mayorıa delos vertebrados y algunos moluscos, el ojo funciona proyectando imagenes a unaretina sensible a la luz, donde se detecta y se transmite a traves del nervio opticoun impulso nervioso. Una caracterıstica del ojo humano es aproximadamenteesferico.

Las partes mas importantes del ojo humano en su parte exterior son:

• La cornea.

• El iris.

• La pupila.

• El cristalino.

El organo de la vision esta compuesto por los parpados, los globos oculares, elaparato lagrimal y los musculos oculares externos, como se observa en la Figura2.1. La participacion de ambos ojos se conoce como vision binocular y permiteapreciar las imagenes en tres dimensiones. El globo ocular mide unos 25mm dediametro y se mantiene en su posicion gracias a los musculos oculares. Es en-vuelto por una membrana compuesta de varias capas.

7

2. ELEMENTOS DE UN SISTEMA 3D

Figura 2.1: Organo de la vision visto desde el exterior (30).

La capa externa, llamada esclerotica, es espesa, resistente y de color blanco.La capa media, coroides, contiene abundantes vasos sanguıneos. La capa internase llama retina y en ella se encuentran las celulas sensibles a la luz, es decir,los bastones y los conos. La parte anterior del globo ocular esta cubierta por lacornea, una membrana transparente y resistente que carece de vasos sanguıneos.

De la misma manera, las partes mas importantantes del ojo humano en suparte interior son:

• La cornea.

• El iris.

• La pupila.

• Elcristalino.

Alrededor de la cornea esta la conjuntiva. Por detras de la cornea se encuen-tra la camara anterior, limitada por el iris y la pupila. Detras de la pupila seencuentra el cristalino, el cuerpo ciliar y la camara posterior. La camara anterioresta llena de un lıquido transparente, el humor acuoso, que humedece el cristalinoy garantiza su nutricion. La camara posterior esta rellena de otro liquido coloidalllamado humor vıtreo, que mantiene la tension del interior del ojo. El iris estaformado por una fina red de fibras conjuntivas, o estoma, provista de numerososvasos sanguıneos y de los musculos que controlan la dilatacion y la contraccionde la pupila, Figura 2.2.

El ojo recibe los estımulos de los rayos de luz procedentes del entorno y lostransforman en impulsos nerviosos. Estos impulsos llegan hasta la corteza visualdel cerebro, donde se decodifican, se convierten y se interpretan como imagenes.La vista es uno de los cinco sentidos que permite comprender el mundo. Enuna analogıa con una camara analogica, la pupila es el diafragma del ojo. Losmusculos del musculo ciliar que tienen forma circular y de radio, la abren o lacierran en funcion de la luminosidad.

Para que los rayos de luz se enfoquen, se deben refractar. La cantidad derefraccion requerida depende de la distancia del objeto que se ve. Un objetodistante requerira menos refraccion que uno mas cercano. La mayor parte de la

8

2.1 Ojo Humano

Figura 2.2: Estructura del ojo humano (10).

refraccion ocurre en la cornea, que tiene una curvatura fija. El resto de la re-fraccion requerida se da en el cristalino. Al envejecer, el ser humano va perdiendoesta capacidad de ajustar el enfoque, deficiencia conocida como presbicia o vistacansada.

Basandose en la estructura del ojo y el funcionamiento que realiza al ver, esposible apreciar dos diferentes enfoques de un mismo escenario u objeto en ter-cera dimension enganando al cerebro, a esto se llama vision estereoscopica.

2.1.2 Vision estereoscopica

El principio basico de la vision estereoscopica, con dos imagenes en diferentesangulos de separacion que al momento de procesarlas se genera la vision estere-oscopica.(Figura 2.3) (13)

Ası, la estereoscopıa es la capacidad de procesar informacion visual tridimen-sional y crear la ilusion de profundidad del entorno. Entonces la posicion diferentede los ojos hace que cada una de sus retinas capte una imagen ligeramente distintade la realidad que tienen delante. El paralelaje o mejor conocido como parallaxson las pequenas diferencias que se procesan en el cerebro para calcular la distan-cia a la que se encuentran los objetos de un entorno. El calculo de las distanciassitua los objetos en el espacio tridimensional, obteniendo una sensacion de pro-fundidad. El angulo ligeramente distinto de las dos imagenes se presenta a cadaojo por separado, con ello el cerebro podra reconstruir la distancia y por lo tantola sensacion de tercera dimension, como se muestra en la Figura 2.4. Digital-mente, la ilusion de la profundidad en una fotografıa o un vıdeo bidimensional, secrea presentando una imagen ligeramente diferente para cada ojo. Toda pantallao proyector 3D utiliza este metodo para visualizar imagenes 3D o estereoscopicas.

9

2. ELEMENTOS DE UN SISTEMA 3D

Figura 2.3: (38) Imagen izquierda y derecha en diferentes angulos de separacion.

Figura 2.4: (22) Vision Estereoscopica.

2.1.3 Importancia en la vida humana

La visualizacion de imagenes estereoscopicas en la humanidad se remontan a losprimeros pintores hace 16000 anos, estos dejaron en las cavernas de Lascaux (17)plasmadas representaciones de ciervos, bufalos u otras escenas de animales, queal ser observadas bajo La luz tenue de la antorcha, pueden tomar una calidadtridimensional, Figura 2.5.

La siguiente noticia de la que se tiene referencia en el mundo de la estereo-scopıa, son los trabajos realizados por el matematico griego Euclides en el siglo

10

2.1 Ojo Humano

Figura 2.5: (32) Pinturas antiguas en las cavernas Lascaux.

III antes de Cristo (295 A.C.). En su tratado Titulado Opctica, intenta encontraruna relacion entre la vision estereoscopica y el hecho de que los seres humanosdispongan de dos ojos.

En el siglo II despues de Cristo, el medico griego Galeno describirıa tambienlo que supuso una profundizacion de una teorıa razonada de la vision de la pers-pectiva a traves de los dos ojos. Supo, por observacion, que si se cerraba un ojo,la imagen del entorno cambiaba ligeramente.

En 1838 gracias a la inventiva del fısico escoces Charles Wheatstone quiendescribio el fenomeno de la vision tridimensional, fue construido el estereoscopio,el cual era un dispositivo muy sencillo, disenado para apreciar el efecto tridimen-sional de dibujos geometricos.

En lo que respecta a la imagen tridimensional, Wheatstone (23) informo deque las pequenas diferencias entre las imagenes proyectadas a los dos ojos ofrecenuna sensacion vıvida de la profundidad del espacio en tres dimensiones. (4) Dichoaparato constaba de dos espejos colocados en angulo con respecto al observadory una imagen situada frente a cada espejo. Esas imagenes eran dibujos y figurasgeometricas, como las mostradas en la Figura 2.6.

Gracias a el invento del estereoscopio, la estereoscopia comenzo a tomar fuerzadentro del mundo. Ası, para el ano de 1849 el senor David Brewster diseno y con-struyo la primera camara y visor estereoscopicos con la que obtuvo las primeasfotografıas tridimensionales, Figura 2.7. Estas fotografıas fueron tomadas conuna camara monocular, en la cual, el objetivo podıa moverse en forma horizontalentre fotografıas y ası generar las dos vistas del mismo escenario.

El problema de este sistema inicial, es que los objetos que se tomaban, tenıanque quedarse estaticos para que el efecto tridimensional se apreciara. Fue porello que Brewster decidio construir una nueva version de su camara fotografica,

11

2. ELEMENTOS DE UN SISTEMA 3D

Figura 2.6: (9) Estereoscopio de Wheatstone.

Figura 2.7: (24) Camara estereoscopica de Brewser.

utilizando un sistema binocular, con el cual logro tomar imagenes tridimension-ales al mismo tiempo de objetos en movimiento.

En 1862, Oliver Wendell Holmes, construyo un modelo portatil del antiguo es-tereoscopio, con este equipo se podıan ver fotografıas montadas sobre un carton,lo cual genero que este tipo de fotografıas fueran muy populares a finales del sigloXIX, Figura 2.8.

No fue sino hasta los anos 50 del siglo XX que se hicieron los primeros in-tentos de explotacion comercial de pelıculas en 3D. Estos lograron tener muypoca incidencia en la industria cinematografica, dado que en vez de aumentarlos aficionados a la fotografıa tridimensional, provocaron un rechazo general enel publico, a causa de los mareos, vomitos y dolores de cabeza que se generaronen la mayorıa de las personas que observaron estas pelıculas. Estos malestaresse presentaban debido a que muchos de los tecnicos de la epoca, desconocıan por

12

2.2 Deteccion de caracterısticas humanas

Figura 2.8: (8) Esteroscopio de Wendell.

completo el concepto del parallax, que es fundamental en la estereoscopia y ladiferencia de las imagenes era mınima.

Pero en los anos 80 gracias al desarrollo de los sistemas de gran formato enel cine, como el de IMAX, fue posible crear pelıculas tridimensionales de buenacalidad, lo que ayudo a aumentar el numero de aficionados a esta tecnologıa.Para Georgia Manuka en Documental Tiburon (36), la pelıcula mas importanteque utilizo esta tecnologıa fue la trilogıa de Tiburon.

Los sistemas empleados en la proyeccion de pelıculas y diapositivas permitenver imagenes tridimensionales a un grupo numeroso de personas, pero les obliga aportar lentes especiales (Anaglifos o Polarizados). Existen sistemas de vision sinlentes conocidos como autoestereoscopicos, el mas conocido es la tecnica lenticu-lar, que permiten ver fotografıas en papel pero tiene que visualizarse en una unicaposicion espacial, lo que las relego para los profesionales que precisan de ellas.

2.2 Deteccion de caracterısticas humanas

2.2.1 Deteccion de piel

En la vision por computadora, hay varias aplicaciones que requieren el proce-samiento de imagenes de la piel humana, como en la deteccion de caras o sonrisaen una camara digital convencional. Sin embargo, el color de las estructuras dela piel humana puede ser distorsionadas por efectos de sombreado. Estos efectosdependen del color del objeto y las condiciones de iluminacion. Otros factoresque tambien influyen en el color de la superficie capturada por un sensor, comola rugosidad de la superficie, la posicion relativa de la reflectante area de la piel

13

2. ELEMENTOS DE UN SISTEMA 3D

con respecto a las fuentes de luz y el sensor. Especıficamente, imagenes de lapiel humana, se ven afectados por estos factores y el analisis de estas imagenespueden llegar a ser incluso mas difıcil si la iluminacion es uniforme, a menos quese modele y se corrija.

La deteccion de piel es de utilidad para el reconocimiento de caras y personas.Esto se debe a que el procesamiento de los colores de una imagen se realiza sintransformacion a la frecuecia o a otro espacio de color, caso contrario cuando seprocesan los gradientes u otras caracterısticas de la imagen. En la actualidad, elespacio de color comunmente utilizado es el RGB (por sus siglas en ingles Rojo,Verde y Azul). Este espacio es muy variable con la cantidad de luz lo que com-plica la identificacion de piel, es por eso que se utiliza el espacio de color YCbCr,es decir, Luminiscencia o luminancia (Y), Cromancia o diferencia azul-amarillo(Cb) y Cromancia o diferencia rojo-verde (Cr). Por lo que si se elimina la luminis-cencia se obtiene un metodo alternativo al espacio RGB, dado que concentra lainformacion de color en solo dos planos y no en tres. Es ası que algunos autorescomo Moheb et.al. *cita* dividieron a las tecnologıas de deteccion de color depiel en dos espacios el RGB y el espacio YCbCr; modificandoles parametros desaturacion para mejorar la deteccion de errores en imagenes con fondo no uni-forme.

Cualquier sistema de deteccion de piel consiste de 2 partes:

• Un modelo apropiado para representar al color, que se llama espacio decolor.

• Una metodologıa capaz de inferir la existencia de piel en la imagen.

Existen muchos modelos de color, tales como: CIE XYZ, CIE L*a *b*, RGB,HSV, YUV, YIQ, YCbCr, HIS, etc; de todos ellos los mas comunes para detectarla piel son: RGB, YCbCr, HIS.

Existen tambien muchas metodologıas para inferir la existencia de piel, oclasificar areas como piel o no-piel, tales como: Redes Neuronales (NN)*cita*,Maquinas de Soporte Vectorial (SVM)*cita*, Algoritmos Geneticos, Clasificadorde Bayes, Maxima Verosimilitud (EM)*cita*, etc. El proposito de la transfor-macion del espacio de color es mejorar el rendimiento del clasificador, es por esola importancia de la seleccion del modelo a usar. Los modelos para detectar lapiel se clasifican en modelos parametricos y no-parametricos.

2.2.1.1 Modelos No-Parametricos

La idea principal de los metodos no-parametricos es estimar la distribucion de lapiel, a partir de una base de datos de entrenamiento, sin tener un modelo explicitode la piel.

Los resultados de estos metodos son usados en ocasiones para construir ma-pas de probabilidad de piel (SPM) asignando un valor de probabilidad a cadapunto del espacio de color discretizado o entero. En este trabajo se describen los

14

2.2 Deteccion de caracterısticas humanas

siguientes tres modelos:

1. De color regional,

2. De histograma y

3. Auto-organizados.

Modelo de Color Regional

El modelo de color regional es basicamente un modelo de color, el cual selimita al rango de los colores de la piel humana. El modelo de color regional tienepoca complejidad y los parametros del filtro de la piel son identificados de acuerdoa la observacion experimental y conocimiento previo. Su desventaja es una tasade error mas alta, debido a su restringida gama de colores. La simplicidad delmetodo atrae a muchos investigadores, ya que permite construir clasificadoresmuy rapidos; se han propuesto metodos que usan algoritmos de aprendizaje com-putacional para buscar reglas simples que tengan rendimiento aceptable.

Modelo de Histograma

Las diferentes razas y tipos de iluminacion provocan una gran diversidad yvariabilidad en el color de la piel, la cual tiene una distribucion de un ciertorango en cualquier espacio de color. El modelo estadıstico de histograma a colorque se utiliza para detectar la piel es conocido como el metodo SPM (Mapa deProbabilidad de Piel). Muchos algoritmos usan el enfoque del histograma parasegmentar o clasificar los pıxeles de piel. Donde, se cuantiza unicamente el planode Cromancia (Cb y Cr). Ası, cada conjunto de direcciones asignadas de memoriacorresponde a un particular rango de componentes de color, los cuales son pareso triadas que forman histogramas en 2D o 3D conocidos como LUT (Look UpTables, tablas de busqueda).

Para el entrenamiento se cuenta el numero de veces que aparece un color parti-cular en cada imagen y se guarda en una direccion asignada de memoria, despuesdel entrenamiento el histograma es normalizado, y se convierten los valores delhistograma a probabilidades discretas con la siguiente funcion distribucion:

Ppiel(c) =piel[c]

Norm(2.1)

Donde: piel [c]es la direccion de memoria donde se almacena el histogramacorrespondiente al vector de color c. Norm es el coeficiente de normalizacion,elcual es la suma de todos los histogramas de entrenamiento, o el maximo valor deuna localidad de memoria. Los valores normalizados de la LUT constituyen laverosimilitud que corresponde al color con respecto a la piel.

15

2. ELEMENTOS DE UN SISTEMA 3D

Mapas auto-organizados

Los Mapas auto-organizados (SOM, Self Organizing Map), ideado por Koho-nen en los anos 80, es ahora uno de los tipos mas populares de clasificacion sinsupervision de redes neuronales artificiales.

En realidad son dos SOM entrenados, uno para detectar piel y otro para no-piel. El rendimiento realizado sobre la popular base de datos Compaq, no reportomucha variabilidad con diferentes espacios de color; y se reporto un rendimientosuperior que el modelo Gaussiano multivariante, pero inferior que el modelo dehistogramas. Sin embargo, el autor resalta que el metodo SOM necesita menosrecursos que dichos metodos y que puede ser implementado para correr en tiemporeal usando hardware SOM.

2.2.1.2 Modelo de color Parametricos

Los modelos de piel no-parametrica requieren mucho espacio de almacenamientoy su rendimiento depende directamente de la representatividad de las imagenesdel conjunto de entrenamiento.

La necesidad de un modelo de representacion mas compacto y con capacidadde generalizar e interpolar los datos de entrenamiento estimulo el desarrollo delos modelos parametricos.

Modelo Gaussiano simple y multivariante

Hay dos tipos de modelos de Gauss, la distribucion Gaussiana y la distribucionGaussiana multivariante. En la distribucion Gaussiana, la distribucion de densi-dad normal se usa para estimar la probabilidad de piel. La distribucion Gaussianasolo puede simular una raza humana con un color de piel, ademas que no es ade-cuado para donde hay variaciones de iluminacion.

La distribucion Gaussiana multivariante se compone de mas de una solafuncion de densidad normal y debido a que puede aproximar la distribucion de ladensidad normal de forma arbitraria, el modelo Gaussiano multivariante se puedeutilizar para lograr mejores resultados que el modelo Gaussiano simple, cuandose utiliza para estimar la distribucion espacial de la piel.

La distribucion Gaussiana multivariante se utiliza con frecuencia, por ejemploJeong utilizo un modelo Gaussiano multivariante sobre la base de la inferenciabayesiana para detectar region de la piel.

Hassanpour propuso un modelo adaptativo basado en el modelo Gaussianomultivariante para manejar variaciones de iluminacion; usa un algoritmo esti-mador de maxima verosimilitud para estimar el numero y peso de los clustersiniciales.

Una desventaja del modelo Gaussiano multivariante es la dificultad de esti-mar optimamente el numero de campanas de Gauss individuales y sus parametroscomo la media y la desviacion estandar.

16

2.2 Deteccion de caracterısticas humanas

Modelos dinamicos de distribucion de piel

Son la familia de metodos que fueron disenados y entonados para detectar lapiel y seguirla.

A diferencia de los metodos que fueron disenados para imagenes estaticas, losmodelos dinamicos se deben adaptar a nuevas condiciones de la imagen en tiemporeal, en el sentido que incluso una persona concreta puede variar su tono o colorde piel dependiendo de la iluminacion, la camara, el fondo, etc.

Una tecnica usada es detectar el rostro del sujeto y obtener un modelo de pieldel sujeto, el cual permitira modificar variables de modelos para metricos. (21)

2.2.2 Deteccion de peaton

El reconocimiento de peatones es una de las aplicaciones de la vision por com-putadora. Las recientes tecnicas de vision aportan avances significativos en lossistemas de deteccion de peatones. Siendo este ultimo un caso particular den-tro de la deteccion de objetos, que toman una principal tarea, las tecnicas dereconocimiento de patrones ya probadas en la deteccion de objetos. (33).

De manera que, estos sistemas se clasifican en:

• Sistemas en patrones basados en movimineto.

• Sistemas en patrones basados en forma.

Basado en movimiento

El patron de movimiento de un humano es de alguna manera facil de distin-guir de otro tipo de movimientos. Es una tecnica muy extensa al tratar de darun seguimiento de los peatones en movimiento a lo largo de varias imagenes, paraluego analizar dicha deteccion, buscando patrones caracterısticos de los peatones(28). Sin embargo, esta tecnica presenta diversas limitaciones al momento dedetectar peatones, las cuales se presentan a continuacion:

• Las piernas deben ser visibles,

• Se lleva a cabo por secuencia de imagenes con retardo,

• Difıcil deteccion en moviminetos extranos como correr, girar o saltar, y

• Cada parte del cuerpo tiene moviminetos diferentes.

17

2. ELEMENTOS DE UN SISTEMA 3D

Desde un punto de vista general, las tecnicas empleadas con el objetivo de re-conocer el movimiento humano se dividen en dos grandes categorıas: estructuralesy no estructurales. Los metodos estructurales, usan un modelo que describe laestructura cinematica humana, son las tecnicas basadas en modelos.

Los metodos estructurales evitan ese tipo de modelos y se fundamentan enmetodos basados en la apariencia, libres de modelo. En el momento de reconoceral peaton un punto muy importante es saber que el movimiento es periodico, esdecir, presenta un patron que se repite en el tiempo. Dicho movimiento periodicode las personas se usa para reconocer peatones ası, como hacer un seguimientode los mismos y reconocer acciones. Sin embargo, hay que tener en cuenta quelos movimientos humanos, aun siendo repetitivos, no son regulares, es decir, elperiodo varıa de un ciclo a otro e incluso de una parte del cuerpo a otra. Estavariacion puede ser pequena, aunque habra situaciones en las que no sea adecuadoconsiderar que todas las partes del cuerpo comparten el mismo periodo que seaestatico en el tiempo. Ademas, las condiciones del entorno como la iluminacion,las sombras o fondos afectan negativamente a la deteccion (27).

Figura 2.9: (7) Deteccion de peaton en movimiento.

Basado en forma

Se ha comprobado que usar un modelo basado en movimiento es realmentecomplejo, por el movimiento y que los peatones siguen modelos de movimiento de-sconocidos, aunque es un metodo robusto, requiere analisis de multiples imagenes.

Como alternativa, estan los modelos basados en forma, llamados ası porquecontienen informacion aproximada del peaton o del objeto. La gran ventaja esque permite el reconocimiento tanto de peatones estaticos como en movimiento,la dificultad esta en encontrar el amplio rango de situaciones en las que se encuen-tra al peaton. Los metodos de analisis de forma, consisten en hacer corresponderel modelo o plantilla sobre las regiones candidatas o la totalidad de la imagen,Figura 2.10 (27).

Hablando de este sistema y sus falso positivos ante objetos cuyo contorno seasemeja al de una persona, o si el color de la persona se confunde con el fondo,es uno de los grandes inconvenientes que presentan estos metodos de deteccion

18

2.3 Tecnicas de visualizacion 3D

Figura 2.10: (38) Deteccion de peaton basado en forma.

(28).

2.3 Tecnicas de visualizacion 3D

2.3.1 Generalidades

Algunas de las tecnicas mas comunes para visualizar el efecto 3D son la visual-izacion volumetrica, auto estereoscopia y el efecto estereoscopico.

La visualizacion volumetrica, Figura 2.11, es el efecto en el cual se muestranimagenes tridimensionales dentro de un volumen, puesto que estas imagenes ocu-pan un espacio tridimensional, se muestran a uno o varios espectadores de formatridimensional. Esto se lleva a cabo ya que se tiene una vista desde varios puntos.

Figura 2.11: (38) Visualizacion volumetrica.

19

2. ELEMENTOS DE UN SISTEMA 3D

La estereoscopia consiste en visualizar dos imagenes con dos vistas de un ob-jeto simultaneamente, Figura 2.12. A traves de la vision binocular el ser humanoes capaz de apreciar diferentes distancias y volumenes en el entorno. Los ojos delser humano tienen una separacion y obtienen dos imagenes con pequenas difer-encias entre ellas. A esta diferencia que existe entre las imagenes que adquierenlos ojos se llama disparidad. La distancia focal entre los ojos mas habitual es de65mm, sin embargo, varia desde los 45mm a los 75mm. El cerebro procesa esadisparidad y la interpreta de tal forma que se percibe una sensacion de profundi-dad al apreciar el entorno. Este proceso en el cerebro se denomina esterepsis.

Figura 2.12: (38) Visualizacion estereoscopica.

La visualizacion estereoscopica consiste en mostrar dos imagenes, una para elojo izquierdo y otra para el ojo derecho, estas imagenes se le presentan al especta-dor de modo que perciba la imagen correcta en cada ojo. Para llevar a cabo esteproceso se necesita un par de lentes anaglifos, ya que en cada uno de los lentestiene un color opuesto al otro, el mas comun es el color rojo del lado izquierdoy el color azul cyan del lado derecho, esto provoca enganar al cerebro y puedaproducirse el efecto 3D.

Para obtener la informacion de la profundidad de una imagen se necesitanmultiples perspectivas de la misma, por lo regular se procesa un par estereo. Lamayorıa de algoritmos y tecnicas existentes, intentan igualar ciertas partes delas imagenes. Las diferencias o disparidades, en partes iguales de dos imagenes,es inversamente proporcional a su profundidad en la escena. Esta disparidad seconvierte en la profundidad de una imagen.

En la visualizacion estereoscopica el problema es determinar la estructuratridimensional a partir de una imagen suponiendo la otra. En un par de imagenesestereo una pareja de puntos correspondientes esta conformada por la proyecciondel mismo punto en el espacio, encontrando las dos proyecciones del punto enel espacio se determina su profundidad hallando el desplazamiento entre las dosproyecciones. Una vez se estima la disparidad tomando como referencia una delas imagenes estereo se genera una imagen con estos valores que se denominamapa de disparidad, Figura 2.13.

20

2.3 Tecnicas de visualizacion 3D

Figura 2.13: Mapa de Disparidad, obtenido de una imagen inicial para finalmenteobtener el par estereoscopico.

El mapa de disparidad cuenta con capas, en la figura 2.13 se muestran solo 3capas, pero estas van de 0 a 255 ya que son imagenes con 8 bpp. Un valor cercanoa 255 genera un color blanco y con un valor cercano a 0 el color tiende a negro.

En un mapa de disparidad entre mas capas tenga, mayor sera el efecto deprofundidad en la imagen compuesta anaglifa. El blanco indica que es la primeracapa, es decir, que es la region frontal, por el contrario el negro representa la capafinal y por lo tanto es el fondo de la escena.

2.3.2 Problematica

Un problema sobresaliente en cuanto al tratamiento de la imagen, donde se estimala profundidad es la calidad de las imagenes. Esto conlleva que en la actualidadel efecto 3D no se lleve a cabo en tiempo real, ya que contiene demasiada infor-macion y es imposible procesarla de una manera rapida.

Al generar el par estereoscopico el problema se duplica, ya que ahora se mane-jan dos imagenes, cada imagen maneja, por ejemplo, 24 bits por pixel (bpp) siendoque al generar el par estereo se trabajara con 48 (bpp), de la imagen izquierdase ocupara 24 y para la imagen derecha las 24 restantes. Esto sucede ya que loscolores que se emplean en las imagenes van de 0 a 255 y para poder ser generadasse requiere de 48 (bpp).

Al utilizar el mapa de disparidad se logra optimizar el uso de bits, ya que elmapa que se emplea solo ocupa un solo bit, teniendo entonces 24 (bpp) por partede una imagen y 1 (bpp) utilizando el mapa de disparidad, teniendo en total 25(bpp) en uso, por lo tanto se ahorran 23 (bpp).

21

2. ELEMENTOS DE UN SISTEMA 3D

La Figura 2.14 se empleo para saber cuanto tiene de ahorro en cuanto al peso,teniendo un ancho de 460 pixeles y de altura 276 pixeles, utilizando la siguienteecuacion:

Bytes =Numerodepixeles× 24(bpp)

8(2.2)

Figura 2.14: (3) Imagen utilizada para obtener el ahorro en bytes con la ecuacionempleada.

126, 960pixeles× 24(bpp)

8= 380, 880bytes (2.3)

La imagen originalmente tiene un peso de 20000 bytes utilizando la ecuacionanterior se obtuvo 380880 bytes, teniendo de ahorro 360,8800 bytes.

2.4 Optimizacion del tiempo de procesamiento.

Durante decadas, los ordenadores paralelos eran sinonimos de los supercomputa-doras, grandes y caras, las maquinas construidas por empresas como Cray e IBM,eran accesibles solo para los laboratorios del gobierno y las grandes corporaciones.Solamente programadores expertos eran capaces de utilizar eficazmente estos sis-temas. En la decada de 1990, dos tipos de programacion en paralelo llegaron adominar la computacion paralela: MPI y OpenMP. Sin embargo, MPI y OpenMPtodavıa requerıa una comprension mas profunda sobre la computacion paralela.

Hoy en dıa, con el surgimiento de procesadores multinucleo, la programacionen paralelo esta presente en todas partes. Las arquitecturas multinucleo se ex-tienden rapidamente a todos los ambitos de la informatica, desde el incrustado ensistemas de computadoras personales a supercomputadores de alto rendimiento.

22

2.4 Optimizacion del tiempo de procesamiento.

El conocimiento y la experiencia en la programacion en paralelo, lamentable-mente, no sigue el ritmo de la tendencia hacia el hardware paralelo. Las arqui-tecturas multinucleo necesitan computacion paralela y la gestion explıcita de lajerarquıa de memoria (12).

Mientras MPI y OpenMP todavıa tienen un lugar en el mundo del multinucleo,el proceso de aprendizaje de dichos lenguajes es demasiado fuerte para la mayorıade los programadores. Aunque hoy en dia, estos tipos de lenguajes llevan a lasnuevas tecnologıas, que son necesarias para que los procesadores multinucleo seanaccesibles una comunidad mayor. El procesamiento de imagenes (SIP) es uno delos campos que se beneficia enormemente de estas tecnologıas.

Estas nuevas tecnologıas de software ocultan la complejidad de las arquitec-turas de multiples nucleos, permitiendo a los programadores centrarse en losalgoritmos en lugar de en las arquitecturas.

Ası, se le llama computo paralelo a la ejecucion de dos o mas procesos almismo tiempo usando mas de un procesador. El procesamiento en paralelo haceque un programa se ejecute rapidamente porque existen mas procesadores quetrabajan en forma simultanea y coordinada en diferentes partes de un problema.La meta es reducir al mınimo el tiempo total de computo distribuyendo la cargade trabajo entre los procesadores disponibles.

En la actualidad, el costo del hardware disminuye rapidamente, por lo queel procesamiento paralelo se emplea cada vez mas en tareas comunes. No ob-stante, ademas de las facilidades de hardware que llevan a cabo este tipo deprocesamiento, es necesario contar con software que soporte la ejecucion y la co-ordinacion de procesos en forma paralela.

El paralelismo de datos es a menudo sinonimo de un solo modelo de progra-macion SPMD, donde el mismo programa se ejecuta en varios procesadores, peroen los procesos existen datos diferentes.

Las tareas en paralelo se asignan a los diferentes procesadores como se muestraen la Figura 2.15. El paralelismo de tareas es a menudo sinonimo de un modelode programacion de datos multiples, en el que diferentes procesadores ejecutandiferentes programas.

Con ayuda de MatLab se empleara el computo paralelo, utilizando ası laherramienta que ofrece para optimizar los procesos de conversion.

23

2. ELEMENTOS DE UN SISTEMA 3D

Figura 2.15: (12) Funcionamineto del computo paralelo, diferentes tareas real-izadas por los procesadores.

24

Capıtulo 3

Imagen 3D/Estereoscopica

3.1 Imagen digital

El modelo o espacio de color llamado RGB se utiliza en todos los sistemas queforman imagenes a traves de rayos luminosos. Esto es, emitiendo o recibiendo im-pulsos lumınicos formados por los tres componentes de colores basicos aditivos.Ası, los componentes de color son las senales Rojo, Verde y Azul (viniendo elnombre de las iniciales de su nomenclatura inglesa Red, Green y Blue) como semuestra en la Figura 3.1; siendo transmitidos cada uno independiente y aisladosdel resto. (37)

Dado que su valor de intensidad es mutuamente excluyente del otro no existenperdidas en el tratamiento de la imagen, ademas que los colores basicos aditivossiguen existiendo como tal en su transmision. Adicionalmente, utilizando esteespacio de color existe informacion redundante lo que aumenta el ancho de bandanecesario respecto a otros metodos de transmision. Por ejemplo, cada color llevasu valor de brillo con respecto a toda la imagen, es decir, que dicha informacionesta por triplicado.

El modelo de color RGB no define por sı mismo lo que significa exactamenteRojo, Verde o Azul, por lo que los mismos valores RGB pueden mostrar coloresnotablemente diferentes en diferentes dispositivos que usen este modelo de color.Aunque utilicen un mismo modelo, sus espacios de color pueden variar consider-ablemente.

Por otro lado la imagen digital es una representacion bidimensional de unaimagen a partir de una matriz numerica, que en algunas ocaciones es en binario(unos y ceros). Si la resolucion de la imagen es estatica o dinamica, se tratao define como una imagen matricial (o mapa de bits) o de un grafico vectorial,respectivamente. Siendo el mapa de bits el formato mas utilizado en informatica.

Las imagenes digitales se obtienen o capturan por medio de dispositivos deconversion analogica-digital como son escaneres o camaras digitales. Una vez lasimagenes digitales son capturadas se pueden modificar mediante filtros, anadir

25

3. IMAGEN 3D/ESTEREOSCOPICA

Figura 3.1: Componentes de colores basicos aditivos que conforman al pixel.Cada canal de 8 bits con valor entre 0 y 255. La convinacion RGB tiene un rangode 16,777,216 colores posibles de un pixel que representa el elemento basico en unaimagen digital.(38)

o suprimir elementos, modificar su tamano o resolucion y almacenarse en undispositivo de grabacion de datos como el disco duro.

La mayorıa de formatos de imagenes digitales estan compuestos por unacabecera que contiene atributos (dimensiones de la imagen, tipo de codificacion,etc.), seguida de los datos de la imagen en sı misma. La estructura de los atribu-tos y de los datos de la imagen es distinto en cada formato(37).

Algunas imagenes digitales utilizan el sistema de color RGB para almacenarlas intensidades de color Rojo, Verde y Azul que se combinan para formar el colorque se observarıa.

La Figura 3.2 muestra una imagen digital a color en mapa de bits, la cual esun grupo de pixeles conformados por tres canales y cada uno de ellos contiene loscolores basicos aditivos.

La Figura 3.3 muestra la imagen ciervo, ademas se hace una muestra de unazona hasta observar los pixeles que la componen, los cuales estan numerados del1 al 16. Una vez ya establecida la region, se obtendra el valor de cada canal conrespecto a los colores basicos aditivos, los cuales se representan en la Tabla 3.1

La seccion encerrada con color amarillo en la Figura 3.4 es la region donde setoman las muestras. Dicha region esta conformada por 16 pixeles y cada pixelcontiene tres canales en los cuales estan contenidos los colores basicos aditivos.Para que el color que se observa en la imagen tome esa tonalidad, cada uno de loscanales tiene distintas cantidades de colores basicos aditivos. Ademas en la Figura3.4 se observa el pixel 1 con los tres canales que lo conforman, cada uno de estos

26

3.1 Imagen digital

Figura 3.2: Estructura de una imagen digital.

Figura 3.3: Acercamiento de la imagen propuesta observando los pixeles que laconforman.

tiene valores numericos de Rojo, Verde y Azul de 103, 95 y 72, respectivamente.

Figura 3.4: Canales del pixel.

Cabe mencionar que los valores numericos que se expresan en la tabla sonde 8 bits, es decir, de 0 a 255. Siendo que los valores mas cercanos a 255 se

27

3. IMAGEN 3D/ESTEREOSCOPICA

Numero de Pixel Cantidad de rojo Cantidad de verde Cantidad de azul

1 103 95 722 83 77 553 110 103 744 91 79 555 131 120 986 108 98 717 112 106 828 142 136 1049 157 151 12710 118 107 8911 110 105 8612 157 150 13113 118 107 8714 150 142 12115 122 116 9216 132 119 75

Tabla 3.1: Valores numericos obtenidos de los colores primarios por cada pixel dela muestra tomada.

aproximaran a la saturacion que produce un color blanco y los colores con valorescercanos a 0, se aproximaran al color negro (18). Una vez establecido como estacompuesta la estructura de una imagen, TheAteR3D desarrollara un algoritmo deconversion de video 2D a 3D, por lo tanto se debera conocer como esta compuestoun video (14).

3.2 Video Digital

El video digital es la tecnologıa de la grabacion, procesamiento, almacenamiento,transmision de imagenes y reconstruccion por medios electronicos digitales oanalogicos de una secuencia de imagenes que representan escenas en movimiento.Consiste en la captura de una serie de fotografıas, en este contexto llamadas fo-togramas, que luego se muestran en secuencia y a una velocidad promedio de 20fotogramas para reconstruir la escena original.

Existen diversos tipos de formatos de video, cada uno con caracterısticas quelo hacen diferente, en el caso de TheAteR3D se empleara un formato en particular,pero podrıa utilizarce cualquier otro.

Algunos de los formatos mas comunes que se emplean y mencionando algunasde sus caracterısticas son (6):

28

3.2 Video Digital

Figura 3.5: Secuencia de fotogramas o fotos.(38)

AVI:

• Es el formato estandar para almacenar video digital. Cuando se capturavideo desde una camara digital a la computadora, se suele almacenar eneste formato con el codec DV (Digital Video).

• El archivo AVI puede contener video con una calidad excelente. Sin embargola cantidad de informacion del archivo resulta siempre muy grande.

• Admite distintos codecs de compresion como CinePak, Intel Indeo 5, DV,etc. Los codecs con mas capacidad de compresion y una calidad aceptableson DivX y XviD.

• El formato AVI puede ser visualizado con la mayorıa de reproductores: Win-dows Media, QuickTime, etc. siempre y cuando se encuentren instaladosen el equipo los adecuados codecs para cada tipo de reproductor.

• Es ideal para guardar videos originales que han sido capturados de la camaradigital.

• No es recomendable publicarlos en Internet en este formato por su enormetamano de almacenamiento. Los codecs CinePak, Intel Indeo, DV, etc. noofrecen una gran compresion. Los codecs DivX y XviD por el contrarioconsiguen una optima compresion aunque se suelen destinar sobre todo ala codificacion de pelıculas de larga duracion.

MPEG:

• Es un formato estandar para la compresion de video digital.

• Son archivos de extension *.MPG o *.MPEG.

• Admite distintos tipos de codecs de compresion: MPEG-1 (calidad CD),MPEG-2 (calidad DVD), MPEG-3 (orientado al audio MP3) y MPEG-4(mas orientado a la web).

29

3. IMAGEN 3D/ESTEREOSCOPICA

• Se reproducen con Windows Media Player y QuickTime.

MOV:

• Es el formato de video y audio desarrollado por Apple.

• Utiliza un codec propio que evoluciona en versiones con bastante rapidez.

• Este tipo de archivos tambien pueden tener extension *.QT.

• Es ideal para publicar videos en Internet por su razonable calidad/peso.Admite transmision progresiva.

WMV:

• Ha sido desarrollado recientemente por Microsoft.

• Utiliza el codec MPEG-4 para la compresion de video.

• Tambien puede tener extension *.ASF.

• Solo se puede visualizar con una version actualizada de Windows Media 7o superior. Esta aplicacion viene integrada dentro de Windows.

• Es ideal para publicar videos en Internet por razonable calidad/peso.

• Admite transmision progresiva.

Cabe mencionar que TheAteR3D solo emplea el formato AVI, pero obtendrıalos mismos resultados en un formato MPG, MOV o WMV. Ademas, un aspectocon importancia a saber, es de que manera se obtienen las imagenes o fotogramasque componen a un video.

3.3 Captura de Imagenes 3D

3.3.1 Captura de una imagen

El sensor de imagen en casi todas las camaras digitales, es una matriz con filtros decolor o CFA, por sus siglas en ingles. El sensor de imagen en sı es monocromatico,detecta la intensidad de luz pero no el color. El CFA superpone filtros con fotodi-odos sensibles a la luz del sensor en un mosaico de colores Rojo, Verde y Azul enuna cuadrıcula como tablero de ajedrez, Figura 3.6. Por lo tanto, cada lugar dela foto, que corresponde a un pıxel, recibe uno de los tres colores basicos aditivos.

En este tipo de sistema, un sensor de 15MP CFA se asignan 7,500,000 pıxelespara la luz Verde y 3,750,000 para cada luz Roja y Azul, respectivamente. Deeste modo este patron de tablero de ajedrez crea una imagen a base de puntos,por lo que se utiliza un proceso llamado interpolacion de color para mezclar la

30

3.3 Captura de Imagenes 3D

Figura 3.6: Matriz de colores basicos aditivos donde se interpolan los colores ygenera la captura.(38)

informacion de colores vecinos. Por ejemplo, un pıxel Verde obtiene informacionde color de pıxeles adyacentes Azul y Rojo.

Ası, una imagen directa del sensor que tiene 15 millones de pıxeles es capazde capturar toda la informacion de color Rojo, Verde y Azul en cada posicionde pıxel. En otras palabras, todos los 15 millones de pıxeles pueden respondera los tres colores basicos RGB transmitidos por el objetivo. No hay necesidadde asignar Rojo, Verde y Azul para separar lugares de pıxeles, ni para fabricaro eliminar la informacion de color durante el procesamiento de imagenes. Estesistema de captura de color completo es, en principio, capaz de proporcionar lamisma resolucion de luminancia que la resolucion de crominancia.

Hoy en dia, el sensor de imagenes utilizado por la mayorıa de las camarasdigitales es un dispositivo de carga acoplada o CCD (del ingles, Charge-CoupledDevice) aunque estan tambien aquellas que utilizan la tecnologıa CMOS. Unaforma de explicar el funcionamiento de estas, es imaginando un panel lleno depequenas celdas, en donde una vez que el sensor convierte la luz en electrones,estos son leıdos al momento de estrellarse contra el panel. La diferencia entreestos dos tipos de sensores son que:

31

3. IMAGEN 3D/ESTEREOSCOPICA

Figura 3.7: Modelo general del sensor convertidor de luz en cargas electricas.(38)

• El CCD transporta la carga a traves del chip y lee la informacion en una es-quina del panel. Luego un convertidor analogico a digital, mide la cantidadde carga en cada celda y cambia cada pixel en un valor binario.

• El CMOS usa varios transistores que estan ubicados en cada celda, paraluego mover la carga a traves de un cableado interno.

Estas diferencias de sensores llevan a algunas ventajas y desventajas:

• Los sensores CCD logran imagenes de alta calidad y con poco ruido.

• Los CMOS son mas susceptibles al ruido.

Debido a que en cada pixel de un sensor CMOS, puede haber muchos transis-tores, la sensibilidad luminosa de este chip es menor, debido a que muchos fotonesen vez de golpear al foto-diodo golpean en algun transistor.

Los CMOS por lo general consumen menos energıa que los CCD, debido a queestos ultimos deben realizar un proceso que utiliza mayor energıa, que puede lle-gar a ser hasta 100 veces mayor que al otro. Los sensores CCD son producidos enmasa hace ya un buen tiempo, por lo cual tecnologicamente estan mas maduros,y tienden a ofrecer una mejor calidad y cantidad de pixeles. (31)

3.3.2 Par Estereoscopico

Un aspecto relevante para el algoritmo TheAteR3D es generar un par estere-oscopico, el cual requiere de una imagen compuesta anaglifa.

32

3.3 Captura de Imagenes 3D

La generacion de un par esterescopico se basa en la estereoscopıa, la cual escapaz de recoger informacion visual tridimensional y/o crear la ilusion de pro-fundidad mediante un par de imagenes. La ilusion de la profundidad en unafotografıa, pelıcula u otra imagen bidimensional se crea presentando una imagenligeramente diferente para cada ojo, Figura 3.8.

Figura 3.8: Par estereoscopico.

Los dos ojos, al estar situados en posiciones diferentes, recogen cada uno ensus retinas una imagen ligeramente distinta de la realidad que tienen delante.Esas pequenas diferencias se procesan en el cerebro para calcular la distancia a laque se encuentran los objetos mediante la tecnica del paralaje, como se muestraen la Figura 3.9. El calculo de las distancias situa los objetos que se observan enel espacio tridimensional, obteniendo una sensacion de profundidad y volumen.Por lo que si capturan dos imagenes con un angulo ligeramente distinto y lasobserva cada ojo por separado, el cerebro reconstruye la distancia y por lo tantola sensacion de tridimensionalidad. (16)

Figura 3.9: Posicion de las imagenes.(38)

El trabajo propuesto carece de un par estereoscopico solo se tiene una imageny se calcula una segunda imagen con una pequena diferencia de angulo, similar ala existente entre los ojos del espectador.

33

3. IMAGEN 3D/ESTEREOSCOPICA

3.3.3 Ubicacion de camaras estereoscopicas

Cuando se requieren ubicar camaras para capturar imagenes naturales tridimen-sionales se toman en cuenta bases, las cuales permiten clarificar la informacionque es necesaria para llevar a cabo la busqueda de correspondientes caracterısticasa lo largo de lıneas.

La Figura 3.10 ilustra un modelo paralelo, que simula el sistema visual hu-mano, el cual muestra la perspectiva de las dos vistas diferentes de un mismopunto P de un objeto distante, desde los centros de dos camaras iguales (Fl yFr), las cuales estan separadas solo en la direccion X por una distancia base. Enella tambien se muestra un par conjugado, es decir, las perspectivas izquierda yderecha del punto P, ilustradas como los puntos Pl y Pr. Al plano resultante detriangular los centros de las camaras y un punto del objeto en la escena es llamadoel plano epipolar. La interseccion del plano epipolar con el plano de la imagen esllamada lınea epipolar. Segun la geometrıa epipolar, las correspondencias en losputos Pl y Pr deben situarse sobre dicha lınea.

Figura 3.10: Modelo paralelo (38).

A diferencia del modelo anterior, el modelo convergente ubica las camarasno de manera paralela separada solamente por el eje X, sino las lentes se situanhacia el objeto por lo que la perspectiva del punto P puede no aparecer en algunade las imagenes. En la Figura 3.11 se observa dicho modelo, el cual en lugar deseguir simples lıneas se trabaja con una circunferencia, posicionando al objetocomo centro de la misma y alrededor, las camaras que lo enfocan.

Tanto para el modelo paralelo, como para el convergente, existe la adaptacionpara multiples camaras. Aunque se ha disenado un modelo de camara unica,Figura 3.12, en el cual se colocan frente al objeto dos espejos con una inclinacionde 45◦ con respecto al eje X, al fotografiar ambos espejos se obtendran dos pers-pectivas del objeto.

34

3.4 Tecnicas de visualizacion estereoscopica

Figura 3.11: Modelo convergente (38).

Figura 3.12: Modelo de camara unica (38).

3.4 Tecnicas de visualizacion estereoscopica

Para la gente nacida entre los anos 70’s y 80’s, asociar la tercera dimension nose puede separar de los lentes rojo-azul, mejor llamados anaglifos, aunque paralos nacidos en la decada de los 90’s, probablemente la asociaran con un cascotridimensional HMD, pero si se les preguntara a la los ninos de hoy, seguramenteesperarıan que la caja de television enviara la tercera dimension por sı sola.

Hoy en dia existe una amplia variedad de tecnicas de obtencion, estimacion ycodificacion de la profundidad, aunque cuando se presentan sus diferentes resul-

35

3. IMAGEN 3D/ESTEREOSCOPICA

tados todos los expresan en unicamente dos formas: las autoestereoscopicas y lasque utilizan lentes para polarizar la luz.

La forma tradicional de como trabajan los sistemas estereoscopicos es emple-ando ciertos aparatos los cuales dirigen las imagenes derecha e izquierda direc-tamente al ojo indicado. Ejemplo de esto son algunos cascos de realidad virtualo lentes obturadores. Para los estudiosos del tema de imagenes en tercera di-mension, cualquiera de los sistemas en 3D deberıa simular en su totalidad ala vision humana, es decir, deberıa ser autoestereoscopica, ya que ası no se re-querirıan de los lentes o condiciones especiales de iluminacion.

Figura 3.13: Visualizacion Estereoscopica.(38)

Existen diversas tecnicas de visualizacion estereoscopica, sin embargo, las masconocidas son:

• Anaglifa,

• Polarizada,

• Infitec,

• LCD, y

• Casco HMD,

3.4.1 Tecnica Anaglifa

En los monitores convencionales una de las tecnicas mas utilizadas son los lentesanaglifos. Los lentes que se necesitan son de bajo costo, estos lentes utilizan fil-tros de colores para separar las dos imagenes, ası, cuando se observa de un filtroRojo, los colores Verde o Azul se bloquean o filtran, es decir, se ven en tonalidadnegra. Si se utiliza un filtro verde, azul o ciyan, el rojo se percibe de tonalidadnegra. A partir de ese principio, se mezclan dos imagenes y se utilizan lentescon filtros de color para separarlas y observar el efecto estereoscopico (26). Las

36

3.4 Tecnicas de visualizacion estereoscopica

imagenes o videos producidos en tecnica anaglifa se representan sin necesidad deequipo especial, esta tecnica sera utilizada en el algoritmo TheAteR3D.

Figura 3.14: Lentes utilizados en la tecnica anaglifa.(38)

Las imagenes anaglifas son imagenes de dos dimensiones capaces de provocarun efecto tridimensional, cuando se ven con lentes especiales de colores opuestospara cada ojo como se muestra en la Figura 3.15

Figura 3.15: Imagen anaglifa.

Las imagenes se componen de dos capas de color, superpuestas pero movidasligeramente una respecto a la otra para producir el efecto de profundidad. Usual-mente, el objeto principal esta en el centro, mientras que alrededor y el fondoesta desplazados lateralmente en direcciones opuestas. La imagen contiene dosimagenes filtradas por color, una para cada ojo. Cuando se ve a traves de loslentes anaglifos, se genera una imagen tridimensional, en el cerebro. La cortezavisual del cerebro fusiona esto dentro de la percepcion de una escena con profun-didad.

Estas imagenes han despertado nuevamente el interes debido a la presentacionde imagenes y vıdeos en Internet. Videojuegos, pelıculas de cine y DVD ası mismo

37

3. IMAGEN 3D/ESTEREOSCOPICA

para la ciencia y el diseno, donde la percepcion de profundidad es util. Un ejem-plo es proporcionado por la NASA, que usa dos vehıculos orbitales para obtenerimagenes en 3D del Sol.

En este sistema de presentacion, se utilizan filtros de colores complementa-rios, como rojo y azul, rojo y cyan, amarillo y violeta o rojo y verde. El sistemafunciona de la siguiente forma, a cada uno de las imagenes del par se le aplicaun filtro de color, despues con ayuda de un programa de edicion de fotografıase sobreponen los dos pares modificados, el resultado de esto es una fotografıacompuesta, con las imagenes que el ojo izquierdo y derecho deben ver. Paraver el efecto tridimensional en la fotografıa, es necesario utilizar lentes anaglifos,que poseen un filtro en cada ojo, generalmente se utiliza el filtro rojo en el ojoizquierdo y el azul cyan en el derecho.

Este sistema, por su bajo costo, se emplea sobre todo en publicaciones, asıcomo tambien en monitores de computadoras y en el cine. Presenta el problemade la alteracion de los colores, perdida de luminosidad y cansancio visual despuesde un uso prolongado.

3.4.2 Tecnica de PolarizacionAdicional al metodo Anaglifo existe otro metodo llamado Polarizado el cual uti-liza lentes que requieren una mayor inversion por necesitar dispositivos de visual-izacion especiales, que no en todos los casos son accesibles al publico en general.La tecnica funciona en base de un fenomeno de la fısica llamado polarizacion dela luz (20).

Figura 3.16: Lentes utilizados en la tecnica polarizada.(38)

Ası, este sistema utiliza el mismo concepto que los lentes anaglifos, pero a dife-rencia del metodo anterior, no utiliza filtros de colores para separar las imagenes,sino filtros que polarizados a 45 y 135 grados, de tal forma que la imagen del ojoderecho queda polarizada a 135 grados, mientras que la imagen del ojo izquierdoqueda polarizada a 45 grados, al existir entre las dos imagenes una diferencia de90 grados, se garantiza que las dos imagenes no se van a mezclar. Para visualizardichas imagenes se utiliza una pantalla metalizada o de lo contrario se perderala polarizacion de la imagen, adicionalmente se necesita que la persona que estaobservando la presentacion, use lentes polarizados para verla.

38

3.4 Tecnicas de visualizacion estereoscopica

El sistema de polarizacion no altera los colores, aunque hay una cierta perdidade luminosidad. Se usa tanto en proyeccion de cine 3D como en monitores decomputadoras de polarizacion alternativa.

3.4.3 Tecnica InfitecEs una tecnica para exhibir imagenes estereoscopicas donde la informacion de laimagen se transmite en diversos tramos en la longitud de onda del espectro visiblede la luz. Los espectros de las imagenes izquierda y derecha del ojo en sistemasInfitec son complementarios uno del otro, amabas imagenes se pueden generar enprincipio por una fuente de luz unica.

Es una tecnica que realiza la separacion estereo sin la imagen secundaria cono-cido como Ghost. La separacion Infitec es util para imagenes de alto contraste,la tecnica realiza una buena separacion de imagenes. La desventaja principal deinfitec es que requiere mas brillantez con respecto a otros metodos provocandoque los resultados obtenidos no sean los esperados. (19)

Figura 3.17: Lentes utilizados en la tecnica Infitec.(38)

3.4.4 Tecnica LCDEste sistema se utiliza en conjunto con un monitor o una television para mostraren forma secuencial y alterna las imagenes izquierda y derecha del par estere-oscopico. Entonces, la imagen del ojo izquierdo se muestra en la pantalla delmonitor, en ese momento se activa el obturador del ojo derecho para impedir queeste vea la imagen derecha que no le corresponde, es decir, solo el ojo izquierdopuede ver la imagen izquierda. De la misma forma cuando la imagen derecha esmostrada en el monitor, el obturador del ojo izquierdo se activa.

Existen diferentes metodos para mostrar las imagenes tridimensionales en unmonitor utilizando esta tecnica, aunque los mas utilizados en la actualidad sonInterlance, (con una frecuencia de muestreo de 120 Hz) y Above/Below (con unafrecuencia de muestreo de 60 Hz).

39

3. IMAGEN 3D/ESTEREOSCOPICA

Figura 3.18: Lentes LCD utilizados para apreciar el efecto 3D, dispositivo decosto elevado.(38)

3.4.5 Tecnica Casco HMD

Un Head-Mouted Display o HMD (casco de realidad virtual) es un dispositivoestereoscopico que porta dos pantallas y los sistemas opticos para cada ojo, deforma que la imagen se genera en el propio dispositivo. Su principal uso hastaahora ha sido la Realidad Virtual, a un costo elevado y de forma experimental,aunque al bajar de precio aparecen otras aplicaciones ludicas, como los videojue-gos.

Figura 3.19: Casco HDM utilizado para apreciar el efecto 3D, es un dispositivode alto costo.(38)

40

3.5 Procesamiento

El procesamiento de la tecnologıa 3D juega un papel muy importante dadasu mayor aceptacion al publico, gracias a la divercidad de aplicaciones que hoyen dia se cuentan, un claro ejemplo son los videojuegos.

3.5 Procesamiento

3.5.1 Introduccion

El procesamiento digital de una imagen en el caso de TheAteR3D es un conjuntode tecnicas que se aplican a las imagenes digitales. Cuyo objetivo es mejorar lacalidad y en este caso en especıfico procesar una imagen convirtiendola a imagenanaglifa.

Siendo ası TheAteR3D un conjunto de tecnicas englobadas dentro del proce-samiento del video cuya meta fundamental es obtener, a partir de un video 2D,otro video en tercera dimension, Figura 3.20.

Figura 3.20: Proceso del algoritmo TheAteR3D.

3.5.2 Representacion y codificacion

La percepcion de la profundidad dada por sistemas de imagen o vıdeo estere-oscopico, le ofrecen cierto realismo a muchas aplicaciones como pelıculas entercera dimension, cirugıas medicas, videoconferencias, aplicaciones multimedia,operaciones controladas a distancia, entre muchas otras. Sin embargo, existendiversos retos a imponerse antes del uso casi sin restricciones de sistemas estere-oscopicos. Uno de estos retos a vencer es el limitado ancho de banda. Siendo esteultimo el principal obstaculo para que dichos sistemas estereo sean viables, yaque para enviar, por un canal o almacenar en disco duro, este tipo de imagenesse requiere de al menos el doble de datos que los que se enviara o almacena enun sistema de codificacion monocular convencional o 2D.

Las tecnicas utilizadas para codificar imagenes estereo son similares que lasutilizadas para codificar imagenes monoculares. En general los sistemas estere-oscopicos aprovechan la redundancia entre pares estereo, ademas de la redundan-cia temporal entre tramas consecutivas de cada vista de la escena tridimensional.Por ello, es importante explicar algunas tecnicas existentes de codificacion deimagenes estereo. Existen metodos, como el de Duarte en *cita*, el cual se

41

3. IMAGEN 3D/ESTEREOSCOPICA

vale de igualaciones de ciertos patrones recurrentes en las imagenes. Ademas, sesegmentan dichas imagenes en bloques variables, donde cada segmento se con-trae, expande o desplaza de acuerdo a los criterios de un diccionario previamenteestablecido. Otros metodos, como los de Xu en *cita* y Nayan en *cita*,proponen algoritmos para codificar imagenes estereo utilizando la transformadawavelet, manejando algunas propiedades contenidas en el estandar de compresionde imagenes digitales JPEG2000.

3.5.3 Sintetizacion

La sintetizacion para TheAteR3D es de suma importancia, ya que es el procesodonde se lleva a cabo la parte fundamental de la esteroecopia.

TheAteR3D trabaja con el modelo adaptado de camara unica dado que noemplea la segunda camara para generar el par estereo. La imagen derecha se esti-mara mediante una camara virtual a partir del Mapa de Disparidad y la imagenoriginal izquierda Figura 3.21. Esta es una ventaja de la aplicacion reduciendoası los cotos de procesamiento.

Figura 3.21: Modelo adaptado de camara unica.

DIBR como sus siglas en ingles Depth Image Based Rendering o profundidadde la imagen basada en renderizacion, es el proceso de visualizacion virtual, us-ando una imagen o vıdeo y la informacion asociada por profundidad del pıxel.

Para que generar el par esteroescopico y el efecto 3D es necesario obtenerla estimacion de la profundidad entre la imagen izquierda original y la imagenderecha que se supone mediante DIBR, para esto se emplea la siguiente formulapara estimar la imagen:

42

3.5 Procesamiento

d =S × F

Z(3.1)

• Z es medida en metros es la distancia entre la camara y el objeto.

• S es la separacion entre la camara fısica y camara virtual.

• F es la medida en pixeles y es la distancia focal entre las lentes de lascamaras.

• d es la estimacion de la profundidad.

Para el diseno de TheAteR3D se manejaron valores para la disparidad como:

• 0.06 metros entre la distancia de los ojos de una persona.

• Para el mapa de disparidad los objetos mas alla de 20 metros se envian alfondo y se representan en negro.

• Para la medida mas cercana es a 0 metros y representa en blanco.

La problematica que existe al generar la estimacionode la profundidad es quehay un desplazamiento, el calculo de d es la estimacion de la profundidad, alrealizar este proceso la imagen se deforma y genera huecos, como se ve en laFigura 3.22. A partir de la imagen original izquierda se genera la profundidaddel pixel donde la zona blanca ahora es llenada con la asimilacion de la fronterao entorno de la imagen derecha. Ademas, todo lo lejano a 20 metros es el fondoy se representa negro.

3.5.4 Espacio de color percibido

Los algoritmos de codificacion de imagenes utilizan diversos espacios de color,tales como RGB, YCbCr, YCM y HSB. De esta manera, una imagen en el es-pacio de color RGB se descompone en tres componentes: R Rojo, G Verde y BAzul, Figura 3.23. Mientras que una imagen en el espacio de color YCbCr sedescompone en los siguientes tres componentes: Y Luminancia, Cb CromanciaAzul y Cr Cromancia Roja, Figura 3.24.

Los algoritmos de compresion realizan compresion mutuamente excluyente acada capa de color, es decir, una codificacion completa se desarrolla en cada canal.Los componentes de color R, G y B son estadısticamente mas dependientes quelos componentes Y, Cb y Cr, por lo tanto, los canales de Crominancia se procesande forma independiente a una resolucion mas baja que los de luminancia, con elfin de lograr mejores tasas de compresion (40).

43

3. IMAGEN 3D/ESTEREOSCOPICA

Figura 3.22: (38) Deformacion de imagen.

Figura 3.23: Sistema RGB.

Existen dos tipos de transformaciones de color, la Transformacion de Com-ponentes Reversible RCT (Reversible Component Transformation) y la Transfor-macion de Componentes Irreversible ICT (Irreversible Component Transformation)(40).

44

3.5 Procesamiento

Figura 3.24: (38) Capas del Espacio de Color YCbCr.

Las cuales se muestran a continuacion:[YCb

Cr

]=

[0.299 0.587 0.114

−0.16875 −0.33126 0.50.5 −0.41869 −0.08131

] [RGB

](3.2)[

RGB

]=

[1.0 0 0.1141.0 −0.34413 −0.714141.0 1.772 0

] [YCb

Cr

]. (3.3)

La RCT se utiliza para codificacion con y sin perdida, junto con la transfor-mada wavelet reversible 5/3. La transformacion RCT hacia adelante se consiguepor medio de la ecuacion 3.4, mientras que la transformacion RCT inversa por laecuacion 3.5. [

YCb

Cr

]=

[ ⌊R+2G+B

4

⌋R−GB −G

][RGB

](3.4)

[RGB

]=

[Y −

⌊Cr+Cb

4

⌋Cb +GCr +G

] [YCb

Cr

](3.5)

3.5.5 Transformada WaveletEn la Transformada Wavelet Discreta, DWT (Discrete Wavelet Transform), yasea reversible o irreversible por cada componente, la imagen de entrada I esseparada en diferentes frecuencias y orientaciones espaciales. Por lo tanto, Ise descompone en un conjunto de planos wavelet w de diferentes frecuencias

45

3. IMAGEN 3D/ESTEREOSCOPICA

espaciales, donde cada plano wavelet contiene diferentes detalles en diferentesresoluciones espaciales. Ası, la DWT es descrita por la siguiente ecuacion:

DWT {I} =n∑

s=1

∑o=v,h,d

ωos + cn (3.6)

La DWT se realiza con el fin de filtrar cada fila y cada columna de la imagenI usando un filtro pasa bajas y un filtro pasa altas. Ya que este procedimientoderiva en doblar el numero de muestras, la forma de salida de cada filtro esmuestreada por 2, por lo tanto, la frecuencia de muestreo permanece constante.No es importante si las filas o las columnas de la matriz de componentes se filtranprimero, ya que la DWT resultante sera la misma. La transformacion reversiblese lleva a cabo por medio del filtro 5/3, su filtro de analisis y su respectivo filtro desıntesis de coeficientes se describen en la Tabla 3.2. La transformacion irreversiblees implementada por medio del filtro 9/7 y a tabla 3.3 ilustra su filtro de analisisy su filtro de sıntesis.

Tabla 3.2: Filtro de Analisis y Sintesis 5/3.

Analysis Filteri Low-Pass High-Pass

Filter hL(i) Filter hH(i)0 6/8 1±1 2/8 -1/2±2 -1/8

Synthesis Filteri Low-Pass High-Pass

Filter hL(i) Filter hH(i)0 1 6/8±1 1/2 -2/8±2 -1/8

Tabla 3.3: Filtro de Analisis y Sintesis 9/7.

Analysis Filteri Low-Pass High-Pass

Filter hL(i) Filter hH(i)0 0.6029490182363579 1.115087052456994±1 0.2668641184428723 -0.5912717631142470±2 -0.07822326652898785 -0.05754352622849957±3 -0.01686411844287495 0.09127176311424948±4 0.02674875741080976

Synthesis Filteri Low-Pass High-Pass

Filter hL(i) Filter hH(i)0 1.115087052456994 0.6029490182363579±1 0.5912717631142470 -0.2668641184428723±2 -0.05754352622849957 -0.07822326652898785±3 -0.09127176311424948 0.01686411844287495±4 0.02674875741080976

Las etapas de filtrado,siendo n el numero de planos wavelet, depende de suimplementacion. Sin embargo, teniendo en cuenta el equilibrio entre la calidadde la imagen y la relacion de compresion, algunos autores afirman que el mejor

46

3.5 Procesamiento

resultado se obtiene con n=3 (35). La figura 3.25 muestra la DWT generada dela componente Y de la imagen Peppers con n=3.

Figura 3.25: Tres niveles de descomposicion de la transfomada Wavelet.(38)

3.5.6 Contraste VisualEl contraste visual comprende de dos efectos importanes: asimilacion y contraste,Figura 3.26. Los rectangulos grises horizontales se agrupan en dos grandes barrasgrises verticales. Estas barras grises, sin embargo, no estan en el mismo planoperceptivo. La imagen de la izquierda parece estar por delante de las barras ne-gras, por lo que al compararlas parece esta ultima mas clara. En tanto que laimagen de la derecha parece estar por detras de las barras negras, y ası contrastacon el blanco del fondo, lo que determina que aparezca mas oscura (41).

En este caso en la Figura 3.27. el problema es determinar el grado de grisde las casillas del tablero. Medir unicamente la luz procedente de la superficie(la luminancia) no es suficiente. Una sombra la atenua, ası que una superficieblanca bajo una sombra refleja menos luz que una superficie oscura bajo una luzbrillante. El sistema visual humano utiliza diversos atajos para determinar dondehay sombras y compensarlas, y ası restablecer el color real del objeto. El primerefecto se basa en el contraste local. Bajo la sombra o no, una casilla mas claraque sus vecinas es probablemente mas clara que la media, y viceversa. En laFigura 3.27, la casilla B esta rodeada de casillas mas oscuras. Por ello, aunquela casilla B es fısicamente oscura, aparece clara en comparacion con sus vecinas.La casilla A, recıprocamente, al estar rodeada de casillas mas claras aparece mas

47

3. IMAGEN 3D/ESTEREOSCOPICA

Figura 3.26: Efecto de Contraste Visual.(13)

oscura todavıa de lo que en realidad es. Un segundo efecto se basa en el hechode que las sombras suelen tener bordes difusos. El sistema visual humano tiendea ignorar los cambios graduales de luz para determinar el color de las superficiessin dejarse enganar por las sombras. En la misma figura, la casilla B esta bajouna sombra, ya que sus bordes son difusos y aparece un objeto (el cilindro) quese interpreta como el causante de la sombra (41).

Por ultimo, la forma en cruz de las uniones entre las casillas es normalmenteuna indicacion de que los bordes deben interpretarse como cambios bruscos decolor mas que como influencias de las sombras o de la iluminacion. Ası que seinterpreta que la casilla B es del mismo color que la casilla blanca situada endiagonal con ella. Como pasa con la mayorıa de las llamadas ilusiones opticas,este efecto descubierto hace pocos anos por el profesor del MIT, Edward Adelson,demuestra el exito mas que el fracaso del sistema visual. Lo importante para elconocimiento real del entorno es obtener de la forma mas fiable posible infor-macion acerca de la naturaleza real de los objetos, y por ello el sistema visualhumano se dota de diversos medios para, en la inmensa mayorıa de los casos, nodejarse enganar por las condiciones de luz externas al objeto (41).

3.5.7 Induccion CromaticaEl Modelo de Induccion Cromatica empleando una transformada Wavelet CIWaM(Chromatic Induction Wavelet Model) (39), es un modelo de percepcion visual delSVH de bajo nivel. CIWaM modela el proceso de induccion cromatica perceptualdel SVH, esto es, estima la imagen percibida por un observador a una distanciad. Es decir, dada una imagen I y una distancia de observacion d, CIWaM obtieneuna estimacion de la imagen perceptual Ip que al visualizar se percibe una imagenI a una distancia d. CIWaM se basa en solo tres importantes propiedades de losestımulos: frecuencia espacial, orientacion espacial y contraste envolvente. Estastres propiedades permiten unificar la asimilacion cromatica y los fenomenos decontraste, ası como algunos otros procesos perceptuales tales como los procesosperceptivos de prominencia (39). El modelo CIWaM toma una imagen de entradaI y la descompone en un conjunto de planos wavelet ws,o de diferentes escalas

48

3.5 Procesamiento

Figura 3.27: Efecto Sombra mediante asimilacion y contraste.

espaciales s (es decir, frecuencia espacial v) y diferentes orientaciones espacialeso. Y se describe como:

I =n∑

s=1

∑o=v,h,dgl

ωs,o + cn , (3.7)

donde s = 1, . . . , n, n es el numero de planos wavelet cn es el plano residual.o = v, h, d representa las orientaciones verticales y horizontales.

La imagen perceptual Ip se recupera mediante la ponderacion de los coefi-cientes wavelet ws,o utilizando la Funcion de Sensibilidad al Contraste ampliadae-CSF (extended Contrast Sensitivity Function, Figura 3.28. La e-CSF es unaextension de la CSF psicofısica (22) que considera informacion colindante espacial(denotada por r), la distancia de observacion (denotada por d) y la frecuencia vi-sual (denotada por v, que esta relacionada a la frecuencia espacial por la distanciade observacion).

Figura 3.28: (a) representacion grafica para el canal de luminancia, (b) Perfilesde la misma superficie a lo largo de la frecuencia espacial (38).

49

3. IMAGEN 3D/ESTEREOSCOPICA

IP =n∑

s=1

∑o=v,h,dgl

α(v, r)ωs,o + cn , (3.8)

3.5.8 Aplicando el algoritmo DIBR

En el diagrama de la Figura 3.29 se muestra el algoritmo DIBR, este algoritmoes el principal elemento que trabaja con el relleno de agujeros para generar el parestereoscopico y es esencial por ende el efecto 3D. El proceso que comprende elalgoritmo DIBR se describe como:

1. Se leen las columnas.

2. Se verifica si existe agujeros, en caso de ser ası, se dirije a CIWaM. En casode no ser ası seguira el proceso.

3. Se pasa a la siguiente columna para la lectura.

4. Se analiza si el agujero ya esta lleno, en caso de ser ası, se acabara el procesoy se concluira el rellenado.

5. En caso de que no se haya concluido el proceso de rellenado se regresara aleer la columna nuevamente y se repetira el proceso nuevamente.

La sintetizacion en DIBR, tambien conocida como generacion del par estereo-scopico, se divide en dos pasos:

1) La informacion de la textura se reproyecta en el mundo 3D utilizando lainformacion de profundidad por pıxel.

2) El espacio 3D se proyecta en el plano de la imagen 2D de la camara virtual.

Las reproyecciones de 2D a 3D y de 3D a 2D se denominan deformacion deimagenes, Figura 3.30.

• (f) Es el mapa de disparidad de la imagen original que se observa en (a).

• (b) Vista virtual utilizando el mapa de profundidad de filtro Gaussiano quese observa en (g).

• (h) Corresponde a la proyeccion de vista de desenfoque de (c).

• (i) Es el resultado por el metodo propuesto por llenado de Muller (11).

• (e) El resultado del metodo de llenado agujero propuesto por Ndjiki-Nya(11).

50

3.5 Procesamiento

Figura 3.29: Algoritmo dibr.

• (e) El resultado del metodo de llenado agujero propuesto por Tanimoto(11).

• (j) Resultado del metodo propuesto por el agujero de llenado Koppel (11).

Un problema crıtico en DIBR es que las regiones incluidas en la vista originalson visibles en la vista virtual y es particularmente problematico en el caso de laextrapolacion mas alla de la lınea de base de los puntos de vista original.

Tomando como base el diagrama de bloques de la Figura 3.31, en el mapa deprofundidad de filtrada de 3.30(g) se utiliza para deformar la vista original comose muestra en 3.30(a) a la posicion virtual. El filtro pasa bajas del mapa de pro-fundidad conduce a distorsiones geometricas en la vista virtual como se observaen 3.30(b). Las distorsiones son especialmente notables en las transiciones defondo plano. Ademas, la persona en primer plano esta ampliando a la izquierda.

Ası, el mapa de profundidad es pre procesado con un filtro paso bajas gaus-siano 2D de esta manera se suavizan grandes discontinuidades en el mapa de

51

3. IMAGEN 3D/ESTEREOSCOPICA

Figura 3.30: Deformacion de imagen mediante el relleno de agujeros.

profundidad. El mapa de profundidad filtrado se utiliza para deformar la vistaoriginal a la vista virtual.

Figura 3.31: Mapa de profundidad donde se preprocesa con filtro pasa bajasgaussiano para el relleno de agujeros.

En el diagrama de bloques de la Figura 3.32 muestra el enfoque propuesto porTanimoto y Muller para una vista de escenario de extrapolacion. La informacionde la profundidad de pıxeles se utiliza para deformar el imagen original a la vistavirtual. Posteriormente, Tanimoto llena los agujeros en la imagen virtual. Mullerllena los agujeros de lınea con el fondo de pixeles vecinos.

Ademas, en el diagrama de bloques de la Figura 3.33 se muestra enfoque prop-uesto por Ndjiki-Nya. La imagen original y el pixel asociado a la informacion deprofundidad esta deformado a la vista original. Entonces, el mapa de profundidad

52

3.6 Herramientas para procesar DIBR

Figura 3.32: Sısntesis propuesta para el escenario de extrapolacion por Tanimotoy Muller.

se llena. Finalmente, los agujeros en la imagen son inicializados y posteriormenterefinados con la sıntesis de textura.

Figura 3.33: Diagrama a bloques donde se muestra el proceso resultando al finalel relleno de agujeros.

3.6 Herramientas para procesar DIBR

3.6.1 MatLabEs un lenguaje de programacion que ofrece un entorno de desarrollo integrado(IDE) con un lenguaje de programacion propio, nace de las necesidades computa-cionales cientıficas, matematicas y de ingenierıa, por lo que Matlab comprendeun lenguaje de alto nivel y la incorporacion de funciones graficas mas alla delos lenguajes como C/C++. El lenguaje MATLAB dispone de dos herramientasadicionales que expanden sus prestaciones, Simulink(plataforma de simulacionmultidomino) y GUIDE ( Editor de interfaces de Usuario), ademas de ampliarlas capacidades de MATLAB con las cajas de herramientas. Matematicas y op-timizacion, estadıstica y analisis de datos, disenos de sistemas de control, proce-samiento de imagen son algunas de las caracterısticas de MATLAB.

EL procesamiento digital de senales en Matlab es un conjunto de tecnicas quese aplican en las imagenes digitales con el objetivo de mejorar la calidad, siendoque es una tecnica cuyo objetivo es obtener a partir de una imagen origen otra

53

3. IMAGEN 3D/ESTEREOSCOPICA

final para una aplicacion especıfica. Por otro lado el procesamiento digital deimagenes se aplica para optimizar o enfatizar cierta informacion para conseguirun efecto especial de ella.

Algunas de las caracterısticas sobresalientes de MatLab es su amplio contenidode funciones, amplio soporte matematico, es de alta precision y la integracion condispositivos de hardware, siendo ası una herramienta poderosa y capaz de disenarefectos en tercera dimension, realizando tratamiento a las imagenes gracias alprocesamiento digital de imagenes.

En conjunto con las caracterısticas, el procesamiento digital de imagenes daun gran impulso ya que incorpora el hardware, empleando ası el computo en par-alelo dandole mayor velocidad al procesamiento de la imagen, al mismo tiempoque la precision y de esta manera se obtendran resultados muy aproximados a losplanteados en un menor tiempo. (34)

Matlab es una herramienta de vital importancia en el desarrollo de la apli-cacion TheAteR3D ya que se emplean caracterısticas que ofrecen junto con elalgoritmo DIBR y ffmpeg para poder lograr el efecto 3D, a continuacion se mues-tran una de las funciones basicas que junto a herraminetas:

• Para leer una imagen desde el disco duro se requiere la siguiente instruccion:

ImagenRGB=imread(’archivo.ext’);

Donde:

– ImagenRGB indica que se trabajara con una imagen digital.

– imread es la instruccion para leer una imagen.

– archivo.ext es el nombre del archivo con el que se trabajara.

• Para desplegar una imagen se emplea la siguiente instruccion:

imshow(’archivo.ext’);

Donde:

– imshow es la instruccion para visualizar una imagen.

• Para la escritura de una imagen se emplea la siguiente instruccion:

imwrite(Imagen_RGB,’archivo.ext’);

54

3.6 Herramientas para procesar DIBR

Donde:

– imwrite es la instruccion para escribir una imagen.

• Para binarizar una imagen se emplea la siguiente instruccion:

Imagen_RGB=im2bw(imagen,level);

Donde:

– im2bw es la instruccion que binariza la imagen con la qie se estatrabajando.

– level es el nivel del humbral con el que se trabaja, este va de 0 a 1.

• Para transformar a escala de grises la imagen izquierda se emplea la sigu-iente instruccion:

I1 = im2double(rgb2gray(Left));

Donde:

– I1 es la imagen izquierda.

– rgb2gray imagen a escala de grises.

• Para transformar a escala de grises la imagen derecha se emplea la siguienteinstruccion:

I2 = im2double(rgb2gray(Right));

Donde:

– I2 es la imagen derecha.

• Para utilizar el algoritmo DIBR y calcular la imagen derecha a partir de laizquierda se ocupa la siguiente instruccion:

[Left Right] = dibr(’A.ext’, ’A1.ext’);

Donde:

55

3. IMAGEN 3D/ESTEREOSCOPICA

– [left Rigth] es un arreglo de imagenes donde se genera el par estereo.

– dibr es la funcion empleada para el relleno de disparidad.

– A.ext es la imagen izquierda original RGB y A1.ext es el mapa dedisparidad.

• Para superponer dos imagenes se emplea la siguiente instruccion:

cvexShowMatches(I1, I2);

Donde:

– cvexShowMatches es la instruccion que se emplea para interpolarlas dos imagenes generadas en el par estereoscopico y visualizarlasanaglifamente.

3.6.2 FFMPEGUn video es la transmision de imagenes y reconstruccion por medios electronicosdigitales o analogicos de una secuencia de imagenes que representan escenas enmovimiento.

FFMPEG es una herramineta utilizada por MatLab que trabaja de manerarapida con audio y video, lee un numero arbitrario de entrada de archivos y escribeen un numero arbitrario de archivos de salida como se muestra en la Figura 3.34,los que se especifican mediante un nombre de archivo de salida sin formato. Cadaarchivo de entrada o de salida puede contener en principio, cualquier numero decorrientes de diferentes tipos audio o video. (25)

Ademas, FFMPEG es una herramineta capaz de trabajar con diferentes tiposde formatos como: AVI, MPG, FLV, MPEG, AMR, MPG, WAV, entre otros.

Algunas de las funciones principales que ofrece la herramienta FFMPEGson relevantes para TheAteR3D, ya que para lograr el efecto 3D se requiere untratamiento a cada imagen, para ello es necesario convertir un video a imagenesy FFMPEG ofrece esta funcion ademas de otras que se muestran a continuacion:

• Para obtener informacion de un vıdeo en general se utiliza la siguienteinstrucion:

ffmpeg -i video.ext

Donde:

56

3.6 Herramientas para procesar DIBR

Figura 3.34: Diagrama de funcionamiento de FFmpeg.(38)

– ffmpeg indica que se trabajara con la herramienta con extension .exe.

– -i indica con que archivo se va a trabajar el cual se muestra enseguida.

– video.ext es el nombre del archivo con el que se trabajara.

• Para convertir un vıdeo en imagenes se utiliza:

ffmpeg -i video.ext imagen%4d.ext

Donde:

– imagen indica el archivo de salida 4d indica el orden que lleva laimagen, dando un espacio de 4 digitos y se acomoden en forma sucesiva,(0000, 0001, 0002, etc).

• Extraer el audio de un video y guardarlo en formato MP3 se emplea lainstruccion:

ffmpeg -i video.ext -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.ext

Donde:

– -vn indica desactivar la grabacion del video.

57

3. IMAGEN 3D/ESTEREOSCOPICA

– -ar establece la frecuencia del audio, por default es de 44100Hz.

– -ac inidica el numero de canales del audio, seguido del numero decanales.

– -ab indica la calidad del audio, por default son 64kbps, la maximasera la del audio original con el que se trabaje, el minimo es de 1kbps.

– -f indica el formato de salida.– audio.ext es el nombre del archivo que resultara a la salida.

• Para convertir una secuencia de imagenes a video se emplea:

ffmpeg -f image2 -i imagenes%4d.ext video.ext

Donde:

– imagenes-4d.ext establece la entrada, el 4d hace referencia a la nu-meracion de las imagenes.

– video.ext establece la salida, en este caso es un video.

Las variables tanto de nombre de archivos, calidad de audio, frecuencia,numero de canales que se requiera son modificadas segun la necesidad y el resul-tado deseado.

FFMPEG es un complemento importante para el algoritmo TheAteR3D, yaque para la conversion del video 2D a 3D se debera convertir a imagenes llevandoel tratamineto a cada una de las mismasy obtener el resultado final. El videoobtenido como resultado del algoritmo TheAteR3D se recupera sin el audio.

58

Capıtulo 4

Algoritmo TheAteR3D

4.1 Introduccion

En este capıtulo se desarrolla la metodologıa del algoritmo TheAteR3D. Ademas,se describe el proceso de cada etapa y ası provocar el efecto de profundidad (3D).

El diseno del algoritmo TheAteR3D parte de un vıdeo convencional o grabacion,procesamiento, almacenamiento y finalmente transmision de imagenes. Estas sereconstruyen por medios electronicos digitales o analogicos de una secuencia deimagenes que representan escenas en movimiento. El video digital consiste en lacaptura de una serie de fotografıas, en este contexto llamadas fotogramas, queluego se muestran en secuencia y a gran velocidad para reconstruir la escena orig-inal.

El sistema digital 3D simula el efecto que se produce en el ojo humano mien-tras percibe un objeto tridimensional. El proceso se genera cuando se proyectandigitalmente las imagenes del ojo izquierdo y derecho a grandes velocidades porsegundo intercaladamente. Los filtros permiten ver las imagenes al ojo correspon-diente y decodificarlas utilizando lentes especiales, como lentes anaglifos (Rojo yCyan).

Debido a la velocidad de imagenes que se procesan para generar un video,cada uno de los ojos del espectador recibe una sola imagen (izquierda y derechacorrespondientemente) con puntos de vista distintos, haciendo que el cerebro in-terprete profundidad mediante la superposicion de las imagenes. Para que unasecuencia de imagenes o fotogramas se considere como video y el espectador loperciba como tal, se procesan como mınimo 24 imagenes cada segundo. En el de-sarrollo del algoritmo TheAteR3D se procesaran 30 imagenes cada segundo paraque el video sea apreciado de manera natural.

TheAteR3D es un sistema que parte de un video teatral 2D, inicialmente se frag-menta en imagenes donde es procesado. Ası, se segmentan regiones para obtenerlas zonas de interes y finalmente aplicar el efecto 3D en cada una de las imagenes.Se realiza el tratamiento a cada imagen, posteriormente el proceso de conversionnuevamente de imagen a video. Un punto importante del algoritmo TheAteR3D

59

4. ALGORITMO THEATER3D

es la calibracion de la disparidad en la visualizacion del video, ya que dependeraen gran medida de la aceptacion del publico.

El algoritmo propuesto esta enfocado a la visualizacion de videos 3D con cali-dad de la experiencia aceptable para publico de entre 15 a 25 anos de edad, dandoası la representacion de obras teatrales en monitores convencionales usando lentesanaglifos, tomando como punto de partida un frente y un fondo en escena, em-pleando dos capas de segmentacion para lograr el efecto 3D.

Por otro lado TheAteR3D lleva una serie de procesos que se cumplen para al-canzar al resultado deseado, en este caso a lograr el efecto de profundidad o 3D.

Un punto a favor del algoritmo es que no emplea una calibracion de camaras,ya que la caracterıstica principal es que emplea un modelo de camara unica, dela imagen original izquierda se supone la imagen derecha mediante el algoritmoDIBR. Ofreciendo bajos costos y facil acceso a jovenes.

Un punto importante a recalcar es que TheAteR3D esta enfocado a fomentaruna actividad cultural como el teatro, con la finalidad de ofrecer representacionesvisuales atractivas a bajo costo.

Las etapas de TheAteR3D son:

• Descomposicion del video,

• Reconocimineto del escenario 3D,

• Generacion del par estereoscopico,

• Representacion, y

• Generacion del video final.

Dichas etapas se muestran en el diagrama a bloques de la Figura 4.1, con lo quefinalmente se ofrecen representaciones de videos teatrales con calidad de experi-encia aceptable (QoE).

4.2 Descomposicion del video

En la Figura 4.2 se observa esta etapa, donde el objetivo es fragmentar el video enimagenes individuales o fotogramas. Cuanto mayor sea el numero de fotogramaspor segundo sera mejor la calidad del video.

Para este proceso se utiliza la herramienta ffmpeg, esta herramienta que esprocesada por MatLab cuya tarea es fragmentar el video en imagenes y llevar eltratamiento a cada una de las imagenes por separado.

Es una herramienta que se utiliza en MatLab y a pesar que fue creada enlinux es capaz de funcionar correctamente en Windows. Para que la herramienta

60

4.2 Descomposicion del video

Figura 4.1: Metodologıa del algoritmo TheAteR3D empleado en videos teatrales.

Figura 4.2: Conversion de video en imagenes.

funcione correctamente se guarda en una carpeta de sistema para que MatLabutilice y realizar la tarea de fragmentar el video.

Para fragmentar o descomponer el video se ejecutan las instrucciones sigu-ientes, figura4.3:

entrada=’ffmpeg -i’;

salida=[ruta,’2D%4D.jpg’];

video=[direccion,nombre];

videomejor=[ruta,’videomejor.avi’];

Donde:

• ffmpeg es la herramineta ffmpeg, con extension .exe.

• Con -i se indica el video 2D.

• nombre.avi es un archivo en formato de video y con una extension dada.

• 2D%4D indica como es el formato con que se guardan las imagenes, esdecir, 0001,0002, etc.

61

4. ALGORITMO THEATER3D

Figura 4.3: Se capturan las instrucciones en MatLab para la descomposicion delvideo

.

• entrada es una variable donde se llama el archivo FFMPEG.

• salida indica la ruta donde se almacenan las imagenes.

• videomejor indica la ruta y el nombre en que se guardan las imagenesresultantes.

Se utiliza la extension AVI por ser un formato que ofrece menos perdidas decalidad. Cuando un usuario ingrese un video con otra extension se convertira afomrato AVI.

Finalmente, la herramienta FFMPEG convierte el video a imagenes, la her-ramienta esta configurada para que por cada segundo obtenga 30 imagenes ofotogramas y las guarde en una carpeta especıfica. En la Figura 4.4 se muestracomo FFMPEG las genera y las almacena.

Figura 4.4: Fotogramas de videomejor.avi

.

4.3 Reconocimiento del escenario 3DLa Figura 4.5 muestra el objetivo partiular de esta etapa, es decir, reconocer odetectar la zona deseada que se pretende resaltar en un efecto 3D. Ası, un actoro actriz se detectan como primera capa o frente y el escenario como la segundacapa o fondo.

62

4.3 Reconocimiento del escenario 3D

Figura 4.5: Reconocimiento del actor, mediante detectccion de piel y deteccionde peaton.

Con ayuda del reconocimineto de piel y reconocimiento de peaton, se generael mapa de disparidad o estimcacion de profundidad. Un punto importante esque TheAteR3D solo maneja dos capas, dichas capas ayudan a manejar el nivelde profundidad del video final. Cabe mencionar que entre mas capas se procesenmayor profundidad genera el algoritmo. En el caso de las escenas teatrales solorequerimos emplear dos capas.

Para ello se toma la secuencia de imagenes descompuestas por la herramientaFFMPEG y utiliza la funcion que se muestra a continuacion:

peopleDetector = vision.PeopleDetector;

I=imread([’RESULTADO3D/’,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter=vision.ShapeInserter;

(’BorderColor’,’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Figura 4.6: Se introducen las instrucciones en MatLab.

4.7.

63

4. ALGORITMO THEATER3D

Figura 4.7: Deteccion de piel y peaton.

La deteccion de peaton y de piel, Figura 4.8, es un proceso para generar elmapa de disparidad o DM.

Figura 4.8: Mapa de disparidad.

Dicha estimcacion de la profundidad en un mapa de disparidad (Dispar-ity Map,DM) es una tecnica, que determina la profundidad en diversas capas.Ademas, el DM solo requiere 1(bpp) para generar el par estereoscopico y final-mente se logre realizar el efecto 3D. En caso de no usar el DM se ocuparian48(bpp) por la imagen original y la suposicion de la segunda imagen ya que cadaimagen digital tiene 24(bpp) y eso provoca mayor procesamiento. La propuestaes usar 25(bpp), 24(bpp) por la imagen original izquierda y 1(bpp) por el DM,que calcula la imagen derecha.

TheAteR3D es capaz de realizar el efecto generando mapas de disparidad porcada imagen que se obtiene en el proceso anterior.

64

4.4 Generacion del par estereoscopico

4.4 Generacion del par estereoscopico

Una vez calculado el DM, la siguiente etapa es generar el par estereoscopico. Algenerar el par estereo con MatLab de la imagen izquierda se calculara la imagenderecha con una disparidad o separacion dada.

Figura 4.9: Se genera par estereoscopico mediante el mapa de disparidad.

Para generar el par estereoscopico, parte fundamental del algoritmo, en Mat-Lab se ejecuto la siguiente funcion: Figura 4.10.

[Left Right] = dibr(’buho.jpg’, ’buho1.jpg’)

Figura 4.10: Ejecucion en MatLab del algotimo DIBR.

Donde:

65

4. ALGORITMO THEATER3D

• [Left Rigth] Es una matriz que contiene las imagenes izquierda y derecharespectivamente.

• dibr indica el algoritmo que calcula la imagen derecha a partir de unaizquierda.

• ’buho.jpg’ indica la imagen original, la cual se empleara como imagenizquierda.

• buho1.jpg mapa de disparidad obtenido de el reconocimiento de piel ypeaton.

El proceso de generar el par estereo es complejo, ya que se requiere tiempoconsiderable de procesamiento, para esto se empleara el computo paralelo, parareducir el tiempo en dicho proceso. Las herramientas de computo paralelo que seemplean son nativas deMatLab.

Una vez se ejecuton la funcionDIBR se almacenan sus resultados para contin-uar con las siguientes etapas de TheAteR3D. La Figura 4.11 muestra un ejemplopara observar un par estereoscopico generado en MatLab, ejecutando la sigu-iente instruccion:

imshow([Left Right])

Figura 4.11: Visualizacion de un par estereoscopico en MatLab.

Donde:

• imshow es la instruccion para desplegar graficamente el par estereoscopico.

66

4.5 Representacion

• [Left Right] Es una matriz que contiene las imagenes izquierda y derecharespectivamente.

La figura 4.12 muestra el resaultado de la instruccion imshow del par estere-oscopico. Cabe senalar que en TheAteR3D no despliega los pares estereoscopicos,ya que el proceso se realiza dentro del algoritmo.

Figura 4.12: Se despliega visualmente el par estereoscopico mediante la in-struccion imshow.

4.5 Representacion

Una vez calculado el par estereoscopico, la etapa siguiente es representar la ima-gen compuesta, esta imagen ya es capaz de visualizarse con lentes anaglifos.

Figura 4.13: Etapa de representacion de la imagen compuesta o anaglifa.

La siguiente funcion MatLab se utiliza para obtener una imagen en escal degrises con doblre preicion de punto flotante, Figura 4.14:.

I1 = im2double(rgb2gray(Left));

Donde:

• I1 la imagen en escala de grises con doble presicion.

• im2double conversion a formato de doble presicion.

• rgb2gray convierte cualquier imagen RGB a escala de grises.

67

4. ALGORITMO THEATER3D

Figura 4.14: Se ingresa la funcion en MatLab.

• Left indica la imagen izquierda de entrada.

Una vez convertida en escala de grises la imagen izquierda se lleva el mismoproceso para la imagen derecha. Se introduce la funcion que a continuacionse muestra (figura 4.15), para ası tener las dos imagenes o par estereoscopicoy se aplique el proceso de super poner las dos imagenes y se genere la imagencompuesta 3D compuesta.

I2 = im2double(rgb2gray(Right));

Donde:

• Right indica la imagen derecha de entrada.

El paso sigueinte del algoritmo es interpolrlas para que finalente se genereel efecto 3D anaglifo.. Para ello es necesario ingresar la sigueinte instruccion enMatLab, como se muestra en la (Figura 4.16).

cvexShowMatches(I1, I2);

Donde:

• cvexShowMatches es la funcion que interpola las imagenes generadas delpar estereoscopico.

• (I1, I2) son las dos imagenes que cvexShowMatches interpola.

68

4.5 Representacion

Figura 4.15: Se ingresa la funcion en MatLab.

Figura 4.16: Generacion del efecto 3D anaglifo.

Finalmente Matlab arroja la imagen compuesta o anaglifa, esta imagen yaes capaz de visualizarse con lentes anaglifos e incorporarse a la secuencia de fo-togramas ya tratados para generar el video, (Figura 4.17).

69

4. ALGORITMO THEATER3D

Figura 4.17: Imagen compuesta calculada por cvexShowMatches de MatLab.

4.6 Generacion del vıdeo finalEn la Figura 4.18 se observa el proceso de la etapa final donde el objetivo esconvertir el video final mediante las imagenes que fueron tratadas para obtenerel video 3D de la obra teatral.

Figura 4.18: Video final mediante el algoritmo TheAteR3D.

En esta etapa el algoritmo TheAteR3D lleva a cabo la conversion de lasimagenes tratadas para lograr el efecto 3D anaglifo en un video final. Para ellose utiliza la herramienta FFMPEG la cual es capaz de convertir las imagenesa video. Para componer las imagenes en un video se ejecutan las siguientes in-strucciones:

entrada=ffmpeg -f image2 -i

salida=[ruta,’video3D’, ext]

imagenes=[ruta,’3D%d.tif]

video3D=[entrada,imagenes,’ -r 30 -gscale 1 -pix_ftm rgb48ie’, salida]

Donde:

• Con entrada=ffmpeg -f image2 -i se indica que se generara un video apartir de imagenes con ffmpeg.

• Con salida=[ruta,’video3D’, ext]; se indica la salida.

70

4.7 Interface

• Con imagenes=[ruta,’3Dd.tif ]; se indican las imagenes de entrada.

En la Figura 4.19 se muestra como se introduce la secuencia de instruccionesen MatLab para realizar el proceso de generar el video final.

Una vez realizado todas las herramientas para de conversion de un video de2D a 3D con TheAteR3D se disena una aplicacion que sea amigable con el usuario.

Figura 4.19: Generando el video final mediante el algoritmo TheAteR3D

4.7 Interface

Una limitante de TheAteR3D es que debe el usuario tener instalado MatLab ensu computadora para ası ejecutar la aplicacıon, sin embargo se busca crear laaplicacion con extension .exe para que sea utilizado en cualquier computadora.

Una vez que el video final llego a su ultima etapa de conversion, el siguientepaso es integrarlo a una interface. Ası, se integran en dicha interface todos losprocesos que se utilizan con TheAteR3D. A continuacion se muestra la interfacede TheAteR3D y cada una de las caracterısticas que ofrece.

En la Figura 4.20 se muestra una imagen de bienvenida a la interface, cabemencionar que TheAteR3D puede ser usado en Ingles y Espanol.

Una vez que se elige el lenguaje, se muestra la interface de manera general,Figura 4.22.

Ademas, en la Figura 4.22 se muestra la interface en la cual se hara la con-version de los video y esta dividida por secciones. La seccion 2D visualiza losresultados de conversion y en la parte izquierda se muestra el video 2D que se de-see convertir, en la parte derecha se muestra una ventana mas donde se desplegarala conversion del video 3D. En la parte central se muestran botones que cargan,borran, hacen vista previa y muestra el tiempo de espera para la conversion delvideo.

71

4. ALGORITMO THEATER3D

Figura 4.20: Bienvenida a la interface TheAteR3D

Figura 4.21: Area de trabajo que utiliza TheAteR3D para convertir video a 3D.

En la Figura 4.23 se muestra la seccion 3D en esta seccion se eligen las carac-terısticas del video a convertir.

En la Figura 4.24 se observan los dispositivos de salida en los que TheAteR3D

puede proporcionar, los dispositivos que se pueden elegir son:

• PC.

• Tablet.

• Celular.

• iPod/iPhone.

• Consola Portatil

72

4.7 Interface

Figura 4.22: Area donde se muestra el video original y el video 3D.

Figura 4.23: Propiedades para la conversion del video.

Una vez elegido el dispositivo en el que se desee apreciar el video, se activarala siguiente seccion para elegir el formato que soporta el mismo. Solo se activaranlos formatos que el dispositivo soporta, en esta seccion se utiliza la herramientaffmpeg para los diferentes tipos de formatos.

En la Figura 4.25 se muestra la extension de salida de los formatos queTheAteR3D procesa:

• .avi

• .flv

• .mpeg

73

4. ALGORITMO THEATER3D

Figura 4.24: Dispositivos de salida.

• .mov

• .wmv

• .mp4

• .3gp

Figura 4.25: Formatos de salida del dispositivo a usar.

Un punto importante a considerar es que en caso que se desee convertir paraun dispositivo movil solo la seccion para este se activara, (Figura 4.26). En esta

74

4.7 Interface

seccion hay dos maneras de hacer la conversion, esta la anaglifa o por medio depar estereoscopico. La conversion anaglifa necesitara de lentes que usan filtros decolor azul cyan y rojo. Al elegir el par estereoscopico se podra apreciar con unvisor para que realice la interpolacion de las imagenes, por ejemplo un monitor3D.

Figura 4.26: Forma de conversion, anaglifa o par estereoscopica.Elegido el dispositivo y el formato, como se ve en la Figura 4.27, se da la

opcion de optimizar proceso. En esta pequena seccion se incorpora lo que escomputo paralelo, el computo paralelo que ayuda a optimizar los procesos deconversion en TheAteR3D, y se podra elegir solo una opcion.

Para seguir con la conversion del video, TheAteR3D ofrece la opcion de elegirescenario como se ve en la figura 4.28. Al momento que el usuario elija dis-positivos, formatos y optimizacion, podra elegir un escenario al video que deseeconvertir en 3D, ası situandose en diferentes partes del mundo con solo elegir elescenario de su agrado.

Concluida la conversion del video a 3D,(Figura 4.29) la seccion de almace-namiento se activa, de este modo da las opciones para reproducir el video con-vertido y finalmente guardarlo.

De esta manera es que TheAteR3D convierte los videos teatrales 2D en 3Dincorporando diferentes procesos para obtener el video 3D.

Finalmente se le pide al usuario que guarde el video (Figura 4.30). Una vezrealizado todo el procedimiento de TheAteR3D la siguiente etapa sera experimen-tar la calidad de la experiencia, para ello es necesario realizarle ciertas pruebasde rendimiento.

75

4. ALGORITMO THEATER3D

Figura 4.27: Optimizar mediante computo paralelo.

Figura 4.28: Eleccion de escenarios para el video 3D.

76

4.7 Interface

Figura 4.29: Reproduce y guarda el video 3D.

Figura 4.30: Almacenamiento del video 3D procesado con el algoritmoTheAteR3D

77

4. ALGORITMO THEATER3D

78

Capıtulo 5

Resultados Experimentales

5.1 Introduccion

Una vez se realizaron todos los procesos de TheAteR3D convirtiendo videos 2D a3D, la siguiente etapa es conocer la calidad de experiencia (QoE). La cual va di-rigida hacia el publico de 15 a 25 anos, ya que uno de los objetivos de TheAteR3D

es dar difusion de representaciones teatrales de forma alternativa mediante 3D ajovenes. En los recientes anos los jovenes se enfocan en eventos masivos como:conciertos musicales, futbol, etc. Ası la meta de este capitulo es conocer el gradode aceptacion de la aplicacion y se cumpla con los objetivos planteados.

Est experimento se lleva con un analisis de varianza, que finalmente a losdatos recabados se le aplica para finalmente obtener la tabla ANOVA. La cualarroja datos estadisticos de aceptacion o rechazo de una hipotesis planteada.

Ası la calidad de experiencia es la sencacion que el publico experimenta alapreciar el video 3D convertido por TheAteR3D, en este estudio se pretendenverificar las siguientes sensaciones:

• Ser realista.

• Apreciar el efecto 3D.

• Experimentar malestares.

5.2 Definicion del experimento

Para conocer el grado de aceptacion de TheAteR3D, se realizaron una serie depruebas a 30 personas con encuestas hacia el publico tomado aleatoreamente.Para ello a continucacion de describen los pasos, materiales y actividades que sesiguieron:

Materiales

• Pantalla LCD 19” para visualizar los videos 3D.

79

5. RESULTADOS EXPERIMENTALES

• Lentes anaglifos (Cyan y Rojo).

• Lapices.

• Sillas comodas al publico.

• Atenuador de luz.

• Hojas de papel.

• Computadora.

• Sala Obscura.

Actividades

• Apreciar el video original 2D,

• Apreciar el video 3D convertido por TheAteR3D, y

• Aplicar la encuesta al publico.

5.3 ProcedimientoInicialmente se le pidio a 30 personas de diferentes edades participar en las prue-bas de TheAteR3D. Las personas fueron tomadas de la Escuela Superior de Inge-nierıa Quimica e Indsutrias Extractivas (ESIQIE). La muestra de 30 personas sedividio en tres grupos de 10, (A,B,C). Para realizar la prueba el grupo A pasoa la sala con la luz encendida, el grupo B paso a la sala con la luz atenuada yfinalmente el grupo C paso a la sala con la luz apagada.

80

5.4 Encuesta

Una vez las personas acomodadas se les dio una pequena introduccion de lasactividades que consta el experiemento que prueba el algoritmo TheAteR3D.

Los pasos que siguieron los grupos A,B y C fueron los siguientes:

1. Se introdujeron a la sala,

2. Se sento al publico en las sillas de tal manera que la pantalla quedara frentea ellos,

3. Se dio reproduccion al video original 2D para que pudieran apreciarlo,

4. Una vez ya concluida la reproduccion del video, se dio un pequeno espaciode tiempo para relejar la vista,

5. Se le pidio al publico que se colocaran los lentes 3D anaglifos,

6. Se mostro el video 3D convertido por TheAteR3D, y

7. Finalmente se les aplico la encuesta.

El motivo por el cual se les mostro al publico el video 2D fue para que ellosnotaran la diferencia entre ellos.

5.4 EncuestaA continuacion se muestra la encuesta que se les aplico a los 3 grupos de 10 per-sonas:

1. ¿Que edad tienes?.

2. Sexo.

3. ¿Tiene problemas visuales?.

4. ¿Aprecio el efecto 3D?.

5. ¿Experimento alguna molestia?.

6. ¿Fue comodo apreciar el video 3D?.

7. ¿Que calificacion del 1 al 10 le pondrıa al video 3D?.

Al aplicar la encuesta se busca que las respuestas sean cortas, como un SI oun NO, en el caso de SEXO, H o M para despues binarizarlas de manera rapiday llegar a una conclusion estadistica.

81

5. RESULTADOS EXPERIMENTALES

5.5 Grado de aceptacion

A continuacion se muestran los resultados de las encuestas a las 30 personas:

• Para la variable Sexo, Hombre se representa con 1 y Mujer con 0.

• Para los problemas visuales, 1 para si y 0 para no.

• Para apreciacion del efecto 3D, 1 para si y 0 para no.

• Para molestias, 1 para si y 0 para no.

• Para comodidad de apreciar el video, 1 para si y 0 para no.

• Para calificacion del video va del 1 al 10.

• Edad de la tabla representa la edad de las personas que participaron en elexperimento.

• Sexo de la tabla representa el sexo de las personas que participaron en elexperimento.

• la letra a de la tabla representa a la variable problemas visuales.

• la letra b de la tabla representa a la variable apreciacion del efecto 3D.

• la letra c de la tabla representa a la variable molestias al ver el video.

• la letra d de la tabla representa a la variable comodidad el ver el videoconvertido.

• la letra e de la tabla representa a la variable calificacion del video del 1 al10.

Los datos son capturados en MatLab y son guardados con el nombre dedatos, para despues aplicar el metodo estadıstico ANOVA para conocer si elalgorimo cumple con los objetivos planteados.

Al ingresar datos, se calcula la tabla ANOVA dentro de una funcion lla-mada histograma con las variables que se especificaron, es decir, a, b, c, d, y e.Con ello se pretende obtener el resultado si se acepta o se deshecha la hipotesisplanteada, Tabla 5.1.

En la Figura 5.1 se muestra el analisis del ANOVA ya calculado por mediode MatLab, mostrando un valor de 0.8571. Lo que indica que cumple con lahipotesis ya que la probabilidad encontrada (85.45%) es mayor que el estadıgrafoF (57%), es decir,

Prob>F

82

5.5 Grado de aceptacion

Tabla 5.1: Se muestran los datos recabados de las encuestas.

Edad Sexo a b c d e

24 0 1 1 0 1 1025 1 1 1 0 1 818 0 0 1 0 1 1020 0 0 1 0 1 918 1 0 1 0 1 920 0 0 1 0 1 821 0 0 1 0 1 917 1 1 1 0 1 914 0 1 1 0 0 425 0 1 1 0 1 922 1 0 1 0 1 1019 1 1 1 0 1 924 0 1 1 0 1 817 1 0 1 0 1 812 1 1 1 0 0 526 0 0 1 0 0 324 0 1 1 0 1 928 0 0 1 0 0 422 1 1 1 0 1 922 0 1 1 0 1 1027 1 0 1 0 0 422 0 0 1 0 1 820 1 0 1 0 1 816 1 0 1 0 1 915 1 0 1 0 1 915 1 1 1 0 1 817 1 1 1 0 1 1019 0 0 1 0 1 1014 1 1 1 0 0 318 1 1 1 0 1 8

. Entonces se acepta la hipotesis original o nula que tiene un grado de aceptacionimportante.

Haciendo un analisis en tabla 5.1, b y c no tienen variaciones en los resultadosobtenidos, el siguiente paso es descartar los efectos de estas dos variables, comose muestra en la tabla 5.2.

Se descartan las variables que no cumplen con el rango de edades a quien estadirigido TheAteR3D, siendo ası que la hipotesis se cumple dejando las edades que

83

5. RESULTADOS EXPERIMENTALES

Figura 5.1: Resultado numerico del ANOVA.

no pertenencen al rango que van de los 15 a 25 anos. Se eliminan 6 registros dela tabla y a continuacion se muestra la tabla quedando solo 24, Tabla 5.3.

Con los datos de la Tabla 5.3 se aplica nuevamente el analsis ANOVA yadescartando los dos factores que no tienen variaciones y eliminando las edadesque no cumplen con el rango planteado.

En la Figura 5.2 se observa que el grado de aceptacion mayor de la hipotesisplanteada, eliminando ası los errores aleatoreos de las variables b y c. De igualmanera se verifica que las edades que no cumplen con el rango influian en los re-sultados. Una vez se cumplieron estos puntos, el estudio ANOVA es mas preciso.

Figura 5.2: Resultado numerico del ANOVA.

El codigo que se muestra a continuacion es utilizado para realizar el estudioestadistico ANOVA, esta codificado con las especificaciones para obtener el his-tograma del grado de aceptacion deseado:

84

5.5 Grado de aceptacion

Tabla 5.2: Se muestran los datos recabados descartando los factores b y c.

Edad Sexo a d e

24 0 1 1 1025 1 1 1 818 0 0 1 1020 0 0 1 918 1 0 1 920 0 0 1 821 0 0 1 917 1 1 1 914 0 1 0 425 0 1 1 922 1 0 1 1019 1 1 1 924 0 1 1 817 1 0 1 812 1 1 0 526 0 0 0 324 0 1 1 928 0 0 0 422 1 1 1 922 0 1 1 1027 1 0 0 422 0 0 1 820 1 0 1 816 1 0 1 915 1 0 1 915 1 1 1 817 1 1 1 1019 0 0 1 1014 1 1 0 318 1 1 1 8

function histograma = prueba (datos)

a=datos;

b=logical(a);

b(:,2)=a(:,2)>mean(a(:,2));

b(:,3)=a(:,3)>mean(a(:,3));

c=fliplr(b);

d=zeros(size(a,1),1);

85

5. RESULTADOS EXPERIMENTALES

Tabla 5.3: Se muestran los datos recabados descartando las edades que no perte-nencen al rango.

Edad Sexo a d e

24 0 1 1 1025 1 1 1 818 0 0 1 1020 0 0 1 918 1 0 1 920 0 0 1 821 0 0 1 917 1 1 1 925 0 1 1 922 1 0 1 1019 1 1 1 924 0 1 1 817 1 0 1 824 0 1 1 922 1 1 1 922 0 1 1 1022 0 0 1 820 1 0 1 816 1 0 1 915 1 0 1 915 1 1 1 817 1 1 1 1019 0 0 1 1018 1 1 1 8

for i=1:1:size(a,1)

d(i,1)=binvec2dec(c(i,:));

end

h=hist(d,16)

hist(d,16)

for i=1:1:2

for j=1:1:16

if(i==1)

tabla(i,j)=j-1;

else

tabla(i,j)=h(1,j);

end

86

5.5 Grado de aceptacion

end

end

anova1(tabla)

end

Dado que

Prob>F

es mayor que F, se cumplen con los objetivos planteados y por lo tanto el algo-ritmo TheAteR3D se acepta, ya que la calidad de experiencia (QoE) es aceptadapor el publico a quien va dirigido.

Finalmente el experimento realizado con las 24 personas descartando las vari-bles b y c junto con las edades que no entran en el rango deseado, fue tambienaceptado, ya que el algoritmo TheAteR3D tiene una aceptacion del 97.51% quees mayor al estadıgrafo F con una valor de apenas el 43%.

87

5. RESULTADOS EXPERIMENTALES

88

Capıtulo 6

Conclusiones

6.1 Conclusiones Finales

Con el desarrollo del algoritmo TheAteR3D para convertir videos 2D a 3D aplica-dos a escenarios teatrales con base a los temas expuestos se llega a la conclusionque:

• Se analizaron los principios y orıgenes del efecto 3D/estereocopico dirigidoa la conversion de video a 3D.

• Se expusieron las herramientas necesarias como MatLab y ffmpeg paralograr el efecto 3D, ası como las tecnicas aplicadas para desarrollar el algo-ritmo.

• Con base a las herramientas expuestas se proceso digitalmente el tratamientode imagenes, siendo necesarias para convertir un escenrio 2D a uno 3D medi-ante TheAteR3D aplicando ası mismo algoritmos de vision 3D/estereoscopica.

Finalmente, los resultados experimentales concluyen que, TheAteR3D cumplecon el grado de aceptacion del publico a quien esta dirigido siendo (15 a 25 anos),marcando ası una Calidad de experiencia (QoE) deseada.

6.2 Contribuciones

Algunas de las contribuciones al desarrollar el proyecto TheAteR3D son:

• Conseguir bajos costos teniendo ası acceso para al publico en la tecnologıa3D.

• Ofrecer representaciones alternativas a obras teatrales.

• Integrar el algorimo al proyecto Clave SIP: 20150508 Evaluacion de laCalidad de Imagenes Digital Estereoscopicas.

89

6. CONCLUSIONES

6.3 Trabajo Futuro

En el desarrollo del algoritmo TheAteR3D algunas de las mejoras que se inte-graran o trabajos a futuro para complementar el algoritmo son:

• Optimizacion de codigo, mediante un lenguaje nativo como C/C++ o Java.

• Procesamiento en dispositivo movil.

• Desarrollarllo mediante tecnica polarizada y holografica.

90

Apendice A

Encuesta de consumo cultural

A continuacion se muestra un estudio sobre el consumo cultural realizado porDANE (5)

Figura A.1: Diapositiva 1

91

A. ENCUESTA DE CONSUMO CULTURAL

Figura A.2: Diapositiva 2

Figura A.3: Diapositiva 3

92

Figura A.4: Diapositiva 4

Figura A.5: Diapositiva 5

93

A. ENCUESTA DE CONSUMO CULTURAL

Figura A.6: Diapositiva 6

Figura A.7: Diapositiva 7

94

Figura A.8: Diapositiva 8

Figura A.9: Diapositiva 9

95

A. ENCUESTA DE CONSUMO CULTURAL

Figura A.10: Diapositiva 10

Figura A.11: Diapositiva 11

96

Figura A.12: Diapositiva 12

Figura A.13: Diapositiva 13

97

A. ENCUESTA DE CONSUMO CULTURAL

Figura A.14: Diapositiva 14

Figura A.15: Diapositiva 15

98

Figura A.16: Diapositiva 16

Figura A.17: Diapositiva 17

99

A. ENCUESTA DE CONSUMO CULTURAL

Figura A.18: Diapositiva 18

Figura A.19: Diapositiva 19

100

Figura A.20: Diapositiva 20

Figura A.21: Diapositiva 21

101

A. ENCUESTA DE CONSUMO CULTURAL

Figura A.22: Diapositiva 22

Figura A.23: Diapositiva 23

102

Figura A.24: Diapositiva 24

103

A. ENCUESTA DE CONSUMO CULTURAL

104

Apendice B

Codigo de TheAteR3D

B.1 Descomposicion del video a imagenes

system(’md RESULTADO33D’)

tiempo_inicio = cputime;

ruta=’RESULTADO33D/’;

entrada=’ffmpeg -i ’;

salida=[ruta,’2D%4d.jpg’];

audio=[ruta,’audio.mp3’];

video=’WP_20150204_002.mp4’;

vidmejor=[ruta,’videomejor.avi’];

FPS=’ -r 30’;

CALIDAD=[entrada,video,’ -s 640x480 -qscale 2 -pix_fmt rgb48le -f avi ’...

,vidmejor];

VIDEO=[entrada,vidmejor,FPS,’ -qscale 2 -pix_fmt rgb48le ’,salida];

AUDIO=[entrada,vidmejor,audio];

system(CALIDAD)

system(VIDEO)

system(AUDIO)

total = cputime - tiempo_inicio

105

B. CODIGO DE THEATER3D

B.2 dibr

function [Left Right] = dibr(color,depth)

if ischar(color) %Is the image a string or a array?

color=imread(color);

else

color=uint8(color);

end

rows = size(color,1);

cols = size(color,2);

[Y1,U1,V1]=rgb2yuv(color(:,:,1),color(:,:,2),color(:,:,3),’YUV420_8’);

Y = cell(1,1);

U = cell(1,1);

V = cell(1,1);

Y{1,1}=double(Y1);

U{1,1}=double(U1);

V{1,1}=double(V1);

if ischar(depth)

depth=imread(depth);

else

depth=uint8(depth);

end

rows1 = size(depth,1);

cols1 = size(depth,2);

Y2 = cell(1,1);

depth=single(depth(:,:,1));

if max(depth(:))>8

depth=single((depth - min(depth(:)))./(max(depth(:))-min(depth(:))));

depth=depth.*8;

end

Y2{1,1}=uint8(depth);

for nf = 1:size(Y,2)

L{nf}.luma = zeros(rows,cols);

L{nf}.chroma1 = zeros(rows/2, cols/2);

L{nf}.chroma2 = zeros(rows/2, cols/2);

106

B.2 dibr

R{nf}.luma = zeros(rows,cols);

R{nf}.chroma1 = zeros(rows/2, cols/2);

R{nf}.chroma2 = zeros(rows/2, cols/2);

end

mask.luma = zeros(rows,cols);

mask.chroma1 = zeros(rows/2, cols/2);

S = 58;

N = 256;

shiftx = zeros(1,N);

for i = 1:N

shiftx(1,i) = find_shiftMC3(i-1, cols);

end

for nf=1:size(Y,2)

D = Y2{nf};

for i = 1:rows

for j = cols:-1:1

shift = shiftx(1,(D(i,j)+1));

if(j-shift+S<cols)

L{nf}.luma(i,j+S-shift)= Y{nf}(i,j);

mask.luma(i,j+S-shift) = 1;

end

end

for j = 1:cols

if(mask.luma(i,j)==0)

if(j-7<1)

107

B. CODIGO DE THEATER3D

L{nf}.luma(i,j) = Y{nf}(i,j);

else

L{nf}.luma(i,j) = sum(L{nf}.luma(i,j-7:j-4))/4;

end

end

end

end

for i = 1:rows/2

for j = cols/2:-1:1

shift = shiftx(1,(D(i*2,j*2)+1));

if(j-ceil(shift/2)+S/2<cols/2)

L{nf}.chroma1(i,j-ceil(shift/2)+S/2)= U{nf}(i,j);

L{nf}.chroma2(i,j-ceil(shift/2)+S/2)= V{nf}(i,j);

mask.chroma1(i,j-ceil(shift/2)+S/2) = 1;

end

end

for j = 1:cols/2

if(mask.chroma1(i,j)==0)

if(j-2<1)

L{nf}.chroma1(i,j) = U{nf}(i,j);

L{nf}.chroma2(i,j) = V{nf}(i,j);

else

L{nf}.chroma1(i,j) = sum(L{nf}.chroma1(i,j-2:j-1))/2;

L{nf}.chroma2(i,j) = sum(L{nf}.chroma2(i,j-2:j-1))/2;

end

end

end

end

mask.luma = zeros(rows,cols);

mask.chroma1 = zeros(rows/2, cols/2);

for i = 1:rows

for j = 1:cols

shift = shiftx(1,(D(i,j)+1));

108

B.2 dibr

if(j+shift-S>1)

R{nf}.luma(i,j+shift-S)= Y{nf}(i,j);

mask.luma(i,j+shift-S) = 1;

end

end

for j=cols:-1:1

if(mask.luma(i,j) == 0)

if(j+7>cols)

R{nf}.luma(i,j) = Y{nf}(i,j);

else

R{nf}.luma(i,j) = sum(R{nf}.luma(i,j+4:j+7))/4;

end

end

end

end

for i = 1:rows/2

for j = 1:cols/2

shift = shiftx(1,(D(i*2,j*2)+1));

if(j+ceil(shift/2)-S/2>1)

R{nf}.chroma1(i,j+ceil(shift/2)-S/2)= U{nf}(i,j);

R{nf}.chroma2(i,j+ceil(shift/2)-S/2)= V{nf}(i,j);

mask.chroma1(i,j+ceil(shift/2)-S/2) = 1;

end

end

for j=cols/2:-1:1

if(mask.chroma1(i,j) == 0)

if(j+2>cols/2)

R{nf}.chroma1(i,j) = U{nf}(i,j);

R{nf}.chroma2(i,j) = V{nf}(i,j);

else

R{nf}.chroma1(i,j) = sum(R{nf}.chroma1(i,j+1:j+2))/2;

R{nf}.chroma2(i,j) = sum(R{nf}.chroma2(i,j+1:j+2))/2;

end

109

B. CODIGO DE THEATER3D

end

end

end

end

Left=yuv2rgb(L{1}.luma,L{1}.chroma1,L{1}.chroma2,’YUV420_8’);

Right=yuv2rgb(R{1}.luma,R{1}.chroma1,R{1}.chroma2,’YUV420_8’);

B.3 Deteccion Peatones

peopleDetector = vision.PeopleDetector;

I=imread([’RESULTADO3D/’,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,’Custom’,...

’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

s

B.4 Composicion del video a partir de imagenes

%[nombre,direccion]=uigetfile({’*.mov;*.avi’},’Cargar’)

system(’md RESULTADO33D’)

%system(’move 3DTheater C:/’)

tiempo_inicio = cputime;

ruta=’RESULTADO33D/’;

entrada=’ffmpeg -i ’;

salida=[ruta,’2D%4d.jpg’];

audio=[ruta,’audio.mp3’];

video=’WP_20150204_002.mp4’;

vidmejor=[ruta,’videomejor.avi’];

110

B.4 Composicion del video a partir de imagenes

FPS=’ -r 30’;

CALIDAD=[entrada,video,’ -s 640x480 -qscale 2 -pix_fmt’,...

’rgb48le -f avi ’,vidmejor];

VIDEO=[entrada,vidmejor,FPS,’ -qscale 2 -pix_fmt rgb48le ’,salida];

AUDIO=[entrada,vidmejor,audio];

system(CALIDAD)

system(VIDEO)

system(AUDIO)

total = cputime - tiempo_inicio

system(’ffmpeg -i mascara.mov -s 640x480 -qscale 2 -pix_fmt’,...

’rgb48le -f avi videomask.avi’);

Seccion de Codigo a medir

system(’md FOTOS’);

md crea carpeta

cd accesa a carpeta

cd.. sale de la carpeta

rd borra carpeta

yuvfps -s 40:1

misma taza de entrada y salida

blanco y gris

negro y gris

mplay(’video5.avi’)

111

B. CODIGO DE THEATER3D

112

Apendice C

Interface de TheAteR3D

function varargout = interface(varargin)

gui_Singleton = 1;

gui_State = struct(’gui_Name’, mfilename, ...

’gui_Singleton’, gui_Singleton, ...

’gui_OpeningFcn’, @interface_OpeningFcn, ...

’gui_OutputFcn’, @interface_OutputFcn, ...

’gui_LayoutFcn’, [] , ...

’gui_Callback’, []);

if nargin && ischar(varargin{1})

gui_State.gui_Callback = str2func(varargin{1});

end

if nargout

[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});

else

gui_mainfcn(gui_State, varargin{:});

end

function interface_OpeningFcn(hObject, eventdata, handles, varargin)

handles.output = hObject;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function varargout = interface_OutputFcn(hObject, eventdata, handles)

varargout{1} = handles.output;

set(handles.Borrar,’Enable’,’off’)

set(handles.VistaPrevia,’Enable’,’off’)

113

C. INTERFACE DE THEATER3D

set(handles.Convertir,’Enable’,’off’)

set(handles.Pc,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.Aavi,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.Wwmv,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.Mmov,’Enable’,’off’)

set(handles.Fflv,’Enable’,’off’)

set(handles.Confirmar,’Enable’,’off’)

set(handles.Computo,’Enable’,’off’)

set(handles.Computo1,’Enable’,’off’)

set(handles.Reproducir,’Enable’,’off’)

set(handles.Guardar,’Enable’,’off’)

set(handles.pares,’Enable’,’off’)

set(handles.anaglifo,’Enable’,’off’)

set(handles.elecmovil,’Enable’,’off’)

set(handles.actescenarios,’Enable’,’off’)

set(handles.escenario1,’Enable’,’off’)

set(handles.escenario2,’Enable’,’off’)

set(handles.escenario3,’Enable’,’off’)

set(handles.escenario4,’Enable’,’off’)

set(handles.menuescenario1,’Enable’,’off’)

set(handles.menuescenario2,’Enable’,’off’)

set(handles.menuescenario3,’Enable’,’off’)

set(handles.menuescenario4,’Enable’,’off’)

set(handles.Aavi,’Value’,0)

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

set(handles.Pc,’Value’,0);

set(handles.Tablet,’Value’,0);

set(handles.Celular,’Value’,0);

set(handles.Ipod,’Value’,0);

114

set(handles.PSP,’Value’,0);

set(handles.pares,’Value’,0);

set(handles.anaglifo,’Value’,0);

set(handles.escenario1,’Value’,0);

set(handles.escenario2,’Value’,0);

set(handles.escenario3,’Value’,0);

set(handles.escenario4,’Value’,0);

set(handles.menuescenario1,’Value’,1);

set(handles.menuescenario2,’Value’,1);

set(handles.menuescenario3,’Value’,1);

set(handles.menuescenario4,’Value’,1);

set(handles.actescenarios,’Value’,0);

set(handles.Computo,’Value’,0);

set(handles.Computo1,’Value’,0);

imagen2D3D=dir(’2D3D.png’);

img=imread(imagen2D3D.name);

axes(handles.axes1);

image(img);

axis off

axes(handles.axes2);

image(img);

axis off

%-------------------------------------------------------------------------

function Cargar_Callback(hObject, eventdata, handles)

[nombre,direccion]=uigetfile({’*.mov;*.avi;*.mp4;*.mpeg;*.flv,’...

’*.3pg;*wmv’},’Cargar’)

if nombre == 0

return

end

system(’md 3DTheater’)

system(’move 3DTheater C:/’)

ruta=’C:/3DTheater/’;

entrada=’ffmpeg -ss 0.5 -i ’;%<--------------duracion

entrada1=’ffmpeg -i ’;

video=[direccion,nombre];

vidmejor=[ruta,’videomejor.avi’];

115

C. INTERFACE DE THEATER3D

salida=[ruta,’vistaprevia.jpg’];

CALIDAD=[entrada1,video,’ -s 640x480 -qscale 2 -pix_fmt rgb48le’,...

’ -f avi ’,vidmejor];

Imagen=[entrada,vidmejor,’ -vframes 1 ’,salida];

system(CALIDAD);

system(Imagen);

imagen=dir([ruta,’vistaprevia*.jpg’]);

img=imread([ruta,imagen.name]);

axes(handles.axes1);

image(img);

axis off

set(handles.Cargar,’Enable’,’off’)

set(handles.Borrar,’Enable’,’on’)

handles.videomejor=vidmejor;

guidata(hObject,handles);

set(handles.Pc,’Enable’,’on’)

set(handles.Tablet,’Enable’,’on’)

set(handles.Celular,’Enable’,’on’)

set(handles.Ipod,’Enable’,’on’)

set(handles.PSP,’Enable’,’on’)

%-------------------------------------------------------------------------

function Borrar_Callback(hObject, eventdata, handles)

system(’DEL /s /q "C:\3DTheater\*.*"’);

imagen2D3D=dir(’2D3D.png’);

img=imread(imagen2D3D.name);

axes(handles.axes1);

image(img);

axis off

axes(handles.axes2);

image(img);

116

axis off

set(handles.Cargar,’Enable’,’on’)

set(handles.Borrar,’Enable’,’off’)

set(handles.Pc,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.actescenarios,’Enable’,’off’)

set(handles.escenario1,’Enable’,’off’)

set(handles.escenario2,’Enable’,’off’)

set(handles.escenario3,’Enable’,’off’)

set(handles.escenario4,’Enable’,’off’)

set(handles.menuescenario1,’Enable’,’off’)

set(handles.menuescenario2,’Enable’,’off’)

set(handles.menuescenario3,’Enable’,’off’)

set(handles.menuescenario4,’Enable’,’off’)

set(handles.VistaPrevia,’Enable’,’off’)

set(handles.Convertir,’Enable’,’off’)

set(handles.Aavi,’Value’,0)

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

set(handles.Pc,’Value’,0);

set(handles.Tablet,’Value’,0);

set(handles.Celular,’Value’,0);

set(handles.Ipod,’Value’,0);

set(handles.PSP,’Value’,0);

set(handles.pares,’Value’,0);

set(handles.anaglifo,’Value’,0);

set(handles.escenario1,’Value’,0);

set(handles.escenario2,’Value’,0);

set(handles.escenario3,’Value’,0);

set(handles.escenario4,’Value’,0);

set(handles.menuescenario1,’Value’,1);

set(handles.menuescenario2,’Value’,1);

set(handles.menuescenario3,’Value’,1);

117

C. INTERFACE DE THEATER3D

set(handles.menuescenario4,’Value’,1);

set(handles.actescenarios,’Value’,0);

set(handles.Computo,’Value’,0);

set(handles.Computo1,’Value’,0);

%-------------------------------------------------------------------------

function VistaPrevia_Callback(hObject, eventdata, handles)

set(handles.VistaPrevia,’Enable’,’off’)

tiempo_inicio = cputime;

ruta=’C:/3DTheater/’;

Imagen=imread([ruta,’vistaprevia.jpg’]);

estadoparestereo = get(handles.pares,’Value’);

if (estadoparestereo == 1 & handles.montaje == 0);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

imwrite(CT_Image,[ruta,’mascaravistaprevia.tif’]);

[Left, Right] = dibr([ruta,’vistaprevia.jpg’],...

[ruta,’mascaravistaprevia.tif’]);

imwrite([Left,Right],[ruta,’vistaprevia3D.png’]);

imagen3D=dir([ruta,’vistaprevia3D.png’]);

img=imread([ruta,imagen3D.name]);

axes(handles.axes2);

image(img);

axis off

imagenlentes=dir(’usadispositivo.jpg’);

img1=imread(imagenlentes.name);

axes(handles.axes1);

image(img1);

axis off

total = cputime - tiempo_inicio;

total=floor(total);

set(handles.text1,’String’,total);

118

set(handles.text3,’String’,’seg’);

elseif(estadoparestereo == 1 & handles.montaje == 1)

msgbox(’En caso de tener activado mas de un escenario, solo se’...

’ mostrara en Vista Previa la primer eleccion’,’ Theater 3D ’);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

imwrite(CT_Image,[ruta,’mascaravistaprevia.tif’]);

escenario1=imread(handles.fondo1);

escenario1 = imresize(escenario1, [size(Imagen,1) size(Imagen,2)]);

I = rgb2gray(Imagen);

mascara=uint8(I<65);

mascaracomplemento=uint8(I>=65);

filtro=uint8(zeros(size(I)));

filtro(:,:,1)=mascara;

filtro(:,:,2)=mascara;

filtro(:,:,3)=mascara;

filtrocomplemento=uint8(zeros(size(I)));

filtrocomplemento(:,:,1)=mascaracomplemento;

filtrocomplemento(:,:,2)=mascaracomplemento;

filtrocomplemento(:,:,3)=mascaracomplemento;

resultadocomplemento=escenario1.*filtrocomplemento;

resultado=Imagen.*filtro;

filtrado=resultadocomplemento+resultado;

imwrite(filtrado,[ruta,’montajevistaprevia.tif’]);

[Left, Right] = dibr([ruta,’montajevistaprevia.tif’],...

[ruta,’mascaravistaprevia.tif’]);

imwrite([Left,Right],[ruta,’vistaprevia3D.png’]);

imagen3D=dir([ruta,’vistaprevia3D.png’]);

img=imread([ruta,imagen3D.name]);

axes(handles.axes2);

image(img);

axis off

imagenlentes=dir(’usadispositivo.jpg’);

img1=imread(imagenlentes.name);

119

C. INTERFACE DE THEATER3D

axes(handles.axes1);

image(img1);

axis off

total = cputime - tiempo_inicio;

total=floor(total);

set(handles.text1,’String’,total);

set(handles.text3,’String’,’seg’);

elseif (handles.montaje==0 & estadoparestereo==0)

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

imwrite(CT_Image,[ruta,’mascaravistaprevia.tif’]);

[Left, Right] = dibr([ruta,’vistaprevia.jpg’],...

[ruta,’mascaravistaprevia.tif’]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figura 1

PlotImage=I.cdata;

NoImage=sprintf([ruta,’vistaprevia3D%d’]);

imwrite(PlotImage(32:510,84:722,:),[ruta,’vistaprevia3D.png’]);

imagen3D=dir([ruta,’vistaprevia3D.png’]);

img=imread([ruta,imagen3D.name]);

axes(handles.axes2);

image(img);

axis off

imagenlentes=dir(’usalentes3d.jpg’);

img1=imread(imagenlentes.name);

axes(handles.axes1);

image(img1);

axis off

total = cputime - tiempo_inicio;

120

total=floor(total);

set(handles.text1,’String’,total);

set(handles.text3,’String’,’seg’);

elseif(handles.montaje==1 & estadoparestereo==0)

msgbox(’En caso de tener activado mas de un escenario, solo se’,...

’ mostrara en Vista Previa la primer eleccion’,’ Theater 3D ’);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

imwrite(CT_Image,[ruta,’mascaravistaprevia.tif’]);

escenario1=imread(handles.fondo1);

escenario1 = imresize(escenario1, [size(Imagen,1) size(Imagen,2)]);

I = rgb2gray(Imagen);

mascara=uint8(I<65);

mascaracomplemento=uint8(I>=65);

filtro=uint8(zeros(size(I)));

filtro(:,:,1)=mascara;

filtro(:,:,2)=mascara;

filtro(:,:,3)=mascara;

filtrocomplemento=uint8(zeros(size(I)));

filtrocomplemento(:,:,1)=mascaracomplemento;

filtrocomplemento(:,:,2)=mascaracomplemento;

filtrocomplemento(:,:,3)=mascaracomplemento;

resultadocomplemento=escenario1.*filtrocomplemento;

resultado=Imagen.*filtro;

filtrado=resultadocomplemento+resultado;

imwrite(filtrado,[ruta,’montajevistaprevia.tif’]);

[Left, Right] = dibr([ruta,’montajevistaprevia.tif’],...

[ruta,’mascaravistaprevia.tif’]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figura 1

PlotImage=I.cdata;

NoImage=sprintf([ruta,’vistaprevia3D%d’]);

121

C. INTERFACE DE THEATER3D

imwrite(PlotImage(32:510,84:722,:),[ruta,’vistaprevia3D.png’]);

imagenlentes=dir(’usalentes3d.jpg’);

img1=imread(imagenlentes.name);

axes(handles.axes1);

image(img1);

axis off

img=imread([ruta,’vistaprevia3D.png’]);

axes(handles.axes2);

image(img);

axis off

total = cputime - tiempo_inicio;

total=floor(total);

set(handles.text1,’String’,total);

set(handles.text3,’String’,’seg’);

end

set(handles.VistaPrevia,’Enable’,’on’)

set(handles.Borrar,’Enable’,’on’)

%-------------------------------------------------------------------------

function text1_CreateFcn(hObject, eventdata, handles)

function text3_CreateFcn(hObject, eventdata, handles)

%-------------------------------------------------------------------------

function Pc_Callback(hObject, eventdata, handles)

estadoPC = get(handles.Pc,’Value’);

if estadoPC == 1

set(handles.Borrar,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.Aavi,’Enable’,’on’)

set(handles.Mmp4,’Enable’,’on’)

122

set(handles.Mmpeg,’Enable’,’on’)

set(handles.Wwmv,’Enable’,’on’)

set(handles.T3gp,’Enable’,’on’)

set(handles.Mmov,’Enable’,’on’)

set(handles.Fflv,’Enable’,’on’)

set(handles.Confirmar,’Enable’,’on’)

else

set(handles.Aavi,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.Wwmv,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.Mmov,’Enable’,’off’)

set(handles.Fflv,’Enable’,’off’)

set(handles.Confirmar,’Enable’,’off’)

set(handles.Tablet,’Enable’,’on’)

set(handles.Celular,’Enable’,’on’)

set(handles.Ipod,’Enable’,’on’)

set(handles.PSP,’Enable’,’on’)

set(handles.Aavi,’Value’,0);

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

end

%-------------------------------------------------------------------------

function Tablet_Callback(hObject, eventdata, handles)

estadoTablet = get(handles.Tablet,’Value’);

if estadoTablet == 1

set(handles.Borrar,’Enable’,’off’)

set(handles.Pc,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’on’)

set(handles.Mmpeg,’Enable’,’on’)

123

C. INTERFACE DE THEATER3D

set(handles.T3gp,’Enable’,’on’)

set(handles.Confirmar,’Enable’,’on’)

else

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.Confirmar,’Enable’,’off’)

set(handles.Pc,’Enable’,’on’)

set(handles.Celular,’Enable’,’on’)

set(handles.Ipod,’Enable’,’on’)

set(handles.PSP,’Enable’,’on’)

set(handles.Aavi,’Value’,0);

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

end

%-------------------------------------------------------------------------

function Celular_Callback(hObject, ~, handles)

estadoCelular = get(handles.Celular,’Value’);

if estadoCelular == 1

set(handles.Borrar,’Enable’,’off’)

set(handles.Pc,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’on’)

set(handles.Mmpeg,’Enable’,’on’)

set(handles.T3gp,’Enable’,’on’)

set(handles.Confirmar,’Enable’,’on’)

else

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.pares,’Enable’,’off’)

124

set(handles.Pc,’Enable’,’on’)

set(handles.Tablet,’Enable’,’on’)

set(handles.Ipod,’Enable’,’on’)

set(handles.PSP,’Enable’,’on’)

set(handles.Aavi,’Value’,0);

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

end

%-------------------------------------------------------------------------

function Ipod_Callback(hObject, eventdata, handles)

estadoIpod = get(handles.Ipod,’Value’);

if estadoIpod == 1

set(handles.Borrar,’Enable’,’off’)

set(handles.Pc,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’on’)

set(handles.Mmpeg,’Enable’,’on’)

set(handles.T3gp,’Enable’,’on’)

set(handles.Confirmar,’Enable’,’on’)

else

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.Confirmar,’Enable’,’off’)

set(handles.Pc,’Enable’,’on’)

set(handles.Tablet,’Enable’,’on’)

set(handles.Celular,’Enable’,’on’)

set(handles.PSP,’Enable’,’on’)

set(handles.Aavi,’Value’,0);

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

125

C. INTERFACE DE THEATER3D

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

end

%-------------------------------------------------------------------------

function PSP_Callback(hObject, eventdata, handles)

estadoPSP = get(handles.PSP,’Value’);

if estadoPSP == 1

set(handles.Borrar,’Enable’,’off’)

set(handles.Pc,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’on’)

set(handles.Mmpeg,’Enable’,’on’)

set(handles.T3gp,’Enable’,’on’)

set(handles.Confirmar,’Enable’,’on’)

else

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.Confirmar,’Enable’,’off’)

set(handles.Pc,’Enable’,’on’)

set(handles.Tablet,’Enable’,’on’)

set(handles.Celular,’Enable’,’on’)

set(handles.Ipod,’Enable’,’on’)

set(handles.Aavi,’Value’,0);

set(handles.Fflv,’Value’,0);

set(handles.Mmpeg,’Value’,0);

set(handles.Mmov,’Value’,0);

set(handles.Wwmv,’Value’,0);

set(handles.Mmp4,’Value’,0);

set(handles.T3gp,’Value’,0);

end

%-------------------------------------------------------------------------

function Confirmar_Callback(hObject, eventdata, handles)

estadoAvi = get(handles.Aavi,’Value’);

126

estadoFlv = get(handles.Fflv,’Value’);

estadoMpeg = get(handles.Mmpeg,’Value’);

estadoMov = get(handles.Mmov,’Value’);

estadoWmv = get(handles.Wwmv,’Value’);

estadoMp4 = get(handles.Mmp4,’Value’);

estado3gp = get(handles.T3gp,’Value’);

EdoCelular = get(handles.Celular,’Value’);

EdoIpod = get(handles.Ipod,’Value’);

if estadoAvi | estadoFlv | estadoMpeg |estadoMov | estadoWmv,...

| estadoMp4 | estado3gp == 1

set(handles.Computo,’Enable’,’on’)

set(handles.Computo1,’Enable’,’on’)

set(handles.Pc,’Enable’,’off’)

set(handles.Tablet,’Enable’,’off’)

set(handles.Celular,’Enable’,’off’)

set(handles.Ipod,’Enable’,’off’)

set(handles.PSP,’Enable’,’off’)

set(handles.Aavi,’Enable’,’off’)

set(handles.Mmp4,’Enable’,’off’)

set(handles.Mmpeg,’Enable’,’off’)

set(handles.Wwmv,’Enable’,’off’)

set(handles.T3gp,’Enable’,’off’)

set(handles.Mmov,’Enable’,’off’)

set(handles.Fflv,’Enable’,’off’)

set(handles.Confirmar,’Enable’,’off’)

else

warndlg(’Debe seleccionar un tipo de extension de salida’,...

’3DTheater’);

end

if estadoAvi == 1

ext=’.avi’;

elseif estadoFlv == 1

ext=’.flv’;

elseif estadoMpeg == 1

ext=’.mpeg’;

127

C. INTERFACE DE THEATER3D

elseif estadoMov == 1

ext=’.mov’;

elseif estadoWmv == 1

ext=’.wmv’;

elseif estadoMp4 == 1

ext=’.mp4’;

else

ext=’.3gp’;

end

if (EdoCelular |EdoIpod ==1) & (estadoMpeg |estadoMp4 | estado3gp == 1)

set(handles.pares,’Enable’,’on’)

set(handles.anaglifo,’Enable’,’on’)

set(handles.Computo,’Enable’,’off’)

set(handles.Computo1,’Enable’,’off’)

set(handles.elecmovil,’Enable’,’on’)

elseif(EdoCelular |EdoIpod ==1) & (estadoMpeg |estadoMp4,...

| estado3gp == 0)

set(handles.elecmovil,’Enable’,’off’)

set(handles.pares,’Enable’,’off’)

set(handles.anaglifo,’Enable’,’off’)

end

handles.extension=ext;

guidata(hObject,handles);

%-------------------------------------------------------------------------

function Computo_Callback(hObject, eventdata, handles)

estadoComputo = get(handles.Computo,’Value’);

if estadoComputo==1

set(handles.Computo1,’Enable’,’off’)

set(handles.Computo,’Enable’,’off’)

parpool;

msgbox(’Computo paralelo Activado’,’ Theater 3D ’);

set(handles.Computo,’Enable’,’on’)

set(handles.actescenarios,’Enable’,’on’)

128

else

set(handles.actescenarios,’Enable’,’off’)

set(handles.Computo1,’Enable’,’on’)

delete(gcp);

end

%-------------------------------------------------------------------------

function Computo1_Callback(hObject, eventdata, handles)

estadoComputo1 = get(handles.Computo1,’Value’);

if estadoComputo1==1

set(handles.Computo,’Enable’,’off’)

set(handles.actescenarios,’Enable’,’on’)

else

set(handles.Computo,’Enable’,’on’)

set(handles.actescenarios,’Enable’,’off’)

end

%-------------------------------------------------------------------------

function Convertir_Callback(hObject, eventdata, handles)

EdoPC = get(handles.Pc,’Value’);

EdoTablet = get(handles.Tablet,’Value’);

EdoCelular = get(handles.Celular,’Value’);

EdoIpod = get(handles.Ipod,’Value’);

EdoPSP = get(handles.PSP,’Value’);

Escenarios = get(handles.actescenarios,’Value’);

escenarios1 = get(handles.escenario1,’Value’);

escenarios2 = get(handles.escenario2,’Value’);

escenarios3 = get(handles.escenario3,’Value’);

escenarios4 = get(handles.escenario4,’Value’);

estadoparestereo = get(handles.pares,’Value’);

edoavi = get(handles.Aavi,’Value’);

edowmv = get(handles.Wwmv,’Value’);

edoflv = get(handles.Fflv,’Value’);

edomov = get(handles.Mmov,’Value’);

edomp4 = get(handles.Mmp4,’Value’);

edo3gp = get(handles.T3gp,’Value’);

edompeg = get(handles.Mmpeg,’Value’);

129

C. INTERFACE DE THEATER3D

anaglifo = get(handles.anaglifo,’Value’);

ruta=’C:/3DTheater/’;

entrada=’ffmpeg -i ’;

salida=[ruta,’2D%4d.jpg’];

audio=[ruta,’audio.mp3’];

video=handles.videomejor;

FPS=’ -r 30’;

VIDEO=[entrada,video,FPS,’ -qscale 2 -pix_fmt rgb48le ’,salida];

AUDIO=[entrada,video,’ ’,audio];

system(VIDEO)

system(AUDIO)

if ((EdoPC | EdoTablet | EdoPSP | anaglifo== 1) &,...

(Escenarios == 0))

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

130

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],[ruta,m(i).name]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figure 1

PlotImage=I.cdata;

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite(PlotImage(31:510,83:722,:),[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close(bp)

131

C. INTERFACE DE THEATER3D

elseif ((EdoPC | EdoTablet | EdoPSP | anaglifo== 1) &,...

(escenarios1 == 1) & (escenarios2 == 0))

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

b=imread(handles.fondo1);

bp=waitbar(0,’Colocando Escenario...’);

132

for i=1:1:size(a,1)

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

133

C. INTERFACE DE THEATER3D

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],[ruta,m(i).name]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figure 1

PlotImage=I.cdata;

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite(PlotImage(31:510,83:722,:),[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close(bp);

elseif ((EdoPC | EdoTablet | EdoPSP | anaglifo== 1) &,...

( escenarios1 & escenarios2 == 1) & escenarios3==0)

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

134

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

b=imread(handles.fondo1);

b1=imread(handles.fondo2);

bp=waitbar(0,’Colocando Escenario...’);

limite=size(a,1);

condicion=ceil(limite/2);

for i=1:1:size(a,1)

if i<=condicion

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

135

C. INTERFACE DE THEATER3D

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

else

imagen=imread([ruta,a(i).name]);

b1 = imresize(b1, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b1.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

end

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

136

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figure 1

PlotImage=I.cdata;

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

137

C. INTERFACE DE THEATER3D

imwrite(PlotImage(31:510,83:722,:),[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close(bp);

elseif ((EdoPC || EdoTablet | EdoPSP | anaglifo == 1) &,...

(escenarios3 == 1) & escenarios4==0)

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,’Custom’,...

’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

138

end

close (bp);

b=imread(handles.fondo1);

b1=imread(handles.fondo2);

b2=imread(handles.fondo3);

bp=waitbar(0,’Colocando Escenario...’);

limite=size(a,1);

condicion=ceil(limite/3);

for i=1:1:size(a,1)

if i<=condicion

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion & i<=condicion*2

imagen=imread([ruta,a(i).name]);

b1 = imresize(b1, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

139

C. INTERFACE DE THEATER3D

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b1.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion*2

imagen=imread([ruta,a(i).name]);

b2 = imresize(b2, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b2.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

end

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

140

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figure 1

PlotImage=I.cdata;

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite(PlotImage(31:510,83:722,:),[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close(bp);

141

C. INTERFACE DE THEATER3D

elseif ((EdoPC || EdoTablet | EdoPSP | anaglifo == 1) &,...

(escenarios3 & escenarios4 == 1))

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,’Custom’,...

’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

b=imread(handles.fondo1);

b1=imread(handles.fondo2);

b2=imread(handles.fondo3);

142

b3=imread(handles.fondo4);

bp=waitbar(0,’Colocando Escenario...’);

limite=size(a,1);

condicion=ceil(limite/4);

for i=1:1:size(a,1)

if i<=condicion

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion & i<=condicion*2

imagen=imread([ruta,a(i).name]);

b1 = imresize(b1, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b1.*filtro1;

resultado=imagen.*filtro;

143

C. INTERFACE DE THEATER3D

res=resultado1+resultado;

elseif i>condicion*2 & i<=condicion*3

imagen=imread([ruta,a(i).name]);

b2 = imresize(b2, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b2.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion*3

imagen=imread([ruta,a(i).name]);

b3 = imresize(b3, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b3.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

end

if(i>=10 & i<100)

144

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

I1 = im2double(rgb2gray(Left));

I2 = im2double(rgb2gray(Right));

cvexShowMatches(I1, I2);

I = getframe(gcf);

close Figure 1

PlotImage=I.cdata;

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

145

C. INTERFACE DE THEATER3D

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite(PlotImage(31:510,83:722,:),[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close(bp);

elseif (estadoparestereo == 1 & Escenarios == 0)

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

146

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite([Left,Right],[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close (bp);

elseif ((estadoparestereo & escenarios1 == 1) &,...

(escenarios2 == 0))

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

147

C. INTERFACE DE THEATER3D

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

a=dir([ruta,’2D*.jpg’]);

b=imread(handles.fondo1);

bp=waitbar(0,’Colocando Escenario...’);

for i=1:1:size(a,1)

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

148

I = rgb2gray(imagen);

c=uint8(I<80);

c1=uint8(I>=80);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

149

C. INTERFACE DE THEATER3D

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite([Left,Right],[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close (bp);

elseif ((estadoparestereo & escenarios1 & escenarios2 == 1),...

& (escenarios3 == 0))

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

150

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

a=dir([ruta,’2D*.jpg’]);

b=imread(handles.fondo1);

b1=imread(handles.fondo2);

bp=waitbar(0,’Colocando Escenario...’);

limite=size(a,1);

condicion=ceil(limite/2);

for i=1:1:size(a,1)

if i<=condicion

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

151

C. INTERFACE DE THEATER3D

resultado=imagen.*filtro;

res=resultado1+resultado;

else

imagen=imread([ruta,a(i).name]);

b1 = imresize(b1, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b1.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

end

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

152

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite([Left,Right],[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close (bp);

elseif ((estadoparestereo & escenarios1 & escenarios2,...

& escenarios3 == 1) & (escenarios4 == 0))

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

153

C. INTERFACE DE THEATER3D

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

a=dir([ruta,’2D*.jpg’]);

b=imread(handles.fondo1);

b1=imread(handles.fondo2);

b2=imread(handles.fondo3);

bp=waitbar(0,’Colocando Escenario...’);

limite=size(a,1);

condicion=ceil(limite/3);

for i=1:1:size(a,1)

if i<=condicion

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

154

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion & i<=condicion*2

imagen=imread([ruta,a(i).name]);

b1 = imresize(b1, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b1.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion*2

imagen=imread([ruta,a(i).name]);

b2 = imresize(b2, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

155

C. INTERFACE DE THEATER3D

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b2.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

end

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

156

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite([Left,Right],[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close (bp);

elseif (estadoparestereo & escenarios1 & escenarios2 &,...

escenarios3 & escenarios4 == 1)

a=dir([ruta,’2D*.jpg’]);

bp=waitbar(0,’Buscando peatones...’);

for i=1:1:size(a,1)

peopleDetector = vision.PeopleDetector;

I=imread([ruta,a(i).name]);

[bboxes, scores] = step(peopleDetector, I);

shapeInserter = vision.ShapeInserter(’BorderColor’,...

’Custom’,’CustomBorderColor’,[255 255 0]);

I = step(shapeInserter, I, int32(bboxes));

Imagen=imread([ruta,a(i).name]);

Imagen=imread([ruta,a(i).name]);

I = rgb2gray(Imagen);

CT_Image=uint8(I<65);

CT_Image=CT_Image*255;

if(i>=10 & i<100)

NoImage=sprintf(’mascara00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’mascara0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’mascara%d’,i);

157

C. INTERFACE DE THEATER3D

elseif(i<10)

NoImage=sprintf(’mascara000%d’,i);

end

imwrite(CT_Image,[ruta,NoImage,’.tif’]);

waitbar(i/size(a,1),bp);

end

close (bp);

a=dir([ruta,’2D*.jpg’]);

b=imread(handles.fondo1);

b1=imread(handles.fondo2);

b2=imread(handles.fondo3);

b3=imread(handles.fondo4);

bp=waitbar(0,’Colocando Escenario...’);

limite=size(a,1);

condicion=ceil(limite/4);

for i=1:1:size(a,1)

if i<=condicion

imagen=imread([ruta,a(i).name]);

b = imresize(b, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion & i<=condicion*2

158

imagen=imread([ruta,a(i).name]);

b1 = imresize(b1, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b1.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion*2 & i<=condicion*3

imagen=imread([ruta,a(i).name]);

b2 = imresize(b2, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b2.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

elseif i>condicion

imagen=imread([ruta,a(i).name]);

b3 = imresize(b3, [size(imagen,1) size(imagen,2)]);

I = rgb2gray(imagen);

c=uint8(I<65);

c1=uint8(I>=65);

159

C. INTERFACE DE THEATER3D

filtro=uint8(zeros(size(imagen)));

filtro(:,:,1)=c;

filtro(:,:,2)=c;

filtro(:,:,3)=c;

filtro1=uint8(zeros(size(imagen)));

filtro1(:,:,1)=c1;

filtro1(:,:,2)=c1;

filtro1(:,:,3)=c1;

resultado1=b3.*filtro1;

resultado=imagen.*filtro;

res=resultado1+resultado;

end

if(i>=10 & i<100)

NoImage=sprintf(’2D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’2D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’2D%d’,i);

elseif(i<10)

NoImage=sprintf(’2D000%d’,i);

end

imwrite(res,[ruta,NoImage,’.jpg’]);

waitbar(i/size(a,1),bp);

end

close (bp);

imagenes=dir([ruta,’2D*.jpg’]);

m=dir([ruta,’mascara*.tif’]);

bp=waitbar(0,’Convirtiendo a 3D...’);

for i=1:1:size(imagenes,1)

[Left Right] = dibr([ruta,imagenes(i).name],...

[ruta,m(i).name]);

160

if(i>=10 & i<100)

NoImage=sprintf(’3D00%d’,i);

elseif(i>=100 & i<1000)

NoImage=sprintf(’3D0%d’,i);

elseif(i>=1000)

NoImage=sprintf(’3D%d’,i);

elseif(i<10)

NoImage=sprintf(’3D000%d’,i);

end

imwrite([Left,Right],[ruta,NoImage,’.jpg’]);

waitbar(i/size(imagenes,1),bp);

end

close (bp);

end

ext=handles.extension;

ruta=’C:/3DTheater/’;

entrada=’ffmpeg -f image2 -i ’;

salida=[ruta,’video3D’,ext];

audio=[ruta,’audio.mp3’];

imagenes=[ruta,’3D%4d.jpg’];

if(edowmv==1)

video3D=[entrada,imagenes,’ -r 30 -qscale 2 -vcodec’,...

’ msmpeg4 -acodec wmav2 ’,salida];

system(video3D)

elseif(edomp4==1)

video3D=[entrada,imagenes,’ -r 30 -qscale 2 -c:v libx264’,...

’ -pix_fmt yuv420p ’,salida];

system(video3D)

elseif(edompeg==1)

video3D=[entrada,imagenes,’ -r 30 -qscale 2 -vb 20M ’,salida];

system(video3D)

161

C. INTERFACE DE THEATER3D

elseif(edoflv==1)

video3D=[entrada,imagenes,’ -r 30 -qscale 2 -vb 20M ’,salida];

system(video3D)

elseif(edo3gp==1)

salida=[ruta,’video3D.mp4’];

video3D=[entrada,imagenes,’ -r 30 -qscale 2 -c:v libx264’,...

’ -r 30 -pix_fmt yuv420p ’,salida];

system(video3D)

system([’ffmpeg -i ’,ruta,’video3D.mp4 -acodec libvo_aacenc’,...

’ -vcodec libx264 ’,ruta,’video3D’,ext])

elseif(edoavi==1)

video3D=[entrada,imagenes,’ -pattern_type glob -r 30’,...

’ -qscale 2 ’,salida];

system(video3D)

elseif(edomov==1)

salida=[ruta,’video3D.avi’];

video3D=[entrada,imagenes,’ -pattern_type glob’,...

’ -r 30 -qscale 2 ’,ruta,’video3D.avi’];

system(video3D);

system([’ffmpeg -i ’,ruta,’video3D.avi -vcodec copy’,...

’ -acodec libfaac ’,ruta,salida]);

end

set(handles.Reproducir,’Enable’,’on’)

set(handles.Guardar,’Enable’,’on’)

set(handles.actescenarios,’Enable’,’off’)

set(handles.escenario1,’Enable’,’off’)

set(handles.escenario2,’Enable’,’off’)

set(handles.escenario3,’Enable’,’off’)

set(handles.escenario4,’Enable’,’off’)

set(handles.menuescenario1,’Enable’,’off’)

set(handles.menuescenario2,’Enable’,’off’)

set(handles.menuescenario3,’Enable’,’off’)

set(handles.menuescenario4,’Enable’,’off’)

set(handles.VistaPrevia,’Enable’,’off’)

set(handles.Convertir,’Enable’,’off’)

162

%-------------------------------------------------------------------------

function Reproducir_Callback(hObject, eventdata, handles)

ruta=’C:/3DTheater/’;

ext=handles.extension;

mplay([ruta,’video3D’,ext])

set(handles.Reproducir,’Enable’,’off’)

set(handles.actescenarios,’Enable’,’off’)

set(handles.escenario1,’Enable’,’off’)

set(handles.escenario2,’Enable’,’off’)

set(handles.escenario3,’Enable’,’off’)

set(handles.escenario4,’Enable’,’off’)

set(handles.menuescenario1,’Enable’,’off’)

set(handles.menuescenario2,’Enable’,’off’)

set(handles.menuescenario3,’Enable’,’off’)

set(handles.menuescenario4,’Enable’,’off’)

set(handles.VistaPrevia,’Enable’,’off’)

set(handles.Convertir,’Enable’,’off’)

%-------------------------------------------------------------------------

function Guardar_Callback(hObject, eventdata, handles)

edomov = get(handles.Mmov,’Value’);

edo3gp = get(handles.T3gp,’Value’);

ext=handles.extension;

if(edomov == 1)

ruta=’C:/3DTheater/’;

system(’DEL /s /q "C:\3DTheater\*.avi","C:\3DTheater\*.jpg",...

"C:\3DTheater\*.tif",C:\3DTheater\videomejor.avi,...

"C:\3DTheater\*.mp3"’);

msgbox([’Ubicacion del archivo: ’,ruta,’video3D’,ext,],...

’ Theater 3D ’);

elseif(edo3gp == 1)

ruta=’C:/3DTheater/’;

system(’DEL /s /q "C:\3DTheater\*.mp4","C:\3DTheater\*.jpg",...

"C:\3DTheater\*.tif",C:\3DTheater\videomejor.avi,...

"C:\3DTheater\*.mp3"’);

msgbox([’Ubicacion del archivo: ’,ruta,’video3D’,...

ext,],’ Theater 3D ’);

163

C. INTERFACE DE THEATER3D

else

ruta=’C:/3DTheater/’;

system(’DEL /s /q "C:\3DTheater\*.jpg","C:\3DTheater\*.tif",...

C:\3DTheater\videomejor.avi,"C:\3DTheater\*.mp3"’);

msgbox([’Ubicacion del archivo: ’,ruta,’video3D’,ext,],...

’ Theater 3D ’);

end

%-------------------------------------------------------------------------

function Ayuda_Callback(hObject, eventdata, handles)

open(’ayuda.fig’)

%-------------------------------------------------------------------------

function menuescenario1_Callback(hObject, eventdata, handles)

opcion =get(handles.menuescenario1,’Value’);

if(opcion==1)

fondo=0;

op=0;

elseif(opcion==2)

fondo=’paisaje4.jpg’;

op=1;

elseif(opcion==3)

fondo=’paisaje2.jpg’;

op=1;

elseif(opcion==4)

fondo=’paisaje3.jpeg’;

op=1;

end

handles.fondo1=fondo;

handles.montaje=op;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function menuescenario1_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),...

get(0,’defaultUicontrolBackgroundColor’))

set(hObject,’BackgroundColor’,’white’);

end

164

%-------------------------------------------------------------------------

function menuescenario2_Callback(hObject, eventdata, handles)

opcion =get(handles.menuescenario2,’Value’);

if(opcion==1)

fondo=0;

op=0;

elseif(opcion==2)

fondo=’paisaje4.jpg’;

op=1;

elseif(opcion==3)

fondo=’paisaje2.jpg’;

op=1;

elseif(opcion==4)

fondo=’paisaje3.jpeg’;

op=1;

end

handles.fondo2=fondo;

handles.montaje=op;

guidata(hObject, handles);

function menuescenario2_CreateFcn(hObject, eventdata, ~)

if ispc && isequal(get(hObject,’BackgroundColor’),...

get(0,’defaultUicontrolBackgroundColor’))

set(hObject,’BackgroundColor’,’white’);

end

%-------------------------------------------------------------------------

function menuescenario3_Callback(hObject, eventdata, handles)

opcion =get(handles.menuescenario3,’Value’);

if(opcion==1)

fondo=0;

op=0;

elseif(opcion==2)

165

C. INTERFACE DE THEATER3D

fondo=’paisaje4.jpg’;

op=1;

elseif(opcion==3)

fondo=’paisaje2.jpg’;

op=1;

elseif(opcion==4)

fondo=’paisaje3.jpeg’;

op=1;

end

handles.fondo3=fondo;

handles.montaje=op;

guidata(hObject, handles);

function menuescenario3_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),...

get(0,’defaultUicontrolBackgroundColor’))

set(hObject,’BackgroundColor’,’white’);

end

%-------------------------------------------------------------------------

function menuescenario4_Callback(hObject, eventdata, handles)

opcion =get(handles.menuescenario4,’Value’);

if(opcion==1)

fondo=0;

op=0;

elseif(opcion==2)

fondo=’paisaje4.jpg’;

op=1;

elseif(opcion==3)

fondo=’paisaje2.jpg’;

op=1;

elseif(opcion==4)

fondo=’paisaje3.jpeg’;

op=1;

166

end

handles.fondo4=fondo;

handles.montaje=op;

guidata(hObject, handles);

function menuescenario4_CreateFcn(hObject, eventdata, handles)

if ispc && isequal(get(hObject,’BackgroundColor’),...

get(0,’defaultUicontrolBackgroundColor’))

set(hObject,’BackgroundColor’,’white’);

end

%-------------------------------------------------------------------------

function actescenarios_Callback(hObject, eventdata, handles)

estadoactivar = get(handles.actescenarios,’Value’);

if estadoactivar == 1

set(handles.Computo1,’Enable’,’off’)

set(handles.Computo,’Enable’,’off’)

set(handles.actescenarios,’Enable’,’on’)

set(handles.VistaPrevia,’Enable’,’on’)

set(handles.Convertir,’Enable’,’on’)

set(handles.escenario1,’Enable’,’on’)

elseif estadoactivar ==0

set(handles.escenario1,’Enable’,’off’)

set(handles.escenario2,’Enable’,’off’)

set(handles.escenario3,’Enable’,’off’)

set(handles.escenario4,’Enable’,’off’)

set(handles.menuescenario1,’Enable’,’off’)

set(handles.menuescenario2,’Enable’,’off’)

set(handles.menuescenario3,’Enable’,’off’)

set(handles.menuescenario4,’Enable’,’off’)

set(handles.escenario1,’Value’,0);

set(handles.escenario2,’Value’,0);

set(handles.escenario3,’Value’,0);

set(handles.escenario4,’Value’,0);

set(handles.menuescenario1,’Value’,1);

set(handles.menuescenario2,’Value’,1);

set(handles.menuescenario3,’Value’,1);

set(handles.menuescenario4,’Value’,1);

167

C. INTERFACE DE THEATER3D

end

op=0;

handles.montaje=op;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function escenario1_Callback(hObject, eventdata, handles)

estadoactivar = get(handles.escenario1,’Value’);

if estadoactivar == 1

set(handles.menuescenario1,’Enable’,’on’)

set(handles.escenario1,’Enable’,’off’)

set(handles.escenario2,’Enable’,’on’)

actesc=1;

elseif estadoactivar ==0

set(handles.menuescenario1,’Enable’,’off’)

actesc=0;

end

handles.conesc=actesc;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function escenario2_Callback(hObject, eventdata, handles)

estadoactivar = get(handles.escenario2,’Value’);

if estadoactivar == 1

set(handles.menuescenario2,’Enable’,’on’)

set(handles.escenario3,’Enable’,’on’)

set(handles.escenario2,’Enable’,’off’)

actesc2=1;

elseif estadoactivar ==0

set(handles.menuescenario2,’Enable’,’off’)

actesc2=0;

end

168

handles.conesc=actesc2;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function escenario3_Callback(hObject, eventdata, handles)

estadoactivar = get(handles.escenario3,’Value’);

if estadoactivar == 1

set(handles.menuescenario3,’Enable’,’on’)

set(handles.escenario3,’Enable’,’off’)

set(handles.escenario4,’Enable’,’on’)

actesc3=1;

elseif estadoactivar ==0

set(handles.menuescenario3,’Enable’,’off’)

actesc3=0;

end

handles.conesc=actesc3;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function escenario4_Callback(hObject, eventdata, handles)

estadoactivar = get(handles.escenario4,’Value’);

if estadoactivar == 1

set(handles.menuescenario4,’Enable’,’on’)

set(handles.escenario4,’Enable’,’off’)

actesc4=1;

elseif estadoactivar ==0

actesc4=0;

end

handles.conesc=actesc4;

guidata(hObject, handles);

%-------------------------------------------------------------------------

function elecmovil_Callback(hObject, eventdata, handles)

estadoparestereo = get(handles.pares,’Value’);

169

C. INTERFACE DE THEATER3D

estadoanaglifo = get(handles.anaglifo,’Value’);

if estadoparestereo | estadoanaglifo ==1

set(handles.Computo,’Enable’,’on’)

set(handles.Computo1,’Enable’,’on’)

set(handles.pares,’Enable’,’off’)

set(handles.anaglifo,’Enable’,’off’)

set(handles.elecmovil,’Enable’,’off’)

else

warndlg(’Debe seleccionar un Formato de salida’,’3DTheater’);

end

170

Referencias

[1] Lentes 3D. Lentes 3d google imagenes, Febrero 2014.http://www.pcastillero.com/varios/413-gafas-3d-de-carton.html. 3

[2] Tecnologıa 3D. Tecnologıa 3d, google imagenes, Febrero 2014.http://www.blogdelg.es/los-secretos-de-la-conversion-del-2d-al-3d/. 4

[3] Visualizacion 3D. Visualizacion 3d y el pixel, Febrero 2014.http://www.clasf.pe/q/set-lentes-3d-anaglifos/. 22

[4] antiQuuos. Estereoscopio, 2011. http://www.antiquus.es/p-146/Juguetes-Opticos/Estereocopio/Estereoscopio-de-Holmes. 11

[5] DANE. Encuesta cultural, 2011. http://www.dane.gov.co/index.php/construccion-en-industria/industria/encuesta-anual-manufacturera-eam. 1, 91

[6] Diseno de materiales multimedia. For-matos de archivos de video, Mayo 2008.http://www.ite.educacion.es/formacion/materiales/107/cd/video/video0102.html.28

[7] Deteccion de Peaton. Deteccion de peaton matlab, Febrero2014. http://miradadelgolem.blogspot.mx/2013/11/deteccion-de-peatones-mediante.html. 18

[8] Estereoscopio de Wendell. Estereoscopio de wendell, Febrero 2014.http://www.clubfotomexico.org.mx/formacion/estereograma/. 13

[9] Estereoscopio de Wheatstone. Estereoscopio de wheatstone, Febrero2014. http://proyectoidis.org/estereoscopia/. 12

[10] Estructura del ojo. Estructura del ojo humano, google imagenes,Febrero 2014. http://www.ub.edu/javaoptics/teoria/castella/node3.html. 9

[11] IEEE Romuald P´epion Patrick Le Callet Member IEEE Mar-tin K¨oppel Patrick Ndjiki-Nya Muriel Pressigout Emilie Bosc,Student Member and Luce Morin. Towards a new quality metric for3-d synthesized view assessment. Capıtulo II Algoritmo. 50, 51

171

REFERENCIAS

[12] Pagina Web en el tema de Computo par-alelo por Jorge Buenabad Chavez. Computo paralelo.ftp://cs.cinvestav.mx/jorge/computoparalelo/cpintro.pdf. 23, 24

[13] Pagina Web en el tema de Estereoscopia. Estereoscopia.http://www.sao.org.ar/index.php/archivos-de-oftalmologia/ediciones-anteriores/59-archivos-de-oftalmologia/ediciones-anteriores/volumen-81-numero-02/212-historia-de-la-estereoscopia-y-sus-aplicaciones. 9

[14] Pagina Web en el tema de Estructura de un pixel. Estructura deun pixel. http://es.wikipedia.org/wiki/P28

[15] Pagina Web en el tema de ojo Hu-mano. Estrucctura del ojo humano, Mayo 2011.http://www.molenberg.com.ar/ElOjo/Funcionamiento20del20ojo.html.7

[16] Pagina Web en el tema de Par estereoscopico. Par estereoscopico,2009. http://www2.uca.es/huesped/giex/estereo.htm. 33

[17] Pagina Web en el tema de Pintures rupestres. Cavernas lascaux,vision estereoscopica, Abril 2009. 10

[18] Web en el tema de Sistema RGB. Ssitema rgb. 28

[19] Web en el tema de Vision Infitec. Tecnica infitec, junio 2010.http://www.adpsystems.net/Pdf/Visi39

[20] Pagina Web en el tema de Vision Polar-izada. Tecnica de vision polarizada, Junio 2010.http://recursostic.educacion.es/observatorio/web/es/component/content/article/1019-monografico-sistemas-de-cine-en-3d-?start=3. 38

[21] Pagina Web en el tema Deteccion de piel enMatlab. Skin detection, 26 de Agosto 2010.http://www.mathworks.com/matlabcentral/fileexchange/28565-skin-detection. 17

[22] Vision Estereo. Vision estereoscopica, google imagenes, Febrero 2014.https://terapiavisualzaragoza.wordpress.com/. 10

[23] Estereoscopia. Historia de la estereoscopia.http://www.sao.org.ar/index.php/archivos-de-oftalmologia/ediciones-anteriores/59-archivos-de-oftalmologia/ediciones-anteriores/volumen-81-numero-02/212-historia-de-la-estereoscopia-y-sus-aplicaciones. 11

[24] Camara Estereoscopica. Camara estereoscopica de brewser, Febrero2014. http://www.anaglifos.es/2012/02/27/que-es-un-anaglifo-la-historia-y-los-protagonistas/. 12

172

REFERENCIAS

[25] ffmpeg Documentation. Web en el tema de herramientaffmpeg para el tratamiento de video, audio, etc., Agosto 2010.https://ffmpeg.org/ffmpeg.html. 56

[26] Ramirez Garcia. Weba en el tema de sistema devision estereoscopica basado en anagligo, Mayo 2009.http://itzamna.bnct.ipn.mx/dspace/bitstream/123456789/4028/1/SISTDEVISION.pdf.36

[27] Cristina Hilario Gomez. Deteccion de peatones en el espectro visible,Octubre 2008. Pagina 36. 18

[28] Hilario Gomez. Deteccion de peaton en forma y movimiento,2008. http://e-archivo.uc3m.es/bitstream/handle/10016/5083/CHilario-TesisDoctoral.pdf?sequence=1. 17, 19

[29] Recintos 3D Google. Recintos 3d, Febrero 2014.http://claranuneznuevastecn.galeon.com/aficiones2300933.html. 2

[30] Ojo Humano. Ojo humano, Febrero 2014.http://www.imagui.com/a/dibujo-del-ojo-con-sus-partes-para-ninos-c4ear4MMo. 8

[31] Internet. Wen en el tema de sensores cmos y ccd. 32

[32] Cavernas Lascaux. Cavernas lascaux, google imagenes, Febrero 2014.http://elretohistorico.com/sala-de-los-toros-de-la-cueva-de-lascaux/. 11

[33] MatLab. Deteccion de peaton empleado por matlb, 2013.http://miradadelgolem.blogspot.mx/2013/11/deteccion-de-peatones-mediante.html. 17

[34] MatLab. Web en el tema de porcesamiento de imagenes, 2013.http://www.mathworks.com/products/image/. 54

[35] A. Said and W.A Pearlm. Transactions on circuits and systems for video,Junio 1996. 29,32,98. 47

[36] Steven Spielberg. Tiburon, Noviembre 1975.https://www.youtube.com/watch?v=rxiVCcKgk50. 13

[37] Informacion tomada de una pagina web en el tema de imagendigital. Concepto de una imagen digital, Mayo 2008. 25, 26

[38] Imagenes tomadas de Google Imagenes. Imagenes tomadas de inter-net ,google imagenes. 10, 19, 20, 26, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,44, 45, 47, 49, 57

[39] X. Otazu M. Vanrell and C.A Parraga. Multiresolution waveletframework models brightness induction effects, 2007. 48:733-751. 48

173

REFERENCIAS

[40] Zhou Wang and A.C Bovik. Modern image quality assessement, Febrero2006. 1,7,31. 43, 44

[41] Pagina web en el tema de asimilacion y contraste. Asimilacion decolor y contrste de color, Abril 2006. 47, 48

174

Indice

AlgoritmoInterface, 71Introduccion, 59Par estereo, 65Reconocimiento, 62Representacion, 67Video a Imagen, 60Video Final, 70

AnexoInterface, 113Codigo, 105DANE, 91

CapturasCCD, 30CMOS, 30Convergente, 34Imagen, 30Unica, 34

Caracterısticas HumanasDeteccion de Peaton, 17Deteccion de Piel, 13No Parametricas, 14Parametricas, 16

ConclusionesConclusiones Finales, 89Grado de Aceptacion, 89Objetivos, 89QoE, 89

DesarrollarAlgoritmo, 3Calidad de Experiencia, 3Convertir, 3Representacion Alternativa, 3Video, 3

Dispostivos para visualizar 3DCasco HDM, 40LCD, 39

EntretenimientoFutbol, 1Internet, 1Teatro, 1

EstereoscopiaAngulos, 9Informacion Visual, 9Tercera Dimension, 9Vision, 9

EstereoscopioBrewser, 11Euclides, 10Galeno, 11Holmes, 12Wheatstone, 11

ExperiementosANOVA, 84Calculos, 82Encuesta, 81Introduccion, 79Materiales, 79

Herramientasffmpeg, 56MatLab, 53

ImagenColores Primarios Aditivos, 25Pixel, 26RGB, 25

Ojo HumanoEstructura, 7Fisiologıa, 7Funcion, 7

OptimizacionArquitectura, 22Computo Paralelo, 22Multi Nucleo, 22Procesadores, 22

175

INDICE

TecnicasAnaglifa, 36Infitec, 39Polarizada, 38

TecnologıaComputacion, 2Internet, 2Tecnologıa 3D, 2

VideoDefinicion, 28Formatos, 28

176