EMGU OpenCV仅在某些像素上存在差异

时间:2012-03-05 22:04:23

标签: opencv emgucv disparity-mapping

我正在为c#使用EMGU OpenCV包装器。我已经很好地创建了一个视差图。然而,对于我的特定应用,我只需要极少数像素的视差值,我需要它们实时。现在计算大约需要100毫秒,我想通过获得数百个像素值而不是数千个像素的差异会大大加快。我不太了解发生了什么"引擎盖下#34;立体声解算器代码,有没有办法通过计算我需要的像素的差异来加快速度?

1 个答案:

答案 0 :(得分:0)

首先,你没有提到你真正想要完成的事情,而且还有你正在使用的算法。例如。与StereoSGBM和StereoBM相比,StereoGC非常慢(即非实时),但通常更准确。最后两个可以实时使用,只要满足一些条件:

  • 输入图像的大小相当小;
  • 您没有使用奢侈的参数集(例如,numberOfDisparities的较大值会增加计算时间。)

在准确性方面,不要指望奇迹。

除此之外,还有“只需几个像素”的问题。据我所知,OpenCV中实现的算法通常依赖于来自1个以上像素的信息来确定视差值。例如。它需要一个邻域来检测图像A中的哪个像素映射到图像B中的哪个像素。结果,通常不可能只丢弃图像的每个其他像素(顺便说一句,如果你已经知道了图像中的位置)两个图像,你根本不需要立体声方法)。因此,除非你可以丢弃输入图像的大边框,你知道你永远不会找到你感兴趣的像素,我会说你问题的这一部分的答案是“不”。

如果您碰巧知道您感兴趣的像素将始终位于输入图像的某个矩形内,则可以指定此矩形的输入图像ROI(感兴趣区域)。假设OpenCV在这里没有包含错误,这应该可以加快计算速度。

通过谷歌搜索,您可以找到使用Yutube上的GPU使用EmguCV(或普通OpenCV)查找立体声对应关系的实时示例。也许这可以帮到你。

免责声明:如果您的问题包含更多详细信息,这可能是一个更完整的答案。