Escola Tècnica Superior d’Enginyeria de Telecomunicacions de Barcelona Facultat d’Òptica i Optometria de Terrassa Treball de Fi de Grau Estudi de la visió estereoscòpica i implementació d’un Sistema de visualització 3D Escola Tècnica d'Enginyeria de Telecomunicació de Barcelona Universitat Politècnica de Catalunya per Gerard Alvarez Bruach En compliment parcialdels requeriments per el grau en Enginyeria en Sistemes de Telecomunicacions Tutors: Oriol Batiste Boleda, José Luis A. Muñoz Barcelona, Gener 2017
i Resum El present TFG sorgeix de la motivació d'aplicar coneixements adquirits durant aquests anys a l'ETSETB en un projecte relacionat amb la tridimensionalitat. En el TFG hem realitzat un Sistema que obté imatges per a la seva visualització estereoscòpica (visió en 3D) a través de dues càmeres web. Per a una major versatilitat en possibles aplicacions futures, aquestes càmeres posicionen la seva adreça de visió amb un motor pas a pas (NEMA 17) controlat a través d'una placa Arduino i el controlador propi del motor. Tot això està dirigit per una Raspberry Pi que al seu torn realitza les funcions de Servidor per a la transmissió de les imatges i la recepció de les ordres exteriors de l'usuari. Aquesta comunicació i transmissió entre usuari i sistema per a l'obtenció de les imatges es realitza via WiFi, creant una WEB que permet la visualització d'aquestes imatges en diferents dispositius. Per entendre el procés de visionat en 3D hem anat a la Facultat d'Òptica i Optometria de Terrassa, per aprendre els fonaments de la visió binocular, i poder realitzar un estereoscopi que ens permet visionar en 3D les imatges generades pel nostre sistema. Igualment hem realitzat un estudi sobre la capacitat de visió d'un grup de persones per validar que el projecte que estem proposant pot ser visionat per la gran majoria de la població.
ii Resumen El presente TFG surge de la motivación de aplicar conocimientos adquiridos durante estos años en la ETSETB en un proyecto relacionado con la tridimensionalidad. En el TFG hemos realizado un Sistema que obtiene imágenes para su visualización estereoscópica (visión en 3D) a través de dos webcams. Para darle una mayor versatilidad en posibles aplicaciones futuras, estas cámaras posicionan su dirección de visión con un motor paso a paso (NEMA 17) controlado a través de una placa Arduino y el driver propio del motor. Todo ello está dirigido por una Raspberry Pi que a su vez realiza las funciones de Servidor para la transmisión de las imágenes y la recepción de las órdenes exteriores del usuario. Esta comunicación y transmisión entre usuario y sistema para la obtención de las imágenes se realiza vía WiFi, creando una WEB que permite la visualización de dichas imágenes en diferentes dispositivos. Para entender el proceso de visionado en 3D hemos idos a la Facultad de Óptica y Optometría de Terrassa, para aprender los fundamentos de la visión binocular, y poder realizar un estereoscopio que nos permite visionar en 3D las imágenes generadas por nuestro sistema. Igualmente hemos realizado un estudio sobre la capacidad de visión de un grupo de personas para validar que el proyecto que estamos proponiendo puede ser visionado por la gran mayoría de la población.
iii Abstract The motivation to make this TFG is to apply the knowledge acquired during these years in the ETSETB in a project related with 3D technology In the present TFG we have realized a System that obtains images for its stereoscopic visualization (vision in 3D) through two webcams. To give you greater versatility in possible future applications, these cameras position their vision direction with a stepper motor (NEMA 17) controlled through an Arduino board and the own motor driver. All this is supervised by a Raspberry Pi which in turn perform the functions of Server for the transmission of the images and the reception of the external orders of the user. This communication and transmission between user and system to obtain the images are done via WiFi, creating a WEB that allows the visualization of these images in different devices. To understand the process of 3D viewing we have gone to the Faculty of Optics and Optometry of Terrassa, to learn the basics of binocular vision, and to make a stereoscope that allows us to 3D view the images generated by our system. We have also made one study with one group of people to validate that this proposed project can be viewed by the vast majority of the population.
iv A la meva família que sense el seu esforç, recolzaments i ànims mai hagués arribat a aconseguir tot això. A la meva parella Noelia per tots els cops que ha hagut de sentir “avui no ens podem veure, haig d’estudiar, tinc molta feina” i per tot el recolzament durant aquest quatre anys. A tots els meus companys de la Universitat amb els que he anat creixent i millorant al llarg d’aquest temps.
v Agraïments Haig de començar agraint al meu tutor, Oriol Batiste, la seva paciència, dedicació, els seus consells i ensenyances, que durant el procés d’aquest projecte tant m’han ajudat com animat a seguir en davant. Haig de donar mil gràcies a la Facultat d’Òptica i Optometria de Terrassa, en concret al meu cotutor José Luis, per haver-me obert les portes de la seva Universitat i haver-me ajudat tant en l’aprenentatge d’un nou món per a mi, com és l’òptica, sense el qual aquest treball no hagués sigut possible de realitzar. Finalment, agraeixo a tota la meva família, parella i amics que m’han recolzat i ajudat en tot moment confiant en mi i en el bon treball que he anat fent any rere any.
vi Historial de revisions i aprovacions Revisió Data Propòsit 0 23/12/2016 Creació del document 1 02/01/2017 Primera revisió 2 11/01/2017 Segona Revisió Llista de distribució Nom e-mail Gerard Alvarez
[email protected] /
[email protected] Oriol Batiste
[email protected] Jose Luis A. Muñoz jose.luis.[email protected] Escrit per: Revisat i aprovat per: Data 13/01/2017 Data 13/01/2017 Nom Gerard Alvarez Nom Oriol Batiste Posició Autor del projecte Posició Supervisor del projecte
vii Taula de Contiguts Resum ................................................................................................................................... i Resumen ............................................................................................................................... ii Abstract ................................................................................................................................. iii Agraïments ........................................................................................................................... v Historial de revisions i aprovacions ...................................................................................... vi Taula de Contiguts .............................................................................................................. vii 1. Introducció ..................................................................................................................... 1 1.1. Objectius ................................................................................................................ 1 1.2. Requeriments i Especificacions ............................................................................ 2 1.3. Limitacions ............................................................................................................. 3 1.4. Abast ...................................................................................................................... 3 1.5. Pla de treball .......................................................................................................... 3 1.5.1. Estructura del projecte ................................................................................... 4 1.5.2. Diagrama de Gantt ......................................................................................... 5 1.5.3. Incidències ...................................................................................................... 6 2. Estudi de la visió estereoscòpica i mesures AVE: ....................................................... 7 2.1. Conceptes previs ................................................................................................... 7 2.1.1. Òptica de l’ull .................................................................................................. 7 2.1.2. Visió monocular .............................................................................................. 8 2.2. Visió binocular i estereòpsia .................................................................................. 8 2.3. Mesura de l’Agudesa visual Estereoscòpica ...................................................... 10 2.3.1. Materials: ...................................................................................................... 10 2.3.2. Procediment: ................................................................................................ 10 2.3.3. Resultats: ...................................................................................................... 13 3. Sistema d’obtenció d’imatges tridimensionals:........................................................... 15 3.1. Estereofotografia ................................................................................................. 15 3.1.1. Regles per a l’obtenció dels estereogrames................................................ 16 3.1.2. Fotografia simultània .................................................................................... 16 3.2. Sistema ................................................................................................................ 17 3.2.1. Arduino ......................................................................................................... 18 3.2.1.1. Hardware .................................................................................................... 19 3.2.1.2. Software ..................................................................................................... 20
viii 3.2.2. Motor bipolar NEMA 17 i Driver DQ420MA ................................................. 20 3.2.3. Raspberry Pi 3 .............................................................................................. 21 3.2.3.1. Hardware .................................................................................................... 22 3.2.3.2. Software ..................................................................................................... 23 3.2.3.3. Connexió Wireless ..................................................................................... 23 3.2.3.4. El programa ................................................................................................ 24 4. Sistema de visualització d’estereogrames ................................................................. 25 4.1. Estereoscopis amb imatges superposades ........................................................ 25 4.1.1. Estereoscopis i estereogrames anaglífics ................................................... 25 4.1.2. Estereoscopis i estereogrames polaritzats .................................................. 27 4.1.2.1. Filtres de polarització lineal ........................................................................ 27 4.1.2.2. Filtres de polarització circular .................................................................... 28 4.2. Estereoscopis amb imatges separades .............................................................. 28 4.2.1. Estereoscopi de reflexió ............................................................................... 28 4.2.1.1. Disseny i construcció de l’estereoscopi de reflexió ................................... 29 4.3. Estereogrames de paral·laxi (Curiós cas de la Nintendo 3DS) .......................... 32 5. Sistema de mostra d’estereogrames .......................................................................... 34 5.1. Raspberry Pi com a Servidor local ...................................................................... 34 5.2. Pàgina Web ......................................................................................................... 35 6. Imatges del Sistema Resultant ................................................................................... 37 7. Costos del projecte ..................................................................................................... 40 8. Conclusions I desenvolupament futur ........................................................................ 42 9. Bibliografia ................................................................................................................... 43 Glossari: .............................................................................................................................. 44 ANNEXOS .......................................................................................................................... 45 Annex A – Taula Resultant estudi estereoagudesa a una població de 40 persones: ...... 46 Annex B – Programació i connexió NEMA17 mitjançant Arduino: .................................... 47 Annex C – Configuració de la Raspberry Pi per al projecte: ............................................. 50 Annex D – Programació del Controlador del sistema d’obtenció d’estereogrames: ........ 55 Annex E – Plànols AutoCAD de l’estereoscopi de reflexió: .............................................. 58 Annex F – Creació de la pàgina web: ................................................................................ 67 Llista de Figures ................................................................................................................. 73 Llista de Taules: ................................................................................................................. 75
7 2. Estudi de la visió estereoscòpica i mesures AVE: 2.1. Conceptes previs Abans de començar parlant de la visió estereoscòpica, hem de tenir certs conceptes clars de la visió, ja que d’aquesta manera serà molt més fàcil la comprensió de tot el projecte en general. Figura 3: Visites a la Facultat d’Òptica i Optometria de Terrassa (FOOT-UPC) 2.1.1. Òptica de l’ull Els ulls funcionen com unes càmeres fotogràfiques senzilles. El sistema òptic de l’ull consta de dues lents. Una de potència fixa, en forma de menisc (còrnia) i una altra biconvexa, de potència variable (cristal·lí, amb capacitat d’enfoc). El sistema òptic compost per la còrnia i la lent del cristal·lí forma a la retina una imatge invertida dels objectes que enfoca, ja que globalment es comporta com una lent biconvexa. Aquesta imatge, a través del nervi òptic, és transportada al cervell, i és aquí on es processa aquesta imatge i se’n extreu la informació adient. Després hem de tenir en compte altres elements com ara l’iris que fa la funció d’engrandir o empetitir la pupil·la per tal de deixar passar més o menys intensitat la llum. També hem de parlar dels músculs ciliars, que són els encarregats d’aplanar o arrodonir el cristal·lí en tot moment per enfocar millor l’objecte que estem visualitzant (acomodació). Com més a prop està l’objecte més s’arrodoneix la lent i com més lluny més s’aplana.
8 Figura 4: Part de l'ull humà Aquest últim apartat serà clau a l’hora de crear el sistema de visualització 3D per tal de tenir una acomodació no forçosa. 2.1.2. Visió monocular Quan a partir d’un objecte a l’espai, el sistema òptic de l’ull forma una imatge sobre la retina, el sistema visual (còrtex visual al cervell) respon projectant aquest estímul retinal cap a l’espai exterior, de manera que se li assigna una direcció visual concreta. A aquesta direcció se l’anomena direcció visual monocular. Es a dir el cervell coneix la direcció en la que es troba el objecte però no es capaç de saber la posició exacta. En el moment que parlem de Visió monocular, hem de tenir en compte els factors monoculars. Els factors monoculars són un conjunt de pistes, que no estan lligades a la visió binocular, que rep el sistema visual, mitjançant les quals es pot obtenir informació sobre les distàncies relatives a les que es troben els objectes del nostre entorn. Com per exemple, segons la luminància o les ombres associades a l’entorn de visualització, a la perspectiva geomètrica de l’ambient, etc. Aquests factors són adquirits al llarg del període d’aprenentatge, durant els primers anys de la nostra vida. Figura 5: Percepcions per ombres projectades 2.2. Visió binocular i estereòpsia La visió binocular consisteix en la integració de la sensació produïda pels estímuls lluminosos de cada ull en una percepció única. De la mateixa manera que s’ha descrit en condicions monoculars, quan hi ha un objecte a l’espai, mitjançant la projecció dels dos estímuls retinals (una imatge de l’objecte a cada retina), el sistema visual assigna una direcció visual concreta per cada ull. La percepció tridimensional es tindrà allà on es creuin aquestes dues direccions visuals monoculars.
9 Aquesta és la base de l’estereòpsia o visió estereoscòpica. La quantificació de l’estímul tridimensional és la disparitat binocular (DB), que es calcula trobant la diferència entre l’angle binocular per un objecte determinat (ɸ2) i l’angle binocular per l’objecte de fixació (ɸ1). DB = | ɸ1 - ɸ2 | Figura 6: Càlcul de la Disparitat Binocular Considerant que les distàncies a les que es trobaran els objectes, en comparació a la distància interpupil·lar (DIP), són molt més grans, les diferències dels angles tindran valors molt petits. En aquest cas podem aplicar una aproximació en els càlculs trigonomètrics que consisteix en considerar iguals els angles expressats en radians, a les seves tangents. L’expressió resultant és: on DB és el valor de la disparitat binocular en segons d’arc (“), DIP és la distància interpupil·lar (de centre de pupil·la dreta a centre de pupil·la esquerra o viceversa), d és la distància a la qual es troba l’objecte de fixació, i Δd és la diferència de distàncies entre l’objecte considerat i l’objecte de fixació. Quan un objecte presenta una disparitat binocular diferent de zero, serà percebut a una distància diferent a la de l’objecte de fixació. En cas que la DB sigui negativa (-) l’objecte es percep més lluny que l’objecte de fixació, i en cas de que DB sigui positiva (+), es percep més proper. Degut a l’existència dels factors monoculars, una persona amb visió monocular pot obtenir informació sobre les distàncies relatives dels objectes que hi ha a l’espai que l’envolta. En aquest cas diem que aquesta persona té percepció de profunditat. Sovint aquesta informació no és del tot correcte, ja que pot haver situacions on la persona amb visió monocular pot tenir problemes importants de localització d’objectes a l’espai. 2E P1 P2 d d 1E - 1D 2E - 2D 1E 1D 2D 1 2
10 La informació de la profunditat més fidel la proporciona la disparitat binocular. Així doncs, quan una persona pot veure en 3D gràcies a la interpretació de la informació obtinguda a partir d’estímuls de DB, diem que aquesta persona té estereòpsia o visió estereoscòpica. Aquesta condició implica necessàriament tenir visió binocular. Abans de realitzar el nostre sistema, hem volgut fer un estudi de la capacitat de visió tridimensional que tenen un cert grup de persones, per tenir dades concretes sobre quin percentatge de la població podrà gaudir de la nostra implementació, i d’aquesta manera tenir clar si la viabilitat del projecte és favorable o no. La manera de mesurar la capacitat de visió tridimensional és determinant l’estereoagudesa, o agudesa visual estereoscòpica, que és el mínim estímul de DB que la persona és capaç de detectar (mínim valor de DB que permet veure 2 objectes a diferent distància). La fórmula utilitzada és: 2 min minE d dDIP· π 648000 DBAV Quan més petita sigui la AVE (agudesa visual estereoscòpica), més bona serà aquesta capacitat. Es considera un valor de normalitat aquell que està al voltant de 30”. Quan s’assoleixen valors inferiors (hi ha persones que poden arribar a valors d’estereoagudesa de fins a 5” o 3”) es parla de gran capacitat d’estereòpsia. 2.3. Mesura de l’Agudesa visual Estereoscòpica Durant les primeres setmanes del projecte, amb l’ajuda de la Facultat d’Òptica i Optometria de Terrassa vam aprendre les tècniques de mesura de l’Agudesa Visual Estereoscòpica, amb l’objectiu de realitzar un estudi sobre la capacitat de fusió dels estereogrames (imatges en 3D) d’un grup de 40 persones per tal de saber si aquestes tenen la capacitat de veure en 3D o amb quin grau d’excel·lència les poden visualitzar. En conseqüència, si gaudirien o no del nostre sistema tridimensional. A continuació us explicarem el procediment de la prova esmentada: 2.3.1. Materials: Howard Dolman (instrument) Interpupil·lòmetre 2.3.2. Procediment: El factor que ens permet mesurar la capacitat de percebre la tridimensionalitat és l’estereoagudesa. L’estereoagudesa (EA) o agudesa visual estereoscòpica (AVE) la podem definir, com hem dit anteriorment, com la mínima diferència de distàncies en les que dos objectes (suposadament situats a l’infinit) són percebuts en posicions diferents pel nostre camp de visió binocular. S’expressa en unitats angulars, segons d’arc (“). Hi ha molts tests que mesuren l’AVE, però la Facultat d’Òptica i Optometria de Terrassa ens va aconsellar que utilitzéssim el mètode de Howard Dolman, ja que és molt més precís que altres tests més convencionals.
11 Figura 7: Howard Dolman, aparell per calcular l’AVE Per calcular els valors de l’AVE, utilitzarem conceptes trigonomètrics, ja que nosaltres volem trobar la diferència entre dos angles determinats a partir d’unes distàncies relatives entre la vareta fixa i la vareta mòbil. Existeix un mètode de mesura exacte de l’AVE que no s’utilitza per la seva complexitat. Els òptics utilitzen el càlcul aproximat perquè s’ha demostrat que la diferència entre el càlcul exacte i el càlcul aproximat és mínima (només d’un 1 %). Per tant ens basarem en el càlcul aproximat següent: Taula 1: Variables per al càlcul de l’AVE
12 Figura 8: Càlcul aproximat de l’estereoagudesa (AVE) Calculem l’AVE en les diferents posicions de M. ∆d1. Posició de M al mateix nivell que F, venint M d’un punt més allunyat que F. ∆d2. Posició de M més propera que F, venint M d’un punt més allunyat que F. ∆d3. Posició de M més allunyada que F, venint M d’un punt més proper que F. ∆d4. Posició de M al mateix nivell que F, venint M d’un punt més proper que F. Fem la mitjana dels 4 valors obtinguts per saber l’AVE total. El procediment de la prova és molt senzill. El pacient es col·loca a una “d” de 4 metres respecte el Howard Dolman i mira fixament l’escletxa per on es veuen les varetes. Els pacients, en tot moment, tenen la sensació de veure dos objectes plans a diferent profunditat. Figura 9: Visió frontal del Howard Dolman
13 A continuació els movem la vareta mòbil (M, la que ells veuen situada a la dreta) cap endarrere, cosa que els hi fa percebre que aquesta està més allunyada des del seu punt de vista, que la vareta fixa (F, la qual ells veuen situada a l’esquerra). Llavors comença la prova, que l’hem dividida en els passos següents: 1Acostem la M cap a F, i el pacient ha d’avisar en quin moment creu que aquestes dues varetes estan situades en paral·lel, al mateix nivell (∆d1). 2Des del lloc on, en el pas 1, el pacient ens fa parar, continuem apropant M, fins que l’observador percebi el moment exacte que aquesta sobrepassa F (∆d2). 3Fem el mateix procediment que els anteriors, però ara col·locant la vareta M el més a prop del pacient possible i anar allunyant-la poc a poc. Quan el pacient percebi que estan en paral·lel ens avisa (∆d3), i a continuació des d’aquest punt movem, allunyant, la M, fins que l’observador capti que la M ha sobrepassat la F (∆d4). 4Tornem a repetir el procés per tal de contrastar el resultat i evitar diferents anomalies que es poden donar si només en féssim una. 5En acabar mesurem la DIP del pacient amb un aparell anomenat interpupil·lòmetre. Figura 10: Interpupil·lòmetre A una banda de la guia de la vareta mòbil, hi ha un regle que permet apuntar els punts on el pacient ha fet parar la vareta M, que ens serveixen després per trobar els “∆d” corresponents. Figura 11: Obtenció de les diferencies de distàncies En l’Annex A podem trobar la taula amb els resultats obtinguts per tota la població de l’estudi. 2.3.3. Resultats: Abans de realitzar l’estudi sabíem que el valor normal de l’AVE estava al voltant de 30", de manera que exceptuant un cas (que s’hauria de validar de nou), la resta està dins del qual esperàvem, tenint la majoria una bona o molt bona estereoagudesa, segons podem veure en la distribució de freqüències.
14 Descartarem el cas aïllat de més de 50”, ja que hauríem de repetir la prova, i si donés uns resultats semblants seria qüestió que aquesta persona anés a l’optometrista per veure si li fa falta la utilització d’ulleres o definitivament té una deficiència de l’AVE. Figura 12: Gràfic amb els resultats de l’AVE obtinguts Sabent el tamany de la pantalla de l’ordinador on visualitzarem les imatges en 3D, podem obtenir la mesura dels píxels (en el nostre cas 0,187mm). I a més, coneixent la distància que els nostres ulls visualitzaran aquesta pantalla (en el nostre cas 530mm). Podem calcular l’estímul de DB mínim que ens proporciona el sistema. 𝐷𝐵 =𝑎𝑟𝑐𝑡𝑔(0,187𝑚𝑚 530𝑚𝑚 )=72,78′′ Figura 13: Programa de càlcul de les dimensions del píxel a la pantalla Com a resultat, cap persona supera la DB induïda per l’ordinador, per tant, a les conclusions que vam arribar és que el 100% de persones que van passar per la prova, gaudirien sense tenir cap problema del nostre sistema de visualització tridimensional.
15 3. Sistema d’obtenció d’imatges tridimensionals: A partir d’aquest punt, entrarem directament en l’explicació detallada de com hem dissenyat i implementat el nostre sistema de visualització 3D, començant pel sistema d’obtenció d’imatges tridimensionals. Per poder veure imatges en 3D, ja sigui amb l’ajut d’un estereoscopi o no (del qual parlarem en el punt següent del projecte), primer hem de saber un seguit de tècniques i normes que s’han de seguir per a la correcta obtenció dels estereogrames. Els estereogrames, o parelles estereoscòpiques, són un conjunt de dues imatges bidimensionals, ja siguin interposades o separades, que reprodueixen les diferents perspectives que han de veure els ulls per crear il·lusions òptiques en 3D. El nostre cervell capta les dues imatges com si fos una única imatge tridimensional, produïda gràcies a la funció de la vista estereoscòpica que posseïm. Hem d’aconseguir que el nostre ull dret vegi només la perspectiva dreta i l’ull esquerra la perspectiva esquerra. Hi ha moltes tècniques d’obtenir els estereogrames, però el nostre projecte s’ha centrat específicament en adquirir-los a través de càmeres web. És per aquest motiu que, a continuació, parlarem de com aconseguir-los a partir de la fotografia (estereofotografia). 3.1. Estereofotografia L’esterefotografia, com ve diu el propi nom, és la tècnica d’obtenció d’estereogrames a partir de fotografies. Per aconseguir que un objecte el puguem visualitzar en 3D, ens cal com a mínim dues imatges d’aquest, fetes des de diferents perspectives. Ja que si fem dues fotografies des del mateix punt no crearíem l’efecte de profunditat al nostre cervell, perquè cada ull no veuria una perspectiva diferent, sinó la mateixa, cosa que faria veure l’objecte en 2D. Ara explicarem un seguit de regles i de tècniques senzilles, per l’obtenció correcta del parell d’estereogrames segons la distància a la qual es trobi l’objecte. Figura 14: Estereogrames
16 3.1.1. Regles per a l’obtenció dels estereogrames Per tal d’assolir la fusió de les dues imatges estereoscòpiques (estereogrames), el sistema visual humà no tolera ni desplaçaments verticals, ni rotacions relatives, ni diferències de mida ni diferències de claredat, ni diferències de nitidesa entre les dues imatges o estereogrames. Tal com es veu a la figura de sota només la primera parella d’imatges estereoscòpiques permetrien obtenir la fusió i gaudir de la visió en 3D. Figura 15: Correcte obtenció dels estereogrames 3.1.2. Fotografia simultània Hi ha una manera senzilla d’obtenir els estereogrames amb una sola càmera, utilitzant la tècnica de fotografia seqüencial. Farem una fotografia des d’un punt de referencia i mourem la càmera horitzontalment fins una certa distància òptima segons l’entorn a visualitzar, i realitzarem un altre fotografia. El problema és que aquesta tècnica comporta certs problemes. Si vols fotografiar un cert entorn dinàmic, el temps que es triga en realitzar una fotografia i la següent pot esborronar l’efecte tridimensional d’aquestes. Per tant, necessitarem que el que anem a fotografiar romangui immòbil durant tot el procés, cosa que la majoria de cops és molt complicat d’aconseguir. Per obtenir estereogrames de manera òptima i eficaç per a una correcte visualització tridimensional s’utilitza la tècnica de la fotografia simultània. Per obtenir els estereogrames amb aquesta tècnica, requerim de l’ajut de dues càmeres idèntiques (mateixa distància focal i augment). La fotografia simultània s’utilitza per obtenir estereogrames d’objectes que estan en moviment. Les dues càmeres separades amb la distància i angle corresponent, fan al mateix temps la fotografia, per tal de captar l’objecte que es mou. Aquesta és la tècnica habitual per gravar totes les pel·lícules que trobem dia rere dia a les cartelleres dels nostres cinemes.
23 Com bé acabeu de veure, la Raspberry Pi és capaç de moure el nostre NEMA 17. Els motiu principal per el qual vam col·locar un Arduino va ser per optimitzar el processat de les imatges. Si bé és cert que la RPi és un ordinador, quan trastegem amb ella ens donem compte que els seus recursos són limitats. Per tant, quan obtenim les imatges de les webcam, que és el més important, la RPi consumeix molts recursos. Vam pensar que la millor manera de no sobrecarregar el sistema era traient-li la responsabilitat de moure el motor, donant-li aquesta a la placa Arduino. 3.2.3.2. Software El sistema operatiu, de descarrega gratuïta, que utilitza majoritàriament la Raspberry Pi s’anomena Raspian basat en GNU/Linux. Igual que amb la filosofia de Linux, Raspian, i en conseqüència el software de la RPi, és un sistema basat en codi obert (Open Source), per tant ens podem descarregar una quantitat de programes de manera gratuïta, basant interessant per treure-li profit a la infinitat d’opcions de desenvolupament personal en l’àmbit dels computadors que ens ofereix aquest mini ordinador. Si voleu trobar l’informació relacionada de com instal·lar Raspian a la Raspberry Pi, podeu consultar l’Annex C. 3.2.3.3. Connexió Wireless Gràcies al Chip integrat WIFI amb la que està dotada la RPi, hem pogut connectar la placa en remot a un ordinador connectat a la mateixa xarxa. El Router de casa nostre té una direcció d’enrutament IP 192.168.2.0 amb una màscara de xarxa de 255.255.255.0. Per tant compren les direccions de connexió IP entre 192.168.2.1 a la 192.168.2.255. Llançant pings de Pregunta-Resposta entre les 254 rutes existents, hem trobat que la ruta de connexió entre el Router i la Raspberry ha estat la 192.168.2.113. Amb una connexió via SSH (Secure Shell), que és un protocol per poder accedir a màquines remotes a través d’una xarxa IPv4 i IPv6, podem controlar el terminal de la Raspberry Pi, i executar el nostre programa fet per al projecte. Figura 20: Connexió inàlambrica Raspberry Pi amb l’ordinador
24 3.2.3.4. El programa Una de les principals qüestions que ens van sorgir durant la realització del projecte, va ser la de com fer les fotografies a partir de dues càmeres connectades al ports USB de la RPi. Per sort, Raspian conté un programa anomenat FSWEBCAM que et permet fer fotografies a través de la terminal i guardar-les en una direcció de fitxers al nostre gust. Un cop instal·lades les llibreries de Arduino al nostre dispositiu, per poder controlat aquest últim i en conseqüència el gir del motor, vam crear un programa de controls, executat en terminal, programat en Python. Figura 21: Menú principal del controlador Com és pot observar, el programa consta de quatre comandes a introduir: Motor(M): Serveix per controlar el gir del motor. Un cop dins d’aquesta pestanya, només és valida la introducció de valors, en graus, entre -90 i 90, ja que sinó podem trencar el cable de les càmeres amb un gir de 360 graus. Un cop introduït el valor, la RPi li envia aquest a l’Arduino, que l’interpreta i provoca el gir al motor, a la seva vegada, el gir de les càmeres. Fotos(F): És la comanda amb la que fas les dues fotografies per a l’obtenció dels estereogrames. Un cop realitzat el procés, el programa et permet Guardar, si es vol, el parell d’imatges amb un nom específic que se li vulgui donar. Visor(V): Et mostra el llistat del parell d’imatges guardades. A continuació col·loques el nom de les que vols visualitzar i te les carrega al sistema de visualització que veurem més en davant. Ajuda(A): Et mostra el funcionament detallat del programa i com fer-lo servir. Per saber tota la informació detallada referent al codi i a la programació d’aquest programa Python, la podeu trobar a l’Annex D.
25 4. Sistema de visualització d’estereogrames Un cop obtinguts els estereogrames, hem hagut de crear un aparell de visualització que ens permeti veure els objectes en 3D. Aquests aparells s’anomenen Estereoscopis. Un estereoscopi és un dispositiu que és capaç de produir una percepció tridimensional a partir d’un registre bidimensional, l’estereograma. Qualsevol estereoscopi ha d’aconseguir reproduir el mateix estímul de disparitat binocular que el sistema visual tindria en condicions normals. Per tant, ha de comptar amb un mínim de dues imatges amb perspectives diferents, i a més ha d’aconseguir que cada ull vegi només la imatge corresponent a la perspectiva que li pertoca, com hem explicat abans. Figura 22: Principi de funcionament dels estereoscopis Els ulls formen imatges dels objectes que hi ha a l’espai, sobre la retina. A partir d’aquestes imatges retinals té lloc el procés de la projecció. D’aquesta forma, la percepció de cada objecte és al punt on es creuen les direccions visuals monoculars. Si mitjançant l’ajuda d’un estereoscopi es formen les mateixes imatges retinals que s’aconseguirien en condicions normals, el procés de la projecció es dóna de la mateixa manera, i el resultat definitiu serà una percepció tridimensional de les mateixes característiques que si es miressin els objectes reals. Segons el tipus de presentació de les dues imatges de la parella estereoscòpica es poden classificar els estereoscopis en dos grans grups: els d’imatges separades i els d’imatges superposades. En aquest apartat parlarem dels estereoscopis més utilitzats i explicarem quin ha sigut el nostre millor candidat per dur a terme el projecte. 4.1. Estereoscopis amb imatges superposades 4.1.1. Estereoscopis i estereogrames anaglífics La tècnica consisteix en imprimir les dues imatges sobre el mateix suport, però que tinguin un filtre de colors complementaris (verd / vermell i cian / vermell són les dues combinacions habituals de colors). En utilitzar unes ulleres amb filtres dels mateixos colors cada ull veurà només la imatge que li correspon (ull esquerre veurà a través del filtre de color vermell, per tant, veurà la imatge amb tonalitat vermell i l’ull dret a través del filtre cian, per tant, la imatge amb tonalitat cian).
26 Tenint en compte que l’espectre visible va des de 380 nm fins 780 nm, al gràfic de sota es pot comprovar que el filtre vermell no transmet les longituds d’ona fins a uns 590 nm, i en canvi el filtre blau no transmet les longituds d’ona a partir dels 590 nm aproximadament. En això consisteix la complementarietat dels colors. Figura 23: Longituds d’ona del color Cian i Vermell El problema principal que presenta aquest sistema és que altera el color original dels objectes. Les primeres pel·lícules que es projectaven en 3D als cinemes convencionals solien utilitzar els estereogrames anaglífics. Avui en dia les pel·lícules projectades acostumen a veure’s amb filtres polaritzadors i pantalles metàl·liques, ja que la imatge és més nítida i no s’alteren tant els colors. Figura 24: Estereograma anaglífic
27 4.1.2. Estereoscopis i estereogrames polaritzats La selecció de la imatge que veu cada ull es fa utilitzant llum polaritzada complementària. Habitualment s’utilitzen dues configuracions: filtres lineals i filtres circulars. Figura 25: Estereogrames polaritzats 4.1.2.1. Filtres de polarització lineal Davant d’un ull s’ha de col·locar un filtre polaritzador lineal amb el seu eix a 45º i davant l’altre amb l’eix de 135º. A més una de les imatges ha d’emetre llum polaritzada lineal a 45º i l’altre a 135º. D’aquesta manera cada ull veu la imatge que li correspon, aconseguint així la imatge en 3D. Si s’intercanvien els filtres cada ull veurà la imatge contraria tenint una percepció tridimensional invertida, per tant incorrecte. Els objectes que haurien de sobresortir es veuran enfonsats, i els que haurien d’estar enfonsats es veuen sobresortint. Si per error, els dos filtres estan orientats a 45º, tots dos ull veurien la mateixa imatge, per tant no formaríem la percepció en 3D de la imatge. Hi ha diverses maneres d’aconseguir que una imatge emeti llum polaritzada lineal a 45º i l’altre a 135º. La manera més habitual és mitjançant projecció: Projecció de llum polaritzada: Utilitzem dos projectors. Davant de cada projector col·loquem un filtre de polarització lineal a 45º i l’altre a 135º. Aquesta projecció es fa simultàniament sobre una única pantalla que ha de complir la condició de mantenir el tipus de polarització un cop reflectida la llum, que és el cas de les pantalles metal·litzades. Això vol dir que una de les imatges reflectida continuarà polaritzada a 45º i l’altra imatge a 135º. Figura 26: Ona electromagnètica polaritzada
28 4.1.2.2. Filtres de polarització circular Fan la mateixa funció que els filtres de polarització lineal, però té unes característiques diferents. Els raigs de llum que van a parar a la pantalla i després als nostres ulls, giren un en sentit horari i l’altre en sentit antihorari. D’aquesta manera, per molt que moguem el cap, sempre veurem les imatges en 3D cosa que amb els filtres lineals aquesta sensació de perspectiva es perd. Figura 27: Ona circular polaritzada 4.2. Estereoscopis amb imatges separades Com hem pogut observar, els estereogrames d’imatges superposades distorsionen, encara que sigui lleu, la visibilitat de la imatge 3D. Distorsionen el color, enfosqueixen la imatge, emborronen els contorns, etc. Per evitar aquestes faltes lleus, podem visualitzar les imatges tridimensionals a través d’estereoscopis d’imatges separades. És una tècnica que està en creixement constant, per exemple, les noves tecnologies existents sobre la Realitat Virtual (VR), de la que tant hem sentit a parlar els últims mesos, utilitzen aquest sistema, fent que cada ull visualitzi el vídeo que li pertoca. Figura 28: Estereoscopi d’imatges separades 4.2.1. Estereoscopi de reflexió Després de fer recerca, vam arribar a la conclusió que el candidat ideal per al nostre sistema seria l’Estereoscopi de reflexió. Gràcies a un joc de miralls, podem fer que cada ull vegi una imatge sense haver d’aprendre a convergir els ulls i poder visualitzar-la en 3D de manera que el format pot ser tan gran com es vulgui, sempre que entri al camp de visió dels miralls.
29 Figura 29: Principi de funcionament dels estereoscopis de reflexió Això significa que independentment del tamany de les fotografies (en aquest cas també influirà el tamany de la pantalla), mentre estiguin al camp de visió, i amb una separació optima entre els estereogrames, podrem veure qualsevol tipus d’imatge 3D. Aquest últim punt és de vital importància, ja que un cop decidit aquest estereoscopi, a continuació hauríem de crear un altre sistema per mostrar les imatges per pantalla amb la separació i tamany adequat per ser vistes amb l’aparell. A continuació, expliquem els procediments per a la construcció de l’estereoscopi de reflexió. 4.2.1.1. Disseny i construcció de l’estereoscopi de reflexió L’objectiu és aconseguir visualitzar una imatge en 3D a partir de dos estereogrames fets des de diferents perspectives sense haver de fer esforços de convergència per a la seva nítida visualització. 4.2.1.1.1. Materials Programes d’ordinador per a dissenyar l’estereoscopi: BEAM 4 Autocad 2010 Materials de construcció Fusta de 400mm x 400mm x 10mm Serra Fullola de 400mm x 400mm x 3mm Pintura negra 4 miralls Brotxa Frontissa Barrina 2 Palanques Tornavís 2 Suports de miralls Cargols 8 escaires metàl·lics Cola
30 4.2.1.1.2. Procediment Perquè l’estereoscopi compleixi la seva funció vam tenir en compte els següents factors: L’aparell amb el qual mostraríem els estereogrames: Portàtil de dimensions reduïdes. La distància a la qual hauríem de col·locar la pantalla de l’ordinador de l’observador: 50 cm. Fer que l’aparell pogués ser utilitzat pel major nombre de persones: població que tingués una distància interpupil·lar (DIP) entre 50mm-75mm. Aconseguir que l’estereoscopi fos adaptable a la visió de cada persona: fent que els miralls centrals fossin ajustables. Amb l’ajut del Departament d’Òptica i Optometria de la Facultat d’Òptica de Terrassa, vam calcular el tamany i posició dels miralls utilitzant el programa BEAM 4. BEAM 4 és un programa de càlcul de trajectòria exacta dels rajos de llum en el qual pots definir superfícies transparents, opaques o reflectants, i permet la generació de feixos de llum, que poden incidir o no amb les superfícies i agafar direccions diferents. Vam considerar en els ulls com els generadors dels feixos de llum, fent simulacions a diferents DIPs. Jugant amb diferents mides i posicions dels miralls analitzàvem si els rajos arribaven o no a una superfície opaca, que vam definir amb les mides de la pantalla de l’ordinador. Figura 30: Resultats del programa BEAM4 Figura 31: Simulació miralls BEAM4
31 Amb aquestes simulacions es van obtenir les especificacions ideals pel tamany i posició dels miralls: Distància dels ulls al primer joc de miralls 70 mm Angle de posició de miralls fixes 45º Angle de posició dels miralls mòbils 30º60º Mesures dels miralls mòbils 60 mm x 60 mm Mesures dels miralls fixes 120 mm x 70 mm Distància entre miralls fixes i mòbils 59 mm Taula 3: Variables per al construcció de l’estereoscopi Vam estar provant les posicions relatives dels miralls. A quina alçada els havíem de col·locar respecte el centre de la pantalla del l’ordinador i quins suports podríem posar per a que la inclinació d’aquest sigui perfectament verticals. Figura 32: Posicionament dels miralls Després de provar els miralls amb els estereogrames i veure que efectivament funcionaven, vam crear un primer prototip amb una caixa de sabates, la qual vam retallar en forma de rectangle allargat amb unes ranures a la part superior per tal de poder introduir el joc de miralls. Figura 33: Primer prototip de l’estereoscopi Gràcies a aquest primer prototip vam adonar-nos que els miralls reflexaven massa la llum exterior per l’estereoscopi, cosa que impedia veure amb nitidesa els estereogrames desitjats i per tant fer una bona fusió per veure la imatge en 3D. En conseqüència, els miralls necessitaven que la superfície on es trobessin quasi bé no reflexés gens la llum. A partir de la conclusió anterior vam decidir pintar l’interior de l’estereoscopi de color negre mat. Igualment, per reduir la il·luminació interior vam col·locar a la part del davant una cara frontal amb dos forats per poder posar els ulls i evitar que entrés la llum, i a la cara posterior vam tapar els laterals, deixant només la part on estan els miralls laterals descoberta.
32 El tema més problemàtic va ser la mobilitat dels miralls centrals, resolent aquest punt amb una frontissa i dos varetes enganxades a cada mirall permetent la regulació independent de cada un d’ells. A continuació vam dissenyar els plànols i la maqueta en fals 3D, amb el programa AutoCAD. L’AutoCAD és un programa que et permet dissenyar i construir qualsevol objecte amb uns resultants finals molt bons i molt precisos. És un software molt utilitzat a les escoles d’enginyeria industrial i mecànica, ja que et permet fer simulacions dinàmiques de la diferents maquinaria dissenyada. Amb els plànols obtinguts, que trobareu a continuació, ens van servir per a la construcció de l’estereoscopi. Figura 34: Estereoscopi de Reflexió, versió final A l’Annex E podreu trobar tota la informació sobre el plànols realitzats amb AutoCAD per tal de que pugueu construir-ne un d’idèntic a casa. 4.3. Estereogrames de paral·laxi (Curiós cas de la Nintendo 3DS) Hem pensat que seria interessant parlar del curiós cas de visualització 3D de la Nintendo 3DS, ja que és l’únic sistema a data d’avui que ens permet gaudir del món de la tridimensionalitat, sense necessitat d’utilitzar uns filtres anaglífics o polaritzats ni unes ulleres de visualització alternant. Figura 35: Nintendo 3DS
39 Figura 43: Sistema d’obtenció dels estereogrames (Raspberry Pi, Arduino, Driver Motor) Figura 44: Sistema d’obtenció dels estereogrames (Complet)
40 7. Costos del projecte A continuació es mostra el pressupost del projecte desglossat: Concepte Quantitat Preu Unitat(€) Cost(€) Enginyer Júnior 486 h 15€/h 7.290 € Càlcul AVE Interpupil·lòmetre 1 80 80 Howard Dolmann 1 2000 2000 Estereoscopi Fusta 2 14,72 29,44 Serra de fusta 1 3,95 3,95 Frontissa 1 2,20 2,2 Miralls a mida 4 24,75 99 Pintura negre 1 9,95 9,95 Brotxa (pincell) 1 3,62 3,62 Cargols, L, femelles "Pack" 7,52 7,52 Palanques per moure miralls 2 2,05 4,1 Sistema obtenció imatges 3D Raspberry PI 3 1 39,95 39,95 Arduino UNO 1 23,5 23,5 Motor NEMA17 1 17,90 17,9 Driver Motor DQMA 1 24,50 24,5 Webcam Logitech C310 2 49,95 99,9 Bateria Raspberry PI 1 15,99 15,99 Transaformador 12V 1 14,99 14,99 Engranatges 2 2,09 4,18 Rodes 1 7,89 7,89 LED "Pack" 0,10 0,20 Resistencia "Pack" 0,05 0,10 Estructura plàstica de gir 1 4,05 4,05 Estructura de subjecció sistema 1 13,65 13,65 Nivelladors /Potes 4 0,50 2,00 Cable impresora 1 1,59 1,59 Altres Ordinador Portàtil 1 271,65 271,65 Llicència Microsoft Office 1 149,00 149,00 Llicència Microsoft Project 1 79,00 79,00 Llicència AutoCAD (1 any) 1 1694,00 1694,00 Cost total (Sense comptar Enginyer) 4703,82 € Cost total del projecte 11.994 € Taula 4 : Costos del projecte
41 El present projecte consisteix en una investigació tant teòrica com pràctica realitzada amb diferents eines software i aparells mecànics construïts i dissenyats per un estudiant d’enginyeria durant 4 mesos amb una dedicació total de 486 hores (6h/dia). Per tant, per fer una estimació del pressupost, a part de les eines i l’equip (PC) utilitzat, tindrem en compte el preu hora estimat d’un enginyer junior. Hem de dir que,tant l’interpupil·lòmetre com el Howard Dolmann van ser facilitats per la Facultat d’Òptica i Optometria de Terrassa (FOOT). A més la llicència del Microsoft Project va ser cedida per la empresa on treballo, Deloitte. S.L.
42 8. Conclusions I desenvolupament futur Finalment, tal i com hem pogut observar, hem aconseguit que el nostre projecte compleixi totes les especificacions esmentades a l’inici del treball. Hem aconseguit realitzar un sistema de visualitzat 3D, des de l’obtenció dels estereogrames a la seva visualització de manera autònoma i inalàmbrica, el qual pot ser utilitzat per qualsevol dispositiu informàtic connectat a la mateixa xarxa que el servidor local. Tot això, obtenint els estereogrames a partir de dues webcams connectades a la Raspberry Pi. Creant un programa en Python capaç de controlar les càmeres, de guardar i carregar les imatges per ser visualitzades, i a més de poder moure la posició del motor, per tenir diferents punts de vista de posicions.Creant un estereoscopi de reflexió des de cero per poder visualitzar les imatges, i fent una pàgina web adaptable a les nostres necessitats de visualització. I a més, hem pogut comprovar que de les 40 persones,a les que se li va mesurar l’AVE, totes elles serien capaces de visualitzar tridimensionalment les imatges obtigundes amb el sistema, per tant més el 100% de la població gaudiria d’aquest projecte. Afegim que. la finalitat d’aquest treball de fi de grau va començar amb un objectiu clar, aconseguir realitzar un sistema automàtic de visualització 3D, cosa que com hem pogut observar s’ha aconseguit. Amb el pas de les setmanes ens hem endinsat dintre d’un univers desconegut com era la tridimensionalitat i hem pogut veure una quantitat de possibilitats i camps per on continuar investigant que desconeixíem.Hem estudiat el funcionament de l’ull en el món de l’òptica, durant les sessions que vam estar preparant a La Facultat d’Òptica i Optometria de Terrassa, i hem aprés a mesurar la capacitat de veure en 3D d’un grup de persones.Hem entès el funcionament d’un motor bipolar i hem aprés a programar la placa Arduino. Hem de dir també que era el primer cop que tocàvem una placa Arduino, i la sensació ha sigut molt satisfactòria, ja que en un futur seguirem fent petits projectes com a hobby. I el mateix passa amb la Raspberry Pi. Va ser el primer cop que en tocàvem una. Per tant, el passar a no saber res de res a fer un projecte tant complex amb la RPi t’omple de satisfacció personal.El disseny i construcció de l’estereoscopi, ens ha aportat uns coneixements de tot el seguiment que s’ha de desenvolupar per crear un aparell, des de fer dissenys sobre paper, a fer els petits prototips, a dissenyar els plànols amb AutoCAD i finalment realitzar la seva construcció. A més, hem sigut capaços de crear i programar una pàgina web acord amb les nostres necessitat de visualització, i adaptable a qualsevol dispositiu que es connectés amb el servidor local de la Raspberry Pi. Un cop acabat el projecte, podem dir que el nostre sistema pot tenir moltes possibilitats futures. Per exemple, pot servir com a càmeres de seguretat, ja que al tenir visualització 3D ens és més fàcil reconstruir rostres de persones, a part el moviment de les càmeres ens pot servir com a rastrejador. Per últim durant la realització del treball, ens hem adonat que la era de les 3-Dimensions està en continua evolució, ja que és un univers molt actual i avui dia totes les indústries d’imatge busquen novetats constants per millorar el 3D, com ara la Realitat Virtual, i que totes les tecnologies de les quals hem parlat en aquest treball, d’aquí pocs mesos ja hauran quedat obsoletes i n’hauran sorgit d’altres.Per exemple quan vam començar la recerca, Sony estava treballant en un prototip d’un aparell de visió de Realitat Virtual 3D per a la Playstation 4 i a finals de desembre hem vist que ja està al mercat.
43 9. Bibliografia [1] José Luis A. Muñoz i Aurora Torrents Gómez, “Visió binocular i l’estereòpsia”, Dept. D’Òptica i Optometria, Facultat d`Òptica i Optometria de Terrassa, UPC, Any 2012. [2] José Luis A. Muñoz, “Divertim-nos en 3D”, Dept. D’Òptica i Optometria, Facultat d`Òptica i Optometria de Terrassa, UPC, Any 2012. [3] Anònim, https://otroderaspberry.wordpress.com , Blog “Otro de Raspberry”, Març 2014. [4] BrainBits, https://brainy-bits.com, “Control a Stepper Motor”, Juny 2015. [5] Raspberry Pi Organization, https://www.raspberrypi.org, Pàgina Principal Raspberry Pi, Diciembre 2012. [6] Arduino Genuino, https://www.arduino.cc/, Pàgina Principal d’Arduino, actualització Gener 2017. [7] Python Organization, https://www.python.org, Pàgina Python, Actualització Gener 2017. [8] PuTTY Organization, https://www.putty.org, Pàgina PuTTY, Actualització Setembre 2016. [9] AutoCAD, https://www.autodesk.es, Pàgina AutoDesk, Actualització Gener 2017. [10] Python Organization, https://www.python.org, Pàgina Python, Actualització Gener 2017. [11] Israel Martinez, “Apuntes Introducción a Redes Telemáticas (IXT)”, Escola Tècnica Superior d’Enginyeria de Telecomunicacions de Barcelona, UPC, Actualització Setembre 2014.
44 Glossari: 1. Biconvexa: lent amb les dues superfícies convexes. 2. Còrtex visual: és la part de l'escorça cerebral responsable del processament d'informació visual. Es troba a la part del darrere del cervell. 3. Cristall Líquid: Substància capaç de passar d’estat líquid a sòlid i viceversa, aplicant impulsos elèctrics. 4. Diòptries: és la unitat de mesura de la potència d’una lent o d’un mirall corbat. 5. Distància focal: és la distància entre el centre òptic d'una lent i el punt on la imatge queda projectada, o bé la distància entre el centre òptic i el punt on convergeixen les prolongacions dels raigs de llum (depenent de la forma de la lent) 6. Espectre Visible: Capacitat que té la visió per veure un espectre electromagnètic concret. 7. Howard Dolman: Aparell de mesura de l’agudesa visual estereoscòpica humana, que consisteix en obtenir la disparitat binocular mínima produïda per la diferència de distancies entre una vareta mòbil i un altre fixa. 8. Interpupil·lòmetre: Aparell per mesurar la distància entre pupil·la i pupil·la. 9. Menisc: és una lent formada per una superfície còncava i una altra convexa. 10. Paral·laxi: és un desplaçament o una diferència en la posició aparent d'un objecte vist al llarg de dues línies diferents de la vista. 11. Píxel: és la unitat homogènia més petita en color que forma part d’una imatge digital. 12. RGB ( Red-Green-Blue): són els colors primaris dels quals, a través de les seves mescles, sorgeixen totes les diferents gammes de colors. 13. Ping: és una eina de les xarxes TCP/IP (com ara Internet) que permet, de forma similar a una trucada perduda, determinar si un servidor està funcionant i si s'hi pot arribar des d'una xarxa concreta amb l'ordinador des d'on es fa la prova. 14. Processing: és una aplicació de codi obert amb un llenguatge per a la programació d'imatges, animació, so i electrònica. 15. PWR: (Modulació per amplada de polsos) és una tècnica de modulació emprada per a codificar un missatge en una sèrie de polsos d'amplada variable. 16. SSH: (Secure SHell) és un protocol i el programa informàtic que l'implementa, i serveix per accedir a màquines remotes a través de la xarxa.
45 ANNEXOS
46 Annex A – Taula Resultant de l’estudi de l’estereoagudesa a una població de 40 persones: Taula 5: Resultats de les mesures a la població
47 Annex B – Programació i connexió NEMA17 mitjançant Arduino: Materials: Motor Bipolar NEMA17 Placa Arduino UNO Driver motor DQ420MA (o similar) 1 LED vermell 1 LED verd 2 Resistències de 220 Ohms Placa protoboard Font d’alimentació de 12V Cable USB-QLN (cable d’impresora) Ordinador amb el software de programació Arduino instal·lat Connexions electròniques entre components: El primer que haurem de fer es fer les connexions corresponents del sistema de la següent manera il·lustrada a continuació: Figura 45: Esquema de connexions electròniques entre Arduino, Driver i NEMA17
48 Figura 46: Diagrama de connexions funcional entre components A partir d’aqui ja podem començar a programar el codi que farà funcionar tot el sistema. A continuació us deixem comentat: Codi: /* MOTOR BIPOLAR El motor gira els graus que se li indiquen per el monitor serial. */ int retard=1; // Temps de retard en milisegons (Velocitat del Motor) int retard_char=5; int dada_rx; // valor rebut en graus int numero_pasos = 0; // Valor en graus on es troba el motor String llegeixCadena; // Enmagatzema la cadena de dades rebudes void setup() { Serial.begin(9600); // inicializem el port serie a 9600 bauds pinMode(12, OUTPUT); // Pin 12 conectar a LED Verd pinMode(11, OUTPUT); // Pin 11 conectar a LED Vermell pinMode(10, OUTPUT); // Pin 10 conectar a ENBL pinMode(9, OUTPUT); // Pin 9 conectar a PUL pinMode(8, OUTPUT); // Pin 8 conectar a DIR } void loop() { while (Serial.available()) { // Llegeix el valor enviat per el Port serial delay(retard_char);
55 Annex D – Programació del Controlador del sistema d’obtenció d’estereogrames: Materials: Raspberry Pi (en el nostre cas, el model B 3) Ordinador (portàtil o de torre) Sistema Arduino/Motor/Driver explicat en l’Annex B. 2 webcams idèntiques. Transformador de 5V per alimentar la Raspberry o Bateria externa. Connexions entre tots els elements del sistema. 1) Abans de començar a programar, és important tenir tot el sistema connectat entre si, tal i com es pot veure en la següent il·lustració. Figura 54: Esquema del Sistema d’obtenció d’imatges 3D 2) Un cop connectat tot el sistema, hem de comprovar que la Raspberry Pi detecti perfectament les dues webcams i l’Arduino. Per saber quins dispositius hi ha connectats a la RPi hem d’escriure a la terminal : lsusb Figura 55: Connexions als ports USB de la Raspberry Pi Codi del programa del Controlador. Arribats aquest punt, ja podem escriure el codi del programa. A continuació us deixem el codi sencer python del programa comentat: # -*- coding: utf-8 -*- import serial #Per la connexio amb Arduino import os #Per fer peticions al sistema central
56 from threading import Thread # Un Thread per cada webcam arduino = serial.Serial('/dev/ttyACM0', 9600) #Connexió al port Serial d'Arduino print(""" ######TFG-Sistema de Visualització 3D###### Autor: Gerard Alvarez Bruach Universitat: UPC-ETSETB ########################################### Programa d'obtenció d'estereogrames...""") while True: print(" ") comanda = raw_input('Introdueix comanda-> Motor(M)/Fotos(F)/Visor(V)/Ajuda(A): ') #Llegeix de valor / Menu principal if comanda == 'A' or comanda == 'a': # Obre la pestanya d'ajuda print(""" *********** AJUDA ************ Descripció de les diferents comandes: ->Motor(M): Serveix per rotar el sistema. S'han d'introduir valors enters per realitzar el gir. ## NOTA1: El motor només girarà si s'introdueixen valors numerics. En el cas contrari, el motor romandra apagat. ## NOTA2: Si s'escriu '00' es torna al Menu Principal. ->Fotos(F): El programa fa dues fotografies per ser vistes en 3D amb l'estereoscopi de reflexió ##NOTA: Aquestes fotografies seran visualitzades a la web "192.168.2.113/index2.py"## ->Visor: El programa et permet veure el parell d'estereogrames que s'han guardat al sistema. ****************************** """) elif comanda == 'M' or comanda == 'm': # Obre el controlador del motor print(" ") gir = raw_input('VALORS NUMERICS-> Gir del sistema: ') # Introduccio dels graus de gir del motor while gir != '00': # No surts al menu principal fins que no escrius 00 arduino.write(gir) # dóna al Arduino el valor en graus escrit print(" ") gir = raw_input('VALORS NUMERICS-> Gir del sistema: ') elif comanda == 'F' or comanda == 'f': # Fa les fotografies amb les webcam print(" ")
57 os.system("fswebcam -d /dev/video0 -r 720x720 img/FotoE.jpeg") # Obtencio fotografia Ull esquerra i la diposita a la carpeta "img" os.system("fswebcam -d /dev/video1 -r 720x720 img/FotoD.jpeg") # Obtencio fotografia Ull dret i la diposita a la carpeta "img" print(" ") print("S'han obtingut els esteogrames correctament!") surt = '0' while surt == '0': guarda = raw_input('Vols guardar els estereogrames?[S/N]: ') # Comanda per guardar permanentment els estereogrames o no. if guarda == 'S' or guarda == 's': print(" ") nom_estereograma = raw_input('Nom dels esteogrames: ') # Nom amb el que vols guardar els estereogrames os.system("mkdir "+nom_estereograma+"") # Creació d'una carpeta amb el nom indicat on es deseen les fotos obtigudes os.system("mv "+nom_estereograma+" img/guardades") # Movem la carpeta al directori "img/guardades" os.system("cp img/FotoE.jpeg img/guardades/"+nom_estereograma+"/"+nom_estereograma+"E.jpeg") # La FotoE.jpeg ara es diu amb el nom que hagis guardat + E os.system("cp img/FotoD.jpeg img/guardades/"+nom_estereograma+"/"+nom_estereograma+"D.jpeg") # La FotoD.jpeg ara es diu amb el nom que hagis guardat + D print("Esteogrames guardats correctament") surt = '1' elif guarda == 'N' or guarda == 'n': surt = '1' else: print("Comanda incorrecte.") # Si no escrius S/N no surt del programa per tal que no perdis les fotos si encara les volies elif comanda == 'V' or comanda == 'v': # Et carrega un parell d'estereogrames que hagis guardat anteriorment print(" ") os.system("ls img/guardades") # Et mostra el nom de tots els parells d'estereogrames que tens guardats print(" ") select = raw_input('Quins estereogrames vols veure?: ') # Et llegeix el nom dels estereogrames a veure os.system("cp img/guardades/"+select+"/"+select+"E.jpeg img/FotoE.jpeg") # Et copia la imatge Esquerra i te la col·loca al menu de visualització os.system("cp img/guardades/"+select+"/"+select+"D.jpeg img/FotoD.jpeg") # Et copia la imatge Esquerra i te la col·loca al menu de visualització print("Ja es poden visualitzar els estereogrames") print(" ") else: print(" ") print("No s'ha introduit una comanda vàlida.") arduino.close() # Tanquem l'Arduino
58 Annex E – Plànols AutoCAD de l’estereoscopi de reflexió:
59
60
61
62
63
64
71 .mdl-cell { box-sizing: border-box; height: 200px; padding-left: 8px; padding-top: 4px; color: white; margin: 0 auto; } .visor { background-color: #FFFFFF; } .streaming-visor .mdl-grid:first-of-type .mdl-cell { height: 50vh; } .labels-container { margin: 0 auto; width: 400px; } .mdl-textfield.mdl-js-textfield { color: black; } .info { height: auto; color: black; } .info h4 { position: relative; top: -15px; color: #999; } .about { padding-top: 40px; height: auto; color: black; } .profile-image, .profile-image img { height: 250px; width: 250px; background: #dedede; margin: 0 auto; border-radius: 100%; } .about h4 { margin: 0 auto; width: 250px; padding-top: 15px; }
72 .about h5 { margin: 0 auto; width: 250px; padding-top: 10px; color: #999; } .about p { padding-top: 20px; margin: 0 auto; width: 250px; }
73 Llista de Figures Figura 1: Estructura del projecte .......................................................................................... 4 Figura 2: Diagrama de Gantt ................................................................................................ 2 Figura 3: Visites a la Facultat d’Òptica i Optometria de Terrassa (FOOT – UPC) ............. 7 Figura 4: Part de l’ull humà .................................................................................................. 8 Figura 5: Percepcions per ombres projectades ................................................................... 8 Figura 6: Càlcul de la Disparitat Binocular ........................................................................... 9 Figura 7: Howard Dolman, aparell per calcular l’AVE ....................................................... 11 Figura 8: Càlcul aproximat de l’estereoagudesa (AVE) .................................................... 12 Figura 9: Visió frontal del Howard Dolman ........................................................................ 12 Figura 10: Interpupil·lòmetre .............................................................................................. 13 Figura 11: Obtenció de les diferencies de distàncies ........................................................ 13 Figura 12: Gràfic amb els resultats de l’AVE obtinguts ..................................................... 14 Figura 13: Programa de càlcul de les dimensions del píxel a la pantalla............................14 Figura 14: Estereogrames .................................................................................................. 15 Figura 15: Correcte obtenció dels estereogrames ............................................................ 16 Figura 16: Diagrama de blocs del sistema ........................................................................ 17 Figura 17: Arduino UNO ..................................................................................................... 19 Figura 18: Cronograma del motor NEMA 17 ..................................................................... 21 Figura 19: Raspberry Pi 3 .................................................................................................. 22 Figura 20: Connexió inàlambrica Raspberry Pi amb l’ordinador ....................................... 23 Figura 21: Menú principal del controlador ......................................................................... 24 Figura 22: Principi de funcionament dels estereoscopis ................................................... 25 Figura 23: Longituds d’ona del color Cian i Vermell .......................................................... 26 Figura 24: Estereograma anaglífic ..................................................................................... 26 Figura 25: Estereogrames polaritzats ................................................................................ 27 Figura 26: Ona electromagnètica polaritzada .................................................................... 27 Figura 27: Ona circular polaritzada .................................................................................... 28 Figura 28: Estereoscopi d’imatges separades .................................................................. 28 Figura 29: Principi de funcionament dels estereoscopis de reflexió ................................. 29 Figura 30: Resultats del programa BEAM4 ....................................................................... 30 Figura 31: Simulació miralls BEAM4 .................................................................................. 30 Figura 32: Posicionament dels miralls ............................................................................... 31
74 Figura 33: Primer prototip de l’estereoscopi ...................................................................... 31 Figura 34: Estereoscopi de Reflexió, versió final .............................................................. 32 Figura 35: Nintendo 3DS .................................................................................................... 32 Figura 36: Funcionament del sistema paral·làctic ............................................................. 33 Figura 37: Link per executar la pàgina web ....................................................................... 35 Figura 38: Diferents pestanyes de la pàgina web ............................................................. 36 Figura 39: Sistema de visualització 3D (Portàtil + Estereoscopi) ..................................... 37 Figura 40: Sistema de visualització 3D (Tablet + Estereoscopi) ....................................... 37 Figura 41: Sistema de visualització 3D (Smartphone + Ulleres de Realitat Virtual) ......... 38 Figura 42: Sistema d’obtenció d’estereogrames (Webcams + Motor NEMA 17) ............. 38 Figura 43: Sistema d’obtenció d’estereogrames (Raspberry Pi + Arduino + Driver) ........ 39 Figura 44: Sistema d’obtenció dels estereogrames (Complet) ......................................... 39 Figura 45: Esquema de connexions electròniques entre Arduino, Driver i NEMA17 ....... 47 Figura 46: Diagrama de connexions funcional entre components .................................... 48 Figura 47: Sistema Operatiu Raspian ................................................................................ 50 Figura 48: Sistema de carrega de Raspian ....................................................................... 51 Figura 49: Escritori Raspian connexió WIFI ...................................................................... 51 Figura 50: Adreça IP Raspberry Pi .................................................................................... 52 Figura 51: Descarrega de PuTTY ...................................................................................... 52 Figura 52: Menú principal PuTTY ...................................................................................... 53 Figura 53: Connexió SSH amb Raspberry Pi .................................................................... 53 Figura 54: Esquema del Sistema d’obtenció d’imatges 3D ............................................... 55 Figura 55: Connexions als ports USB de la Raspberry Pi................................................. 55 Plànols AutoCAD Estereoscopi: Vistes generals del conjunt i elements .......................... 58 Plànols AutoCAD Estereoscopi: Detalls interns del muntatge dels elements .................. 59 Plànols AutoCAD Estereoscopi: Tapa superior i inferior ................................................... 60 Plànols AutoCAD Estereoscopi: Frontal ............................................................................ 61 Plànols AutoCAD Estereoscopi: Tapes posteriors i laterals.............................................. 62 Plànols AutoCAD Estereoscopi: Miralls ............................................................................. 63 Plànols AutoCAD Estereoscopi: Palanques de gir miralls i frontissa miralls .................... 64 Plànols AutoCAD Estereoscopi: Suports de mirall i suport d’unió del conjunt ................. 65 Plànols AutoCAD Estereoscopi: Posicionament dels miralls ............................................ 66
75 Llista de Taules: Taula 1: Variables per al càlcul de l’AVE ........................................................................... 11 Taula 2: Passos d’un motor bipolar ................................................................................... 20 Taula 3: Variables per a la construcció de l’estereoscopi ................................................. 31 Taula 4: Costos del projecte .............................................................................................. 40 Taula 5: Resultats de les mesures a la població ............................................................... 46