3

I need to find intrinsic calibration parameters of a single. To do this I take several images of checkerboard patten from different angles and then use calibration software.

To make the calibration pattern as flat as possible, I print it on a paper and cover with a 3mm glass. Obviously image of the pattern is modified by glass, because it has a different refraction coefficient compared to air.

Extrinsic parameters will be distorted by the glass. This is because checkerboard is not in place we see it in. However, if thickness of the glass and refraction coefficients of glass and air are known, it seems to be possible to recover extrinsic parameters.

So, the questions are:

  • Can extrinsic parameters be calculated, and if yes, then how? (This is not necessary right now, just an interesting theoretical question)
  • Are intrinsic calibration parameters obtained from these images equivalent to ones obtained from a usual calibration procedure (without cover glass)?

By using a glass, calibration parameters as reported by GML Camera Calibration Toolbox (based on OpenCV), become much more accurate. (Does it make any sense at all?) But this approach has a little drawback - unwanted reflections, especially from light sources.

fdermishin
  • 3,519
  • 3
  • 24
  • 45
  • Looking at the GML project webpage I see a result that suggests they get better accuracy using 2 patterns in the image over 1 pattern. Where does it suggest their results are better when using a glass cover? – Max Allan Mar 14 '13 at 21:06
  • The do not suggest it, but results that I get with glass, give smaller reprojection errors and smaller uncertainty in estimated parameters. – fdermishin Mar 14 '13 at 21:15
  • I actually have the code to do that, I may post it if you are still interested and I have time enough hehe. – Ander Biguri May 02 '13 at 06:45
  • Ander, I'm still interested in solution. It will be great if you post the code! – fdermishin May 03 '13 at 07:54

1 Answers1

2

I commend you on choosing a very flat support (which is what I recommend myself here). But, forgive me for asking the obvious question, why did you cover the pattern with the glass?

Since the point of the exercise is to ensure the target's planarity and nothing else, you might as well glue the side opposite to the pattern of the paper sheet and avoid all this trouble. Yes, in time the pattern will get dirty and worn and need replacement. So you just scrape it off and replace it: printing checkerboards is cheap.

If, for whatever reasons, you are stuck with the glass in the front, I recommend doing first a back-of-the-envelope calculation of the expected ray deflection due to the glass refraction, and check if it is actually measurable by your apparatus. Given the nominal focal length in mm of the lens you are using and the physical width and pixel density of the sensor, you can easily work it out at the image center, assuming an "extreme" angle of rotation of the target w.r.t the focal axis (say, 45 deg), and a nominal distance. To a first approximation, you may model the pattern as "painted" on the glass, and so ignore the first refraction and only consider the glass-to-air one.

If the above calculation suggests that the effect is measurable (deflection >= 1 pixel), you will need to add the glass to your scene model and solve for its parameters in the bundle adjustment phase, along with the intrinsics and extrinsics. To begin with, I'd use two parameters, thickness and refraction coefficient, and assume both faces are really planar and parallel. It will just make the computation of the corner projections in the cost function a little more complicated, as you'll have to take the ray deflection into account. Given the extra complexity of the cost function, I'd definitely write the model's code to use Automatic Differentiation (AD).

If you really want to go through this exercise, I'd recommend writing the solver on top of Google Ceres bundle adjuster, which supports AD, among many nice things.

Community
  • 1
  • 1
Francesco Callari
  • 11,300
  • 2
  • 25
  • 40
  • The reason of covering with glass is that it is the simplest way of ensuring that pattern is perfectly flat. But it seems that glass gives non-linear distortions, so that straight lines on the pattern become not straight on the image. Although, this effect is barely noticeable even under large angles, it affects calibration. So, unfortunately, it doesn't work. And gluing the pattern remains the best approach. – fdermishin Mar 16 '13 at 10:49
  • 1
    Yes, and I am recommending to glue the BACK of the target to the glass: planarity problem solved. – Francesco Callari Mar 19 '13 at 13:52