分水岭算法(WatershedAlgorithm)所谓分水岭算法有好多种实现算法,拓扑学,形态学,浸水模拟和降水模拟等方式
要搞懂就不容易了
WatershedAlgorithm(分水岭算法),顾名思义,就是根据分水岭的构成来考虑图像的分割
现实中我们可以或者说可以想象有山有湖的景象,那么那一定是水绕山,山围水的情形
而区分高山(plateaus)与水的界线,以及湖与湖之间的间隔或都是连通的关系,就是我们可爱的分水岭(watershed)
为了得到一个相对集中的集水盆,那么让水涨到都接近周围的最高的山顶就可以了,再涨就要漏水到邻居了,而邻居,嘿嘿,水质不同诶,会混淆自我的
那么这样的话,我们就可以用来获取边界高度大,中间灰阶小的物体区域了,它就是集水盆
浸水法,就是先通过一个适当小的阈值得到起点,即集水盆的底;然后是向周围淹没也就是浸水的过程,直到得到分水岭
当然如果我们要一直淹没到山顶,即是一直处理到图像灰阶最高片,那么,当中就会出现筑坝的情况,不同的集水盆在这里想相遇了,我们要洁身自爱,到这里为止,因为都碰到边界了
构筑属于自己的分水岭
在计算机图形学中,可利用灰度表征地貌高
图像中我们可以利用灰度高与地貌高的相似性来研究图像的灰度在空间上的变化
这是空域分析,比如还可以通过各种形式的梯度计算以得到算法的输入,进行浸水处理
分水岭具有很强的边缘检测能力,对微弱的边缘也有较好的效果
为会么这么说呢
为什么有很强的边缘检测能力,而又能得到相对集中的连通的集水盆
现实中很好办,我们在往凹地加水的时候,直到它涨到这一块紧凑的山岭边缘就不加了;但是如果有一条小山沟存在,那没办法,在初始阈值分割的时候,也就是山沟与集水盆有同样的极小值,而且它们之间是以这个高度一直连接的
那没关系,我们将它连通
看看算法,算法思想是这样的:首先准备好山和初始的水