【问题标题】:how to get the depth value of a ball from a disparity map如何从视差图中获取球的深度值
【发布时间】:2014-04-27 17:20:38
【问题描述】:

您好,我正在编写一个程序,该程序从视差图中检索球的 z 坐标。我正在使用 EmguCv 包装类。目前我有很多元素在工作,虽然我承认目前还不是很完美,但只需要一些调整。目前完成的步骤如下:

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

  2. 相机校准是通过识别棋盘格并存储内部和外部参数进行的。

  3. 图像经过校正且未失真,以尽可能多地消除噪点和失真。

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

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

我目前遇到的问题是如何在视差图中隔离球,以便仅获得 x、y 尤其是 z 坐标。我见过从视差图中提取单个对象的实例,例如http://disparity.wikidot.com/,在“为视差图添加颜色和运动”标题下。

是否有可以用于识别和提取球的方法,或者是否通过诸如 SURF 或 SIFT 过程执行提取?

提前致谢

史蒂夫

【问题讨论】:

标签: c# computer-vision emgucv


【解决方案1】:

您需要提供更多详细信息才能获得有用的答案。

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

【讨论】:

  • 感谢您的回复。理想情况下,我希望它在未来变得自动化,但目前是这样。目前我正在使用直播。我在每一帧中都有已知的球中心的像素值。这会通过使用这个坐标消除鼠标点击的需要吗?你的第二点正是我要找的。如何获得该中心像素的相应深度?松配合误差阈值会为我获得这个吗?
  • 在 OpenCV 中?对于一组(较小的)离散点,请使用 triangulatePoints:docs.opencv.org/trunk/modules/calib3d/doc/…。对于完整的视差图,请改用 reprojectImageTo3d:docs.opencv.org/trunk/modules/calib3d/doc/…reprojectImageTo3D(InputArray disparity, OutputArray _3dImage, InputArray Q, bool handleMissingValues, int ddepth)
猜你喜欢
  • 2020-06-15
  • 2016-08-21
  • 2014-05-27
  • 2016-05-01
  • 1970-01-01
  • 2020-01-14
  • 2011-11-06
  • 1970-01-01
  • 2019-09-27
相关资源
最近更新 更多