Opencv3.0 基于opencv3鱼眼模型的圆形鱼眼变形

Opencv3.0 基于opencv3鱼眼模型的圆形鱼眼变形,opencv3.0,calibration,fisheye,Opencv3.0,Calibration,Fisheye,我使用OpenCV函数执行鱼眼校准工作。我的图像是一个圆形的鱼眼(),但我是从OpenCV鱼眼模型函数得到的 我有以下问题: 我不知道为什么结果是椭圆形而不是完美的圆形。这和预期的一样吗 OpenCV鱼眼模型是否可以针对圆形鱼眼图像进行校准 我不明白为什么在使用cv::fisheye::calibrate函数获取K中的Cx Cy参数时图像不居中 检查板上可以使用哪些提示(图片编号、角度和位置…)来获取相应的相机矩阵和失真系数 预期结果 我的成绩 我不知道为什么结果是椭圆形而不是完美的圆形。

我使用OpenCV函数执行鱼眼校准工作。我的图像是一个圆形的鱼眼(),但我是从OpenCV鱼眼模型函数得到的

我有以下问题:

  • 我不知道为什么结果是椭圆形而不是完美的圆形。这和预期的一样吗

  • OpenCV鱼眼模型是否可以针对圆形鱼眼图像进行校准

  • 我不明白为什么在使用cv::fisheye::calibrate函数获取K中的Cx Cy参数时图像不居中

  • 检查板上可以使用哪些提示(图片编号、角度和位置…)来获取相应的相机矩阵和失真系数


  • 预期结果

    我的成绩

  • 我不知道为什么结果是椭圆形而不是完美的圆形。这和预期的一样吗 ->标定模型的切向参数可以使其看起来像椭圆形。可能是您的实际镜头倾斜或校准不正确。只需尝试禁用“切向参数”选项

  • OpenCV鱼眼模型是否可以针对圆形鱼眼图像进行校准
  • ->据我所知,没问题。也可以试试ocam

  • 我不明白为什么在使用cv::fisheye::calibrate函数获取K中的Cx Cy参数时图像不居中
  • ->光学中心与图像中心不对齐是正常的。然而,这是一个程度问题。Cx,Cy表示实际的光学中心。低质量鱼眼照相机制造商不控制此参数的质量

  • 检查板上可以使用哪些提示(图片编号、角度和位置…)来获取相应的相机矩阵和失真系数

  • ->只有清晰的图像,不同的距离,不同的角度,不同的位置。尽可能多。

    首先,cv::fisheye使用了一个非常简单的想法。为了消除径向变形,它将鱼眼圆的点从圆心移动到圆边。 靠近中心的点将稍微移动。靠近边缘的点将移动更大的距离。 换句话说,点移动的距离不是常数。这是一个函数f(x)=1+K1*x3+K2*x5+K3*x7=K4*x9。K1-K4是opencv鱼眼不失真模型的径向失真系数。在正常情况下,未失真图像总是比初始图像大。 正如您所看到的,未失真图像比初始鱼眼图像小。我认为问题的根源是校准不好