如何有效地将2D图像分割成类似值的块?给定的输入是一个整数数组,包括非灰度像素的色调和灰度像素的亮度。
我正在用Java编写一个虚拟移动机器人,我用分割来分析地图和相机上的图像。这在计算机视觉中是一个众所周知的问题,但是当它在机器人上运行时,性能确实很重要,所以我需要一些输入。算法才是最重要的,所以你可以在任何语言中发布代码。
发布于 2008-12-10 08:53:10
我会降低样本,在颜色空间和像素数,使用视觉方法(可能是均值偏移)和更高比例的结果。
这是好的,因为下采样也增加了对噪声的鲁棒性,并使您更有可能得到有意义的片段。
如果你需要平滑的话,你可以在事后用洪水来平滑边缘。
更多的想法(回应你的评论)。
( 1)你是否在抽样时混在一起?yi=(x2i+x2i+1)/2这应该消除噪音。
2)你希望它能有多快?
3)您是否尝试过动态均值转移?( google用于所有算法x的动态x)
发布于 2008-12-10 10:33:15
不确定它是否太高效,但是您可以尝试使用Kohonen神经网络 (或,自组织映射;SOM)对类似的值进行分组,其中每个像素包含原始颜色和位置,并且只用于Kohohen组。
不过,在实现这一点之前,您应该阅读一下,因为我对Kohonen网络的了解一直到它用于分组数据的程度--所以我不知道您的场景的性能/可行性选项是什么。
还有Hopfield网络。根据我所读到的,他们可能会被破坏成分组。
发布于 2008-12-10 08:29:24
我现在拥有的是:
UNSEGMENTED。UNSEGMENTED的图像中的每个像素,使用像素值淹没缓冲区。
洪泛的边界检查是通过检查像素是否位于起始像素值的EPSILON (当前设置为10)内来完成的。
b. 洪水填充算法.可能的问题:
2.a.的边界检查在洪水填充算法中被多次调用,如果可以使用边缘检测预先计算边界,我可以将其转换为查找,但这可能会比当前的检查时间更长。
private boolean isValuesCloseEnough(int a_lhs, int a_rhs) {
return Math.abs(a_lhs - a_rhs) <= EPSILON;
}可能的加强:
与其检查每一个像素的UNSEGMENTED,我可以随机挑选几个点。如果你的期望在10个左右,按这个顺序选择随机点可能就足够了。缺点是你可能会错过一个有用但很小的小块。
https://stackoverflow.com/questions/355398
复制相似问题