【问题标题】:Z values way too large compared to x and y in reconstruction与重建中的 x 和 y 相比,Z 值太大
【发布时间】:2011-05-26 01:33:43
【问题描述】:

我使用三角测量公式从视差中重建 x,y,z。我的问题是 x,y 和 z 值的顺序非常不同。例如,x 的顺序类似于 0.001,y 的顺序类似,但 z 在10 的顺序。因此,我看到的是一条直线,而不是看到一张脸。有什么办法可以应用一些变换来保留人脸的结构,但得到更好的重建。

已编辑:这是一个示例 L 图像和视差图(标准化为 0-255 以进行可视化而不是真实值)。我给出这个的目的是表明视差相当不错。

【问题讨论】:

  • 除了将 Z 值除以 10 之外?我认为您必须向我们解释为什么数据看起来如此。
  • 我没有答案,但我在这里找到了更多关于这个问题的背景信息:cs.washington.edu/homes/indria/project/CSE576finalproject/…
  • @Ernest :-我不确定原因是什么。可能是为了获得 L 和 R 图像,我们裁剪了较大的 L 和 R 图像的一部分。除此之外,我不知道为什么发生了。对于 x 和 y,尽管我们使用 u 和 v,其中 u = X- middleColumn。除以 10 是否会压缩深度?以下是我使用的公式:ptgrey.com/support/kb/index.asp?a=4&q=63
  • @e.James:-Thanks.. 那也是我用来获取公式的页面。
  • @Manish:从您发布的视差图中,看起来 3D 重建应该非常简单。这不就相当于一个简单的高程图吗?也许我错过了什么。

标签: graphics image-processing 3d computer-vision


【解决方案1】:

假设您正在使用左右图像之间的点对应关系求解基本矩阵,这是预期的结果。因为基本矩阵是秩不足的,所以它只被定义为一个比例因子。如果您根据像素单位定义所有内容,则无法以真实世界的单位重建场景。

解决这个问题需要额外的信息:三维坐标系中一对对应点之间的关系。对于立体系统,这通常是基线,即左右摄像机中心之间的距离。

【讨论】:

  • @Michael:我不使用任何与基本矩阵相关的东西(至少不知道)。为了找到视差,我使用 OpenCV 的匹配函数。对于深度恢复,我使用 z= 焦距*基线/视差。这里焦距以像素为单位(因为我使用 matlab 教程并且说答案以像素为单位)。差异以像素为单位,我输入的基线以米为单位,因此 Z 实际上以米为单位。
  • @Manish:如果您已经乘以基线,那么这不是问题。这很可能与您最初的猜测有关:在较大的图像中处理小感兴趣区域。您是使用全分辨率图像还是仅使用感兴趣区域校准相机?
  • @Michael Koval:- 直到现在我使用整个图像校准相机,但只使用它的一部分作为 L 和 R 图像。我认为这可能会导致错误。这就是你也指点?
  • @Manish:这可能是问题所在。如果您使用 OpenCV 的相机校准功能,则需要修改内在矩阵以调整 ROI 的位置。焦距(f_xf_y)应该相同,但图像中心(c_xc_y)需要移动。
  • @Michael Koval:我不使用 opencv 的校准功能。我使用这个 (vision.caltech.edu/bouguetj/calib_doc) 在 matlab 中进行校准,这给了我焦距和基线,这是我真正需要的z .
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-07
  • 1970-01-01
相关资源
最近更新 更多