Problems with cvFindCornerSubPix results

asked 2014-04-03 19:55:31 -0500

ausdigi gravatar image

updated 2014-04-07 19:35:38 -0500

I have a chessboard grid and found the corners to (about) the nearest pixel okay. I then call cvFindCornerSubPix but the returned points move unexpectedly. I am confident that I am within 1.5 pixels of the corner to begin with.

Here is the code I use for the sub-pixelling. Despite reading the docs I don't really understand what the zeroZone and criteria fields mean so am not sure if I'm supplying good values.

  cvFindCornerSubPix(
  image[lr], &ponintsTemp[lr][0], cornersDetected,
  cvSize(11, 11), // Half sizes of the search window. For example, if win=(5,5) then 5*2+1 x 5*2+1 = 11 x 11 search window is used
  cvSize(-1,-1),  // Half size of the dead region in the middle of the search ... value of (-1,-1) indicates that there is no such size
  cvTermCriteria(CV_TERMCRIT_ITER+CV_TERMCRIT_EPS,30, 0.01)
  );

These are the points I am supplying (before passing to cvFindCornerSubPix I also add 0.5): 159,567 ,211,573 ,263,579 ,316,585 ,369,591 ,423,598 ,475,604 ,529,610 ,154,620 ,206,626 ,258,632 ,311,638 ,364,645 ,416,651 ,470,657 ,523,663 ,149,673 ,201,679 ,253,685 ,306,691 ,358,698 ,411,704 ,464,710 ,517,716 ,145,725 ,196,731 ,248,738 ,300,744 ,353,751 ,405,757 ,458,763 ,511,769 ,140,777 ,191,784 ,243,790 ,295,796 ,348,803 ,401,809 ,453,815 ,506,821 ,136,829 ,187,835 ,238,842 ,290,848 ,343,854 ,395,860 ,448,867 ,500,873

These are the returned points from cvFindCornerSubPix: 144.90,568.30, 200.64,574.58, 256.20,580.58, 311.26,586.68, 366.09,592.83, 420.62,598.86, 475.00,604.88, 528.90,610.85, 138.79,622.97, 194.59,628.89, 250.03,634.97, 305.21,640.83, 360.01,646.78, 414.57,652.66, 468.82,658.53, 522.68,664.44, 132.71,677.51, 188.53,683.44, 243.97,689.21, 299.02,695.01, 353.90,700.75, 408.41,706.49, 462.58,712.34, 516.55,718.03, 126.76,732.07, 182.42,737.75, 237.87,743.46, 292.96,749.03, 347.78,754.78, 402.11,760.37, 456.34,765.91, 510.29,771.58, 120.73,786.35, 176.24,792.06, 231.76,797.47, 286.77,803.05, 341.66,808.51, 396.04,813.91, 450.29,819.47, 504.20,824.79, 114.64,840.70, 170.35,846.08, 225.63,851.55, 280.74,856.79, 335.42,862.25, 389.94,867.54, 444.10,872.86, 498.00,878.23

Here is the image (irrelevant bits masked for better image compression): orig-masked.png. In the grid-crop.png image I have drawn the output points and you can see how they are shifted (lots to the left at the left but only a bit on ... (more)

edit retag flag offensive close merge delete