为了账号安全,请及时绑定邮箱和手机立即绑定

以编程方式校正鱼眼失真

以编程方式校正鱼眼失真

翻阅古今 2019-12-10 10:40:45
我发现了如何绘制线性透镜,从一个destination坐标到另一个source坐标。您如何计算从中心到鱼眼到直线的径向距离?1)。我实际上很难扭转它,并将源坐标映射到目标坐标。按照我发布的转换函数的样式,代码的反函数是什么? 2)。我还看到我的失真在某些镜头上不完美-大概不是严格线性的。这些镜头的等效源坐标和源坐标是什么?同样,请提供更多的代码,而不仅仅是数学公式... 最初陈述的问题:我有一些要点描述用鱼眼镜头拍摄的照片中的位置。我想将这些点转换为直线坐标。我想使图像不失真。我已经找到了关于如何产生鱼眼效果的描述,但没有找到如何扭转它的描述。还有一篇博客文章,描述了如何使用工具来完成该任务。输出:校正后的图像(从技术上讲,也可以进行透视校正,但这是一个单独的步骤)。您如何计算从中心到鱼眼到直线的径向距离?我的函数存根看起来像这样:Point correct_fisheye(const Point& p,const Size& img) {    // to polar    const Point centre = {img.width/2,img.height/2};    const Point rel = {p.x-centre.x,p.y-centre.y};    const double theta = atan2(rel.y,rel.x);    double R = sqrt((rel.x*rel.x)+(rel.y*rel.y));    // fisheye undistortion in here please    //... change R ...    // back to rectangular    const Point ret = Point(centre.x+R*cos(theta),centre.y+R*sin(theta));    fprintf(stderr,"(%d,%d) in (%d,%d) = %f,%f = (%d,%d)\n",p.x,p.y,img.width,img.height,theta,R,ret.x,ret.y);    return ret;}另外,我可以在找到点之前以某种方式将图像从鱼眼转换为直线,但是我完全被OpenCV文档所迷惑。在OpenCV中是否有一种简单的方法可以做到这一点,并且它的性能足以将其用于实时视频供稿?
查看完整描述

3 回答

  • 3 回答
  • 0 关注
  • 644 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信