@@ -269,6 +269,110 @@ When previously mapped sites need revisited, OpenDroneMap can align multiple ver
269269
270270Animated 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-----------------------
273377Aligning Large Datasets
274378-----------------------
0 commit comments