【问题标题】:Finding Projection and z distance查找投影和 z 距离
【发布时间】:2011-08-13 22:36:07
【问题描述】:

我有一个代表投影的图像。我将用一个例子来解释这个问题:

在屏幕上,有一条线从一个点 E(100,200) 到另一个点 H (150,100)。 A 代表一个点 在现实世界中是 200 厘米 距离,而 B 是在 现实世界在 300 厘米的距离。

我想知道的是:

给定通过这两个点的线的一个点,有没有办法计算它应该有的z距离数据?

如果z距离不是线性函数而是某个对数函数怎么办?

如果不清楚,问我一切,

干杯

【问题讨论】:

  • 没有gimp,你应该将文件保存为jpeg并将其粘贴到问题中,让其他人的生活更轻松
  • E, H, A, B...这里没有重复吗?我同意戴文的观点,你的描述不够清晰……你说的z距离是多少? B 在 300 厘米的距离……什么/谁?
  • 对不起,那张图片是之前创建的.. 你是对的,z 距离是相机到点的距离

标签: math distance kinect projective-geometry


【解决方案1】:

我认为你得到的是透视正确插值。如果您知道 E 处的深度和 H 处的深度,并且 B 在连接这两个点的线上(在图像中),则求解 B 处的深度:

1/Zb = s * 1/Ze + (1-s) * 1/Zh

其中 s 是屏幕空间中沿线的归一化距离/插值参数(介于 0 和 1 之间),意思是 B = s * E + (1-s) * H

【讨论】:

  • 知道透视投影与距离成反比,这也是我要去的地方 - 对我来说看起来不错!
  • @Mr E ,我在这个 s 参数的计算上有问题。你能告诉我更多关于如何计算它的信息吗?
  • 我可能误读了您的问题。哪些点是哪些。我的假设是图像中有两个点 E 和 H,它们都具有已知的深度。您想计算沿着连接这两个点的线的一点的深度。第二个方程是 E 和 H 之间的直线(线段)方程。“s”是沿着直线移动的变量。目前,你怎么知道第三个点在连接这两个点的线上?
  • 我已经离开电脑几个小时了,但可以稍后回答问题
  • 谢谢,这是一个限制,因为第三点在线。让我们以我发布的图像为例,带有 a、b、c 点。我知道 a 和 b 的 x,y,z 坐标。如果我想计算点 C 的 z 坐标(即在 A 和 B 之间通过的线),在这种情况下知道 x 和 y 坐标 (300,300)。我怎样才能找到它的 z 坐标(图中 1.5 米)
【解决方案2】:

使用齐次坐标,可以在屏幕空间中线性插值(用于深度和纹理):http://www.cs.unc.edu/~olano/papers/2dh-tri/

【讨论】:

  • 好的,我将阅读它,但我认为即使使用不同的坐标系,问题仍然存在..
  • Z 距离可以直接从齐次坐标计算出来。事实上,如果你想跳到答案,1/Z 是线性插值的(通常是最后一个齐次坐标)。
  • 我想我已经使用真实世界坐标解决了这个问题,所以还是谢谢你:)
  • 如果您使用的不是 1/深度的线性插值,我不确定您在做什么。
  • 我已经修改了所有代码,以便使用 Kinect 的真实世界坐标,使用它们我可以轻松找到我需要的所有 z 坐标。
猜你喜欢
  • 1970-01-01
  • 2013-05-14
  • 1970-01-01
  • 2011-06-03
  • 2016-02-14
  • 2015-03-31
  • 2019-10-31
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多