網(wǎng)上關(guān)于分水嶺算法的文章很多,有的很贊也有很多都是照搬,為了避免浪費時間,直接放上我覺得講的不錯的文章以及一些自己的總結(jié)。
1.OpenCV—圖像分割中的分水嶺算法原理與應(yīng)用 先看這個文章感性的理解一下概念和思想。這篇文章里面含有C++的代碼。
2. 圖像分割的經(jīng)典算法:分水嶺算法 看完第一個,對于到底是怎么找到兩個極小值盆地交界處的分水嶺還不是很理解。在這篇文章中,作者詳細介紹了分水嶺算法的過程,并且介紹了一個測地距離的概念,提到了
“水平面在增長的過程中,會碰到周圍的鄰域像素,測量這些像素到起始點(灰度值最低點)的測地距離,如果小于設(shè)定閾值,則將這些像素淹沒,否則在這些像素上設(shè)置大壩,這樣就對這些鄰域像素進行了分類?!?/p>
但是我還是沒有理解這個測地距離在灰度圖上是怎么使用的,在分水嶺邊界上如何計算到極值點的距離?以及文章中提到需要設(shè)置測地距離的閾值來確定,對于這個閾值也不是很理解,如果有哪位同學(xué)明白,可以給我解惑一下~ 總之,看完還是對于分水線的生成的實際操作比較懵逼。這篇文章的另一個優(yōu)點是介紹了具體的案例,通過彼此黏連的硬幣案例,了解了分水嶺算法有具體的案例。
3. 最佳視頻~ https://www.bilibili.com/video/BV1fk4y167Gv?spm_id_from=333.337.search-card.all.click&vd_source=4242990e0fbe2c9c04876ca373dbce12 視頻教材,已看。這個視頻很贊,解決了我關(guān)于如何理解水壩邊界線是如何產(chǎn)生的問題。這里沒有提到測地距離是如何使用的,分水嶺是通過水位上升(區(qū)域外擴)的過程中,如果兩個區(qū)域產(chǎn)生重疊,記錄這些重疊的區(qū)域位置L;然后回到前一個狀態(tài),通過膨脹操作來確定兩個區(qū)域的重疊區(qū)域邊界在哪里,如果一次膨脹無法覆蓋這些重疊區(qū)域L的全部像素,則會一致膨脹直到覆蓋L中的所有像素,此時就得到了一系列的邊界線位置。