Hi , i wonder why i obtain higher rms while using circle grid for calibration.
-
initialize the object list
for (int i = 0; i < 27; i++) { for (int j = 0; j < 31; j++)//width { objectList.Add(new MCvPoint3D32f((j * squareSize)+(i*squareSize/2), (i * squareSize)/2, 0.0F)); } }
-
found1 = CvInvoke.FindCirclesGrid(thresh, new Size(31,27), cornerPoints, CalibCgType.AsymmetricGrid |CalibCgType.Clustering ,blobDetector);
-
double error = CvInvoke.CalibrateCamera(objectPoints, imgPoints.Select(a => a.ToArray()).ToArray(), thresh.Size, cameraMatrix, distortionCoeffs, CalibType.SameFocalLength, term, out rVecs, out tVecs);
-
double rms = CvInvoke.StereoCalibrate(objectPoints, imgPoints.Select(a => a.ToArray()).ToArray(), imgPoints2.Select(a => a.ToArray()).ToArray(), cameraMatrix, distortionCoeffs, cameraMatrix2, distortionCoeffs2, thresh.Size, R, T, E, F, CalibType.FixIntrinsic | CalibType.UseIntrinsicGuess | CalibType.RationalModel | CalibType.SameFocalLength, term);
i am able to detect all the circle grid(total 20 frames with different view and position at the photo frame) but the rms return by camera calibration and also stereo calibration are both high ( 10, 31 respectively) and the rms remain there even i add more frames.
one of the blob found image: Pasteboard - Uploaded Image
one of the findcirclegridimage: Pasteboard - Uploaded Image
please help