【问题标题】:OpenCV camera calibration of an image crop (ROI submatrix)图像裁剪的 OpenCV 相机校准(ROI 子矩阵)
【发布时间】:2014-03-16 13:53:32
【问题描述】:

我在使用 OpenCV 的 undistort 函数时遇到了一点问题。我正在使用使用广角镜头的相机。假设我对它的访问是有问题的,因为它已经安装了。问题基本上归结为:

我已经成功测量了所有镜头参数,并且可以毫无问题地使全帧图像不失真,问题是我实际上是在某种线扫描模式下工作。我们只在传感器中间使用了一个切口,大约 100 像素高。图片说明:

现在,如果我对相关图像的 ROI(感兴趣区域)应用 undistort,它自然会假定它是全帧顶部的切口,因此校正与它应该做的大不相同全画幅高度的一半。

如果我只使用较低分辨率的全帧,我了解如何修改相机矩阵以补偿图像比例,但问题是:我能否以任何方式补偿裁剪的部分偏移以实现正确的转换?

我想我可以使用全帧分辨率的黑色图像,然后将相关数据复制到其中,但这是不可能的,因为这样会影响处理速度。

感谢您的任何见解!

干杯, 一月。

【问题讨论】:

  • 你试过调整主点(cx,cy)吗?
  • 意思是如果我说服 undistort 认为镜头的中心位于全画幅图像的顶部可能会有所帮助?会尝试...谢谢。
  • 如果你裁剪图像,那么主点将有不同的坐标。例如,如果您的原始主点位于 (30,40),并且您在两侧裁剪 10 个像素,那么您的新主点将位于 (20,30),因为像素 (20,30) 在裁剪后的图像与原始图像中的像素 (30,40) 相同。
  • 果然如此。谢谢一堆。您能否将其发布为答案,以便我接受?

标签: c++ opencv computer-vision camera-calibration


【解决方案1】:

如果您裁剪图像,则主点将具有不同的坐标。例如,如果您的原始主点位于 (30,40),并且您在边上裁剪了 10 个像素,那么您的新主点将位于 (20,30),因为像素 (20,30) 在裁剪后的图像与原始图像中的像素 (30,40) 相同。

您需要相应地调整相机矩阵中的 cx an cy 值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-16
    • 2014-07-30
    • 2018-10-19
    • 2020-01-25
    • 2013-10-07
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多