我发现了如何绘制线性透镜,从一个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 关注
- 687 浏览
添加回答
举报
0/150
提交
取消