High RMS return by camera calibration

Hi , i wonder why i obtain higher rms while using circle grid for calibration.

  1. 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));
  2.                found1 = CvInvoke.FindCirclesGrid(thresh, new Size(31,27), cornerPoints, CalibCgType.AsymmetricGrid |CalibCgType.Clustering ,blobDetector);
  3.        double error = CvInvoke.CalibrateCamera(objectPoints, imgPoints.Select(a => a.ToArray()).ToArray(), thresh.Size,
                     cameraMatrix, distortionCoeffs, CalibType.SameFocalLength, term, out rVecs, out tVecs);
  4.  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