使用opencv3鱼眼模型的圆形鱼眼扭曲
Posted
技术标签:
【中文标题】使用opencv3鱼眼模型的圆形鱼眼扭曲【英文标题】:Circular fisheye distort using opencv3 fisheye model 【发布时间】:2018-03-20 02:00:31 【问题描述】:我使用 OpenCV fisheye model 函数来执行鱼眼校准工作。我的图像是圆形鱼眼 (example),但我从 OpenCV 鱼眼模型函数中得到了 this result。
我有以下问题:
我不知道为什么结果是椭圆而不是完美的圆形。这是预期的吗?
能否针对圆形鱼眼图像校准 OpenCV 鱼眼模型?
不明白为什么使用 cv::fisheye::calibrate 函数获取 K 中的 Cx Cy 参数时图像不居中?
棋盘上有哪些提示(图片编号、角度和位置...)可以得到正确的相机矩阵和畸变系数?
预期结果
我的结果
【问题讨论】:
【参考方案1】:首先 cv::fisheye 使用了一个非常简单的想法。为了消除径向失真,它将从圆心到圆边缘的方向移动鱼眼圆的点。 中心附近的点会移动一点。靠近边缘的点将移动到更大的距离。 换句话说,点移动的距离不是一个常数。这是一个函数 f(x)= 1+K1*x3+K2*x5+K3*x7=K4*x9。 K1-K4是opencv鱼眼不失真模型的径向失真系数。在正常情况下,未失真的图像总是比初始图像大。 如您所见,您的未失真图像小于初始鱼眼图像。我认为问题的根源是校准不当。
【讨论】:
【参考方案2】:-
我不知道为什么结果是椭圆而不是完美的圆形。这是预期的吗?
-> 校准模型的切向参数可以使它看起来像椭圆。可能是您的实际镜头倾斜或校准不正确。只需尝试关闭切向参数选项。
-
能否针对圆形鱼眼图像校准 OpenCV 鱼眼模型?
-> 据我所知没问题。也可以试试 ocam。
-
我不明白为什么在使用 cv::fisheye::calibrate 函数获取 K 中的 Cx Cy 参数时图像不居中?
-> 光学中心与图像中心不对齐是正常的。然而,这是一个程度的问题。 Cx、Cy代表实际光学中心。低质量的鱼眼相机制造商不控制这个参数的质量。
-
可以在棋盘上使用哪些提示(图片编号、角度和位置...)来获取正确的相机矩阵和失真系数?
-> 只有清晰的图像,不同的距离,不同的角度,不同的位置。尽可能多。
【讨论】:
以上是关于使用opencv3鱼眼模型的圆形鱼眼扭曲的主要内容,如果未能解决你的问题,请参考以下文章