分水岭算法对颗粒分布的划分
分水岭算法是一种基于区域的图像分割方法,而图像分割方法,是一个很大的类别,其中有很多值得研究的东西。wiki上给出的图像分割方法的内容包含很多,这一篇我不准备讨论,放到后面去(->图像分割wiki)。20世纪70年代,Beucher和Lantuejoul提出了分水岭算法,实现了分水岭算法的模拟浸入过程,并成功应用于灰度图像。
最原始的思想,来自于地理学,把一幅图像想象成一个立体的地形表面,上面有山川起伏,在灰度图中,最小值点作为山谷的谷底,往里面注水,每一个局部极小值都是一座山谷,这样随着水不断的往上涨,在两座山谷的水达到一个高度时,我们筑起堤坝,这样隔开水,这个堤坝就是分水岭。目前比较著名的使用较多的有两种算法“
(1)自下而上的模拟泛洪的算法;
(2)自上而下的模拟降水的算法。
原来的颗粒分布的处理,我使用的是voronoi图的方法,该方法基于的是每个斑的质心坐标。对两两相邻的质心坐标进行连接,垂直平分线形成polygons,最终的polygon,如果以原图贴合上去的话,很可能会出现划分的polygon把原来的斑割裂的情况。且,相关评价指标,都是建立在将所有的颗粒定义为点的基础上,则与实际的斑不符合。
以分水岭算法作为划分手段,好处在于以下几点:
(1)所有的划分,都会将颗粒或者原来的斑包含在内,这种划分是基于实际情况的。
(2)由于基于灰度图,可通过开闭运算,以及膨胀腐蚀重建等手段,使得颗粒的粘附或者团聚情况改善,可把团聚隔开
分水岭算法的缺陷:
(1)对图像中的噪声极度敏感,因为灰度图像实际上要经过梯度处理,最后才能用于watershed()。原图如果噪声很多,即会恶化灰度图以及梯度图,最终形成梯度图中的轮廓偏差。
(2)如果没有标记,很容易过分割,将图片分割太细。因为噪声,误差,纹理等的影响,是的图中有太多局部极小值,则形成太多的分水岭脊线。