Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
84 changes: 84 additions & 0 deletions source/map-accuracy.rst
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,90 @@ When previously mapped sites need revisited, OpenDroneMap can align multiple ver

Animated gif comparing two separately processed, but aligned digital surface models.

Plugin Time-SIFT
----------------

The script at contrib/time-sift in the ODM repository does Time-SIFT processing with ODM. Time-SIFT is a method for multi-temporal analysis without the need to co-registrate the data.

D. Feurer, F. Vinatier, Joining multi-epoch archival aerial images in
a single SfM block allows 3-D change detection with almost
exclusively image information, ISPRS Journal of Photogrammetry and
Remote Sensing, Volume 146, 2018, Pages 495-506, ISSN 0924-2716, doi:
10.1016/j.isprsjprs.2018.10.016
(https://doi.org/10.1016/j.isprsjprs.2018.10.016)

Requirements
============

- ODM ! :-)
- subprocess
- json
- os
- shutil
- pathlib
- sys
- argparse
- textwrap

Usage
=====

Provided example
================

Download or clone `this repo <https://forge.inrae.fr/Denis.Feurer/timesift-odm-data-example.git>`__
to get example data.

Then execute

::

python Timesift_odm.py datasets --end-with odm_filterpoints

It should make the Time-SIFT processing on the downloaded example data, stopping after the filtered dense clouds step.

In the destination dir, you should obtain new directories, ``0_before`` and ``1_after`` at the same level as the ``time-sift-block`` directory. These new directories contain all the results natively co-registered.

You can then use `CloudCompare <https://cloudcompare.org/>`__ to compute distance between the ``datasets/0_before/odm_filterpoints/point_cloud.ply`` and the ``datasets/1_after/odm_filterpoints point_cloud.ply`` and obtain this image showing the difference between the two 3D surfaces. Here, two soil samples were excavated as can be seen on the image below. |image1|

Your own data
~~~~~~~~~~~~~

In your dataset directory (usually ``datasets``, but you can have chosen another name) you have to prepare a Time-SIFT project directory (default name : ``time-sift-block``, *can be tuned via a parameter*) that contains : \* ``images/`` : a subdirectory with all images of all epochs. This directory name is fixed as it is the one expected by ODM \*
``images_epochs.txt`` : a file that has the same format as the file used for the split and merge ODM function. This file name *can be tuned via a parameter*.

The ``images_epochs.txt`` file has two columns, the first column contains image names and the second contains the epoch name as follows

::

DSC_0368.JPG 0_before
DSC_0369.JPG 0_before
DSC_0370.JPG 0_before
DSC_0389.JPG 1_after
DSC_0390.JPG 1_after
DSC_0391.JPG 1_after

Your directory, before running the script, should look like this :

::

$PWD/datasets/
└── time-sift-block/
├── images/
└── images_epochs.txt

At the end of the script you obtain a directory by epoch (at the same level as the Time-SIFT project directory). Each directory is processed with images of each epoch and all results are natively co-registered due to the initial sfm step done with all images.

::

$PWD/datasets/
├── 0_before/
├── 1_after/
└── time-sift-block/

.. |image1| image:: https://forge.inrae.fr/Denis.Feurer/timesift-odm-data-example/-/raw/main/Example.png?ref_type=heads


-----------------------
Aligning Large Datasets
-----------------------
Expand Down