超大畸变图像畸变校正的实验结果
前言
节选自本人毕设,论文太长不再赘述,具体原理请知网搜索张正友教授的论文。摄像头为手机鱼眼摄像头搭配苹果7进行拍摄,拍摄地点为天津师范大学。
5 测试与评估
5.1 标靶图像校正测试
我们使用摄像头拍摄多张照片,注意使标定板处在画面的不同位置,并使标定板在图片中占相对较大的比例。
5.1.1 测试样例
图5.1标定板图像采集1
图5.2标定板图像采集2
图5.3标定板图像采集3
图5.4标定板图像采集4
图5.5 标定板图像采集5
5.1.2 输出参数
标定板投影到相机的2D点=畸变参数相机的投影矩阵标定板坐标到相机坐标的转换矩阵标定板坐标下的3D点。投影过程中我们未知的是等号左边的内容,已知的是等号右边的内容,但是标定中我们已知上面等式最左(2D)和最右(3D)两项,中间的一串是未知的,通过足够多的3D-2D对应,我们用某种方法(比如说zhang的算法)来求出中间一串未知量的值。求得"相机的投影矩阵标定板坐标到相机坐标的转换矩阵"之后分解他,便能得出不变的内参和随着每张画像变化的外参.完后不断迭代以便得到更精确地结果。
内参数据(内参数指的是3D到2D投影过程中用到的投影矩阵):
4.5297397607045195e+02 0. 360.
0. 4.5297397607045195e+02 360.
0. 0. 1.
畸变系数矩阵(畸变指的是镜头质量等原因导致的2D点的偏移):
-3.3173090314342535e-01 6.0275816139874240e-02
0. 0.
1.3115887652378465e-02
平均重投影误差:
1.0644170978905845e+00
每张标定图像的重投影误差(对标定结果进行评价的方法是通过得到的摄像机内外参数,对空间的三维点进行重新投影计算,得到空间三维点在图像上新的投影点的坐标,计算投影坐标和亚像素角点坐标之间的偏差,偏差越小,标定结果越好。):
8.78757536e-01 8.90311241e-01 1.02441323e+00 1.13121140e+00
1.18977368e+00 1.18977368e+00 1.06807542e+00 1.16568816e+00
9.77564692e-01 1.07216477e+00
外部参数(外参数矩阵是世界坐标系相对于摄像机坐标系的旋转平移关系):
3.3049132979170448e-01 -9.0670055929377019e-02
2.7238348336319627e-02 -2.6945240316227455e+02
-2.3922860517134495e+02 3.4009782375258203e+02
3.5836876756577357e-01 8.5591765805561951e-02
-9.0336960018962270e-03 -1.2246205390309267e+02
-2.5505629175141885e+02 3.7146305944230255e+02
1.3546763579254739e-01 3.9735800867820505e-02
-3.3556704928594666e-02 -1.4720124338429278e+02
-3.6983050099977454e+01 3.6646676174499316e+02
1.7619563723598172e-01 -5.5592740931152414e-02
3.1154429446319916e-02 -2.5306174887661138e+02
-7.9552474240130039e+01 3.3005960683209543e+02
2.3428629811699547e-01 -1.7524565107918715e-02
1.5343764013966766e-02 -2.0855475460680847e+02
-1.2514148259488378e+02 2.9693195619144376e+02
2.3428629811699547e-01 -1.7524565107918756e-02
1.5343764013966784e-02 -2.0855475460680847e+02
-1.2514148259488378e+02 2.9693195619144376e+02
4.8609003383758903e-01 -1.9183659991642527e-02
-5.9938120198000158e-04 -1.8936579907440930e+02
-2.4118947451714720e+02 2.8488330960818615e+02
7.5198906357140702e-02 -2.5637092458839609e-02
6.6746399867010659e-03 -1.8507003065214050e+02
5.3182845322339638e+01 3.5608504572354303e+02 2.6160524086497516e-01
-1.6066306357694701e-01 8.1495117802745765e-02
-2.7638973908768247e+02 -1.3253805119920588e+02
2.8691168171385902e+02 2.5945070417739374e-01 5.7828519149622871e-02
-8.0336001989133182e-02 -1.1289703910570158e+02
-1.0616583121382948e+02 3.3723758020291132e+02
5.1.2 矫正结果显示
图5.6校正结果1
图5.7校正结果2
图5.8校正结果3
图5.9校正结果4
图5.10校正结果5
5.2 常规图像校正测试
5.2.1 测试样例
图5.11测试图像1
图5.12测试图像2
图5.13测试图像3
图5.14测试图像4
图5.15测试图像5
5.2.2 校正结果
图5.16校正结果1
图5.17校正结果2
图5.18校正结果3
图5.19校正结果4
图5.20校正结果5
校正图像的采集,需要和标定程序使用同一个摄像头。为了使校正正常进行,我们拍摄的校正照片需要大小尺寸和标定所用的图像在相对较小的一个误差范围内。
拍摄校正图片需要画面清晰度要接近标定时采集的图像,保证合焦准确。
6 总结与展望
在此次设计中经历了资料检索、理论研究、需求分析、搭建框架、编程、制作或选择器件、以及测试等阶段,终于完成。
这这个设计中,对特定摄像机的标定只需要一次标定即可。并且在标定程序中增加了将参数输出到文档的功能, 从而极大的减少了后续校正的代码长度,降低了时间复杂度和空间复杂度。 符合我们设计算法来降低工作量的初衷。标定程序中设计较为规范,具有一定的通用性,可以很好的进行跨平台的移植等等。在数学运算的处理方面,本设计采用了OpenCV库,可以较好的提取特征点并方便快速的进行矩阵运算。
在整体程序设计中,体现了模块化编程的思想。尽可能将频繁使用的代码块封装成函数库,并使用具有辨识度的名称来命名变量,使得代码规范整洁,方便后续修改和检查。
在开发过程中,程序设计难度较大,所需要查阅的资料较多,后续采用Opencv库,将开发难度极大的降低。 使得设计具有较为合适的难度。
本设计相对而言还不完善,在边角的处理并不能使人满意,并且可处理的照片尺寸太小,实用性有限。如果需要更好的输出效果,除了更换性能强劲的计算机外,还可以通过设计更为优异的算法来使计算机能够处理更大,更多的图片,获取足够的特征点进行校正。