【问题标题】:How do I distort a camera ray to simulate a calibrated camera?如何扭曲相机光线以模拟已校准的相机?
【发布时间】:2023-03-22 13:47:01
【问题描述】:

我有什么:

  • 一台校准过 by opencv 的相机(我知道所有的 k、s 和 tau)
  • 位置和方向(我知道 R 和 t)
  • 图像平面上的一个点 (u, v)
  • 沿穿过 (u, v) 的光线的距离

我想要什么:

  • 沿穿过 (u, v) 的光线在给定距离处的 3D 点,考虑到失真

opencv 中有什么东西可以做到这一点还是我必须自己推导出来?

【问题讨论】:

  • 你有K,真正的深度Z?对于给定的(u,v),使用undistortPoints() 应用反向透视变换。它给你(x,y,1)。那么 3D 坐标就是(x*Z, y*Z, Z)
  • @Catree 我想扭曲,而不是不扭曲。
  • 相机模型如下所示:(X,Y,Z) 在相机帧中,然后用透视投影(x,y,1)“移除”深度,然后投影到图像平面(u,v),然后应用失真。在投影图像中应用失真。因此,要么您正在处理图像中的失真,并且您可以不失真您的 2D 坐标,要么您没有失真。

标签: opencv vision


【解决方案1】:

documentationprojectPoints函数。尤其是最后的注释:

通过设置 rvec=tvec=(0,0,0) 或通过将 cameraMatrix 设置为 3x3 单位矩阵,或通过传递零失真系数,您可以 得到函数的各种有用的部分情况。 这意味着您 可以计算一组稀疏点的扭曲坐标或 应用透视变换(并计算导数) 在理想的零失真设置中。

【讨论】:

  • projectPoints 返回图像平面上的二维点。我正朝着另一个方向前进,从图像平面上的点和到 3D 点的距离。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2015-10-15
  • 2020-10-16
  • 2021-02-26
  • 2015-09-24
  • 2013-01-28
相关资源
最近更新 更多