Using calibrateCamera without Chessboard

asked 2018-11-07 02:45:39 -0500

hayley gravatar image

updated 2018-11-07 03:20:26 -0500

Hi all, I am not familiar with Calib3d.calibrateCamera(): https://docs.opencv.org/3.2.0/d9/d0c/...

Is it possible to calibrate the camera without the use of a checkered chessboard pattern? If so, how would the objectPoints and imagePoints be defined?

If I have two 2D images taken in the same scene where only x and y were moved, can I simply assign the detected features of the first 2D image as my ObjectPoint and let its Z-axis to equal 0? Then assign the detected features of the second 2D image as the imagePoints in the function?

edit retag flag offensive close merge delete

Comments

3

there are alternative patterns, like asym. circles grid or charuco boards, but you need a reproducable pattern between the calibration images, and 2d features (like ORB ? did you mean that ?) won't give you any guarantee, to find things in the same places.

berak gravatar imageberak ( 2018-11-07 03:17:52 -0500 )edit

Thanks for the clarification @berak! Does that mean that solvePnP() also cannot be used without a reproducible pattern?

hayley gravatar imagehayley ( 2018-11-07 03:55:42 -0500 )edit
1

hmm, if you meant: ORB keypoints or such, then indeed it's a similar problem.

but e.g. facial landmarks, like from LBF or dlib however are very reproducable.

you need to make sure, that the 2d part of your original 3d Point set is the same, as the 2d one detected

berak gravatar imageberak ( 2018-11-07 04:00:51 -0500 )edit

Is ORB not a good choice because the features that it detects are not always the same from one frame to the next? Would you have any recommendations for non-facial feature detectors or reading material that talk about it? Thanks in advance!

hayley gravatar imagehayley ( 2018-11-07 05:00:42 -0500 )edit