Academia.eduAcademia.edu

Meshroom - Manual tradus în limba română - iunie 2020

2020

Varianta preluată din engleză, în luna iunie 2020: https://meshroom-manual.readthedocs.io/en/latest/index.html --- Meshroom este un software gratuit, Open-Source de reconstrucție 3D bazat pe un framework realizat de AliceVision. AliceVision este un Photogrammetric Computer Vision Framework care oferă algoritmi de reconstrucție 3D și Urmărirea camerei de luat vederi. AliceVision vine cu un software puternic și algoritmi implementați pe calculator care pot fi testați, analizați și reutilizați. Proiectul este un rezultat al colaborării dintre mediul academic și industrie pentru a oferi algoritmi de vârf cu robustețea și calitatea necesară pentru utilizarea în producție.

Meshroom Manual https://meshroom-manual.readthedocs.io/en/latest/index.html Cuprins Instalare ...................................................................................................................................... 4 Cerințe ................................................................................................................................................................ 4 Obtinerea Meshroom ......................................................................................................................................... 4 Windows ............................................................................................................................................................. 5 Linux ................................................................................................................................................................... 5 Lansarea unei reconstruiri batch ........................................................................................................................ 7 macOS ................................................................................................................................................................ 7 Docker .............................................................................................................................................................. 10 Interfața grafică cu utilizatorul (GUI) .......................................................................................... 11 Import simplu ................................................................................................................................................... 11 Începerea reconstrucției ................................................................................................................................... 12 Vizualizator 3D ................................................................................................................................................. 13 Reconstrucție îmbunătățită .............................................................................................................................. 13 Reconstrucție live - în timp real ........................................................................................................................ 14 Reconstrucție externă....................................................................................................................................... 16 Parametrii avansați pentru nod ....................................................................................................................... 16 Importarea vechiului proiect Meshroom .......................................................................................................... 16 Testarea Meshroom ................................................................................................................... 18 Reconstrucție: Cât timp durează? .................................................................................................................... 18 Conectare noduri ....................................................................................................................... 20 Grafic implicit ................................................................................................................................................... 20 Cum se folosește Draft Meshing ....................................................................................................................... 20 Panorama graph .............................................................................................................................................. 20 Nod de referință ........................................................................................................................ 21 CameraCalibration ........................................................................................................................................... 21 CameraInit ........................................................................................................................................................ 22 CameraLocalization .......................................................................................................................................... 23 CameraRigCalibration ...................................................................................................................................... 25 CameraRigLocalization ..................................................................................................................................... 28 ConvertSfMFormat ........................................................................................................................................... 29 DepthMap ........................................................................................................................................................ 31 DepthMapFilter ................................................................................................................................................ 34 ExportAnimatedCamera ................................................................................................................................... 34 ExportColoredPointCloud ................................................................................................................................. 35 ExportMatches ................................................................................................................................................. 35 ExportMaya ...................................................................................................................................................... 36 FeatureExtraction ............................................................................................................................................. 37 FeatureMatching .............................................................................................................................................. 38 GlobalSfM ......................................................................................................................................................... 40 HDRIstitching .................................................................................................................................................... 41 ImageMatching ................................................................................................................................................ 42 ImageMatchingMultiSfM ................................................................................................................................. 43 KeyframeSelection ............................................................................................................................................ 44 LDRToHDR ........................................................................................................................................................ 46 MeshDecimate ................................................................................................................................................. 47 MeshDenoising ................................................................................................................................................. 49 MeshFiltering ................................................................................................................................................... 50 MeshResampling .............................................................................................................................................. 51 Meshing ............................................................................................................................................................ 52 PanoramaCompositing ..................................................................................................................................... 55 PanoramaEstimation........................................................................................................................................ 55 PanoramaExternalInfo ..................................................................................................................................... 56 PanoramaWarping ........................................................................................................................................... 57 PrepareDenseScene .......................................................................................................................................... 57 Publish .............................................................................................................................................................. 58 SfMAlingnment................................................................................................................................................. 58 SfMTransfer ...................................................................................................................................................... 60 SfMTransform................................................................................................................................................... 61 SketchfabUpload .............................................................................................................................................. 62 StructureFromMotion ....................................................................................................................................... 63 Texturing .......................................................................................................................................................... 68 Formate acceptate ..................................................................................................................... 69 Formate fișier imagine ..................................................................................................................................... 69 Formate de fișier video ..................................................................................................................................... 69 3D File formats ................................................................................................................................................. 69 Alte formate de fișier ........................................................................................................................................ 69 Tutoriale .................................................................................................................................... 70 Placă turnantă .................................................................................................................................................. 70 Tutorial: Meshroom pentru începători ............................................................................................................. 70 Capturarea ................................................................................................................................ 80 Detalii ............................................................................................................................................................... 80 Tutoriale ........................................................................................................................................................... 80 Construirea Meshroom............................................................................................................... 81 Mediul software ............................................................................................................................................... 81 Obțineți proiectul ............................................................................................................................................. 81 Mai multe .................................................................................................................................. 82 Vizualizarea și editarea modelelor ................................................................................................................... 82 Partajați-vă modelul ......................................................................................................................................... 87 Imprimarea modelului ...................................................................................................................................... 87 Software de tethering ...................................................................................................................................... 87 Proiecte corelate .............................................................................................................................................. 88 Întrebări frecvente de la GH-Wiki ............................................................................................... 89 Blocare program la Meshing ............................................................................................................................ 89 Nodul DepthMap este prea lent ....................................................................................................................... 89 Draft Meshing .................................................................................................................................................. 89 Eroare: Graph is being computed externally .................................................................................................... 90 Imaginile nu se pot importa ............................................................................................................................. 91 Large scale dataset........................................................................................................................................... 91 Multi Camera Rig.............................................................................................................................................. 92 Eroare: This program needs a CUDA Enabled GPU .......................................................................................... 92 Parametri de reconstrucție ............................................................................................................................... 92 StructureFromMotion eșuează ......................................................................................................................... 94 Formate de imagine acceptate ........................................................................................................................ 94 Texturare după re topologie externă ............................................................................................................... 95 Depanare .......................................................................................................................................................... 95 Referinţe ................................................................................................................................... 96 Glosar ........................................................................................................................................ 97 About ........................................................................................................................................ 98 Despre Meshroom ............................................................................................................................................ 98 Despre manual ................................................................................................................................................. 99 Contactați-ne.................................................................................................................................................. 100 Contribuții....................................................................................................................................................... 100 Lista colaboratorilor ....................................................................................................................................... 100 Licenţe ............................................................................................................................................................ 100 Meshroom este un software gratuit, Open-Source de reconstrucție 3D bazat pe un framework realizat de AliceVision. AliceVision este un Photogrammetric Computer Vision Framework care oferă algoritmi de reconstrucție 3D și Urmărirea camerei de luat vederi. AliceVision vine cu un software puternic și algoritmi implementați pe calculator care pot fi testați, analizați și reutilizați. Proiectul este un rezultat al colaborării dintre mediul academic și industrie pentru a oferi algoritmi de vârf cu robustețea și calitatea necesară pentru utilizarea în producție. Instalare Cerințe Cerințe Hardware Avertizare Meshroom necesită o placă GPU NVIDIA cu o capacitate de calcul CUDA > = 2,0 pentru partea MVS. Puteți verifica propriețățile CUDA aici sau pe pagina cu dispozitive NVIDIA. În cazul în care nu aveți un GPU CUDA, puteți utiliza opțiunea de tip meshing draft care utilizează CPU pentru crearea rețelei (meshing). Aici sunt cerințele minime pentru Meshroom: Cerințe minime Sisteme de operare Windows x64, Linux, macOS (sunt necesare câteva modificări) CPU Procesoare recente Intel sau AMD Memorie RAM 8 GB Hard Drive ~400 MB pentru Meshroom + spațiu pentru datele dvs. GPU NVIDIA CUDA- GPU activat (capacitatea de calcul >= 2.0) Pentru a obține performanțe mai bune pe un desktop /laptop, cerințele recomandate sunt: Cerințe recomandate CPU Intel Core i7 sau AMD Ryzen 7 RAM Memory 32 GB Hard Drive 20 GB+ HDD sau SSD GPU NVIDIA GeForce GTX 1070 Cerințe software Meshroom este o aplicație Python și se bazează pe platforma AliceVision. Dacă utilizați binare pre-construit totul este livrat cu pachetul, astfel încât să nu aveți nevoie să instalați nimic altceva. În cazul în care încă intenționați să utilizați sursele, citiți paragraful Software Environment din secțiunea Building Meshroom Obtinerea Meshroom Binare pre-construite Binarele Meshroom pentru platformele Windows și Linux pot fi descărcate de la https://alicevision.github.io/#meshroom Binarele preconstruite de pe această pagină sunt pachete all-in-one, inclusiv AliceVision și toate resursele necesare. Notă Versiunea preconstruită a Meshroom nu poate include toate caracteristicile versiunii dezvoltatorului. Vă rugăm să verificați notele despre versiune pentru mai multe informații. Din surse Dacă doriți să rulați cea mai recentă versiune de Meshroom (sau o versiune personalizată de dezvoltatori), aveți nevoie să obțineți sursele. Accesați secțiunea Building Meshroom. Windows 1. Descărcați Meshroom de pe pagina de pornire Meshroom. 2. Extrageți fișierul ZIP într-un folder la alegere 3. Puteți începe Meshroom făcând clic pe executabil. Nu este necesară o instalare suplimentară. Notă Nu rulați Meshroom ca Admin. Acest lucru va dezactiva tehnica drag-and-drop. Linux 1. Descărcați binarul de pe pagina de pornire Meshroom. 2. Dezarhivați-l în orice folder. 3. Deschideți un terminal și din acest folder executați: ./Meshroom pentru a lansa interfața grafică - GUI. Binarele pre-construite conțin, de asemenea, meshroom_compute meshroom_photogrammetry pentru a rula și a crea conducte din linia de comandă. și Configurarea mediului Meshroom funcționează pe platforma AliceVision și trebuie să aveți configurat programul AliceVision în PATH și LD_LIBRARY_PATH . Calea - PATH trebuie să conțină folderul în care pot fi găsite binarele AliveVision. Presupunând că ALICEVISION_INSTALL conține directorul în care este instalată biblioteca, calea va fi PATH=$PATH:${ALICEVISION_INSTALL}/bin Notă Pe unele distribuții (de exemplu, Ubuntu), este posibil să aveți conflicte între driverele native și driverele mesa, iar rezultatul este o fereastră neagră goală. În acest caz, trebuie să forțați utilizarea driverelor native prin adăugarea acestora la calea către bibliotecă LD_LIBRARY_PATH : LD_LIBRARY_PATH=/usr/lib/nvidia-340:$LD_LIBRARY_PATH Poate fi necesar să configurați folderul driverului (de exemplu. 330 , 350 etc..). /usr/lib/nvidia-340 Vă sugerăm să creați un fișier bash executabil meshroom pentru a ușura sarcina: meshroom.sh cu versiunea corectă a în rădăcina folderului #!/bin/bash # acest lucru ar trebui să arate spre dosarul de instalare al AliceVision, pentru binarele pre-construite # cum ar fi calea completă a folderului AliceVision export ALICEVISION_INSTALL=/calea/catre/aliceVision # dacă utilizați plugin-uri, aici listati toate căile pentru a le găsi # pentru binare pre-construit scrieti calea completă la folderul qtPlugins/qml/ export QML2_IMPORT_PATH=/path/to/qmlAlembic/build/install/qml:/path/to/QtAliceVision/build/install /qml:/path/to/QtOIIO/build/install/qml/:$QML2_IMPORT_PATH # locația bazei de date a senzorilor export ALICEVISION_SENSOR_DB=${ALICEVISION_INSTALL}/share/aliceVision/cameraSensors.db # ajusta în funcție de driver și versiunea Cuda export LD_LIBRARY_PATH=${ALICEVISION_INSTALL}/lib:/usr/lib/nvidia-384:/usr/local/cuda8.0/lib64/:$LD_LIBRARY_PATH # calea la Meshroom (directorul curent) export MESHROOMPATH=$PWD # această linie lansa orice script-ul și opțiunile relevante, care sunt date ca intrare ($@) PYTHONPATH=${MESHROOMPATH} PATH=$PATH:${ALICEVISION_INSTALL}/bin python ${MESHROOMPATH}/$@ Apoi, puteți crea, de asemenea, un executabil meshroom_ui.sh pentru a lansa GUI: #!/bin/bash ./meshroom.sh meshroom/ui $@ Nu uitați să faceți cele două fișiere executabile: chmod +x meshroom.sh meshroom_ui.sh Lansarea interfeței cu utilizatorul Pentru a lansa interfața cu utilizatorul pur și simplu utilizați script-ul shell anterior: # lansarea interfetei grafice - gui ./meshroom_ui # lansarea gui cu, de exemplu, un anumit proiect ./meshroom_ui --project myProject.mg # lansarea cu instructiunea --help pentru lista de parametri suportati ./meshroom_ui –help Lansarea unei reconstruiri batch Puteți executa doar un proiect sau lansa o reconstrucție fără interfața grafică. Acest lucru se poate face folosind script-uri python meshroom_compute și meshroom_photogrammetry . În mod similar cu meshroom_ui.sh puteți crea script-uri shell pentru meshroom_compute.sh și meshroom_photogrammetry.sh , înlocuind meshroom/ui cu bin/meshroom_compute și, respectiv bin/meshroom_photogrammetry . Pentru meshroom_compute.sh #!/bin/bash ./meshroom.sh bin/meshroom_compute $@ și pentru meshroom_photogrammetry.sh #!/bin/bash ./meshroom.sh bin/meshroom_photogrammetry $@ Din nou, parsați parametrul --help pentru a lista documentația și lista de parametri. macOS Cele mai multe dintre stațiile de lucru macOS nu au nici placi grafice NVIDIA, prin urmare, acestea nu pot rula CUDA, pentru partea MVS. Deci, compilarea și utilizarea Meshroom nu este chiar simplă. Cu toate acestea, Ryan Baumann și-a compilat propriul Homebrew tap care include formulele necesare, și puteți folosi această postare pentru a înțelege cum se poate folosi. Rețineți că acest lucru este conceput ca un prim pas pentru utilizatorii de Mac care doresc să experimenteze cu și să îmbunătățească programul AliceVision/Meshroom, și, ca urmare, aceste instrucțiuni pot deveni depășite cu timpul. Cerințe de sistem În primul rând, computerul Mac va avea nevoie în prezent de un procesor grafic GPU NVIDIA cu o capacitate de calcul CUDA de 2,0 sau mai mare. Aceasta este, probabil, o parte destul de mică din toate Mac-urile disponibile, dar puteți verifica ce procesor GPU are căutând "About thist Mac" din pictograma Apple în colțul din stânga sus a ecranului, sub "Graphics". Dacă aveți un procesor NVIDIA GPU listat aici, puteți verifica capacitatea sa de calcul pe pagina NVIDIA CUDA GPU. În al doilea rând, va trebui să instalați ultima versiune a pachetului CUDA. În momentul scrierii articolului (copiat de pe sait în ianuarie 2020), ultima versiune este CUDA 10.1, care este compatibilă oficial cu OS X 10.13 (High Sierra), astfel încât este necesar să faceți upgrade la cea mai recentă versiune de High Sierra (dar nu Mojave!) dacă nu ați făcut-o deja. Pe lângă aceasta, se sugerează, de asemenea, să se instaleze cel mai recent driver web NVIDIA CUDA GPU, care, în acest moment este 387.10.10.10.40.118. În al treilea rând, CUDA 10.1 este compatibilă numai cu versiunea de ``clang` distribuită cu Xcode 10.1 <https://docs.nvidia.com/cuda/cuda-installation-guide-macos-x/index.html>`__, și va refuza să fie compilată cu orice altceva. Este posibil să aveți instalată o versiune mai veche sau mai nouă de Xcode. La momentul scrierii articolului, dacă ați actualizat Xcode cu actualizarea completă a OS X, aveți Xcode 10.1. Pentru a reveni la Xcode 10.1, ceea ce puteți face este să mergeți la pagina de descărcare Apple Developer (pentru care veți avea nevoie de un cont gratuit pentru dezvoltatori Apple), apoi să căutați “Xcode 10.1”, apoi să instalați pachetul Command Line Tools for Xcode 10.1 pentru versiunea OS instalată. După instalare, rulați sudo xcode-select --switch /Library/Developer/CommandLineTools apoi verificați dacă versiunea clang --version afișează Apple LLVM version 10.0.0 . După ce ați făcut toate acestea, puteți verifica o instalare CUDA de lucru accesând /Developer/NVIDIA/CUDA-10.1/samples/1_Utilities/deviceQuery și executând sudo make && ./deviceQuery , care ar trebui să vă dea informații despre GPU. Dacă nu este construit corect (adică vedeți mesajul nvcc fatal : The version ('??.?') of the host compiler ('Apple clang') is not supported ), sau erori deviceQuery sau nu este listat GPU de pe computer, reluați pașii descriși mai sus și verificați dacă totul este actualizat (puteți verifica, de asemenea, panoul CUDA din System Preferences). Următoarele instrucțiuni descriu instalarea Homebrew. Instalare pe macOS Dacă ați urmat toate instrucțiunile și cerințele de configurare de mai sus, instalarea bibliotecilor/cadrului AliceVision ar trebui să fie simplă: brew install ryanfb/alicevision/alicevision Instalarea și folosirea Meshroom Acest tutorial nu oferă o formulă Homebrew pentru pachetul Meshroom propriu-zis, deoarece folosește tot Python și nu pare deosebit de dificil de a instala / utilizarea odată ce AliceVision este instalat și funcționează corect. Doar urmați instrucțiunile de instalare (pentru configurarea/instalarea Python specifică am utilizat-o pip3 în loc de pip și python3 în loc de python ): wget 'https://github.com/alicevision/meshroom/archive/v2019.1.0.zip' unzip v2019.1.0.zip cd meshroom-2019.1.0 pip install -r requirements.txt Notă Binarele AliceVision legate de CUDA, invocate de Meshroom, nu găsesc automat bibliotecile CUDA pe calea DYLD_LIBRARY_PATH , și setarea DYLD_LIBRARY_PATH din shell care lansează Meshroom nu pare să primească variabila transmisă în mediul shell Meshroom utilizat pentru transmitere comenzi. Fără aceasta, veți obține o eroare ca: dyld: Library not loaded: @rpath/libcudart.10.1.dylib Referenced from: /usr/local/bin/aliceVision_depthMapEstimation Reason: image not found Pentru a evita eroarea, puteți lega - symlink bibliotecile CUDA la /usr/local/lib (cele mai multe dintre celelalte rezolvări le-am găsit prin modificarea permanentă a DYLD_LIBRARY_PATH simplă):1 care pare mai confuză sau mai fragilă decât această abordare mai for i in /Developer/NVIDIA/CUDA-10.1/lib/*.a /Developer/NVIDIA/CUDA-10.1/lib/*.dylib; do ln -sv "$i" "/usr/local/lib/$(baseNume "$i")"; done Puteți anula/dezinstala acest lucru cu: for i in /Developer/NVIDIA/CUDA-10.1/lib/*.a /Developer/NVIDIA/CUDA-10.1/lib/*.dylib; do rm -v "/usr/local/lib/$(baseNume "$i")"; done De asemenea, poate doriți să descărcați setul de date voctree: curl 'https://gitlab.com/alicevision/trainedVocabularyTreeData/raw/master/vlfeat_K80L3.SIFT.tree ' -o /usr/local/Cellar/alicevision/2.1.0/share/aliceVision/vlfeat_K80L3.SIFT.tree Apoi lansați cu: ALICEVISION_SENSOR_DB=/usr/local/Cellar/alicevision/2.1.0/share/aliceVision/cameraSensors.d b ALICEVISION_VOCTREE=/usr/local/Cellar/alicevision/2.1.0/share/aliceVision/vlfeat_K80L3.SIFT .tree PYTHONPATH=$PWD python meshroom/ui Importul unor fotografii, clic pe “Start”, așteptați un timp, și sperăm că ar trebui să se încheie cu o rețea reconstruită și texturată (iată un exemplu propriu pe care l-am încărcat pe SketchFab). În mod implicit, rezultatul reconstrucției se află în MeshroomCache/Texturing/ (în raport cu locul în care ați salvat fișierul de proiect). Când lansați Meshroom fără sudo, calea temp va fi ceva de genul: Când începeți cu sudo, calea implicită va fi /tmp/MeshroomCache. Docker O imagine oficială a Meshroom poate fi găsită pe Docker Hub. Informațiile relevante despre Dockerfile pot fi găsite în root directory of the sources Imaginea se bazează pe docker NVIDIA care trebuie să fie instalat. Puteți urmări tutorialul oficial NVIDIA aici. Pentru a executa imaginea docker: docker pull alicevision:meshroom docker run -it --runtime=nvidia meshroom Interfața grafică cu utilizatorul (GUI) Când porniți pentru prima dată Meshroom, se deschid două ferestre: • fereastra de interfață linie de comandă (Aveți posibilitatea să ignorați sau să minimizați această fereastră. Nu închideți această fereastră pentru că se va închide și Meshroom). • principala interfață grafică cu utilizatorul (GUI) cu panouri diferite: Menu bar: File / View / About Start/Pause/Stop/(Submit) processing with progress bar below Images Pane Image Viewer Pane 3D Viewer Pane Graph Editor Pane Graph Editor Properties Pane Cache Folder File Path (where temp files and final results are stored) Puteți apuca o margine de panou panoului. și să o mutați pentru a modifica mărimea Import simplu Folosiți tehnica drag-n-drop pentru a trage imaginile din folderul cu imagini sau întregul folder cu imagini în panoul Images din partea stângă. Puteți previzualiza imaginile din panoul Image Viewer. Pentru a afișa metadatele imaginii, faceți clic pe pictograma (i) din colțul din dreapta jos. Pentru imagini cu informații GPS încorporate, va fi afișat un cadru openstreetmap suplimentar. Notă Dacă imaginile nu vor apărea în panoul Images după ce le-ați importat, aparatul foto nu a fost recunoscut corect. Asigurați-vă că datele EXIF conțin toate informațiile relevante ale camerei. Dacă importul tot nu reușește, aparatul foto nu se află în baza de date sau fișierele imagine nu sunt valide. Începerea reconstrucției Faceți clic pe butonul verde Start pentru a începe procesarea. Pentru a o opri / întrerupe temporar, clic pe butonul Stop. Progresul reconstrucției va fi menținut. Există două bare de progres: linia de sub bara de meniu care indică progresul global iar cealaltă în Graph Editor în cadrul nodurilor (nodes). Pentru a obține un jurnal de progres detaliat, deschideți fereastra CommandLine sau faceți clic pe nodul care vă interesează și accesați fila Log din panoul cu proprietăți al Graph Editor. Puteți deschide (Folderul-Proiectului) MeshroomCache pentru a vedea rezultatul fiecărui nod. (Comandă rapidă: Pictograma și calea din partea din stânga jos a ferestrei principale) Un folder nod conține ieșirea nodului. În mod implicit Meshroom utilizează un ID unic pentru a denumi folderele de ieșire, astfel prevenind suprascrierea datelor și permițând reutilizarea rezultatelor deja calculate ale proiectului. Exemplu: Nu sunteți mulțumit de primul rezultat și efectuați modificări la nodul StructureFromMotion. Noua ieșire va fi plasată sub un alt nume în interiorul folderului StructureFromMotion. Puteți modifica numele folderelor de ieșire ale nodurilor dumneavoastră, făcând clic pe nod și schimbând numele Output Folder din fila Attributes a panoului cu proprietăți Graph Editor. Vizualizator 3D Vizualizatorul 3D va previzualiza SfM Pointcloud, camereși rețea - Mesh. Puteți utiliza mouse-ul sau bara de instrumente de rotire/scalare din partea stângă. Puteți ține apăsată tasta Shift pentru deplasare în scena 3D. Apăsați F pentru a reseta vizualizarea. Dublu-click pentru a crea un nou centru de rotație pentru rețea - Mesh. Pentru a afișa modelul final, în partea de jos apare un buton pentru a încărca modelul (Load model). Debifați stratul SfM pentru o vizualizare mai bună. Pentru a potrivi din nou modelul 3D la noile dimensiuni ale panoului dacă i-ați schimbat dimensiunea, faceți right-click pentru a afișa un meniu cu opțiuni de remontare. În mod implicit, rezultatele StructureFromMotion și Texturing vor fi adăugate la straturile din Scene. Puteți adăuga ieșirile altor variante de nod la Scenă în vizualizatorul 3D Viewer făcând dublu clic pe noduri. Noduri acceptate: StructureFromMotion, Texturing, MeshDecimate, MeshDenoise, MeshResampling 3D Model Modelul 3D final va fi salvat în Project Folder →MeshroomCache → Texturing În mod implicit, acesta va fi salvat în formatul OBJ. Aveți posibilitatea să modificați formatul în setările nodului. Notă În prezent, Meshroom nu acceptă realinierea modelului, astfel încât modelul poate fi orientat cu susul în jos în raport cu grila. Puteți schimba orientarea într-un alt software, cum ar fi Meshlab. Reconstrucție îmbunătățită Folosnd drag-n-drop puteți adăuga imagini suplimentare în partea inferioară a panoului Images, numite Augment Reconstruction. Pentru fiecare lot de imagini, va fi creat un grup nou Group în panoul Images. Puteți prelua loturi succesive de imagini N în panoul Images, iar pentru fiecare lot de imagini graficul se va ramifica. Puteți utiliza această metodă pentru scene complexe cu mai multe obiecte. Notă Imaginile nu pot fi adăugate în timpul procesării Notă Grupurile vor fi îmbinate utilizând nodul ImageMatchingMultiSfM. Citiți descrierea nodului pentru detalii Reconstrucție live - în timp real Reconstrucția live este menită să fie utilizată împreună cu o cameră care poate transfera imagini pe un computer în timp ce fotografiați (folosind wifi, un card wifi sdcard sau Tethering). Meshroom poate verifica dacă în folder apar imagini noi și poate îmbunătăți succesiv versiunile SfM anterioare (point cloud + camera) după fiecare {Min. Images} per Step. Acest lucru permite obținerea unei previzualizări iterative în timp real, de exemplu, pentru a vedea ce zone ale setului de date necesită o acoperire mai mare. Pentru a activa Live Reconstruction accesați bara de meniu View :math:`Rightarrow` Live Reconstruction Apare un panou nou Live Reconstruction sub panoul Images. Pentru fiecare import nou, va fi creat un grup nou Image Group în panoul Images. De asemenea, Graph Editor actualizează desenul, adăugând noduri pentru a procesa imaginile nou adăugate și adăugând nodurile la pipeline. Selectați Image Folder pentru a viziona și minimul de imagini noi care vor fi importate pe pas. Clic Start în panoul Live Reconstruction pentru a începe monitorizarea folderului selectat pentru fișiere noi. Apoi, ar trebui să vedeți în grafic o ramură (de la CameraInit până la StructureFromMotion) pentru fiecare lot de imagini. 1 Procesul de reconstrucție se va opri la ultimul nod procesat StructureFromMotion și nu va trece automat prin restul conductei implicite. Acest lucru este din motive practice. Cloud-ul point se va actualiza în timp real cu imagini nou adăugate. Calcularea nodurilor rețelei pentru fiecare nou lot de imagini nu este eficientă. După ce ați terminat procesul de capturare a imaginii, clic Stop și deconectați nodul PrepareDenseScene de la primul nod StructureFromMotion și conectați-l cu ultimul nod StructureFromMotion. Note Grupurile vor fi îmbinate utilizând nodul ImageMatchingMultiSfM. Citiți descrierea nodului pentru detalii. Un video demo poate fi găsit aici: https://www.youtube.com/watch?v=DazLfZXU_Sk Reconstrucție externă Utilizați această opțiune atunci când calculați extern după trimitere la o fermă de randare din meshroom. (trebuie să aveți acces la o fermă de randare și este nevoie de submitterul corespunzător). În acest fel, puteți face uz de putere de calcul externe. Dacă nu puteți calcula nodurile GPU la nivel local (fără cuda), le puteți trimite. Submitteri disponibili: • Pixar Renderman Tractor • Fireworks (https://materialsproject.github.io/fireworks/) WIP Parametrii avansați pentru nod Acest PR introduce noțiunea de parametri "avansați" pe noduri. Scopul este de a separa atributele experimentale / de depanare / avansate ale utilizatorului final. Pe partea de interfață a utilizatorului, AttributeEditor a fost reproiectat și oferă acum o opțiune suplimentară pentru a afișa/ ascunde acei parametri avansați. Importarea vechiului proiect Meshroom • Proiectele create într-o versiune mai veche de Meshroom pot fi importate. • • • Nodul CameraConnection a fost eliminat în versiunea v2019.1. Trebuie să reconectați nodurile vecine.. Cu o nouă versiune de Meshroom, unele noduri ar putea necesita o actualizare la noua versiune. Proiectele create într-o versiune mai nouă pot deveni incompatibile cu o versiune mai veche. Testarea Meshroom Pentru prima reconstrucție în Meshroom, descărcați Monstree Image Dataset. Puteți previzualiza modelul Monstree pe Sketchfab. Setul de date Monstree este bine realizat, astfel încât nu ar trebui să existe erori sau probleme în timpul reconstrucției. Acest lucru poate fi diferit atunci când utilizați propriul set de date imagine. Importați imaginile în Meshroom glisându-le din panoul Images. Pentru testare, există foldere diferite în setul de date Monstree: complet (toate imaginile), mini6 (6 imagini) și mini3 (3 imagini). Puteți previzualiza imaginile selectate în panoul Image Viewer. Pentru a afișa metadatele imaginii, faceți clic pe pictograma (i) din colțul din dreapta jos. Pentru imagini cu informații GPS încorporate va fi afișat un cadru openstreetmap suplimentar. În Editorul grafic puteți vedea conducta (pipeline) implicită gata de utilizare. Editorul grafic conține nodurile de procesare ale conductei. Pentru acest proiect nu aveți nevoie să schimbați nimic! De fapt, pentru multe proiecte conducta implicită oferă rezultate bune. Puteți mări sau restructura nodurile. Puteți menține tasta Shift pentru a vă deplasa în scenă (pan), folosind mouse-ul. Pentru a insera noduri noi faceți clic dreapta în panoul Editor grafic. Pentru Editorul grafic, utilizați butoanele din partea stângă jos a panoului pentru (re)ordonare. Înainte de a începe reconstrucția, salvați proiectul în folderul Monstree. (FIle? Save As) (HDD ar trebui să aibă suficient spațiu liber.) Reconstrucție: Cât timp durează? Puteți calcula cu 30sec. per imagine pe un computer cu i7@2,9GHz, GTX1070 8GB, 32GB Ram. Performanţă: % din timpul de procesare global cu conducte implicite: ~38% DepthMap / ~24% Meshing În versiunea 2019.1.0, timpul de reconstrucție a fost redus cu ~30% în comparație cu versiunea 2018.1. Mărimea fișierelor din folderul Cache a fost redusă cu 20% Testat cu Monstree Dataset: (compararea numai a timpului de calcul, nu și a calității) Timp de calcul în secunde: (total MR2018 260s / MR2019 185s) (Link la testul Scanbox 2018) Pentru o evaluare completă a conductelor, inclusiv evaluarea “Tanks and Temples” citiți articolul D5.4: Deliver 3D reconstruction benchmarks with dataset disponibil pe https://cordis.europa.eu/project/rcn/205980/results/en in Documents, Reports. Conectare noduri Grafic implicit Conexiunile nodului din default Graph pot fi dificil de înțeles. Următoarele imagini ilustrează modul în care sunt conectate nodurile. Această imagine ilustrează graficul implicit cu conexiuni ale nodurilor pe noduri originale: Cum se folosește Draft Meshing Panorama graph Nod de referință Listează toate nodurile Notă Unii parametri experimentali/de depanare/avansați sunt vizibili doar cu "Advanced Attributes" activat. Pentru a activa "Atribute avansate", faceți clic pe cele trei puncte verticale din colțul din dreapta sus al setărilor nodului și activați caseta de selectare. Unele caracteristici, setări și noduri sunt disponibile numai în cea mai recentă versiune de compilare sau dezvoltator. CameraCalibration Descriere Notă Acest nod necesită AliceVision compilat cu OpenCV. Parametrii interni ai camerei pot fi calibrați din mai multe vizualizări de tip checkerboard. Acest lucru permite a preluarea distanței focale, punctul principal și parametrii de distorsiune. O explicație detaliată este prezentată în [opencvCameraCalibration]. [opencvCameraCalibration] http://docs.opencv.org/3.0beta/doc/tutorials/calib3d/camera_calibration/camera_calibration.html Nume Descriere Input Introducerea imaginilor într-una din următoarele forme: - dosar care conține imagini - secvență de imagini, cum ar fi “/path/to/[email protected]” - fișier video Pattern Tip de model (modele camera calibration) - CHESSBOARD CIRCLES - ASYMMETRICCIRCLES - ASYMMETRICCCTAG Size (Dimensiunea modelului) - Numărul de colțuri interioare pe una din dimensiunea plăcii, cum ar fi Width (7) Height (5) (0-10000) Square Size Dimensiunea celulelor pătrate ale grilei (0-100mm) (1) Nb Distortion Coef Numărul coeficientului de distorsiune (0-5) (3) Max Frames Numărul maxim de cadre de extras din fișierul video (0-5) (0) Calib Grid Size Definirea numărului de celule per margine (0-50) Max Calib Frames Numărul maxim de cadre de utilizat pentru calibrarea cadrelor selectate (0-1000) Min Input Frames Număr minim de cadre pentru a limita bucla de rafinare (0-100) Nume Descriere Max Total Average Error Eroare medie totală maximă (0-1) Debug Rejected Img Folder Folder pentru a exporta imagini șterse în timpul buclei de rafinare Debug Selected Img Folder Folder de exportat imagini de depanare Output Numele fișierului de ieșire pentru parametri intrinseci [și extrinseci] (implicit fileName cameraCalibration.cal) Detalii Modele TABLĂ DE ȘAH https://github.com/artoolkit/artoolkit5/blob/master/doc/patterns/Calibration%20chessboard% 20(A4).pdf Eșantion video de calibrare a tablei de șah https://vimeo.com/141414129 CERCURI CERCURI_ASIMETRICE https://nerian.com/support/resources/patterns/ CCTAG_ASIMETRIC https://github.com/alicevision/CCTag O listă cu alte instrumente de calibrare a camerei și modele poate fi găsită aici https://github.com/natowi/CameraCalibTools CameraInit Descriere - încărcare metadate de imagine și informații senzor. Puteți amesteca mai multe camere și distanțe focale. CameraInit va crea grupuri de intrinseci pe baza imaginilor din metadate. Este încă bine să fie mai multe imagini cu aceeași cameră și aceleași lungimi focale, deoarece adaugă constrângeri pe parametrii camerelor interne. Dar puteți combina mai multe grupuri de imagini, nu va reduce calitatea finală a model.1 Notă: În unele cazuri, unele imagini nu au număr de serie pentru a identifica dispozitivul aparatului foto/obiectivului. Acest lucru face imposibilă gruparea corectă a imaginilor după dispozitiv dacă ați utilizat mai multe dispozitive de cameră identice (același model). Reconstrucția va presupune că a fost folosit un singur dispozitiv, astfel încât, dacă 2 imagini au aceeași aproximare a distanței focale, vor împărtăși aceiași parametri interni ai camerei. Dacă doriți să utilizați mai multe camere, adăugați un număr de serie corespunzător la setările pentru datele EXIF:header: “Name”, “Description” :widths: 15, 30 Viewpoints Input viewpoints (1 Element for each loaded image) - ID - Pose ID Image Path - Intrinsic: Internal Camera Parameters (Intrinsic ID) - Rig (-1 - 200) - Rig Sub-Pose: Rig Sub-Pose Parameters (-1 - 200) - Image Metadata: (lista elementelor de metadate) • Intrinsic Camera Intrinsics (1 Element for each loaded image) - ID - Initial Focal Length: Initial Guess on the Focal Length - Focal Length: Known/Calibrated Focal Length - Camera Type: pinhole’, ‘radial1’, ‘radial3’, ‘brown’, ‘fisheye4’ - #Make: Camera Make (not included in this build, commented out) - #Model: Camera Model - #Sensor Width: Camera Sensor Width - Width: Image Width (0-10000) - Height: Image Height (0-10000) - Serial Number: Device Serial Number (aparat foto și obiectiv combinate) - Principal Point: X (0-10000) Y(0-10000)- DistortionParams: Distortion Parameters - Locked(True/False): Dacă aparatul foto a fost calibrat, parametrii interni ai aparatului foto (intrinseci) pot fi blocați. Acesta ar trebui să îmbunătățească robustețea și accelerarea reconstrucției. Sensor Database Calea bazei de date a senzorului de cameră Default Field Of View Valoare empirică pentru câmpul vizual în grade 45° (0°-180°) Verbose Level nivel de verbositate (fatal, error, warning, info, debug, trace) Output SfMData File …/cameraInit.sfm Notă Problemă: structura de la reconstrucția mișcării pare distorsionată și nu a reușit să alinieze unele grupuri de camere atunci când încarcă imagini fără distanță focală Soluţie: Păstrați valoarea init "Focal lenght" dar setați “Initial Focal Length” la -1 dacă nu sunteți sigur care este valoarea. https://github.com/alicevision/meshroom/issues/434 CameraLocalization Descriere Pe baza rezultatelor SfM, putem efectua localizarea camerei și să recuperăm mișcarea unei camere animate în scena reconstrucției 3D. Acest lucru este foarte util pentru a face reproiectarea texturii în alt program software, ca operație separată de curățare a texturii. Ar putea fi, de asemenea, utilizate pentru a folosi Meshroom ca urmărire camera 3D, ca parte a VFX pipeline. https://alicevision.github.io/#photogrammetry/localization Setări Nume Descriere SfM Data Un fel de fișier sfm_data.json generat de AliceVision Media File Calea la folder sau NumeFisier care va fi urmărit de media Visual Debug Folder Dacă un folder este furnizat permite depanare vizuală și salvează toate informațiile de depanare în acel folder Descriptor Path Folder care conține descriptorii pentru toate imaginile (adică .desc.) Match Desc Types Tipuri de descriptori de utilizat pentru potrivire: sift’, ‘sift*float’, ‘sift*upright’, ‘akaze’, ‘akaze*liop’, ‘akaze*mldb’, ‘cctag3’, ‘cctag4’, ‘sift*ocv’, ‘akaze*ocv Preset Presetare pentru extractorul de caracteristici când se localizează o imagine nouă (low, medium, normal, high, ultra) Resection Estimator Tipul de cadru /sac de utilizat pentru rezecție (acransac, loransac) Matching Estimator Tipul de cadru /sac de utilizat pentru potrivire (acransac, loransac) Calibration Fișier de calibrare Refine Intrinsics Activarea/dezactivarea rafinamentului intrinsec al camerei pentru fiecare imagine localizată Reprojection Error Eroare maximă de reproiecție (în pixeli) permisă pentru rezecție. Dacă este setată la 0 permite ACRansac să aleagă o valoare optimă (0.1 - 50) Nb Image Match [voctree] Număr de imagini de regăsit în baza de date (1 - 1000) Max Results [voctree] Pentru algoritmul AllResults, se oprește imaginea de potrivire atunci când se ajunge la numărul de imagini potrivite. Dacă este 0 este ignorat (1 - 100) Commonviews [voctree] Numărul de imagini minime în care un punct trebuie văzut ca fiind utilizat în urmărirea clusterului (2 - 50) Voctree [voctree] NumeFisier pentru arborele de vocabular Voctree Weights [voctree] NumeFisier pentru greutățile arborelui de vocabular Algorithm [voctree] Tip algoritm: (FirstBest, AllResults) Nume Descriere Matching Error [voctree] Eroare maximă de potrivire (în pixeli) pentru potrivirea imaginilor cu verificarea geometrică. Dacă este setat la 0, permite ACRansac să aleagă o valoare optimă (0 - 50) Nb Frame Buffer Matching [voctree] Numărul cadrului anterior al secvenței de utilizat pentru potrivire (0 = Disable) (0 - 100) Robust Matching [voctree] Activarea/ dezactivarea potrivirii robuste între imaginile de interogare și baza de date, toate potrivirile putative vor fi luate în considerare N Nearest Key Frames [cctag] Număr de imagini de regăsit în baza de date Parametri specifici pentru optimizarea finală (opțională) a ajustării secvenței: (1-100) Global Bundle [bundle adjustment] Dacă –refineIntrinsics nu este setat, această opțiune permite să ruleze o ajustare finală la pachetul global pentru a rafina scena No Distortion [bundle adjustment] Aceasta nu ia în considerare denaturarea în timpul BA, aceasta consideră toți coeficienții de denaturare egali cu zero No BA Refine Intrinsics [bundle adjustment] Nu rafinează intrinsecile în timpul BA Min Point Visibility [bundle adjustment] Numărul minim de observații pe care trebuie să le aibă un punct pentru a fi luat în considerare pentru ajustare (2-50) Output Alembic NumeFisier pentru fișierul de export SfMData (unde vor fi stocate pozițiile camerei) desc.Node.internalFolder + ‘trackedCameras.abc Output JSON NumeFisier pentru rezultatele localizării ca .json desc.Node.internalFolder + ‘trackedCameras.json CameraRigCalibration Descriere Dacă se utilizează o platformă pentru camere, putem efectua calibrarea platformei. Localizăm camerele individual pe întreaga secvență. Apoi folosim toate pozițiile valide pentru a calcula pozițiile relative între camerele platformei și pentru a alege valoarea mai stabilă din imagini. Apoi, vom inițializa rig relativă pune cu această valoare și de a efectua o ajustare globală Bundle pe toate camerele de pe platforma. Când platforma este calibrată, o putem folosi pentru a localiza direct poziția platformei din sistemul sincronizat cu mai multe camere cu abordări [Kneip2014]. Calibrarea platformei găsește pozițiile relative între toate camerele folosite. Este nevoie de un point cloud ca intrare și poate utiliza caracteristicile CCTag și SIFT pentru localizare. Implicația este că toate camerele trebuie să vadă caracteristici (fie SIFT sau CCTag) care fac parte din point cloud, dar ele nu trebuie să respecte / observe regiuni care se suprapun. (Vezi:POPART: Previz for Onset Production Adaptive Realtime Tracking) “Având în vedere poziția cadrului de referință urmărit în raport cu sistemul de captare a mișcării și cadrele optice de referință, este posibilă regăsirea transformării dintre cadrele de referință urmărite și cele optice”1 “În practică, este deosebit de dificil să faci cadrul urmărit să coincidă cu cadrul optic al camerei, astfel încât este necesară o procedură de calibrare pentru a estima această transformare și pentru a obține precizia milimetrică” [Chiodini et al. 2018] [Chiodini et al. 2018] Chiodini, Sebastiano & Pertile, Marco & Giubilato, Riccardo & Salvioli, Federico & Barrera, Marco & Franceschetti, Paola & Debei, Stefano. (2018). Camera Rig Extrinsic Calibration Using a Motion Capture System. 10.1109/MetroAeroSpace.2018.8453603. https://www.researchgate.net/publication/327513182CameraRigExtrinsicCalibration UsingaMotionCapture_System https://alicevision.github.io/#photogrammetry/localization [Kneip2011] A Novel Parametrization of the Perspective-Three-Point Problem for a Direct Computation of Absolute Camera Position and Orientation. L. Kneip, D. Scaramuzza, R. Siegwart. June 2011 [Kneip2013] Using Multi-Camera Systems in Robotics: Efficient Solutions to the NPnP ProblemL. Kneip, P. Furgale, R. Siegwart. May 2013 [Kneip2014] OpenGV: A unified and generalized approach to real-time calibrated geometric vision, L. Kneip, P. Furgale. May 2014. [Kneip2014] Efficient Computation of Relative Pose for Multi-Camera Systems. L. Kneip, H. Li. June 2014 Setări Nume Descriere SfM Data Fișierul sfmData Media Path Calea către fișierul video, folderul secvenței de imagini sau un fișier text (calea către imagine pe fiecare linie) pentru fiecare cameră a platformei (de ex. – mediapath /path/to/cam1.mov /path/to/cam2.mov) Camera Intrinsics Fișierul de calibrare intrinsecă pentru fiecare cameră a platformei. (de ex. –cameraIntrinsics /path/to/calib1.txt /path/to/calib2.txt) Export FileNume pentru fișierul alembic care conține platforma reprezintă cu puncte 3D. De asemenea, salvează un fișier pentru fiecare cameră Numed ‘fileNume.cam##.abc (trackedcameras.abc) Descriptor Path Folderul care conține .desc Match Describer Types Tipurile de descriptor de utilizat pentru potrivirea ‘sift’, ‘sift*float’, ‘sift*upright’, ‘akaze’, ‘akaze*liop’, ‘akaze*mldb’, ‘cctag3’, ‘cctag4’, ‘sift*ocv’, ‘akaze*ocv’ Nume Descriere Preset Presetare pentru extractorul de caracteristici la localizarea unei imagini noi (scăzut, mediu, normal, ridicat, ultra) Resection Estimator Tipul de cadru /sac de utilizat pentru rezecție (acransac Matching Estimator Tipul de cadru /sac de utilizat pentru potrivire (acransac, loransac) Refine Intrinsics Activarea/dezactivarea rafinamentului intrinsec al camerei pentru fiecare imagine localizată Reprojection Error Eroare maximă de reproiecție (în pixeli) permis pentru rezecție. Dacă este setat la 0, permite acransac-ului să selecteze o valoare optimă. (0 - 10) Max Input Frames Numărul maxim de cadre de citit în intrare. 0 înseamnă fără limită (0 - 1000) Voctree [voctree] FileNume pentru arborele de vocabular Voctree Weights [voctree] FileNume pentru greutatea arborelui de vocabular Algorithm [voctree] Tip algoritm: {FirstBest, AllResults} Nb Image Match [voctree] Numărul de imagini de regăsit în baza de date (0 - 50) Max Results [voctree] Pentru algoritm AllResults, oprește potrivirea imaginii atunci când se atinge acest număr de imagini potrivite. Dacă 0 este ignorat (0 - 100) Matching Error [voctree] Eroare maximă de potrivire (în pixeli) permisă pentru potrivirea imaginii cu verificarea geometrică. Dacă este setat la 0, permite ACRansac să selecteze o valoare optimă (0 - 10) N Nearest Key Frames [cctag] Numărul de imagini de regăsit în baza de date (0 - 50) Output File Numele fișierului în care se stochează datele de calibrare (desc.Node.internalFolder + ‘cameraRigCalibration.rigCal) Voctree Weights: http://www.ipol.im/pub/art/2018/199/ voctree (opțional): Pentru seturi de date mai mari (/>200 de imagini), îmbunătățește foarte mult performanțele de potrivire a imaginilor. Acesta poate fi descărcat de aici. https://github.com/fragofer/voctree Trebuie să specificați calea către vlfeat_K80L3.SIFT.tree în Voctree. CameraRigLocalization Descriere Acest nod preia transformarea dintre cadrele de referință urmărite și cele optice.(?) https://alicevision.github.io/#photogrammetry/localization Setări Nume Descriere SfM Data Fișierul sfmData Media Path Calea către fișierul video, folderul secvenței de imagini sau un fișier text (calea către imagine pe o linie) for each camera of the rig (eg. – mediapath /path/to/cam1.mov /path/to/cam2.mov) Rig Calibration File Fișierul care conține datele de calibrare pentru platformă (subpozii) Camera Intrinsics Fișierul de calibrare intrinseci pentru fiecare cameră a platformei. (eg. –cameraIntrinsics /path/to/calib1.txt /path/to/calib2.txt) Descriptor Path Folderul care conține .desc Match Describer Types Tipurile de descriptor de utilizat pentru potrivire (sift’, ‘sift*float’, ‘sift*upright’, ‘akaze’, ‘akaze*liop’, ‘akaze*mldb’, ‘cctag3’, ‘cctag4’, ‘sift*ocv’, ‘akaze*ocv’) Preset Presetare pentru extractorul de caracteristici la localizarea unei imagini noi (scăzută, medie, normală, înaltă, ultra) Resection Estimator Tipul de cadru /sac de utilizat pentru rezecție (acransac, loransac) Matching Estimator Tipul de cadru /sac de utilizat pentru potrivire (acransac, loransac) Refine Intrinsics Activarea/dezactivarea rafinamentului intrinsec al camerei pentru fiecare imagine localizată Reprojectio n Error Eroare maximă de reproiecție (în pixeli) permisă pentru rezecție. Dacă este setat la 0, permite ACRansac să selecteze o valoare optimă (0 10) Use Localize Rig Naive Activare/Dezactivare metodă naivă pentru localizarea platformei: metoda naivă încearcă să localizeze separat fiecare cameră Nume Descriere Angular Threshold Pragul unghiular maxim în grade între vectorul portant al caracteristicii și direcția punctului 3D. Utilizat numai cu metoda opengv (0 - 10) Voctree [voctree] nume fișier pentru arborele de vocabular Voctree Weights [voctree] nume fișier pentru greutatea arborelui de vocabular Algorithm [voctree] Tip algoritm: {FirstBest, AllResults} Nb Image Match [voctree] Numărul de imagini de regăsit în baza de date Max Results [voctree] Pentru algoritmul AllResults, se oprește potrivirea imaginii atunci când este atins acest număr de imagini potrivite. Pentru 0 este ignorat (0 - 100) Matching Error [voctree] Eroare maximă de potrivire (în pixeli) permisă pentru potrivirea imaginii cu verificarea geometrică. Dacă este setat la 0, permite ACRansac să selecteze o valoare optimă (0 - 10) N Nearest Key Frames [cctag] Numărul de imagini de regăsit în baza de date (0 - 50) Output Alembic Nume fișier pentru fișierul de export SfMData (unde vor fi stocate pozițiile camerei) desc.Node.internalFolder + ‘trackedcameras.abc ConvertSfMFormat Descriere • Creează fișiere SfM abc’, ‘sfm’, ‘json’, ‘ply’, ‘baf din fișierul SfMData Setări Nume Descriere Input Fișier SfMData SfM File Format Format fișier SfM (extensie fișier ieșire: abc’, ‘sfm’, ‘json’, ‘ply’, ‘baf)`` Describer Types Image id Tipuri de descrieri de păstrat. 'sift', 'sift_float', 'sift_upright', 'akaze', 'akaze_liop', 'akaze_mldb', 'cctag3', 'cctag4', 'sift_ocv', 'akaze_ocv' ID imagine Nume Descriere Image White List listă albă de imagini (uids sau căi imagine). Views Exportul vizualizărilor Intrinsics Exportul intrinseci Extrinsics Exportul extrinseci Structure Exportul structurii Observations Export observații Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output Calea către fișierul de date SfM de ieșire. (desc.Node.internalFolder + ‘sfm.{fileExtension}) Refine Intrinsics Activarea/dezactivarea rafinamentului intrinsec al camerei pentru fiecare imagine localizată Reprojection Error Eroare maximă de reproiecție (în pixeli) permisă pentru rezecție. Dacă este setat la 0, permite ACRansac să selecteze o valoare optimă (0 - 10) Use Localize Rig Naive Activare/Dezactivare metodă naivă pentru localizarea platformei: metoda naivă încearcă să localizeze separat fiecare cameră Angular Threshold Pragul unghiular maxim în grade între vectorul portant al caracteristicii și direcția punctului 3D. Utilizat numai cu metoda opengv (0 - 10) Voctree [voctree] Nume fișier pentru arborele de vocabular Voctree Weights [voctree] Nume fișier pentru greutatea arborelui de vocabular Algorithm [voctree] Tip algoritm: {FirstBest, AllResults}`` Nb Image Match [voctree] Numărul de imagini de regăsit în baza de date Max Results [voctree] Pentru algoritmul AllResults, se oprește potrivirea imaginii atunci când este atins acest număr de imagini potrivite. Pentru 0 este ignorat (0 - 100) Nume Descriere Matching Error [voctree] Eroare maximă de potrivire (în pixeli) permisă pentru potrivirea imaginii cu verificarea geometrică. Dacă este setat la 0, permite ACRansac să selecteze o valoare optimă (0 - 10) N Nearest Key Frames [cctag] Numărul de imagini de regăsit în baza de date (0 - 50) Output Alembic Nume fișier pentru fișierul de export SfMData (unde vor fi stocate pozițiile camerei) desc.Node.internalFolder + ‘trackedcameras.abc Noduri de intrare: StructureFromMotion:Ieşire:math:`Rightarrow` Intrare:ConvertSfMFormat Pot converti între formatele Openmvg și Alicevision SfM? Formatele OpenMVG și AliceVision json sunt foarte asemănătoare ca structură, dar nu sunt compatibile imediat, deoarece, printre altele, openmvg este un fișier de serializare a datelor. https://github.com/alicevision/AliceVision/issues/600 DepthMap Descriere Regăsește valoarea de adâncime a fiecărui pixel pentru toate camerele care au fost rezolvate de SfM. Setări Nume MVS Configuration File: Descriere Fișier SfMData. Images Folder Utilizare imagini dintr-un anumit folder în locul celor specificate în fișierul SfMData. Nume fisier ar trebui să fie uid imagine. Downscale Factor de desscalare a imaginii (1, 2, 4, 8, 16) Min View Angle Unghi minim între două vizualizări.(0.0 - 10.0) Max View Angle Unghi maxim între două vizualizări. (10.0 - 120.0) Nume Descriere SGM: Nb Neighbour Cameras Semi Global Matching: Numărul de camere vecine (1 - 100) SGM: WSH: Semi Global Matching Jumătate de dimensiune pentru patch utilizată pentru a calcula similitudinea (1 - 20) SGM: GammaC Potrivire Semi Globală: Prag GammaC (0 - 30) SGM: GammaP Potrivire Semi Globală: Prag GammaP (0 - 30) Refine: Number of samples (1 - 500) Refine: Number of Depths (1 - 100) Refine: Number of Iterations (1 - 500) Refine: Nb Neighbour Cameras Rafinare: Numărul de camere vecine. (1 - 20) Refine: WSH Rafinare: Half-size of the patch used to compute the similarity. (1 - 20) Refine: Sigma Rafinare: Prag Sigma (0 - 30) Refine: GammaC Rafinare: Prag GammaC. (0 - 30) Refine: GammaP Rafinare: Prag GammaP. (0 - 30) Refine: Tc or Rc pixel size Utilizarea dimensiunii minime a pixelilor camerelor vecine (Tc) sau a dimensiunii curente a pixelului camerei (Rc) Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output Folder de ieșire pentru hărțile de adâncime generate Implicit: Descriere detaliată Pentru toate camerele care au fost rezolvate de SfM, dorim să recuperăm valoarea de adâncime a fiecărui pixel. Există multe abordări, ar fi Block Matching, Semi-Global Matching (SGM) [Hirschmüller2005], [Hirschmüller2008] sau ADCensus [Xing2011]. Ne vom concentra pe metoda SGM implementată în AliceVision. Pentru fiecare imagine, selectăm cele mai bune/cele mai apropiate camere N din jur. Selectăm planuri fronto-paralele pe baza intersecției axei optice cu pixelii camerelor vecine selectate. Acest lucru creează un volum W, H, Z cu mulți candidați adâncime pe pixel. Estimăm similitudinea pentru toate. Similitudinea este calculată prin corelația încrucișată normalizată (ZNCC) medie zero a unei zone mici din imaginea principală reproiectată în cealaltă cameră. Acest lucru creează un volum de similitudini. Pentru fiecare imagine vecină, acumulăm similitudini în acest volum. Acest volum este foarte zgomotos. Aplicăm un pas de filtrare de-a lungul axelor X și Y care acumulează costuri locale care reduc drastic scorul valorilor ridicate izolate. În cele din urmă, selectăm minimele locale și înlocuim indexul planului selectat cu valoarea de adâncime stocată într-o hartă de adâncime. Această hartă de adâncime are artefacte de bandă, deoarece se bazează pe selecția originală a valorilor de adâncime. Deci, un pas de rafinare este aplicat pentru a obține valori de adâncime cu precizie sub-pixel. Toate aceste hărți de adâncime pot fi calculate independent în paralel. Apoi aplicăm un pas de filtrare pentru a asigura coerența între mai multe camere. Un compromis este ales atât pe baza valorii similitudinii, cât și a numărului de camere coerente pentru a menține suprafețe slab acceptate, fără a adăuga artefacte. [Hirschmüller2 005] Procesare stereo precisă și eficientă prin potrivire semi-globală și informații reciproce, H. Hirschmüller. CVPR 2005 [Hirschmüller2 008] Procesare stereo prin potrivire semiglobală și informații reciproce, H. Hirschmüller, 2008 [Strecha2006] Adâncime combinată și estimare aberantă în stereo multi-view, C. Strecha, R. Fransens, and L. Van Gool, CVPR 2006 [Scharstein200 2] O taxonomie și evaluarea algoritmilor de corespondență stereo cu două cadre dense, D. Scharstein and R. Szeliski, 2002 [Xing2011] La construirea unui sistem de potrivire stereo precis pe hardware-ul grafic. Xing, M., Xun, S., Mingcai Z., Shaohui J., Haitao, W., Xiaopeng Z., 2011 DepthMapFilter Descriere Hărțile de adâncime originale nu vor fi în întregime consecvente. Anumite hărți de adâncime vor pretinde că văd zonele care sunt acoperite de alte hărți de adâncime. Pasul DepthMapFilter izolează aceste zone și forțează consistența adâncimii. Setări Nume Descriere Input Fișier SfMData Depth Map Folder Folder intrare adâncime hartă Number of Nearest Cameras Numărul celor mai apropiate camere utilizate pentru filtrare 10 (0 - 20) Min Consistent Cameras Număr min. de camere consistente 3 (0 - 10) Min Consistent Cameras Bad Similarity Număr min. de camere consistente pentru pixeli cu valoare de similitudine slabă 4 (0 - 10) Filtering Size in Pixels Dimensiunea filtrării în pixeli (0 - 10) Filtering Size in Pixels Bad Similarity Dimensiunea filtrării în pixeli (0 - 10) Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output Folder de ieșire pentru hărțile de adâncime generate Min Consistent Cameras reduce această valoare dacă nodul Meshing are 0 eșantioane de adâncime de intrare View Output deschide folderul de ieșire și vizualizează fișiere EXR ExportAnimatedCamera Descriere creează un fișier Alembic animatedCamera.abc de la SFMData (de exemplu, pentru utilizarea în softwarel de compunere 3D) Setări Nume Descriere Input SfMData Fișier SfMData care conține un SfM complet SfMData Filter Un fișier SfMData utilizat ca filtru Nume Descriere Export Undistorted Images Valoare export imagini nedistorsionate =True Undistort Image Format Format de fișier imagine de utilizat pentru imagini nedenaturate (*.jpg, *.jpg, *.tif, *.exr (half)) Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output filepath Calea fișierului de ieșire pentru camera animată alembic Output Camera Filepath Nume de ieșire pentru camera animată alembic internalFolder + ‘camera.abc’ Detalii SFM la ExportAnimatedCamera: https://www.youtube.com/watch?v=1dhdEmGLZhY ExportColoredPointCloud Descriere Permite exportul de point cloud colorat. Nume Descriere Input SfMData Fișier SfMData care conține un SfM complet. Verbose Level Nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire). Output Point Cloud Filepath Point cloud de ieșiire cu visibilitate ca fișier SfMData. {cache}/{nodeType}/{uid0}/pointCloud.abc ExportMatches Descriere Salvează caracteristicile și fișierele descriptorilor (.feat, .desc) în folder. Setări Nume Input Descriere Fișier SfMData Nume Describer Types Descriere Tipuri de descrieri utilizate pentru a descrie o imagine. [‘sift’, ‘sift_float’, ‘sift_upright’, ‘akaze’, ‘akaze_liop’, ‘akaze_mldb’, ‘cctag3’, ‘cctag4’, ‘sift_ocv’, ‘akaze_ocv’], Features Folder Features Folders Folder(e) care conțin caracteristicile și descriptorii extrași. Matches Folder Matches Folders Folder(e) în care sunt stocate potrivirile calculate. Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Cale de ieșire pentru fișierele caracteristici și descriptori (.feat, .desc). (internalFolder) ExportMaya Descriere Mod de utilizare cu plugin MeshroomMaya. Nodul "ExportMaya" exportă imaginile nedenaturate. Acest nod nu are nimic dedicat pentru Maya, dar a fost folosit pentru a importa datele în plugin-ul MeshroomMaya. Același lucru se poate folosi pentru a exporta în Blender. Setări Nume Descriere Input SfM Data sfm.sfm sau sfm.abc Output Folder Folder pentru ieșirea MeshroomMaya: imagini și miniaturi nedistorsionate ExportMaya: necesită .sfm sau .abc ca intrare de la ConvertSfMFormat FeatureExtraction Descriere Acest pas extrage caracteristici din imagini, precum și descriptori pentru aceste caracteristici. În funcție de tipul de caracteristică extrasă, se va schimba extensia fișierului. Nume Descriere Input Fișier SfMData. Describer Types Tipuri de descriptori utilizate pentru a descrie o imagine. ‘sift’, ‘sift*float’, ‘sift*upright’, ‘akaze’, ‘akaze*liop’, ‘akaze*mldb’, ‘cctag3’, ‘cctag4’, ‘sift*ocv’, ‘akaze*ocv’ Describer Preset Controlează configurația ImageDescriber (scăzut, mediu, normal, ridicat, ultra). Configurația "ultra" poate dura mult timp ! Force CPU Extraction Se utilizează numai extragerea caracteristicilor CPU. Max Nb Threads Specifică numărul maxim de fire de executat simultan (0 pentru modul automat). (0-24) 0 Verbose Level nivel de verbozitate (fatal, error, warning, info, debug, trace). Output Folder Cale de ieșire pentru fișierele caracteristici și descriptori (*.feat, *.desc). Force CPU Extraction Caracteristică experimentală. Când este dezactivat, va fi utilizat GPU. Accelerează calculul. Necesită CUDA CC3+. Descriere detaliată Obiectivul acestui pas este de a extrage grupuri distincte de pixeli care sunt, într-o anumită măsură, invariante la schimbarea punctelor de vedere aparat de fotografiat în timpul achiziției imaginii. Prin urmare, o caracteristică în scena ar trebui să aibă descrieri similare caracteristică în toate imaginile. Cea mai cunoscută metodă de detectare a caracteristicilor este algoritmul SIFT (Scale-invariant feature transform). Scopul inițial al SIFT este de a extrage patch-uri discriminative într-o primă imagine care pot fi comparate cu patch-uri discriminative la a doua imagine, indiferent de rotație, translație, și scalare. Deoarece un detaliu relevant există doar la o anumită scară, patchurile extrase sunt centrate pe puncte stabile de interes. Ideea cheie este că, într-o anumită măsură, se poate utiliza invarianța SIFT pentru a face față transformărilor imaginii care apar atunci când punctele de vedere se schimbă în timpul achiziției imaginii. De la reprezentarea unei imagini la scări diferite, care se face punct de vedere tehnic prin calcularea unei piramide de imagini scalate. SIFT calculează maximele scale-spațiu ale reprezentării laplaciene, care este o imagine specifică de reprezentare bazată pe energie a imaginii, folosind așa-numitele diferențe ale gaussienilor. Aceste maxime corespund punctelor de interes. Apoi, se prelevează probe pentru fiecare dintre aceste maxime un patch/petec pătrat al imaginii a cărui origine este cea maximă, iar direcția x este gradientul dominant la origine. Pentru fiecare punct cheie, este asociată o descriere a acestor corecții. Descrierea, care este de obicei stocată în 128 de biți, constă într-o statistică a degradeurilor calculate în regiunile din jurul punctului cheie. Dimensiunea regiunii este determinată de scala punctului cheie, iar orientarea este determinată de axa dominantă. Deoarece numărul de caracteristici extrase poate varia foarte mult datorită variabilității complexității texturilor (de la o imagine la alta sau în diferite părți ale imaginii), se utilizează o etapă de post-filtrare pentru a controla numărul de caracteristici extrase la limite rezonabile (de exemplu, între una și zece mii per imagine). Folosim o filtrare a grilei pentru a asigura o bună repartiție a imaginii. [Lowe2004] Distinctive image features from scale-invariant keypoints, David G. Lowe, 2004 [Otero2014] Anatomy of the SIFT Method, Ives Rey Otero, Mauricio Delbracio, 2014 [Yu2011] ASIFT: An Algorithm for Fully Affine Invariant Comparison, Guoshen Yu, JeanMichel Morel, 2011 [Alcantarilla2013] AKAZE Fast explicit diffusion for accelerated features in nonlinear scale spaces, P.F. Alcantarilla, J. Nuevo, A. Bartoli, 2013 [Li2015] A survey of recent advances in visual feature detection, Yali Li, Shengjin Wang, Qi Tian, Xiaoqing Ding, 2015 [VLFEAT2008] VLFeat: An Open and Portable Library of Computer Vision Algorithms A. Vedaldi and B. Fulkerson, 2008 VLFeat SIFT detailed presentation FeatureMatching Descriere Găsește corespondența dintre imagini, utilizând descriptorii de caracteristici. Setări Nume Input Descriere Fișier SfMData Features Folder Features Folders Foldere care conțin caracteristicile și descriptorii extrași Image Pairs List Calea către un fișier care conține lista de perechi de imagini pentru a se potrivi Describer Types Tipuri de descrieri utilizate pentru a descrie o imagine **sift**'/ 'sift_float'/ 'sift_upright'/ 'akaze'/ 'akaze_liop'/ 'akaze_mldb'/ 'cctag3'/ 'cctag4'/ 'sift_ocv'/ 'akaze_ocv Nume Descriere For Scalar based regions descriptor ' * BRUTE_FORCE_L2: L2 BruteForce matching' ' * ANN_L2: L2 Approximate Nearest Neighbor Photometric Matching Method matching ' * CASCADE_HASHING_L2: L2 Cascade Hashing matching ' * FAST_CASCADE_HASHING_L2: L2 Cascade Hashing with precomputed hashed regions (faster than CASCADE_HASHING_L2 but use more memory) 'For Binary based descriptor ' * BRUTE_FORCE_HAMMING: BruteForce Hamming matching' Geometric Estimator Geometric Filter Type Estimator geometric: (acransac: A-Contrario Ransac // loransac: LO-Ransac (only available for fundamental_matrix model) Metoda de validare geometrică pentru filtrarea caracteristicilor se potrivesc: **fundamental_matrix** // essential_matrix // homography_matrix /// homography_growing // no_filtering' Distance Ratio Raportul de distanță pentru a renunța la potrivirile neînsemnate Max Iteration Numărul maxim de iterații permise în etapa ransac 2048 Max Matches Numărul maxim de potriviri de păstrat Save Putative Matches potriviri putative (True/False) Guided Matching modelul găsit pentru a îmbunătăți corespondențele în pereche (True/False) Export Debug Files fișiere depanare (svg/ dot) (True/False) Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output Folder Calea către un folder în care vor fi stocate potrivirile calculate 0.8 (0.0 - 1) (1 - 20000) (0 - 10000) Descriere detaliată Obiectivul acestui pas este de a potrivi toate caracteristicile dintre perechile de imagini candidate. În primul rând, vom efectua potriviri fotometrice între setul de descriptori din cele 2 imagini de intrare. Pentru fiecare caracteristică din imaginea A, obținem o listă a caracteristicilor candidatului din imaginea B. Deoarece spațiul descriptor nu este un spațiu liniar și bine definit, nu ne putem baza pe valorile distanței absolute pentru a ști dacă potrivirea este validă sau nu (putem avea doar o distanță absolută mai mare legată). Pentru a elimina candidații rău, presupunem că există doar o singură potrivire valabilă în cealaltă imagine. Deci, pentru fiecare descriptor de caracteristici de pe prima imagine, ne uităm pentru cei mai apropiați 2 descriptori și vom folosi un prag relativ între ele. Această ipoteză va ucide caracteristicile pe structura repetitive, dar sa dovedit a fi un criteriu robust [Lowe2004]. Aceasta oferă o listă de candidați potriviți caracteristicilor numai pe baza unui criteriu fotometric. Găsiți cei mai apropiați 2 descriptori din a doua imagine pentru fiecare caracteristică este intensivă din punct de vedere computațional, cu o abordare de forță brută, dar există mulți algoritmi optimizați. Cel mai comun este aproximative cel mai apropiat vecin, dar există alternative ar fi, În cascadă Hashing. Apoi, folosim pozițiile caracteristicilor din imagini pentru a face o filtrare geometrică utilizând geometria epipolară într-un cadru de detectare aberant numit RANSAC (RANdom SAmple Consens). Selectăm aleatoriu un mic set de corespondențe de caracteristici și calculăm matricea fundamentală (sau esențială), apoi verificăm numărul de caracteristici care validează acest model și iterăm prin cadrul RANSAC. [Lowe2004] Distinctive image features from scale-invariant keypoints, David G. Lowe, 2004 [FLANN2009] Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration. Muja, Marius, and David G. Lowe. VISAPP (1). 2009 GlobalSfM Descriere GlobalSfM Versiune MR: 2020.x Setări Nume Input Descriere Fișier SfM Data Features Folder Features Folders Folder(e) vare conțin caracteristicile extrase. Matches Folder Matches Folders Folder(e) în care sunt stocate potrivirile calculate. Nume Descriere Describer Types Tipuri de descriptori folosite pentru a descrie o imagine. [‘sift’, ‘sift_float’, ‘sift_upright’, ‘akaze’, ‘akaze_liop’, ‘akaze_mldb’, ‘cctag3’, ‘cctag4’, ‘sift_ocv’, ‘akaze_ocv’] Rotation Averaging Method Metoda rotației medii: • Minimizare L1 • Minimizare L2 Translation Averaging Method Metoda translației medii: • Minimizare L1” • Minimizare L2 de suma distanțelor coardelor la pătrat” • Minimizare L1 soft Force Lock of All Intrinsic Camera Parameters. Forța de a menține constanți toți parametrii intrinseci ai camerelor (distanța focală, punctul principal, distorsiune, dacă există) în timpul reconstrucției. Acest lucru poate fi util dacă camerele de intrare sunt deja complet calibrate. Verbose Level nivel de verbozitate (critical, error, warning, info, debug). Output Folder internalFolder Output SfMData File Cale către fișierul sfmdata de ieșire (internalFolder + ‘SfmData.abc’) [Moulon2013] Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion. Pierre Moulon, Pascal Monasse and Renaud Marlet. ICCV 2013 GlobalSFM vs SequentialSFM https://github.com/openMVG/openMVG/issues/1037 HDRIstitching Descriere cusătură panoramă hdri Versiune MR: 2020.x Setări Nume Descriere Input Files Fișier/folder de intrare Input Folder Listă de imagini fisheye sau folderul care le conține. Blur Width Lățimea neclarității canalului alfa pentru toți fisheye (între 0 și 1). “Determinarea clarității tranzițiilor. (0-1, 0.2) Nume Descriere Image X Rotation Rotire imagine X (-20-20, 0) X Rotations Rotații în grade pe axa X (axa orizontală) pentru fiecare imagine. Image Y Rotation Rotire imagine Y (-30-30, 0) Y Rotations Rotații în grade pe axa Y (axă verticală) pentru fiecare imagine. Image Z Rotation Rotire imagine Z (-10-10, 0) Z Rotations Rotații în grade pe axa Z (axa adâncimii) pentru fiecare imagine. Verbose Level nivel de verbozitate (critical, error, warning, info, debug). Output Panorama Folder de ieșire pentru panoramă (internalFolder) ImageMatching Descriere Acesta este un pas de preprocesare care își dă seama ce imagini au sens pentru a se potrivi între ele. Setări Nume Descriere Image Fișier SfMData Features Folders Foldere care conțin caracteristicile și descriptorii extrași Tree Nume de intrare pentru fișierul arbore de vocabular ALICEVISION_VOCTREE Weights Nume de intrare pentru fișierul de greutate - dacă nu este furnizat, greutățile vor fi calculate după baza de date construită cu setul furnizat Minimal Number of Images Număr minim de imagini pentru a utiliza arborele de vocabular. Dacă sunt mai puține caracteristici decât acest prag, vor fi calculate toate combinațiile care se potrivesc Nume Descriere Max Descriptors Limitează numărul de descriptori încărcați pentru fiecare imagine. Zero înseamnă fără limită Nb Matches Numărul de potriviri de regăsit pentru fiecare imagine (Pentru valoarea 0 va prelua toate potrivirile) 50 (0-1000) Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output List File Cale fișier către fișierul de ieșire cu lista perechilor de imagini selectate Descriere detaliată Obiectivul acestei părți este de a găsi imagini care se uită la aceleași zone ale scenei. Pentru aceasta, folosim tehnicile de recuperare a imaginilor pentru a găsi imagini care partajează un anumit conținut fără costul rezolvării tuturor potrivirilor de caracteristici în detalii. Ambiția este de a simplifica imaginea într-un descriptor de imagine compact, care permite să calculeze distanța dintre toți descriptorii de imagini în mod eficient. Una dintre cele mai comune metode pentru a genera acest descriptor imagine este abordarea arborelui de vocabular. Prin trecerea tuturor descriptorilor de caracteristici extrase prin el, se face o clasificare prin compararea descriptorilor lor la cei de pe fiecare nod al acestui arbore. Fiecare descriptor de caracteristici se termină într-o singură frunză, care poate fi stocată printr-un index simplu: indexul acestei frunze din arbore. Descriptorul de imagine este apoi reprezentat de această colecție de indici de frunze utilizate. Acum este posibil să vedeți dacă diferite imagini partajează același conținut prin compararea acestor descriptori de imagini. [Nister2006] Scalable Recognition with a Vocabulary Tree, David Nister and Henrik Stewenius, CVPR 2006 ImageMatchingMultiSfM Descriere Acest nod poate combina potrivirea imaginii între două intrări SfMData. Utilizat pentru Live Reconstruction și Augmentation Setări Nume Descriere Input A Fișier SfMData Input B Fișier SfMData Nume Descriere Features Folders Foldere care conțin caracteristicile și descriptorii extrași Tree Nume de intrare pentru fișierul arbore de vocabular ALICEVISION_VOCTREE Weights Nume de intrare pentru fișierul de greutate - dacă nu este furnizat, greutățile vor fi calculate pe baza de date construită cu setul furnizat Matching Mode Modul de combinare a potrivirii imaginii între sfMData de intrare A și B: a/a+a/b pentru A cu A + A cu B. a/ab [‘a/a+a/b’ // ‘a/ab’ // ‘a/b’] Minimal Number of Images Număr minim de imagini utilizat pentru arborele de vocabular. Dacă sunt mai puține caracteristici decât acest prag, se vor calcula toate combinațiile potrivite Max Descriptors Limitare număr de descriptori îi încărcați pentru fiecare imagine. Zero înseamnă fără limită 500 (0-100000) Nb Matches Numărul de potriviri de regăsit pentru fiecare imagine (Pentru 0 va prelua toate potrivirile) 50 (0-1000) Verbose Level nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire) Output List File Cale fișier către fișierul de ieșire cu lista perechilor de imagini selectate Output Combined SfM Cale pentru fișierul combinat SfMData internalFolder + ‘combineSfM.sfm KeyframeSelection Descriere Notă: Acesta este un nod experimental pentru selectarea cadrelor cheie într-un videoclip, care elimină imagini prea similare sau prea neclare. Note În acest moment, KeyframeSelection nu poate fi folosit ca intrare pentru CameraInit. Nu putem ști în avans cât de multe imagini vor fi extrase, dar numărul total de imagini este necesar pentru a face o depunere fermă. Deci, atunci când adăugați un fișier video la Meshroom, va apărea următorul mesaj: "Trebuie să calculați manual nodul KeyframeSelection și apoi să reimportați imaginile create în Meshroom pentru reconstrucție." Pentru a adăuga automat cadre extrase la proiect, aveți posibilitatea să copiați calea folderului de ieșire din KeyframeExtraction și să o setați ca Cale folder imagine de reconsturuction live. Apoi începeți să urmăriți folderul și executați graficul. https://github.com/alicevision/meshroom/issues/232 Tipuri de fișiere acceptate: .avi, .mov, .qt, .mkv, .webm, .mp4, .mpg, .mpeg, .m2v, .m4v, .wmv, .ogv, .ogg, .mxf FFmpeg poate fi utilizat pentru conversia fișierelor video. Versiunea MR 2020.x Setări Nume Descriere Media Path Cale media Media Paths Introducerea fișierelor video sau a directoarelor secvențelor de imagini. Brand Marca aparatului foto. Brands Mărci de aparate foto. Model Model de cameră. Models Modele de camere foto. mmFocal Distanța focală în mm (va fi utilizată dacă nu este 0). (0.0500) mmFocals Distanțe focale în mm (vor fi utilizate dacă nu sunt 0). pxFocal Distanța focală în px (va fi utilizată și convertită în mm, dacă nu este 0). (0.0-500) pxFocals Distanțe focale în px (vor fi utilizate și convertite în mm, dacă nu sunt 0). Frame Offset Decalaj cadru 0-100 Frame Offsets Decalaje cadru Sensor Db Path Calea bazei de date cu lățimea senzorului camerei. (ALICEVISION_SENSOR_DB) Nume Descriere Voctree Path Calea la arborele de vocabular. (ALICEVISION_VOCTREE) Use Sparse Distance Selection Utilizarea Sparse Distance pentru a evita cadrele cheie similare. (True) Use Sharpness Selection Utilizarea Sharpness pentru selectarea cadrelor cheie. (True) Sparse Distance Max Score Numărul maxim de puncte comune puternice între două cadre cheie. (1-200, 100) Sharpness Preset Presetare pentru sharpnessSelection : {ultra, high, normal, low, very_low, none} Sharp Subset parte sharp a imaginii (1 = all, 2 = size/2, …) (1-100, 4) Min Frame Step numărul minim de cadre între două cadre cheie (1-100, 12) Max Frame Step numărul maxim de cadre după care poate fi luat un cadru cheie (2-1000, 36) Max Nb Out Frame numărul maxim de cadre de ieșire (0 = no limit) (0-10000) Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Folder Folderul cadrelor cheie de ieșire pentru cadrele extrase. (internalFolder) LDRToHDR Descriere Nume Descriere Input Listă de imagini LDR sau un folder care le conține Calibration Method Metoda utilizată pentru calibrarea camerei. - linear - robertson debevec - beta: grossberg Input Response cale de răspuns a fișierului aparatului foto extern pentru a îmbina toate imaginile LDR împreună. Target Exposure Image Imaginea LDR la expunerea țintă pentru ca imaginea HDR de ieșire să fie centrată. Calibration Weight Tipul funcției de greutate (default, gaussian, triangle, plateau). [‘default’, ‘gaussian’, ‘triangle’, ‘plateau’] Nume Descriere Fusion Weight Funcția de greutate utilizată pentru a îmbina toate imaginile LDR (gaussian, triangle, plateau). Oversaturated Correction Corecție suprasaturată pentru pixeli suprasaturați în toate imaginile: - utilizare 0 pentru nici o corecție - utilizare 0,5 pentru iluminat interior - utilizare 1 pentru iluminat exterior (0-1) Recover Path Calea de scriere a imaginii LDR recuperate la expunerea țintă prin aplicarea răspunsului invers pe imaginea HDR. Verbose Level Nivel de verbozitate (fatal, eroare, avertisment, info, depanare, urmărire). Output Calea imaginii HDR de ieșire. desc.Node.internalFolder + ‘hdr.exr’ Output Response Calea funcției de răspuns la ieșire. desc.Node.internalFolder + ‘response.ods’ MeshDecimate Descriere Simplificarea rețelei pentru a reduce dimensiunea rețelei fără a modifica aspectul vizual al modelului. Setări Nume Descriere Input Mesh (OBJ file format) Simplification factor Factorul de simplificare 0.5 (0 - 1) Fixed Number of Vertice Număr fix de noduri de ieșire 0 (0 - 1 000 000) Min Vertices Min number of output vertices 0 (0 - 1 000 000) Max Vertices Numărul maxim de noduri de ieșire 0 (0 - 1 000 000) Flip Normals Opțiunea de răsturna normalele la suprafețe. "Aceasta poate fi necesară, deoarece depinde de ordinea nodurilor în triunghiuri și schimbarea convenției de la un software la altul. (True/False) Verbose Level nivel de verbozitate (fatală / eroare de avertizare / info / debug / trace) Output mesh File de ieșire (format de fișier OBJ) internalFolder + ‘mesh.obj sau Meshing MeshDecimate MeshFiltering? Comparaţie între MeshDecimate și MeshResampling Răsturnare Normale MeshDenoising Descriere Denoise pentru modelele rețelelor generate de scaner 3D care conțin întotdeauna neregularități. Este necesar ca acestea să se îndepărteze din rețea. Mesh denoising: elimina neregularitățile, dar cu păstrarea caracteristicilor https://www.cs.cf.ac.uk/meshfiltering/index_files/Doc/Random%20Walks%20for%20Mesh%20Denois ing.ppt Setări Nume Descriere input File de intrare (format de fișier OBJ) Denoising Iterations Numărul de iterații folosit (0 - 30) Mesh Update Closeness Weight Greutatea de apropiere pentru actualizarea ochiurilor de plasă, trebuie să fie pozitivă (0 - 0.1) (0.001) Lambda Regularization weight. (0.0 // 10.0 // 0.01) 2 Eta Deviația standard gaussiană pentru greutatea spațială, scalată cu distanța medie dintre centrele fețelor adiacente. Trebuie să fie pozitiv. (0.0 - 20) (1.5) Deviația standard gaussiană pentru greutatea de ghidare (0.0-10) (1.5) Deviația standard gaussiană pentru greutatea semnalului. (0.0-5) (0.3) Mesh Update Mesh Metodă actualizare rețea * ITERATIVEUPDATE (implicit): Rezolvitor iterativ stil ShapeUp * POISSONUPDATE: Actualizare bazată pe Poisson de la [Wang et al. 2015] (0, 1) Nume Descriere Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Output mesh (OBJ file format). Metodă actualizare rețea https://www.researchgate.net/publication/275104101_Poisson- driven_seamless_completion_of_triangular_meshes Wang et al. https://dl.acm.org/citation.cfm?id=2818068 Detailed Description O valoare mai mare a Lambda sau Eta duce la un rezultat de filtrare mai lin. Din: “Static/Dynamic Filtering for Mesh Geometry” by Zhang Et al. https://arxiv.org/pdf/1712.03574.pdf MeshFiltering Descriere Filtrarea elementelor nedorite ale rețelei. Setări Nume Descriere Input Rețea de intrare (format de fișier OBJ) Filter Large Triangles Factor Elimină toate triunghiurile mari. Un triunghi mare este considerat cel care are o latură mai mare decât de N ori lungimea medie a laturii. Pentru zero se dezactivează. 60 (1 - 100) Keep Only the Largest Mesh Păstrează numai cel mai mare grup de triunghiuri conectate (True/False) Nb Iterations 5 (0 - 50) Nume Lambda Descriere 1 (0-10 Verbose Level Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output mesh File de ieșire (format de fișier OBJ) internalFolder + ‘mesh.obj Notă “Keep Only The Largest Mesh” - păstrare numai cea mai mare rețea - Acest lucru este dezactivat în mod implicit în versiunea 2019.1.0 pentru a evita ca mediul să fie amestecat, dar nu și obiectul de interes. Cea mai mare rețea este, în unele cazuri, fundalul reconstruit. Când obiectul de interes nu este conectat la rețeaua mare de fundal, acesta va fi eliminat. Obiectul de interes trebuie plasat pe o suprafață bine structurată, netransparentă sau reflectorizantă (de exemplu, un ziar). MeshResampling Descriere Reducerea numărului de fețe în timp ce se încearcă păstrarea formei generale, volumul și limitele. Se pot specifica un număr fix, min, max de noduri. Acest lucru este diferit de MeshDecimate! Resampling https://users.cg.tuwien.ac.at/stef/seminar/MeshResamplingMerge1901.pdf Setări Nume Descriere Input Rețeaua de intrare (format de fișier OBJ) Simplification factor Factorul de simplificare 0.5 Fixed Number of Vertice Număr fix de noduri de ieșire 0 Min Vertices Numărul minim de noduri de ieșire 0 Max Vertices Numărul maxim de noduri de ieșire 0 (0 - 1 000 000) (0 - 1) (0 - 1 000 000) (0 - 1 000 000) Nume Descriere Number of PreSmoothing Iteration Numărul de iterații pentru pre-netezirea Lloyd 40 (0 - 100) Flip Normals Opțiunea de a roti normalele fețelor. Acesta poate fi necesar, deoarece depinde de ordinea nodurilor în triunghiuri și convenția schimba de la un software la altul. (True/False)`` Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output mesh Rețeaua de ieșire (format de fișier OBJ) mesh.obj Comparație între MeshDecimate și MeshResampling Flip Normals Meshing Descriere Generare rețea folosind norul de puncte SfM sau DepthMap internalFolder + Nume Descriere Input Fișier SfMData. Depth Maps Folder Folderul de intrare pentru Hărți de adâncime Filtered Depth Maps Folder Folderul de intrare pentru Hărți de adâncime filtrate Estimate Space From SfM Estimare spațiu 3D din SfM Min Observations For SfM Space Estimation Numărul minim de observații pentru estimarea spațiului SfM. (0-100) 3 Min Observations Angle For SfM Space Estimation Unghiul minim dintre două observații pentru estimarea spațiului SfM. (0-120) 10 Max Input Points Puncte de intrare maxime încărcate din imaginile hărții de adâncime (500**000** - 500000000) Max Points Punctele maxime de la sfârșitul hărților de adâncime de fuziune (100**000** - 10000000) Max Points Per Voxel (500**000** – 30000000) Min Step Pasul utilizat pentru încărcarea valorilor de adâncime din hărțile de adâncime este calculat din maxInputPts. Aici vom defini valoarea minimă pentru acest pas, astfel încât pe seturi de date mici nu vom petrece prea mult timp la început de încărcare toate valorile de adâncime (1- 20) 2 Partitioning (singleBlock, auto) Repartition (multiResolution, regularGrid) angleFactor (0.0-200.0) 15.0 simFactor (0.0-200.0) 1.0 pixSizeMarginInitCoef (0.0-10.0) 2.0 pixSizeMarginFinalCoe f (0.0-10.0) 4.0 voteMarginFactor (0.1-10.0) 4.0 contributeMarginFactor (0.0-10.0) 2.0 simGaussianSizeInit (0.0-50) 10.0 Nume Descriere simGaussianSize (0.0-50) 0.1 minAngleThreshold (0.0-10.0) 0.01 Refine Fuse Rafinați fuziunea hărții de adâncime cu noua dimensiune a pixelilor definită de scorurile unghiului și similitudinii. Add Landmarks To The Dense Point Cloud Adăugarea reperelor SfM la norul dens de puncte. Colorize Output Dacă se colorează norul de puncte dense de ieșire și rețeaua. Save Raw Dense Point Cloud Salvați norul de puncte dense înainte de tăiere și filtrare. Verbose Level nivel de verbozitate (fatal, error, warning, info, debug, trace). Output Mesh Rețea de ieșire (format de fișier OBJ). mesh.obj Output Dense Point Cloud Ieșire nor de puncte dens cu vizibilități (format de fișier SfMData). densePointCloud.abc Descriere detaliată Obiectivul acestui pas este de a crea o reprezentare geometrică densă a scenei. În primul rând, fuzionăm toate hărțile de adâncime într-un octree global unde valorile de adâncime compatibile sunt îmbinate în celulele octree. Apoi efectuăm o tetraed-izare 3D Delaunay. Apoi se efectuează o procedură complexă de vot pentru a calcula greutățile pe celule și greutățile pe fațete care conectează celulele, după cum se explică în [Jancosek2011] și [Jancosek2014]. Un grafic Cut Max-Flow [Boykov2004] este aplicat pentru a reduce în mod optim volumul. Această tăietură reprezintă suprafața de rețea extrasă. Filtrăm celulele nepotrivite de la suprafață. În cele din urmă aplicăm o filtrare laplaciană pe rețea pentru a elimina artefactele locale.În acest moment, rețeaua poate fi, de asemenea, simplificată pentru a reduce nodurile inutile. [Jancosek2014] Exploiting Visibility Information in Surface Reconstruction to Preserve Weakly Supported Surfaces, Michal Jancosek, Tomas Pajdla [Jancosek2011] Multi-view reconstruction preserving weakly-supported surfaces, Michal Jancosek, Tomas Pajdla, CVPR 2011 [Jancosek2010] Hallucination-free multi-view stereo, M. Jancosek and T. Pajdla, ECCV 2010 [Labatut2009] Robust and efficient surface reconstruction from range data, P. Labatut, J.P. Pons, and R. Keriven, 2009 [Boykov2004] An Experimental Comparison of Min-Cut/Max-Flow Algorithms for Energy Minimization in Computer Vision, Yuri Boykov and Vladimir Kolmogorov. 2004 PanoramaCompositing Descriere Setări Nume Descriere Input Rezultatul deformării panoramei Output File Type Tip de fișier de ieșire pentru imaginile nedistorsionate. [‘jpg’, ‘png’, ‘tif’, ‘exr’] Compositer Type Care compozitor ar trebui să fie utilizat pentru a amesteca imagini [‘replace’, ‘alpha’, ‘multiband’] Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Panoramă de ieșire (internalFolder + ‘panorama.FileType) PanoramaEstimation Descriere Setări Nume Input Features Folder Descriere Fișier SfM Data Nume Features Folders Descriere Folder(e) în care se află caracteristicile extrase. Matches Folder Matches Folders Folder(e) în care sunt stocate potrivirile calculate. Describer Types Tipuri de descriptori utilizați pentru a descrie o imagine. [‘sift’, ‘sift_float’, ‘sift_upright’, ‘akaze’, ‘akaze_liop’, ‘akaze_mldb’, ‘cctag3’, ‘cctag4’, ‘sift_ocv’, ‘akaze_ocv’] Orientation Orientare (0-6) Longitude offset (deg.) Deplasarea pe longitudinea panoramei (-180.0-180.0, 0) Latitude offset (deg.) Deplasare pe latitudinea panoramei (-90.0-90.0, 0) Rotation Averaging Method Metoda de rotație medie: • Minimizare L1 • Minimizare L2 Relative Rotation Method Metoda de rotire relativă : • din matricea esențială • din matricea homografiei Refine Rafinează pozițiile relative ale camerei, punctele și, opțional, parametrul camerei interne Force Lock of All Intrinsic Camera Parameters. Forțează pentru a menține constanți toți parametrii intrinseci ai camerelor (distanța focală, punctul principal, distorsiune, dacă există) în timpul reconstrucției. Acest lucru poate fi util dacă camerele de intrare sunt deja complet calibrate. Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Folder internalFolder Output SfMData File Cale către fișierul sfmdata de ieșire (internalFolder + ‘sfmData.abc) PanoramaExternalInfo Descriere SOLUȚIE pentru remiterea validă a graficului Tractor Setări Nume Descriere Input Fișier SfMData Xml Config Fișier de date XML Matches Folder Matches Folders Folder(e) în care se stochează potrivirile calculate. (SOLUȚIE pentru remiterea validă a graficului Tractor) Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Cale către fișierul sfmdata de ieșire (internalFolder + ‘sfmData.abc’) PanoramaWarping Descriere Setări Nume Descriere Input Fișier SfMData Panorama Width Lățime panoramă (pixeli). 0 pentru dimensiune automată (050000, 10000) Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] PrepareDenseScene Descriere • Acest nod anulează imaginile și generează imagini EXR Setări Nume Descriere Input Fișier SfMData ImagesFolders Utilizare imagini din anumite foldere. Numele fișierului trebuie să fie același sau imaginea uid. Output File Type Tip de fișier de ieșire pentru imaginile nedistorsionate. (jpg, png, tif, exr) Save Metadata Salvați proiecțiile și informațiile intrinseci în metadatele imaginilor (numai pentru imaginile .exr). Nume Descriere Save Matrices Text Files Salvați proiecțiile și informațiile intrinseci în fișiere text. Correct images exposure Aplicarea unei corecții pe imaginile Valoare expunere Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Fișier configurare MVS (desc.Node.internalFolder + ‘mvs.ini) Undistorted images Listă de imagini nedenaturate. ImagesFolders Opțiunea ImagesFolders permite înlocuirea imaginilor de intrare. Acest lucru permite utilizarea imaginilor cu modele de lumină proiectate pentru piesele SfM și MVS și de a face texturarea cu un alt set de imagini. Publish Descriere • O copie a fișierelor de intrare sunt plasate în folderul de ieșire (Output) Poate fi utilizat pentru a salva SfM, Mesh sau model texturat într-un anumit folder Setări Nume Descriere Input Files Fișiere de intrare de publicat Output Folder Folder în care se publică fișiere SfMAlingnment Descriere alinierea fișierului SfM la o scenă Setări Nume Input Descriere Fișier SfMData Nume Descriere Reference Calea către scena utilizată ca sistem de coordonate de referință Alignment Method Metodă aliniere: • from_cameras_viewid: Alinierea camerelor cu același ID de vizualizare • from_cameras_poseid: Alinierea camerelor cu același ID de poziție • from_cameras_filepath: Alinierea camerelor cu o potrivire filepath, folosind 'fileMatchingPattern’ • from_cameras_metadata: Alinierea camerelor cu metadatele potrivite, utilizând "metadataMatchingList" • from_markers: Alinierea de la marcatori cu același ID File Matching Pattern Potrivire expresie regulată pentru metoda "from_cameras_filepath". Ar trebui să capturați anumite părți ale filepath cu paranteze pentru a defini elementele care se potrivesc. Câteva exemple de modele: • Potrivire nume fișier fără extensie (valoare implicită): “.*/(.*?).w{3}” • Potrivire sufix nume de fișier după “_”: “.*/.*(_.*?.w{3})” • Potrivire prefix nume de fișier înainte “_”: “.*/(.*?)_.*.w{3}” Metadata Metadata Matching List Listă de metadate care ar trebui să se potrivească pentru a crea corespondențele. Dacă lista este goală, se va utiliza valoarea implicită: [“Make”, “Model”, “Exif:BodySerialNumber”, “Exif:LensSerialNumber”]. Scale Aplicarea transformării scalării. (True) Rotation Aplicarea transformării de rotație. (True) Translation Aplicarea transformării de translație. (True) Verbose Level [‘fatal’, ‘error’, ‘warning’, ‘info’, ‘debug’, ‘trace’] Output Fișier SfMData aliniat internalFolder + ‘alignedSfM.abc SfMTransfer Rezumat Regăsiți pozițiile și elementele intrinseci dintr-o altă reconstrucție cu vizualizări potrivite. Setări Nume Descriere Input Fișier SfMData Reference Calea către scena folosită ca referință pentru a regăsi pozițiile și elementele intrinseci rezolvate. Matching Method Metodă de potrivire: • from_viewid: Alinierea camerelor cu același ID de vizualizare • from_filepath: Alinierea camerelor cu o potrivire a filepath, utilizând ‘fileMatchingPattern’ • from_metadata: Alinierea camerelor cu metadatele potrivite, utilizând ‘metadataMatchingList’ (from_viewid, from_filepath, from_metadata) File Matching Pattern Potrivire expresie regulată pentru metoda "from_cameras_filepath". Ar trebui să capturați anumite părți ale filepath cu paranteze pentru a defini elementele care se potrivesc. Câteva exemple de modele: • Potrivire nume fișier fără extensie (valoare implicită): “.*/(.*?).w{3}” • Potrivire sufix nume de fișier după “_”: “.*/.*(_.*?.w{3})” • Potrivire prefix nume de fișier înainte “_”: “.*/(.*?)_.*.w{3}” Metadata Metadata Matching List Listă de metadate care ar trebui să se potrivească pentru a crea corespondențele. Dacă lista este goală, se va utiliza valoarea implicită: [“Make”, “Model”, “Exif:BodySerialNumber”, “Exif:LensSerialNumber”]. Nume Descriere Poses Poziții de transfer. (True) Intrinsics Camere de transfer intrinseci. (True) Verbose Level nivel de verbozitate (fatal, error, warning, info, debug, trace). Output Fișier SfMData. SfMTransform Descriere Transformare/Scalare SfM folosind transformarea dată, camere, repere, markeri. Poate fi folosit pentru a scala SfM la dimensiunea din lumea reală. Setări Nume Descriere Input Fișier SfMData Transformation Method Metoda de transformare: • transformation: Aplicarea unei anumite transformări • auto_from_cameras: Utilizarea camerelor foto • auto_from_landmarks: Utilizarea reperelor • from_single_camera: Utilizarea unei anumite camere ca origine a sistemului de coordonate • from_markers: Alinierea anumitor marcatori la coordonate particularizate Transformation Necesar numai pentru metodele de "transformare" și "from_single_camera": • transformation: Align [X,Y,Z] to +Y-axis, rotire în jurul Y cu R grade, scalare după S; sintaxa: X,Y,Z;R;S • from_single_camera: UID cameră sau nume fișier imagine Landmarks Describer Types Tipuri de descrieri de imagini utilizate pentru a calcula media norului de puncte. (doar pentru metoda “landmarks”). (‘sift’, ‘sift_float’, ‘sift_upright’, ‘akaze’, ‘akaze_liop’, ‘akaze_mldb’, ‘cctag3’, ‘cctag4’, ‘sift_ocv’, ‘akaze_ocv’) Additional Scale Scală suplimentară de aplicat. (0.0-100.0, implicit 1.0) Markers Puncte de aliniere a markerilor Scale Aplicarea transformării scalei. Rotation Aplicarea transformării de rotație. Nume Descriere Translation Aplicarea transformării traducerii. Verbose Level nivel de verbozitate (fatal, error, warning, info, debug, trace). Utilizare: Detalii: Metoda Transformation: transformare Aliniază [X,Y,Z] la axa +Y, rotește în jurul Y cu R grade, mărește după S; sintaxă: X,Y,Z;R;S (toți cei cinci parametri sunt necesari). Acest lucru permite utilizatorului să alinieze și să scaleze norul de puncte prin specificarea explicită a scalei și a vectorului "sus" [X,Y,Z] în sistemul de referință al norului de puncte. Rotația este de așa natură încât vectorul [X,Y,Z] specificat este aliniat cu [0,1,0] după transformare. Caz de utilizare pentru a permite utilizatorului să obțină rotația dorită prin manipularea interactivă a norului punct într-un program 3D (Meshlab), citiți parametrii de transformare și transformați norul de puncte. https://github.com/alicevision/AliceVision/pull/206 Metoda Transformation: de la o singură cameră Setează o anumită cameră ca origine și aplică orientarea corectă dacă este posibil, furnizează UID-ul aparatului de fotografiat sau nume fișier imagine Metoda Transformation: autofromlandmarks Selectează Landmarks Describer Type CCTAG pentru a aplica o redimensionare. SketchfabUpload Descriere Sketchfab este un site popular pentru a partaja și vizualiza fișiere 3D, acest lucru oferă un nod pentru a permite încărcarea directă în Sketchfab din Meshroom. Cheia API este furnizată de utilizator în setările nodului. Versiune MR: 2020.x Setări Nume Descriere Input Files Fișiere de intrare de exportat API Token Obține token din https://sketchfab.com/settings/password Nume Descriere Title Titlul nu poate fi mai lung de 48 de caractere. Description Descrierea nu poate fi mai mare de 1024 de caractere. License ‘CC Attribution’, ‘CC Attribution-ShareAlike’, ‘CC Attribution-NoDerivs’, ‘CC Attribution-NonCommercial’, ‘CC Attribution-NonCommercial-ShareAlike’, ‘CC Attribution-NonCommercial-NoDerivs’ Tag Eticheta nu poate fi mai mare de 48 de caractere. Tags Maxim 42 de etichete separate. Category Adăugarea categoriilor ajută la îmbunătățirea identificării modelului dvs.. (‘none’, ‘animals-pets’, ‘architecture’, ‘artabstract’, ‘cars-vehicles’, ‘characters-creatures’, ‘culturalheritage-history’, ‘electronics-gadgets’, ‘fashion-style’, ‘fooddrink’, ‘furniture-home’, ‘music’, ‘nature-plants’, ‘newspolitics’, ‘people’, ‘places-travel’, ‘science-technology’, ‘sports-fitness’, ‘weapons-military’) Publish Dacă modelul nu este publicat, acesta va fi salvat ca schiță. (False) Inspectable Se permite vizualizarea 2D în inspectorul model. (True) Private Necesită un cont pro. (False) Password Necesită un cont pro. Verbose Level nivel de verbozitate (critical, error, warning, info, debug). Utilizare: StructureFromMotion Descriere StructureFromMotion (Incremental SfM) va reconstrui puncte 3D din imaginile de intrare. Pentru Global SfM utilizați nodul GlobalSfM. Input Fișier SfMData Features Folder Folder(e) în care se află caracteristicile și descriptorii extrași. Matches Folders Folder(e) în care sunt stocate potrivirile calculate. Describer Types Tipuri de descriptori utilizați pentru a descrie o imagine. ‘sift’, ‘sift*float’, ‘sift*upright’, ‘akaze’, ‘akaze*liop’, ‘akaze*mldb’, ‘cctag3’, ‘cctag4’, **’siftocv’, ‘akazeocv’ Localizer Estimator Tip estimator utilizat pentru localizarea camerelor (acransac, ransac, lsmeds, loransac, maxconsensus). Observation Constraint Modul contraint de observare utilizat în optimizare: De bază: Utilizează eroarea standard de reproiecție în coordonatele pixelilor, Scalare: Utilizează eroarea de reproiecție în coordonatele pixelilor, dar în raport cu scala de caracteristici Localizer Max Ransac Iterations Numărul maxim de iterații permise în pasul ransac. (1-20000) 4096 Localizer Max Ransac Error Eroare maximă (în pixeli) permisă pentru localizarea camerei (rezecție). Dacă este setat la 0, va selecta un prag în funcție de estimatorul de localizare utilizat (dacă ACRansac, va analiza datele de intrare pentru a selecta valoarea optimă). (0.0-100-0) 0.0 Lock Scene Previously Reconstructed Această opțiune este utilă pentru augmentarea SfM. Blocare a reconstituit anterior poziții (poses) și intrinseci. Local Bundle Adjustment Reduce timpul de reconstrucție, în special pentru seturile mari de date (peste 500 de imagini) prin evitarea calculării ajustării pachetului pe zonele care nu se schimbă. LocalBA Graph Distance Limitare Graph-distance pentru a defini Active region din strategia Local Bundle Adjustment. (2-10) 1 Maximum Number of Matches Numărul maxim de potriviri per pereche de imagini (și per tip de caracteristică). Acest lucru poate fi util pentru a avea o imagine de ansamblu rapidă de reconstrucție. 0 înseamnă fără limită. (050000) 1 Minimum Number of Matches Numărul minim de potriviri per pereche de imagini (și per tip de caracteristică). Acest lucru poate fi util pentru a avea o reconstrucție semnificativă cu puncte cheie exacte. 0 înseamnă fără limită. (050000) 1 Min Input Track Length Lungimea minimă a liniei în intrarea SfM (2-10) Min Observation For Triangulation Numărul minim de observații pentru a triangula un punct. Setați-l la 3 (sau mai multe) reduce drastic zgomotul din norul de puncte, dar numărul de poziții finale este un pic redus (de la 1,5% la 11% pe seturile de date testate). (2-10) Min Angle For Triangulation Unghi minim pentru triangulare. (0.1-10) 3.0 Min Angle For Landmark Unghi minim pentru reper (landmark). (0.1-10) 2.0 Max Reprojection Error Eroare maximă de reproiecție. (0.1-10) 4.0 Min Angle Initial Pair Unghi minim pentru perechea inițială. (0.1-10) 5.0 Max Angle Initial Pair Unghi maxim pentru perechea inițială. (0.1-60) 40.0 Use Only Matches From Input Folder Se utilizează numai potriviri din parametrul de intrare matchesFolder. Folderele care se potriveau anterior adăugării la fișierul SfMData vor fi ignorate. Use Rig Constraint Activare/Dezactivare constrângere platformă. Force Lock of All Intrinsic Camera Parameters. Forțează menținerea constantă a tuturor parametrilor intrinseci ai camerelor (distanța focală, punctul principal, distorsiune, dacă există) în timpul reconstrucției. Acest lucru poate fi util dacă camerele de intrare sunt deja complet calibrate. Filter Track Forks Activare/Dezactivare track forks removal. O pistă conține un element fork atunci când potrivirile incoerente duc la mai multe caracteristici în aceeași imagine pentru o singură pistă. Initial Pair A Numele de fișier al primei imagini (fără cale). Initial Pair B Numele de fișier al celei de-a doua imagini (fără cale). Inter File Extension Extensia fișierului intermadiar de export. (‘.abc’, ‘.ply’) Verbose Level Nivelul verbozității (fatal, error, warning, info, debug, trace). Output SfMData File Cale către fișierul sfmdata de ieșire (sfm.abc) Output SfMData File Calea către fișierul de ieșire sfmdata cu camere (vizualizări și poziții). (cameras.sfm) Output Folder Dosar pentru fișiere intermediare de reconstrucție și fișiere suplimentare cu informații de reconstrucție. Use Rig Constraint Adaugă suport pentru platforma de camere. Aceste informații sunt utilizate ca o nouă restricție în SfM. Această opțiune poate fi acum combinată cu localBA. Trebuie utilizată o anumită ierarhie de foldere în fișierele imagini de intrare (de exemplu: “/my/dataset/rig/0/DSLR_0001.JPG”, “/my/dataset/rig/1/DSLR_0001.JPG”) pentru a furniza aceste informații. Descriere detaliată Obiectivul acestui pas este de a înțelege relația geometrică din spatele tuturor observațiilor furnizate de imaginile de intrare și de a deduce structura rigidă a scenei (puncte 3D) cu poziția (poziția și orientarea) și calibrarea internă a tuturor camerelor. Modul de lucru incremental este un proces de reconstrucție în creștere. Se calculează mai întâi o reconstrucție inițială cu două vizualizări, care este iterativ extinsă prin adăugarea de noi vizualizări. În primul rând, fuzionează toate potrivirile de caracteristici între perechi de imagini în piese. Fiecare piesă ar trebui să reprezinte un punct în spațiu, vizibil de la mai multe camere. Cu toate acestea, la această etapă a modului de lucru, acesta conține încă multe valori aberante. În timpul acestei fuziuni de potriviri, se elimină piesele incoerente. Apoi, algoritmul incremental trebuie să aleagă cea mai bună pereche de imagini inițiale. Această alegere este esențială pentru calitatea reconstrucției finale. Acesta ar trebui, într-adevăr, să furnizeze potriviri robuste și să conțină informații geometrice fiabile. Deci, această pereche de imagini ar trebui să maximizeze numărul de potriviri și repartiția caracteristicilor corespunzătoare din fiecare imagine. Dar, în același timp, unghiul dintre camere ar trebui să fie, de asemenea, suficient de mare pentru a oferi informații geometrice fiabile. Apoi se calculează matricea fundamentală dintre aceste 2 imagini și se consideră că prima este originea sistemului de coordonate. Acum, după ce știm poziția a 2 camere în primul rând, putem triangula caracteristicile corespunzătoare 2D în puncte 3D. După aceea, vom selecta toate imaginile care au asocieri suficiente cu caracteristicile care sunt deja reconstruite în 3D. Acest algoritm se numește următoarea selecție a celor mai bune vizualizări. Pe baza acestor asocieri 2D-3D, se efectuează rezecționarea fiecăreia dintre aceste camere noi. Rezecția este un algoritm Perspective-n-Point (PnP) într-un cadru RANSAC pentru a găsi poziția camerei care validează majoritatea asocierilor de caracteristici. Pe fiecare cameră, se efectuează o minimizare neliniară pentru a rafina poziția. Din pozițiile acestor camere noi, unele piese devin vizibile de la 2 sau mai multe camere rezecate, care le triangulează. Apoi, vom lansa o ajustare pachet pentru a rafina totul: parametrii extrinseci și intrinseci ai tuturor camerelor, precum și poziția tuturor punctelor 3D. Se filtrează rezultatele ajustării pachetului prin eliminarea tuturor observațiilor care au o eroare mare de reproiecție sau unghiuri insuficiente între observații. Astfel sunt triangulate noi puncte și se obțin mai mulți candidați imagine pentru următoarea cea mai bună vizualizare de selecție. Se fac iterări de acest gen, se adaugă camere și triangulări noi ale caracteristicilor 2D în puncte 3D și eliminarea punctelor 3D care au devenit invalidate, până când nu se mai pot localiza noi opinii. Există multe alte abordări, cum ar fi Global [Moulon2013], Hierarchical [Havlena2010], [Toldo2015] sau abordări în mai multe etape [Shah2014]. Referințe [Cheng2014] Fast and Accurate Image Matching with Cascade Hashing for 3D Reconstruction Jian Cheng, Cong Leng, Jiaxiang Wu, Hainan Cui, Hanqing Lu. CVPR 2014 [Fischler1981] Random sample consensus: a paradigm for model fitting with applications to image analysis and automated cartography. Fischler, Martin A., and Robert C. Bolles. 1981 [Moulon2013] Global Fusion of Relative Motions for Robust, Accurate and Scalable Structure from Motion. Pierre Moulon, Pascal Monasse and Renaud Marlet. ICCV 2013 [Moulon2012] Adaptive structure from motion with a contrario model estimation. Pierre Moulon, Pascal Monasse, and Renaud Marlet. ACCV 2012 [Moulon2012] Automatic homographic registration of a pair of images, with a contrario elimination of outliers. Moisan, Lionel, Pierre Moulon, and Pascal Monasse. IPOL 2012 [Moulon2012] Unordered feature tracking made fast and easy, Pierre Moulon and Pascal Monasse, CVMP 2012 [Kneip2011] A Novel Parametrization of the P3P-Problem for a Direct Computation of Absolute Camera Position and Orientation. Kneip, L.; Scaramuzza, D. ; Siegwart, R. CVPR 2011 [Lepetit2009] EPnP: An Accurate O(n) Solution to the PnP Problem. V. Lepetit and F. Moreno-Noguer and P. Fua, IJCV 2009 [Nister2004] An Efficient Solution to the Five-Point Relative Pose. D. Nister PAMI 2004 [Havlena2010] Efficient Structure from Motion by Graph Optimization. M. Havlena, A. Torii, and T. Pajdla. ECCV 2010 [Toldo2015] Hierarchical structure-and-motion recovery from uncalibrated images. R. Toldo, R. Gherardi, M. Farenzena and A. Fusiello. CVIU 2015 [Shah2014] Multistage SFM: Revisiting Incremental Structure from Motion, Rajvi Shah, Aditya Deshpande, P J Narayanan, 2014 [Moulon2015] Robust and precise positioning of image networks, Pierre Moulon 2015 (in French) [Martinec2008] Robust Multiview Reconstruction. Daniel Martinec, 2008 [Hartley2000] Multiple view geometry in computer vision. Richard Hartley and Andrew Zisserman. Cambridge, 2000 [Ceres] Ceres Solver, Sameer Agarwal and Keir Mierle and Others [OpenGV] The OpenGV library Texturing Descriere Texturarea creează UVs și proiectează texturile schimbă calitatea și dimensiunea/ tipului de fișier al texturii Formate acceptate Formate fișier imagine Extensii de fișier acceptate ale Images / Image Viewer: Toate formatele de imagine acceptate de OIIO library cum ar fi: ‘.jpg’, ‘.jpeg’, ‘.tif’, ‘.tiff’, ‘.png’, ‘.exr’, ‘.rw2’, ‘.cr2’, ‘.nef’, ‘.arw’. pot fi importate în Meshroom. Cu toate acestea, ar putea exista un comportament neașteptat atunci când se utilizează imagini RAW. Formate de fișier video 3D File formats Nume Alembic (.abc) Referinţă Alembic Descriere cloud_and_poses Alembic este un format pentru stocarea informațiilor pentru scenele animate după aplicarea elementelor programatice. OBJ OBJ este un format ASCII foarte strict pentru codificarea nodurilor, punctelor, fețelor și texturilor, introdus pentru prima dată de Wavefront Technologies. PLY Formatul de fișier poligonal (sau formatul Triunghi Stanford) are o reprezentare ASCII și o reprezentare binară. Acesta este inspirat de formatul OBJ care permite definirea proprietăților arbitrare pentru fiecare punct. Acest lucru permite o implementare pentru a adăuga informații arbitrare la puncte, inclusiv informații de precizie, dar nu și invers. Informațiile despre cameră ar putea fi incluse în comentarii. PLY SfM Suport FBX (întrerupt) https://github.com/alicevision/AliceVision/pull/174 Alembic este alegerea preferată pentru stocarea intermediară a points clouds, deoarece este singurul format care este deja acceptat de toate pachetele software 3d majore. Alte formate de fișier .bin denseReconstruction: Formatul bin este util doar pentru a obține informațiile de vizibilitate ale fiecărui vertex (fără informații despre culoare) .cal fișier de calibrare .desc fișier descriptor .EXR Formatul imaginii OpenEXR: pentru imagini de hartă de adâncime .txt listă de fișiere text pentru a descrie parametrii imaginii .ini - fișier de configurare .json descrie setul de date imagine utilizat .baf (sfm) Date Bundle Adjustment File Export SfM (Intrinsics/Poses/Landmarks) Tutoriale • • • • • • • • • • • • • Placă turnantă Tutorial: Meshroom pentru începători Goal Step 0: System requirements and installation Step 1: Image acquisition Step 2: Meshroom concept and UI overview Step 3: Basic Workflow Step 4: Visualize and Export the results Step 5: Post-processing: Mesh Simplification Step 6: Retexturing after Retopology Step 7: Draft Meshing from SfM Step 8: Working Iteratively Step 9: Upload results on Sketchfab Placă turnantă Este posibil să se utilizeze o placă turnantă. Pentru a îmbunătăți rezultatele, poate fi util să mascați imaginile. În prezent, Meshroom nu acceptă mascarea, dar puteți citi la #188 o soluție decentă. În esență, software-ul detectează caracteristicile atât din prim-plan, cât și din fundal. Pe o placă turnantă, subiectul se rotește, dar fundalul nu există. Asta încurcă programul. Deci, sunt 2 opțiuni: un fundal complet alb și aceeași iluminare, astfel încât nici o caracteristică să nu poată fi extrasă din această zonă, sau mascarea imaginilor practic, a celor care acoperă fundalul în mod artificial pentru a opri ca acele zone să fie utilizate la prelucrare, sau ambele. O altă abordare ar fi să păstreze scena la fel, dar să se rotească aparatul de fotografiat, care este, de obicei, cel mai bun mod de lucru- oricum, acest mod de lucru este cel recomandat. • fără mascare, obiectul de pe placa turnantă va deveni neclar/doar parțial reconstruit, iar fundalul va fi reconstruit bine • folosim un fundal gol/alb pentru a-l masca cu ușurință Un simplu perete alb nu va funcționa, deoarece are prea multe caracteristici recunoscute – trebuie folosit un fundal curat și neted, care nu va permite nici o caracteristică de detectare – a se vedea "Scale for Small-Object Photogrammetry" de Samantha Porter http://www.stporter.com/resources/ https://conservancy.umn.edu/handle/11299/172480?show=full sau crearea unuia propriu. Tutorial: Meshroom pentru începători https://sketchfab.com/blogs/community/tutorial-meshroom-for-beginners Scop În acest tutorial, este descrisă folosirea Meshroom pentru a crea automat modele 3D dintr-un set de fotografii. După specificarea cerințelor de sistem și instalare, sunt sfaturi privind achiziționarea de imagini pentru fotogrammetrie. Apoi urmează o imagine de ansamblu a Meshroom UI care descrie elementele de bază prin crearea unui proiect și începerea procesului de reconstrucție 3D. După aceea, este descrisă post-procesarea rețelei rezultate direct în Meshroom prin aplicarea unei operații automate de decimare și retexturarea rețelei modificate. Apoi, un rezumat care descrie cum se folosesc toate acestea pentru a lucra iterativ în Meshroom. În cele din urmă, câteva sfaturi despre încărcarea modelelor 3D în Sketchfab și linkuri utile pentru mai multe informații. Pasul 0: Cerințe de sistem și instalare Versiunile de software Meshroom sunt pachete portabile autonome. Acestea sunt încărcate pe pagina proiectului din GitHub. Pentru a utiliza Meshroom pe computer, se descarcă versiunea corespunzătoare pentru sistemul de operare (Windows și Linux sunt acceptate), se extrage arhiva și se lansează Meshroom executabil. În ceea ce privește hardware-ul, este necesar un GPU Nvidia (cu capacitate de calcul de minim 2.0) pentru generarea densă a rețelei de înaltă calitate. Recomandat pentru meshing 32GB de RAM, dar, pentru valori mai mici, parametrii pot fi ajustați. Meshroom este eliberat în sursă deschisă sub Licența MPLv2 permisivă, a se vedea Meshroom COPYING pentru mai multe informații. Pasul 1: Achiziționarea de imagini Calitatea de fotografiere este cea mai importantă și provocatoare parte a procesului. Are un impact dramatic asupra calității rețelei finale. Fotografierea este întotdeauna un compromis pentru a se adapta obiectivelor și constrângerilor proiectului: dimensiunea scenei, proprietățile materialului, calitatea texturilor, timpul de fotografiere, cantitatea de lumină, diferite surse de lumină sau obiecte, calitatea și setările dispozitivului camerei. Scopul principal este de a avea imagini clare, fără neclaritate de mișcare și fără neclaritate de adâncime. Deci, ar trebui utilizate trepiede sau o viteză de expunere rapidă pentru a evita neclaritatea de mișcare, reducerea diafragmei (număr mare de cadre) pentru a avea o adâncime mare de câmp, și de a reduce ISO pentru a minimiza zgomotul. Pasul 2: Conceptul Meshroom și prezentarea generală a interfeței de utilizator Meshroom a fost conceput pentru a aborda două cazuri principale de utilizare: Obținerea cu ușurință a unui model 3D din mai multe imagini cu acțiune minimă a utilizatorului. • Oferirea utilizatorilor avansați (de exemplu: artiști grafici experți, cercetători) a unei soluții care poate fi modificată pentru a se potrivi nevoilor lor creative și/sau tehnice. Din acest motiv, Meshroom se bazează pe un sistem nodal care expune toate etapele modului de lucru fotogrammetric ca noduri cu parametri. Interfața la nivel înalt de mai sus permite oricui să utilizeze Meshroom fără a fi nevoie să modifice nimic. • Interfață utilizator Meshroom Pasul 3: Flux de lucru de bază Pentru acest prim pas, vom folosi doar interfața utilizatorului la nivel înalt. Să salvăm acest nou proiect pe hard disc folosind “File Save As…”. Toate datele calculate de Meshroom vor ajunge într-un folder "MeshroomCache" de lângă acest fișier de proiect. De reținut că proiectele sunt portabile: se poate muta fișierul ".mg" și folderul său "MeshroomCache". Locația cache-ului este indicată în bara de stare, în partea de jos a ferestrei. Apoi, se importă imagini în acest proiect prin simpla tragere a acestora în zona "Images" – din partea stângă. Meshroom analizează metadatele lor și aranjează scena. Meshroom se bazează pe o bază de date cu senzori de cameră (Camera Sensors Database) pentru a determina parametrii interni ai camerei și a-i grupa împreună. Dacă imaginile nu au metadate și/sau au fost preluate cu un dispozitiv necunoscut pentru Meshroom, va fi afișat un avertisment explicit care explică problema. În toate cazurile, procesul va continua, dar rezultatele ar putea fi degradate. După ce se face acest lucru, se apasă butonul "Start" și se așteaptă terminarea calculului. Bara de progres colorată ajută la urmărirea progresului fiecărui pas din proces: • verde: a fost calculat • portocaliu: se calculează • albastru: este prezentat pentru calcul • roșu: eroare Pasul 4: Vizualizarea și exportul rezultatelor Modul de lucru pentru fotogrammetria generică poate fi văzut ca având doi pași principali: • SfM: Structure-from-Motion (reconstrucție slabă) o Deduce structura rigidă a scenei (puncte 3D) cu aranjarea (poziție și orientare) și calibrarea internă a tuturor camerelor. o Rezultatul este un set de camere calibrate cu un point cloud (în format fișier Alembic). • MVS: MultiView-Stereo (reconstrucție densă) o Utilizează camerele calibrate de la Structure-from-Motion pentru a genera o suprafață geometrică densă. o Rezultatul final este o rețea texturată (în format de fișier OBJ cu fișierele MTL și textura corespunzătoare). De îndată ce este disponibil rezultatul “Structure-from-Motion”, acesta este încărcat automat de Meshroom. În acest moment, putem vedea ce camere au fost reconstruite cu succes în panoul “Images” (cu o pictogramă cameră verde) și vizualiza structura 3D a scenei. De asemenea, putem alege o imagine în panoul “Images” pentru a vedea camera corespunzătoare în 3D Viewer și vice-versa. Selectarea imaginii este sincronizată între panourile “Images” și “3D Viewer”. Interacțiunile din 3D Viewer sunt în cea mai mare parte similare cu cele din Sketchfab: • Clic și mutare pentru a roti în jurul centrului de vizualizare • Dublu Clic pe geometrie (point cloud sau rețea) pentru a defini centrul de vizualizare o alternativă: Ctrl+Click • • Clic pe butonul din mijloc (Middle-Mouse Button) pentru deplasarea camerei o alternativă: Shift+Click Derulare rotiță maus pentru apropiere/depărtarea - Zoom in/out o alternativă: Alt+Right-Click și mutare Left/Right Buddha – Structure-from-Motion de AliceVision pe Sketchfab Odată ce totul a fost procesat, butonul "Load Model" din partea de jos a 3D Viewer vă permite să încărcați și să vizualizați rețeaua 3D texturată. Vizualizarea și accesarea fișierelor media de pe disc cu 3D Viewer Nu există nicio etapă de export la sfârșitul procesului: fișierele rezultate sunt deja disponibile pe disc. Aveți posibilitatea să faceți clic cu butonul din dreapta pe un suport și să selectați "Open Containing Folder" pentru a le regăsi. Procedând astfel pe "Texturing", vom avea acces la folderul care conține OBJ și fișierele pentru textură. Buddha – Default Pipeline de AliceVision pe Sketchfab Pasul 5: Post-procesare: Simplificarea rețelei Să vedem cum poate fi utilizat sistemul nodal pentru a adăuga un nou proces la operațiunea implicită. Scopul acestui pas va fi de a crea o versiune low-poly a modelului nostru folosind decimarea automată a rețelei. Să comutăm la “Graph Editor” și clic dreapta în spațiul gol pentru a deschide meniul de creare a nodului. De acolo, vom selecta “MeshDecimate”: acest lucru creează un nod nou în grafic. Acum trebuie să îi dăm o rețea high-poly ca date de intrare. Să creăm o conexiune făcând clic și glisând din MeshFiltering.output la MeshDecimate.input. Acum putem selecta nodul MeshDecimate și ajusta parametrii pentru a se potrivi nevoilor noastre, de exemplu, prin setarea unui număr maxim de noduri la 100,000. Pentru a începe calculul, fie apăsați butonul principal “Start”, fie clic dreapta pe un anumit nod și selectați “Compute”. Creați un nod MeshDecimate, conectați-l, ajustați parametrii și porniți calculul. În mod implicit, de îndată ce calculul este pornit, graficul va fi afișat doar în citire pentru a evita orice modificare care ar compromite procesele planificate. Fiecare nod care produce suport 3D (point cloud sau rețea) poate fi vizualizat în 3D Viewer prin simplu dublu clic pe el. Să facem asta după ce nodul MeshDecimate a fost calculat. • Double-Click pe un nod pentru a-l vizualiza în 3D Viewer. Dacă rezultatul nu este încă calculat, acesta va fi încărcat automat imediat ce este disponibil. • Ctrl+Click comută vizibilitatea unui suport pentru a afișa numai această alternativă media din Graph Editor: Ctrl+DoubleClick pe un nod. Pasul 6: Retexturarea după retopologie Efectuarea unei variante a originalului, rețeaua high-poly este doar primul pas pentru crearea unui model 3D personalizat. Acum, să vedem putem re-textura această geometrie. Să ne întoarcem la Graph Editor pentru a efectua următoarele operațiuni: • Right Click pe nodul Texturing Duplicate • Right Click pe conexiunea MeshFiltering.output Texturing2.inputMesh Remove • Crearea unei conexiuni din MeshDecimate.output la Texturing2.inputMesh Procedând astfel, am creat un proces de texturare care va folosi rezultatul decimării ca geometrie de intrare. Acum putem ajusta parametrii de texturare, dacă este necesar, și să începem calculul. Retexturați rețeaua decimată (simplificată) utilizând un al doilea nod de texturare Buddha – 100K Vertices Decimation de AliceVision pe Sketchfab Retopologie externă și UV-uri personalizate Această configurare poate fi utilizată și pentru a reproiecta texturi pe o rețea care a fost modificată în afara Meshroom (exemplu: retopology / unwrap). Singura constrângere este de a rămâne în același spațiu 3D ca reconstrucția originală și, prin urmare, de a nu modifica mărimea sau orientarea. Apoi, în loc să-l conectăm la MeshDecimate.output, putem scrie direct calea fișierului pentru rețea în parametrul Texturing2.inputMesh din nodul Atribut Editor. Dacă această rețea are deja coordonate UV, acestea vor fi utilizate. În caz contrar, va genera noi UV-uri bazate pe alegerea din "Unwrap Method". Texturarea acceptă, de asemenea, calea către rețele externe Pasul 7: Draft Meshing (rețea brută) din SfM MVS constă din crearea de hărți de adâncime pentru fiecare cameră, fuzionează-le împreună și folosind această cantitate uriașă de informații pentru a crea o suprafață. Generarea acestor hărți de adâncime este partea cea mai intensă de calcul și necesită un GPU cuda activat. Vom explica cum se generează o rețea rapidă și fără detalii direct de la ieșirea SfM, pentru a obține o previzualizare rapidă a modelului 3D. Din nou, se folosește sistemul nodal. Să revenim la operațiile implicite și să facem următoarele operațiuni: • Right Click pe DepthMap Duplicate Nodes from Here (pictograma “ ”) pentru a crea o ramură în grafic și pentru a menține rezultatul anterior. o alternativă: Alt + Click pe nod • Selectare și eliminare (Right Click Remove Node sau Del) DepthMap și DepthMapFilter • Conectare PrepareDenseScene.input Meshing.input • Conectare PrepareDenseScene.output Texturing.inputImages Draft Meshing din configurarea StructureFromMotion Cu această comandă rapidă, Meshing folosește direct punctele 3D din SfM, care trece peste etapele intense de calcul și accelerează calculul de la sfârșitul operațiunii. Acest lucru oferă, de asemenea, o soluție pentru a obține o rețea brută fără un dispozitiv Nvidia GPU. Dezavantajul este că această tehnică va funcționa numai pe seturi de date foarte texturate, care pot produce suficiente puncte în point cloud. În toate cazurile, nu va atinge nivelul de calitate și precizie al operațiunii implicite, dar poate fi foarte util pentru a produce o previzualizare în timpul achiziției sau pentru a obține măsurătorile 3D înainte de foto-modelare. Buddha – Draft Meshing from SfM de AliceVision pe Sketchfab Pasul 8: Lucrul iterativ Vom rezuma acum prin explicarea modului în care ceea ce am învățat până acum poate fi folosit pentru a lucra iterativ și pentru a obține cele mai bune rezultate din seturile de date. 1. Mai întâi, calculul și analiza Structure-from-Motion Aceasta este cea mai bună modalitate de a verifica dacă reconstrucția va fi realizată cu succes înainte de a începe restul procesului (Right click > Compute pe nodul StructureFromMotion). Pentru asta, numărul de camere reconstruite și aspectul/densitatea norului de puncte rare sunt indicatori buni. Mai multe strategii pot ajuta la îmbunătățirea rezultatelor în această etapă timpurie a operațiunii: • Extrageți mai multe puncte cheie din imaginile de intrare prin setarea “Describer Preset” la “high” de pe nodul FeatureExtraction (sau chiar la “ultra” pentru seturi de date mici). • Extragerea mai multor tipuri de puncte cheie prin bifarea “akaze” din “Describer Type” din nodurile FeatureExtraction, FeatureMatching și StructureFromMotion. 2. Folosirea draft meshing din SfM pentru a ajusta parametrii Transformarea în rețea a ieșirii SfM poate ajuta, de asemenea, pentru a configura parametrii procesului standard de realizarea rețelei, prin furnizarea unei previzualizări rapide a reconstrucției dense. Să ne uităm la acest exemplu: Cu parametrii impliciti, putem previzualiza din Meshing2 că zona reconstruită include unele părți ale mediului pe care nu le dorim cu adevărat. Prin creșterea parametrului "Min Observations Angle For SfM Space Estimatim", excludem punctele care nu sunt susținute de o constrângere puternică a unghiului (Meshing3). Acest lucru duce la o zonă mai îngustă, fără elemente de fundal la sfârșitul procesului (Meshing4 vs implicit Meshing). 3. Experiment cu parametri, crearea de variante și compararea rezultatelor Unul dintre principalele avantaje ale sistemului nodal este capacitatea de a crea variante de calcul și de a le compara. În loc să modificăm un parametru pe un nod care a fost deja calculat și să-l anulăm, putem duplica nodul (sau întreaga ramură), să lucrăm la această copie și să comparăm variantele pentru a păstra cea mai bună versiune. În plus față de cele descrise în acest tutorial - parametrii cei mai utili pentru obține precizie și performanță pentru fiecare pas sunt detaliate pe Meshroom Wiki. Pasul 9: Încărcarea rezultatelor pe Sketchfab Meshroom nu oferă încă un instrument de export pentru Sketchfab, dar rezultatele sunt toate în formate de fișier standard și pot fi încărcate cu ușurință folosind interfața web Sketchfab. Fluxul de lucru constă în principal din acești pași: • Decimați rețeaua în Meshroom pentru a reduce numărul de poligoane • Curățați această rețea cu un software extern, dacă este necesar (de exemplu, pentru a elimina elementele de fundal) • Retexturați rețeaua curățată • Încărcați modelul și texturile în Sketchfab Puteți vedea unele scanări 3D ale comunității și ale noastre pe pagina Sketchfab. Nu uitați să etichetați modelele cu “alicevision” și “meshroom” dacă vreți să vă vedem munca! Capturarea Dacă aceasta este prima dată când utilizați software-ul de fotogrammetrie, citiți următorul capitol despre să faceți fotografii bune pentru proiectul dvs. Elemente de bază • • • • • • • • • • • • • • • Scena/obiectul trebuie să fie bine luminat. Evitați umbrele, reflecțiile și obiectele transparente. Cea mai bună fotografie este cu lumină indirectă, cum ar fi ziua la umbra unei clădiri, evitând suprafețele plane și care au o singură culoare Nu utilizați blițul. Nu modificați distanța focală în timpul fotografierii și nu utilizați o lentilă fixă. Asigurați-vă că puteți face fotografii din toate unghiurile. Evitați mutarea obiectelor în scenă sau în fundal! Puteți roti doar obiectele cu un fundal simplu Obiectul de interes ar trebui să umple întotdeauna cea mai mare parte a imaginii Faceți fotografii cu o suprapunere laterală de min. 60% și suprapunere frontală de 80%. Pentru fiecare fotografie, treceți într-o poziție nouă (sau rotiți obiectul) Nu faceți mai multe fotografii din același loc. Puteți fotografia de mai multe ori în diferite moduri pentru a nu avea pete oarbe evitați mișcarea aparatului în timpul fotografierii Cu cât aveți mai multe imagini, cu atât mai bine. Puteți decide oricând să nu le folosiți... Detalii Tutoriale Construirea Meshroom Dacă doriți să rulați cea mai recentă versiune de Meshroom sau o versiune personalizată pentru dezvoltatori, trebuie să obțineți sursele. Mediul software Meshroom este o aplicație Python și se bazează pe cadrul AliceVision. Mediul Python Sunt necesare următoarele versiuni de python: • Windows: Python 3 (>=3.5) • Linux / Mac OS X: Python 3 (>=3.5) or Python 2 (>= 2.7) Notă Fără suport Python 2.7 în Windows? Pachetul binar Oficial Python 2.7 este construit cu Visual Studio 2008, în timp ce PySide2/Qt este construit folosind Visual Studio 2015/2017. Prin urmare, pentru a evita amestecarea bibliotecilor msvc runtime, Qt nu livrează PySide2 pentru Python 2.7 pe Windows (după se explică aici). Rețineți că pentru utilizarea Meshroom numai în modul linie de comandă (fără UI), PySide2 nu este necesar și Python 2.7 merge bine. Obțineți proiectul Citiți INSTALL.md pentru a configura proiectul și cerințele preliminare. Obțineți codul sursă și instalați cerințele de execuție: git clone --recursive git://github.com/alicevision/meshroom cd meshroom pip install -r requirements.txt Mai multe • • • • • View and Edit Models Share your model Print your model Tethering software Related Projects Vizualizarea și editarea modelelor Meshlab Aveți posibilitatea să glisați și să fixați diferite fișiere OBJ și PLY ca straturi. Deci, în acest caz, am un strat atât pentru rețeaua finală și punctele SFM / camere. Uneori, pasul de netezire a rețelei poate fi un pic prea agresiv, așa că mi se pare utilă compararea dintre rețeaua originală și cea netedă/simplificată. În cazul în care rețeaua pare întreruptă, datele PLY SFM și ochiurile obj sunt prea mari pentru a fi urmărite de procesul de calcul. clean up / delete / smooth Primul lucru pe care doriți să îl faceți este să rotiți modelul și să-l aliniați la sistemul de coordonate. Puteți importa obj în Meshlab apoi accesați Filters :math:`Rightarrow` Normals, Curvatures ** and **Orientation :math:`Rightarrow` Transform: Rotate ** ** și aliniați-l de acolo. ** ** Este posibil să existe unele părți ale modelului sau ale scenei pe care doriți să le eliminați. Aveți posibilitatea să selectați ….. apoi eliminați… http://www.banterle.com/francesco/courses/2017/be_3drec/slides/Meshlab.pdf http:// www.scanner.imagefact.de/tut/meshlabTut.pdf Rețea netedă Dacă nu vă plac rezultatele de netezire de la Meshroom, puteți netezi singur rețeaua. http://www.cs.cmu.edu/~reconstruction/advanced.html#meshlab Tutoriale după Mister P. MeshLab Tutorials MeshLab Basics: Navigation MeshLab Basics: Selection, part one MeshLab Basics: Selection, part two Cleaning: Triangles and Vertices Removal Cleaning: Basic filters Mesh Processing: Decimation Meshlab Processing: Smoothing MeshLab Basics: Scale to real measures Blender Pentru instrucțiuni detaliate, vizitați blender homepage sau canalul blender youtube. Aici este un tutorial rapid care descrie modul de optimizare a obiectelor fotogrammetrie cu Blender: How to 3D Photoscan Easy and Free! https://www.youtube.com/watch?v=k4NTf0hMjtY filtrarea rețelei 10:18 / 13:17 blender import https://www.youtube.com/watch?v=RmMDFydHeso Plugin Blender Meshroom2Blender Importator Blender pentru AliceVision Meshroom datafiles: cameras, images, sparse pointcloud și fișiere obj. Implementarea de bază a importatorului Meshroom. Dacă aveți arbore sofisticat de noduri se vor utiliza numai primele noduri din fișier. Addon-ul presupune că ați calculat fiecare etapă/nod, iar ieșirea este aceeași. Pentru detalii, vizitați Github project site. BlenderLandscape Addon pentru Blender 2.79b. Colecție de instrumente 3DSurvey pentru a îmbunătăți fluxul de lucru al unui sondaj 3D (fotogrammetrie terestră sau UAV). Importul mai multor obj simultan (cu orientare corectă), de exemplu, mai multe modele realizate în Meshroom. https://github.com/zalmoxes-laran/BlenderLandscape Rețele instant https://github.com/wjakob/instant-meshes Include o descriere rapidă. Este o soluție de auto-retopologie foarte rapidă și vă ajută să creați rețele mai precise CloudCompare Software 3D point cloud și de procesare a rețelei Open Source Project https://www.danielgm.net/cc/ http://www.danielgm.net/cc/release/ tutorial http://www.danielgm.net/cc/tutorials.html Exportul modelului în Unity Porniți Unity, deschideți proiectul și folderul asset. Navigați cu exploratorul de fișiere al sistemului de operare la subfolderul assets unde doriți să stocați obiectul Fotogrammetry. Copiați fișierele model.obj și texture.jpg (sau alte tipuri de fișiere acceptate)din folderul Meshroom Export în Unity, subfolderul assets. Deschideți Unity și așteptați ca importul automat să se finalizeze. Este posibil să doriți să optimizați rețeaua și textura pentru a le utiliza în jocuri. Acum puteți adăuga modelul la scenă. Există un pic mai mult de făcut pentru a crea un joc demo simplu, cum ar fi adăugarea unui Mesh collider, optimizarea texturii,… Pentru instrucțiuni detaliate, vizitați pagina Home a Unity. Aici este un manual cu privire la modul de optimizare a obiectelor fotogrammetrie din Unity: Unity Photogrammetry Workflow .. image:: 100000000000076E00000401AC14E84A53702851.jpg Export în Maya (Plugin) MeshroomMaya (v0.4.2) este un plug-in Maya care permite modelarea obiectelor 3D folosind imagini. https://github.com/alicevision/MeshroomMaya Acest plug-in nu este disponibil în acest moment (momentul scrierii manualului). Utilizați în schimb nodul Export în Maya. Alembic bridge Export din Meshroom pentru Maya Utilizați nodul Export în Maya pentru a exporta fișierul Alembic ABC Import în Nuke/Mari În meniu “NukeMVG Import Alembic”, fișierul .abc poate fi încărcat. Instrumentul creează graficul de proiecție a camerei. Rezultatul poate fi de export la Mari via Nuke + Mari bridge. SideFX Houdini Plugin O implementare a Alicevision este disponibil în Houdini ca parte (gratuită) a GameDevelopmentToolset. Puteți găsi instrucțiunile de instalare pe pagina următoare: https://www.sidefx.com/tutorials/alicevision-plugin/ Recenzie (în germană): https://www.digitalproduction.com/2019/02/26/alicevision-photogrammetrie-inhoudini/ Elevii pot descărca ediția de învățare gratuită numită ` <https://www.sidefx.com/products/compare/>`_ Houdini Apprentice . Aceasta este o licență blocată de noduri care are toate caracteristicile Houdini FX cu unele restricții, cum ar fi o dimensiune limitată de randare și un filigran pe randările finale. Partajați-vă modelul (Construirea unui modul de încărcare se află în faza de proiect. Citiți github) clip area reduce polycount reduce resolution https://sketchfab.com/ Descriere pe scurt https://www.thingiverse.com/ https://pointscene.com/ https://www.pointbox.xyz/ și altele… Imprimarea modelului https://groups.google.com/forum/#!topic/alicevision/RCWKoevn0yo Software de tethering Controlul la distanță a camerei prin cablu USB. Pentru utilizare cu o placă turnantă și/sau Live Reconstruction. Unii producători (Sony, Panasonic, FUJIFILM, Hasselblad. Canon EOS..) oferă un instrument gratuit ca alternativă a programelor care se vând (Nikon, Canon). Sunt și alte soluții comerciale de la terțe părți. Această listă conține numai proiecte open-source gratuite. 1 DigiCamControl (Windows) • Suport pentru mai multe tipuri de camere http://digicamcontrol.com/download Acceptă multe modele Nikon, Canon, Sony SLR și alte câteva camere. Lista completă aici: http://digicamcontrol.com/cameras 2 Entangle Photo (Linux) https://entangle-photo.org/ Suport pentru camere Nikon sau Canon DSLR ` <http://www.gphoto.org/doc/remote/>`_ remote capture in libgphoto2 va lucra cu Entangle. 3 GPhoto (Linux) http://www.gphoto.org/ 4 Sofortbildapp (OSX) http://www.sofortbildapp.com/ 5 PkTriggerCord (Windows, Linux, Android) pentru camere Pentax http://pktriggercord.melda.info/ https://github.com/asalamon74/pktriggercord/ 6 Darktable (Windows, Linux, OSX) http://www.darktable.org/ https://www.darktable.org/usermanual/en/tethering_chapter.html WifiRemoteControl Pentru unele camere poate fi folosit controlul Wifi. LMaster https://github.com/Rambalac/GMaster de exemplu, pentru unele camere Lumix. Există chiar și instrumente pentru PC-ul pentru a se conecta la ActionCams folosind Wifi… Proiecte corelate ..image:: ofxMVG.jpg ofxMVG Camera Localization OpenFX Plugin pentru Nuke https://github.com/alicevision/ofxMVG Nu este disponibil în acest moment. ..image:: marker2.jpg CCTag Concentric Circles Tag Această bibliotecă vă permite să detectați și să identificați markerii CCTag. Un astfel de sistem de marcare poate oferi o precizie de sub-pixel, fiind în același timp în mare măsură robustă la condiții de fotografiere deosebite. https://github.com/alicevision/CCTag CCTag library Detectarea markerilor CCTag alcătuite din cercuri concentrice. Implementări atât în CPU, cât și în GPU. A se vedea: “Detection and Accurate Localization of Circular Fiducials under Highly Challenging Conditions.” Lilian Calvet, Pierre Gurdjos, Carsten Griwodz și Simone Gasparini. CVPR 2016. https://www.cvfoundation.org/openaccess/content_cvpr_2016/papers/Calvet_Detection_and_Accurate_CV PR_2016_paper.pdf Marker library Markerii de imprimat sunt localizați aici . Avertizare Vă rugăm să respectați marjele furnizate. Rata de detecție raportată și acuratețea localizării sunt valabile cu suport complet plan: aveți grijă să nu utilizați suport îndoit (de exemplu, o foaie de hârtie ondulată). Cele patru inele CCTags vor fi disponibile în curând. CCTags necesită fie CUDA 8.0 și mai noi, fie CUDA 7.0 (compilațiile CUDA 7.5 sunt cunoscute pentru a avea erori de runtime pe unele dispozitive, inclusiv GTX980Ti). Dispozitivul trebuie să aibă cel puțin capacitate de calcul 3.5. Verificarea compatibilității plăcii grafice CUDA aici . ..image:: marker3.jpg PopSIFT Scale-Invariant Feature Transform (SIFT) Această bibliotecă oferă o implementare GPU a SIFT. 25 fps pe imagini HD pe plăcile grafice recente. https://github.com/alicevision/popsift Întrebări frecvente de la GH-Wiki • • • • • • • • • • • • • Crashed at Meshing DepthMap node too slow Draft Meshing Error: Graph is being computed externally Images cannot be imported Large scale dataset Multi Camera Rig Error: This program needs a CUDA Enabled GPU Reconstruction parameters StructureFromMotion fails Supported image formats Texturing after external re topology Troubleshooting Blocare program la Meshing Soluţie: încercați să reduceți valoarea maxPoints din nodul Meshing pentru a evita utilizarea a prea mult RAM & SWAP #243 #303 Nodul DepthMap este prea lent Puteți accelera procesul Depth Map. Iată ce trebuie să faceți: Măriți factorul de downscale pentru a reduce direct precizia. Reducerea numărului de camere T (sgmMaxTCams, refineMaxTCams) va reduce direct timpul de calcul liniar, deci, dacă modificați de la 10 la 5 veți obține un timp de 2x mai mic. Este necesară o valoare minimă de 3, 4 oferă deja rezultate decente, în multe cazuri, în cazul în care densitatea procesului de achiziție este suficient de regulat. Valoarea implicită este necesară într-un mediu la scară largă, unde este dificil să ai 4 imagini care acoperă aceeași zonă.(#228) Draft Meshing Ca și versiunea 2019.1.0 a meshroom, este posibilă reconstrucția fără a utiliza nodul Depthmap (depthmap necesită CUDA). Este mult mai rapid decât harta adâncime, dar rețeaua rezultată este de calitate scăzută, astfel încât este încă recomandat ca depthmap să fie folosit pentru a genera rețeaua, dacă este posibil. Acest lucru se poate face utilizând următoarea configurație de nod: Trebuie să utilizați setarea HIGH din nodul FeatureExtraction pentru a obține o densitate suficientă generării rețelei. Reconstruction-parameters Eroare: Graph is being computed externally Ieșirea neașteptată din Meshroom în timpul procesării poate cauza problema “Graph is being computed externally”.`#249`_ Butoanele Start și Stop sunt estompate. Fundal: Când Meshroom se termină în mod neașteptat, fișierele sunt lăsate în folderele cache. Când deschideți un astfel de proiect, Meshroom va crede, pe baza fișierelor reziduale, că anumite părți ale operațiunii sunt calculate extern. (Această caracteristică ([Renderfarm](https://github.com/alicevision/meshroom/wiki/Largescale-dataset)) nu este inclusă în binarul Release 2019.1.0) Deci butoanele sunt gri, deoarece Meshroom așteaptă o sursă externă pentru a calcula graficul. Evident, asta nu va merge nicăieri. Acest comportament poate apărea, de asemenea, atunci când modificați nodurile în modul avansat în timp ce graficul este calculat. Pentru a remedia această problemă, mai întâi încercați ‘Clear Submitted Status’ cu clic pe nodul defect (right click delete data). În cazul în care acest lucru nu funcționează, de asemenea, goliți stările prezentate ale următoarelor noduri (right click delete data ) Aveți un meniu în partea din dreapta sus a widget-ului grafic cu “Clear Pending Status” pentru a face acest lucru pe toate nodurile deodată. Alternativ, accesați folderul cache al proiectului și ștergeți conținutul folderelor de noduri începând cu nodul unde Meshroom nu mai funcționează (marcat cu verde închis). Puteți păstra rezultatele calculate de succes (verde deschis). Acum puteți continua să calculați graficul pe computer. Imaginile nu se pot importa Modulul de import de la AliceVision are probleme cu analizarea fișierelor imagine deteriorate. Unele camere de telefon mobil și camere de acțiune / camere mici, cum ar fi CGO3 + de la Yuneec produce imagini care nu sunt valabile. Majoritatea vizualizatoarelor de imagini și a software-ului de editare pot gestiona inconsecvențe minore. Utilizați instrumente cum ar fi Bad Peggy pentru a verifica erorile din fișierele imagine. De exemplu. “…extraneous bytes before marker 0xdb”. sau “Truncated File - Missing EOI marker” pe o cameră raspberry Pentru a remedia această problemă, trebuie să convertiți în bloc setul de date (acesta este motivul pentru care a funcționat și downscaling). Puteți utiliza IrfanView File>Batch Conversion sau Imagemagick. Asigurați-vă că setați calitatea la 100%. Acum puteți adăuga imaginile la Meshroom (presupunând că aparatul foto se află în senzor db). – glisarea și fixarea imaginilor nu funcționează (#149) cu mouse-ul peste orice fotografie cursorul este dezactivat și glisarea fotografiilor în viewport nu are nici un efect. Executați Meshroom ca administrator? Dacă da, asta e cauza.. Windows dezactivează glisarea și fixarea aplicațiilor care se execută ca administrator. – Notă: evitați caracterele speciale/caracterele non-ASCII pentru căile de fișiere Meshroom și imagini (#209) Large scale dataset Pot folosi Meshroom pe seturi de date mari cu mai mult de 1000 de imagini? Da, performanța operațiunilor se modifică aproape liniar. Vă recomandăm ajustarea parametrilor SfM pentru a fi un pic mai stricte, pentru a avea o densitate bună / conexiuni bune între imagini. Există 2 praguri globale pe nodul Meshing ( maxInputPoints și maxPoints ) care poate fi necesar să fie ajustate în funcție de densitatea / calitatea de care aveți nevoie și cantitatea de RAM disponibile pe computerul utilizat. Pot folosi Meshroom pe renderfarm? Meshroom a fost conceput pentru a fi utilizat pe renderfarm. Ar trebui să fie destul de simplu pentru a crea un nou submitter, a se vedea available submitters ca exemple. Contactați-ne dacă aveți nevoie de mai multe informații pentru a-l utiliza cu un nou sistem renderfarm. Multi Camera Rig Dacă fotografiați un set de date statice cu o platformă mobilă de camere (camere fixate rigid împreună cu sincronizarea obturatorului), puteți declara această constrângere algoritmului de reconstrucție. În prezent, nu există nicio soluție pentru a declara această restricție direct în interfața cu utilizatorul Meshroom, dar puteți utiliza următoarea convenție de denumire a fișierelor: + rig/ # "rig" folder |-+ 0/ # sub-folder with the index of the camera (starting at 0) |---- DSC_0001.JPG # Your camera nume fișier (the is no constraint on the nume fișier, here "DSC_" prefix is just an example) |---- DSC_0002.JPG |-+ 1/ # sub-folder with the index of the camera |---- DSC_0001.JPG |---- DSC_0002.JPG Toate imaginile cu același Nume în diferite foldere "rig / cameraIndex" vor fi declarate legate împreună prin aceeași transformare. Deci, în acest exemplu, poziția relativă între cele 2 imagini "DSC_0001.JPG" de la aparatul de fotografiat 0 și camera 1 va fi aceeași ca între cele două imagini "DSC_0002.JPG". Când adăugați imaginile în Meshroom, această restricție va fi recunoscută și o veți putea vedea în nodul CameraInit (a se vedea Rig și Rig Sub-Pose din parametrul Viewpoints ). Eroare: This program needs a CUDA Enabled GPU [eroare] Acest program are nevoie de un GPU CUDA-Enabled (cu capacitatea de calcul de cel puțin 2.0), dar Meshroom rulează pe un computer cu NVIDIA GPU. Soluţie: actualizare/reinstalare drivere. Detalii: #182 #197 #203 Acest mesaj de eroare pe un computer fără GPU NVIDIA Calculul hărții de adâncime este implementat cu CUDA și necesită NVIDIA GPU. #218 #260 [Cerere] Eliminare dependență CUDA alicevision/#439 În prezent, nu avem nici interesul, nici resursele necesare pentru a face o altă implementare a codului CUDA la un alt cadru GPU. Dacă cineva este dispus să aducă această contribuție, îl vom sprijini și vom ajuta la integrare.* Pot folosi Meshroom fără un GPU NVIDIA? Da, dar trebuie să utilizați Draft Meshing pentru a finaliza reconstrucția. Gpu-ul meu acceptă CUDA? Verificaţi https://developer.nvidia.com/cuda-gpus Parametri de reconstrucție Parametrii impliciti sunt optimi pentru majoritatea seturilor de date. De asemenea, mulți parametri sunt expuși în scopuri de cercetare și dezvoltare și nu sunt utili pentru utilizatori. Un subset al lor poate fi util pentru utilizatorii avansați pentru a îmbunătăți calitatea pe seturi de date specifice. Primul lucru este de a verifica numărul de camere pentru reconstrucție din imaginile de intrare. Dacă un număr semnificativ nu sunt reconstruite, ar trebui să se concentreze pe opțiunile de reconstrucție rare (sparse reconstruction). Sparse reconstruction Modificați DescriberPreset de la Normal la High Dacă setul de date nu este mare (<300 imagini), puteți folosi presetarea High . Va dura mai mult timp pentru nodul StuctureFromMotion dar poate ajuta pentru a recupera mai multe camere. Dacă aveți într-adevăr puține imagini (de exemplu, <50 imagini), puteți folosi Ultra care poate îmbunătăți sau reduce calitatea în funcție de conținutul imaginii. 2. FeatureMatching : Activați Guided Matching Această opțiune permite o a doua etapă în procedura de potrivire. După potrivirea descriptorului (cu un test global al raportului de distanță) și prima filtrare geometrică, vom recupera o transformare geometrică. Potrivirea ghidată utilizează aceste informații geometrice pentru a efectua descriptorii care se potrivesc a doua oară, dar cu o nouă restricție pentru a limita căutarea. Această abordare bazată pe geometrie previne respingerea timpurie și îmbunătățește numărul de potriviri, în special cu structurile repetitive. Dacă întradevăr luptați pentru a găsi potriviri, puteți utiliza potrivirea BRUTE_FORE_L2 , dar acest lucru nu este bun în cele mai multe cazuri, deoarece este foarte ineficient. 3. Activați AKAZE ca DescriberTypes pe nodurile FeatureExtraction , FeatureMatching și StructureFromMotion . Se poate îmbunătăți în special pe unele suprafețe (cum ar fi pielea, de exemplu). Este, de asemenea, un invariant mult mai afin față de SIFT și poate ajuta pentru a recupera conexiunile atunci când nu aveți suficiente imagini pentru intrare. 4. Pentru a îmbunătăți robustețea selecției inițiale a perechilor de imagini/reconstrucției inițiale, puteți utiliza un SfM cu minInputTrackLength setat la 3 sau 4 pentru a păstra doar cele mai robuste potriviri (și de a îmbunătăți raportul inliers/outliers). Apoi, puteți lega un alt SfM cu parametrii standard, astfel încât al doilea va încerca din nou pentru a localiza camerele care nu au fost găsite de primul, dar cu parametri diferiți. Acest lucru este util dacă aveți doar câteva camere reconstruite într-un set mare de date. 1. FeatureExtraction : Dense reconstruction 1. 2. DepthMap Puteți ajusta parametrul Downscale pentru a administra precizia/timpul de calcul. Dacă rezoluția imaginilor nu este prea mare, puteți seta la 1 pentru a crește precizia, dar atenție, calculul va dura de ~ 4x mai mult. Dimpotrivă, setarea la o valoare mai mare va scădea precizia, dar va accelera calculul. Reducerea numărului de camere vecine ( SGM: Nb Neighbour Cameras , Refine: Nb Neighbour Cameras ) va reduce direct timpul de calcul liniar, deci, dacă schimbați de la 10 la 5 veți obține o accelerare de 2x. O valoare minimă de 3 este necesară, 4 oferă deja rezultate decente în multe cazuri, în cazul în care densitatea procesului de achiziție este suficient de regulat. Valoarea implicită este necesară într-un mediu la scară largă, unde este dificil să aveți 4 imagini care acoperă aceeași zonă. DepthMapFilter Dacă introduceți imagini care nu sunt suficient de dense sau sunt prea neclare și aveți prea multe găuri în ieșire. Poate fi util să relaxați Min Consistent Cameras și Min Consistent Cameras Bad Similarity la 2 și, respectiv, la 3. 3. 4. Meshing Dacă aveți mai puțin de 16G de RAM, va trebui să reduceți Max Points pentru a se potrivi limitelor RAM. Puteți, de asemenea, să măriți, pentru a obține o rețea mai densă / precisă. MeshFiltering pot fi ajustate pentru a evita găuri sau pe de altă parte pentru a limita numărul de triunghiuri mari. Keep Only The Largest Mesh : Dezactivați această opțiune dacă doriți să regăsiți fragmente neconectate care pot fi utile. Filter Large Triangles Factor 5. Texturing Puteți modifica Texture Downscale la 1 pentru a îmbunătăți rezoluția texturii. Tipuri de descriptori Puteți alege să utilizați unul sau mai multe tipuri de descriptori. Dacă utilizați mai multe tipuri, aceștia vor fi combinați împreună pentru a obține rezultate în condiții dificile. Valorile trebuie să fie întotdeauna aceleași între FeatureExtraction, FeatureMatching și StructureFromMotion. Singurul caz pentru ajunge cu valori diferite este pentru testarea și compararea rezultatelor: în acest caz, veți activa toate opțiunile pe care doriți să le testați pe FeatureExtraction și apoi utilizați un subset al lor în Matching și SfM. StructureFromMotion eșuează poate eșua atunci când nu există suficiente caracteristici extrase din setul de date imagine (set de date slab texturate, cum ar fi mediul interior). În acest caz, puteți încerca să măriți cantitatea de caracteristici: • DescriberPreset la High sau la Ultra în FeatureExtraction • Adăugați AKAZE ca și DescriberType pe nodurile FeatureExtraction , FeatureMatching și StructureFromMotion StructureFromMotion Utilizarea mai multor caracteristici va reduce performanțele pe seturile de date mari. O altă problemă este că adăugarea de prea multe caracteristici (mai puțin fiabile) poate reduce, de asemenea, cantitatea de potriviri prin crearea mai multor ambiguități și conflicte în timpul caracteristicilor de potrivire. • parametrul Guided Matching din FeatureMatching este util pentru a reduce conflictele în timpul potriviri caracteristicilor, dar este costisitoare în ceea ce privește performanța. Deci, este foarte util atunci când aveți câteva imagini (cum ar fi o platformă camere de la un studio de scanare). Formate de imagine acceptate Meshroom acceptă majoritatea formatelor de imagine, inclusiv multe formate RAW, cum ar fi ‘.exr’, ‘.rw2’, ‘.cr2’, ‘.nef’, ‘.arw’,… Importatorul de imagini se bazează pe OpenImageIO, astfel încât toate formatele acceptate de OpenImageIO pot fi importate în Meshroom. Cu toate acestea, în acest moment se recomandă utilizarea ‘.jpg’, ‘.jpeg’, ‘.tif’, ‘.tiff’ sau ‘.png’. Not[: Pe unele seturi de date, calitatea reconstrucției ar putea fi redusă sau ar putea provoca întreruperea neașteptată a reconstrucției. (#G) Pentru a rezolva această problemă convertiți imaginii RAW în ‘.jpg’, ‘.jpeg’, ‘.tif’, ‘.tiff’ sau ‘.png’. Texturare după re topologie externă Este posibil să se reproiecteze texturi după re-topologie și unwrap personalizat. Singura constrângere este de a NU modifica scara/orientarea modelului, în scopul de a rămâne în același spațiu 3D ca la reconstrucția originală. Pentru a retextura o rețea de utilizator, este necesar să eliminați conexiunea de intrare din inputMesh (faceți clic dreapta pe conexiune Remove) și să scrieți calea către rețea. Dacă aveți UV-uri personalizate, acestea vor fi luate în considerare. De asemenea, puteți duplica nodul Texturing original (faceți clic dreapta Duplicate) pentru ca să faceți modificări pe această copie. Ar trebui să arate așa: (opțional) De asemenea, puteți seta ``Padding`` la 0 și bifa ``Fill Holes``, dacă doriți să umpleți complet spațiul gol al texturii cu valori plauzibile. Depanare Lucruri pe care le puteți verifica/încerca: • asigurați-vă că fișierele Meshroom descărcate nu sunt deteriorate (descărcare incompletă/întreruptă) • evitați caracterele speciale/caracterele non-ASCII în căile de fișiere Meshroom și imagini (#209) • asigurați-vă că programul antivirus nu interferează cu Meshroom ((#178)/(#342)) • executați Meshroom ca Admin? (Acest lucru va dezactiva drag & drop în ferestre) • Verificați instalarea Python /reinstalați ca administrator și verificați PATH dacă există conflicte • actualizați/instalați cele mai recente drivere NVIDIA • setați GPU-ul NVIDIA ca GPU principal pentru Meshroom. (Panoul de control NVIDIA Manage 3D Settings) • Încercați versiunea Meshroom 2018.1; atunci când se utilizează windows 7 încercați versiunea corespunzătoare (Meshroom 2019.1 are unele probleme cu texturarea #449, DepthMap și unele seturi de date foto care funcționau în 2018.1 #409. Aceste probleme vor fi abordate în următoarea versiune) • Testați Meshroom cu setul de date Monstree • Uneori operațiunea este coruptă. Goliți memoria cache pentru acel nod (și următoarele noduri) care au eroarea. Uneori, repornirea aplicației / computerul ar putea ajuta. #201 • verificați imaginile for problems Referințe Publicații text https://sketchfab.com/blogs/community/tutorial-meshroom-for-beginners/ https://medium.com/realities-io/getting-started-with-photogrammetry-d0a6ee40cb72 http://benvancitters.com/tag/photogrammetry/ Videoclipuri Meshroom live reconstruction (LADIO project) https://www.youtube.com/watch?v=DazLfZXU_Sk Meshroom: Open Source 3D Reconstruction Software https://www.youtube.com/watch?v=v_O6tYKQEBA How to 3D Photoscan Easy and Free! mesh filtering 10:18 / 13:17 blender import https://www.youtube.com/watch?v=k4NTf0hMjtY Meshroom: 3D Models from Photos using this Free Open Source Photogrammetry Software https://www.youtube.com/watch?v=R0PDCp0QF1o Free Photogrammetry: Meshroom https://www.youtube.com/watch?v=NdpR6k-6SHs MeshRoom Vs Reality Capture with blender https://www.youtube.com/watch?v=voNKSkuP-RY MeshRoom and Blender walkthrough https://www.youtube.com/watch?v=VjBMfVC5DSA Meshroom and Blender photoscanning tutorial (+ falling leaf animation) https://www.youtube.com/watch?v=3L_9mf2s2lw Meshroom Introductory Project Tutorial https://www.youtube.com/watch?v=bYzi5xYlYPU Meshroom: Camera Sensor DB Error https://www.youtube.com/watch?v=EOc4Utksk2U How to 3D Photoscan your Face for Free! https://www.youtube.com/watch?v=9Ul9aYhm7O4 Meshroom: créez des objets 3D à partir de photos, grâce à une solution libre… — François Grassard https://www.youtube.com/watch?v=CxKzHJEff4w Meshroom vs 3DZephyr vs Dronemapper Part 1 https://www.youtube.com/watch?v=zfj9u84bQUs Meshroom vs 3DZephyr vs Dronemapper Part 2 https://www.youtube.com/watch?v=qyIW3cvtbiU Character Photogrammetry for Games - Part 1 - Meshroom https://www.youtube.com/watch?v=GzDE_K_x9eQ Meshroom | Photoscan to Camera Track (Matchmove) https://www.youtube.com/watch?v=1dhdEmGLZhY Photogrammetry 2 – 3D scanning simpler, better than ever! https://www.youtube.com/watch?v=1D0EhSi-vvc Glosar Alicevision AKAZE CCTAG SIFT About • • • • • • • About Meshroom o Project history o Partners o Open Source About the manual Acknowledgements Contact us Contributing List of contributers Licenses o Third parties licenses Despre Meshroom Meshroom este un software de reconstrucție 3D gratuit, open-source, bazat pe cadrul AliceVision. AliceVision este un Cadru de viziune fotogrammetrică pentru computer care oferă algoritmi de reconstrucție 3D și de urmărire a camerei. AliceVision își propune să ofere o bază software solidă cu algoritmi de viziune computerizată de ultimă generație care pot fi testați, analizați și reutilizați. Proiectul este rezultatul colaborării dintre mediul academic și industrie pentru a oferi algoritmi de ultimă oră cu robustețea și calitatea necesare pentru utilizarea producției. Istoricul proiectului În 2010, echipa de cercetare IMAGINE (un grup comun de cercetare între Ecole des Ponts ParisTech și Centre Scientifique et Technique du Batiment) și Mikros Image a început un parteneriat având la bază teza lui Pierre Moulon, supervizată de Renaud Marlet și Pascal Monasse pe partea academică și de Benoit Maujean pe partea industrială. În 2013, au lansat o operațiune open source SfM, numită openMVG (“Multiple View Geometry”), pentru a oferi baza unei soluții mai bune pentru crearea de efecte vizuale matte-paintings. În 2009, echipa de cercetare CMP din CTU a început teza de doctorat a lui Michal Jancosek, supervizată de Tomas Pajdla. Ei au lansat binare Windows pentru operațiuni MVS, numite CMPMVS, în 2012. În 2009, INPT, INRIA și Duran Duboi au început proiectul French ANR pentru a crea un model bazat pe soluția de urmărire a camerei bazată pe caracteristici naturale și un nou design de marker numit CCTag. În 2015, Simula, INPT și Mikros Image și-au unit eforturile în cadrul proiectului UE POPART to create a Previz system. În 2017, CTU s-a alăturat echipei în cadrul proiectului UE LADIO pentru a crea un hub central cu acces structurat la toate datele generate. Parteneri Czech Technical University (CTU) în Praga, Republica Cehă IMAGINE de la Universite Paris Est, LIGM Gaspard-Monge, Franţa Institut National Polytechnique de Toulouse (INPT), Franţa Mikros Image , Post-Production Company din Paris, Franţa Simula Research Laboratory AS din Oslo, Norvegia Quine din Oslo, Norvegia A se vedea AliceVision Contributors pentru lista completă a contribuabililor. Acest proiect a primit finanțare din programul de cercetare și inovare Orizont 2020 al Uniunii Europene, a se vedea POPART, ID proiect: 644874 și LADIO, ID proiect: 731970. Open Source Construim un software complet integrat pentru reconstrucția 3D, modelarea fotografiilor și urmărirea camerelor. Scopul nostru este de a oferi o bază software puternică cu algoritmi de viziune computerizată de ultimă generație care pot fi testați, analizați și reutilizați. Legăturile dintre mediul academic și industrie este o cerință de a oferi algoritmi de ultimă oră cu robustețea și calitatea necesare de-a lungul efectelor vizuale și a procesului de fotografiere. Această abordare deschisă ne permite atât nouă, cât și altor utilizatori să obținem un grad ridicat de integrare și personalizare ușoară pentru orice mod de lucru din studio. Dincolo de obiectivele proiectului nostru, open source este un mod de viață. Ne place să facem schimb de idei, să ne îmbunătățim în timp ce facem îmbunătățiri altor persoane și să descoperim noi oportunități de colaborare pentru a extinde orizontul tuturor. Despre manual Acest manual este o compilație a resurselor găsite pe alicevision.github.io, informații colectate de la probleme github, alte resurse web și conținut nou, creat pentru acest manual. LUCRĂRI ÎN CURS! (ultima actualizare 03.06.19) Vreți să ajutați? A scăpat ceva? Sunteți binevenit să comentați și să contribuiți. Acest document este în modul "Sugerare editări". Această lucrare este licențiată sub o licență internațională Creative Commons Attribution-ShareAlike 4.0. Acesta este un proiect comunitar Meshroom. Toate numele, logo-urile și mărcile de produse sunt proprietatea proprietarilor respectivi. Toate numele de companii, produse și servicii utilizate în acest document sunt doar în scopuri de identificare. Utilizarea acestor nume, logo-uri și mărci nu implică aprobarea. Mulţumiri Mulțumiri cercetătorilor care au făcut munca lor să fie disponibilă online, astfel încât să putem oferi gratuit, informații suplimentare de fond cu acest ghid prin referințe. Și în cele din urmă vă mulțumesc pentru utilizarea Meshroom, testare, raportare de probleme și schimb de cunoștințe. Pentru toți colaboratorii Meshroom: țineți pasul cu ultimele actualizări! Contactați-ne Ne puteți contacta pe lista de discuții publice la [email protected] De asemenea, ne puteți contacta în particular la [email protected] Contribuții Alice Vision se bazează pe un efort prietenos și bazat pe comunitate pentru a crea o soluție de fotogrammetrie open source. Proiectul se străduiește să ofere un mediu plăcut pentru toată lumea și încearcă să fie pe cât posibil non-ierarhic. Fiecare contribuitor este considerat membru al echipei, indiferent dacă este nou venit sau membru de lungă durată. Nimeni nu are drepturi speciale sau prerogative. Fluxul de lucru al contribuțiilor se bazează pe Github Pull Request. Vă recomandăm să discutați despre noile caracteristici înainte de a începe dezvoltarea, pentru a vă asigura că dezvoltarea este eficientă pentru toată lumea și pentru a minimiza sarcina de revizuire. Pentru a promova o atmosferă prietenoasă și cooperantă în care colaborarea tehnică poate înflori, ne așteptăm ca toți membrii comunității să fie politicoși și respectuoși între ei, utili și constructivi în sugestii și critici să rămână pe subiect pentru mediul de comunicare care este utilizat, să fie toleranți la diferențele de opinie și greșelile care în mod inevitabil se fac de către toată lumea. Veniți alături de noi pe Github https://github.com/alicevision/ Lista colaboratorilor Licenţe Acest manual este licențiat sub licența `<http://creativecommons.org/licenses/bysa/4.0/>`_ Creative Commons Attribution-ShareAlike 4.0 International License. Acesta este un proiect comunitar Meshroom. Meshroom este eliberat sub MPLv2 Licențe pentru terți • • • • Python https://www.python.org Copyright (c) 2001-2018 Python Software Foundation distribuit în cadrul PSFL V2. Qt/PySide2 https://www.qt.io Copyright (C) 2018 Qt Company Ltd și alți contribuitori, distribuit în cadrul LGPL V3. qmlAlembic https://github.com/alicevision/qmlAlembic Copyright (c) 2018 contribuabili AliceVision, distribuit în cadrul MPL2 license. QtOIIO https://github.com/alicevision/QtOIIO Copyright (c) 2018 contribuabili AliceVision, distribuit în cadrul MPL2 license.