gpt4 book ai didi

opencv - 将点投影到未失真图像上的一致性

转载 作者:行者123 更新时间:2023-12-02 17:14:22 25 4
gpt4 key购买 nike

我想将3D空间中的点投影到2D图像坐标中。我具有正在使用的相机的校准的本征和非本征。我有相机矩阵K和失真系数D。但是,我希望投影的图像坐标是未失真的图像。

从我的研究中,我发现了两种方法。

  • 使用opencv的getOptimalNewCameraMatrix函数来计算新的未失真图像的相机矩阵K'。然后在opencv的projectPoints函数中使用此K',并将畸变参数设置为0,以获取投影点。
  • 使用projectPoints函数,将原始相机矩阵K与该函数中的失真系数D一起使用,并获得投影点。

  • 两种方法的输出应该匹配吗?

    最佳答案

    我认为您的想法中缺少一些东西。

    相机矩阵K和距离系数D是使图像不失真的参数(如果您的镜头像鱼眼一样使图像失真)。它们就是所谓的相机固有参数。

    如果我们将术语从计算机视觉更改为计算机图形,这些参数就是您用来定义 View 的视锥面的参数,例如,它们用于获取相机的焦距。

    但是它们还不足以进行投影工作。

    对于投影,如果以计算机图形学术语(例如,像opengl)考虑,则需要具有模型 View 投影矩阵。模型矩阵是指定对象在世界上位置的矩阵。 View 矩阵指定摄像机的位置,而投影矩阵指定视锥(焦角,透视变形等)。

    如果您想知道如何将模型的点从3d转换为2d(反之亦然),则需要投影和 View 矩阵(您拥有模型矩阵,因为您拥有要从其开始的3d点)。在计算机视觉中, View 矩阵称为雌性参数。

    因此,您还需要电子参数,这就是相机在世界上的位置。也就是说,例如,这些参数是rvec所需的tveccv:: projectPoints

    如果要计算它们,它们就是cv::solvePnP的输出,其输出与您要执行的操作相反:从一些已知的3d点与它们在相机屏幕上的已知2d投影相结合,此函数为您提供了estrinsic参数(通过cv::Rodrigues,您可以从中获取某些opengl-opencv-augmented-reality-应用程序的 View 矩阵)。

    最后说明:虽然使用相机拍摄的所有照片中的内在参数都是固定的(当然,您当然不会更改焦距),但是每次移动相机从另一张相机拍摄新照片时,雌激素参数都会改变视点(即:这会更改透 View 的视点,因此您要查找的3D-2D投影)

    希望可以帮到您!

    关于opencv - 将点投影到未失真图像上的一致性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17245699/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com