当前位置:文档之家› 分水岭算法程序实现过程详解

分水岭算法程序实现过程详解


3.在mask图像中找邻居像素(该像素四邻域内有标记点),并将邻居像素对 应原图中的点放入相应的优先级队列
11 11
-1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
二、传统分水岭算法
传统的分水岭分割方法,其基本思想是把图像看作是测地学上的拓扑地貌, 图像中每一像素的灰度值表示该点的海拔高度,每一个局部极小值及其影 响区域称为集水盆地,而集水盆地的边界则形成分水岭。基于梯度图像的 直接分水岭算法容易导致图像的过分割,产生这一现象的原因主要是由于 输入的图像存在噪声等而产生许多小的集水盆地,从而导致分割后的图像 不能将图像中有意义的区域表示出来。所以必须对分割结果的相似区域进 行合并。
放入相应的队列。 如果这个灰度上的队列处理完了,就继续找下一个非空队列。
注 意 : 第 一 轮,把 标记点 的邻居 点放入 相应的 优先级 队列后 ,先进 先出的 原则处 理队列 中的像 素结点 ,找到 一个非 零结点 后,执 行第1, 2,3步 ,执行 完第3步 之后 ,重新 更新队 列再次 进行扫 描。
-1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
一、有标记的分水岭算法 1.准备好原图和掩模图
0000000 0 0000000 0 0000000 0 0000000 0 0000000 0 0000000 0 0000000 0 0000000 0
2.对掩模图做初始化标记,以形成最初的注水区域,设置mask边框值为-1,即每个 标记(种子,全为正值,1,2,3...)都是一个初始聚水盆,标记的周围一圈的邻居 像素就是聚水盆的初始边界。
ห้องสมุดไป่ตู้
下标L表示左,R表示右,T表示上,B表示下,abs表示取绝对

min(max(abs(R- RT), abs(G-GT), abs(B-BT)),max(abs(R -RB), abs(G-GB), abs(B-BB)),max(abs( R-RL), abs(G-GL), abs(B-BL)),max(abs (R-RR ), abs(G-GR), abs(B-BR)))
-2 11 11
优先级队列
Y
0 (3,4)...
1 2 3 4 5 6
...
254 255
-1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 0 -2 0 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
X
4.递归注水过程,通过扫描0-255高度值队列,从队列0开始,如果找到一个像素结点, 则弹出该结点,并退出扫描。
①如果该点在mask中的四邻域,只存在一个非0值,则将该点标记为该非0值。 ②如果 存在两个不同的非0值,表示该点为两个注水盆地的边缘,即分水岭线,在mark图像中
标记该点为-1。 ③扫描该点的邻居点,是否存在为0的mark域,存在的话这把该邻域点按照rgb高度值,
(3,4)
-1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 -1 -1 0 0 -2 0 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 1 1 0 0 -1 -1 0 0 0 0 0 0 -1 -1 0 0 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1
相关主题