Hey Nateon, thanks for sharing that data! A couple of thoughts I have just from looking at the images and the data(and my apologies that some of these things are not as well documented as they could be):
First, how high was your lens distortion reprojection error? Our solver has the option to try a few different constraints to get a more accurate calibration, but the more constraints it applies, the higher the reprojection error tends to be because we have given the solver less degrees of freedom to solve for. Anything less than ~1.0 pixels might not be too bad, but more than that could be worrisome.
Second, did you feel that the calibrated focal length was accurate? If so, double check that the focal length of the CineCamera is actually the calibrated focal length from the LensFile, and not the calibrated focal length from DCS. Alternatively, if you want to trust the focal length from your DCS calibration, you could try running the distortion solve with the “Fix Focal Length” option checked and see if that improves your result at all.
Let’s see if we can narrow down whether your issue is with your distortion calibration or your nodal offset calibration. The first trick we use to verify our distortion calibration for ourselves is:
- Using the Nodal Offset Tool, capture a single image of the checkerboard.
- Click “Apply to Calibrator”, rather than “Apply Nodal Offset”. This will move the checkerboard actor in space to try to align it with the camera in its current location.
- You may need to temporarily disable the Motive LiveLink component on the checkerboard from evaluating.
- If the physical and virtual boards are aligned well, then the distortion is probably good. If the shapes are different (i.e. one is more distorted than the other) then the distortion calibration may need to be done again.
- Repeat this “Apply to Calibrator” process a few times with the physical board framed in different parts of the image. Distortion should be more extreme at the edges/corners of the frame, so you can stress test it there.
Now, let’s assume that your distortion calibration was good for a minute. Looking at your nodal offset data, I see that you only ever capture one checkerboard worth of points. Could you try capturing ~4-8 images with the checkerboard in different orientations. Do not move your camera in between captures, just the board. Sometimes having additional data can help the nodal offset calibration.
If those things did not work, or if you think the distortion calibration was not good enough, here are some additional ideas I have based on the data/images you sent:
- Looking at your captured images, I can tell that you sometimes move the checkerboard between captures and sometimes you move the camera. While mathematically it should not really matter, we have some optimizations in our solver that work much better if you leave the camera stationary throughout the entire capture process and only move/rotate the checkboard.
- From our own experience doing calibrations in our lab, we have found that we get more accurate results when we add a lot of variance to the angle of our checkboard along all 3 major axes (pitch/yaw/roll). You definitely have some rotation between captures, but I recommend trying to capture some images with the board pitched forward/back, rolled more drastically left/right, some with mixed rotations, etc.
- Note: Just be careful not to roll it too much or the pattern might capture upside down (and thus tracked position of TopLeft might accidentally be BottomRight, for example).
- Given that you have a crop factor of 1.58x, double check that the Filmback and Camera Feed Info measurements are accurate in the calibration tool and on the CineCamera. It probably is, but this has bitten us in the past when we forgot to adjust the filmback on our CineCamera to be the cropped filmback we were shooting at, and instead left it using the full sensor size.
- Try setting a focal length estimate in the lens distortion solver settings (You maybe already did, I just didn’t see it mentioned in your detailed steps).
I’ll add one other suggestion from Kevin Cushing:
“The one thing that stands out is the tracked checkerboard. It has to be aligned as carefully as possible in Motive to match the axis placement and rotation expected of the Camera Calibration Checkerboard in UE. If not I have seen high errors.”
Hopefully at least of those suggestions is helpful.
Cheers,
Geoff