If I capture a single view of a checkerboard pattern with known real world coordinates I can use ,for example, the OpenCV calibrateCamera function to calculate the distortion coefficients of that camera.
These distortion coefficients are intrinsic parameters, not dependent on camera pose, so if the camera moves the distortion coefficients do not change, at least that is my understanding. My question is when would these coefficients change? I believe they can change with changes in temperature with components in the system (pixels, lens, mounts, etc..) expanding and contracting, but temperature can potentially be controlled.
Can the distortion be calculated once for a system and never again? What if a lens is removed and then reinstalled? What if the distance to the objects being imaged changes (working distance)?
I haven't been able to find much discussion of this anywhere.
CodePudding user response:
You have to define the term "change" first. E.g would you consider 0.0001 in your distortion parameter as a change? Whatever you do the intrinsic and the lens distortion parameters always change at least a small bit.
Those are the cases I usually do the recalibration where the application is a high-end industrial-grade measuring device:
- when the lens locking screw was touched.
- when the lens focus was adjusted.
- when the working environment has changed. (humidity, temperature)
- when I dropped the device.
- when somebody touched the lens part.
If your application is not very sensitive to accuracy, just do the recalibration when the lens is replaced or focus is adjusted.