SwisTrack/Components/CalibrationFileTSAI
外观
< SwisTrack | Components
使用蔡氏提出的算法进行相机校准。我们用它来将图像坐标转换为世界坐标。有关详细信息,请参阅他的论文: "An Efficient and Accurate Camera Calibration Technique for 3D Machine Vision", Roger Y. Tsai, Proceedings of IEEE Conference on Computer Vision and Pattern Recognition, Miami Beach, FL, 1986, pages 364-374." 或者这个网站。校准代码来自该网站。
对于变形图像,TSAI 比纯粹的线性二阶校准方法更好。但是,它速度较慢,有时,当相机轴与设置平面正交时,TSAI 方法会导致计算错误和巨大错误,甚至导致方法崩溃。
可以在 这里找到参数的良好介绍。
此组件与 CalibrationTSAI 不同,因为它不计算参数,而是从 xml 文件中加载参数。
在 calibrationTools/Matlab_Octave 中提供了使用 matlab/octave 计算这些参数的工具。可以使用以下文件
- computeTsaiCalibrationParameters.m: 从校准点坐标(共面校准)计算 Tsai 参数
- TsaiImage2World.m: 使用 Tsai 校准参数将图像坐标转换为世界坐标(与该组件中使用的实现相同)
- WriteTSAICalibrationParametersXMLFile.m: 以适合组件的格式写入 Tsai 校准参数
- WriteSwisTrackCalibrationXMLFile.m: 将校准点写入与 SwisTrack 兼容的 xml 文件
- readSwisTrackCalibrationXMLFile.m: 从与 SwisTrack 兼容的 xml 文件读取校准点
- optimizeSx.m: 搜索校准的最佳 sx 值
- computeError.m: 计算校准误差
粒子
粒子
此文件不是必需的,因为它们不用于计算校准参数。如果提供,该组件将计算校准误差并将它们写入日志文件。包含校准点的 XML 文件的路径。该文件必须具有以下格式
<?xml version="1.0"?> <pointlist> <points> <point> <xworld>0.3</xworld> <yworld>0.9</yworld> <ximage>9.8</ximage> <yimage>10.3</yimage> </point> <point> <xworld>34.1</xworld> <yworld>7.9</yworld> <ximage>44.3</ximage> <yimage>25.9</yimage> </point> </points> </pointlist>
可以像此示例中的两个点一样添加更多点。需要至少 5 个非共线点才能计算校准。
包含校准参数的 XML 文件的路径。该文件必须具有以下格式
<?xml version="1.0"?> <calibration> <parameters> <R> <aa>-0.0009487</aa> <ab>-0.95497</ab> <ac>0.29671</ac> <ba>1</ba> <bb>-0.00062456</bb> <bc>0.0011873</bc> <ca>-0.00094847</ca> <cb>0.29671</cb> <cc>0.95497</cc> </R> <T> <Tx>7.2682</Tx> <Ty>-1.1722</Ty> <Tz>-15.1438</Tz> </T> <C> <Cx>516</Cx> <Cy>389</Cy> </C> <dx> <value>4.65e-006</value> </dx> <dy> <value>4.65e-006</value> </dy> <sx> <value>1.042</value> </sx> <k> <value>-0.066654</value> </k> <f> <value>-0.01293</value> </f> </parameters> </calibration>