Good Evening everyone!
I’m fairly new to WebODM, but have been running as many different datasets as I can to get better and explore the functionality.
I am running WebODM Desktop on a Dell XPS with 16 GB RAM, Windows 11 x64, and I used the paid installer. I am installing Build 47 as we speak, although the projects described below were run on a previous (but relatively recent) Build. I know I had at least Build 43, but may have had a more recent one than that. All of it used a Lightning node.
I have 500-600 images of a friend’s house that I am working on turning into a nice 3D product for him to explore, but have been trouble getting a usable product.
First, I used 622 of the images (all drone images, taken with a Mavic 2 Pro both at nadir with DJI GSP and manually, unfortunately at pretty low light) on the “3D Model” preset (auto-boundary: true, camera-lens: brown, dsm: true, dtm: true, mesh-octree-depth: 12, mesh-size: 300000, pc-geometric: true, pc-quality: high, use-3dmesh: true).
This created a very impressive point cloud, but with two major issues: first, most of his garage is cut off, likely because of the drone path, although I could have sworn I flew farther behind the garage.
Second, the roof shows some significant errors both in the point cloud
as well as in the textured model
even though there is lots of lots of overlapping imagery of the rooftop from various angles.
Next, to fix the issue with cropping out the garage, I ran the same dataset without cropping. However, this produced a model with lots of random points pulled from the background of the images – likely because of the house’s location high on a hill, it is almost impossible to get oblique images without capturing points behind. This was so bad that I couldn’t even zoom close enough to examine the house.
So, I tried running it again, this time on the “Buildings” preset, but with cropping set to 9 (crop: 9, dem-gapfill-steps: 4, dem-resolution: 4, dsm: true, mesh-octree-depth: 12, mesh-size: 300000, pc-geometric: true, pc-quality: high). This was better, but still had a good amount of stretched out background points.
After that, I decided to go through the dataset and remove any images that had more than a little bit of background or horizon in them, and removed anything that was even slightly blurry. All in all I removed 100 images, mostly blurry ones (due to the low light and slow shutter). I then re-ran these 522 remaining images on the “Buildings” preset with Crop:3 (camera-lens: brown, crop: 3, dem-gapfill-steps: 4, dem-resolution: 3, depthmap-resolution: 900, dsm: true, dtm: true, mesh-octree-depth: 12, mesh-size: 300000, orthophoto-resolution: 4, pc-geometric: true, pc-quality: high), and obtained even more distant points.
After that, I decided I couldn’t leave it auto-cropped due to the background points, and I can’t use auto-boundary because it cuts off the garage, so I’d better use a JSON boundary. I used ArcGIS Pro to draw a circle around the property and exported that as GeoJSON, and ran the pared-down dataset with the following settings:
Options: boundary: {“type”:“FeatureCollection”,“crs”:{“type”:“name”,“properties”:{“name”:“EPSG:3857”}},“features”:[{“type”:“Feature”,“id”:3,“geometry”:{“type”:“Polygon”,“coordinates”:[[[-13565822.9439,4530499.822800003],[-13565815.762944307,4530501.661919829],[-13565808.813567009,4530504.241579028],[-13565802.171906939,4530507.533514313],[-13565795.910731515,4530511.501658554],[-13565790.098639484,4530516.10253593],[-13565784.799309343,4530521.285738267],[-13565780.070801662,4530526.994477315],[-13565775.96492296,4530533.1662069345],[-13565772.526658107,4530539.733308365],[-13565769.793677446,4530546.623831068],[-13565767.79592409,4530553.762281035],[-13565766.55528584,4530561.070447915],[-13565766.08535539,4530568.468261901],[-13565766.391281396,4530575.874670996],[-13565767.469712067,4530583.208529033],[-13565769.308831893,4530590.389484726],[-13565771.888491092,4530597.338862024],[-13565775.180426378,4530603.980522093],[-13565779.148570618,4530610.241697518],[-13565783.749447994,4530616.0537895495],[-13565788.932650331,4530621.35311969],[-13565794.64138938,4530626.081627371],[-13565800.813119,4530630.187506072],[-13565807.38022043,4530633.625770927],[-13565814.270743132,4530636.358751587],[-13565821.4091931,4530638.356504943],[-13565828.717359979,4530639.597143193],[-13565836.115173966,4530640.067073643],[-13565843.521583062,4530639.761147638],[-13565850.855441097,4530638.682716966],[-13565858.03639679,4530636.843597139],[-13565864.985774089,4530634.263937941],[-13565871.627434159,4530630.972002655],[-13565877.888609583,4530627.0038584145],[-13565883.700701613,4530622.402981038],[-13565889.000031754,4530617.219778702],[-13565893.728539435,4530611.511039654],[-13565897.834418137,4530605.339310034],[-13565901.27268299,4530598.772208604],[-13565904.005663652,4530591.8816859005],[-13565906.003417008,4530584.743235934],[-13565907.244055258,4530577.435069053],[-13565907.713985708,4530570.037255067],[-13565907.408059701,4530562.630845972],[-13565906.32962903,4530555.296987936],[-13565904.490509205,4530548.116032243],[-13565901.910850005,4530541.166654944],[-13565898.61891472,4530534.524994875],[-13565894.65077048,4530528.2638194505],[-13565890.049893104,4530522.451727419],[-13565884.866690766,4530517.152397279],[-13565879.157951718,4530512.423889598],[-13565872.986222098,4530508.318010896],[-13565866.419120668,4530504.879746041],[-13565859.528597966,4530502.146765382],[-13565852.390147997,4530500.149012025],[-13565845.081981119,4530498.908373776],[-13565837.684167132,4530498.438443325],[-13565830.277758036,4530498.744369331],[-13565822.9439,4530499.822800003]]]},“properties”:{“OBJECTID”:3,“Shape_Length”:444.96676674211153,“Shape_Area”:15755.97518019132}}]}, camera-lens: brown, crop: 0, dem-gapfill-steps: 4, dem-resolution: 3, depthmap-resolution: 990, dsm: true, dtm: true, mesh-octree-depth: 12, mesh-size: 300000, pc-geometric: true, pc-quality: high, use-3dmesh: true
This time, the processing failed, with the following Task Output:
Launching… please wait! This can take up to 5 minutes.
[INFO] ==============
[INFO] auto_boundary: False
[INFO] boundary: {‘type’: ‘FeatureCollection’, ‘crs’: {‘type’: ‘name’, ‘properties’: {‘name’: ‘EPSG:3857’}}, ‘features’: [{‘type’: ‘Feature’, ‘id’: 3, ‘geometry’: {‘type’: ‘Polygon’, ‘coordinates’: [[[-13565822.9439, 4530499.822800003], [-13565815.762944307, 4530501.661919829], [-13565808.813567009, 4530504.241579028], [-13565802.171906939, 4530507.533514313], [-13565795.910731515, 4530511.501658554], [-13565790.098639484, 4530516.10253593], [-13565784.799309343, 4530521.285738267], [-13565780.070801662, 4530526.994477315], [-13565775.96492296, 4530533.1662069345], [-13565772.526658107, 4530539.733308365], [-13565769.793677446, 4530546.623831068], [-13565767.79592409, 4530553.762281035], [-13565766.55528584, 4530561.070447915], [-13565766.08535539, 4530568.468261901], [-13565766.391281396, 4530575.874670996], [-13565767.469712067, 4530583.208529033], [-13565769.308831893, 4530590.389484726], [-13565771.888491092, 4530597.338862024], [-13565775.180426378, 4530603.980522093], [-13565779.148570618, 4530610.241697518], [-13565783.749447994, 4530616.0537895495], [-13565788.932650331, 4530621.35311969], [-13565794.64138938, 4530626.081627371], [-13565800.813119, 4530630.187506072], [-13565807.38022043, 4530633.625770927], [-13565814.270743132, 4530636.358751587], [-13565821.4091931, 4530638.356504943], [-13565828.717359979, 4530639.597143193], [-13565836.115173966, 4530640.067073643], [-13565843.521583062, 4530639.761147638], [-13565850.855441097, 4530638.682716966], [-13565858.03639679, 4530636.843597139], [-13565864.985774089, 4530634.263937941], [-13565871.627434159, 4530630.972002655], [-13565877.888609583, 4530627.0038584145], [-13565883.700701613, 4530622.402981038], [-13565889.000031754, 4530617.219778702], [-13565893.728539435, 4530611.511039654], [-13565897.834418137, 4530605.339310034], [-13565901.27268299, 4530598.772208604], [-13565904.005663652, 4530591.8816859005], [-13565906.003417008, 4530584.743235934], [-13565907.244055258, 4530577.435069053], [-13565907.713985708, 4530570.037255067], [-13565907.408059701, 4530562.630845972], [-13565906.32962903, 4530555.296987936], [-13565904.490509205, 4530548.116032243], [-13565901.910850005, 4530541.166654944], [-13565898.61891472, 4530534.524994875], [-13565894.65077048, 4530528.2638194505], [-13565890.049893104, 4530522.451727419], [-13565884.866690766, 4530517.152397279], [-13565879.157951718, 4530512.423889598], [-13565872.986222098, 4530508.318010896], [-13565866.419120668, 4530504.879746041], [-13565859.528597966, 4530502.146765382], [-13565852.390147997, 4530500.149012025], [-13565845.081981119, 4530498.908373776], [-13565837.684167132, 4530498.438443325], [-13565830.277758036, 4530498.744369331], [-13565822.9439, 4530499.822800003]]]}, ‘properties’: {‘OBJECTID’: 3, ‘Shape_Length’: 444.96676674211153, ‘Shape_Area’: 15755.97518019132}}]}
[INFO] build_overviews: False
[INFO] camera_lens: brown
[INFO] cameras: {}
[INFO] cog: True
[INFO] copy_to: None
[INFO] crop: 0.0
[INFO] debug: False
[INFO] dem_decimation: 1
[INFO] dem_euclidean_map: False
[INFO] dem_gapfill_steps: 4
[INFO] dem_resolution: 3.0
[INFO] depthmap_resolution: 990.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_distance: 0
[INFO] matcher_neighbors: 8
[INFO] matcher_type: flann
[INFO] max_concurrency: 16
[INFO] merge: all
[INFO] mesh_octree_depth: 12
[INFO] mesh_size: 300000
[INFO] min_num_features: 8000
[INFO] name: 0e3365ea-f2ea-4239-a194-1ffac40f4b07
[INFO] optimize_disk_space: True
[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_csv: False
[INFO] pc_ept: True
[INFO] pc_filter: 2.5
[INFO] pc_geometric: True
[INFO] pc_las: False
[INFO] pc_quality: high
[INFO] pc_rectify: False
[INFO] pc_sample: 0.01
[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] skip_3dmodel: False
[INFO] skip_band_alignment: False
[INFO] skip_report: 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: True
[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/0e3365ea-f2ea-4239-a194-1ffac40f4b07/images
[INFO] Loading 522 images
[INFO] Wrote images database: /var/www/data/0e3365ea-f2ea-4239-a194-1ffac40f4b07/images.json
[INFO] Found 522 usable images
[INFO] Parsing SRS header: WGS84 UTM 10N
Traceback (most recent call last):
File “/code/run.py”, line 53, in
retcode = app.execute()
File “/code/stages/odm_app.py”, line 130, in execute
raise e
File “/code/stages/odm_app.py”, line 94, in execute
self.first_stage.run()
File “/code/opendm/types.py”, line 327, in run
self.process(self.args, outputs)
File “/code/stages/dataset.py”, line 161, in process
outputs[‘boundary’] = boundary.load_boundary(args.boundary, reconstruction.get_proj_srs())
File “/code/opendm/boundary.py”, line 50, in load_boundary
geom = src[0][‘geometry’]
TypeError: ‘NoneType’ object is not subscriptable
Can anyone offer me any advice, either on reducing the processed area, healing the errors in the rooftop, or on why the GeoJSON is failing? I really appreciate how great the community is here in helping and working with everyone to create the best products and improve the program itself.
Thanks very much,
Conor