# Structure from motion

Structure from motion o SfM (in italiano: Struttura dal movimento) è una tecnica di range imaging della computer vision e della percezione visiva, con cui il processo di stima di strutture tridimensionali da sequenze di immagini bidimensionali che può essere accoppiato con segnali di movimento locali. Nella visione biologica la SfM fa riferimento al fenomeno per cui gli esseri umani (e altre creature viventi) posso ricostruire strutture 3D da un campo in movimento in proiezione 2D (retinale) di un oggetto o una scena in movimento.

## Ottenere informazione 3D da immagini 2D

Gli esseri umani ricevono molte informazioni sulla struttura tridimensionale nel loro ambiente muovendosi attraverso. Quando l'osservatore si muove e gli oggetti intorno a lui si muovono, l'informazione è ottenuta da immagini nel tempo. Trovare strutture dal movimento presenti problemi simili a trovare strutture dalla visione stereoscopica. In entrambi i casi, la corrispondenza tra immagini e la ricostruzione di oggetti 3D ha bisogno di essere trovata.
Per trovare corrispondenza tra immagini, le caratteristiche (feature) come i punti d'angolo (lati con gradienti in direzioni multiple) sono tracciate da un'immagine alla prossima. Uno dei rilevatori di caratteristiche più usati è il SIFT (Scale-invariant feature transform). Usa come caratteristiche il massimo di una piramide di Differenze di Gaussiane (DOG) Il primo passo nella SIFT è di trovare una direzione di gradiente dominante. Per renderla invariante alla rotazione, il descrittore è ruotato per adattarne l'orientamento. Un altro rilevatore di caratteristiche molto comune è il SURF (Speeded Up Robust Features). Nel SURF, la DOG è sostituita da un rilevatore hessiano di blob basato su matrici. Inoltre, invece di valutare il gradiente degli istogrammi, SURF calcola le somme dei componenti del gradiente e le somme dei loro valori assoluti. Le caratteristiche rilevate da tutte le immagini saranno poi incrociate. Uno degli algoritmi di matching (per incrociare i dati) che traccia le caratteristiche da un'immagine all'altra è il tracciatore Lukas-Kanade.

## Software Structure from Motion

Soluzioni Open source :
| Nome | Licenza | GUI | Linguaggio | Descrizione |
| Bundler | GNU GPL v2 | no | C++ | Structure from Motion for Unordered Photo Collections by Noah Snavely |
| openMVG | MPL v2 | no | C++ | An Open Multiple View Geometry library + Structure from Motion demonstrators |
| LibMV | MIT | no | C++ | Library for Multiview Reconstruction (LMV), libreria alla base degli algoritmi di SfM di Blender |
| Theia | BSD | no | C++ | A Fast and scalable structure-from-motion library |
| MicMac | CeCILL-B | si | C++ | Programma di fotogrammetria de l'Institut national de l'information géographique et forestière |
| MVE | GNU GPL v3 | si | C++ | The Multi-View Environment |
| Colmap | BSD | si | C++ | Pipeline Structure-from-Motion (SfM) e Multi-View Stereo (MVS) a linea di comando e con interfaccia grafica. |
| AliceVision | MPL v2 | no | C++ | Libreria software per la fotogrammetria |
| Structure from Motion toolbox for Matlab Archiviato il 24 maggio 2008 in Internet Archive. | GNU GPL v3 | si | Matlab | Toolbox creato da Vincent Rabaud |
| Matlab Functions for Multiple View Geometry | MIT | si | Matlab | Toolbox creato da Andrew Zissermann |
| Structure and Motion Toolkit | MSR-EULA | si | Matlab | Toolbox creato da Phil Torr |
| Matlab Code for Non-Rigid Structure from Motion | n.a. | si | Matlab | Toolbox creato da Lorenzo Torresani |
| AliceVision Meshroom | MPL v2 | si | Python | Applicazione GUI (Qt/PySide) basata sulla libreria AliceVision |

### Altri software

* Smart3DCapture, a complete photogrammetry solution by Acute3D.
* 3DF Samantha - Command line structure from Motion pipeline for Windows, by 3Dflow srl. Free for non-commercial purposes.
* Automatic Camera Tracking System (ACTS), a structure-from-motion with dense depth recovery system for Microsoft Windows, by Vision Group of State Key Lab of CAD&CG, Zhejiang University.
* Large-Scale Automatic Camera Tracking System (LS-ACTS), a large-scale structure-from-motion system for Microsoft Windows, by Vision Group of State Key Lab of CAD&CG, Zhejiang University.
* VisualSFM: A Visual Structure from Motion System, by Changchang Wu
* SFMToolkit a complete photogrammetry solution based on open-source software, su visual-experiments.com.
* MountainsMap SEM software for Scanning Electron Microscopes. 3D is obtained by tilting the specimen + photogrammetry.
* Voodoo Camera Tracker Archiviato il 30 aprile 2016 in Internet Archive., non-commercial tool for the integration of virtual and real scenes. Original site, archived: Laboratorium für Informationstechnologie, University of Hannover
* MetaIO Toolbox SfM for augmented reality on mobile devices.
* TacitView by 2d3 Sensing
* Catena Archiviato il 2 aprile 2014 in Archive.is. Python Abstract Workflow Framework with SfM components.
* CMPMVS Multi-View Reconstruction Software