snake model終極分析

2021-05-26 01:33:44 字數 2560 閱讀 4543

snake model公式的推導位址

opencv中cvsnakeimage()函式**分析

位址 

opencv函式庫中的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,函式終止。

**測試:先在影象中繪製出初始輪廓,再按s鍵進行輪廓提取,裡面的引數設定得不是最好,可以按照不同的應用進行優化調整

#include

#include

#include

#pragma comment(lib, "cv200.lib")

#pragma comment(lib, "highgui200.lib")

#pragma comment(lib, "cxcore200.lib")

std::vector  contourvec;

iplimage* tempimg;

void showcontent(iplimage* img)

cvshowimage("srcimage", tempimg);

}void on_mouse(int event, int x, int y, int flags, void* ptr) }

int main(int argc, char* argv)

cvnamedwindow("srcimage");

cvshowimage("srcimage",srcimage);

cvsetmousecallback("srcimage", on_mouse, srcimage);

char c;

while(c = cvwaitkey(0))

if (c == 's' || c == 's')

break;

float alpha=0.5;

float beta=0.3;

float gamma=0.3;

cvsize size;

size.width=5;

size.height=5;

cvtermcriteria criteria;

criteria.type=cv_termcrit_iter;

criteria.max_iter=300;

criteria.epsilon=0.01;

if (contourvec.empty()) return 0;

cvsnakeimage(srcimage, &contourvec[0], contourvec.size(), &alpha, &beta, &gamma, cv_value, size, criteria, 1);

showcontent(srcimage);

cvwaitkey(0);

SEO競爭對手分析終極策略

雖然我們很多朋友是專業的seoer,但在做seo競爭對手分析時,肯定也會很頭疼的,特別是遇到一些非常規的競爭對手,明明收錄量不大,快照更新滯後,外鏈不多,但又排得非常好的 就更覺得頭疼,筆者現在做的 推廣,關鍵詞是 珠海 建設 都是行內高手對他們進行seo競爭對手分析更是頭疼,今天我們就系統性的從常...

終極演算法 2 終極演算法

機器學習的應用非常廣泛,更為驚人的是,相同的演算法可以完成不同的事。在機器學習領域之外,如果你要解決不同的問題,就得編寫兩個不同的程式。相同的機器學習演算法不僅可以完成無窮無盡且不同的事,而且和被它們替代的傳統演算法相比,它們要簡單得多。多數學習演算法可能只有數百行或者數千行。相比之下,傳統程式則需...

化繁為簡的終極指南化繁為簡的終極指南

你是否已經接受了化繁為簡的趨勢,並準備好踏上這波浪潮了?很好,遵循這些指南,你馬上就會創造出優秀的應用。去除彩色。當然,你可以保留一種顏色,但要極度克制地使用它。其他一切最好是黑白的。讓內容來為應用填充顏色。加大 加粗 加黑的標題。看到標題了嗎?把它加到20至30畫素,並且加重。簡潔 纖細 易辨識的...