【问题标题】:Can resizing image give different image to world co-ordinate transformation?调整图像大小可以为世界坐标变换提供不同的图像吗?
【发布时间】:2017-04-12 15:51:43
【问题描述】:

这可能看起来很愚蠢,但我对相机-图像-世界坐标系统及其中间转换的了解越多,我就越感到困惑。

我正在使用使用 Blender 2.78 综合生成的深度图并使用它们进行处理。这还涉及裁剪和调整图像大小。我有我的相机矩阵(内在、外在参数)和透视投影矩阵。

我正在这些裁剪、调整大小的图像中检测一些关键点,并尝试获取这些关键点的世界坐标。如果我没记错的话,关键点是在图像坐标系中定义的。但是由于裁剪,它们的位置与我使用 Blender 生成的原始图像不同。

使用相机矩阵将这些关键点坐标转换为世界坐标会给我准确的世界坐标吗?有没有办法验证这些是否是这些图像关键点的实际世界坐标?

编辑

使用搅拌机渲染的原始图像,分辨率为 960x540:

使用检测到的 SIFT 关键点进行预处理、裁剪和调整大小后的图像(分辨率 250x200):

【问题讨论】:

    标签: opencv image-processing blender camera-calibration coordinate-transformation


    【解决方案1】:

    您必须调整相机内在函数,因为主点和像素大小已更改。或者您只需通过反向调整大小/裁剪操作更改关键点位置!

    【讨论】:

    • 感谢您的回复。我正在使用 openCV+python 进行处理。当您说更改相机内在函数时,是否意味着使用 cv2.calibrateCamera 之类的东西?另外,如果可以解释一下反向调整大小和裁剪的确切含义,那将非常有帮助!对于我的项目,我只需要为管道中的进一步步骤获得一些特定的 ROI,因此我必须调整图像的大小和裁剪。
    • 如果我错了,请纠正我,我可以从搅拌机本身获取对象点,并具有固定的相机位置。我有图像点,即图像中的关键点坐标。但我不会有他们之间的通信。对?为了获得相机内在函数,我需要使用上述评论中描述的函数来解决这些问题。
    • 如果您想将原始图像与原始图像的相机内在函数和外在函数一起用于世界函数,您必须知道原始图像中的关键点位置。如果将图像缩放 0.5 倍,则必须将关键点位置乘以 2。如果从左边界删除 L 像素,从上边界删除 T 像素,则必须将 L 添加到该点的 x 和 T 到 y 坐标。最好是添加一些示例图像和关键点
    • 您应该向执行 keypoints2world 内容的管道模块提供 ROI 和调整大小信息或新的相机内在函数
    • 除了 Micka 的回答:存在确定部分校准相机的姿势的方法。这里有一个用于不同焦距的cv-foundation.org/openaccess/content_cvpr_2014/papers/…
    猜你喜欢
    • 2018-07-03
    • 2015-10-26
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-07
    相关资源
    最近更新 更多