众所周知,OpenCV封装了很多用于相机标定的函数,其输出的标定结果可以利用FileStorage
对象进行保存,存储为XML格式的参数文件。考虑到很多时候图像算法的开发会在MATLAB上进行,但如果此时标定结果是通过OpenCV输出的XML格式文件,那就需要将其转换为MATLAB下的标定参数项,用于实现物像间的相互投影。
如果您对于标定感兴趣,欢迎阅读我有关三维重建的其他帖子
一.OpenCV输出的相机标定结果
我的是双目场景,所以保存的相机标定文件如下:
1.系统内参
<?xml version="1.0"?>
<opencv_storage>
<M1 type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>
3.9701338904272438e+03 0. 2.0500817357209139e+03 0.
3.9713734186383799e+03 1.5158522192251232e+03 0. 0. 1.</data></M1>
<D1 type_id="opencv-matrix">
<rows>1</rows>
<cols>14</cols>
<dt>d</dt>
<data>
-8.8331615813046951e-02 1.5627638628530921e-01 0. 0. 0. 0. 0.
1.7324943467730536e-01 0. 0. 0. 0. 0. 0.</data></D1>
<M2 type_id="opencv-matrix">
<rows>3</rows>
<cols>3</cols>
<dt>d</dt>
<data>
3.9720838692180810e+03 0. 2.0949942840707954e+03 0.
3.9695208961298167e+03 1.5360078062523207e+03 0. 0. 1.</data></M2>
<D2 type_id="opencv-matrix">
<rows>1</rows>
<cols>14</cols>
<dt