本文共 926 字,大约阅读时间需要 3 分钟。
cvSnakeImage函数更新snake用于最小化它的总能量,并在梯度能量场情况下的,使其对应图像边缘的局部能量极值达到最小。它的能量包括依赖于轮廓形状的内部能量(轮廓越平滑,能量越小),依赖于能量场的外部能量。 void cvSnakeImage( const IplImage* image, CvPoint* points, int length, float* alpha, float* beta, float* gamma, int coeff_usage, CvSize win, CvTermCriteria criteria, int calc_gradient=1 ); image 原图像或external energy field。 points 轮廓点(snake)。 length 轮廓中点的数目。 alpha 连续性能量(continuity energy)的权重,一个浮点数,或者每个轮廓点对应一个的浮点数数字。 beta 曲率能量(curvature energy)的权重,类似alpha gamma 图像能量(image energy)的权重,类似alpha。 coeff_usage 前三个参数使用方式的设定变量: CV_VALUE 说明前面的alpha,beta,gamma是一个指向一个单独值的指针,每个轮廓点都是用这一相同的参数; CV_ARRAY 说明alpha,beta,gamma是一个数组,每一个轮廓点(snake)都对应自己的一组alpha,beta,gamma值,因此,三个参数的元素个数必须和轮廓点尺寸相同; win 每个点用于搜索最小值的邻居的范围,win.width和win.height都必须为奇数; criteria 终止标准; calc_gradient 梯度标志。如果非0,函数计算每个图像像素的梯度大小,并将之作为能量场;否则,输入图像本身作为能量场考虑。 参数criteria.epsilon用于定义每次迭代必须移动的最小点的数目,用于确保迭代处理运行。如果某次迭代,移动的点数少于criteria.epsilon或函数执行达到了criteria.max_iter,函数终止。转载地址:http://pahai.baihongyu.com/