鱼眼相机在FOV比较大时, undistortPoint() 和 undistortImage() 结果相差很大

在做鱼眼图像矫正时,碰到一个很有意思的情况,即在鱼眼相机FOV比较大时, undistortPoint() 和 undistortImage()对应点的结果不一致。

两个函数的调用如下:

浅蓝色的点是画在原始图像上的。

浅蓝色的点随着图像undistortImage()矫正后的位置。

原始图像上的点(原始图像上浅蓝色的点),通过undistortPoint()矫正后的坐标。

此时 undistortPoint() 和 undistortImage() 结果基本一致。

矫正FOV更大时的点

浅蓝色的点通过undistortImage()矫正后的位置。

undistortPoint()计算的鱼眼图像上的点(对于原始图像上浅蓝色的点)矫正后的坐标。

此时两个函数矫正的结果相差比较大。

第一次选择的点和第二次选择的点,在原始图像上相距并不大。我还测量过这两个点中间的点,矫正后差异也很大,感觉就像是突破了某个临界值,过了某个临界值之后,差异就很大。

//----------------------------------------------------

接着上一部分

通过查看opencv中undistortPoint()源码,知道了第二个点为什么差异那么大的原因。如下图。然后测量了我第二个点的theta值,确实是超过了CV_PI/2. 。第一个点就已经很接近CV_PI/2 了。

那为什么 undistortImage()可以矫正大于CV_PI/2.FOV的图像点了。继续扒undistortImage()的源码,可以看到,这里未对r的角度范围做判断。

所以如果要undistortPoint()矫正FOV很大的点,可以把opencv中的代码拔出来,自己写。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值