谭升
非主流人工智能科学家 我和外面那些妖艳的货不一样

【数字图像处理】7.8:灰度图像-图像分割 区域分割之区域生长

灰度图像-图像分割 区域分割之区域生长

继续说废话,昨天写博客被同事看到了,问我,为什么你每一篇开始都是废话,我说凑字数,在一个可以写点轻松的话,天天在算法的海洋里飘荡,偶尔说几句荒山野岭的废话也算活跃气氛了。

区域分割介绍

今天介绍基于区域的分割方法,前面基于阈值的分割方法暂时告一段落,基于区域的分割运用同样广泛,但和阈值比较,区域分割难度也稍微大了一些,比如后面要讲到的分水岭算法,分水岭算法是个算法族,并不是单一的一个固定算法,比如有基于形态学的,也有基于其他的,但思想都一样,分水岭是那种典型的,看起来很简单,一说原理,小学生都能听懂,但实现起来难度不小,也可能是我代码能力不行,反正写了将近一整天,修改了一天才算看到点结果。
由于基于区域的分割算法已经成为一个专门的研究领域,这几篇博文只介绍一点点最基础的,通用的算法,至于高深的高科技的算法,留到未来的某个时刻。这里只讲最简单的。
今天介绍的区域生长,是其中比较简单的一种。

区域生长算法

区域生长的算法过程总结如下:

  1. 选取种子点$c(x,y)$
  2. 以种子点为中心,对其邻域像素进行递归遍历
  3. 对于每一个邻域像素$N(x’,y’)$,设计一个判别式$Q(c(x,y),N(x’,y’))$。
  4. 如果判别式为真,邻域像素N被设置为新的种子点,进入第2步,并将该点加入结果集合(与种子点为同一区域)。否则退出此次递归回到3,检测下一个邻域像素。

整体思路是以种子点为中心,遍历图,深度优先或广度优先没有没有关系,判断中心点和其邻域是否满足判别式,注意,此处最终要的点是判别式,设计判别式可以针对不同的应用,下面代码中设计的判别式是个简单的范围判别式,也就是说如果被判别的像素灰度值,在一定范围内,则为真,否则为假,范围是由种子点和附加参数param一起产生的。
#代码

结果分析









总结

区域生长算法实现较简单,但如果递归区域面积过大,可能造成程序卡死,可能是栈空间不够或者别的,这个需要处理下,这个算法的缺点是需要设置种子点,本算法的优点也是可以设置种子点,这样灵活但不够智能,算法执行速度较快。
待续。。。

Share

You may also like...

说点什么

avatar
  Subscribe  
提醒

由于博客移至wordpress,部分公式和代码显示不正常,博主正在努力修改,如发现公式显示错误,请及时在文章下留言,感谢您的帮助,尽请原谅!