Distorted Orthomosaic

Hi!

Heads up, this is my first time using ODM or any photogrammetry tool in general.
Here’s a brief detail about the issue.

Objective

I’m trying to create an Orthomosaic of solar power plant.

Issue

  • Distorted Orthomosaic possibly due to poor point cloud.
  • PC spans ~700m in height/depth.

Processing parameters

auto-boundary: true, mesh-size: 300000, feature-quality: ultra, pc-quality: ultra
Any advice on trying with different parameters?

Deployment stack

Docker + GPU (Tesla T4) on EC2

Dataset link (425 Images)

https://drive.google.com/file/d/1kNZSmRu9OOzWvoPbV8La5h8gAyTq5cPF/view?usp=sharing

Distorted Ortho

All downloadable assets link -

https://drive.google.com/file/d/1jXN1gUOarYl7PyuNjzTrcxG1Q6d6cH3V/view?usp=sharing

Point cloud image

Some additional queries for investigation purpose

I noticed OpenSFM generates intermediate artefacts corresponding to each image, specifically features and matches directories.

  • Each zip in features directory contains few .npy files (descriptors.npy, points.npy etc.).
  • Is there any way we can visualise these features to get better understating of what might be happening behind the scene?
  • And how to handle .pkl files in matches directory?

I did try to get into OpenSFM repo but couldn’t figure out how to visualise these.


Let me know if I’ve missed adding any important info which can help in resolving this. Thank you.

2 Likes

I’ve had a few goes at this, one produced an ortho with a bit less distortion than your image above, but the others failed, telling me my Graphics card drivers were out of date (they aren’t) and then running out of memory, which is very strange, as I don’t see that error with 389GB of RAM (96GB) + virtual memory, with much larger tasks.
I also noted that only a small number of features were being found, even going to very low thresholds (I think well into noise) only ~3-4000 features being detected.
However the time it worked, it did produce a single reconstruction, even though it is very messy.

3D model in Meshlab

2 Likes

Sorry for the trouble! Could you please start by describing your dataset and your Processing Parameters?

For example:

  1. Image Resolution (Megapixels)
  2. Image Count (Number of Images)
  3. Image Band Count/Type (BGR [3], BGRN [4], etc)
  4. Flight Plan (Grid, Cross-grid, Corridor, Orbit, Free-Flight, etc)
  5. Flight Plan Frontal Overlap and Sidelap
  6. Flight Plan Ground Sample Distance (GSD)
  7. Processing Parameters from WebODM

PFB dataset details

  1. Image Resolution (Megapixels) - width:640, height:512, Megapixels:0.328
  2. Image Count (Number of Images) - 425 images (subset of whole solar plant containing ~2.7K images)
  3. Processing Parameters from WebODM - auto-boundary: true, mesh-size: 300000, feature-quality: ultra, pc-quality: ultra
  4. Image Band Count/Type (BGR [3], BGRN [4], etc) - Grayscale IR images have a single channel and represent the intensity or temperature values. There is no color information in these images. There is only one band representing the intensity of the infrared radiation.
  5. Flight Plan (Grid, Cross-grid, Corridor, Orbit, Free-Flight, etc) - The flight plan was a corridor Mission, however, we collected the corridor mapping with a 17meter distance between the flight path lines, which will be around 42% of side overlap at 4.5Cm/Pix
  6. Flight Plan Frontal Overlap and Sidelap - Frontal Overlap of 60% and Side overlap of 42%
  7. Flight Plan Ground Sample Distance (GSD) - GSD-4Cm/Pix

Also attaching properties and exif data for one of the image for a quick glance
Screenshot from 2023-06-09 11-25-43

EXIF Details

ExifTool Version Number         : 12.40
File Name                       : DJI_20230514102625_0001_T.JPG
Directory                       : .
File Size                       : 1175 KiB
File Modification Date/Time     : 2023:06:05 10:28:28+05:30
File Access Date/Time           : 2023:06:08 12:51:40+05:30
File Inode Change Date/Time     : 2023:06:06 09:30:42+05:30
File Permissions                : -rw-r--r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
Exif Byte Order                 : Little-endian (Intel, II)
Image Description               : default
Make                            : DJI
Camera Model Name               : ZH20T
Orientation                     : Horizontal (normal)
X Resolution                    : 72
Y Resolution                    : 72
Resolution Unit                 : inches
Software                        : 04.01.04.00
Modify Date                     : 2023:05:14 10:26:25
Y Cb Cr Positioning             : Centered
F Number                        : 1.0
Exif Version                    : 0230
Date/Time Original              : 2023:05:14 10:26:25
Create Date                     : 2023:05:14 10:26:25
Components Configuration        : Y, Cb, Cr, -
Aperture Value                  : 1.0
Max Aperture Value              : 1.0
Flash                           : No Flash
Focal Length                    : 13.5 mm
Warning                         : [minor] Bad MakerNotes directory
Flashpix Version                : 0100
Color Space                     : sRGB
Exif Image Width                : 640
Exif Image Height               : 512
Interoperability Index          : R98 - DCF basic file (sRGB)
Interoperability Version        : 0100
File Source                     : Digital Camera
Scene Type                      : Directly photographed
Digital Zoom Ratio              : 1
Focal Length In 35mm Format     : 58 mm
Contrast                        : Normal
Saturation                      : Normal
Sharpness                       : Normal
Device Setting Description      : (Binary data 4 bytes, use -b option to extract)
Serial Number                   : 1W9DJ8P001DJV3
Lens Info                       : 13.5mm f/1
GPS Version ID                  : 2.3.0.0
GPS Latitude Ref                : North
GPS Longitude Ref               : East
GPS Altitude Ref                : Above Sea Level
GPS Status                      : Measurement Active
GPS Map Datum                   : WGS-84
XP Comment                      : 0.9.142
XP Keywords                     : single
Compression                     : JPEG
Thumbnail Offset                : 1178
Thumbnail Length                : 10474
About                           : DJI Meta Data
Format                          : image/jpg
Image Source                    : InfraredCamera
Gps Status                      : RTK
Altitude Type                   : RtkAlt
Absolute Altitude               : +54.409
Relative Altitude               : +49.986
Gimbal Roll Degree              : +0.00
Gimbal Yaw Degree               : +179.60
Gimbal Pitch Degree             : -89.90
Flight Roll Degree              : +3.50
Flight Yaw Degree               : +179.20
Flight Pitch Degree             : -2.50
Flight X Speed                  : 0.0
Flight Y Speed                  : 0.0
Flight Z Speed                  : 0.0
Cam Reverse                     : 0
Gimbal Reverse                  : 0
Self Data                       : 
Rtk Flag                        : 50
Rtk Std Lon                     : 0.01132
Rtk Std Lat                     : 0.01110
Rtk Std Hgt                     : 0.02238
LRF Status                      : Normal
LRF Target Distance             : 51.190
LRF Target Lon                  : 54.5457458
LRF Target Lat                  : 24.1310635
LRF Target Alt                  : -1.223
LRF Target Abs Alt              : 3.200
Version                         : 7.0
Has Settings                    : False
Has Crop                        : False
Already Applied                 : False
MPF Version                     : 0100
Number Of Images                : 2
MP Image Flags                  : Dependent child image
MP Image Format                 : JPEG
MP Image Type                   : Large Thumbnail (VGA equivalent)
MP Image Length                 : 264425
MP Image Start                  : 938949
Dependent Image 1 Entry Number  : 0
Dependent Image 2 Entry Number  : 0
Image UID List                  : (Binary data 66 bytes, use -b option to extract)
Total Frames                    : 1
Thermal Data                    : (Binary data 655360 bytes, use -b option to extract)
K1                              : -184.669998168945
K2                              : 21.2401008605957
K3                              : 858.638977050781
K4                              : 0
KF                              : 79.6526184082031
B1                              : 0
B2                              : -910
Object Distance                 : 5
Relative Humidity               : 70
Emissivity                      : 100
Reflection                      : 230
Ambient Temperature             : 21
D2                              : -945
KJ                              : 100
DB                              : 0
KK                              : 449
Thermal Calibration             : (Binary data 32768 bytes, use -b option to extract)
Image Width                     : 640
Image Height                    : 512
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Aperture                        : 1.0
Image Size                      : 640x512
Megapixels                      : 0.328
Scale Factor To 35 mm Equivalent: 4.3
Thumbnail Image                 : (Binary data 10474 bytes, use -b option to extract)
GPS Altitude                    : 54.4 m Above Sea Level
GPS Latitude                    : 24 deg 7' 51.83" N
GPS Longitude                   : 54 deg 32' 44.68" E
Preview Image                   : (Binary data 264425 bytes, use -b option to extract)
Circle Of Confusion             : 0.007 mm
Depth Of Field                  : 1.99 m (4.20 - 6.18 m)
Field Of View                   : 34.5 deg
Focal Length                    : 13.5 mm (35 mm equivalent: 58.0 mm)
GPS Position                    : 24 deg 7' 51.83" N, 54 deg 32' 44.68" E
Hyperfocal Distance             : 26.06 m

Let me know if anything else is required.

1 Like

Minimum recommend overlap and sidelap is 65%, so you are well below that, unfortunately.

With these really low-resolution Thermal images, tighter is way better, and makes for less frustrating reconstruction and better results.

Can you refly with frontal overlap maxed out, and side overlap at 75% or so?

If you want good 3D, you will want 85% or tighter.

I am curious mostly for my own knowledge if you are attempting to create a ortho of this site then why use the thermal images instead of the regular 12mp images this camera is capable of?

1 Like

Hot-spotting on the panels can show potential damage or upcoming failure. Really important for maintenance and inventory.

2 Likes

that makes more sense now.

2 Likes

Hi, unfortunately, getting images with higher side overlap of same solar plant was not possible.

But I was able to get my hands on another dataset with ~80% front and ~60% side overlap and was able to get much better point cloud and ortho for most part.

Point Cloud


Ortho

But there are still some places where ortho is very distorted

I was wondering if I can apply wallis filter which adjusts brightness values in local areas so that the local mean and standard deviation match user-specified target values, which in turn, may help in identifying more key points for better matching images.

But I’m unable to process the dataset with error -
The camera directions mean is unbalanced; the scene will be considered unbounded (no ROI).

I had also checked that EXIF data is copied to wallis images for geo-referencing as suggested here.

Assets


Dataset - 6GSD_IR.zip - Google Drive
Wallis Dataset - 6GSD_IR_wallis.zip - Google Drive
Failure Logs - console.txt - Google Drive
EXIF original - DJI_0001_T_orig.txt - Google Drive
EXIF Wallis - DJI_0001_T_wallis.txt - Google Drive
Python script to convert original dataset to Wallis - wallis.py - Google Drive


Let me know if any more info is required which might be missing. Thank you.
Also, any update on these queries.

1 Like

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.