Publicat el

Escaneig 3D partint de fotografies (2)

Pedres escanejades a la Vall de Santa Magdalena

A l‘entrada introductòria a aquesta temàtica comentava que no va ser fàcil trobar una solució de programari lliure per a l’escaneig 3D. Finalment vaig acabar descobrint Python Photogrammetry Toolbox (PPT) que és l’eina que he fet servir fins ara. Està basada en Bundler i tot i que sembla que no funciona bé a Debian 8 Jessie, a Debian 7 Wheezy no hauríem de tenir cap problema. Aquest i altres programes que utilitzen la tècnica fotogramètrica per a la reconstrucció 3D són disponibles a una distribució especialitzada en temes d’arqueologia que es diu Archeos.

La documentació sobre com fer-lo servir era força dispersa i que en parli ara té a veure amb això, en part, ja que vull posar per escrit tota una sèrie de passos que no són obvis però sí necessaris per tal d’obtenir un bon model 3D ben texturitzat d’allò que escanegem. En aquest primer article, però, ens limitarem a l’ús de PPT-GUI, i deixarem per a una segona part explicar com processem els núvols de punts generats i les fotografies originals a Meshlab. Seguint el procés que estic cobrint amb aquests articles he fet alguns assajos tot escanejant roques. A més del que ja mostrava a l’anterior article, aquí hi ha un altre vídeo amb uns altres resultats:

Com que hi pot haver algunes omissions i tampoc vull ser exhaustiu en tots els aspectes, tingues present que al final de l’article podràs trobar els enllaços a les pàgines que, en part, s’han utilitzat per a generar aquesta documentació. Allà hi podràs trobar més informació complementària.

  • No tinc clar en quin estat de desenvolupament es troba Pyhton Photogrammetry Toolbox, ja que han aparegut altres programaris també lliures . No obstant, encara es pot descarregar amb normalitat des d’aquest enllaç present a aquesta pàgina. Per les proves que he fet fins ara, només funciona a versions de Debian fins Wheezy (7). Fa poc vaig tenir l’ocasió de provar-ho a un sistema Windows 10 i funciona bé. Si algun dels enllaços no funcionés, pots utilitzar la Wayback Machine o, en el pitjor dels casos, podria penjar els paquets que vaig descarregar jo mateix.
  • Relacionat o essent part d’aquest projecte, pots visitar aquesta pàgina de Google Code des de la qual també es pot descarregar pràcticament el mateix. Veuràs que el projecte també rep el nom de osm-bundler ja que es va desenvolupar bastant amb vista a l’ús dins d’Open Street Map.
  • Els avantatges que els desenvolupadors destaquen del projecte són:
    • que és 100% basat en programari lliure (moltes altres solucions fotogramètriques no ho són i tenen algunes clàusules que dissuadeixen els usos comercials d’aquesta tecnologia)
    • que en estar basat en Python, per raons que no acabo de comprendre del tot, el programa és més senzill d’utilitzar independentment de la plataforma i altres condicionants.

En cas que t’hagis descarregat osm-bundler_64bit.tar.gz des del primer enllaç de museidironzone.it, només caldria descomprimir-ho i executar l’arxiu ppt_gui_start que hi ha dins la carpeta osm-bundler > linux

  • Et recomano que utilitzis el terminal per a executar el programa. D’aquesta manera podràs veure missatges dels quals és interessant tenir constància.
  • Per a fer-ho, obre un terminal, accedeix a la carpeta linux dins d’osm-bundler i allà tecleges

./ppt_gui_start

  • Si no et funcionés, assegura’t que la ruta d’accés al programa (ppt_gui.py) que hi ha dins aquest script és correcta.
  • Si encara així no et funcionés, podria ser que tinguessis un problema de dependències no satisfetes, ja que el programa es basa en altres llibreries i tecnologies per a funcionar. Fes una ullada a la pàgina de Google Code o al Wiki d’OpenStreetMap on es parla sobre això. Tampoc oblidis llegir tots els arxius Readme que hi hagi juntament amb les descàrregues, per a tenir una visió global de la qüestió.

Un altre dels avantatges d’aquesta eina és que ens ofereix una interfície gràfica per a treballar a aquells qui no estem tan acostumats a l’ús de les eines a través del terminal de comandes.

Si el programa se’ns executa satisfactòriament ens hauria d’aparèixer una finestra com aquesta:

Finestra de diàleg del programa osm-bundler
Finestra de diàleg del programa osm-bundler

Les tres pestanyes que ens interessen de les quatre que hi ha són les següents:

  1. 1. Run Bundler
  2. or run PVMS without CMVS
  3. Check camera database
  1. Primer de tot anirem a Check Camera database i a través del botó corresponent seleccionarem la carpeta de les fotografies que volem utilitzar per a reconstruir el model 3D. Un cop triada la carpeta, farem clic al botó Run que tenim dins la mateixa pestanya. Aparentment no hi haurà cap canvi a la finestra; és per això que hem engegat el programa a través del terminal, ja que si el mires allà podràs observar que, si tot ha anat bé, ens ha de sortir el missatge Camera is already inserted into the database.
  2. Selecciona la ruta de la carpeta que tot just acabem de seleccionar i fes Ctrl+C per a copiar-la
  3. Després d’això anirem a la primera pestanya Run Bundler. Allà enganxa dins el camp path la ruta que has copiat al pas anterior.
  4. Marca la casella Scale Photos with a Scaling Factor i, per a un escaneig de la màxima qualitat, deixa al seu estat per defecte el valor 1.
  5. Fes clic a Run. Durant els minuts següents (que poden ser pocs o molts, en funció del nombre de fotografies i la complexitat del model inferit) es calcularà el núvol de punts.
  6. Veuràs que el càlcul ha finalitzat quan al terminal aparegui el missatge Finished! See the results in the ‘/tmp/una_carpeta_impronunciable’ directory. Molt probablement, aquesta mateixa carpeta se t’obrirà dins dels gestor d’arxius Nautilus.
  7. Ara que s’ha generat la carpeta, si vols la pots retallar i emportar-te-la a una ubicació personalitzada, o seguir-la tenint al directori /tmp. Sigui quina sigui la ubicació on la tinguis, copia aquesta ruta perquè la necessitarem al pas següent.
  8. Ara anem a la pestanya or run PVMS without CMVS, la tercera per l’esquerra. Allà marquem l’opció Use directly PMVS2 (without CMVS).
  9. Al camp on posa path hi enganxem la ruta que hem copiat fa un moment (o bé l’anem a buscar tot utilitzant el botó Select Bundler Output Path. Fem clic a Run
  10. Quan el procés finalitzi, veuràs que dins la carpeta de treball se n’hi ha generat una altra pvms, que al seu temps conté una carpeta models. Si tot ha anat bé, hi ha d’haver un arxiu que és el núvols de punts generat: pmvs_options.txt.ply.

Aquest arxiu de núvol de punts el pots obrir a Meshlab (dins un projecte nou ja creat, i tot utilitzant File > Import Mesh) i et podràs fer una primera idea de com ha quedat. Al proper post veurem com podem editar dins de Meshlab aquest núvol de punts per a convertir-lo en una malla, i com texturitzar aquesta malla i exportar-la per a fer-la servir en una aplicació externa, com per exemple Blender.

Fonts d’informació utilitzades per a elaborar aquest article

Save

Save

Save

Save

Save

Save

Save

Save

Save

Publicat el

Escaneig 3D partint de fotografies (1)

La possibilitat d’escanejar en 3D objectes i elements del món real m’ha atret des de fa temps. Després d’anar-me assabentant d’algunes tècniques i fent provatures amb les que em resultaven accessibles, no va ser fins l’any passat que vaig poder utilitzar satisfactòriament una eina que utilitza un mètode fotogramètric per a la reconstrucció 3D. És el Python Photogrammetry Toolbox, PPT. En un proper article en parlaré amb més profunditat.

Què és la fotogrametria

La fotogrametria és una tècnica que ja fa molt de temps que existeix i que serveix per a extreure dades mètriques, dimensionals, partint de documents fotogràfics. La comparació geomètrica/matemàtica de com es mostren uns mateixos elements a dues o més fotografies, preses des de posicions més o menys diferents, ens permet obtenir aquestes dades. S’utilitza de manera significativa en camps com la cartografia. En aquest cas, a partir de dues fotografies aèries d’una mateixa zona podem calcular-hi distàncies o reconstruir el relleu.

Visió general del procés

1. Creació del núvol de punts

Això és el que veurem en el proper article i és en això precisament que ens assisteix el programa PPT. A partir de l’anàlisi de les fotografies i per cada característica del relleu detectada, el programa crea un punt a l’espai 3D virtual. Cada un d’aquests punts té el color del pixel que hi ha a la posició interpretada i forma el que anomenem un núvol de punts. Tot i que en el programa veurem alguns noms una mica estranys, aquesta part del procés és la més senzilla i on hi ha menys possibilitats que nosaltres o l’ordinador ens equivoquem.

2. Procés del núvol de punts

Els núvols de punts poden ser més o menys densos, però normalment són quelcom complex de treballar amb un programa convencional de 3D i per això existeixen programes específics com Meshlab. Aquests programes ens permeten treballar de manera àgil amb grans quantitats d’informació i, entre altres coses, convertir els núvols de punts en malles que ja podem utilitzar dins un programa de 3D convencional com Blender.

Aquesta part és una mica més complicada, ja que tenim més opcions, i per tant també més possibilitats d’equivocar-nos. En un altre article veurem la proposta de procés que a mi m’ha funcionat.

Resultats del procés

Aquest és el primer dels dos articles que de moment publico sobre aquest tema. Aquí pots llegir el segon, on explico amb detall com es genera el núvol de punts tot utilitzant l’eina Python Photogrammetry Toolbox.