Skip to content

Commit 4ae6bc6

Browse files
Merge pull request #238 from smathermather/add-time-sift
Add time sift
2 parents 3dbb53b + 792f031 commit 4ae6bc6

File tree

1 file changed

+84
-0
lines changed

1 file changed

+84
-0
lines changed

source/map-accuracy.rst

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,90 @@ When previously mapped sites need revisited, OpenDroneMap can align multiple ver
269269

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

272+
Plugin Time-SIFT
273+
----------------
274+
275+
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.
276+
277+
D. Feurer, F. Vinatier, Joining multi-epoch archival aerial images in
278+
a single SfM block allows 3-D change detection with almost
279+
exclusively image information, ISPRS Journal of Photogrammetry and
280+
Remote Sensing, Volume 146, 2018, Pages 495-506, ISSN 0924-2716, doi:
281+
10.1016/j.isprsjprs.2018.10.016
282+
(https://doi.org/10.1016/j.isprsjprs.2018.10.016)
283+
284+
Requirements
285+
============
286+
287+
- ODM ! :-)
288+
- subprocess
289+
- json
290+
- os
291+
- shutil
292+
- pathlib
293+
- sys
294+
- argparse
295+
- textwrap
296+
297+
Usage
298+
=====
299+
300+
Provided example
301+
================
302+
303+
Download or clone `this repo <https://forge.inrae.fr/Denis.Feurer/timesift-odm-data-example.git>`__
304+
to get example data.
305+
306+
Then execute
307+
308+
::
309+
310+
python Timesift_odm.py datasets --end-with odm_filterpoints
311+
312+
It should make the Time-SIFT processing on the downloaded example data, stopping after the filtered dense clouds step.
313+
314+
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.
315+
316+
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|
317+
318+
Your own data
319+
~~~~~~~~~~~~~
320+
321+
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 \*
322+
``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*.
323+
324+
The ``images_epochs.txt`` file has two columns, the first column contains image names and the second contains the epoch name as follows
325+
326+
::
327+
328+
DSC_0368.JPG 0_before
329+
DSC_0369.JPG 0_before
330+
DSC_0370.JPG 0_before
331+
DSC_0389.JPG 1_after
332+
DSC_0390.JPG 1_after
333+
DSC_0391.JPG 1_after
334+
335+
Your directory, before running the script, should look like this :
336+
337+
::
338+
339+
$PWD/datasets/
340+
└── time-sift-block/
341+
├── images/
342+
└── images_epochs.txt
343+
344+
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.
345+
346+
::
347+
348+
$PWD/datasets/
349+
├── 0_before/
350+
├── 1_after/
351+
└── time-sift-block/
352+
353+
.. |image1| image:: https://forge.inrae.fr/Denis.Feurer/timesift-odm-data-example/-/raw/main/Example.png?ref_type=heads
354+
355+
272356
-----------------------
273357
Aligning Large Datasets
274358
-----------------------

0 commit comments

Comments
 (0)