OpenCV分割技术实现地面检测

3
我正在研究一种检测图像中地面的方法。我试图通过将图像缩小为颜色区域,然后假设最大的区域是地面来实现这一目标。(我们可以对机器人将要操作的环境做出一些非常广泛的假设)
我正在寻找一些适合解决这个问题的算法建议。任何帮助都将不胜感激。
编辑:具体而言,我正在寻找一种图像分割算法,可以可靠地提取一个区域。我尝试过的所有方法(主要是PyrSegmentation)似乎都是通过将图像缩小为N种颜色来工作的。当相机看向空区域时,这会导致误报。

你能详细说明一下从PyrSegmentation()得到的分割结果有什么问题吗? - Michael Koval
它跳来跳去的。当应用于针对白纸上有黑色物体的网络摄像头视频源时,它偶尔会工作,偶尔会将白色区域分成区域。我可以通过增加第二个阈值来解决这个问题,但是当我移除物体时,它会尝试将空白纸张分成区域。我可能没有正确使用它,但它似乎是解决这个问题的错误方法。接下来我将尝试基于直方图分割的方法。@Michael Koval - pkinsky
过度分割通常是一个非常棘手的问题。在大多数情况下,我避免完全进行分割或使以下阶段能够抵御过度分割,这样做运气更好。 - Michael Koval
2个回答

5
由于地板检测是主要目标,所以我建议您可以尝试通过纹理进行分离,而不是按颜色分割。 Eigen transform 论文描述了一种使用图像/视频帧中灰度窗口上的特征值平均值来描述纹理“粗糙度”的单值描述符。 在论文的第78页,他们在特征变换输出图像上应用了均值漂移分割,有效地将其分为不同的纹理。
由于您的图像来自视频源,因此光照会有很多变化,因此颜色分割可能会出现一些问题(除非您正在使用HSV和其他颜色空间,如上所述)。 在OpenCV中,使用cvSVD()函数计算特征值非常简单快速。

4
如果您能做出关于色彩恒常性的假设,那么您主要的问题将是光照变化会干扰您的颜色检测。为此,请将输入图像转换为HSV、HSLcie-LabYUV或其他亮度分离的颜色空间,并基于仅颜色部分(在上述示例中留下亮度值V、L、L和Y)对图像进行分割。这将帮助您克服阴影和光照变化的障碍。

我的问题主要在于分割步骤。我可以让它在静止图像上工作,或在一个光照条件下,但只要条件改变它就开始失败。 - pkinsky
是的,这就是为什么你想要将你的图像转换为相对独立于光线的格式。 - jilles de wit
我现在正在使用一张白纸作为背景。当我在上面投射阴影时,阴影内部会出现黑色斑点(色调以灰度显示,使用openCV)。我能想到的一个可能的解决方案是使用彩色背景,而不是白色背景,这可以表示为几乎任何色调,具有非常低的饱和度和高价值。@jilles de wit - pkinsky
这可能是一个浅色问题。使用与白色不同的鲜明背景可能会有所帮助。 - jilles de wit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接