Skip to content

Commit 325aefe

Browse files
add time-sift
1 parent 3dbb53b commit 325aefe

File tree

1 file changed

+104
-0
lines changed

1 file changed

+104
-0
lines changed

source/map-accuracy.rst

Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -269,6 +269,110 @@ 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+
This script does Time-SIFT processing with ODM. Time-SIFT is a method
276+
for multi-temporal analysis without the need to co-registrate the data.
277+
278+
D. Feurer, F. Vinatier, Joining multi-epoch archival aerial images in
279+
a single SfM block allows 3-D change detection with almost
280+
exclusively image information, ISPRS Journal of Photogrammetry and
281+
Remote Sensing, Volume 146, 2018, Pages 495-506, ISSN 0924-2716, doi:
282+
10.1016/j.isprsjprs.2018.10.016
283+
(https://doi.org/10.1016/j.isprsjprs.2018.10.016)
284+
285+
Requirements
286+
------------
287+
288+
- ODM ! :-)
289+
- subprocess
290+
- json
291+
- os
292+
- shutil
293+
- pathlib
294+
- sys
295+
- argparse
296+
- textwrap
297+
298+
Usage
299+
-----
300+
301+
Provided example
302+
~~~~~~~~~~~~~~~~
303+
304+
Download or clone `this
305+
repo <https://forge.inrae.fr/Denis.Feurer/timesift-odm-data-example.git>`__
306+
to get example data.
307+
308+
Then execute
309+
310+
::
311+
312+
python Timesift_odm.py datasets --end-with odm_filterpoints
313+
314+
It should make the Time-SIFT processing on the downloaded example data,
315+
stopping after the filtered dense clouds step.
316+
317+
In the destination dir, you should obtain new directories, ``0_before``
318+
and ``1_after`` at the same level as the ``time-sift-block`` directory.
319+
These new directories contain all the results natively co-registered.
320+
321+
You can then use `CloudCompare <https://cloudcompare.org/>`__ to compute
322+
distance between the
323+
``datasets/0_before/odm_filterpoints/point_cloud.ply`` and the
324+
``datasets/1_after/odm_filterpoints/point_cloud.ply`` and obtain this
325+
image showing the difference between the two 3D surfaces. Here, two soil
326+
samples were excavated as can be seen on the image below. |image1|
327+
328+
Your own data
329+
~~~~~~~~~~~~~
330+
331+
In your dataset directory (usually ``datasets``, but you can have chosen
332+
another name) you have to prepare a Time-SIFT project directory (default
333+
name : ``time-sift-block``, *can be tuned via a parameter*) that
334+
contains : \* ``images/`` : a subdirectory with all images of all
335+
epochs. This directory name is fixed as it is the one expected by ODM \*
336+
``images_epochs.txt`` : a file that has the same format as the file used
337+
for the split and merge ODM function. This file name *can be tuned via a
338+
parameter*.
339+
340+
The ``images_epochs.txt`` file has two columns, the first column
341+
contains image names and the second contains the epoch name as follows
342+
343+
::
344+
345+
DSC_0368.JPG 0_before
346+
DSC_0369.JPG 0_before
347+
DSC_0370.JPG 0_before
348+
DSC_0389.JPG 1_after
349+
DSC_0390.JPG 1_after
350+
DSC_0391.JPG 1_after
351+
352+
Your directory, before running the script, should look like this :
353+
354+
::
355+
356+
$PWD/datasets/
357+
└── time-sift-block/
358+
├── images/
359+
└── images_epochs.txt
360+
361+
At the end of the script you obtain a directory by epoch (at the same
362+
level as the Time-SIFT project directory). Each directory is processed
363+
with images of each epoch and all results are natively co-registered due
364+
to the initial sfm step done with all images.
365+
366+
::
367+
368+
$PWD/datasets/
369+
├── 0_before/
370+
├── 1_after/
371+
└── time-sift-block/
372+
373+
.. |image1| image:: https://forge.inrae.fr/Denis.Feurer/timesift-odm-data-example/-/raw/main/Example.png?ref_type=heads
374+
375+
272376
-----------------------
273377
Aligning Large Datasets
274378
-----------------------

0 commit comments

Comments
 (0)