Chinaunix首页 | 论坛 | 博客
  • 博客访问: 412375
  • 博文数量: 68
  • 博客积分: 2500
  • 博客等级: 少校
  • 技术积分: 728
  • 用 户 组: 普通用户
  • 注册时间: 2006-10-14 00:19
文章分类

全部博文(68)

文章存档

2011年(1)

2009年(1)

2008年(17)

2007年(30)

2006年(19)

我的朋友

分类:

2008-03-01 22:42:53

  图像处理中的分割连通区域的方法!举例如下,

   A=[1     1     1     0     0     0     0     0
      1     1     1     0     1     1     0     0
      1     1     1     0     1     1     0     0
      1     1     1     0     0     0     1     0
      1     1     1     0     0     0     1     0
      1     1     1     0     0     0     1     0
      1     1     1     0     0     1     1     0
      1     1     1     0     0     0     0     0];
  要得到结果:
   B=[ 1     1     1     0     0     0     0     0
       1     1     1     0     2     2     0     0
       1     1     1     0     2     2     0     0
       1     1     1     0     0     0     3     0
       1     1     1     0     0     0     3     0
       1     1     1     0     0     0     3     0
       1     1     1     0     0     3     3     0
       1     1     1     0     0     0     0     0];

  matlab里有比较好的方法,可在C++里就很麻烦了!!!

  今天被这个问题折磨了半天,,,差点连晚饭也忘了吃!!!虽然问题基本解决,,,但速度还很慢!!!晚上在宿舍里终于看到了比较好的方法,,,这里做个记录,,,以免忘了!!!
  16年前,有两位分别叫Haralick Robert M 和 Linda G. Shapiro的高人在他们的《Computer and Robot Vision》(Volume I)中写了一种方法,简单描述如下:
 
         1、Run-length encode the input image.
         2、Scan the runs, assigning preliminary labels and recording label equivalences in a local equivalence table.
         3、Resolve the equivalence classes.
         4、Relabel the runs based on the resolved equivalence classes.
 
  速度颇快,但不好实现!!!不知道OpenCV里有没有现成的!!!
阅读(13869) | 评论(3) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-08-19 11:18:54

你好,你能把你的大体思路分享一下吗? 或者告诉我,相应的参考文献也可以,我正在做这方面的东西 谢谢啦,wlshiwyf@163.com

wansucheng2008-12-20 16:34:44

敢问高人C++里面是怎么实现的啊,如果有代码的话可以给我分享下吗?邮箱wansucheng@126.com

zengfucen2008-11-15 17:05:40

已经实现,直接DFS就OK! 另外,我还想了个快速的DFS方法,直接利用同一区域像素领域间连续性! 复杂度仍然为O(n),不过不用扫描全部像素了,可以使DFS提前递归返回!