2014-04-27 76 views
0

嗨,我正在写一个程序,它从视差图中检索一个球的z坐标。我正在使用EmguCv包装类。目前我有很多元素工作,虽然目前还不完美,但只是需要一些调整。到目前为止完成的步骤如下:如何从视差图中获取球的深度值

  1. 两台摄像机同时运行,每个摄像机视图显示在一个图像框中。

  2. 摄像机校准是在确定棋盘格的方块并存储内在和外在参数的情况下进行的。

  3. 图像纠正和不失真,以尽可能消除噪音和失真。

  4. 我在每张图片中标识了球,并且标记了球的中心并检索了x和y坐标。

  5. 创建并显示视差图,并实施reprojectImageTo3D()方法以给出地图中像素的x,y和z坐标。

我目前遇到的问题是如何在视差图中隔离球,以获得只有x,y和特别是z坐标。我已经看到从差异图中提取单个对象的例子,例如, http://disparity.wikidot.com/,在标题“添加颜色和运动到视差贴图”下。

有没有一种方法可以用于识别和提取球或者是由诸如SURF或SIFT过程之类的东西进行的提取?

在此先感谢

史蒂夫

+0

您可以通过http://dsp.stackexchange.com/询问更多的答案。 – Aybe

+0

非常感谢。我会在那里尝试。 – user3569032

回答

0

您需要提供大量的详细信息,以获得有用的答案。

例如,您是在寻找一个完全自动化的解决方案,还是可以接受一个人类操作员提供一些输入(“提示”)?如果是后者,问题变得更容易 - 一种常见的方法是在输入图像中获取一个或几个像素的鼠标输入(单击),通过视差图查找相应的深度,然后“增长”从那里通过添加相邻像素的拟合球体 - 您将希望以失配拟合误差阈值开始,并随着添加样本数量的增加而收紧。

+0

感谢您的回复。理想情况下,我希望它在未来变得自动化,但目前。目前我正在使用直播。我有在每个帧中已知的球的中心的像素值。这会消除使用此坐标点击鼠标的必要吗?你的第二点正是我所期待的。我如何获得这个中心像素的相应深度?宽松合适的错误阈值会为我获得这个吗? – user3569032

+0

在OpenCV中?对于一小组离散点,请使用triangulatePoints:http://docs.opencv.org/trunk/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#triangulatepoints。对于完整的视差图,改为使用reprojectImageTo3d:http://docs.opencv.org/trunk/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html#void reprojectImageTo3D(InputArray不等式,OutputArray _3dImage,InputArray Q,bool handleMissingValues,int ddepth) –