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: https://pasteboard.co/JLRvQFc.png
one of the findcirclegridimage: https://pasteboard.co/JLRvkmt.png
please help
question from:
https://stackoverflow.com/questions/65952007/high-rms-return-by-camera-calibration-using-circlegrid-why 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…