基于几何成像模型的鱼眼镜头图像校正算法和技术研究的实现与改进
来源:互联网 发布:手机淘宝广告位 编辑:程序博客网 时间:2024/06/08 13:46
写这篇博客的初衷来自于这篇博文:http://blog.csdn.net/wd1603926823/article/details/47008657,我在这里试着回答一下原博客作者提出的问题并给出了改进的代码和结果。
原博主提出的问题是:
1. 校正后的图像宽度(w)和高度(h)如何确定?2. 为什么将校正图的大小设置为3*R后的校正效果如此之差?(见原博的第三幅图)
问题1:校正后的图像宽度(w)和高度(h)如何确定?
这个问题应该从鱼眼镜头成像的几何模型入手
这里假设鱼眼镜头的成像面是曲面π1,而校正图像(投射投影)的成像面是平面π。因此可以把鱼眼镜头图像校正算法理解作由曲面π1和平面π的几何关系来对鱼眼图像像素做位置的映射,即求出点q1和q的纵坐标关系,进而得到每个像素坐标关系,即论文中的公式(11)(12)。
那如何确定鱼眼图像和校正图像之间的尺寸关系?
应该通过几何关系来确定鱼眼图与校正图之间的尺寸关系。设q1点是离鱼眼图像中心最远距离的点L0(图中红色箭头表示),通过几何关系计算出q点离校正图像中心最远的距离L1(图中绿色箭头表示)。那么L0与L1之比就是鱼眼图像和校正图像的尺寸之比。由于论文使用的是向后映射(由校正图像坐标反过去求鱼眼图像坐标,并将对应的像素填充到当前校正图像素坐标中),即先假设校正图像尺寸(w,和h ),这怎么可以假设?明明是可以计算出来的!
我这里计算下。由原论文公式(3)和公式(1),
在鱼眼图像中:L0=f*ω
在校正图像中:L1=f*tanω
消掉ω ,得: L1=f*tan(L0/f)
这样,得到比例 s=L1/L0,便是校正图像和鱼眼图像尺寸之比。
我这里使用的鱼眼图像尺寸1280*1280,几何中心在(644,643),R=634 ,f=403.6,在一个圆中离圆心最远的点就在圆上,这个距离就是半径。
故L0=634
L1=f*tan(L0/f)= f*tan(π/2)=+∞
原因是入射角接近90°时(可以想象上图物点p无限往上移),这时的校正图像将会接近无限大(微笑)。所以我觉得这里可以认为我们只能是人为的去取一个合适的尺寸比例参数,因为反正你要取大了,效果也渣的不行了,想要完美提取出鱼眼边缘严重畸变处隐藏的信息是不可能的。我做了实验分别取1倍,2倍,还有4四倍的效果。顺便纠正原博主的在做3*R实验的错误。
问题二:为什么将校正图的大小设置为3*R后的校正效果如此之差?(见原博的第三幅图)
博主在尝试设校正图为3倍鱼眼图半径r做的结果如下图所示:
问题如下:
这里附上原博主的代码:
因此博主的问题出在,鱼眼图像中心和校正图中心应该是两个不同的坐标,两幅图的尺寸不一,图像中心坐标当然不一样。虽然论文中有鱼眼图和校正图“共心 ”,但涉及到坐标计算的时候,;两幅尺寸不一的图,在同一坐标系下,要用不同的坐标表示其中心。如下图所示:
最后,我在博主代码的基础上做了如上述的修改,使用自己的鱼眼图像分别校正出,1:1,1:2,和1:4的校正图:
原图:
1:1
可以看出丢失了很多边缘信息
1:2
可以看出比起图一多了很多信息
1:4
可以看出比较离谱了,证明这个模型虽然简单,但还是存在很多缺陷
- 基于几何成像模型的鱼眼镜头图像校正算法和技术研究的实现与改进
- 《基于几何成像模型的鱼眼镜头图像校正算法和技术研究》实现
- 鱼眼镜头畸变校正模型
- 关于《一种基于球面透视投影约束的鱼眼镜头校正方法》的流程
- 鱼眼图像校正算法(基于几何模型)(2D)
- 改进的经度坐标校正鱼眼图像算法_code
- 鱼眼镜头畸变校正的一些参考链接
- 算法仿真《基于畸变率的图像几何校正》matlab7.0
- 基于高维视觉特征模型的目标图像检测与图像分割技术研究---论文摘录
- 鱼眼镜头畸变校正-OpenCV3.1.0和Matalb2012a
- 基于CS的脉冲GPR成像技术研究(20111)
- 基于光线追踪的Mental Ray鱼眼镜头的编程实现
- 基于光线追踪的Mental Ray鱼眼镜头的编程实现 作者:华文广
- 鱼眼镜头畸变校正方法
- 《基于双经度模型的鱼眼图像畸变校正方法》code
- 基于OpenCV的图像几何变换算法
- 鱼眼镜头的分类
- 鱼眼镜头的选型
- Java 动态代理作用是什么?
- 行人再识别(行人重识别)【包含与行人检测的对比】
- Servlet、ServletConfig、ServletContext之间的关系!
- 安卓备注项目和博客
- 闭包,lambda以及倆牛叉BIF
- 基于几何成像模型的鱼眼镜头图像校正算法和技术研究的实现与改进
- Codeforces Round #370 (Div. 2) D. Memory and Scores(DP)
- Android中UI线程与后台线程交互设计的5种方法
- Python使用sftp实现上传和下载功能
- Selenium学习7--结束测试
- PCF8591
- HDU 4185Oil Skimming 匈牙利
- Android Studio 导出Unity插件(剩余电量、信号强度)
- Android动画之PropertyAnimation;Interpolator;Evaluator与Keyframe