Sfm: triangulation and orthophotos — very strange results

I’m still in the learning phase. I’m using a DJI Air 2S, which reports yaw, pitch, and roll, and following the instructions, I thought that sfm algorithm: triangulation could give me better results. What I find is that if my (nearly nadiral) photos are sparse, I get all sorts of strange artifacts in the orthophoto with triangulation that do not appear with incremental, and even with denser photos, there are smaller artifacts in the orthophoto that do not occur when I use incremental. Is this a known issue with sfm-algorithm: triangulation? Should it be noted in the documentation?

This is from incremental


This is from triangulation (same photos)

1 Like

What are your full processing parameters for each dataset? What version are you using?

These are the parameters for the incremental run

[INFO] DTM is turned on, automatically turning on point cloud classification
[INFO] Initializing ODM 2.8.8 - Mon Aug 29 14:15:32 2022
[INFO] ==============
[INFO] 3d_tiles: False
[INFO] auto_boundary: True
[INFO] auto_boundary_distance: 0
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 3
[INFO] debug: False
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 2.0
[INFO] depthmap_resolution: 640
[INFO] dsm: True
[INFO] dtm: True
[INFO] end_with: odm_postprocess
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: /var/www/data/750b86b9-f329-4166-bbcd-e501d8a04d2e/gcp/gcp_list.txt
[INFO] geo: None
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 0
[INFO] matcher_type: flann
[INFO] max_concurrency: 9
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 10000
[INFO] name: 750b86b9-f329-4166-bbcd-e501d8a04d2e
[INFO] no_gpu: False
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 2.0
[INFO] pc_classify: True
[INFO] pc_copc: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_geometric: False
[INFO] pc_las: False
[INFO] pc_quality: high
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] resize_to: 2048
[INFO] rolling_shutter: False
[INFO] rolling_shutter_readout: 0
[INFO] sfm_algorithm: incremental
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: False
[INFO] skip_report: False
[INFO] sky_removal: 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: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_data_term: gmi
[INFO] texturing_keep_unseen_faces: False
[INFO] texturing_outlier_removal_type: gauss_clamping
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] texturing_tone_mapping: none
[INFO] tiles: False
[INFO] time: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] verbose: False
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /var/www/data/750b86b9-f329-4166-bbcd-e501d8a04d2e/images
[INFO] Loading 104 images
[INFO] Wrote images database: /var/www/data/750b86b9-f329-4166-bbcd-e501d8a04d2e/images.json
[INFO] Found 104 usable images

These are the parameters for the triangulation run:

[INFO] DTM is turned on, automatically turning on point cloud classification
[INFO] Initializing ODM 3.0.2 - Mon Jan 30 14:51:09 2023
[INFO] ==============
[INFO] 3d_tiles: False
[INFO] align: None
[INFO] auto_boundary: True
[INFO] auto_boundary_distance: 0
[INFO] bg_removal: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {‘dji fc3411 5472 3648 brown 0.6111’: {‘projection_type’: ‘brown’, ‘width’: 5472, ‘height’: 3648, ‘focal_x’: 0.6283419967936914, ‘focal_y’: 0.6283419967936914, ‘c_x’: 0.007569731737564364, ‘c_y’: 0.002472184071427966, ‘k1’: -0.06882044698571836, ‘k2’: 0.04194169673011737, ‘p1’: 0.00040774105953342163, ‘p2’: 0.00037267705432290807, ‘k3’: 0.018507473910662615}}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 3
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 2.0
[INFO] dsm: True
[INFO] dtm: True
[INFO] end_with: odm_postprocess
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: None
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 0
[INFO] matcher_type: flann
[INFO] max_concurrency: 11
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 10000
[INFO] name: 1d122a43-2ebf-4bde-bee3-b47cb98c394a
[INFO] no_gpu: False
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 1.0
[INFO] pc_classify: True
[INFO] pc_copc: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: False
[INFO] pc_quality: ultra
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] rolling_shutter: False
[INFO] rolling_shutter_readout: 0
[INFO] sfm_algorithm: triangulation
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: False
[INFO] skip_report: False
[INFO] sky_removal: False
[INFO] sm_cluster: None
[INFO] sm_no_align: False
[INFO] smrf_scalar: 1.25
[INFO] smrf_slope: 0.15
[INFO] smrf_threshold: 0.5
[INFO] smrf_window: 18.0
[INFO] split: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_keep_unseen_faces: False
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] tiles: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /var/www/data/1d122a43-2ebf-4bde-bee3-b47cb98c394a/images
[INFO] Loading 104 images

1 Like

Are you able to try on the current release and without the custom lens calibration?

Sure. I just started a run, but after, I’ll do that.

2 Likes

Thanks for the response, Saijin. I have now stitched the same 104 photos 6 times with different parameters, and different versions of WebODM. Clearly the best orthophoto (most accurate, fewest stitching artifacts) was with v. 3.0.2, sfm-algorithm: incremental, cameras.json precalculated (as advised in the manual), pc-quality: ultra, ortho-resolution: 1.0.
As you advised, I updated to latest (3.0.4) and stitched with sfm-algorithm: triangular, and cameras.json calculated on the fly. The orthophoto had minor artifacts near the center, and major artifacts near the edge (calculated outside the centers of the drone photos). If I added precalculated cameras.json, the quality degraded noticeably, and was basically unusable.
I am going to do two or three more stitchings using v. 3.0.4 to confirm that sfm-algorithm: incremental is better than triangular, see if I can detect an effect of precalculated cameras.json vs calculated on-the-fly, and confirm that adding GCPs is not a confounding effect.
But so far I see that a pre-calculated cameras.json doesn’t seem to hurt the orthophoto when the sfm-algorithm is incremental (though it may not help either), but it highly degrades the image when sfm-algorithm is triangular, even with the latest version of WebODM. I don’t remember which sfm-algorithm I used when I calculated the cameras.json, should that make a difference?

Let me know if you want to continue this conversation (directly?), as I’ll have a few more results in a day or two. I am happy to share the raw photos.

1 Like

So, here are some results from the latest version of ODM, 3.0.4.

This is ultra quality, sfm-algorithm: triangulation, cameras.json calculated on the fly

This is ultra quality, sfm-algorithm: triangulation, cameras.json precalculated

This is ultra quality, sfm-algorithm: incremental, cameras.json precalculated

In all of these, I am displaying the orthophotos in Google Earth, and, as you can see, this is near the edge of the orthophoto. The defects in the orthophotos in the first case are much less noticeable near the center of the photo.

I tried using both pre-calculated and on-the-fly cameras.json in the case of sfm-algorithm: incremental, and the differences were very subtle. The pre-calculated looked as if I had slightly redistributed the contrast in Photoshop, and was aesthetically slightly better, but this can only be seen when switching between A/B in Google Earth.

Bottom line for me: I think that sfm-triangulation at least sometimes makes significantly worse orthophotos, and I won’t use it again. I couldn’t detect much, if any, positive effect of using a precalculated cameras.json on the orthophotos, so I probably won’t use that either, just in case it sometimes makes things worse. But, of course, the manual says that the precalculated cameras.json is useful to reduce artifacts in the point cloud, when you have a large number of photos, and this is a small set of photos (104), and I’m not currently examining the point cloud.

Parameters of the three WebODM runs follow.

First orthophoto:

[INFO] DTM is turned on, automatically turning on point cloud classification
[INFO] Initializing ODM 3.0.4 - Wed Feb 01 01:43:28 2023
[INFO] ==============
[INFO] 3d_tiles: False
[INFO] align: None
[INFO] auto_boundary: True
[INFO] auto_boundary_distance: 0
[INFO] bg_removal: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 3
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 2.0
[INFO] dsm: True
[INFO] dtm: True
[INFO] end_with: odm_postprocess
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: None
[INFO] gltf: True
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 0
[INFO] matcher_type: flann
[INFO] max_concurrency: 11
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 10000
[INFO] name: 19a8b253-b5c0-42f4-9012-507ef2567ba0
[INFO] no_gpu: False
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 1.0
[INFO] pc_classify: True
[INFO] pc_copc: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: False
[INFO] pc_quality: ultra
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_skip_geometric: False
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] rolling_shutter: False
[INFO] rolling_shutter_readout: 0
[INFO] sfm_algorithm: triangulation
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: False
[INFO] skip_report: False
[INFO] sky_removal: False
[INFO] sm_cluster: None
[INFO] sm_no_align: False
[INFO] smrf_scalar: 1.25
[INFO] smrf_slope: 0.15
[INFO] smrf_threshold: 0.5
[INFO] smrf_window: 18.0
[INFO] split: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_keep_unseen_faces: False
[INFO] texturing_single_material: False
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] tiles: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] video_limit: 500
[INFO] video_resolution: 4000
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /var/www/data/19a8b253-b5c0-42f4-9012-507ef2567ba0/images
[INFO] Loading 104 images

Second orthophoto

[INFO] DTM is turned on, automatically turning on point cloud classification
[INFO] Initializing ODM 3.0.4 - Wed Feb 01 06:04:52 2023
[INFO] ==============
[INFO] 3d_tiles: False
[INFO] align: None
[INFO] auto_boundary: True
[INFO] auto_boundary_distance: 0
[INFO] bg_removal: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {‘dji fc3411 5472 3648 brown 0.6111’: {‘projection_type’: ‘brown’, ‘width’: 5472, ‘height’: 3648, ‘focal_x’: 0.6283419967936914, ‘focal_y’: 0.6283419967936914, ‘c_x’: 0.007569731737564364, ‘c_y’: 0.002472184071427966, ‘k1’: -0.06882044698571836, ‘k2’: 0.04194169673011737, ‘p1’: 0.00040774105953342163, ‘p2’: 0.00037267705432290807, ‘k3’: 0.018507473910662615}}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 3
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 2.0
[INFO] dsm: True
[INFO] dtm: True
[INFO] end_with: odm_postprocess
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: None
[INFO] gltf: True
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 0
[INFO] matcher_type: flann
[INFO] max_concurrency: 11
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 10000
[INFO] name: 226f52df-3c17-4a9e-add4-ce0a8e08dbd1
[INFO] no_gpu: False
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 1.0
[INFO] pc_classify: True
[INFO] pc_copc: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: False
[INFO] pc_quality: ultra
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_skip_geometric: False
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] rolling_shutter: False
[INFO] rolling_shutter_readout: 0
[INFO] sfm_algorithm: triangulation
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: False
[INFO] skip_report: False
[INFO] sky_removal: False
[INFO] sm_cluster: None
[INFO] sm_no_align: False
[INFO] smrf_scalar: 1.25
[INFO] smrf_slope: 0.15
[INFO] smrf_threshold: 0.5
[INFO] smrf_window: 18.0
[INFO] split: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_keep_unseen_faces: False
[INFO] texturing_single_material: False
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] tiles: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] video_limit: 500
[INFO] video_resolution: 4000
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /var/www/data/226f52df-3c17-4a9e-add4-ce0a8e08dbd1/images
[INFO] Loading 104 images

Third orhtophoto:

[INFO] DTM is turned on, automatically turning on point cloud classification
[INFO] Initializing ODM 3.0.4 - Thu Feb 02 03:17:29 2023
[INFO] ==============
[INFO] 3d_tiles: False
[INFO] align: None
[INFO] auto_boundary: True
[INFO] auto_boundary_distance: 0
[INFO] bg_removal: False
[INFO] boundary: {}
[INFO] build_overviews: False
[INFO] camera_lens: auto
[INFO] cameras: {‘dji fc3411 5472 3648 brown 0.6111’: {‘projection_type’: ‘brown’, ‘width’: 5472, ‘height’: 3648, ‘focal_x’: 0.6283419967936914, ‘focal_y’: 0.6283419967936914, ‘c_x’: 0.007569731737564364, ‘c_y’: 0.002472184071427966, ‘k1’: -0.06882044698571836, ‘k2’: 0.04194169673011737, ‘p1’: 0.00040774105953342163, ‘p2’: 0.00037267705432290807, ‘k3’: 0.018507473910662615}}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 3
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 3
[INFO] dem_resolution: 2.0
[INFO] dsm: True
[INFO] dtm: True
[INFO] end_with: odm_postprocess
[INFO] fast_orthophoto: False
[INFO] feature_quality: high
[INFO] feature_type: sift
[INFO] force_gps: False
[INFO] gcp: None
[INFO] geo: None
[INFO] gltf: True
[INFO] gps_accuracy: 10
[INFO] ignore_gsd: False
[INFO] matcher_neighbors: 0
[INFO] matcher_type: flann
[INFO] max_concurrency: 11
[INFO] merge: all
[INFO] mesh_octree_depth: 11
[INFO] mesh_size: 200000
[INFO] min_num_features: 10000
[INFO] name: 9fa6e1f6-8abe-4ba8-81c4-43376186c70c
[INFO] no_gpu: False
[INFO] optimize_disk_space: False
[INFO] orthophoto_compression: DEFLATE
[INFO] orthophoto_cutline: False
[INFO] orthophoto_kmz: False
[INFO] orthophoto_no_tiled: False
[INFO] orthophoto_png: False
[INFO] orthophoto_resolution: 1.0
[INFO] pc_classify: True
[INFO] pc_copc: False
[INFO] pc_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_las: False
[INFO] pc_quality: ultra
[INFO] pc_rectify: False
[INFO] pc_sample: 0
[INFO] pc_skip_geometric: False
[INFO] pc_tile: False
[INFO] primary_band: auto
[INFO] project_path: /var/www/data
[INFO] radiometric_calibration: none
[INFO] rerun: None
[INFO] rerun_all: False
[INFO] rerun_from: None
[INFO] rolling_shutter: False
[INFO] rolling_shutter_readout: 0
[INFO] sfm_algorithm: incremental
[INFO] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_orthophoto: False
[INFO] skip_report: False
[INFO] sky_removal: False
[INFO] sm_cluster: None
[INFO] sm_no_align: False
[INFO] smrf_scalar: 1.25
[INFO] smrf_slope: 0.15
[INFO] smrf_threshold: 0.5
[INFO] smrf_window: 18.0
[INFO] split: 999999
[INFO] split_image_groups: None
[INFO] split_overlap: 150
[INFO] texturing_keep_unseen_faces: False
[INFO] texturing_single_material: False
[INFO] texturing_skip_global_seam_leveling: False
[INFO] texturing_skip_local_seam_leveling: False
[INFO] tiles: False
[INFO] use_3dmesh: False
[INFO] use_exif: False
[INFO] use_fixed_camera_params: False
[INFO] use_hybrid_bundle_adjustment: False
[INFO] video_limit: 500
[INFO] video_resolution: 4000
[INFO] ==============
[INFO] Running dataset stage
[INFO] Loading dataset from: /var/www/data/9fa6e1f6-8abe-4ba8-81c4-43376186c70c/images
[INFO] Loading 104 images

Looking at this, the camera orientation isn’t being parsed correctly, so this is sensor / drone specific issue. I’m surprised that’s the case worth a DJI, but if memory serves me, DJI used a couple different standards storing orientation, so perhaps we aren’t handling this correctly yet.

1 Like

Well, the images were all supposed to be taken with a camera pointed 5° forward of nadiral (which is the default for Map Pilot Pro which I use to take these photos), but when I look at the exifdata, the angles (there are 6, 3 for the drone, and 3 for the camera) look wild.

I have not tried to reconstruct the photo angle from the lat/lon of the camera and the image, but I wouldn’t be surprised if there are some bad data here.

So, it might be that my problems are limited to my equipment.

A

2 Likes

Looking at this, the camera orientation isn’t being parsed correctly, so this is sensor / drone specific issue. I’m surprised that’s the case worth a DJI, but if memory serves me, DJI used a couple different standards storing orientation, so perhaps we aren’t handling this correctly yet.

Not sure if this is related, but the DJI P1 sensor still isn’t being handled correctly either.

Here’s a logfile snippet from ODM 3.0.5:
“stages”: [
{
“name”: “dataset”,
“startTime”: “2023-02-27T18:24:44.987523”,
“messages”: [
{
“message”: “Running dataset stage”,
“type”: “info”
},
{
“message”: “Loading dataset from: /datasets/code/images”,
“type”: “info”
},
{
“message”: “Loading 253 images”,
“type”: “info”
},
{
“message”: “Forcing GPS DOP to 0.03 for all images”,
“type”: “info”
},
{
“message”: “Wrote images database: /datasets/code/images.json”,
“type”: “info”
},
{
“message”: “Found 253 usable images”,
“type”: “info”
},
{
“message”: “No omega/phi/kappa angles found in input photos (DJI_20221121145239_0095.JPG), switching sfm-algorithm to incremental”,
“type”: “warning”
},
{
“message”: “Finished dataset stage”,
“type”: “info”
}
]

1 Like

Would you be able to attach this to an issue on the ODM repo with a minimal testcase of the data, say about 20 images in a cluster?

2 Likes

Sure, I can do that.

2 Likes

Issue created here: DJI P1 Sensor is not being handled correctly for SFM Triangulation · Issue #1615 · OpenDroneMap/ODM (github.com)

2 Likes

I may add to this topic also… using triangulation in a large dataset with 85% overlapping front and lateral; in the reports only shown a 2 photos in the survey data using triangulation:

image

When using incremental the center part of the survey surface reports 5+ overlapping images. Any parameter that’s need to be fixed or this is normal using triangulation?

1 Like

You’re not also using pc-rectify are you? If so, we have a bug we’re currently fixing regarding that and how it ruins the overlap image generation.

yeah, had the parameter set… running the dataset again…

1 Like

also pc-classify is not doing anything with any of my datasets.

1 Like

We are currently working on improving that, as well :rofl:
Usually it will yield unclassified and ground, and that’s about it.

It will be much more sophisticated shortly

Ok the new process ran good…

image

but now i’m hitting the same issue reported here… strange result in the ortophoto geometry and points placement in the point cloud… running my set yet again using incremental not triangulation.

1 Like

Hi, if you are resizing the images from webodm prior to the pipeline, this is expected. The reason is that xmp-metadata is not copied over in the resizing process. In other words, there is no parsing at all. Triangulation requires xmp metadata (yaw pitch roll angles). I have a local fix for this as I run the resizing externally now, but, it uses third party non-python packages. I am working on a pure python version. This byte-parsing is not trivial as I see it (pain).

The resizing function in webodm (in task.py) also uses a stale third party package with bugs. I tried to fix this last year but it has not been merged.

This may also cause errors on some datasets so that gps-data are not loaded (i see it for our sony camera, but not the recent DJI’s).
So resizing or pre-processing of images must: in addition both retain exif and xmp meatadata.

other relevant info:

1 Like