【问题标题】:opencv InitUndistortRectifyMap map sizeopencv InitUndistortRectifyMap 地图大小
【发布时间】:2012-11-30 15:06:38
【问题描述】:

我正在使用 opencv 进行图像校正,但想使用 c 函数 cvInitUndistortRectifyMap 返回的映射(mapx 和 mapy)自己进行映射(通常由 cvremap 完成)。 在这个过程中,我觉得奇怪的是 opencv 只返回原始图像大小的地图

这意味着在原始图像映射到其大小之外的区域中,校正后的图像只是被裁剪,因为映射只是图像的大小?! 您能否获得完整的映射,以便获得整个校正后的图像,而不仅仅是原始图像(大小)内的部分?

【问题讨论】:

    标签: opencv computer-vision crop camera-calibration


    【解决方案1】:

    不仅仅是图像大小的问题,其原因在于默认情况下,cvInitUndistortRectifyMap 生成的地图仅指向源图像中的有效像素。你想要的是得到所有的像素。

    为此,您可以使用 cvInitUndistortRectifyMapnewCameraMatrix 参数。 newCameraMatrix 的值是通过首先调用 cvGetOptimalNewCameraMatrix(参见this link)并设置 alpha 参数获得的。如链接中所述:

    • 如果 alpha = 0,则未失真图像中的所有像素都是有效的(您现在获得的)。
    • 如果 alpha = 1,则所有源图像像素都将保留在未失真的图像中(您想要的)。某些像素与源图像的任何位置都不匹配,因此它们将是黑色的。

    如果您愿意,您可以使用 cvGetOptimalNewCameraMatrixnewImageSize 参数来改变所需的校正图像大小,但这不会改变您在结果中获得的像素.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-26
      • 2012-10-13
      • 1970-01-01
      • 2014-07-21
      • 2015-11-25
      • 2018-11-20
      • 2013-11-28
      • 1970-01-01
      相关资源
      最近更新 更多