首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何有效地将2D图像分割成类似值的区域/块?

如何有效地将2D图像分割成类似值的区域/块?
EN

Stack Overflow用户
提问于 2008-12-10 08:13:31
回答 5查看 1.8K关注 0票数 2

如何有效地将2D图像分割成类似值的块?给定的输入是一个整数数组,包括非灰度像素的色调和灰度像素的亮度。

我正在用Java编写一个虚拟移动机器人,我用分割来分析地图和相机上的图像。这在计算机视觉中是一个众所周知的问题,但是当它在机器人上运行时,性能确实很重要,所以我需要一些输入。算法才是最重要的,所以你可以在任何语言中发布代码。

  • 维基百科文章:分割(图像处理)
  • 斯坦福大学CS-223-B讲座第11节和分组 (它说均值转移可能是迄今为止最好的技术)
  • 均值移位图 (纸张也可从多琳·科曼西乌获得)
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2008-12-10 08:53:10

我会降低样本,在颜色空间和像素数,使用视觉方法(可能是均值偏移)和更高比例的结果。

这是好的,因为下采样也增加了对噪声的鲁棒性,并使您更有可能得到有意义的片段。

如果你需要平滑的话,你可以在事后用洪水来平滑边缘。

更多的想法(回应你的评论)。

( 1)你是否在抽样时混在一起?yi=(x2i+x2i+1)/2这应该消除噪音。

2)你希望它能有多快?

3)您是否尝试过动态均值转移?( google用于所有算法x的动态x)

票数 3
EN

Stack Overflow用户

发布于 2008-12-10 10:33:15

不确定它是否太高效,但是您可以尝试使用Kohonen神经网络 (或,自组织映射;SOM)对类似的值进行分组,其中每个像素包含原始颜色和位置,并且只用于Kohohen组。

不过,在实现这一点之前,您应该阅读一下,因为我对Kohonen网络的了解一直到它用于分组数据的程度--所以我不知道您的场景的性能/可行性选项是什么。

还有Hopfield网络。根据我所读到的,他们可能会被破坏成分组。

票数 2
EN

Stack Overflow用户

发布于 2008-12-10 08:29:24

我现在拥有的是:

  1. 创建一个与输入映像大小相同的缓冲区,初始化为UNSEGMENTED
  2. 对于对应的缓冲区值不是UNSEGMENTED的图像中的每个像素,使用像素值淹没缓冲区。 洪泛的边界检查是通过检查像素是否位于起始像素值的EPSILON (当前设置为10)内来完成的。 b. 洪水填充算法.

可能的问题:

2.a.的边界检查在洪水填充算法中被多次调用,如果可以使用边缘检测预先计算边界,我可以将其转换为查找,但这可能会比当前的检查时间更长。

代码语言:javascript
复制
private boolean isValuesCloseEnough(int a_lhs, int a_rhs) {
    return Math.abs(a_lhs - a_rhs) <= EPSILON;
}

可能的加强:

与其检查每一个像素的UNSEGMENTED,我可以随机挑选几个点。如果你的期望在10个左右,按这个顺序选择随机点可能就足够了。缺点是你可能会错过一个有用但很小的小块。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/355398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档