Tori
Tori

Reputation: 3

Understanding Snake

I am trying to make a Snake Active Contour program and I been looking at different websites that shows how they programmed the snake but none of them explain what CV_VALUE or coefficient usage is and how they initialized it.

Here some code that I was working on but I do not know what the problem is.

void snake(Mat copy){
  threshold(copy, copy, 170, 255, CV_THRESH_BINARY);
  float alpha = 0.1; //Continuity snake
  float beta = 0.5;  //Curvature snake
  float gamma = 0.4; //Movement snake

  //Have to be odd
  CvSize size;
  size.width = 5; 
  size.height = 5;

  CvTermCriteria criteria;
  criteria.type = CV_TERMCRIT_ITER;
  criteria.max_iter = 10000;
  criteria.epsilon = 0.1;

  int cpt = 40;

  CvPoint pointsArray[5];
  pointsArray[0].x = 0;
  pointsArray[0].y = 95;
  pointsArray[1].x = 5;
  pointsArray[1].y = 95;
  pointsArray[2].x = 10;
  pointsArray[2].y = 95;
  pointsArray[3].x = 15;
  pointsArray[3].y = 95;
  pointsArray[4].x = 20;
  pointsArray[4].y = 95;

  //The Code (image, points, length, alpha (consistency), beta (curve), gamma (movement), coefficient Usage, win, criteria, calcGradient)
  cvSnakeImage(copy, pointsArray, cpt, &alpha, &beta, &gamma, CV_VALUE, size,criteria, 0);

}

Upvotes: 0

Views: 182

Answers (1)

Andrey  Smorodov
Andrey Smorodov

Reputation: 10852

  • CV_VALUE indicates that each of alpha, beta, gamma is a pointer to a single value to be used for all points;

  • CV_ARRAY indicates that each of alpha, beta, gamma is a pointer to an array of coefficients different for all the points of the snake. All the arrays must have the size equal to the contour size.

Upvotes: 1

Related Questions