Ask Your Question
0

Camera callibration does not complete for my set of images.

asked 2016-12-12 11:21:20 -0600

Prototype gravatar image

updated 2016-12-13 01:58:17 -0600

I am trying to calibrate my camera using the sample code found on samples/cpp/tutorial_code/calib3d/camera_calibration/ ( the official documentation). It runs when I enter it for the image given by them, but when I run it for my images it shows no output. I have attached the images and also the data entered. Images is image description)

For this particular image , The program runs when width and height is 4 and 4 but it distorts this image even more. But clearly, it should work for 7X7. The code crashes for 7X7.

Is there anything I am missing out?

Can you please help me in solving this problem.

The data entered in the VID file is as follows

<?xml version="1.0"?>
<opencv_storage>
<Settings>
  <!-- Number of inner corners per a item row and column. (square, circle) -->
  <BoardSize_Width>7</BoardSize_Width>
  <BoardSize_Height>7</BoardSize_Height>

  <!-- The size of a square in some user defined metric system (pixel, millimeter)-->
  <Square_Size>50</Square_Size>

  <!-- The type of input used for camera calibration. One of: CHESSBOARD CIRCLES_GRID ASYMMETRIC_CIRCLES_GRID -->
  <Calibrate_Pattern>"CHESSBOARD"</Calibrate_Pattern>

  <!-- The input to use for calibration. 
        To use an input camera -> give the ID of the camera, like "1"
        To use an input video  -> give the path of the input video, like "/tmp/x.avi"
        To use an image list   -> give the path to the XML or YAML file containing the list of the images, like "/tmp/circles_list.xml"
        -->
  <Input>"/home/manohar/VID.xml"</Input>
  <!--  If true (non-zero) we flip the input images around the horizontal axis.-->
  <Input_FlipAroundHorizontalAxis>0</Input_FlipAroundHorizontalAxis>

  <!-- Time delay between frames in case of camera. -->
  <Input_Delay>100</Input_Delay>    

  <!-- How many frames to use, for calibration. -->
  <Calibrate_NrOfFrameToUse>10</Calibrate_NrOfFrameToUse>
  <!-- Consider only fy as a free parameter, the ratio fx/fy stays the same as in the input cameraMatrix. 
       Use or not setting. 0 - False Non-Zero - True-->
  <Calibrate_FixAspectRatio> 1 </Calibrate_FixAspectRatio>
  <!-- If true (non-zero) tangential distortion coefficients  are set to zeros and stay zero.-->
  <Calibrate_AssumeZeroTangentialDistortion>1</Calibrate_AssumeZeroTangentialDistortion>
  <!-- If true (non-zero) the principal point is not changed during the global optimization.-->
  <Calibrate_FixPrincipalPointAtTheCenter> 1 </Calibrate_FixPrincipalPointAtTheCenter>

  <!-- The name of the output log file. -->
  <Write_outputFileName>"out_camera_data.xml"</Write_outputFileName>
  <!-- If true (non-zero) we write to the output file the feature points.-->
  <Write_DetectedFeaturePoints>1</Write_DetectedFeaturePoints>
  <!-- If true (non-zero) we write to the output file the extrinsic camera parameters.-->
  <Write_extrinsicParameters>1</Write_extrinsicParameters>
  <!-- If true (non-zero) we show after calibration the undistorted images.-->
  <Show_UndistortedImage>1</Show_UndistortedImage>
  <!-- If true (non-zero) will be used fisheye camera model.-->
  <Calibrate_UseFisheyeModel>0</Calibrate_UseFisheyeModel>
  <!-- If true (non-zero) distortion coefficient k1 will be equals to zero.-->
  <Fix_K1>0</Fix_K1>
  <!-- If true (non-zero) distortion coefficient k2 will be equals to zero.-->
  <Fix_K2>0</Fix_K2>
  <!-- If true (non-zero) distortion coefficient k3 will be equals to zero.-->
  <Fix_K3>0</Fix_K3>
  <!-- If true (non-zero) distortion coefficient k4 will be equals to zero.-->
  <Fix_K4>1</Fix_K4>
  <!-- If true (non-zero) distortion coefficient k5 will be equals to zero.-->
  <Fix_K5>1</Fix_K5>
</Settings>
</opencv_storage>
edit retag flag offensive close merge delete

Comments

btw, please use rectangular grids, not a square one, whic has a problem being symmetric at 90° rotation

berak gravatar imageberak ( 2016-12-13 02:41:04 -0600 )edit

1 answer

Sort by » oldest newest most voted
0

answered 2016-12-12 20:17:38 -0600

Tetragramm gravatar image

You misspelled BoardSize_Height in the closing tag. The error message should have been a pretty big hint.

edit flag offensive delete link more

Comments

@Tetragramm I did that. Now the problem is the code keeps running and after a few minutes it terminates or it shows the following erro rerror: (-215) src.size == dst.size && src.channels() == dst.channels() in function cvConvertScale I gave width 7 and breadth 7. Please help me

Prototype gravatar imagePrototype ( 2016-12-13 00:55:44 -0600 )edit

@Tetragramm The image works when I enter 4X4 and not 7X7. But when I crop the image a little more, It fails.

Prototype gravatar imagePrototype ( 2016-12-13 01:53:09 -0600 )edit

You're cropping the image? You should never alter the image when doing camera calibration. Especially cropping. That just entirely defeats the point.

Tetragramm gravatar imageTetragramm ( 2016-12-13 07:15:09 -0600 )edit

Question Tools

1 follower

Stats

Asked: 2016-12-12 11:21:20 -0600

Seen: 453 times

Last updated: Dec 13 '16