Hi,
first of all, great work, COLMAP is a really nice piece of software! :)
I'm using COLMAP for large scale reconstructions (11 cameras in a rig, 15 min of video each, sampled with 3 fps) to get precise camera locations for subsequent analysis of object tracks in the videos. With shorter videos, the incremental mapper worked fine, but now with the long videos (about 25000 images in total, OPENCV_FISHEYE model with shared intrinsics for the 11 cameras), the global bundle adjustments just takes too long. I'm running COLMAP on a HPC cluster with a wall time limit of 24 h, which is a problem for the bundle adjustments with >15000 images.
Since I'm running COLMAP on a cluster anyways, I thought of splitting the reconstructions into smaller parts (with enough overlap), which I can run in parallel on seperate nodes. This is actually much faster, and the separate reconstructions finish in less than a day. After the incremental mapper, I'd like to merge the models (20 models with about 1500 images each), using the COLMAP model merger functionality.
I saw that in the RunModelMerger function, and in Reconstruction::Merge, that models are compared for merging with the image_id and not the image name, which is a problem for me, since the different models don't come from the same reconstruction with same image_id name correspondences. So my question, is it possible to change image_ids in the already finalized models? Updating the database (images, inlier_matches) with shared common image_ids (and pair ids) for all separate reconstructions won't help, because the model is already written to the .bin files (and only those are imported), right?
Would it make more sense to update the image_ids in the database before starting the mapping part of the reconstruction? I guess they would be kept through the whole process?
I also saw that there is there is already a mapper that splits the reconstruction into clusters implemented, although I didn't manage to build/use this on the HPC cluster (and those clusters would then still be reconstructed sequentially, not in parallel). Same applies for the rig bundle adjustment (and I also don't know the precise relative camera locations prior to the reconstruction..). Would any of those two methods fasten things up for me, so that I don't need to split the reconstruction into parts?
Any help would be much appreciated :)