網(wǎng)上摘錄的:“分水嶺的計(jì)算過程是一個(gè)迭代標(biāo)注過程,。分水嶺比較經(jīng)典的計(jì)算方法是L. Vincent提出的,。在該算法中,分水嶺計(jì)算分兩個(gè)步驟,,一個(gè)是排序過程,,一個(gè)是淹沒過程。首先對(duì)每個(gè)像素的灰度級(jí)進(jìn)行從低到高排序,,然后在從低到高實(shí)現(xiàn)淹沒過程中,,對(duì)每一個(gè)局部極小值在h階高度的影響域采用先進(jìn)先出(FIFO)結(jié)構(gòu)進(jìn)行判斷及標(biāo)注。
分水嶺變換得到的是輸入圖像的集水盆圖像,,集水盆之間的邊界點(diǎn),,即為分水嶺。顯然,,分水嶺表示的是輸入圖像極大值點(diǎn),。因此,為得到圖像的邊緣信息,,通常把梯度圖像作為輸入圖像,,即g(x,y)=grad(f(x,y))={[f(x,y)-f(x-1,y)]2[f(x,y)-f(x,y-1)]2}0.5 式中,f(x,y)表示原始圖像,,grad{.}表示梯度運(yùn)算,。分水嶺算法對(duì)微弱邊緣具有良好的響應(yīng),圖像中的噪聲,、物體表面細(xì)微的灰度變化,都會(huì)產(chǎn)生過度分割的現(xiàn)象,。但同時(shí)應(yīng)當(dāng)看出,,分水嶺算法對(duì)微弱邊緣具有良好的響應(yīng),是得到封閉連續(xù)邊緣的保證的。另外,,分水嶺算法所得到的封閉的集水盆,,為分析圖像的區(qū)域特征提供了可能。
為消除分水嶺算法產(chǎn)生的過度分割,,通??梢圆捎脙煞N處理方法,一是利用先驗(yàn)知識(shí)去除無關(guān)邊緣信息,。二是修改梯度函數(shù)使得集水盆只響應(yīng)想要探測(cè)的目標(biāo),。”
Opencv中cvWatershed(const Mat &image , Mat& markers),;函數(shù)并不是上述采用傳統(tǒng)的方法,。markers即是輸入矩陣也是輸出矩陣,大小與image大小相同,。使用該函數(shù)的時(shí)候,,用戶在markers矩陣中必須粗略指定兩種以上區(qū)域,該區(qū)域?yàn)?/SPAN>1個(gè)點(diǎn)以上的連通點(diǎn)集,,并用不同的正整數(shù)(1,,2,3…)標(biāo)記,。這些區(qū)域可以用cvFindContour(),和cvDrawContour()標(biāo)記,。用戶或算法可以通過畫一條簡(jiǎn)單的線,有效地告知分水嶺算法把這些點(diǎn)組合起來,。markers矩陣其他區(qū)域?yàn)?/SPAN>0,。調(diào)用cvWatered()函數(shù)后,markers矩陣中所有為0的部分被重新標(biāo)記為正整數(shù),,或?yàn)?/SPAN>-1,,-1代表住起來的壩。詳細(xì)的部分可以參數(shù)opencv中自帶的Watershed Demo,。
Opencv中cvWatershed()函數(shù)的原理,,可以參考F. Meyer.《Color image segmentation》