SnakeImage用於改變輪廓位置使得它的能量最小。
基本介紹
- 中文名:SnakeImage
- image:輸入圖像或外部能量域
- points:輪廓點
- length:輪廓點的數目
函式形式,參數,說明,
函式形式
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
- 輸入圖像或外部能量域
- points
- 輪廓點 (snake).
- length
- 輪廓點的數目
- alpha
- 連續性能量的權 Weight[s],單個浮點數或長度為 length 的浮點數數組,每個輪廓點有一個權
- beta
- 曲率能量的權 Weight[s],與 alpha 類似
- gamma
- 圖像能量的權 Weight[s],與 alpha 類似
- coeff_usage
- 前面三個參數的不同使用方法:
- CV_VALUE 表示每個 alpha, beta, gamma 都是指向為所有點所用的一個單獨數值;
- CV_ARRAY 表示每個 alpha, beta, gamma 是一個指向係數數組的指針,snake 上面各點的係數都不相同。因此,各個係數數組必須與輪廓具有同樣的大小。所有數組必須與輪廓具有同樣大小
win
每個點用於搜尋最小值的鄰域尺寸,兩個 win.width 和 win.height 都必須是奇數
criteria
終止條件
calc_gradient
梯度符號。如果非零,函式為每一個圖像象素計算梯度幅值,且把它當成能量場,否則考慮輸入圖像本身。
說明
函式 cvSnakeImage 更新 snake 是為了最小化 snake 的整個能量,其中能量是依賴於輪廓形狀的內部能量(輪廓越光滑,內部能量越小)以及依賴於能量場的外部能量之和,外部能量通常在哪些局部能量極值點中達到最小值(這些局部能量極值點與圖像梯度表示的圖像邊緣相對應)。
參數 criteria.epsilon 用來定義必須從疊代中除掉以保證疊代正常運行的點的最少數目。
如果在疊代中去掉的點數目小於 criteria.epsilon 或者函式達到了最大的疊代次數 criteria.max_iter ,則終止函式。