-
Notifications
You must be signed in to change notification settings - Fork 99
colmap / l3mhet / 3DGS on a dataset with rotated cameras #31
Description
I'm testing on a datset that consists of 21 cameras, arranged in a cylinder-shaped layout surrounding the subject. All have the same lens, but different orientations. I.e., some are landscape-oriented, some are portrait-oriented, and in fact, some are portrait and upside-down. The images themselves are all standard landscape, so that they have the same HxW dimensions, but the portrait images appear sideways.
The default run_colmap.py setup fails to produce a good result on this input. I also tried rotating the images so that they are all right-side-up, but the aspect ratios are mixed: some HxW, some WxH. Here are the originals (top), and "corrected" (bottom), for two cameras:
As a test, I ran colmap gui Automatic Reconstruction on the images. The standard landscape set failed badly. The mixed-ratio "corrected" set was better, but still not great (10 out of 21 cameras solved, but many incorrectly). I tried again in Agisoft Metashape, which threw resolution/aspect warnings on the "corrected" set, but solved for 19/21 cameras:
What is the best way to handle input data like this? Thoughts:
- Using the original (top) images, is it possible to get colmap (or metashape, etc.) to correctly solve the cameras - that is, giving matrices that specify a 90deg rotation for the portrait cameras? (Possibly by specifying orientation in the EXIF data, or other camera input intrinsics.) And will l3hmet / 3DGS run well with this input?
- If I can instead get a camera solve on the "corrected" mixed-ratio (bottom) images, will l3hmet / 3DGS even accept mixed HxW and WxH image input?
- I could take the "corrected" images, and embed the portrait-mode ones in a landscape-ratio HxW image with black bars, so that all are HxW aspect ratio. But I'm assuming this would cause incorrect solves for the portrait cams... unless there's a per-camera crop window parameter I can feed in.

