Sure.
--ignore-gsd
You will never need this. Don’t use it. It will break things in unexpected and hard to figure out ways. It isn’t a problem that we have this blocked on Lightning, but I was including it for the sake of completeness.
--feature-quality: Mostly concerns reconstruction completeness/viability. Higher normally better.
Ultra: 1x input image resolution
High: 1/2x input image resolution
def setup(self, args, images_path, reconstruction, append_config = [], rerun=False):
"""
Setup a OpenSfM project
"""
if rerun and io.dir_exists(self.opensfm_project_path):
shutil.rmtree(self.opensfm_project_path)
if not io.dir_exists(self.opensfm_project_path):
system.mkdir_p(self.opensfm_project_path)
list_path = os.path.join(self.opensfm_project_path, 'image_list.txt')
if not io.file_exists(list_path) or rerun:
if reconstruction.multi_camera:
photos = get_photos_by_band(reconstruction.multi_camera, args.primary_band)
if len(photos) < 1:
raise Exception("Not enough images in selected band %s" % args.primary_band.lower())
log.ODM_INFO("Reconstruction will use %s images from %s band" % (len(photos), args.primary_band.lower()))
else:
photos = reconstruction.photos
https://docs.opendronemap.org/arguments/feature-quality/
--pc-quality: Controls resolutio of depthmap to generate pointcloud. Higher means finer feature/details.
Ultra: 1/2x depthmap resolution
High: 1/4x depthmap resolution
from osgeo import gdal
from opendm.arghelpers import double_quote
class NumpyEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, np.ndarray):
return obj.tolist()
return json.JSONEncoder.default(self, obj)
def get_depthmap_resolution(args, photos):
max_dims = find_largest_photo_dims(photos)
min_dim = 320 # Never go lower than this
if max_dims is not None:
w, h = max_dims
max_dim = max(w, h)
megapixels = (w * h) / 1e6
multiplier = 1
https://docs.opendronemap.org/arguments/pc-quality/