作者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