Skip to content

Commit

Permalink
Add a DJI Mini 2 drone image sample dataset
Browse files Browse the repository at this point in the history
- Instruction to process the dataset with GPS or no GPS and many variant
of Image Matching are also shared
  • Loading branch information
pmoulon committed Oct 20, 2021
1 parent 719710f commit 84b70ff
Show file tree
Hide file tree
Showing 26 changed files with 135 additions and 0 deletions.
2 changes: 2 additions & 0 deletions 360_dataset/360_Flat/images/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
Copyright 2016 Pierre MOULON http://imagine.enpc.fr/~moulonp/
Device:
- RICOH THETA S
2 changes: 2 additions & 0 deletions 360_dataset/360_school/images/README.md
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
Copyright 2017 Pierre MOULON http://imagine.enpc.fr/~moulonp/
Device:
- RICOH THETA S
Binary file added Drone/Palm_Desert_Micro/DJI_0042.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0043.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0044.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0045.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0046.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0047.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0048.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0049.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0050.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0051.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0052.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0053.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0054.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0055.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0056.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0057.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0058.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0059.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0060.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0061.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added Drone/Palm_Desert_Micro/DJI_0062.JPG
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions Drone/Palm_Desert_Micro/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Copyright 2021 Pierre MOULON
Device:
- DJI Mini 2
Sensor size:
- DJI FC7303;6.16
122 changes: 122 additions & 0 deletions Drone/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
OpenMVG Drone image samples
===============================

- Palm_Desert_Micro (21 GPS images)

# Associated demos (OpenMVG 2.0)
- Processing with or without GPS priors
- Processing with image similarity (VLAD or PRE-EMPTIVE matching)

## SFM without GPS prior but adjust the scene to GPS datum by Rigid adjustment to GPS coordinates

```console
dataset=<i.e. FULL_PATH to Palm_Desert_Micro>
dataset_out=<i.e.FULL_PATH Palm_Desert_Micro_output>

mkdir $dataset_out

# Initialize the scene
openMVG_main_SfMInit_ImageListing -i $dataset -o $dataset_out/matches -d <PATH to sensor_width_camera_database.txt> -c 3

# Compute of the features (you can add -n <THREAD_COUNT> to be faster)
openMVG_main_ComputeFeatures -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches

# Compute the image matches
openMVG_main_ComputeMatches -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches/matches.putatives.bin

# Filter matches
openMVG_main_GeometricFilter -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches/matches.putatives.bin -g f -o $dataset_out/matches/matches.f.bin

# Compute of the camera motion and structure of the scene
openMVG_main_SfM --sfm_engine "INCREMENTAL" -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches -o $dataset_out/reconstruction

# Rescale to GPS coordinates
openMVG_main_geodesy_registration_to_gps_position -i $dataset_out/reconstruction/sfm_data.bin -o $dataset_out/reconstruction/sfm_data_adjusted.bin
# Visualization in PLY
openMVG_main_ConvertSfM_DataFormat -i $dataset_out/reconstruction/sfm_data_adjusted.bin -o $dataset_out/reconstruction/sfm_data_adjusted.ply

# Load sfm_data_adjusted.ply and file GPS_position.ply to see side by side (priors and what SFM found)
# Note preview could be 'strange' due to floating precision and large coordinates

```

## Using GPS prior for pair selection and SFM prior (optimize in GPS XYZ coordinates)

```console
mkdir $dataset_out

# Initialize the scene with GPS prior
openMVG_main_SfMInit_ImageListing -i $dataset -o $dataset_out/matches -d <PATH to sensor_width_camera_database.txt> -c 3 --use_pose_prior

# Initialize a View Graph for image matching using image GPS positions and X neighbors (here X equals 10)
openMVG_main_ListMatchingPairs -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches --gps_mode --neighbor_count 10 -o $dataset_out/matches/pairs.txt

# Compute of the features (you can add -n <THREAD_COUNT> to be faster)
openMVG_main_ComputeFeatures -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches

# Compute the image matches
openMVG_main_ComputeMatches -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches/matches.putatives.bin --pair_list $dataset_out/matches/pairs.txt

# Filter matches
openMVG_main_GeometricFilter -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches/matches.putatives.bin -g f -o $dataset_out/matches/matches.f.bin

# Compute of the camera motion and structure of the scene (scene will be in GPS prior coordinates)
openMVG_main_SfM --sfm_engine "INCREMENTAL" -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches -o $dataset_out/reconstruction --prior_usage
# Note: Ignoring the --prior_usage (will ignore GPS coordinates priors -- so you could register to GPS position manually using openMVG_main_geodesy_registration_to_gps_position)
# Note preview could be 'strange' due to large difference of coordinates with the GPS position and SFM point cloud that will be displayed side by side

```

## Using VLAD similarity image pair selection (demo -- no GPS consideration)

```console
mkdir $dataset_out

# Initialize the scene with GPS prior
openMVG_main_SfMInit_ImageListing -i $dataset -o $dataset_out/matches -d <PATH to sensor_width_camera_database.txt> -c 3

# Compute of the features (you can add -n <THREAD_COUNT> to be faster)
openMVG_main_ComputeFeatures -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches

# Compute a VLAD dictionary, compute a VLAD descriptor for each image, and retrieve the closest images by using VLAD similarity
openMVG_main_ComputeVLAD -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches --pair_file $dataset_out/matches/vlad_pairs.txt
# Notes:
# Visualize for each image, the closest image retrieved, you can open $dataset_out/matches/retrieval_matches_matrix.svg
# Visualize the retrieved adjacency matrix, you can open $dataset_out/matches/retrieval_matches_matrix.svg

# Compute matches for the selected VLAD image pairs
openMVG_main_ComputeMatches -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches/matches.putatives_vlad.bin --pair_list $dataset_out/matches/vlad_pairs.txt

# Filter matches
openMVG_main_GeometricFilter -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches/matches.putatives_vlad.bin -g f -o $dataset_out/matches/matches.f.bin

# Compute of the camera motion and structure of the scene (scene will be in GPS prior coordinates)
openMVG_main_SfM --sfm_engine "INCREMENTAL" -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches/ -o $dataset_out/reconstruction

```

## Using Preemptive matching for image pair selection (demo -- no GPS consideration)

```console
mkdir $dataset_out

# Initialize the scene with GPS prior
openMVG_main_SfMInit_ImageListing -i $dataset -o $dataset_out/matches -d <PATH to sensor_width_camera_database.txt> -c 3

# Compute of the features (you can add -n <THREAD_COUNT> to be faster)
openMVG_main_ComputeFeatures -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches

# Compute matches with preemptive matching to select only some image pairs
# i.e here we keep per image 4000 features with the largest scale
openMVG_main_ComputeMatches --preemptive_feature_count 4000 -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches/matches.putatives_preemptive_V1.bin --pair_list $dataset_out/matches/preemptive_pairs.txt

# Compute matches for the selected preemptive pairs
openMVG_main_ComputeMatches -i $dataset_out/matches/sfm_data.json -o $dataset_out/matches/matches.putatives_preemptive_V2.bin --pair_list $dataset_out/matches/preemptive_pairs.txt

# Filter matches
openMVG_main_GeometricFilter -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches/matches.putatives_preemptive_V2.bin -g f -o $dataset_out/matches/matches.f.bin

# Compute of the camera motion and structure of the scene (scene will be in GPS prior coordinates)
openMVG_main_SfM --sfm_engine "INCREMENTAL" -i $dataset_out/matches/sfm_data.json -m $dataset_out/matches/ -o $dataset_out/reconstruction

```
4 changes: 4 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,7 @@ Spherical datasets
------------------
- [Flat (11 indoor images)](360_dataset/README.md)
- [School (4 outdoor images)](360_dataset/README.md)

Drone datasets
------------------
- [Palm Desert Micro (21 DJI Mini2 images)](Drone/Palm_Desert_Micro/)

0 comments on commit 84b70ff

Please sign in to comment.