Source: http://docplayer.es/1081985-Madrid-noviembre-2014-cotutor-ricardo-rodriguez-cielos.html
Timestamp: 2016-10-26 22:00:43+00:00

Document:
⭐Madrid, Noviembre (Cotutor): Ricardo Rodríguez Cielos
Madrid, Noviembre (Cotutor): Ricardo Rodríguez Cielos
Download "Madrid, Noviembre 2014. (Cotutor): Ricardo Rodríguez Cielos"
Carmelo Herrera Botella
1 UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS EN TOPOGRAFÍA, GEODESIA Y CARTOGRAFÍA TITULACIÓN DE INGENIERO TÉCNICO EN TOPOGRAFÍA PROYECTO FIN DE CARRERA APLICACIÓN DE LA REALIDAD AUMENTADA EN DISPOSITIVOS MÓVILES PARA LA RECREACIÓN DE RESTOS ARQUEOLÓGICOS Madrid, Noviembre 2014 Alumn(a/o): Tutor: Ramón P. Alcarria Garrido (Cotutor): Ricardo Rodríguez Cielos2 UNIVERSIDAD POLITÉCNICA DE MADRID ESCUELA TÉCNICA SUPERIOR DE INGENIEROS EN TOPOGRAFÍA, GEODESIA Y CARTOGRAFÍA TITULACIÓN DE INGENIERO TÉCNICO EN TOPOGRAFÍA PROYECTO FIN DE CARRERA APLICACIÓN DE LA REALIDAD AUMENTADA EN DISPOSITIVOS MÓVILES PARA LA RECREACIÓN DE RESTOS ARQUEOLÓGICOS Madrid, Marzo de 2015 Alumn(a/o): Tutor: Ramón P. Alcarria Garrido (Cotutor): Ricardo Rodríguez Cielos3 Resumen El desarrollo de la tecnología móvil ha cambiado la forma de interactuar con el entorno, ofreciendo cada día nuevas soluciones con un alto componente visual y de geoposicionamiento. En este sentido los yacimientos arqueológicos y otros lugares históricos o de interés pueden verse altamente beneficiados de la llamada realidad aumentada. En el presente trabajo se ofrece una nueva aplicación de la topografía y fotogrametría lejos de las concepciones clásicas relacionadas con el trabajo en obra, catastral o cartográfico. Se establece un estudio de los distintos avances en visión por ordenador y realidad aumentada para ofrecer una nueva forma de visitar el yacimiento arqueológico de Complutum. El proyecto se resume en los siguientes puntos: - Levantamiento y recreación de los restos del parque arqueológico de Complutum. - Estudio de las distintos avances en la visión por ordenador, así como de las soluciones en Tracking tanto 2D como 3D. - Desarrollo de una aplicación para dispositivos Android que implemente estas funciones para recrear el yacimiento mediante realidad aumentada.4 Agradecimientos La página de agradecimientos. Esa página que sé que será leída por ojos curiosos, miradas cotillas buscando en estas líneas su nombre, acompañado de unas palabras escritas con más o menos gracia que les enorgullezcan, les llene y les saque una sonrisa. Pero también sé que muchos de los que se las merecen no las leerán, no sabrán nunca lo importantes fueron en mi vida. Y es que perdónenme ustedes si no personalizo, pero sé que no podría nombrar a todos. Porque lo siento, pero simplemente no alcanzo a recordar sus nombres, sus rostros, ni siquiera los momentos que pasé con ellos. La familia, los amigos, todo aquel que en algún momento puso paz en esta aturullada cabeza que busca su orden, su camino, la razón por la que seguimos en este mundo de mierda que se empeña en demostrarte que por mucho empeño que le pongas, siempre estarás a merced de su tornadiza voluntad. Aquellos que me recuerdan que se trata de vivir y no pensar en respirar siquiera. Todos los que han tenido la paciencia para aguantar mis boberías y malas caras. Los que no han podido ver terminado el proyecto. Mis perrillas Jelka y Tara de las que tanto me acuerdo. Todos ustedes son merecedores de mis mejores palabras y mis mayores agradecimientos. Pero el tiempo también me ha dejado heridas que nunca cicatrizan y marcan una vida. Una pequeña historia llena de pensamientos rotos, alguna pérdida y errores que ya no puedo enmendar. Momentos que rompen mi cabeza y despiertan a mis fantasmas, esos cobardes que se mueven de noche, en silencio y promueven mis desvelos. Y vuelvo a disculparme por mi mala cabeza pues la mala perra tiene facilidad para recordar a quién le causó sus heridas. Pero gracias a todos esos malos ratos también, pues ahora sé que los palos duelen pero endurecen la piel, que nunca un mar en calma hizo a un marinero experto y que mi rabia, hecha con la bilis y el sudor de años de experiencia, me alimenta. Sé que quizá no le he dedicado a la familia el espacio que se merece pero este trabajo os lo dedico familia porque todo, cada cosa que hago, la hago por vosotros. No quiero que esta página quede como una nota melancólica, pues solo intenta unir el blanco y el negro de una manera productiva. Seguiremos a partir de mañana envidando al futuro y compartiendo momentos amigos, pero hoy no. Después del esfuerzo de este proyecto, hoy solo quiero tirarme en la cama, descansar y ver pasar la vida sin preguntarme donde me llevará mañana.5 INDICE 1. COMPLUTUM Historia El primer asentamiento en San Juan del Viso Traslado al asentamiento definitivo La decadencia de Complutum Urbanismo de Complutum Espacios Recreados Fachada Monumental Criptoportico Curia Decumano III Basilica Portico Sur Termas Sur Mercado Ninfeo LEVANTAMIENTO Instrumental y material empleado Metodología de observación empleada Análisis del ajuste Levantamiento RTK Radiación de los puntos restantes CREACIÓN DE LA CARTOGRAFÍA MODELADO 3D VISIÓN POR ORDENADOR Y REALIDAD AUMENTADA Introducción Descriptores FAST Harris SIFT SURF Comparativa entre los distintos descriptores D Tracking D Tracking basado en el uso de marcadores D Tracking mediante el análisis de características naturales D Tracking PTAM Parallel Tracking and Mapping D Tracking basado en modelos CAD PROGRAMANDO MUNDUS4D Librerías especializadas Elección de la más adecuada MetaioSDK Implementando el SDK en Mundus4D Estructura básica de la Aplicación. 916 6.4.1 Activities secundarias Activities primarias Launcher Menu Principal Real Aumentada Recorrido_Tracking Uso de los sensores como método de orientación Creación de los TrackingMaps Deficencias encontradas La importancia de Metaio Creator Carga de modelos 3D en MetaioSDK Publicación de Mundus4D Complutum en Google Play Creación del archivo de expansión e implementación del gestor de descargas Firma de Mundus4D Complutum PRESUPUESTO CONCLUSIONES Y TRABAJOS FUTUROS BIBLIOGRAFÍA Y REFERENCIAS CONSULTADAS ANEXOS Reseña de estaciones Ajuste de la red Red constreñida B1 y E Red constreñida de estaciones Levantamiento RTK PLANO DE COMPLUTUM 1947 8 1. Complutum 1.1 Historia Los actuales restos visitables de Complutum se encuentran junto a Camino del Juncal, s/n Alcalá de Henares (Madrid), sin embargo no siempre fue esa su ubicación El primer asentamiento en San Juan del Viso Los actuales restos conocidos de Complutum se remontan al siglo IV d.c. Sin embargo, sus inicios se sitúan sobre el vecino cerro de San Juan del Viso: una plataforma elevada en la margen izquierda del río Henares. Por los datos disponibles se sabe que fue el asentamiento de una primera población carpetana. De esta ciudad se desconoce casi todo. Se intuye un carácter agreste y defensivo característico de las ciudades y ciudadelas celtibéricas. Se la supone un diseño clásico concluyente con probablemente el período correspondiente al final de la República o la de César, allá por el siglo I a.c Traslado al asentamiento definitivo Llegado cierto momento se emprendió el traslado a su actual emplazamiento en el otro margen del río. Datado entre la época de Augusto y la de Claudio, entre el cambio de Era y los años 50 del siglo I d.c. Entre los posibles factores se destacan: A. Los factores climáticos, mucho más favorable en la vega que en el cerro. B. Mejor calidad de tierras de cultivo y pastoreo. C. Acercamiento de las grandes vías de comunicación (como las que unían con Mérida y Zaragoza). D. Mayor cantidad de agua gracias al río Henares. pág. 19 Destacar la actual zona conocida como Fuente del Juncal. Área repleta en la Antigüedad de fuentes y manantiales de aguas mineralizadas, considerándose milagrosas al menos hasta el siglo XVII. Los primeros trabajos de traslación se concentraron en las cercanías de la Fuente del Juncal, que se convertiría en la barriada más antigua y occidental de la ciudad (Regio I). Más tarde, en la época de Claudio, se completará la trama urbana definitiva, obteniendo en el rango de municipium con el Edicto de Vespasiano en el año 73 o 74 d.c. Hacia el siglo III d.c se acomete la reforma de edificios concretos, importantes y significativos como pueden ser la amortización de las termas o el criptopórtico. En el siglo V se puede considerar que se produce otra reforma llevándose a cabo esta vez modificaciones arquitectónicas y cambios de uso sobre los viejos edificios de varias zonas de la ciudad, pero manteniendo en lo esencial el diseño urbano original La decadencia de Complutum La decadencia de Complutum se gesto en los posteriores tres siglos, con áreas deterioradas o parcialmente abandonadas y la creciente ascensión en población y relevancia de el llamado suburbio Campo Laudable, ubicado en la actual catedral de Alcalá de Henares, con eminente carácter cristiano. En el 711 con la invasión islámica se da la estocada definitiva. A partir del siglo VIII se vio inmersa en el sistema defensivo musulmán de la Marca Media, y el centro poblacional, con nombre árabe de Q alat abd Al-Salam, se desplazó a las abruptas colinas de la margen izquierda del río Henares, a un cerro de 630m de altura en las estribaciones del Ecce Homo. pág. 210 1.2 Urbanismo de Complutum El Complutum de la época imperial, se caracteriza por un trazado ortogonal, en las que las calles se cruzan perpendicularmente. Se estima una superficie cercana a las 50Ha particionado en 6 barrios o regiones (REGIO I, REGIO II, REGIO III, REGIO IV, REGIO V y REGIO VI). Además habría que añadir el terreno ocupado por los suburbios a las afueras de la ciudad. La trama urbana se distribuye en manzanas de 30x30m, existiendo dos tipos de calles: Las principales: 12 metros de anchura y porticadas con la siguiente distribución. 3m de pórtico, 6m de calle y otros 3 de pórtico. A este tipo de calle corresponden el decumano III, IV y V. Las secundarias: calles no porticadas de 6m de anchura. El decumano Máximo corresponde con el actual Camino del Juncal. Por su parte, el foro y el conjunto monumental se encuentran en la confluencia del decumano III y el cardo Máximo. Dentro del conjunto monumental, podemos distinguir la basílica civil, las termas sur, la curia, el pórtico sur, el mercado, el criptoportico, el ninfeo y la fachada monumental. Urbanismo de Complutum. pág. 311 A las afueras de Complutum se situaban los suburbios Norte, Oeste y Este. Los suburbios Norte y Oeste, muestran un carácter sagrado o religioso. Se encontraba densamente poblado por mausoleos, monumentos funerarios, fundaciones benéficas y jardínes. A reseñar la Fuente del Juncal y la casa de Hippolytus. El suburbio Este se constituía por grandes barrios y palacios. A una milla desde Complutum se localizó el Campo Laudable que se convertiría con el paso del tiempo en el barrio episcopal. También se encontraría un pasillo ocupado por algunos establecimientos agropercuarios y grandes villas. Al sur estarían localizadas las infraestructuras viarias, como el Puente de Zulema sobre el río Henares y algunos asentamientos en los cerros. El foro El foro sigue con el canon de urbanismo romano. Se situaba en el centro de la ciudad, en este caso, en la confluencia del decumano III y el cardo Máximo. Era una plaza rodeada de edificios con función administrativa, judicial, comercial y religiosa. De Complutum solo hemos podido conocer su lado occidental, ya que el oriental ha quedado sepultado bajo los edificios colindantes al yacimiento correspondientes a la calle Gonzalo Gil. Sin embargo se cree que allí se encontrarían los espacios de temática religiosa, siguiendo con el estilo de urbanismo romano. Descubrir la fisonomía del foro se antoja harto complicada debido a que este sufría gran parte de la obra pública de la ciudad. Se distinguen dos programas constructivos básicos, uno data del siglo I d.c y el segundo del siglo III d.c El primer foro de Complutum data de los años 50 d.c. Se componía por el Oeste de una basílica civil y junto a ella las termas norte. En la esquina suroccidental había una fuente pública. Al sur una zona comercial con un pórtico que albergaba varias tiendas-talleres (officinae). En el extremo occidental un mercado (macellum). Al norte un segundo pórtico y al este como se ha dicho antes se presupone la existencia de recintos religiosos. pág. 412 Durante el siglo III se acomete una nueva reforma del foro con tintes de mejoras orientadas a las tareas de gobierno, judiciales y de la administración, en detrimento de los edificios dedicados al ocio. Recreación del foro a finales del siglo III d.c. Se amplío la basílica civil hacia el Oeste mientras que las termas norte desaparecieron para dejar paso a la curia. El extremo occidental del foro se engrandeció con un criptopórtico y una fachada monumental que provocó la desaparición de la fuente pública. El pórtico comercial se reformó con un nuevo solado y el edificio del mercado fue derruido para construir una plaza que hiciese las veces de mercado pero que a su vez pudiese utilizarse como espacio diáfano. Por último se construyeron las indispensables termas sur junto al mercado aprovechándose la infraestructura de evacuación de aguas que corría bajo el decumano IV. 1.3 Espacios recreados Fachada Monumental La fachada monumental aparece como respuesta a una necesidad escénica, monumental y barroca. El caminante al llegar siguiendo el Decumano III debía advertir la importancia del lugar al que se aproximaba. pág. 513 Recreación de la fachada monumental y su situación en el plano. Su construcción se emplaza dentro de las reformas llevadas a cabo durante el siglo III d.c, donde el acueducto pierde su función, se destruye la fachada occidental de las termas y se levanta el criptopórtico sobre el que se apoya la nueva fachada monumental. Construida sobre un zócalo de opus caementicium, levantándose un alzado de sillares. Se disponían 8 plintos adelantados sobre los que se levantaban las columnas de piedras. Se presentaba revestida con mármoles blancos y cipollino de importación con calizas rojas traídas de canteras levantinas y grises de origen extremeño. Finalmente reseñar la existencia de una placa de mármol sobre la que se grabó una inscripción poética conmemorando la reforma llevada a cabo Criptopórtico Los criptopórticos son estructuras subterráneas, sobre los que se podían edificar una o dos plantas más. En Complutum su construcción coincide con la gran reforma del siglo III d.c. Se asienta sobre el acueducto que abastecía a las termas norte y a una fuente pública del siglo I. Construido en opus caementicium y con un suelo de opus spicatum (colocación de ladrillos o piedras talladas en forma de espina de pez), la planta baja se cierra con una bóveda rebajada con una pág. 614 cubierta plana. La planta superior también se cerraría con forma abovedada. Esta forma, aparte repartir los pesos, ayudaba a mantener una temperatura óptima. Hipótesis constructiva del interior del criptopórtico y su situación en el plano. Funciones Se busca crear una especie de tabularium (archivo municipal) y de paso servir de base a una gran fachada monumental. Por otra parte, ofrecía una entrada monumentalizada a la curia. Se complementa con esta construcción el espacio administrativo, jurídico y legilativo del municipium Curia La curia se asienta sobre las antiguas termas norte, como parte de las profundas reformas llevadas a cabo en el foro a finales del siglo III d.c. El antiguo frigidarium pasa a ser un espacio de tránsito desde la basílica, lugares que antes no tenía ningún tipo de conexión entre ellos. El tepidarium, a su vez, se convierte en otro paso más para llegar a la curia, con acceso desde la planta baja del criptopórtico. Situada sobre el antiguo caldarium se emplaza la curia. Dentro de ésta es probable la existencia de una especie de gradas donde se sentarían los senadores y en la parte sur de la misma, junto al ábside, el lugar presidencial donde se emplazaría la presidencia. pág. 715 Reconstrucción de la Curia a finales del siglo III y su localización en el plano. La calefacción desaparece parcialmente llegando por medio de los hypocaustums (calefacción subterránea) al caldarium y tepidarium. Hipótesis del interior de la Curia y el sistema de calefacción. Funciones Son las salas destinadas a la administración y el gobierno de la ciudad. Los romanos exportaron las curias a todas las ciudades que obtenían el estatus de municipium, pasando a tener estas su propio senado y funcionarios encargados de la administración central. No eran electos, sino designados por el gobierno central. Las sesiones se realizaban bajo la presidencia de un cónsul o de un pretor. El presidente leía el texto del proyecto a discutir y se procedía a escuchar la opinión de los senadores. Por último, pág. 816 se procedía a la votación realizada colocándose en hilera según su intención de voto y contando el número de senadores en cada fila Decumano III Decumano es un término utilizado en el urbanismo romano para identificar las calles con orientación este-oeste. Hipótesis constructiva de la parte del decumano III junto al foro. El Decumano III consistía en una calle porticada de 12m de anchura. Se componía de una calzada central de 6m de ancho y a ambos lados un pórtico de 3m de ancho cada uno. Bajo el Decumano III corre la cloaca encargada de desaguar y conducir el agua residual hacía el río Henares. Levantamiento del decumano III junto con la cloaca. pág. 917 1.3.5 Basílica Se construyó en los años 50/60 del siglo I d.c, en época del emperador Claudio, para ser reformada en el último cuarto del siglo III. Su diseño se encuadra dentro de los cánones constructivos romanos de Basílica, que tiene su origen en el Norte y Centro de Italia, en época de Augusto. Se compone de un espacio central rodeado por un pasillo (ambulacrum).construida en opus caementicium sobre un zócalo de sillares de piedra, sus dimensiones hablan de 32,5 x 16,7m en planta. Se dispuso un suelo de opus signimun (un mortero de cal, arena, piedra y ladrillo triturado) elevado en el siglo III para hacerlo coincidir en altura con su edificio anexo, la curia, conformando un acceso hasta entonces inédito. Las paredes interiores estaban revestidas y decoradas con un revoco blanco y con mármoles de sustitución en distintos colores de canteras cercanas. Recreación de la basílica civil junto con su situación en el plano. Su emplazamiento es completamente atípico en el mundo romano, ubicado junto a las termas. Hecho que lleva a preguntarse si realmente se trata de una basílica civil. pág. 1018 Funciones En las basílicas civiles se desarrollaban actividades de diversa índole, como pueden ser importantes transacciones financieras, acuerdos comerciales, actos de culto, pero sobre todo eran el tribunal de justicia. Hipótesis constructiva del interior de la basílica. Se dispondría en el extremo Sur un tribunal elevado sobre una tarima de madera, donde se situarían el magistrado y las autoridades encargadas del juicio. En el lado norte, junto al paso a la curia, habría una cartela en opus sectile (recortar placas de mármol de diversos colores para componer las figuras geométricas, de animales o humanas) y cerca de él, una estatua en honor al gobernador, emperador o benefactor de la obra. Se presupone aquí el lugar donde según la tradición se dictó sentencia contra los niños Justo y Pastor, condenados por las autoridades durante la persecución contra los cristianos decretada por el emperador Diocleciano. pág. 1119 1.3.6 Pórtico Sur Recreación del Pórtico Sur a finales del siglo III. El Pórtico Sur fue una zona comercial que como su nombre indica cerraba por el lado sur el foro. En se localizaban las tiendas y talleres de diferentes artesanos y artistas. Se cree que existiría su homólogo en el lado norte del foro, aunque todavía sin excavar. Situación en el plano. Se construyó en los años del siglo I, sufriendo varias rehabilitaciones a lo largo del tiempo. En el caso de Complutum, el Pórtico Sur se veía cortado por un arco que permitía la entrada y salida del foro. Gracias a los restos encontrados se sabe que una de las tiendas perteneció a un pintor y mosaicista, así como su taller (officina) y la existencia de un bar (thermopolium). pág. 1220 1.3.7 Termas Sur Con la reforma surgida en el siglo III donde las termas norte se amortizan en favor de la curia, Complutum se ve huérfana de un elemento fundamental en cualquier ciudad romana que se precie, por lo que se acomete la construcción de unas nuevas termas. Recreación de las termas sur junto con su situación en el plano. Las nuevas termas se situaron en el único sitio posible cercano al foro, entre el mercado y el pórtico sur, limitando por el norte con la basílica y cortando el Decumano IV. Sus dimensiones, bien por la falta de espacio o bien por el declive económico de la ciudad, se vieron reducidas. Son del tipo provincial o lineal, es decir, una disposición lineal de ambientes. En los restos encontrados en Complutum se pueden precisar 4 espacios. El primero, junto a la basílica sería el compuesto por un frigidarium y un pequeño vestuario (apodyterium). De este frigidarium se conocen tres momentos constructivos: En el primero, la piscina se adosa sobre el muro recto que cierra la sala por el Oeste. En la segunda, se coloca un nuevo solado a la estancia. En la tercera, se construye un ábside en el extremo oeste de la sala, se amortiza la anterior piscina para ser integrada por una semicircular. Tras este primer espacio se sitúa el tepidarium, piscina de agua templada. Y por último, en la pág. 1321 zona sur de las termas se sitúa el caldarium, piscina de agua caliente. Estas piscinas eran calefactadas a través de los hypocaustums. El praefurnium, que es el espacio que le seguiría a continuación no tenía acceso a los usuarios de las termas pues era el lugar desde donde los operarios mantenían los hornos en funcionamiento. Interior de las termas sur con el frigidarium, tepidarium, caldarium y praefurnium. Funciones Las termas eran baños donde los romanos pasaban su tiempo de ocio. Fueron lugares ideales para la vida social de la ciudad. A ellas acudían los habitantes en busca, aparte del respectivo baño, tener una conversación relajada, disfrutar del recreo, fomentar las relaciones sociales o simplemente tomar un masaje. Las termas encontradas en Complutum, de tipo provincial, son modestas en comparación con otras de mayor envergadura, las cuales disponían de todo tipo de servicios, como podía ser una palestra, patio central donde hacer ejercicio físico, un laconium, baño de vapor, un sudatio, sauna, o un natatio, piscina apta para la natación. Era un lugar muy apreciado por los habitantes y por tanto era difícil asimilar una ciudad sin estos servicios. pág. 1422 Las termas romanas en sus inicios fueron de uso privado para a partir del siglo II a.c pasar a ser públicos. Con Vespasiano Agripa los baños pasaron a ser de uso gratuito. Aunque todos los ciudadanos podían asistir a los baños, existían diferentes horarios para hombres y mujeres. O bien podría existir una duplicación de espacios, uno para cada sexo Mercado Los restos arqueológicos encontrados pertenecen a dos períodos distintos. Un primer período, de mediados del siglo I d.c, se compondría de un patio central de planta rectangular rodeado, a su vez, por unos pórticos con los diferentes puestos de venta. No se conserva mucho de este antiguo mercado. Como indicios más claros se apreciaría una pileta en opus signinum (Pavimento o recubrimiento de pared de época romana formado por una mezcla impermeable de cal, arena y fragmentos de cerámica, a veces con decoración de teselas) supuestamente para el despiece de la carne. Reconstrucción del mercado existente a mediados del S.I y su situación. Este mercado tenía acceso a la vecina Casa de los Grifos, a cuyos propietarios se les atribuye también la posesión del mercado. A pesar de ser un lugar sucio y ruidoso se sitúa extremadamente cerca del foro. Teniendo acceso desde el decumano IV. Tras la reforma del siglo III d.c el mercado o macellum pasa a ser una plaza abierta con una fachada del tipo escénico en su lado oriental., similar a la gran fachada monumental. De esta pág. 1523 fachada se conserva su base. Las tiendas pasaron a ser tenderetes móviles, hecho constatado por la existencia de marcas en el suelo dejadas por los postes al ser clavados. Hipótesis constructiva del mercado del siglo III. Añadir por último que el pavimento era de ladrillos, como se puede apreciar en un pedazo de suelo junto a la fachada escénica junto a las termas. Funciones Los macellum eran lo que son los mercados de hoy en día. Lugares donde adquirir los productos básicos y no tan básicos para el quehacer diario. En ellos principalmente se adquirían carnes, pescados, así como frutas y hortalizas. Principalmente en estos mercados se vendían productos básicos, aunque también se podían adquirir productos derivados, hechos con los mismos productos básicos o restos de por ejemplo el despiece de la carne. Así se podía conseguir por ejemplo, productos hechos con los huesos de animales antes despiezados Ninfeo Se asocia el Ninfeo con la construcción de las Termas Norte en el siglo I d.c. Ya que según los indicios se muestra la existencia de un acueducto que llevaría agua a las termas y a una fuente, la cual sería la incluida dentro del ninfeo. pág. 1624 Ninfeo se señala como monumento consagrados a las ninfas, en este caso una fuente. A las ninfas se les considera una deidad, son personificaciones del culto a la naturaleza, en la mayoría de las veces identificadas con el flujo dador de vida de los manantiales. Hipótesis constructiva del Ninfeo y su localización en el plano. Poco o nada se sabe del ninfeo existente en Complutum, solo los restos de los escalones de piedra de su entrada y el pozo que ha quedado en el lugar dan ligera idea de lo que allí pudo haber. pág. 1725 2. Levantamiento 2.1 Instrumental y material empleado El instumental utilizado se reduce a: 2 receptores GNSS Trimble R4. 2 receptores Leica GPS 500 para el levantamiento RTK. 1 Estación total Leica Trípodes. Prisma reflector. 1 jalón. Flexómetro. Clavos de acero. Mártillo. Bloc de notas y material de escritura para la toma de notas y croquis. Receptor Trimble R4 El receptor Trimble R4 se presenta como un sistema GNSS de prestaciones media. Se compone por una controladora inalámbrica de memoria y baterías integradas capaz de comunicarse con la antena mediante sistema bluetooth. La controladora monta una pantalla táctil a color operando sobre el sistema Microsoft Windows Mobile. Se incluyen diversas herramientas de exportación así como distintos sistemas de coordenadas, elipsoides o proyecciones. pág. 1826 Por su parte, la antena R4 ofrece distintas específicaciones de acuerdo a los tipos de señal capaz de recibir. Es imprescindible discernir cual es el tipo de antena utilizada antes de cargar los datos de calibración en el software de procesado. De acuerdo a las capacidades de nuestra antena, diseñada para captar señales tanto GPS como GLONASS se determinó que se trataba de una antena Trimble R4 modelo 3. La altura del instrumento se mide al tope protector amarillo de la antena que queda situado aproximadamente en su sección media. Este es un dato de vital importancia, pues el software interno del receptor realiza la reducción de la altura medida a la base de la antena de manera automática. Consecuentemente no habrá que establecer ningún desplazamiento vertical en el software de procesado. Por último reseñar que no se pudo emplear estos receptores en el levantamiento RTK al carecer los equipos dispuestos en la escuela de una antena capaz de transmitir datos entre dos receptores. Las únicas antenas suministradas eran válidas únicamente para recibir información pero no emitirla. Receptor Leica GPS 500 Utilizado para realizar el levantamiento RTK, el sistema integra una antena AT502 de doble frecuencia, el receptor SR520 que rastrea el código C/A en L1 y el código P en L2 ofreciendo una precisión de 3-10mm + 1ppm en modo estático rápido, un Terminal TR500, un radio modem y un adaptador con flexometro para facilitar en gran medida la lectura de altura de antena mejorando además la precisión de la medida. pág. 1927 Leica GPS 500 es un receptor con cierto tiempo en el mercado por lo que no ofrece ciertas características de última generación como una pantalla táctil o en color, conexiones inalámbricas o medios de almacenamiento actuales, aspecto para el cual utiliza tarjetas PC. Leica 1202 Para completar el levantamiento se optó por la estación total Leica 1202, un equipo con un rendimiento más que suficiente para el trabajo a realizar. Sus características son: - Precisión angular Hz y V: 6cc. - Compensador de doble eje: Rango de actuación del compensador: 7c. Precisión del compensador: 2cc. Precisión de nivel esférico: 6'/2mm. - Medida electrónica de distancias: Precisión en la medida electrónica de distancias: 1mm + 1,5ppm. - Plomada laser para estacionamiento: Precisión de 1,5mm a 1,5m de distancia. Con un tamaño de punto de 2,5mm a esa distancia. - Anteojo: 30x de aumentos. Rango de enfoque: 1,7m -. pág. 2028 2.2 Metodología de observación empleada El objetivo era realizar un modelado fideligno del yacimiento con el fin de conseguir un modelo 3D lo más detallado posible ya que cada pequeño detalle podría resultar vital para resolver el espacio monumental, considerando los distintos niveles, altura de muros, columnas y curvatura de las bóvedas entre otros detalles. Con semejantes premisas se concluyó que el método óptimo a utilizar sería un levantamiento apoyado en el uso del láser escáner. Se planeó la observación de una red basada en el uso de GPS y complementada con taquímetro que permitiese desde cada una de las estaciones realizar el escaneado de forma que no se perdiese ningún detalle del yacimiento y a su vez obtener un modelo georreferenciado. Además si no fuese posible disponer del escaner, serían utilzadas, si fuese necesario, como estaciones desde las que obtener puntos en los muros o elementos verticales. Los equipos GPS proporcionan una funcionalidad y economía de tiempo realmente reseñable permitiendo extender grandes redes sin recurrir a tediosas poligonales. Por otra parte tienen sus limitaciones pues si bien dan gran precisión obteniendo las líneas base entre puntos no sucede lo mismo con el posicionamiento absoluto. Hecho que dependiendo de la situación del operador puede resultar un inconveniente. Otro punto a valorar es la influencia de elementos entorno a la antena que puedan provocar multipath, siendo bastante sensible el GPS a la existencia de árboles, fachadas o farolas. Por tanto el GPS no es totalmente operativo en zonas muy urbanizadas o con alto índice de vegetación árbolea. Observación de la red Se eligió el método estático rápido para su observación. Dicho método es válido siempre y cuando la longitud de líneas base o distancia entre estaciones sean menores a 20km. La precisión esperada se sitúa en orden de 1cm + 1ppm. pág. 2129 Se programó las observaciones con intervalos de toma de datos de 10s, máscara de elevación de 10º y tiempos de observación de 12min. La observación de la red se dividió en 2 sesiones. En una primera sesión se estacionó de forma permanente un receptor GPS en el punto b1 y con un segundo receptor se observó los puntos de estación restantes. En la segunda sesión se estableció como estación de referencia el punto e2002 y se procedió a observar el resto de estaciones repitiendo la metodología de observación. La red quedó conformada finalmente por 13 estaciones repartidas en todo el yacimiento de forma estratégica para obtener un modelado sin fisuras. Lamentablemente, tras esperar durante un período de tiempo con el fin de poder usar el láser scaner de la escuela se desistió de la idea pasando a realizar un levantamiento convencional empleando receptores GPS. Tal cambio se tradujo en un aumento muy notable de la dificultad y carga de trabajo. Ya no era operativo obtener todos detalles del yacimiento así como la altura de muros, columnas o elementos auxiliares de forma rápida. En su lugar fue indispensable realizar un estudio y documentación a priori de los elementos imprescindibles a observar para describir el diseño del antiguo Complutum. 2.3 Análisis del ajuste El proceso de ajuste se llevó a cabo con el software Leica Geo Office. Se realizó el ajuste de la red en dos pasos bien diferenciados: Dar coordenadas a las estaciones b1 y e2002. Para ello cada día de observación se estacionó el instrumental por un tiempo de observación mínimo de 4h 30min. Además se observaron las lineas base entre ambos puntos por el método estático rápido. pág. 2230 Ya en gabinete se realizó el ajuste enmarcando ambos puntos dentro del marco de referencia ETRS89. Se buscó enlazar por tanto con las estaciones permanentes GNSS más cercanas, obteniendo finalmente los mejores resultados usando las estaciones (ARAN, HENA, IGNE, YEBE). Para las estaciones permanentes se les presupone una precisión absoluta mejor a 1cm. Resultados de la red constreñida para B1 y E2002: B1 Coordenadas ETRS89: Latitud: 40º 28' 24,57464 Longitud: 3 23' " Altura elipsoidal: Desv. Típica: 0,003m. Desv.Típica: 0,0024m. Desv. Típica: 0,0063m. Coordenadas ETRS89 UTM30N: Xutm: ,274m Desv. Típica: 0,003m. Yutm: ,638m Desv.Típica: 0,0024m. Altura ortométrica: 582,011m. E2002 Coordenadas ETRS89: Latitud: 40 28' " N Desv. Típica: 0,0032m. Longitud: 3 23' " W Desv. Típica: 0,0026m. Altura elipsoidal: m Desv. Típica: 0,0067m. Coordenadas ETRS89 UTM30N: Xutm: ,788m Desv. Típica: 0,0032m. Yutm: ,853m Desv. Típica: 0,0026m. Altura ortométrica: 581,620m. Los detalles del ajuste pueden ser consultados en el anexo Red Constreñida b1 y e2002, al final del documento. Dar coordenadas al resto de estaciones de la red. En este punto se consideran los puntos b1 y e2002 como puntos de control fijo y se ajusta la red conforme a las observaciones realizadas en las sesiones. Como se puede observar, los resultados finales invitaron a desechar las estaciones e1003, e1005, e1006 y e1009 ya que ciertas lineas base resultaban erróneas. En el ajuste final aparecen como puntos radiados, por lo que no son estaciones finales de la red. No supuso una complicación mayor debido a que la existencia de estos puntos no era indispensable en caso de no poder utilizar el laser-escaner como ocurrió finalmente, sin embargo, se pág. 2331 comprobó su bonanza interviniendo en el calculo de desorientación en el levantamiento taquimétrico. Red constreñida de las estaciones. Los detalles del ajuste final se pueden consultar en el anexo Red constreñida de estaciones. COORDENADAS FINALES: Estación Xutm(m) Yutm(m) Alt. Elipsoidal Alt. Ortométrica b , , , ,011 e , , , ,572 e , , , ,605 e , , , ,842 e , , , ,482 e , , , ,818 e , , , ,230 e , , , ,456 e , , , ,403 e , , , ,390 e , , , ,958 e , , , ,125 e , , , ,620 pág. 2432 PRECISIÓN DEL AJUSTE: Estación Desv. Típ X(m) Desv. Típ. Y(m) Desv. Típ. h(m) b e1001 0,0007 0,0006 0,0017 e1002 0,001 0,0008 0,0021 e1003 0,0062 0,005 0,0112 e1004 0,0009 0,0007 0,0021 e1005 0,0016 0,0011 0,0044 e1006 0,0014 0,0012 0,0043 e1007 0,0008 0,0006 0,0017 e1008 0,0007 0,0007 0,0017 e1009 0,0013 0,0012 0,003 e1010 0,0005 0,0004 0,0013 e2001 0,0007 0,0007 0,0018 e PRECISIÓN FINAL DE LAS COORDENADAS: Estación Desv. Típ X(m) Desv. Típ. Y(m) Desv. Típ. h(m) b1 0,003 0,002 0,006 e1001 0,004 0,004 0,009 e1002 0,004 0,004 0,009 e1003 0,008 0,006 0,014 e1004 0,004 0,004 0,009 e1005 0,005 0,004 0,010 e1006 0,005 0,004 0,010 e1007 0,004 0,004 0,009 e1008 0,004 0,004 0,009 e1009 0,005 0,004 0,010 e1010 0,004 0,004 0,009 e2001 0,004 0,004 0,009 e2002 0,003 0,003 0,007 Ajustadas las redes, por fin, se pudo dar coordenadas definitivas a los puntos obtenidos mediante el método RTK. pág. 2533 2.4 Levantamiento RTK Para el levantamiento RTK se dispuso de dos receptores Leica GPS 500. Uno de ellos se estacionó como referencia en el punto b1 y con el restante se tomaron más de 2000 puntos con tiempos de observación de 30 posiciones a intervalos de obtención de 0,1s, necesarios para la recreación 3D del yacimiento y entender el urbanismo de Complutum. Se puede consultar el listado completo de puntos en el anexo Radiación RTK. El levantamiento por técnicas GPS tuvo que verse reforzado mediante observaciones con estación total dada la cercanía de una cubierta metálica existente en el emplazamiento que provocaba interferencias en la señal GPS. Concretamente la zona más afectada fue la perteneciente al mercado, edificación que linda directamente con la cubierta metálica. Además dada su geometría, se reforzó también la zona interior del criptopórtico. El equipo utilizado fue un Leica Por último y a modo de comprobación se observaron los puntos de las estaciones cada día con el fin de comprobar que el instrumental no había sufrido alteraciones, o errores de configuración. 2.5 Radiación de los puntos restantes Con el fin de dar coordenadas a puntos que por su localización es inviable hacerlo por el método RTK debido al efecto multipath, se resolvió ejecutar una radiación desde las estaciones e1001 y e1008. La desorientación se calculó a partir de las estaciones de la red. Se muestran las visuales ya promediadas entre CD y CI. pág. 2634 Estación Visado LH(g) LV(g) Dg(m) Mira(m) Instrumento(m) e1001 e , ,3005 1,3 1,465 e1001 e , ,8888 1,3 1,465 e1001 e , , ,3 1,465 e1001 e , ,9447 1,3 1,465 e1001 e , ,4201 1,3 1,465 e1001 e , ,3247 1,3 1,465 e1001 e , ,8029 1,3 1,465 e1001 b1 370, ,6179 1,3 1,465 e1001 e , ,3835 1,3 1,465 e1001 e , ,4949 1,3 1,465 e , , ,5188 1,7 1,465 e , , ,138 1,7 1,465 e , , ,5125 1,7 1,465 e1008 e , ,0152 1,3 1,484 e1008 e , ,2726 1,3 1,484 e1008 e , ,1408 1,3 1,484 e1008 e , ,4968 1,3 1,484 e , ,6813 5,5164 1,3 1,484 e , ,1667 7,0403 1,3 1,484 e , , ,5596 1,3 1,484 e , ,9106 7,3724 1,3 1,484 e , , ,1504 1,3 1,484 e , , ,7259 1,3 1,484 e , , ,624 1,3 1,484 e , , ,9524 1,3 1,484 e , ,043 11,7349 1,3 1,484 e , ,893 19,3581 1,3 1,484 e , ,584 20,5766 1,3 1,484 e , , ,7806 1,3 1,484 e , ,652 15,7062 1,3 1,484 e , , ,4107 1,3 1,484 e , , ,2394 1,3 1,484 e , , ,1584 1,3 1,484 e , , ,8474 1,3 1,484 e , , ,3091 1,3 1,484 e , ,751 12,578 1,3 1,484 e , , ,8288 1,3 1,484 e , ,449 13,648 1,3 1,484 e , , ,9544 1,3 1,484 e , , ,6242 1,3 1,484 e , ,616 20,611 1,3 1,484 e , , ,8007 1,3 1,484 e , , ,2701 1,3 1,484 e , , ,4897 1,55 1,484 e , , ,2347 1,55 1,484 e , , ,571 1,55 1,484 e , ,113 42,4034 1,3 1,484 e , , ,3653 1,3 1,484 e , , ,357 1,3 1,484 e , , ,3808 1,3 1,484 e , , ,4336 1,3 1,484 e , , ,491 1,3 1,484 e , , ,2356 1,3 1,484 e , , ,4244 1,3 1,484 e , , ,8297 1,3 1,484 e , , ,1863 1,3 1,484 e , , ,213 1,3 1,484 pág. 2735 Debido a la poca distancia entre estaciones y que las visuales se han observado sin emplear pilares, utilizando en su lugar jalones con mira, hacen que el error de dirección adquiera una magnitud realmente reseñable difuminando las bondades del instrumental. Por suerte, el trabajo no requería grandes precisiones por lo que ha sido un método operativo. La discrepancia entre las desorientaciones calculadas en función de la referencia visada debe ser menor al error total azimutal a priori (Ea), definido como: Donde: Error de verticalidad: Error de dirección: Precisión del compensador automático. Error de lectura: Error de punteria: Precisión acimutal del instrumento. Estación Visado Desorientación e1001 e ,4528 e1001 e ,4574 e1001 e ,4586 e1001 e ,4630 e1001 e ,4589 e1001 e ,4555 e1001 e ,4628 e1001 b1 269,4573 e1001 e ,4589 e1001 e ,4597 Des. Prom 269,4585 Estación Visado Desorientación e1008 e ,4428 e1008 e ,4388 e1008 e ,4448 e1008 e ,4424 Des. Prom 351,4422 pág. 2836 Punto Xutm(m) Yutm(m) Alt. Elipsoid.(m) Alt. Ortom.(m) , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,268 pág. 2937 3. Creación de la cartografía Como se ha dicho en las premisas del proyecto, se ha intentado utilizar para cada etapa la mayor cantidad de software gratuito buscando la reducción de costes. De acuerdo a este principio se buscó un software de edición CAD gratuito que cumpliese con los requisitos mínimos. Tras varias alternativas se escogió utilizar el software de diseño DraftSight. DraftSight es un software de CAD desarrollado por la firma Dassault Systèmes bajo software propietario. Su uso es gratuito con la única condición de registrarse, también gratuitamente, en su página oficial como usuario. Como limitaciones más importantes a destacar sobresale que solo admite diseños en 2D y que en el momento de la realización de este proyecto no permitía importar ficheros de puntos. Para solventar el problema de los ficheros de puntos se recurrió a un pequeño software encargado de importar el fichero de puntos y crear un archivo.dxf apto para el uso con DraftSight. El nombre de este software es todxf y su desarrollador es Eduardo J. Renard. Como único punto débil reseñable es que no admite valores alfanuméricos en el nombre de los puntos. El software toma las coordenadas de los puntos y genera un número identificativo del punto en función de su posición en el fichero. Es un error que puede arruinar el trabajo de varios días si no hemos importado ordenados los puntos o tenemos intervalos vacíos entre una serie de ellos. pág. 3038 4. Modelado 3D Perfiladas las líneas generales de Complutum, se procedió al modelado 3D de los edificios. Las recreaciones se basarían tanto en las descripciones y representaciones mostradas en los paneles informativos del yacimiento como en la página web oficial de Complutum y sobretodo en las ilustraciones de la Guía-Catálogo de Complutum. Desde un principio se encontraron versiones enfrentadas en función de la fuente que consultásemos debido a las distintas revisiones que se han producido de las hipótesis constructivas. Éste es un hecho que obligó a determinar sobre la marcha que hipótesis era la más actual. Se estableció la Guía-Catálogo de Complutum como fuente más fehaciente. Por su parte los paneles informativos y sobretodo la web oficial ofrecen algunas contradicciones que llevan a confusión. Como asistente de diseño gráfico y modelado 3D se seleccionó Sketchup por su simplicidad y facilidad de uso. De nuevo existe una versión gratuita denominada Sketchup Make y otra de pago, Sketchup PRO. La versión PRO incluye una serie de herramientas, importadores y exportadores de ficheros que resultarían de gran ayuda. Sin embargo, siguiendo con la política de costes mínimos se utilizó la versión gratuita MAKE combinada con plugins gratuitos disponibles en varias páginas especializadas. El autor de este proyecto debe reconocer que se probaron diversos plugin con el objetivo de importar el fichero.dxf mostrando un rendimiento muy por debajo del incluido en la versión PRO. Fue este el momento oportuno para aprovechar la prueba gratuita de Sketchup PRO e importar el fichero.dxf que contiene la cartografía. pág. 3139 Modelado del Mercado S.I con Sketchup. A partir de ahí se empleó un tiempo aproximado de 8 meses en la recreación del foro de Complutum. El mayor problema fue concretar la posición exacta de cada elemento conforme a las hipótesis consultadas. Un buen ejemplo es el pórtico sur, lugar del que casi nada se conserva y que fue construido en el SI y reformado en el siglo III. De acuerdo a las hipótesis, existía una salida desde el foro que lo cortaba en dos, sin embargo, en algunas recreaciones no se muestra tal salida ni tampoco es sencillo intuir los accesos a los distintos espacios. Otro problema más relevante fue el diseño interior de los edificios de los que poca información se tiene. Se decidió añadirlos por la importancia que le puede suponer al visitante, ya que la apariencia externa se ha incluido en los paneles, en cambio, el diseño interior y quizá más interesante por los elementos que se conservan, no ha sido así. Para entender y planificar su diseño se recurrió al servicio de arqueología cuya sabiduría y consejos hicieron posible el diseño final. También se recurrió al uso de documentales y publicaciones como apoyo y fuente de inspiración. Terminado el diseño se exportó como fichero OBJ gracias al plugin gratuito OBJexporter de TIG. Este plugin puede ser descargado desde la web sketchucation, especializada en plugin y pág. 3240 recursos para Sketchup. También nos servimos de un segundo plugin llamado CleanUp disponible en la misma web para optimizar el modelo eliminando caras duplicadas o coplanarias. Como inconveniente final se comprobó que al importar los modelos 3D con sus correspondientes texturas asociadas en MetaioSDK, estas se renderizaban de forma errónea. El problema fue resuelto asociando una única textura a cada polígono. Lamentablemente Sketchup no permite ejecutar este proceso de forma automática por lo que se debió completarlo de manera manual y asumir el aumento en el tamaño final del conjunto de texturas, ya que se creó un archivo.png para cada nueva textura. pág. 3341 5. Visión por ordenador y realidad aumentada 5.1 Introducción El problema del reconocimiento del entorno a través de una cámara, además de conocer la posición relativa de los objetos respecto a ésta ha sido objeto de estudio desde los años 70. Varios son los sistemas actuales que permiten crear un modelo 3D a partir de varias imágenes pero o requieren un gran esfuerzo por el operador o el resultado final puede no ser lo suficientemente preciso u obligar a una revisión posterior con a fin de subsanar posibles errores, siempre supeditado a la precisión requerida por el trabajo. Tracking de un objeto en una secuencia de video significa identificar continuamente su localización aunque el objeto o la cámara sufran movimientos. Existen una gran variedad de enfoques dependiendo del tipo de objeto, de los grados de libertad del objeto, la camera y el objetivo de su aplicación. El Tracking 2D tiene como objetivo el seguimiento de la proyección imagen del objeto o partes de él cuyo desplazamiento 3D resulta en un movimiento que puede ser modelado como una transformación 2D. Se requiere entonces un modelo adaptativo para manipular los cambios de apariencia debidos a los efectos de la perspectiva o la deformación. Se provee la posición de la imagen del objeto en términos de centroide y escala o de una transformación afín. También se pueden usar modelos más sofisticados como plantillas deformables, mallas deformables 2D o modelos 2D articulados, sin embargo ninguno de estos métodos implica la recuperación de la posición actual en el espacio. pág. 3442 En el ámbito de la realidad aumentada el Tracking 2D hace referencia al seguimento de una superficie plana como pudiese ser una fotografía y determinar la posición de la cámara además de su orientación con respecto a ella. En contraste el Tracking 3D realiza un seguimiento de un objeto 3D con el propósito de obtener los 6 grados de libertad que definen la posición de la cámara y la orientación relativa de la escena, o es decir, el desplazamiento de un objeto relativamente a la cámara. Existen muchos métodos de seguimiento 3D descritos, tantos como la cantidad de aplicaciones y dispositivos usados, tales como lasers, trackers magnéticos o dispositivos de seguimiento por ultrasonidos. En este proyecto nos centraremos en los métodos que permiten basarnos en el uso de una única cámara como son los dispositivos móviles de hoy en día, aunque se ha visto en el mercado alguno con 2 cámaras separadas por una mínima distancia con el fin de conseguir imágenes estereoscópicas. Su principal ventaja es su bajo coste y que es un sistema no invasivo. Además permite basarnos en características presentes naturalmente, como bordes, esquinas o texturas. Cierto que esto puede llegar a ser muy complicado de procesar porque se encuentran en muchos objetos cotidianos. Además la ocultación simplemente parcial de los mismos suele conllevar un error en el seguimiento. Por otra parte la cámara se puede mover rápidamente provocando imágenes desenfocadas o movidas. Otro factor a tener en cuenta será las condiciones de luz donde las reflexiones o una luz tenue o demasiado brillante puede imposibilitar el seguimiento. Para el ámbito de la arqueología se reducirá el estudio al Tracking de objetos rígidos, en contraste con otras vertientes del Tracking como puede ser la detección de rasgos faciales. Dicho esto, se plantea un problema fundamental. Qué elementos geométricos del objeto podemos extraer que proporcionen un conjunto de características en la imagen aptas para realizar el reconocimiento? pág. 3543 5.2 Descriptores Actualmente en la mayoría de los casos se opta por usar descriptores que analicen los bordes de los objetos o localicen puntos singulares fácilmente reconocibles en la imagen. De ellos se busca que sean: Invariante en rotación: Se dice que un descriptor es invariante en rotación cuando al ser rotada la imagen es capaz de identificar la misma entidad sin lugar a equívocos. Invariante en escala: Un descriptor es invariante en escala cuando al ampliar o reducir la imagen se sigue identificando la misma entidad. Por último, también es muy deseable que sean invariantes a los cambios de luminosidad. A continuación se realizará un análisis de los principales algoritmos existentes para la detección de características de la imagen Fast Corner Detector (FAST) Es un algoritmo desarrollado por Eduard Rosten y Tom Drummond [4], publicado en 2006 y revisado en 2010, basado en la detección de esquinas contenidas en la imagen. Su mayor virtud es su gran eficiencia comparado con otros corner detectors, evitando hacer uso de la convolución y es invariante a la rotación en el plano. La manera de proceder es la siguiente: Se toma un pixel P como referencia. Se analiza entonces el conjunto de píxeles situados a una distancia r desde P. El conjunto de pixeles analizados suele moverse entorno a los 16 pixeles. Por último se considera el punto P como esquina cuando al menos n pixeles del total analizados muestran un valor de luminosidad mayor o menor al del pixel P. Este valor de n es arbitrario pero suele rondar entre los 9 y 12 pixeles. pág. 3644 Ejemplo de funcionamiento de Fast Corner Detector. Se propuso un nuevo test para agilizar el proceso todavía más. En él se analizan unicamente 4 pixeles (1, 9, 5, 13). Primero se comprueba si 1 y 9 son píxeles con mayor o menor luminosidad. Si es así, se comprueba análogamente los pixeles 5 y 13. Para considerar P como punto candidato a ser una esquina al menos 3 de los cuatro pixeles analizados deben ser más o menos luminosos que P. Si pasa el punto P el test entonces se analizan el resto de los 16 pixeles siguiendo el algoritmo original. Las principales limitaciones de este algoritmo radican en que no funciona correctamente con cambios de escala y se ve muy limitado cuando se aplica sobre imágenes movidas, el efecto blur motion. Dado su bajo coste computacional es muy usado como un primer filtro para seleccionar puntos de interés donde más tarde se aplicará un algoritmo más preciso pero también con una carga de operaciones mucho mayor Detector de esquinas de Harris Desarrollado por Chris Harris y Mike Stephens [34] y publicado en Basicamente encuentra la diferencia en la intensidad para un desplazamiento (u,v) desde el punto a estudiar en todas las direcciones. Esto se expresa como: pág. 3745 Se aproxima por una serie de Taylor: por lo que se obtiene sustituyendo: que escrito en forma de matriz: donde A es: Basandose en la magnitud de los valores propios puede deducirse que: 1. Si λ 1 0 y λ 2 0 entonces este pixel (x,y) no tienen ningún rasgo de interés. 2. Si λ 1 0 y λ 2 tiene algún valor positivo grande, entonces existe un borde. 3. Si λ 1 y λ 2 tienen los valores positivos grandes, existe entonces una esquina. Sin embargo el coste de calculo de los valores propios es elevado. Para reducirlo se recurre a la función Mc donde k es un parámetro de sensibilidad: De esta forma no se calcula la descomposición en valores propios de la matriz A. Solo será necesario evaluar el determinante y la traza de A, que es la suma de los elementos de los elementos de la diagonal principal de A. k es un valor determinado empíricamente y se sitúa entre 0,04-0,15. pág. 3846 Cuando: 1. Mc es pequeño, λ 1 y λ 2 toman valores pequeños y por tanto no se encuentran rasgos de interés. 2. Mc <0. λ 1 es mucho mayor que λ 2 o viceversa, entonces existe un borde. 3. Mc toma valores grandes, λ 1 y λ 2 tienen valores grandes, se deduce que existe una esquina. En 1994, J. Shi and C. Tomasi propusieron una pequeña modificación para este algoritmo. En lugar de: se propuso que Mc = min(λ 1, λ 2 ). Si es mejor que un valor umbral determinado se considera el punto como una esquina. El mayor problema del detector de esquinas de Harris radica en que no es invariante a cambios de escala. Ejemplo de funcionamiento del algoritmo Harris. pág. 3947 5.2.3 SIFT Detector Es un algoritmo patentado, diseñado por David G. Lowe [2] de la universidad de Columbia, publicado en el año Es sin duda uno de los algoritmos estrella para el análisis de imágenes. La secuencia de procesamiento es la siguiente: 1. Scale-space Extrema Detection: En este primer paso se realiza una búsqueda sobre todas las escalas y localizaciones que pueden ser asignadas repetidamente en diferentes vistas del mismo objeto. La detección de las localizaciones que son invariantes a los cambios de escala de la imagen pueden ser encontrados buscando características estables en todas las posibles escalas, para ello se usa la función espacio-escala. Se utilizará la función Gaussiana. Por ello el espacio-escala de una imagen queda definido por L(x,y, σ), obtenida a partir de la convolución de un Gaussiano G(x, y, σ) con la imagen de entrada I(x, y): donde G es: Para hacer este proceso más eficiente se utiliza el scale-space extrema en la función diferencia de Gaussiano convolucionada con la imagen: k es un factor que indica la separación entre las dos escalas a utilizar. El modo de proceder es el siguiente: pág. 4048 Dado un valor inicial de σ, se calculan un número s de diferencias Gaussianas G, con σ variando de manera creciente hasta que σ'= 2σ. Para obtener s intervalos enteros el valor de k en cada diferencia Gaussiana debe ser k = 2 1/s. Una vez calculada una octava (σ'= 2σ), la imagen se submuestrea tomando 1 de cada 2 pixeles y se vuelve a calcular otra octava de forma análoga. El número de veces a realizar este proceso es un parámetro a decidir. Representación gráfica del proceso: Representación del proceso scale-space extrema. Obtenidas todas las diferencias Gaussianas de este sistema piramidal se procede a buscar para cada nivel de la misma los extremos locales que pasarán a ser puntos clave. Se considerará un extremo cuando para una determinada diferencia Gaussiana D(x, y, σ) y a una escala determinada, un punto (x0, y0) es mayor a sus 8 puntos vecinos dentro de su nivel y a sus 9 puntos vecinos de cada uno de los niveles inferior y superior. pág. 4149 Representación de la detección de un posible extremo. 2. Keypoint localization: Una vez que se tienen los puntos candidatos se procede a procesarlos para obtener un resultado más preciso eliminando puntos con poco contraste, los cuales son inestables a cambios de iluminación y al ruido. Para ello se utiliza un desarrollo en serie de Taylor de grado 2 de la función diferencia Gaussiana entorno a un punto (x0, y0, σ0). D y sus derivadas son evaluadas siempre en el punto en cuestión χ = (x, y, σ)t. Se toma la derivada de esta expresión igualándola a 0, obteniendo la localización del mínimo o máximo local: Sustituimos en la expresión anterior para obtener el valor del máximo local: El valor mínimo del máximo local del punto en valor absoluto debe ser mayor a 0,03 para ser considerado un punto característico. pág. 4250 Por otra parte se deberá eliminar también los puntos candidatos que proceden de una línea y no de una esquina. Esto se realiza procediendo de manera similar a la seguida en el algoritmo para la detección de esquinas de Harris. Se parte de una matriz Hessiana para D(x, y, σ) evaluada en un punto del espacio-escala determinado (x0, y0, σ0). Ésta es una matriz que contiene las segundas derivadas de la función a estudiar. Tendremos una matriz 2x2 donde si sus valores propios α y β son uno grande y el otro pequeño significará que existe un borde. Los valores propios de H son proporcionales a las curvaturas principales de D. Consideramos α el valor propio de mayor magnitud y β el menor. Podemos calcular la suma de los valores propios y su producto a partir de la traza y el determinante de la matriz: Si el determinante es negativo, las curvaturas tienen diferentes signos y el punto queda descartado. Consideramos el radio r como la relación entre α y β. De esta forma obtenemos que α= rβ. Se considera que el punto es válido cuando se cumple que: El valor de r se recomienda establecerlo en 10 como umbral válido. pág. 4351 3. Asignación de la orientación: Mediante la asignación de la orientación conseguimos que los puntos claves sean invariantes a la rotación. Para cada punto de la imagen L(x, y, σ) es posible determinar el módulo de su gradiente m(x,y) y la fase del mismo Θ(x; y): La orientación de un punto clave queda determinada considerando las direcciones de todos los puntos de la imagen dentro de cierto entorno. Se produce entonces un histograma de direcciones ponderado por una ventana Gaussiana circular centrada en el punto clave. Cada máximo en el histograma corresponde a la dirección dominante en el gradiente local y será asignada al punto clave. Si en el histograma existiesen otros máximos secundarios de valor mayor o igual al 80% del máximo principal, estos se utilizarían para generar nuevos puntos claves con esa dirección. 4.Creación del descriptor SIFT: En este último paso buscamos asignar para cada punto clave un descriptor relativamente invariante o estable a cambios de iluminación y distorsiones. A partir de los valores de la magnitud y fase del gradiente del entorno del punto clave calculados en el punto anterior, con ventana Gaussiana centrada en el punto clave, se pondera los valores de módulo y fase de 4x4 subregiones en la vecindad del mismo con 8 orientaciones distintas para cada subregión. Se obtiene, por tanto, para cada punto clave un descriptor de 4 x 4 x 8 = 128 valores. pág. 4452 **Ésta es una simplificación del paso. Se ha dividido en 2x2 subregiones en lugar de las 4x4 subregiones del algoritmo original. ** Representación simplificada de un descriptor SIFT. Las ventajas del algoritmo residen en el alto número de características encontradas, ya que según su autor, para una imagen de 500x500 pixeles se obtienen cerca de 2000 características estables, siempre dependiendo de la imagen a tratar. Por otro lado, se comporta muy bien en imágenes muy texturizadas con gran cantidad de detalles. Sus inconvientes son como se ha podido deducir, una incapacidad notoria a la hora de procesar imágenes con pocos detalles o discriminando entre objetos con una apariencia similar o que se diferencien por el color debido a que el algoritmo SIFT solo trabaja en la escala de grises. Y el más importante de todos es el tiempo de procesado, siendo inviable en la mayoría de los casos para aplicaciones en tiempo real Speed-Up Robust Features (SURF) El algoritmo SURF [3] surgió en 2006 como una alternativa al descriptor SIFT mejorando considerablemente su velocidad y robustez ante posibles transformaciones de la imagen. SURF hace uso de imágenes integrales de modo que se agilizan los posteriores procesos de calculo. pág. 4553 Las imágenes integrales son una estructura de datos y algoritmo para la rápida y eficiente generación de suma de valores en un subconjunto rectangular de una cuadricula. En el siguiente ejemplo básico se muestra el resultado al crear una imagen integral a partir de una imagen original donde cada pixel tiene un valor de 1. Imagen original: Imagen integral: Esquema de calculo en Im. integrales Obtener la suma de los valores de los pixeles del área marcada en la imagen original supone recorrer los pixeles y tomar el valor de cada pixel para ser sumado, en cambio en la imagen integral se computa como las sumas y restas de 4 rectángulos: Imagen original = = 6. Imagen integral = D(25) B(15) C(10) + A(6) = 6. pág. 4654 Fast Hessian Detector El descriptor SURF se basa en el uso del determinante de la matriz Hessiana H. Lo que diferencia a SURF de otros algoritmos es que no utiliza diferentes medidas para el cálculo de la posición y la escala de los puntos de interés individualmente. En SURF se utiliza el valor del determinante de la matriz Hessiana en ambos casos. Dicho esto, la matriz Hessiana se define para un punto p(x,y) y escala σ: Donde tanto Lxx(p, σ), Lxy(p, σ), Lyy(p, σ) son la convolución de la derivada parcial de segundo orden de la Gaussiana G(σ) con la imagen I en el punto p. Los Gaussianos son óptimos para el análisis del espacio-escala pero necesitan ser discretizados y recortados, por lo que en SURF se recurre al uso de filtros de caja. Los filtros de caja aproximan las derivadas parciales de segundo orden de las Gaussianas y pueden ser evaluados con gran velocidad con imágenes integrales, independientemente de su tamaño. Las aproximaciones de las derivadas parciales se denotan como Dxx, Dxy y Dyy. Por su parte el autor ofrece una aproximación propia del determinante de la matriz Hessiana como: Arriba: Derivadas Gaussianas de segundo orden en el eje y y en xy. Abajo: Aproximación usando filtros de caja ponderados en la dirección y (Dyy) y xy (Dxy). pág. 4755 En el operador SURF, gracias al uso del filtro de caja e imágenes integrales, se reemplaza la creación de pirámides de imágenes suavizadas con filtro Gaussiano como ocurre en el algoritmo SIFT por la aplicación del filtro directamente en la imagen original. El espacio-escala es analizado por medio de ir elevando el tamaño del filtro en lugar de reducir el tamaño de la imagen. Análisis del espacio-escala: SIFT(izq.) y SURF(dcha). La escala más detallada que se obtiene corresponde a un filtro de caja de dimensión de 9x9, correspondiente a las aproximaciones de la derivada parcial de segundo orden de la Gaussiana con σ = 1,2. El resultado obtenido tras aplicar la convolución con el filtro de dimensión 9x9 es considerado como la capa de escala inicial. Esta escala inicial es s= 1,2; la cual corresponde con una Gaussiana de σ = 1,2. σaprox = Tamaño filtro actual * (Escala filtro base / Tamaño filtro base) σaprox = Tamaño filtro actual * (1,2/9) Aumentando los filtros se van creando las sucesivas capas de la siguiente forma. Para cada octava, el incremento de tamaño del filtro es el resultado de doblar el incremento realizado en la octava anterior. pág. 4856 Ejemplo de las distintas octavas: 1º Octava o octava inicial - 2º Octava - 3º Octava - Donde 6, 12 y 24 son los incrementos en el tamaño del filtro para cada octava. Por su parte 9x9, 15x15, 21x21, 27x27... son el tamaño del filtro. Representación gráfica del tamaño de los filtros junto con su correspondencia a la escala (Scale) y la octava a la que pertenecen. Para detectar un máximo local se siguen 3 pasos: 1. Se pasa un primer filtro, si la intensidad del pixel se encuentra por debajo de un cierto umbral se desecha. 2. Posteriormente cada pixel es comparado en el espacio escala con sus sus 26 vecinos más próximos, comprendidos por los 8 que le rodean en su escala y 9 en cada escala superior e inferior. Se considerará un máximo local si su intensidad es mayor que la de sus pixeles vecinos. pág. 4957 3. Se localiza con mayor precisión el punto interpolando los datos cercanos con precisión de sub-pixel. Esto se hace mediante el método de Brown, expresando el determinante de la función Hessiana H(x,y, σ) como el polinomio de Taylor e iterando hasta que el error es menor a 0,5 pixeles. Si nunca se llega a cumplir, se desecha el punto. Asignación de la orientación Para otorgar las características invariantes a la rotación, SURF plantea el uso de los filtros de Haar. Filtros de Haar: El filtro de la izq. computa las respuestas en la dirección X y el de la derecha en la dirección Y. El color negro se identifica con el valor -1 y el color blanco con el valor +1. Para determinar la orientación de un punto se calcula la respuesta a los filtros de Haar en ambas direcciones, x e y, con tamaño de 4s para un conjunto de pixeles dentro de un radio de 6s del punto detectado. s es la escala a la que el punto fue detectado. Una vez que se han calculado las respuestas, se ponderan con una gaussiana centrada en el punto de interés de valor de desviación estándar de σ = 2,5s. Hecho esto, los resultados ya ponderados se representan como puntos en el vector espacio, con las respuestas en el eje x en el eje de abcisas y las respuestas en el eje y, en el de ordenadas. Finalmente se obtiene una orientación dominante mediante la rotación de un segmento de circulo cubriendo una sección de pi/3 alrededor del origen. En cada posición se suman las respuestas en x e y dentro del sector y usadas para formar un nuevo vector. Se concluye que el vector mayor representa la orientación final del punto de interés. pág. 5058 Proceso de asignación de la orientación. Componentes del vector Se construye una región cuadrada de tamaño 20s alrededor del punto de interés y orientado en conforme a la orientación calculada anteriormente. Después esta región se divide en 4x4 subregiones y se calcula las respuestas de Haar de tamaño 2s para una muestra de 25 puntos repartidos uniformemente. Refiriendo a cada respuesta al filtro de Haar en x e y como dx y dy, se ponderan las respuestas con una gaussiana de σ = 3,3s centrado en el punto de interés y se obtiene un vector para cada subregion con el siguiente formato: Representación gráfica del descriptor SURF pág. 5159 Por tanto cada subregión contribuye al vector descriptor global aportando 4 valores, para conformar una dimensión total del vector de 64 valores. Se ha obtenido de esta forma un descriptor invariante a la escala, rotación e iluminación. 5.3 Comparativa entre los distintos descriptores Los resultados mostrados a continuación son gracias al trabajo de terceras personas. El autor de este proyecto no es el autor de ninguna de las comparativas mostradas aquí ya que su fin no es realizar un análisis exhaustivo de los distintos descriptores sino ofrecer una visión general de ellos. En el siguiente trabajo realizado por Miguel Ñauñay Ilbay, Luis Tipantuña Córdova, Geovanny Raura y Tatiana Gualotuña para la Facultad de Ingeniería en Sistemas e Informática de la Escuela Politécnica del Ejército en Sangolquí, Ecuador [7], se realiza una exhaustiva comparativa de la eficiencia de los algoritmos SIFT, SURF y ORB en dispositivos móviles bajo la plataforma Android. ** El descriptor ORB (Oriented FAST and Rotated BRIEF) es un descriptor publicado en 2011 como una alternativa por su rápidez de calculo ante SIFT y SURF. Utiliza el algoritmo FAST para extraer puntos claves y BRIEF para la extracción de los descriptores. ** Se tomaron 100 logotipos distintos duplicados, en total 200 imágenes, de 640x480 pixeles y con una profundidad de color de 24 bits. 100 logotipos servirían para el entrenamiento y los otros 100 logotipos para la fase de pruebas o comprobación. Los 100 logotipos designados para la fase de comprobación se dividieron en cuatro grupos en función de la transformaciones aplicadas: individuales, escala, rotación e iluminación. pág. 5260 RESULTADOS EN EFICENCIA La gráfica a continuación resume el número promedio de descriptores o keypoints encontrados en una imagen de entrada por parte de los descriptores. RESULTADOS EN TIEMPO DE EJECUCIÓN pág. 5361 CONSUMO DE BATERIA USO DE LA MEMORIA EFICACIA La medida F1 es un valor ponderado entre precisión(p) y Recall(R) y es usada para determinar la precisión de los descriptores. Se define como: pág. 5462 Precisión(P) es el porcentaje de las imágenes que realmente están relacionadas a la imagen original. Su formula es: P = coincidencias(matches) correctas/total de coincidencias(matches) encontradas. Recall(R) es el porcentaje de imágenes que fueron identificadas como relacionadas con la imagen original respecto al número total de imágenes analizadas. Se calcula como: R = coincidencias(matches) correctas /correspondencias. Las correspondencias se entienden como el número de imágenes que están relacionadas con la imagen original, es decir, que pertenecen a la misma escena. De estás gráficas se desprende que: 1. Dado el conjunto de imágenes utilizado, los algoritmos ORB y SURF extraen un número mucho mayor de descriptores que SIFT. 2. El tiempo de calculo de SIFT triplica al de sus competidores. Pero aún en SURF sigue siendo demasiado elevado el tiempo de procesado para aplicaciones que requieren una ejecución en tiempo real. El que más se acerca a esta premisa es ORB. 3. El consumo de memoria es en cambio mucho más destacable para el algoritmo SURF. Se triplica al uso del algoritmo SIFT y casi es 8 veces mayor que para el algoritmo ORB. 4. La precisión promedio es bastante similar en los 3 algoritmos. pág. 5563 Como se ha dicho, la precisión promedio en la gráfica refleja unos resultados parejos, sin embargo, como apuntan los autores, el descriptor SURF tiene un mejor desempeño en imágenes que no han sufrido transformaciones y con imágenes con cambios de escala, alcanzando un 65% y 57% de precisión promedio. Para terminar el estudio se añaden dos conclusiones: a) La elección de imágenes quizás no fue la más apropiada para estos algoritmos pues los logotipos pecan de falta de texturas, número de objetos que componen la imagen y transformaciones. Por otra parte, el número de keypoints extraídos por descriptor es muy variable en función de las características de la imagen analizada. b) La velocidad con la que se está desarrollando la tecnología móvil puede hacer que en un período de tiempo prudente, pueda hacerse uso de algoritmos que a día de hoy no resultan operativos. En el siguiente trabajo A comparative Study of Three Image Matching Algorithms: Sift, Surf and Fast de Maridalia Guerrero [5], se realiza un análisis en profundidad de los descriptores y la eficacia con resultados muy diferentes. En él se establecen 4 imágenes básicas de 457x630 pixeles en diferentes condiciones a las que se les genera una copia con una rotación no superior a 30. pág. 5664 pág. 5765 La siguiente tabla muestra las características o descriptores encontrados: De aquí se obtienen varias conclusiones: a) SIFT funciona muy bien con imágenes muy texturizadas, como se demuestra al analizar la foto de la pared de ladrillos y ver que su menor rendimiento corresponde con la imagen del barco. b) SURF también tiene una enfoque principalmente a imágenes texturizadas. Por contra parece sufrir con cambios de condiciones lumínicas. c) FAST ofrece un buen rendimiento en la imagen del edificio por la existencia de esquinas. Lamentablemente sufre en condiciones de imágenes poco contrastadas como sugiere la imagen más subexpuesta del barco y en la inesperada pared de ladrillos. En las siguientes tablas se muestra el número de coincidencias(matches) y la eficacia determinada por 2*matches/total de características y expresada en porcentaje: pág. 5866 pág. 5967 Por último también y quizá el punto más importante, se analizó la calidad de los matches. La autora realizó una detección manual de 20 características y procedió a encontrar sus homólogas en la imagen transformada. Se dividieron los errores en 2 tipos: - Tipo I: Los errores cometidos por parte del descriptor al no detectar los puntos que previamente han sido detectados manualmente por la autora. - Tipo II: Errores cometidos en los matches generados automáticamente entre dos características. Se puede concluir que el algoritmo SIFT aunque proporciona más características tiene una eficacia menor en estas condiciones. Adicionalmente se concluye que los errores encontrados indican que los descriptores deben ser todavía refinados. pág. 6068 5.4 2D Tracking Dentro del 2D Tracking se distinguen dos vertientes: 2D Tracking haciendo uso de marcadores. 2D Tracking mediante análisis de características naturales D Tracking basado en el uso de marcadores: Es quizás el sistema de realidad aumentada más fiable. El uso de marcadores o fiduciales ayuda a la extracción de características de una forma robusta y proporciona medidas fiables para estimar la pose. Dentro de ellos se consideran 2 tipos: Puntos fiduciales Los puntos fiduciales llevan muchos años siendo usados en fotogrametría. Pueden ser detectados con gran facilidad y medidos con una precisión mucho mayor que las características naturales. En particular, los fiduciales con forma circular propocionan los mejores resultados debido a que son relativamente invariantes a la distorsión perspectiva y a que su centroide puede ser calculado con una precisión mejor que el pixel. Por supuesto, se considera conocidas con la suficiente precisión sus coordenadas en el espacio. Una vez detectados en la imagen tenemos un conjunto de puntos de los que se conocen sus coordenadas (X,Y,Z) en el terreno y sus coordenadas proyectadas en la imagen (u,v). pág. 6169 En sistemas para ordenadores se utiliza un sistema de coordenadas homogeneas, lo que permite integrar en una única matriz las matrices de rotación y traslación. La matriz de proyección P es definida por P=K[R t], donde K es la matriz de calibración y [R T] es la matriz de parámetos externos compuesta por la matriz de rotación R y el vector de traslación T. La expresión general de la proyección perspectiva es: u α s u0 r11 r12 r13 Tx λ v = 0 β v0 * r21 r22 r23 Ty * r31 r32 r33 Tz Matriz de calibración K. 5 grados de libertad Matriz de parámetros externos [R t]. 6 grados de libertad (3 giros y 3 traslaciones). X Y Z 1 Dentro de la matriz de calibración K: α Factor de escala en la dirección u. α= Ku*f (Ku es la resolución en la dirección u y f la focal). β Factor de escala en la dirección v. β=kv*f (Kv es la resolución en la dirección u y f la focal). S Falta de perpendicularidad (oblicuidad) entre los ejes u y v. u0 Coordenada u del punto principal. v0 Coordenada v del punto principal. Se pueden determinar los 11 parámetros de forma simultánea, no obstante se recomienda determinar los parámetros de matriz de calibración de forma separada y posteriormente determinar la pose de la cámara por algunos de los métodos existentes, como pueden ser la transformación lineal directa o la estimación de la pose a partir de un plano 3D. pág. 6270 Planos fiduciales Los planos fiduciales son las soluciones más empleadas en aplicaciones de realidad aumentada. Su diseño se basa en un marco cuadrado negro sobre fondo blanco. Existen varias soluciones de procesado dependiendo del autor, pero poniendo como ejemplo la librería ARToolkit, su sistema es el siguiente: 1. La imagen es primeramente transformada en una imagen binaria. 2. A continuación se buscan las regiones conectadas por pixeles negros. Las regiones cuyo contorno puede ser definido por 4 segmentos de lineas unidas se mantienen. 3. Se corrige la distorsión de perspectiva de cada región y se comparan con el patrón conocido de antemano por el software. La corrección se realiza aplicando la homografía H, cuyos parámetros han sido calculados a partir de las coordenadas de las esquinas detectadas en la imagen con sus respectivas en el patrón almacenado. Resumen del proceso de tracking y superposición 3D a través de un marcador. Se ha seleccionado como ejemplo el procedimiento seguido por la librería ARToolkit ya que es lo suficientemente robusto y ligero como para ejecutar con soltura aplicaciones en tiempo real. Otras soluciones en cambio, promueven la utilización del filtro kalman extendido. pág. 6371 5.4.2 Tracking 2D mediante análisis de características naturales o markless: El Tracking 2D mediante análisis de características naturales de la imagen supone un paso adelante lógico en la tecnología de reconocimiento de imágenes y realidad aumentada. El uso de marcadores aunque es el método más eficiente hasta la fecha implica acondicionar el entorno en caso de, por ejemplo, recrear un yacimiento arqueológico. En su lugar el uso de características naturales supone no tener que llevar a cabo grandes preparativos. La manera de proceder es similar a la utilizada en el tracking mediante uso de marcadores. Se considera una imagen bien texturizada o con gran cantidad de esquinas de fácil detección. Se aplica entonces la extracción de características o keypoints del fotograma por alguno de los descriptores existentes y se contrasta con los almacenados en la base de datos. Tenemos de nuevo una correspondencia entre coordenadas terreno y coordenadas imagen del punto proyectado. Se calcula la pose a partir de la obtención de los parámetros de homografía o resolviendo el modelo perspectivo. Se realizaron varios ensayos con el propósito de comprobar su posible eficacia sobre elementos planos del yacimiento de Complutum y estudiar la influencia de pequeños relieves en la pared como pudiesen ser salientes. Las pruebas consistieron en tomar ciertos objetos cotidianos con diferentes niveles de texturizados y grado de relieve. Se tomó entonces un mínimo de 4 puntos en cada imagen para transformar la imagen de acuerdo a un plano principal que se situaría perpendicular a la cámara y así corregir la perspectiva. Como premisa fundamental se marcó el uso de una cámara no calibrada ya que es altamente improbable que el usuario final a la hora de recorrer el yacimiento usase un dispositivo con la cámara previamente calibrada. Se diseñó una pequeña herramienta para transformar imágenes aplicando una transformación proyectiva bidimensional. Medidos 4 puntos en ambos sistemas, píxel y terreno, se calculan los parámetros de la transformación. pág. 6472 Prueba 1: TRACKING DE UNA CALCULADORA Punto x'(cm) y'(cm) xp (pixel) yp (pixel) , , ,2 15, Las ecuaciones de la transformación proyectiva son: Parámetros de transformación a1 a2 a3 b1 b2 b3 c1 c2 0, , , , , ,768559E-005 3, , pág. 6573 TEST 2D: RESULTADOS Una calculadora supone un trackable bastante texturizado, donde se pueden aproximar dos planos paralelos. Uno es el de la superficie del cuerpo de la calculadora y el otro el definido por la superficie de los botones. Su relieve es bajo con apenas un par de mm. El tracking desarrollado fue óptimo, ofreciendo un resultado robusto sin apenas vibraciones apreciables en el modelo renderizado. pág. 6674 Prueba 2: TRACKING DE UNA MINIRADIO Punto x'(cm) y'(cm) xp (pixel) yp (pixel) , , ,3 15, Parámetros de transformación a1 a2 a3 b1 b2 b3 c1 c2 0, , ,49756E-005-0, , ,861675E-005 8, , pág. 6775 TEST 2D: RESULTADOS El tracking de la miniradio supone un incremento de la dificultad por ser un objeto menos texturizado, el nivel de relieve de los botones y el dial, mucho más pronunciado, sumado ello al factor de que el frente del cuerpo de la miniradio se posiciona en un plano distinto al definido por el frente de los altavoces. Aún con estos condicionantes el tracking se mostró robusto como se puede ver en el video adjunto. Prueba 3: TRACKING DE UN PAQUETE DE CARAMELOS pág. 6876 Punto x'(cm) y'(cm) xp (pixel) yp (pixel) , , Parámetros de transformación a1 a2 a3 b1 b2 b3 c1 c2 0, , , , , ,935335E-005 3, , TEST 2D: pág. 6977 RESULTADOS El propósito de la prueba era comprobar el tracking sobre curvaturas irregulares. Se dispuso un paquete de caramelos, bien texturizado y con ayuda de un tablero de ajedrez se rectificó la imagen. Los resultados de nuevo fueron sorprendentemente favorables ofreciendo un gran rendimiento incluso cuando se modificaba el relieve moviendo los elementos del interior. Prueba 4: TRACKING DE UN PORTALÁPICES Punto x'(cm) y'(cm) xp (pixel) yp (pixel) , , ,8 26, Parámetros de transformación a1 a2 a3 b1 b2 b3 c1 c2 0, ,2408E-005-6,0882E-006 0, , ,811286E-005 0, , pág. 7078 TEST 2D: RESULTADOS Quizás la prueba más difícil de todas por dos motivos. Se conjugan un relieve acusado y poco texturizado con características difíciles de extraer, ya que no existen muchas esquinas bien definidas para un descriptor basado en la búsqueda de esquinas. Adicionalmente los elementos pág. 7179 que ofrecen un buen contraste con el entorno circundante como pudiesen ser los ojos, nariz o boca resultan muy extensos, irregulares y no contenidos en el mismo plano. El tracking realizado arrojó un resultado mediocre, el sistema reconocía el patrón pero no con un resultado robusto provocando vibraciones en el modelo 3D renderizado, así como variaciones importantes en su posición al mover la cámara en diferentes ángulos. CONCLUSIONES FINALES DEL ESTUDIO Finalmente se demostró que se puede obviar el efecto del relieve en ciertas condiciones como son un patrón o trackable bien texturizado, respetar una cierta distancia y ángulo de visión y la existencia de elementos claves que se puedan aproximar sus posiciones al mismo plano. Se demostró que el Tracking 2D podría resultar una alternativa viable al Tracking 3D en bastantes puntos del yacimiento arqueológico de Complutum. Entre las bondades con respecto al Tracking 3D se debe destacar que es un método más robusto al utilizar imágenes con mayor resolución que las utilizadas actualmente en el Tracking 3D para crear el Tracking Map. **Se pueden visualizar los test realizados en los videos adjuntos a la memoria** Por otra parte, dado que no se encontraba disponible el laser scanner, se relegó como una segunda opción en caso de que fallase el sistema final desarrollado mediante Tracking 3D, razonado en el aumento de la carga de trabajo que supondría obtener todos puntos necesarios a observar mediante intersección directa. Como tercera opción se barajó la posibilidad de utilizar los paneles informativos como elementos trackables. Su debilidad es que sufren bastante la fuerza del sol llegando a impedir su lectura y su correspondiente deterioro, ignorando además el hecho de que pueden ser remodelados o cambiados de emplazamiento. pág. 7280 5.5 Tracking 3D El problema del reconocimiento del entorno a través de una cámara además de conocer la posición relativa de los objetos respecto a ésta ha sido objeto de estudio desde los años 70. Varios son los sistemas actuales que permiten crear un modelo 3D a partir de varias imágenes pero o requieren un gran esfuerzo por el operador o el resultado final puede no ser lo suficientemente preciso u obligar a una revisión posterior con el fin de subsanar posibles errores. Siempre supeditado a la precisión requerida por el trabajo. La tecnología monoslam El término SLAM se traduce como mapeado y localización de forma simultánea. Es el problema de determinar la posición de un objeto en el espacio, mientras al mismo tiempo se determina la estructura del entorno que lo rodea. Por su parte la tecnología monoslam trata de llevar a cabo la misión anterior utilizando como sistema de visión una única cámara. La dificultad de de este método reside en que una cámara con una pose desconocida se mueve con velocidades angular y lineal desconocidas, en un entorno de puntos de los que también se desconoce su posición. Para nuestro cometido no será necesario llevar a cabo la localización y el mapeado de forma simultánea, sino que crearemos el mapa de reconocimiento previamente para después incluir el archivo resultante en la App final de tal manera que ésta solo tendrá que ocuparse del tracking. A continuación se describe el único método encontrado con un carga computacional que pueda ser satisfecha por los actuales dispositivos móviles. En anteriores propuestas se utilizaba el algoritmo SIFT, siendo desplazado en el siguiente método por el uso de FAST. El método Parallel Tracking and Mapping (PTAM) fue desarrollado por Robert Oliver Castle en su tesis Simultaneous Recognition, Localization and Mapping for Wearable Visual Robots [18]. pág. 7381 5.5.1 PTAM Parallel Tracking and Mapping En las últimas investigaciones de la tecnología de reconocimiento del entorno se separa el seguimiento Tracking de la creación del mapa de reconocimiento Mapping. Esto se debe al largo tiempo empleado por anteriores métodos que utilizaban el EKF Filtro de Kalman Extendido y el FastSlamBased para referenciar el mapa de reconocimiento 3d y su covarianza. El esquema general de funcionamiento es el siguiente: Resumen del proceso de Tracking y Mapping seguido por PTAM. Proceso de Tracking La imagen tomada a través de la cámara se procesa obteniendo una imagen en escala de grises que será la utilizada para los posteriores cálculos del tracking mientras que la original es reservada para ser mostrada en el display. En la mayoría de aplicaciones basadas en la visión por ordenador se hace indispensable obviar las componentes RGB de la imagen debido al alto coste en operaciones que implica su procesado. Con la imagen generada se crean 4 subimágenes de forma piramidal utilizando diferentes escalas y se procede a obtener las características o descriptores a cada escala utilizando el algoritmo FAST. pág. 7482 Se calcula una primera pose de la cámara a priori a partir de un modelo del movimiento de la cámara donde se asume una velocidad constante en presencia o ausencia de medidas. Este modelo tiene como única finalidad la asociación de datos pero no es utilizado en el proceso de Tracking y Mapping. Se extraen las características y se obtiene el valor ajustado de la pose en dos procesos: Diagrama del proceso de tracking en PTAM. 1. Se proyectan todos los puntos 3D al 2D para encontrar un subconjunto potencialmente visible. Entonces se toma un subconjunto de puntos, el autor original recomienda unos 50 puntos, en las escalas más groseras. Se contrastan con los encontrados en la imagen tomada por la cámara y los que son encontrados en ambos son utilizados para corregir los valores de la pose haciendo un ajuste de Gauss-Newton o mínimos cuadrados, realizando hasta 10 iteraciones. 2. Se vuelve a realizar el proceso buscando un ajuste más fino tomando hasta 1000 puntos dentro de todas las escalas de la pirámide. En la elección de los puntos se dará prioridad a los incluidos en las escalas más detalladas completando los faltantes con las más groseras. En estos ajustes ejecutados para obtener la pose µ ajustada, se busca hacer mínimo el error de reproyección: Donde p es una medida robusta del error de reproyección e j : pág. 7583 K -> Parámetros de distorsión e intrínsecos de la cámara. µ -> Valores de la pose. X j -> Coordenadas de los puntos 3D. La varianza de la medida σ j se asume que es isotrópica (no varía en función de la dirección escogida para la medida) y se tiene que escalar como 2 2L donde L es el nivel de la pirámide. En lugar de la ponderación clásica utilizada en el ajuste por mínimo cuadrado, se utiliza el estimador robusto de Huber M, con un umbral σ T : Donde β se define como β = (e j / σ j ) y σ T se establece como el valor de la desviación estándar. Se debe realizar varias iteraciones hasta un número máximo de 10 para el ajuste grosero y otras 10 para el ajuste fino. La porción de características encontradas correctamente es monitorizada para proporcionar una medida de la calidad del tracking. Por otra parte se eligen dos umbrales arbitrarios. Si esta porción de características toma valores por debajo del umbral más alto, el tracking continua como antes, pero a los fotogramas se les impide pasar a ser fotogramas clave para el proceso de mapeo Mapping, ya que la calidad de la imagen es probablemente pobre. En cambio si los valores obtenidos se sitúan por debajo del umbral más bajo, se asume que el tracking ha fallado y se pasa a usar un método de relocalización utilizado para recuperar la posición de la cámara. pág. 7684 Selección de los fotogramas clave Los fotogramas clave son fotogramas que participan el proceso de creación del mapa de reconocimiento. Para obtener este estatus deben cumplir una serie de condiciones: a) El tracking debe ser considerado exitoso o válido. b) La cámara debe haberse trasladado una distancia mínima desde la toma del anterior fotograma clave. c) Entre un fotograma clave y el siguiente debe haber pasado un intervalo mínimo de 20 fotogramas. d) La cola de fotogramas pendientes de procesar tiene que ser menor a 3. Gráfico del método de selección de fotogramas claves en PTAM. La distancia mínima se basa en la distancia Euclidea entre los fotogramas y la profundidad promedio de los puntos de la escena. Cada fotograma clave contiene las características extraídas de él y la lista de características encontradas que aparecen simultáneamente en la imagen y en el mapa de puntos, así como la mejor pose estimada obtenida del Tracker. pág. 7785 Creación del Mapa de Reconocimiento Metaio, empresa de la que se hablará más adelante, proporciona una App gratuita que nos permite crear el mapa de reconocimiento de una manera sencilla. El resultado son dos ficheros donde uno contiene la nube de puntos con sus datos asociados y el otro contiene además de la nube de puntos y sus características, una imagen asociada que nos permitirá en el Creator, el software asistente de metaio, ver y situar correctamente el contenido 3D. Metaio no permite modificar ni ver su algoritmo por lo que el método empleado es una incógnita. Sin embargo, su manera de proceder y las restricciones de movimiento hacia el usuario permiten pensar que el trabajo aquí expuesto ofrece una aproximación muy cercana a la forma de actuar del software de Metaio. Un ejemplo de ello, es la necesidad de realizar un movimiento paralelo de la cámara al empezar la creación del mapa. En este trabajo se realza el hecho de que la creación del mapa de reconocimiento y el Tracking son procesos que corren de forma independiente pero simultáneamente. El proceso de creación del TrackingMap o mapa de reconocimiento se resume en el siguiente esquema: Diagrama del proceso de creación del mapa de reconocimiento. Para iniciar el mapa se utiliza un algoritmo basado en 5 puntos para resolver el problema de determinar la posición relativa entre dos fotogramas continuos. Existen algunas variantes repág. 7886 solutivas pero en este caso se utiliza el algoritmo de Nister para obtener la posición relativa de los fotogramas, combinado con el algoritmo RANSAC. ** El algoritmo de Nister [35] plantea la relación entre dos conjuntos de puntos imagen, representado cada punto por su vector de 3 dimensiones, q y q', correspondientes a las coordenadas (x,y,1) en cada sistema proyectivo. Ambas proyecciones quedan relacionadas mediante la matriz fundamental. Sin embargo, se asume que ambas imágenes están libres de distorsiones, por lo que se emplea la matriz esencial(e) en lugar de la fundamental. Obteniendo que q'eq = 0. Para la resolución se determinan los coeficientes del polinomio de grado 10 y se descompone para finalmente recuperar los vectores de rotación R y traslación T mediante la descomposición en valores singulares de la matriz E. Ransac es un algoritmo de estimación robusta que permite hallar un modelo matemático a partir de datos contaminados con numerosos valores que no se ajustan al modelo. En el caso de la resolución de la posición relativa, se toman un número aleatorio de muestras de dos o tres perspectivas, cada una conteniendo 5 puntos. Se ejecuta el algoritmo de Nister y por tanto, se generan una serie de hipótesis. Entonces se busca la mejor hipótesis de acuerdo a la medida robusta sobre todos los puntos participantes. Finalmente la mejor hipótesis se ajusta por un proceso iterativo.** El primer punto de vista de cámara es seleccionado por el usuario. Su imagen y lista de características se convierten en el primer fotogramas clave, con pose µ 1 = {R,t} 1 = {I,0}, siendo R la rotación y t la traslación. Para este primer fotograma se consideran 0 los giros w, phi y kappa, así como las componentes de traslación Tx, Ty, Tz. De ello resulta que la matriz de rotación es igual a la matriz de identidad I. La cámara entonces se mueve a una nueva posición de pose µ 2 = {R,t} 2.. Es muy importante tener cuidado de que las características puedan ser seguidas usando unicamente la imagen. Es aquí donde surge el problema de determinar la posición relativa entre los dos fotogramas que como se ha dicho antes se resuelve utilizando el algoritmo de Nister. pág. 7987 Orientación relativa a partir de 5 puntos conocidos en ambas imágenes. Las características encontradas por el detector FAST en las dos imágenes, son utilizadas para triangular el primer conjunto de puntos 3d Xj de la escena. El autor asume que la traslación t 2 se situará sobre los 100mm de forma que se pueda aplicar una escala razonable al modelo. La escala es arbitraria y no afecta a los cálculos posteriores. Habitualmente, muchas de las características 3D iniciales caen sobre el mismo plano, de forma que se encuentra un plano dominante en la estructura, y el mapa reorientado de modo que este plano define el plano Z = 0. Este plano no juega ningún papel especial en la estructura resultante calculada a partir de los cálculos de movimiento. Es simplemente una convención utilizada en las aplicaciones de realidad aumentada. El tiempo estimado para inicializar el mapa depende del tiempo empleado por el usuario para desplazar la cámara cuidadosamente y seleccionar los fotogramas clave, pero el autor lo sitúa en un tiempo cercano a 2 segundos. Con el mapa inicializado, se produce el tracking siguiendo el método explicado con anterioridad pasando algunos fotogramas claves para ser procesados. A ésta se le extraen las características o descriptores FAST para cada escala de la pirámide. Después un subgrupo de estas características son contrastadas con las existentes en el mapa y se estima una nueva pose. pág. 8088 Tras esto, se añaden las nuevas características de las que no se han encontrado correspondencias en el mapa. Para encontrar la posición 3D de los puntos, se buscan correspondencias en los fotogramas clave espacialmente más cercanos y su posición es triangulada utilizando las poses estimadas de los fotogramas clave. Se procede entonces a realizar un ajuste de Levenberg-Marquardt para optimizar la posición de todos los puntos 3D X j contenidos en el mapa, así como de las pose de los fotogramas {µ k.}. La única pose que no interviene en el ajuste es la del primer fotograma que se considera fijo. ** El algoritmo de Levenberg-Marquardt es una modificación del clásico método de Gauss- Newton añadiendo características del método de gradiente descendente. Presenta una mejora en la robustez con respecto al método clásico, encontrando una mejor solución incluso si el punto inicial dista mucho del mínimo final. ** Ejemplo de creación de un mapa de reconocimiento. Arriba: Correspondencia de las características en el escenario. Derecha: Esquema del mapa con todos las características extraídas y los fotogramas clave. pág. 8189 En este ajuste se calculará la posición proyectada estimada dentro del fotograma k del conjunto de puntos X j. Su formulación es la siguiente: Donde el error cometido entre el punto observado en la imagen y el calculado es: Sabiendo que x jk es el punto medido en la imagen. x es el punto proyectado a partir de los parámetros intrínsecos y de distorsión de la cámara K, µ k la pose del fotograma y X j el punto a proyectar. El parámetro v jk toma posibles valores atendiendo a dos posibles casos: σ jk es el error presumible y σ T es el umbral usado por el estimador Turkey M para determinar p: Debido a que este proceso se realiza por lotes y los datos son retenidos, se permite al proceso de creación del mapa o mapping retrasar el ajuste hasta que la carga de trabajo lo permita. Así cuando la cámara está explorando y nuevos fotogramas clave deben ser añadidos, se realizan pequeños ajustes en un limitado número de fotogramas clave. pág. 8290 Experiencia final mostrada al usuario D Tracking basado en modelos CAD: El seguimiento a través de modelos CAD es una interesante solución para entornos poco texturizados. Se basa en la idea de crear un modelo CAD del objeto o del entorno y utilizarlo como referencia para realizar el seguimiento. La manera de emplear el modelo CAD admite muchas variantes, algunas de ellas como Metaio, utilizan este modelo unicamente para calcular una primera pose de la cámara, después se pasa al método habitual de 3D Tracking mediante análisis de características naturales de la escena, extrayendo en tiempo real características del entorno y usándolas como referencias para el Tracking. Otros, como el desarrollado por Changhyun Choi and Henrik I. Christensen [10] ofrecen un enfoque inverso. Primeramente se extraen las características del entorno y se emplean para calcular una primera pose. La primera pose ayuda seguidamente a realizar un seguimiento basado en el análisis de bordes de la imagen. pág. 8391 Otras vertientes de análisis son: Optical Flow-Based: Estudia el movimiento aparente de la proyección imagen de un punto físico del objeto en una secuencia de imágenes. Es necesario considerar la intensidad del punto como constante. RAPiD: Es muy extendido gracias a su bajo coste computacional. Se considera un conjunto de puntos de control 3D tomados en los bordes del modelo. Se determina el movimiento 3D de el objeto entre dos fotogramas consecutivos a partir del desplazamiento 2D de los puntos de control. Para cada uno de los siguientes fotogramas, se utiliza la pose calculada para estimar que puntos de control serán visibles así como su posición. Se ajustan los puntos de control a los contornos de la imagen y se estima la nueva pose. Ejemplo del uso del algoritmo RAPiD. Template- matching: Utilizado para detectar o reconstruir la posición de una imagen sometida a ciertas deformaciones. Estimación de la pose haciendo el seguimiento de planos 3D: Se buscan planos 3D conocidos, existentes en la imagen. A través de las coordenadas del plano en el espacio y de las coordendas de este proyectadas se calculan los parámetros de transformación por homografía. Se obtiene por tanto la pose de la cámara. pág. 8492 6. Programando Mundus4D 6.1 Librerías especializadas En el mercado existen múltiples soluciones tanto libres como propietarias enfocadas a la visión por ordenador y la realidad aumentada. Entre las más interesantes se destacan: OpenCV OpenCV es una biblioteca libre de visión artificial desarrollada inicialmente por Intel. Su uso está muy extendido gracias además de a su potencia, a que se distribuye bajo licencia BSD, que permite que sea usada libremente para propósitos comerciales y académicos con ciertas condiciones. Con más de 500 funciones, su programación se realiza en código C y C++ y se distribuye de forma multiplataforma para GNU/Linux, Mac OS X, Windows y se ha incluido una versión para Android en las últimas versiones. OpenSURF OpenSURF es una librería creada por Chris Evans. Proporciona una implementación libre del algoritmo SURF en diversos lenguajes como C#, Objetive C, Java, CUDA o Android. ARToolkit ARToolKit es una librería desarrollada inicialmente por Hirokazu Kato y apoyado por el laboratorio de tecnología en interface humano (HIT Lab) de la universidad de Washington, el pág. 8593 HIT Lab de la universidad de Canterbury en Nueva Zelanda y por ARToolworks Inc en Seattle. Está enfocada hacia la realidad aumentada, ofreciendo diversas funciones como métodos para calibrar la cámara, administrar OpenGL, usar de marcadores, etc. Se ha publicado un software multiplataforma para crear aplicaciones de realidad aumentada sin conocimientos de programación, ATOMIC Authoring Tool. Se autoriza su uso de forma gratuita para usos no comerciales bajo licencia GNU GPL. Las licencias comerciales son administradas por ARToolworks Inc, debiendo contactar con ellos a fin de conocer las diversas tarifas. BoofCV BoofCV es una librería de código abierto escrita en java destinada a ser una solución para aplicaciones robóticas y de visión por ordenador en tiempo real. Sin llegar a ser tan completa como puede serlo OpenCV, ofrece multitud de funcionalidades para el procesamiento de imágenes como interpolación, reducción de ruido, covolucion, detección de puntos, lineas, calibraciones, etc. Se distribuye bajo licencia Apache tanto para uso comercial como académico. Por último, reseñar que el autor ha creado una aplicación para android donde se puede comprobar el rendimiento de las distintas utilidades. D'Fusion Studio Es un software de la empresa Total Inmersion diseñado para la creación de aplicaciones de realidad aumentada con distribución no comercial en su modo gratuito. ARPA Es otro kit de desarrollo pensado para la creación de aplicaciones de realidad aumentada basadas en el tracking 2D. pág. 8694 Vuforia Vuforia provee un kit de desarrollo que facilita la creación de aplicaciones de realidad aumentada basadas en el 2DTracking. Incluye una serie de clases y métodos nativos preconstruidos que simplifican en gran medida el desarrollo. Se distribuye con soporte para ios, Android y Unity3D libre del pago de tarifas por licencias. En el momento de elegir la mejor solución a implementar en el proyecto, el sdk de Vuforia estaba escrito en C++ aunque posteriormente se lanzó una versión escrita en Java. ARLab ARLab ofrece una serie de SDK en función de las necesidades del desarrollador. Ofrece tanto tracking 2D como tracking 3D de elementos con formas básicas como esferas, cilindros o cubos. No se ofrece una versión gratuita de prueba sino que existen diferentes precios por App y SDK contratado. ARmedia Una de las opciones más interesantes sin duda es ARmedia. Ofrece tecnología de seguimiento 3D (3D Tracking). Permite el desarrollo de aplicaciones tanto para ios como para Android. Ofrecen la posibilidad de probar el SDK, pero hay que solicitar una prueba gratuita a su servicio de ventas y en cambio ofrece 3 modalidades de suscripción: Entry: 1 mes, Pro: 6 meses, Business: 12 meses. Metaio Es la empresa líder del sector, o así se anuncian. Proveen todo tipo de servicios relacionados con la realidad aumentada, 2D Tracking, 3D Tracking, Tracking basado en ficheros CAD con soporte para ios, Android y Windows. Ofrecen su SDK de forma gratuita mientras se mantenga la marca de agua en pantalla, exceptuando el tracking basado en uso de ficheros CAD. Para obtener una versión comercial de su SDK existen dos tarifas, una básica para la licencia en 2D Tracking y la licencia PRO que incluye 3D Tracking. Son licencias sin caducidad por lo que no requieren renovarlas. pág. 8795 6.1.1 Elección de la más adecuada Para construir la aplicación se valoraron las distintas ofertas existentes en el mercado. Era de sentido común optar desde un primer momento por un kit de desarrollo que simplificase en gran medida el trabajo del desarrollador. Por tanto, librerías como OpenCV o BoofCV que ofrecen funciones realmente muy potentes pero que a su vez habrían conllevado un período de desarrollo de la aplicación mucho mayor fueron desechadas. Los kit de desarrollo de realidad aumentada tienen la ventaja de administrar las distintas tareas del proceso. Administran la extracción de características o descriptores, buscan coincidencias en la base de datos, calculan la pose y renderizan el modelo 3D. Otro filtro determinante es el lenguaje de programación. Librerías como OpenCV o el SDK de Vuforia a día de la elección se encontraban unicamente escritas en C++. Android permite el uso de código C o C++ en sus aplicaciones pero añade un alto grado de complejidad al desarrollo. En el caso de querer utilizar código escrito en este lenguaje, se debe hacer uso de la herramienta Android NDK (Native Development Kit). El código nativo en C o C++ se escribirá en los archivos basados en JNI (Java Native Interface) acompañados de dos archivos Aplication.mk y Android.mk necesarios para el proceder del NDK. Por ello, aunque se hicieron varios test de 2D Tracking con el SDK de Vuforia se relegó su uso a último recurso. Finalmente la elección redujo a dos opciones, las que integran el 3D Tracking entre sus características. El SDK de ARmedia, y el de Metaio. ARmedia por su parte muestra unas características realmente interesantes también. Al igual que Metaio, ofrece herramientas para crear el TrackingMap de forma sencilla siguiendo otros procedimientos que pueden ofrecer un rendimiento superior al Toolbox de Metaio. Sin embargo, solo ofrecen una prueba del SDK previo contacto con su departamento de ventas, lo que unido a la facilidad de uso de Metaio le dejan como segunda opción. pág. 8896 Se implementó finalmente el de Metaio por su facilidad de implementación y el hecho de no tener restricciones en el número de Apps creadas. Además, las herramientas auxiliares Toolbox y Metaio Creator poseen un diseño intuitivo. 6.2 MetaioSDK Metaio provee un kit de desarrollo tanto para el sistema operativo Android como para IOS y Windows. Una de las principales ventajas es que facilita una serie de clases preconstruidas que nos simplifican en gran medida el desarrollo. La evidencia de esto se demuestra al renderizar un modelo 3D o al acceder a las funciones de la cámara del dispositivo. Por otra parte ofrece la posibilidad de utilizar nuestro propio código maximizando la capacidad de personalización. El SDK se oferta en tres modalidades: Una licencia básica que permite la publicación de aplicaciones basadas en el 2D Tracking. Una licencia Pro que incluye entre otros aspectos, la publicación de aplicaciones basadas en el 2D Tracking, su tecnología patentada de 3D Tracking tanto Markerless como basadas en datos CAD. También incluye una versión 100 % operativa de la herramienta Metaio Creator. La licencia gratuita o demo utilizada en este proyecto resulta a coste 0 asumiendo ciertas restricciones que se explicarán a continuación. Versión gratuita Dado el precio de las licencias (2950 para la versión básica y 4950 para la PRO), el presupuesto inexistente para este proyecto y sus fines académicos no se planteó la idea de desembolsar cantidad alguna en la adquisición de una licencia. Bien es cierto que Metaio ofrece un 50% de descuento en sus producto para estudiantes pero aún con ello resulta inviable para el proyecto. En su lugar se optó por utilizar la versión gratuita, la cual contiene ciertas limitaciones de uso. Esta versión no apta para uso comercial, permite utilizar la mayoría de funcionalidades del SDK aceptando la inclusión de la llamada marca de agua de Metaio durante el tiempo de ejecución del Tracking. pág. 8997 Metaio Creator Metaio Creator es una herramienta indispensable cuya función principal en este proyecto fue situar de una forma gráfica el modelo 3D sobre la nube de puntos y posteriormente exportar los llamados Tracking configuration files que contienen todos los datos indispensables para realizar el Tracking. Las limitaciones de la versión gratuita vienen dadas por la imposibilidad de importar más de dos trackables, en nuestro caso los ficheros *.creator3dmap. También se ve mermada la opción de añadir modelos 3D a la escena permitiendo unicamente visualizar 2 modelos 3D simultáneamente. Este último hecho no influyó en el resultado final, pues el SDK permite añadir varios elementos a la escena. Otra característica reservada a la versión de pago, quizá la más interesante, es el uso de trackables basados en datos CAD. 6.3 Implementando el SDK en Mundus4D Metaio exige unos mínimos requisitos del dispositivo Android para su implementación: 1) Una versión de Android igual o superior Android 2.3 (Gingerbread). 2) Procesador basado en la arquitectura ARMv7. 3) Soporte para OpenGLES 2.0. El SDK se entrega como una librería que deberemos añadir a nuestro proyecto. En la siguiente imagen se muestra la inclusión de la librería metaiosdk así como la inclusión de dos librerías más necesarias para subir nuestra aplicación a Google Play. pág. 9098 Librerías añadidas al proyecto. Es indispensable registrar la App en la página de Metaio. Introduciendo el package de la aplicación el sistema nos otorga una firma que debemos introducir en la aplicación dentro de un fichero signature.xml dentro de la carpeta values. Estructura del fichero signature.xml: <?xml version="1.0" encoding="utf-8"?> <resources> <string name="metaiosdksignature">firma de Metaio</string> </resources> 6.4 Estructura básica de la aplicación La App se divide en 3 activities primarias (Launcher, MenuPrincipal y RealAumentada) y 5 secundarias (Historia_activity, Fuciones_activity, InfoActivity, Sabias y Plano_Mundus_Activity). Por activities primarias se entienden aquellas que son indispensables para el buen funcionamiento de la App en su misión de recrear el yacimiento. Por su parte, las activities secundarias son las creadas para complementar la App con información o funciones adicionales. pág. 9199 6.4.1 Activities secundarias En Mundus4D las activities secundarias son utilizadas para ofrecer información adicional acerca del edificio recreado. El apartado de información queda conformado por un Tab Host, proporcionando una interfaz de usuario distribuida en pestañas. Éste se crea extendiendo una activity específica llamada TabActivity. Google recomienda sustituir el uso de los TabHost por los llamados Fragments que ofrecen una mayor libertad en la distribución del contenido en pantalla. Sin embargo, se eligió utilizar TabHost por su sencillez a la hora de programar y dado el objetivo final de la App, cumplía sobradamente con los requisitos. En Mundus4D el TabHost queda implementado en la clase InfoActivity. Dentro se crearon una serie de pestañas dependiendo de la información obtenida de cada espacio constructivo. Dentro de cada pestaña se implementaron las clases Historia_activity, Funciones_activity y Sabias. Como resultado se obtiene que pueden aparecer 3 pestañas Historia, Funciones y Curiosidades. TabHost creado con la información de cada espacio constructivo. El texto se introdujo conforme al formato Html. Esto es debido a que fue la única forma que encontré para cargar el texto desde el fichero strings.xml con la posibilidad de poder introducir texto en cursiva y negrita. El comando adecuado para leer en este formato y mostrarlo en pantalla a través de un TextView es: pág. 92100 //Objeto que hace referencia al TextView "Funciones" incluido en el layout. TextView infofunciones = (TextView)findViewById(R.id.Funciones); //El método Html.fromHtml se encarga de leer el texto en formato html. //El método settext carga el texto dado. infofunciones.settext(html.fromhtml(getstring(r.string.curia_f))); Por último la activity Plano_Mundus_Activity consta solo de una imagen a modo de plano con los puntos adecuados donde utilizar la aplicación Activities primarias Launcher.java El archivo Launcher.java es el fichero que contiene a a clase Launcher, que extiende la activity inicial. En otras palabras, es la primera actividad que se desarrolla al iniciar la aplicación. Su objetivo principal es comprobar que existen todos los recursos necesarios en la aplicación e instalarlos si fuese necesario. El funcionamiento de la activity está programado para que se ejecute de una forma secuencial y automática. El usuario no podrá realizar ninguna acción que no sea la de salir de ella dentro de ella. Se explicará más adelante en la sección donde se describe el proceso seguido para subir la App a Google Play y los problemas encontrados. pág. 93101 MenuPrincipal.java El archivo Launcher.java es el fichero que contiene la clase MenuPrincipal, que extiende la activity encargada de gestionar el menú principal así como los menús secundarios donde se puede encontrar información acerca de la aplicación, Complutum e instrucciones de uso. La disposición en pantalla viene determinada por el layout o capa activity_menu_principal.- xml: Se dispone un LinearLayout con orientación horizontal, dividido en un ScrollView y otro LinearLayout. ScrollView - Permite mostrar datos que por su tamaño o longitud es necesario que el usuario pueda desplazarse a lo largo de ellos. Como por ejemplo, un articulo de periódico de cierta longitud. LinearLayout - Es un layout o capa que muestra los elementos contenidos en él, en forma de columna o fila. En este caso el LinearLayout contenido dentro del LinearLayout principal contiene a los TextView clickables que harán la función de botones dentro del menú principal. Esquema del menú principal. Cuando se crea la actividad se crean los objetos mediante programación para hacer que los TextView reaccionen ante la pulsación del usuario. Se define también el objeto ScrollView para poder variar su contenido de forma dinámica dentro del método loadcontenidoscroll- View(). pág. 94102 RealAumentada.java La clase RealAumentada es la encargada de producir todo el proceso de Tracking y renderizado del modelo 3D. Se extiende la clase especial ARViewActivity incluida en el SDK de Metaio que simplifica enormemente la programación. Ella se encarga de inciar la actividad, activar la cámara, mantener la pantalla activa, tomar los fotogramas a analizar y administrar los surface- View necesarios para el renderizado. También se diseña el sistema de orientación implementando SensorEventListener, explicado su funcionamiento más adelante. Por último se gestiona el desempeño del menú desplegable, el cúal ofrece 3 opciones básicas: Seleccionar Edificio Se despliega un cuadro de diálogo con los diferentes espacios recreados, a su vez cada espacio puede tener diversas opciones de visualización, como es el período histórico o la posibilidad de cargar unicamente el interior o el exterior del mismo. ID Edificio S.I S.III Exterior Interior F. Monumental Criptopórtico Curia Decumano Basílica Pórtico Sur Termas Sur pág. 95103 Mercado Ninfeo Info Se despliega un TabHost con información acerca del edificio activo. Se pueden desplegar hasta tres pestañas: Historia, funciones y curiosidades. Reposicionar Al pulsar se realiza una llamada al método definido para cada edificio dentro de la clase Recorrido_Tracking pasando como argumento el ID del edificio y el azimut filtrado. Su objetivo es seleccionar nuevos parámetros y cambiar el TrackingMap cuando el posicionamiento no es correcto Recorrido_Tracking.java El archivo Recorrido_Tracking contiene la clase del mismo nombre. Se trata de una clase creada a modo de base de datos. Android utiliza SQLite como sistema de gestión de base de datos. Sin embargo, se prefirió no utilizar este sistema por cuestiones de simplicidad y la poca familiarización del autor con las bases de datos. La clase se divide en una serie métodos básicos: Maps_FM(), Maps_CR(), Maps_CU(), Maps_DEC(), Maps_BAS(), Maps_PS(), Maps_TS(), Maps_MER(), Maps_NI() que funcionan a modo de bases de datos. Por otro lado están los métodos Seleccion_Map() y DistanciaMinima(). El primero es llamado al filtrar los datos en alguno de los métodos anteriores y el segundo es llamado por Seleccion_Map en caso de que sea necesario. pág. 96104 Los TrackingMaps están introducidos ordenadamente de forma que se pueda recorrer el yacimiento en un sentido de manera continua sin que el usuario experimente un gran retardo en la búsqueda del TrackingMap válido. Por otra parte se llamaría al objeto de está clase a través del método ontrackingevent(), empleado para realizar las acciones necesarias en función de la calidad del tracking. Consideraciones La clase Recorrido_Tracking está diseñada en base a la idea original de la App. Sin embargo, dado el mal desempeño mostrado en el terreno se decidió prescindir de ciertas funcionalidades, simplificando su funcionamiento. Hecho que provocó que algunos aspectos del código cayeran en desuso. Los motivos serán explicados más adelante, sin embargo se ha querido conservarlas como plantilla, para demostrar el trabajo realizado y porque era más rápido no usarlo que reescribir el código borrando las partes no utilizadas. pág. 97105 6.5 Uso de los sensores como método de orientación Los dispositivos móviles actuales disponen de diferentes tipos de sensores para su correcto posicionamiento y orientación en el espacio. De dicha forma el dispositivo ofrece la posibilidad de estar constantemente geoposicionados. Con la evolución de los dispositivos estos sensores pueden verse modificados pero existen 3 básicos que suelen ser incluidos en todos ellos: los acelerómetros, el sensor de campo magnético y el receptor GPS. Para este proyecto se prescindirá del uso del receptor GPS por su alto consumo de recursos y baja precisión (unos 10m), limitándonos a tener una orientación aproximada a partir de los acelererómetros y el sensor de campo magnético. Un Acelerómetro se basa en la disposición de una masa unida a un muelle en reposo y contenida dentro de un tubo. En el caso de los dispositivos móviles su diseño es bastante más sofisticado. El acelerométro en cuestión mide las fuerzas de aceleración y permite conocer la inclinación del dispositivo con respecto a la dirección de la vertical. Sin embargo, si lo giramos a velocidad constante con respecto al eje vertical no obtendremos cambio en la lectura alguna. Es aquí donde interviene el sensor de campo magnético que busca suprimir esta laguna. El sensor de campo magnético permite conocer la intensidad y dirección de un campo magnético. El SDK de Android proporciona una clase con métodos preconstruidos con el fin de facilitarnos el acceso a los datos enviados por el sensor. Esta clase recibe el nombre de SensorEventListener que deberemos implementar al definir la clase. public class MainActivity implements SensorEventListener{} Al hacerlo se genera de forma automática un par de métodos que son: onaccuracychanged(): En el especificamos que hacer cuando varía la precisión, por ejemplo, que avise al usuario cuando ésta sea muy baja. pág. 98106 OnSensorChanged() : Es sin duda la más importante ya que define que hacer cuando el sensor registra un cambio en el valor registrado. Además podremos interferir en su funcionamiento a través de los métodos onresume(), onpause() y ondestroy(). Se calcula a partir de los valores de los acelerometros y el campo magnético la matriz de rotación haciendo uso del método getrotationmatrix(), pasando como parámetros la matriz de rotación destino (MatrizRotacion), matriz de inclinación destino (null) porque no queremos crearla, y las matrices obtenidas anteriormente con los valores de los sensores. boolean Resuelto = SensorManager.getRotationMatrix(MatrizRotacion, null, ValAcelerometro, ValMagnetico ); Características de la matriz de Rotación: El eje Y se encuentra con dirección al polo norte magnético y es tangencial a la superficie en el punto donde se encuentra el dispositivo. El eje Z toma la dirección de la vertical y sentido contrario al de la gravedad. El eje X es el producto de Y*Z y es tangencial a la superficie en el punto donde se encuentra el dispositivo y con sentido positivo hacia el Este. Orientación de los ejes en la matriz de rotación. Podemos construir esta matriz con dimensión 4x4 o 3x3. Para el proyecto usaremos la matriz de 4x4 que además es la aceptada por OpenGL ES para renderizar objetos. pág. 99107 El proceso retorna un valor de verdadero o falso reflejado en la variable Resuelto. Su significado se reduce a transmitir que se ha obtenido la matriz de rotación de manera satisfactoria (true) o (false) si el proceso falló. Si el proceso terminó correctamente, pasamos a calcular la matriz de orientación con los parámetros de la matriz de origen (MatrizRotacion) y matriz destino (MatrizOrientacion). if (Resuelto){SensorManager.getOrientation(MatrizRotacion, MatrizOrientacion);} Características de la matriz de Orientación: El sistema de referencia de coordenadas utilizado es diferente al definido por la matriz de rotación: El eje Y es tangencial a la superficie donde se encuentra el dispositivo y con dirección al polo norte magnético. El eje Z se encuentra en la dirección de la vértical y por tanto perpendicular a la superficie donde se encuentra el dispositivo. El eje X es definido como un vector producto de Y*Z, tangente al punto de la superficie donde se encuentra situado el dispositivo y con sentido positivo hacia el Oeste. Orientación de los ejes en la matriz de orientación. pág. 100108 Esta matriz es de 3 filas donde cada fila refleja: Fila[0]: Azimut de la dirección hacía el polo norte magnético alrededor del eje Z. Fila[1]: Inclinación, rotación alrededor del eje X. Fila[2]: Rotación alrededor del eje Y. Todos los valores son entregados en radianes, por lo que bastaría con multiplicar por 200/PI para obtener sus correspondientes valores en grados centesimales. Pero como explicaré a continuación existen varios inconvenientes: 1. Estos valores son para el dispositivo en posición de retrato y la aplicación se utilizará en modo paisaje. 2. Los valores que proporciona se encuentran tanto con valores positivos como negativos. 3. El sensor de campo magnético no entrega un valor de campo constante. PROBLEMA 1 El problema se ha resuelto simplemente tomando los valores de la fila [2] como los valores de inclinación. PROBLEMA 2 2.a Azimutes. Una vez obtenidos los valores en grados centesimales al ejecutar la aplicación se observó que el dispositivo produce valores que oscilan entre 0g y 200g para direcciones que en el terreno corresponderían a 100g y 300g; y -200g y 0g para valores correspondientes a 300g y 100g. Azimut entregado por el dispositivo (izq.) y azimut corregido (dcha). pág. 101109 Como se ve el resultado no es directo sino que es necesario un estudio de signos. 2.b. Inclinación El mismo problema existe al calcular el valor de inclinación del dispositivo, donde orientados con el dispositivo a cualquier azimut aleatorio, se produce el hecho de que para visuales correspondientes a la dirección del zenit el dispositivo entrega un valor de -200g cuando su correspondencia sería de 0g. Por el contrario este entrega valores de 0g para valores en la dirección y sentido de la plomada, debiendo ser su valor de 200g. PROBLEMA 3 Debido a las limitaciones notorias del sensor del campo magnético se muestra con un rendimiento bastante inestable en los dispositivos probados. Las consecuencias son una sucesión de valores que pueden llegar a diferir entre sí entorno a los 10-20g. Se entiende que el tipo de sensor montado en estos dispositivos es destinado para uso doméstico y por tanto no es necesario excesiva precisión en el mismo. Por otra parte, en este proyecto se busca su uso como fuente de apoyo aproximada para filtrar resultados de nuestra base de datos, necesitando precisiones no mayores de +-10g. Además, se busca reducir los picos que muestra en las discrepancias entre lecturas que pueden llegar a los 20g. Intentamos reducir la varianza obteniendo una serie de valores para posteriormente hallar su valor más probable. Huelga decir que se produce un error de precisión en valores cercanos a 400g. Es del hecho de hacer el promedio entre valores cercanos a 400g y otros del entorno de 5 g. Sin embargo para el propósito de la aplicación no implica efectos notables en la misma. De forma análoga se ha realizado otro promedio con las lecturas de inclinación con el fin de que el usuario disfrute de una experiencia más agradable. pág. 102110 6.6 Creación de los TrackingMaps Metaio desarrolló una App gratuita disponible en Google Play con la que se pueden crear los TrackingMaps llamados 3D Maps de una forma fácil e intuitiva. A priori puede parecer la panacea pero como se demostrará más tarde, su funcionamiento tiene algunas fallas y el resultado final dista bastante de ser perfecto. Menu de creación 3D Maps de Toolbox. Para crear el TrackingMap solo se debe configurar dos opciones: - Sensitivity: Establece un valor inicial para la escala del escenario. Ayuda a una óptima inicialización del Tracking. En el trabajo se seleccionó High (Building-sized) para establecer una escala adecuada al tamaño de los edificios. - Gravity Aligned: Es una opción a activar si la escena contiene muchas características o descriptores situados en un plano vertical. pág. 103111 Configuradas estas dos opciones se pasa a crear el TrackingMap. La App nos pide que realicemos un primer movimiento paralelo a la escena evitando girar el dispositivo, en lo que llaman Aprender el entorno. Si el proceso fue correcto aparecerá una nube de puntos rojos correspondientes a las características encontradas. Ahora sí podremos girar el dispositivo y movernos alrededor de la escena para añadir más características. Como resultado final se entregan dos ficheros: un.3dmap y un archivo.creator3dmap. Otra opción avanzada que ofrece es la llamada Alinear 3D Map en Editar 3DMap. Consiste en repetir el proceso anterior pero añadiendo un marcador que fije una escala y la alineación. Todas las coordenadas de las características quedarán referidas al centro del marcador. Esto sería de gran ayuda para simplificar el posicionamiento de los distintos edificios, sin embargo fue aquí donde empezaron los problemas. Se construyó para la ocasión un marcador a una escala acorde con las dimensiones del escenario. Se trata de un marcador de 85x85cm sobre un tablero de contrachapado de 90x90cm. Marcador usado en el proyecto. pág. 104112 6.6.1 Deficencias encontradas Deficiencia encontrada n1 Desde un primer momento se encontró que en el dispositivo de prueba, con Android 4.4, ocurría un error al crear el archivo alineado.creator3dmap usando el marcador. Los puntos de la nube de puntos no se correspondían con sus homólogos en la imagen. A continuación se adjuntan dos imágenes que confirman lo dicho, el archivo.creator3dmap no alineado (arriba) y el archivo.creator3dmap alineado (abajo). Creator3dmap no alineado. Creator3dmap alineado. pág. 105113 Se puede apreciar en esta prueba hecha en condiciones ideales como son un objeto bien texturizado sobre un fondo también muy texturizado y condiciones lumínicas invariantes, que en el archivo no alineado la nube de puntos se mantiene dispersa sobre toda la imagen manteniendo la correspondencia entre punto y su pixel en el fotograma mientras que en el archivo alineado está correspondencia se pierde totalmente. Semejante error conlleva que al situar el modelo 3D sobre la nube de puntos utilizando la imagen como referencia no se produzca el deseado efecto de realidad aumentada al ejecutar la aplicación. El modelo se renderiza en una posición completamente errónea como demuestra la siguiente captura. Error de correspondencia de alineación. La recreación que se muestra con un tamaño mayor es una hipotética posición ideal y el modelo que aparece en pequeño en la parte baja de la imagen es el modelo renderizado al ejecutar la aplicación. pág. 106114 Es un problema que podría haber sido subsanado calculando los parámetros correspondientes a la transformación tridimensional de semejanza entre ambos sistemas. Por desgracia Metaio no permite al usuario conocer las coordenadas de la nube de puntos. En las etapas finales del proyecto, Metaio lanzó una nueva versión de la aplicación Toolbox subsanando este bug. Pero en cambio apareció otro. En frecuentes ocasiones, cuando se alineaba el 3dmap, el fichero aparecía sin nube de puntos. Estaba vacío, conservando unicamente la imagen. Ambos bugs provocaron no poder usar los TrackingMaps alineados traduciéndose en un aumento de la carga de trabajo ya que fue necesario situar cada modelo a ojo perdiendo el rigor científico y la precisión del proyecto. Deficiencia encontrada n2 El fichero.creator3dmap puede contener varios fotogramas que sirven de guías para situar el modelo sobre la nube de puntos. Por otra parte, de acuerdo a la documentación proporcionada por Metaio, la forma correcta de situar el modelo 3D es ayudándose de los fotogramas para dar la perspectiva y escala correcta. Primeramente se posicionará el modelo atendiendo al primer fotograma. Conseguido el efecto se pasa a ajustar su posición en el segundo fotograma. Se vuelve a ajustar de acuerdo al primer fotograma y se repite el proceso con todos los demás fotogramas hasta que se obtenga una posición final válida para todos los fotogramas. En la práctica se demostró que esto no se cumple, ya que la correspondencia de los puntos tomados desde un fotograma no se corresponde con su posición teórica en el siguiente. pág. 107115 Fotograma 1 Fotograma 2 Los puntos verdes se observan desplazados en el segundo fotograma con respecto al punto que según el primer fotograma deberían representar en el escenario. Semejante error conlleva que sea imposible encontrar una posición única para el modelo que satisfaga cualquier posición en el escenario. pág. 108116 Deficiencia encontrada n3 Otro problema encontrado es el debido al error al determinar la profundidad. El sistema entrega resultados erróneos en las coordenadas del punto de forma proporcional a la lejanía del objeto. Se vio que cuanto más alejado estuviese el punto, su error en la determinación de la profundidad era mayor. En casos extremos, como en el del ejemplo que se adjunta a continuación, estos puntos adolecen de tal error que su distancia al plano imagen es menor que cualquier otro punto de la escena cuando realmente son los puntos más alejados. Error cometido al calcular la profundidad de la escena. pág. 109117 En descarga para Metaio hay que decir que una de las posibles causas de estos errores es debido a la pobre resolución utilizada en cada fotograma por la baja capacidad de procesamiento de los dispositivos móviles actuales. En concreto la App utiliza una resolución de 320x240 pixeles para cada fotograma clave. Un valor realmente bajo si se quieren obtener modelos precisos. A tenor de los problemas encontrados se desechó la idea de intentar crear un TrackingMap único para cada edificio. En su lugar se apostó por intentar implementar un sistema que basándose en pequeños TrackingMaps con un único fotograma asociado, siguiendo la trayectoria del usuario a lo largo de su visita al yacimiento y cambiando entre los distintos Tracking- Maps cuando la calidad del tracking no fuese la deseada. El sistema iría recorriendo las matrices de parámetros incluidas en la clase Recorrido_Tracking. Cuando la calidad del tracking descendiese de un cierto valor, el sistema cambiaría al siguiente TrackingMap o anterior en función del sentido de la marcha. El sistema determinaría que se ha cambiado el sentido de la marcha cuando tras probar los dos TrackingMaps siguientes al último válido no se encontrasen coincidencias o una calidad de tracking apta. En este caso se tomaría el último TrackingMap con resultado positivo como referencia y se tomaría en siguiente en sentido contrario. Además también se estudiaría cambiar el TrackingMap cuando el usuario girase el dispositivo ciertos grados de forma que el azimut filtrado y el último válido discrepasen. La calidad del tracking como se ha explicado anteriormente es administrada desde el método ontrackingevent() de la clase AdminMetaioSDK. pág. 110118 Todo el sistema fue desechado tras mostrar un mal desempeño en las pruebas realizadas fruto de que el sistema seguía entregando valores de la calidad del tracking muy elevados > 0,8 sobre 1, aún cuando el modelo se encontraba completamente fuera de su localización ideal. Por último se intentó contactar con Metaio con el fin de resolver la incidencia sin obtener respuesta alguna. 6.7 La importancia de Metaio Creator Como se explicó anteriormente Metaio Creator es una herramienta indispensable en la generación de los TrackingMaps usados en la App. En su versión completa ofrece importantes funcionalidades, muchas de vital importancia para personas no familiarizadas con la programación. Se basa en un diseño muy intuitivo que guía al usuario a través de los distintos pasos. En este proyecto solo fue necesario realizar los mismos 4 pasos de forma repetitiva. 1. Importar el Trackable. Por trackable se refiere al archivo.creator3dmap creado con Toolbox. 2. Importar el modelo3d generado del edificio. 3. Posicionar el modelo sobre la nube de puntos. 4. Exportar el fichero TrackingMap en.zip. En Metaio lo denominan Tracking Configuration File. Hay que decir que en un hipotético fichero.creator3dmap alineado no es necesario importar el modelo3d, ya que sabiendo la posición del marcador en el momento de crear fichero se conocen los parámetros de traslación, rotación y escala a aplicar. Estos parámetros no son exportados con el fichero.zip sino que debemos introducirlos en la App de forma manual. pág. 111119 Posicionamiento del modelo sobre el terreno. Cada fichero.zip exportado contiene dos tipos de ficheros. Los ficheros.f3b que contiene el conjunto de características o descriptores contenidos en el TrackingMap o Trackable. El otro es un fichero Tracking.xml con ciertos aspectos básicos de configuración. Ejemplo de fichero Tracking.xml: <?xml version="1.0" encoding="utf-8"?> <TrackingData> <Sensors> - <Sensor subtype="ml3d" type="featurebasedsensorsource"> <SensorID>FeatureBasedSensorSource_0</SensorID> - <Parameters> <featureorientationassignment>gravity</featureorientationassignment> <MaxObjectsToDetectPerFrame>5</MaxObjectsToDetectPerFrame> <MaxObjectsToTrackInParallel>1</MaxObjectsToTrackInParallel> </Parameters> - <SensorCOS> <SensorCosID>c bf7cfb6578c4758fcbd8385</SensorCosID> - <parameters> <mintriangulationangle>6</mintriangulationangle> <map>c bf7cfb6578c4758fcbd8385.f3b</map> <MinMatches>15</MinMatches> <DesiredMatchesRatioExtensible>0.35</DesiredMatchesRatioExtensible> <NumExtensibleFeatures>250</NumExtensibleFeatures> </parameters> </SensorCOS> pág. 112120 </Sensor> </Sensors> - <Connections> - <COS> <Name>foro_1</Name> - <Fuser type="smoothingfuser"> - <Parameters> <AlphaRotation>0.5</AlphaRotation> <AlphaTranslation>0.8</AlphaTranslation> <GammaRotation>0.5</GammaRotation> <GammaTranslation>0.8</GammaTranslation> <KeepPoseForNumberOfFrames>0</KeepPoseForNumberOfFrames> </Parameters> </Fuser> - <SensorSource trigger="1"> <SensorID>FeatureBasedSensorSource_0</SensorID> <SensorCosID>c bf7cfb6578c4758fcbd8385</SensorCosID> - <HandEyeCalibration> - <TranslationOffset> <x>0</x> <y>0</y> <z>0</z> </TranslationOffset> - <RotationOffset> <x>0</x> <y>0</y> <z>0</z> <w>1</w> </RotationOffset> </HandEyeCalibration> - <COSOffset> - <TranslationOffset> <x>0</x> <y>0</y> <z>0</z> </TranslationOffset> - <RotationOffset> <x>0</x> <y>0</y> <z>0</z> <w>1</w> </RotationOffset> </COSOffset> </SensorSource> </COS> </Connections> </TrackingData> pág. 113121 El archivo se estructura en 2 apartados principales, <Sensors> y <Connections>. <Sensors> - Determina los parámetros generales con los que configurar el Tracker: Los parámetros configurables en este apartado son: <MaxObjectsToDetectPerFrame> Es el número máximo de trackables que pueden ser detectado por fotograma. Por defecto se establece en 5. <MaxObjectsToTrackInParallel> Es el número de trackables que pueden ser tracked seguidos por fotograma. No se recomienda alterar este valor que viene establecido en 1 por razones de rendimiento. <SensorCOS> En este subapartado se hace referencia a los archivos f3b incluidos en el fichero.zip. En el ejemplo mostrado solo se incluye el fichero c bf7cfb6578c4758fcbd8385.f3b. Cada fichero.f3b tiene sus propios parámetros definidos: <MinMatches> Número mínimo de coincidencias que deben encontrarse para considerar que se puede efectuar una tracking aceptable. Tampoco se recomienda modificar este parámetro, establecido en 15. <DesiredMatchesRatioExtensible> Umbral del ratio entre las características encontradas y las contenidas en el archivo f3b. <NumExtensibleFeatures> Número de características extraídas en el momento actual. Estos dos últimos valores son utilizados para el llamado Extensible Tracking, es decir, en el ejemplo cuando en el proceso de tracking se encuentran una cantidad de correspondencias que no cumplen el ratio de 0,35 con respecto al número total de características incluidas en el fichero, se pasa a tomar hasta 250 características extraídas de la escena y se usan estas para realizar el tracking. pág. 114122 <Connections> - Incluye la relación de los distintos ficheros de características incluidos: <COS> Hace referencia a cada uno de los sistemas de coordenadas de cada fichero de características. Existe uno para cada fichero de características añadido. Dentro de este se destacan los siguientes parámetros: <Name>foro_1</Name> Nombre de referencia para el fichero de características. <Fuser type="smoothingfuser"> Modo de fusión. SmoothingFuser es un tipo de fusión que permite separar el suavizado de traslación y rotación. Normalmente se busca un suavizado mayor de la rotación que de la traslación. El método de fusión tiene los siguientes parámetros. <AlphaRotation> Valor del suavizado para la rotación. <AlphaTranslation> Valor del suavizado para la traslación. <GammaRotation> Factor de velocidad de suavizado en la rotación. <GammaTranslation> Factor de velocidad de suavizado en la traslación. <KeepPoseForNumberOfFrames> Número de fotogramas durante los cuales el Tracker seguirá prediciendo la pose cuando el tracking ha fallado. Dentro de <SensorSource> destacar el apartado <HandEyeCalibration>. Este apartado permite especificar la pose relativa entre dos sensores. Para la App Mundus4D no es necesario configurarlo dado que se usa una única cámara como sensor. Sus principales parámetros son: <TranslationOffset> Vector de la distancia entre los sensores. <RotationOffset> Rotación relativa entre los sensores, o entre el sensor y el origen arbitrario. Por último dentro del apartado <COS> se integra el apartado <COSOffset> que define la traslación y rotación del sistema de coordenadas en <TranslationOffset> y <RotationOffset>. Los ficheros.zip resultantes serán leídos por la aplicación a través del método CargaTrackingMap() de la clase RealAumentada. pág. 115123 6.8 Carga de modelos 3D en MetaioSDK Actualmente MetaioSDK soporta 3 formatos de fichero para modelos 3D. El formato OBJ para modelos estáticos y MD2 y FBX para modelos animados. Para el proyecto se exportó los modelos en formato OBJ ya que fue el único formato del que se encontró un plugin exportador gratuito para Sketchup que mostrase unos resultados óptimos. El formato OBJ soporta múltiples objetos con diferentes texturas y materiales. Los objetos también pueden tener diferentes materiales asignados a sus polígonos. Adicionalmente se redujo la densidad de pixeles en las texturas para obtener un mejor rendimiento pasando de tener 96 pixeles/pulgada a 30 pixeles/pulgada. Por último se ejecutó la herramienta FBXMeshConverter que procesa el fichero OBJ y devuelve un fichero.zip que contiene las texturas originales y un nuevo modelo generado con extensión.mfbx. Reseñar que el uso de este nuevo formato provoca en muchos casos que las texturas se rendericen con un aspecto mucho más oscuro al original. Esto puede resultar bastante molesto si se ha hecho un laborioso trabajo anteriormente con su diseño. Dado que no es mi caso, se decidió implementar este formato por lo liviano del fichero.mfbx llegando a obtener un peso cercano a la mitad del original. El SDK permite cargar tanto ficheros OBJ como ficheros ZIP, por lo que no es necesario su extracción en la aplicación para ser leídos. Estos son creados con el método metaiosdk.creategeometry(). A continuación se muestra el método CargaContenido() escrito específicamente para cambiar el Modelo3D a voluntad del usuario. pág. 116124 6.9 Publicación de Mundus4D Complutum en Google Play Publicar en Google Play conlleva algunos actos preparatorios previos. Por un lado, es necesario registrarse como desarrollador en la consola de desarrolladores. Google cobra una tasa de 25$ por esta acción. Por otra parte se debe preparar la enmaquetación de la App, valorando las distintas resoluciones y tamaños de pantalla. Es importante intentar probar la aplicación en la mayor cantidad de dispositivos posibles, dado que en el afán de Google por acaparar cuota de mercado se incluye una ingente cantidad de dispositivos que el desarrollador debe tener en cuenta a la hora de diseñar la App. Paradójicamente éste es el punto fuerte y débil de Android. Positivamente permite al desarrollador tener una gran difusión de su aplicación en millones de terminales, pero negativamente requiere mucho más esfuerzo en su desarrollo. Ante semejante problema Google recomienda desarrollar varias versiones de la App para las distintas gamas de dispositivos. Paradojas aparte, al autor de este proyecto se le hizo imposible probar la App en todos los dispositivos deseables. De tal forma que su funcionamiento en la mayoría de dispositivos del mercado se convierte en una verdadera incógnita. No obstante, se han encontrado dos errores a subsanar en próximas versiones de Mundus4D Complutum: 1. La disposición de los menús en tablets no es la adecuada. Ocurriendo errores de proporciones. 2. En algunos dispositivos se ha comprobado que al pulsar en la pantalla para mostrar el menú no se produce respuesta alguna. No solventar estos errores puede llevar a una mala valoración de la App por parte de los usuarios y con ello perder clientes potenciales. Por tanto es muy importante para el desarrollador no publicar la aplicación en etapas de madurez demasiado tempranas. También es muy importante la presentación de la App en Google Play. Por ello se recomienda subir varías capturas de pantalla, crear un llamativo icono, escribir una buena descripción e incluir un video promocional previamente subido a Youtube. pág. 117125 Ficha de la App en Google Play. Otro punto interesante son las traducciones. Google da la oportunidad de escribir la descripción de la App en varios idiomas, e incluso si no sabemos idiomas contratar una traducción hecha por profesionales Creación del archivo de expansión e implementación del gestor de descargas Google impone un limite de tamaño máximo de 50mb para el archivo APK que contiene a la aplicación. El motivo principal es minimizar el riesgo de que el usuario incurra en una descarga corrupta o incompleta. Para las aplicaciones que superen este limite se ofrece el uso de los llamados archivos de expansión. Son archivos con extensión.obb de los que Google permite añadir dos ficheros de hasta 2GB cada uno y se dividirán en dos clases: 1. El archivo de expansión principal (main) que incluirá los archivos necesarios para ejecutar la aplicación. 2. El archivo de expansión secundario (patch) que contendrá los archivos no imprescindibles para ejecutar la aplicación. Es válido por ejemplo como uso para incluir imágenes optimizadas para distintos tipos de pantallas. Su uso es opcional y se recomienda utilizarlo como pequeñas actualizaciones para la App. pág. 118126 Google proporciona una herramienta en su SDK para crear específicamente archivos de expansión. Se trata de la herramienta JOBB. Es una herramienta basada en lineas de comandos que permite crear ficheros.obb encriptados a través del uso de constraseñas para posteriormente ser montados de forma virtual en la App con el fin de preservar los derechos de propiedad intelectual. Mundus4D Complutum tiene un tamaño total de 59mb, superando el limite máximo impuesto por Google, se hace necesario entonces el uso de un archivo de expansión. Se intentó la implementación de ficheros.obb creados por JOBB con decepcionante resultado por dos motivos principales: 1. Existe un bug introducido en las últimas versiones de Android por el cual el archivo obb no puede ser montado virtualmente. Este error ha sido subsanado en las últimas revisiones. 2. MetaioSDK exige que los archivos se encuentren de forma física descomprimidos en el dispositivo. Se hace inviable por tanto esta opción para la versión final de la aplicación. En su lugar se optó por crear un archivo.zip con todos los recursos necesarios que sería renombrado con extensión.obb. Para simplificarlo se tomó la carpeta assets y se creó un.zip sin compresión ni uso de contraseñas. Además es necesario escribir un método que se encargue de descomprimir el archivo.zip y guarde los resultados en la carpeta elegida. En Mundus4D Complutum se encarga de ello el método descomprimir_zip(). El método crea el directorio de la carpeta destino, posteriormente se crea un objeto del tipo ZipInputStream del fichero.obb existente en la ruta marcada y se recorre el objeto tomando cada entrada. De estas entradas que hacen referencia a cada archivo contenido en el.obb debe comprobarse su existencia en el dispositivo para no volver a sobrescribir el fichero, con la perdida de rendimiento que ello supone. Si no existen se descomprimen de igual forma que se crea el directorio si no existiese. pág. 119127 El formato del nombre de este fichero debe ser: main patch.version_de_la_app.package_de_la_app.obb Para la aplicación Mundus4D el nombre del archivo quedó conformado de la siguiente forma: main.1.pfc.mundus4d.complutum.obb De acuerdo con la documentación de Google se deben implementar dos librerías encargadas de administrar la descarga y el sistema de licencias con el fin de verificar la aplicación y su archivo de expansión. También se entrega un proyecto de ejemplo donde se implementan estos aspectos. Por mi parte se intentó seguir este ejemplo modificando los mínimos aspectos posibles dada la poca mi poca experiencia empleando este sistema de descarga y el hecho de que Google no permite testear la descarga hasta que la App haya sido publicada. El proceso se resume en el siguiente esquema: pág. 120128 Primeramente se comprueba que existe el archivo de expansión en el dispositivo, si existe se comprueba si coincide en versión, extensión y tipo con el requerido por la aplicación. En caso afirmativo se pasa a descomprimir el archivo y lanzar el menú principal. Tanto en el caso de que no exista este archivo como que sus parámetros no coincidan con los requeridos se inicia el asistente de descarga. Se implementó en la activity launcher el interface IDownloaderClient encargado de simplificar y administrar el sistema de descarga. Cuando se crea la activity comprobamos si existe el archivo.obb e iniciamos el gestor de descarga si fuese necesario: El método expansionfilesdelivered() se encarga de comprobar los datos del fichero obb como método de comprobación para determinar si es necesaria la descarga. Reseñar tres métodos autogenerados al implementar IDownloaderClient: onserviceconnected() - Se recibe una llamada a este método tras instanciar Istub en la activity. ondownloadstatechanged() Permite manipular las acciones a realizar en cada estado de la descarga. ondownloadprogress() - En este método se manipula el progreso de la descarga, de tal forma que se puede crear una barra de progreso, un texto con el porcentaje de descarga completado, etc... Adicionalmente se creó la clase auxiliar Asist_Descarga que extiende la clase Downloader- Service encargada de descargar el archivo.obb desde Google Play y la clase Monitorizar_Descarga que extiende BroadcastReceiver() y trata de monitorizar el estado de la descarga, así como reiniciarla si fuese necesario. Es necesario decir que la experiencia obtenida tras la publicación hace entender que el procedimiento empleado por Google para la descarga de la App difiere en ciertos aspectos del procedimiento descrito en la documentación proporcionada. Google explica el proceso estipulando que en un primer momento solo se descarga el archivo APK que contiene a la aplicación y una vez instalada sería en la primera ejecución cuando se empezase la descarga del archivo de expansión. En cambio, la experiencia ha demostrado pág. 121129 posteriormente que al descargar Mundus4D Complutum desde Google Play, se descarga tanto el archivo APK como el de expansión OBB de manera simultanea Firma de Mundus4D Complutum Las aplicaciones de Android deben ser firmadas con un certificado digital para poder ser instaladas en los dispositivos. En la fase de desarrollo las aplicaciones son firmadas con un certificado en modo debug emitido por el IDE. En Android no existe una autoridad de certificación que avale los datos del desarrollador o empresa que publica la App. El certificado unicamente garantiza que el fichero APK no va a poder modificado por terceros y que solo el poseedor del certificado podrá volver a firmar con la misma firma. De esta forma Google obliga que cada nueva versión de la App esté firmada utilizando el mismo certificado. El certificado puede ser creado en el momento de exportar el APK de la aplicación y ha de tener una validez mínima de 25 años. Se exige una contraseña para acceder al archivo de certificados y otra más para utilizar la firma de la App además de los correspondientes datos del desarrollador, aunque como se ha dicho anteriormente no tienen mucha relevancia en el resultado final. Una vez subido el archivo APK y el fichero OBB de expansión se podrá excluir ciertos dispositivos que no cumplan los requisitos mínimos, sin embargo manejar la tremenda base de datos con todos los dispositivos existentes se antoja una misión casi imposible. pág. 122130 Página de estadísticas de la App. Como apunte final hacer notar que Google ofrece un sistema completo de estadísticas, valoraciones, reportes de problemas y servicios asociados desde los que gestionar todos los aspectos de nuestra aplicación pasando desde las instalaciones diarias por dispositivo y versión de android a la gestión de ingresos en aplicaciones de pago. pág. 123131 7.Presupuesto El presupuesto se desglosa en 4 apartados claves: - Trabajo de campo: En él se consideran las diferentes actividades del levantamiento como son el establecimiento de la red de estaciones, levantamiento RTK y levantamiento con estación total. - Trabajo de gabinete: Se incluyen el postprocesado de datos y confección de la cartografía. - Trabajo de infografía: Trabajo a realizar por el infografista 3D, especializado en infografía arquitectonica. Entre las labores incluidas se encuentra el modelado 3D apartir del análisis de la documentación existente y la interpretación del escenario, identificando los distintos elementos con sus respectivos en el terreno. - Estudio y desarrollo de la aplicación: Este apartado engloba todo el trabajo realizado concerniente al análisis de las diferentes soluciones en realidad aumentada y visión por el ordenador, así como el diseño y desarrollo de la aplicación. Este trabajo es desempeñado por el programador. Precios operadores Precios materiales IT Topografía 25 /h GPS+GPS 160 /día Auxiliar Top. 20 /h GPS+RTK 160 /día Infografista 3D 20 /h Estación Total 60 /día Programador 25 /h Vehículo 0,3 /km Los precios del instrumental están basados en los costes de alquiler establecidos por las principales compañias de alquiler de instrumental. El precio incluye los accesorios necesarios para el trabajo, trípodes, bastón, prisma, flexómetro, etc. pág. 124132 CONCEPTO: 1. Trabajo: Observación de la Red Precio Número de Precio Unitario unidades total Mano de obra: IT Topografía ,00 Materiales: GPS + GPS ,00 Vehículo 0, ,00 2. Trabajo: Levantamiento RTK Total 606,00 Precio Número de Precio Unitario unidades total Mano de obra: IT Topografia ,00 Materiales: GPS + RTK ,00 Vehículo 0, ,00 Total 1612,00 3. Trabajo: Levantamiento Taquimétrico Precio Número de Precio Unitario unidades total Mano de obra: IT Topografía ,00 Auxiliar Top ,00 Materiales: Estación Total ,00 Vehículo 0, ,00 4. Trabajo: Cálculos y cartografía Total 168,00 Precio Número de Precio Unitario unidades total Mano de obra: IT Topografía ,00 Total 1000,00 pág. 125133 5. Trabajo: Trabajo de infografía Precio Número de Precio Unitario unidades total Mano de obra: Infografista 3D ,00 6. Trabajo: Estudio y desarrollo de la Aplicación Total 31200,00 Precio Número de Precio Unitario unidades total Mano de obra: Programador ,00 Total 23400,00 IMPORTE: Total Base imponible 57986,00 IVA (21%) 12177,06 PRESUPUESTO TOTAL 70163,06 pág. 126134 8. Conclusiones y Futuros Trabajos La visión por ordenador aunque es un campo muy estudiado, necesita todavía de una labor de desarrollo con especial enfásis en su aplicación en los dispositivos móviles. La baja capacidad de procesado de éstos conlleva utilizar algoritmos de baja carga computacional pero que adolecen en su robustez. En este sentido se ha demostrado que solo el descriptor FAST es funcional a día de hoy en aplicaciones en tiempo real. En funciones de Tracking 2D se muestra un desempeño robusto en la mayoria de condiciones. Es una tecnología bastante madura y muy fiable sobretodo con el uso de marcadores. Por el contrario, la tecnología de Tracking 3D resulta mucho más compleja y no tan bien resuelta. Como se ha expuesto en puntos anteriores, tiene problemas a la hora de obtener la profundidad de la escena, se producen bastantes vibraciones o jitter en el renderizado del modelo y es bastante sensible a los cambios de iluminación. La evolución tecnológica de los dispositivos móviles hace prever un cambio de tendencia donde algoritmos más robustos que a día de hoy no pueden ser implementados por falta de rendimiento tomen relevancia sustituyendo a los actuales. La realidad aumentada es un campo de negocio en auge, con expectativas esperanzadoras para los próximos años, teniendo el mayor potencial orientado hacia el mercado de dispositivos móviles (smartphones, tablets y las novedosas gafas inteligentes). De acuerdo a un estudio de Juniper Research, la realidad aumentada será utilizada por 200 millones de usuarios en 2018, muy por encima de los 60 millones actuales. En contra, el desarrollo de aplicaciones aunque todavía con margen de negocio presenta gran pág. 127135 saturación. Un estudio desarrollado por la compañía Adeven sobre la App Store de Apple, concluía que resulta muy difícil conseguir atención si estás fuera de las listas top de aplicaciones gratuitas o de descargas y que no había forma de encontrar las aplicaciones que desde un principio no consiguiesen captar tanta atención. Adicionalmente señalaban el colapso de Apps con el mismo fin y daban un ejemplo apuntando que en la App Store existían 1899 Apps cuya única utilidad es hacer que el Iphone funcione a modo de linterna. Otro análisis llevado a cabo por la compañía Gartner estima que solo 1 de cada aplicaciones que se desarrollan actualmente será rentable y exitosa en el También se cita que el 90% de las aplicaciones de pago han sido descargadas menos de 500 veces. Con estas directrices se desprenden dos conclusiones: a) La necesidad de un gran impulso publicitario con el fin de no caer perdido en el universo de GooglePlay o App Store. b) Se ha instaurado la política de la gratuidad de las aplicaciones, hecho que obliga a explorar otros modos de financiación, normalmente basados en la publicidad agregada dentro de la App. En este ámbito existen algunas empresas especializadas en gestionar la publicidad dentro de las aplicaciones ofreciendo una cierta remuneración al creador en base a las instalaciones contabilizadas. Unos días después de la publicación de la App relatada aquí, se recibieron un par de propuestas en este sentido, ofreciendo un pago de entre 1 a 3 por instalación. A razón de una retribución de 1 por descarga, el desarrollador debe tener en cuenta el hecho de que en impuestos perderá casi la mitad de las ganancias, por lo que para un proyecto con un presupuesto semejante al presentado aquí deberá conseguir un total de más de descargas, cifra nada desdeñable. Huelga decir que con la experiencia y conocimientos adquiridos además de que el autor ha realizado funciones de diseño que un profesional podría ejecutar de una forma más efectiva y vistosa, realizar un proyecto análogo sería mucho más rápido y por tanto menos costoso. Finalmente se establece para el tipo de aplicaciones análogas a la descrita, una estrategia basada en contactos con las administraciones públicas encargadas de la gestión del punto de interés, en dos posibles escenarios. En un primer escenario, la administración sufraga todo el coste de desarrollo, aportando el desarrollador un servicio previo pago de la cantidad acordapág. 128136 da. Un segundo escenario en el que se establece un acuerdo entre la administración y el desarrollador por el cuál la administración permite acceder al punto de interés, realizar el levantamiento, modelado y desarrollo de la aplicación de forma gratuita, a cambio de que el desarrollador sea el propietario de la aplicación, permitiendole gestionar la publicidad o precio de venta. Por último, resulta interesante estudiar la capacidad de los descriptores de imagen en la automatización de los procesos fotogrametricos y gestión de puntos en trabajos de laser escaner con toma de imágenes, ya sea identificando entidades o eliminando artefactos no deseables. Estudiado el número de errores cometidos en la correspondencia de puntos parece evidente la necesidad de mejora de los algoritmos, no obstante, en un entorno tan controlado como la fotogrametría donde entre dos fotogramas contiguos suele haber pequeñas traslaciones y rotaciones, su efectividad debe verse notablemente mejorada. pág. 129137 9. Bibliografía y referencias consultadas 1. Introduction to SIFT (Scale-Invariant Feature Transform) Documentación de OpenCV. 2. Distinctive Image Features from Scale-Invariant Keypoints David G. Lowe, Computer Science Department University of British Columbia. 3. Surf: Speed up robust features Herbert Bay, Tinne Tuytelaars y Luc Van Gool. 4. Fast Corner Detection Edward Rosten. 5. A comparative Study of Three Image Matching Algorithms: Sift, Surf and Fast. Maridalia Guerrero. Universidad del Estado de Utah. 6. Estimación de la distancia recorrida por un robot móvil mediante la utilización de descriptores SURF. Manuel Peraza Dominguez. 7. Análisis de eficiencia en algoritmos de reconocimiento de imágenes digitales aplicables a dispositivos móviles bajo la plataforma Android - Miguel Ñauñay Ilbay1, Luis Tipantuña Córdova2, Geovanny Raura3, Tatiana Gualotuña. Facultad de Ingeniería en Sistemas e Informática, Escuela Politécnica del Ejército, Sangolquí, Ecuador. 8. Visión por Computador en iphone4 Pablo Roldán Ruz. 9. Monocular Model-Based 3D Tracking of Rigid Objects: A Survey. Vincent Lepetit y Pascal Fua. 10. Real-time 3D Model-based Tracking Using Edge and Keypoint Features for Robotic Manipulation Changhyun Choi and Henrik I. Christensen. 11. Elements of Geometric Computer Vision Andrea Fusiello. 12. Robust Camera Pose Estimation Using 2D Fiducials Tracking for Real-Time Augmented pág. 130138 Reality Systems - Fakhr-eddine Ababsa y Malik Mallem. 13. Técnica robusta de marca de agua basada en normalización de imágenes Manuel Cedillo Hernández. 14. Diseño, implementación y prueba de un algoritmo de estimación de los 8 parámetros de la transformación proyectiva (homografía) entre dos imágenes a partir del rastreo esquina. - Juan Francisco Chacón Chavarría. 15. Machine learning for high-speed corner detection Edward Rosten and Tom Drummond. 16. Combinación de la difusión isotrópica y anisotrópica en el procesamiento de imágenes Carlos Platero, Gabriel Asensio, Jorge Moreno. 17. RANSAC Visión artificial industrial, Universidad de Valladolid. 18. Silmutaneous Recognition, Localization and Mapping for Wearable Visual Robots Robert Oliver Castle. 19. Modelización tridimensional y sistemas láser escáner 3D aplicados al patrimonio histórico Mercedes Farjas y Francisco J. García Lázaro D Reconstruction Using the Direct Linear Transform with a Gabor Wavelet Based Correspondence Measure Daniel Bardsley / Bai Li. 21. Unsupervised 3D Object Recognition and Reconstruction in Unordered Datasets M. Brown y D.G. Lowe. 22. Accelerating SURF Detector on Mobile Devices Xin Yang and Kwang-Tin Chen. 23. Stable Real-Time 3D Tracking using Online and Offline Information L.Vachetti, V. Lepetit and P. Fua. 24. Fully Automated and Stable Registration for Augmented Reality Applications Vincent, Luca Vacchetti, Daniel Thalmann, Pascal Fua. 25. Análisis y desarrollo de sistemas de realidad aumentada Héctor López Pombo. 26. Visión por computador Gonzalo Pajares Martinsanz y Jesús M. de la Cruz García. Ed. Ra-Ma. 2º Edición. 27. Ejercicios resueltos de Visión por computador Gonzalo Pajares Martinsanz y Jesús M. de la Cruz García. Ed. Ra-Ma. pág. 131139 28. Fotogrametría Digital Vol. 1 Toni Schenk. Ed. Marcombo. 29. Transformaciones de coordenadas Juan Antonio Perez Álvarez. Ed. Bellisco. 30. A Quick 3D-to-2D Points Matching based on the Perspective Projection - Songxiang Gu, Cliff Lindsay, Michael A. Gennert, Michael A. King. 31. Android 2 Application Development - Reto Meier. Editorial Wrox. 32. Curso de Android: Desarrollo de aplicaciones móviles Maestros del web. 33. OpenGL Transformation- Song Ho Ahn. 34. A Combined Corner and Edge Detector Chris Harris & Mike Stephens. 35. An Efficent Solution to the Five-Point Relative Pose Problem David Nister. Páginas especializadas: 36. Sitio oficial de desarrollo android https://developer.android.com/. 37. Androideity 38. Stackoverflow 39. Diploma de Especialización en desarrollo de aplicaciones para Android Universitad Politécnica de Valencia.www.androidcurso.com. 40. LearnOpenGL ES 41. Code Project pág. 132140 10.Anexos 10.1 Reseña de estaciones pág. 133141 Nombre de la Estación B1 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0,003m Longitud: 3 23' " O ± 0,002m Altitud elipsoidal: m ± 0,006m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.003m Y: m ± 0.002m Altura ortométrica: m Reseña de situación y Croquis Situado en la confluencia del cardo V con el decumano IV. El punto B1 queda definido sobre la tapa de la arqueta junto al camino. pág. 134142 Nombre de la Estación E2002 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.003m Longitud:3 23' " O ± 0.003m Altitud elipsoidal: m ± 0.007m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Estación situada en el camino del acceso principal al yacimiento, el cuál corresponde a su vez con el cardo VII. Se localiza aproximadamente a mitad de la manzana excavada junto al camino. pág. 135143 Nombre de la Estación E1001 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis El punto de estación se encuentra en la bifurcación de los caminos del itinerario seguido por los visitantes junto a la fachada monumental, sobre lo que en su momento fue el decumano III. pág. 136144 Nombre de la Estación E1002 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' "N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Se localiza en el camino que discurre junto al decumano III, junto a la amplia puerta metálica de entrada existente. El punto se encuentra junto al margen exterior del camino. pág. 137145 Nombre de la Estación E1003 Tipo de señal Clavo de acero en suelo Reseña de situación y Croquis Se sitúa en el camino que discurre junto al decumano III, junto a tres piezas de piedra y con vistas a la basílica civil. Queda la estación materializada junto al margen exterior del camino. pág. 138146 Nombre de la Estación E1004 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Se emplaza en el camino que discurre paralelo al lado este de la basílica civil, en un punto cercano a los paneles informativos y la entrada intermedia a la basílica. El punto se encuentra junto al borde del camino. pág. 139147 Nombre de la Estación E1005 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.005m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.010m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.005m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Se localiza dentro del camino que discurre paralelo al lado norte del portico sur. El punto queda materializado cerca del borde exterior. pág. 140148 Nombre de la Estación E1006 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.005m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.010m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.005m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Junto al pórtico sur, en el lado más oriental del yacimiento, se sitúa el punto materializado próximo al borde exterior del camino que siguen los visitantes junto al lado este del pórtico sur. pág. 141149 Nombre de la Estación E1007 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Se sitúa en el extremo sureste de las termas sur, dentro del camino creado para visitar el yacimiento. Se encuentra junto al borde exterior del mismo. pág. 142150 Nombre de la Estación E1008 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Se sitúa en el extremo suroeste de las termas sur y cerca de las escaleras metálicas, dentro del camino creado para visitar el yacimiento. Se encuentra junto al borde exterior del mismo. pág. 143151 Nombre de la Estación E1009 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.005m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.010m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.005m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis El punto queda materializado en el espacio situado entre la curia, el mercado y la rampa metálica de acceso al criptopórtico. pág. 144152 Nombre de la Estación E1010 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Punto localizado en la confluencia del camino que discurre paralelo a la fachada monumental y el camino perpendicular al anterior que lleva a las escaleras de acceso al criptpórtico. El punto se sitúa junto al vértice de la confluencia de ambos caminos, en la zona exterior a él. pág. 145153 Nombre de la Estación E2001 Tipo de señal Clavo de acero en suelo Sistema de Coordenadas: ETRS 89 Coordenadas geográficas: Latitud: 40 28' " N ± 0.004m Longitud: 3 23' " O ± 0.004m Altitud elipsoidal: m ± 0.009m Coordenadas en proyección UTM: Huso: 30 Norte. X: m ± 0.004m Y: m ± 0.004m Altura ortométrica: m Reseña de situación y Croquis Se sitúa en el camino correspondiente al decumano III, en el extremo noreste de la manzana excavada. pág. 146 Mostrar más
LA ASÍ LLAMADA CASA DE HIPPOLYTUS: LA FUNDACIÓN DE LOS ANIOS Y LA SCHOLA DE UNA AGRUPACIÓN COLEGIAL DE LA CIUDAD ROMANA DE COMPLUTUM
Archivo Español de Arqueología 2007, vol. 80, págs. 119-152 ISSN: 0066 6742 LA ASÍ LLAMADA CASA DE HIPPOLYTUS: LA FUNDACIÓN DE LOS ANIOS Y LA SCHOLA DE UNA AGRUPACIÓN COLEGIAL DE LA CIUDAD ROMANA DE COMPLUTUM Más detalles ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN
ESCUELA TÉCNICA SUPERIOR DE INGENIEROS INDUSTRIALES Y DE TELECOMUNICACIÓN Titulación: INGENIERO EN INFORMÁTICA Título del proyecto: RECORRIDO INTERACTIVO DEL PARQUE DE TRINITARIOS DE PAMPLONA MEDIANTE Más detalles Data warehouse de soporte a datos de GSA
Data warehouse de soporte a datos de GSA Iván Arribas López 21/07/2008 Agradecimientos En primer lugar, quiero dar las gracias a mi tutora, Ernestina, por darme todo su apoyo, tiempo y paciencia. Por su Más detalles Estación total aplicada al levantamiento topográfico de una comunidad rural.
Página0 Estación total aplicada al levantamiento topográfico de una comunidad rural. Escuela Superior de Ingeniería y Arquitectura U.P. Zacatenco TESIS PARA OBTENER TITULO DE INGENIERO CIVIL PRESENTA Cruz Más detalles Redes Topográficas. Tema 10: Redes Topográficas. M. Farjas 1
Tema 10: M. Farjas 1 ÍNDICE 1. INTRODUCCIÓN. SISTEMAS Y MARCOS DE REFERENCIA GEODÉSICOS.1 INTRODUCCIÓN. SISTEMAS DE REFERENCIA GEODÉSICOS..1 Sistema de referencia ED-50 (European Datum 1950).. Sistema Más detalles CAD/CAM. Instituto Técnico de la Estructura en Acero ITEA
CAPITULO II DISEÑO (JACQUARD) Si el hombre fuese constante sería perfecto SHAKESPARE El diseño, es el arte que nos permite expresarnos, (es una actividad deliberada del ser humano) a través del dibujo, Más detalles SIG PARA PRINCIPIANTES
SIG PARA PRINCIPIANTES RAZONANDO ESPACIALMENTE Lo más incomprensible del mundo es lo que es comprensible. Albert Einstein Inundaciones en Katmandú El monzón de este año trajo al país más lluvia que lo Más detalles Profesor] Energía solar para nuestra vida cotidiana
Profesor] Energía solar para Aviso previo Esta Guía pretende ser una herramienta útil a los docentes que facilite, enriquezca y complemente la labor de sensibilización sobre la energía solar y las renovables Más detalles Título: Gestión de Información Urbana Tridimensional Editores: Lidia Ortega Alvarado y Ángel Luis García Fernández Edición y maquetación propia ISBN:
Título: Gestión de Información Urbana Tridimensional Editores: Lidia Ortega Alvarado y Ángel Luis García Fernández Edición y maquetación propia ISBN: 978-84-694-8374-9 Jaén, 2011 c los autores Diseño de Más detalles Proyecto Web. Simulador PDA-GPS. de un Guía Turístico Interactivo
Master Administración de Web y Comercio Electrónico en entornos de Software Libre Proyecto Web Simulador PDA-GPS de un Guía Turístico Interactivo Autor: Félix Sánchez Navarro Consultor: Francisco Javier Más detalles UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR
UNIVERSIDAD CARLOS III DE MADRID ESCUELA POLITÉCNICA SUPERIOR INGENIERÍA TÉCNICA EN INFORMÁTICA DE GESTIÓN PROYECTO FIN DE CARRERA AUDITORÍA PRÁCTICA DE BASES DE DATOS BAJO INFORMIX Autor: Mª Isabel Romero Más detalles CONSEJERÍA DE GOBERNACIÓN MANUAL DE PROYECTOS. Agencia Andaluza del Voluntariado
CONSEJERÍA DE GOBERNACIÓN MANUAL DE PROYECTOS Agencia Andaluza del Voluntariado PROYECTOS Agencia Andaluza del Voluntariado Edita: Autor: Imprime: Dep. Legal: Junta de Andalucía. Consejería de Gobernación. Más detalles 1. Introducción. 2. Estrategia de Localización
LOCALIZACIÓN Índice 1. Introducción... 2 2. Estrategia de Localización... 2 2.1. La importancia de las decisiones de localización. Hechos que las condicionan... 2 2.2. Factores que afectan a la localización... Más detalles Buenas Prácticas en Instalaciones Deportivas
Buenas Prácticas en Instalaciones Deportivas Buenas Prácticas en Instalaciones Deportivas Federación Española de Municipios y Provincias, 2009. Edición: Federación Española de Municipios y Provincias Más detalles MANUAL DE AYUDA PARA LA GESTIÓN DE ENTIDADES NO LUCRATIVAS. Fundación Luis Vives
MANUAL DE AYUDA PARA LA GESTIÓN DE ENTIDADES NO LUCRATIVAS Fundación Luis Vives MANUAL DE AYUDA PARA LA GESTIÓN DE ENTIDADES NO LUCRATIVAS Autores Agustín de Asís, Dominique Gross, Esther Lillo, Alfonso Más detalles INFORMÁTICA II PROGRAMA ADMINISTRACIÓN PÚBLICA TERRITORIAL JOSÉ MIGUEL CUBILLOS MUNCA LUIS MIGUEL CABRERA ESCUELA SUPERIOR DE ADMINISTRACIÓN PÚBLICA
INFORMÁTICA II ELECTIVA 2 PROGRAMA ADMINISTRACIÓN PÚBLICA TERRITORIAL JOSÉ MIGUEL CUBILLOS MUNCA LUIS MIGUEL CABRERA ESCUELA SUPERIOR DE ADMINISTRACIÓN PÚBLICA 1 ESCUELA SUPERIOR DE ADMINISTRACIÓN PÚBLICA Más detalles DISEÑO DE UN SISTEMA INTEGRAL DE GESTIÓN DE LA CALIDAD, MEDIO AMBIENTE Y RIESGOS LABORALES
TRABAJO FIN DE GRADO EN GESTIÓN Y ADMINISTRACIÓN PÚBLICA DISEÑO DE UN SISTEMA INTEGRAL DE GESTIÓN DE LA CALIDAD, MEDIO AMBIENTE Y RIESGOS LABORALES AUTORA: LAURA FERNÁNDEZ BENLLOCH TUTOR: JOSE JABALOYES Más detalles INSTITUTO POLITÉCNICO NACIONAL UNIDAD PROFESIONAL CULHUACÁN DISEÑO DE DIRECCIONAMIENTO IP PARA LA EMPRESA CYRUS WYRELES PRESENTADO POR:
INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD PROFESIONAL CULHUACÁN DISEÑO DE DIRECCIONAMIENTO IP PARA LA EMPRESA CYRUS WYRELES PRESENTADO POR: DÍAZ QUINTERO Más detalles BUSINESS STRATEGY. INTRODUCCIÓN A LOS MODELOS DE NEGOCIO Y MANAGEMENT EN INTERNET
BUSINESS STRATEGY. INTRODUCCIÓN A LOS MODELOS DE NEGOCIO Y MANAGEMENT EN INTERNET ÍNDICE Business Strategy. Introducción a los modelos de negocio y management en internet 1. Planteando el negocio: el Modelo Más detalles Guía Técnica de Eficiencia Energética en Iluminación
E F I C I E N C I A Y A H O R R O E N E R G É T I C O Guía Técnica de Eficiencia Energética en Iluminación Oficinas Comité Español de IIuminación Título de la publicación: Guía Técnica de Eficiencia Energética Más detalles Empresa 2.0. Una actitud abierta al cambio
Empresa 2.0 Una actitud abierta al cambio Se autoriza la copia y distribución sin ánimo de lucro de este libro. Asimismo, las copias deberán citar expresamente el nombre de los autores y de la obra de Más detalles Zainduz Cuadernos Técnicos Fundación Eguía-Careaga
02 Zainduz Cuadernos Técnicos Fundación Eguía-Careaga Los Derechos de las Personas y el Medio Residencial Cómo Hacerlos Compatibles? 02 Zainduz Cuadernos Técnicos Fundación Eguía-Careaga Los Derechos de Más detalles Unidad D Capítulo 03 - Planifique su Trading
Unidad D Capítulo 03 - Planifique su Trading ABC Box - Temas tratados en este capítulo: Las pautas generales de lo que es un Plan de Trading y cómo poner en marcha uno. Cómo materializar su plan con una Más detalles Componentes software para gestión de dispositivos físicos. Estudio comparativo de soluciones basadas en.net y JavaBeans
UNIVERSIDAD POLITÉCNICA DE CARTAGENA E. T. S. Ingeniería de Telecomunicaciones Componentes software para gestión de dispositivos físicos. Estudio comparativo de soluciones basadas en.net y JavaBeans Andrés Más detalles VERSIÓN 3.0 2 IR A ÍNDICE PORTADA PORTADA IR A ÍNDICE 3
VERSIÓN 3.0 VERSIÓN 3.0 2 IR A ÍNDICE PORTADA PORTADA IR A ÍNDICE 3 ÍNDICE ÍNDICE 1 Prólogo...6 2 Introducción...7 2.1 Objetivo y alcance...8 Objetivo...8 Alcance...8 2.1 Sobre la guía de usos y estilo Más detalles LAS CARRETERAS Y LA NOCHE VER Y SER VISTO
LAS CARRETERAS Y LA NOCHE VER Y SER VISTO Julio de 2004 INDICE 1. INTRODUCCIÓN Y OBJETIVOS... 3 2. EL PROBLEMA DE LA ACCIDENTALIDAD DURANTE LA NOCHE Y EL CREPÚSCULO... 5 2.1. ACCIDENTALIDAD NOCTURNA...5 Más detalles Universidad Andina Simón Bolívar. Sede Ecuador
Universidad Andina Simón Bolívar Sede Ecuador Área de Gestión Programa de Maestría en Dirección de Empresas Desarrollo de una estrategia de Marketing basada en CRM (Manejo de las Relaciones con el Cliente) Más detalles UNIVERSIDAD DE CUENCA RESUMEN
RESUMEN El objetivo es ofrecer un programa de planificación de producción para el taller de Latonería de Mirasol S.A. ya que actualmente se lo realiza basándose únicamente en la experiencia del Administrador, Más detalles Características de Buen Gobierno Municipal
Características de Buen Gobierno Municipal 10 Lecciones prácticas para las Autoridades Municipales Electas 2 Introducción. El objetivo fundamental del presente trabajo, es identificar las características Más detalles 2016 © DocPlayer.es Política de privacidad | Condiciones del servicio | Feedback

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución