1
votes

I am doing OpenCV camera calibration with square planner pattern size of 6x9. My application is follows.

My object size (FOV) is around 5mm to 20mm and I am using Monochrome camera and telecentric lens since it is Accurate 3D machine vision. My pattern size is 6x9mm with square size of 1 mm.

When i run camera calibration for intrinsic parameter and i am getting focal length and principal point.

And the problem is that every time focal length is changing randomly no consistency. I think due to pattern size is very small it causing noise so it detecting the wrong corners.

So my question how can i solve this problem.

1) Do i need to use different kind of pattern (other than planer board) ?

2) Is there any paper or similar application that use small size camera calibration for machine vision ?

Alex

1
How many board images do you use (always use 20+ each in different orientations!)? Did you use subpixel accuracy? If so, with what parameters? How many pixels is the image of the board?Nallath
You should give us a lot more details, and part of your question makes little sense - Field Of View is an angle, not a length. What is the variance you observe in the calibrated parameters? How does it translate into pixels? A telecentric lens has a very long equivalent focal length (since it produces nearly orthographic images), so a larger-than-usual variance in its estimates is to be expected. See my other answer here: stackoverflow.com/questions/12794876/…Francesco Callari
Franco, I am getting variance around 0.45 that returns from cvCalibrateCamera2 function. Is it proper ? Also regarding Telecentric lens i am getting very long focal length around 1e+04 my question is can i still use OpenCV camera calibration or do i need any modification ? I can show my code if you want to see.user81907
Depends: 0.45 pixel variance (or a standard deviation of 0.67) for a focal length of 10,000 pixel units sounds quite good. Or is 0.45 the variance of the post-calibration pixel errors on an independent set of data? What is the final calibration error reported by the optimizer? Most importantly, what are the accuracy requirements of your application?Francesco Callari

1 Answers

0
votes

For a telecentric lens, the focal length approaches infinity. What you are seeing is numeric instability.

Halcon has dedicated calibration procedures for telecentric lenses that solve for magnification rather than focal length. There may be similar code base for Matlab / OpenCV.

It's also useful to consider that for a telecentric lens tilting the calibration grid, such that the grid is not perpendicular to optical axis, doesn't produce a perspective distortion. Therefore the tilt direction has two possible solutions that appear identical to the camera. The system of equations used must deal with that phenomena also.