【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

      SkySeraph July 7th 2011  HQU

Email:zgzhaobo@gmail.com    QQ:452728574

Latest Modified Date:July 7th 2011 HQU

------------------------------------------------------------------------------------------------------------------------

》原理

分水岭算法有好好几种实现算法,拓扑学,形态学,浸水模拟和降水模拟等,最常用的就是Soille和Vincent首先提出的模拟浸没的算法,该算法分割结果效果好,速度快,具有较强的实用性,其简要概括如下。其它更多细节见后文给出的参考资料,不再细述。

Vincent和Soille算法包括2个部分:第一个部分是排序;第二部分为泛洪。算法描述如下:

(1)将根据图像中每个像素的RGB值根据公式Gray=0.299R+0.587G+0.114B得到与之对应的灰度值。

(2)根据Sobel算子得到图像的梯度。(边缘像素的梯度为其邻域像素的梯度,梯度范围为0-255)

(3)对梯度进行从小到大的排序,相同的梯度为同一个梯度层级。

(4)处理第一个梯度层级所有的像素,如果其邻域已经被标识属于某一个区域,则将这个像素加入一个先进先出的队列。

(5)先进先出队列非空时,弹出第一个元素。扫描该像素的邻域像素,如果其邻域像素的梯度属于同一层(梯度相等),则根据邻域像素的标识来刷新该像素的标识。一直循环到队列为空。

(6)再次扫描当前梯度层级的像素,如果还有像素未被标识,说明它是一个新的极小区域,则当前区域的值(当前区域的值从0开始计数)加1后赋值给该为标识的像素。然后从该像素出发继续执行步骤5的泛洪直至没有新的极小区域。

(7)返回步骤4,处理下一个梯度层级的像素,直至所有梯度层级的像素都被处理。流程如下:

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

------------------------------------------------------------------------------------------------------------------------

》源码

核心代码(部分源码来源网络,修改并做了很详细的注释)

 

函数模块

 

-----------------------------------------------------------------------------------------------------------------------

》效果

找了一辆车做测试,效果勉强,运行速度很慢。

原图:

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

轮廓:

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

轮廓图:

【图像算法】彩色图像分割专题七:基于分水岭的彩色分割

------------------------------------------------------------------------------------------------------------------------

》参考资料:

Watershed (image processing): http://en.wikipedia.org/wiki/Watershed_(image_processing)

IMAGE SEGMENTATION AND MATHEMATICAL MORPHOLOGY http://cmm.ensmp.fr/~beucher/wtshed.html

分水岭算法(Watershed Algorithm):http://hi.baidu.com/changfeng01200/blog/item/0ed6920b51f82e1794ca6bc5.html

分水岭分割方法:http://hi.baidu.com/huangwenzhixin/blog/item/039d5713c81bf62add5401e2.html

分水岭算法简单实现http://blog.csdn.net/tt2com/article/details/6321610

分水岭分割算法http://hi.baidu.com/%CA%D8%CD%FB%CC%EC%B1%DF%B5%C4%D4%C2/blog/item/57926db72b319ee531add1d2.html

 

------------------------------------------------------------------------------------------------------------------------

Author:         SKySeraph

Email/GTalk: zgzhaobo@gmail.com    QQ:452728574

From:         http://www.cnblogs.com/skyseraph/

本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.

上一篇:标准模板库(STL)学习指南之priority_queue优先队列


下一篇:JAVA网络编程之获取网络资源