0
votes

I'm doing a mobile augmented reality app. I need to calibrate my camera to get the intrinsic and extrinsic parameters using chessboard calibration.

Can I assum that if I calibrate my nexus 4, all nexus will have the same focal length, skew factor and distortion matrix ?

Thanks

3
if you assume that all the nexus 4 devices have exactly the same camera yes! the most valuable word here is exactlyEngine
In real life, does nexus4 have exactly the same camera ? I guess no ... ?kakou
Unless you need a real high accuracy, it should be safe to assume the same calibration for all those phones.ChronoTrigger

3 Answers

1
votes

Well, the answer can be both YES and NO. As you say, in real life none camera is exactly the same with another one, not even if they came from the same manufacturer. But, in order to make our lifes easier, yes we use this simplification, even for photogrammetric/computer vision projects, were the accuracy demands are quite high.

1
votes

Most of the cameras come with undistortion operation coded into a camera pipeline so you most likely don't need to search for distortion parameters at all. Just check that straight lines at the image periphery are really straight. I expect the skew to be close to zero and fx=fy since pixels are square.

Apart from the parameters you mentioned there is also two for principal points Cx, Cy (intersection of an optical axis with the sensor that is often close to w/2, h/2). So overall you have only 3 parameters: F, Cx, Cy with the first one being the most variable among phones of the same model (from my experience). If you aren't using your phone to figure a relative position of another camera most likely you need to know only focal length accurately.

Obviously when you need to worry about a single parameter there are easier ways to get it than using a chessboard rig and trying to find extrinsic parameters in addition to the intrinsic ones. You can figure it out even without measurements - just quire a camera field of view (such as getHorizontalViewAngle()) and use

tan(fov) = image_width/2 / f

Alternatively you can do a simple measurement keeping your phone parallel to the target: for a vertical target of size H that produces image of h pixels you get f as

f/z = h/H
0
votes

Well... if this camera has a built-in autofocus, the focal length will be changed all the time