-
Notifications
You must be signed in to change notification settings - Fork 2k
Fisheye lens information loss during undistortion #1523
Description
I am trying to use colmap to reconstruct a scene from a set of fisheye lens images, 2048x2048 with FOV 180 degrees (camera: RADIAL_FISHEYE 2048 2048 600 1024 1024 0 0).
Sparse reconstruction works well - I see the poses correctly reconstructed and much of the scene in place (apart from some outliers).
Problems begin when I move on to dense reconstruction. For some reason, colmap "undistorts" input images by slightly deforming them and cropping them to 409x409 pixels, keeping only the center portion of each image. Effectively 90% of the image is simply lost. The resulting mesh is very poor quality and missing large chunks.
I can achieve better results by manually transforming all images to pinhole projection and specifying the camera as SIMPLE_PINHOLE - in that case, colmap apparently skips the undistortion step and copies the images as-is. But that's inefficient (to keep the original resolution and to retain most of the original image, I need to convert them to SIMPLE_PINHOLE 3072 3072 512 1536 1536, which corresponds to the FOV of 140 degrees - more than double the number of pixels.) Not to mention that there's nothing in the documentation to suggest that manually converting images is a required or even a recommended step.
P.S. Colmap 3.8 commit 3021f1 on 2022-04-01 with CUDA on Linux. The same behavior is observed with GUI and with the command-line version.