Multispectral - Rededge Mapping

Hello,

I’m currently dealing with images from a Micasense RedEdge-MX as input for the newest version of ODM.
During the testing I got a doubt about the process. Does the ODM already include some correction based on the DLS information, or are we required to pre-process the images based on the calibration panel?

If the DLS correction is being made, Is there an option to disable it? I believe the panel calibration would be more accurate.

Thank you.

Radiometric calibration (including DLS correction) is going to make its way into ODM once https://github.com/OpenDroneMap/ODM/pull/1082 is merged (probably within this month).

For the time being, you’ll have to radiometrically correct the images before processing.

Panel calibration is also in the TODO list, but no ETA for that.

2 Likes

Hello @pierotofy ,
Thanks for your reply.
I’m in a research team that has developed some preprocessing scripts to deal with the panel calibration for correcting the input images for ODM. However this is based on the libraries available from Micasense.

2 Likes

Hi Guys,

Any guide on how to achieve this on WebODM.

We have a decent cluster already setup and I’d like to process a few multi-spectral projects, flown by WingtraOne and using the Micasense RedEdge

Trying to upload the images and use the multi spec option to process. I am also adding split option.
I combined all 5 RedEdge folders produced into one so that I could process each mission this way (not sure if this is correct)

Direct upload of RedEdge images produces a “Process exited with Code 1” - here’s the full output below.

[INFO]    Initializing OpenDroneMap app - Fri May 22 08:56:43  2020
[INFO]    ==============
[INFO]    build_overviews: False
[INFO]    camera_lens: auto
[INFO]    cameras: {}
[INFO]    crop: 3
[INFO]    debug: False
[INFO]    dem_decimation: 1
[INFO]    dem_euclidean_map: False
[INFO]    dem_gapfill_steps: 3
[INFO]    dem_resolution: 5
[INFO]    depthmap_resolution: 640
[INFO]    dsm: False
[INFO]    dtm: False
[INFO]    end_with: odm_orthophoto
[INFO]    fast_orthophoto: False
[INFO]    feature_type: sift
[INFO]    force_gps: False
[INFO]    gcp: None
[INFO]    ignore_gsd: False
[INFO]    matcher_distance: 0
[INFO]    matcher_neighbors: 8
[INFO]    max_concurrency: 8
[INFO]    merge: all
[INFO]    mesh_octree_depth: 10
[INFO]    mesh_point_weight: 4
[INFO]    mesh_samples: 1.0
[INFO]    mesh_size: 200000
[INFO]    min_num_features: 8000
[INFO]    mve_confidence: 0.6
[INFO]    name: 662de406-364e-44eb-8861-800283a72c94
[INFO]    opensfm_depthmap_method: PATCH_MATCH
[INFO]    opensfm_depthmap_min_consistent_views: 3
[INFO]    opensfm_depthmap_min_patch_sd: 1
[INFO]    orthophoto_compression: DEFLATE
[INFO]    orthophoto_cutline: False
[INFO]    orthophoto_no_tiled: False
[INFO]    orthophoto_png: False
[INFO]    orthophoto_resolution: 5
[INFO]    pc_classify: False
[INFO]    pc_csv: False
[INFO]    pc_ept: False
[INFO]    pc_filter: 2.5
[INFO]    pc_las: False
[INFO]    pc_rectify: False
[INFO]    pc_sample: 0
[INFO]    project_path: /var/www/data
[INFO]    rerun: None
[INFO]    rerun_all: False
[INFO]    rerun_from: ['dataset', 'split', 'merge', 'opensfm', 'mve', 'odm_filterpoints', 'odm_meshing', 'mvs_texturing', 'odm_georeferencing', 'odm_dem', 'odm_orthophoto']
[INFO]    resize_to: 2048
[INFO]    skip_3dmodel: False
[INFO]    sm_cluster: None
[INFO]    smrf_scalar: 1.25
[INFO]    smrf_slope: 0.15
[INFO]    smrf_threshold: 0.5
[INFO]    smrf_window: 18.0
[INFO]    split: 100
[INFO]    split_overlap: 150
[INFO]    texturing_data_term: area
[INFO]    texturing_keep_unseen_faces: False
[INFO]    texturing_nadir_weight: 16
[INFO]    texturing_outlier_removal_type: gauss_clamping
[INFO]    texturing_skip_global_seam_leveling: True
[INFO]    texturing_skip_hole_filling: False
[INFO]    texturing_skip_local_seam_leveling: False
[INFO]    texturing_skip_visibility_test: False
[INFO]    texturing_tone_mapping: none
[INFO]    time: False
[INFO]    use_3dmesh: False
[INFO]    use_exif: False
[INFO]    use_fixed_camera_params: False
[INFO]    use_hybrid_bundle_adjustment: False
[INFO]    use_opensfm_dense: False
[INFO]    verbose: False
[INFO]    ==============
[INFO]    Running dataset stage
[INFO]    Loading dataset from: /var/www/data/662de406-364e-44eb-8861-800283a72c94/images
[INFO]    Loading 5682 images
[WARNING] Cannot read /var/www/data/662de406-364e-44eb-8861-800283a72c94/images/5_IMG_1130_1.tif with PIL, fallback to cv2: cannot identify image file '/var/www/data/662de406-364e-44eb-8861-800283a72c94/images/5_IMG_1130_1.tif'
Traceback (most recent call last):
File "/code/run.py", line 57, in <module>
app.execute()
File "/code/stages/odm_app.py", line 92, in execute
self.first_stage.run()
File "/code/opendm/types.py", line 445, in run
self.process(self.args, outputs)
File "/code/stages/dataset.py", line 89, in process
photos += [types.ODM_Photo(f)]
File "/code/opendm/types.py", line 39, in __init__
self.parse_exif_values(path_file)
File "/code/opendm/types.py", line 105, in parse_exif_values
self.width, self.height = get_image_size.get_image_size(_path_file)
File "/code/opendm/get_image_size.py", line 19, in get_image_size
width = img.shape[1]
AttributeError: 'NoneType' object has no attribute 'shape'

Thanks and Kind regards,

Taariq

From the error message it looks like you’re trying to process a TIF image and I think ODM can only process JPG?

1 Like

ODM should be able to now process TIFFs.

Not sure why that particular image can’t be read, perhaps it’s corrupted?

4 Likes

Thanks, let me try and update WebODM and see if will return the same error, will update on this post

Is there anything I need to do before uploading them from the MicaSense? they Are in 4 folders about 1000 images each

image

I upgraded WebODM, and tried a completely different set of mission files, same camera.

I get the error below now, I don’t think its a file corrupt issue, its not detecting it as multi camera

Launching... please wait! This can take a few minutes.
[INFO]    build_overviews: False
[INFO]    camera_lens: auto
[INFO]    cameras: {}
[INFO]    crop: 3
[INFO]    debug: False
[INFO]    dem_decimation: 1
[INFO]    dem_euclidean_map: False
[INFO]    dem_gapfill_steps: 3
[INFO]    dem_resolution: 5
[INFO]    depthmap_resolution: 640
[INFO]    dsm: False
[INFO]    dtm: False
[INFO]    end_with: odm_orthophoto
[INFO]    fast_orthophoto: False
[INFO]    feature_type: sift
[INFO]    force_gps: False
[INFO]    gcp: None
[INFO]    ignore_gsd: False
[INFO]    matcher_distance: 0
[INFO]    matcher_neighbors: 8
[INFO]    max_concurrency: 8
[INFO]    merge: all
[INFO]    mesh_octree_depth: 10
[INFO]    mesh_point_weight: 4
[INFO]    mesh_samples: 1.0
[INFO]    mesh_size: 200000
[INFO]    min_num_features: 8000
[INFO]    mve_confidence: 0.6
[INFO]    name: 91eca689-0dd3-4604-b144-352da328f8c6
[INFO]    opensfm_depthmap_method: PATCH_MATCH
[INFO]    opensfm_depthmap_min_consistent_views: 3
[INFO]    opensfm_depthmap_min_patch_sd: 1
[INFO]    orthophoto_compression: DEFLATE
[INFO]    orthophoto_cutline: False
[INFO]    orthophoto_no_tiled: False
[INFO]    orthophoto_png: False
[INFO]    orthophoto_resolution: 5
[INFO]    pc_classify: False
[INFO]    pc_csv: False
[INFO]    pc_ept: False
[INFO]    pc_filter: 2.5
[INFO]    pc_las: False
[INFO]    pc_rectify: False
[INFO]    pc_sample: 0
[INFO]    project_path: /var/www/data
[INFO]    rerun: None
[INFO]    rerun_all: False
[INFO]    rerun_from: None
[INFO]    resize_to: 2048
[INFO]    skip_3dmodel: False
[INFO]    sm_cluster: True
[INFO]    smrf_scalar: 1.25
[INFO]    smrf_slope: 0.15
[INFO]    smrf_threshold: 0.5
[INFO]    smrf_window: 18.0
[INFO]    split: 600
[INFO]    split_overlap: 150
[INFO]    texturing_data_term: area
[INFO]    texturing_keep_unseen_faces: False
[INFO]    texturing_nadir_weight: 16
[INFO]    texturing_outlier_removal_type: gauss_clamping
[INFO]    texturing_skip_global_seam_leveling: True
[INFO]    texturing_skip_hole_filling: False
[INFO]    texturing_skip_local_seam_leveling: False
[INFO]    texturing_skip_visibility_test: False
[INFO]    texturing_tone_mapping: none
[INFO]    time: False
[INFO]    use_3dmesh: False
[INFO]    use_exif: False
[INFO]    use_fixed_camera_params: False
[INFO]    use_hybrid_bundle_adjustment: False
[INFO]    use_opensfm_dense: False
[INFO]    verbose: False
[INFO]    ==============
[INFO]    Running dataset stage
[INFO]    Loading dataset from: /var/www/data/91eca689-0dd3-4604-b144-352da328f8c6/images
[INFO]    Loading 99 images
[INFO]    Wrote images database: /var/www/data/91eca689-0dd3-4604-b144-352da328f8c6/images.json
[INFO]    Found 99 usable images
[ERROR]   Multi-camera setup detected, but band "Rededge" (identified from "IMG_0013_5.tif") has only 19 images (instead of 20), perhaps images are missing or are corrupted. Please include all necessary files to process all bands and try again.
Traceback (most recent call last):
File "/code/run.py", line 57, in <module>
app.execute()
File "/code/stages/odm_app.py", line 92, in execute
self.first_stage.run()
File "/code/opendm/types.py", line 445, in run
self.process(self.args, outputs)
File "/code/stages/dataset.py", line 104, in process
reconstruction = types.ODM_Reconstruction(photos)
File "/code/opendm/types.py", line 151, in __init__
self.multi_camera = self.detect_multi_camera()
File "/code/opendm/types.py", line 177, in detect_multi_camera
raise RuntimeError("Invalid multi-camera images")
RuntimeError: Invalid multi-camera images

I dumped the full set IMG_0013_1.tif … IMG_0013_5.tif and its accepted the upload now, looks like will process this time! Thanks guys.


UPDATE:

It’s been running for about 3.5 hours and completed processing all the submodels, after a while plenty of these errors started appearing …

ERROR 6: PNG driver doesn't support 7 bands.  Must be 1 (grey),
2 (grey+alpha), 3 (rgb) or 4 (rgba) bands.


ERROR 6: PNG driver doesn't support 7 bands.  Must be 1 (grey),
2 (grey+alpha), 3 (rgb) or 4 (rgba) bands.

What could be happening here?

RESULT: Completed and looks good so far, will be analyzed further. Thanks for the help

1 Like