作者doom8199 (~口卡口卡 修~)
看板MATLAB
標題Re: [問題] 想請問一下關於分水嶺法
時間Sun Aug 22 21:44:52 2010
※ 引述《csps60408 (煒煒)》之銘言:
: 想把重疊的相同物體做切割分離
: 聽說有種方法叫分水嶺法,不知道有人有否可以跟我說明一下此種方法呢?
---
請問你是在說 Morphological Watershed 這個方法嘛?
是的話我可以大概說一下它的原理:
假設給定一張灰階圖
圖上有兩個物體 (或是兩塊不同的區域)
想辨識這兩個物體
根據 pixel 的顏色深淺
可以畫出以下的圖 (以一條 scanline為例 ) :
object 1 object 2
├───────┼──────────┤
\ /
\ ∕
﹨ ▼ /
﹨ ∕\ /
\ ∕ \ ∕
\ˍ/ ﹨ ∕ ↑
*1 ﹨ ∕ │
\ˍ∕ │ 水位慢慢提升
*2
由圖上可發現
兩個物體很像是兩個 "波谷"
若想把相同的區域 label 成同一塊
一個簡單的想法是 "灌水"
也就是由底部(*1 和 *2) 慢慢將水位提高 (watershed line)
若是一個波谷內的水位沒有 "溢出"
那很有可能這些水都是屬於這個波谷內的水 (也就是同一個物體)
若 object 1 的水位一旦溢出
那很有可能這些水會流到 object 2 這個波谷
那就必須要建個 "防水壩" (dam, ▼)
防止 object 1 的水流進 object 2 這個波谷裡
( dam construction )
故該演算法有 watershed 之稱
----
根據這個簡單的想法
一開始的演算法會先把圖片取 gradient
隨意找出 seed ( 也就是圖中的 *1 和 *2 )
然後利用 morphology 的方法 ( 如 Dilation 、 Erosion 、...)
以 seed 為中心往外逐漸長大
並且對被擴增的區域標示相對應的 label 值
若有兩塊不同的區域逐漸擴張時 相互觸碰
那就把觸碰的邊界 mark 起來不去動它 (稱做 dam points)
---
演算法細節可能要去找影像處理方面的書籍來看 @@a
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.113.47.130
1F:推 csps60408:感謝您阿~我也是希望能繼續知道細節或是使用方法@@ 08/22 22:57
2F:推 cooljony0109:分水嶺要講的很難可以很難@@ 因為有過度分割的情形 08/23 21:17
3F:→ cooljony0109:但是大大有把精隨講出來了XD 08/23 21:17