使用 Matlab Toolbox 进行摄像机标定
DLR CalDe and DLR CalLab 可以自由下载使用(非商业用途)
作者 Klaus Strobl , Wolfgang Sepp ,Stefan Fuchs,Cristian Paredes 和Klaus Arbter来自机器人与机电学院。
这是使用 Matlab Toolbox 进行摄像机标定的待完整文档的发行版本。该文档包含了关于标定、参考和相关链接,也可以作为摄像机标定的指导说明。
有关错误/问题/建议请联系作者:Jean-Yves Bouguet,电邮。
文档翻译与整理:李清松 电邮:
本工具箱的 C 语言实现包含在 Intel 的 Open Source Computer Vision(OpenCV)中,可以在线免费下载。
本篇文章内容组织如下:
1、系统需求
2、开始
3、标定实例
4、标定参数说明
5、标定工具箱函数说明
6、标定你自己的摄像机
7、关于工具箱未公布的功能
8、参考文献
9、关于摄像机标定的链接
------------------------------------------------------------------------------------------------------
1、系统需求
该工具箱可以在 Windows、Linux和Unix系统下的Matlab 5.x, Matlab 6.x and Matlab 7.x 版本下使用,而且不需要任何特定的 Matlab 工具箱(例如:不需要最优化工具箱)。
注意:我最近收到了在 Matlab 2007b 平台下关于 GUI 相关的 bug 报告。当修复工作完成时我会将其上传。请将你在使用过程中遇到的问题通知给我以帮助维护这个工具箱。请在邮件里写清楚 bug 的类型,并复制完整的错误信息。谢谢!!
2、开始
◆转到 下载页面 ,获取最新版本的完整的摄像机标定 Matlab 工具箱。
◆将解压出的所有文件(.m 文件)放入一个文件夹中(默认的文件夹名称是 TOOLBOX_calib)。
◆运行 Matlab,并将 TOOLBOX_calib 文件夹添加到 matlab path 环境中。该步骤可以让你在任何地方调用 matlab 工具箱里的任何函数。在 Windows 系统下,该操作可以方便的通过 path 编辑菜单进行。在 Linux 和 Unix 系统下,你可以使用 path 或者 addpath 命令(使用 help 命令查看相关的帮助说明)。
◆运行matlab标定主函数 calib_gui(或calib)。
屏幕上将出现如下的模式界面
该选择窗口提示你在工具箱的两种操作模式中选择其一:标准模式和内存节省模式。在标准模式下,所有标定时需要的图像一次性装入内存,之后不再进行磁盘的读取。这大大减小了磁盘访问的开销,加速了图像处理和图形显示函数执行的速度。然而,如果图片过大,或图片过多,将会出现 OUT OF MEMORY 错误。因此,可以使用新的内存节省模式。在内存节省模式下,每次只读取一幅图片,并且不在内存中存储。
如果选择运行标准模式,当遇到 OUT OF MEMORY 错误时,可以该选用内存节省模式。两种模式的操作是完全兼容的(输入与输出),内部进行转换。
因为两种模式的用户界面完全一样,在本文中我们选择了标准界面。点击屏幕上方的标准界面按钮,将出现工具箱的标定主窗口(取代模式选择窗口)如下:
模式选择的步骤可以通过执行 calib_gui(0) (使用标准模式) 或执行 calib_gui(1) (使用内存节省模式) 跳过(键入 help calib_gui 查看更多信息)。
◆现在你可以使用工具箱进行标定了。
3、标定实例 ◆第一个标定实验 - 角点提取,标定,其他工具
本章节将指导你进行一个基于 20(或 25)张平面西洋跳棋盘图片的全面的标定实例。这个例子让你指导如何跟工具箱的所有功能:装入标定图片,提取图像角点,运行主标定程序,显示结果,控制精度,添加或减少图片,纠正图片畸变,以不同格式输出标定数据……
本例子对所有开始使用该工具箱的人非常有用。
◆第二个标定实验 - 使用 Zhang Zhengyou 的数据进行标定
本节指示如何使用主标定程序以脚本模式对 Zhang Zhengyou 的数据进行标定。实验结束后,你将了解如何通过选择不通的参数改变固有摄像机模型从而达到最优化。该例子对使用主标定程序对自己已有的 matlab script 文件进行标定的人很有用。
◆第三个标定实验 - 使用 Heikkil 的数据进行标定(平面和非平面的标定物)
当标定物为非平面时,基于 Heikkil 数据的主最优程序标定实验也很有用,试一下这个程序,运行时间仅需 30 秒钟。
◆第四个标定实验 - 使用 Bakstein 和 Halir 的数据进行标定
另一个基于 Bakstein 和 Halir 的数据进行的主最优程序标定例子。
◆第五个标定实验 - 标定一个立体系统,立体图像校正和三维三角测量
这个例子指示如何使用工具箱标定立体系统(固有的和非固有的),校正立体图像,执行三维三角测量。演示了名称为 stereo_gui 的立体工具箱。
◆第六个标定例子 - 单摄像机的两种独立标定方法的综合
本例子通过 merge_two_datasets.m 进行了简单演示,使你可以简单的组合单个摄像机的两种独立标定方式。
4、标定参数的说明 标定完成后,通过点击 Save 按钮可以保存参数列表到 matlab 数据文件 Calib_Results.mat 。本节详细介绍了所有标定参数(固有的和非固有的)和它们的相关的 matlab 变量名称。此外还给出了我们所用符号与 Heikkil 和 Willson 的符号的一对一说明。
5、标定工具箱函数说明 本节给出了标定工具箱的主要函数的简单说明。
6、标定你自己的摄像机 本节包含了关于标定所要做的初始步骤:设计标定对象,命名标定图像,图片格式……
对与如何开始进行摄像机标定非常有用。对于比较懒的人来说,也提供了一个标定模版。
7、关于工具箱未公布的功能 本节包含了自本文档第一次发布后添加的功能列表。
8、 参考文献 设计本工具箱的参考文献
9、关于摄像机标定的链接 关于摄像机标定相关链接的简短列表
DLR CalDe and DLR CalLab 可以自由下载使用(非商业用途)
作者 Klaus Strobl , Wolfgang Sepp ,Stefan Fuchs,Cristian Paredes 和Klaus Arbter来自机器人与机电学院。
这是使用 Matlab Toolbox 进行摄像机标定的待完整文档的发行版本。该文档包含了关于标定、参考和相关链接,也可以作为摄像机标定的指导说明。
有关错误/问题/建议请联系作者:Jean-Yves Bouguet,电邮。
文档翻译与整理:李清松 电邮:
本工具箱的 C 语言实现包含在 Intel 的 Open Source Computer Vision(OpenCV)中,可以在线免费下载。
本篇文章内容组织如下:
1、系统需求
2、开始
3、标定实例
4、标定参数说明
5、标定工具箱函数说明
6、标定你自己的摄像机
7、关于工具箱未公布的功能
8、参考文献
9、关于摄像机标定的链接
------------------------------------------------------------------------------------------------------
1、系统需求
该工具箱可以在 Windows、Linux和Unix系统下的Matlab 5.x, Matlab 6.x and Matlab 7.x 版本下使用,而且不需要任何特定的 Matlab 工具箱(例如:不需要最优化工具箱)。
注意:我最近收到了在 Matlab 2007b 平台下关于 GUI 相关的 bug 报告。当修复工作完成时我会将其上传。请将你在使用过程中遇到的问题通知给我以帮助维护这个工具箱。请在邮件里写清楚 bug 的类型,并复制完整的错误信息。谢谢!!
2、开始
◆转到 下载页面 ,获取最新版本的完整的摄像机标定 Matlab 工具箱。
◆将解压出的所有文件(.m 文件)放入一个文件夹中(默认的文件夹名称是 TOOLBOX_calib)。
◆运行 Matlab,并将 TOOLBOX_calib 文件夹添加到 matlab path 环境中。该步骤可以让你在任何地方调用 matlab 工具箱里的任何函数。在 Windows 系统下,该操作可以方便的通过 path 编辑菜单进行。在 Linux 和 Unix 系统下,你可以使用 path 或者 addpath 命令(使用 help 命令查看相关的帮助说明)。
◆运行matlab标定主函数 calib_gui(或calib)。
屏幕上将出现如下的模式界面
该选择窗口提示你在工具箱的两种操作模式中选择其一:标准模式和内存节省模式。在标准模式下,所有标定时需要的图像一次性装入内存,之后不再进行磁盘的读取。这大大减小了磁盘访问的开销,加速了图像处理和图形显示函数执行的速度。然而,如果图片过大,或图片过多,将会出现 OUT OF MEMORY 错误。因此,可以使用新的内存节省模式。在内存节省模式下,每次只读取一幅图片,并且不在内存中存储。
如果选择运行标准模式,当遇到 OUT OF MEMORY 错误时,可以该选用内存节省模式。两种模式的操作是完全兼容的(输入与输出),内部进行转换。
因为两种模式的用户界面完全一样,在本文中我们选择了标准界面。点击屏幕上方的标准界面按钮,将出现工具箱的标定主窗口(取代模式选择窗口)如下:
模式选择的步骤可以通过执行 calib_gui(0) (使用标准模式) 或执行 calib_gui(1) (使用内存节省模式) 跳过(键入 help calib_gui 查看更多信息)。
◆现在你可以使用工具箱进行标定了。
3、标定实例 ◆第一个标定实验 - 角点提取,标定,其他工具
本章节将指导你进行一个基于 20(或 25)张平面西洋跳棋盘图片的全面的标定实例。这个例子让你指导如何跟工具箱的所有功能:装入标定图片,提取图像角点,运行主标定程序,显示结果,控制精度,添加或减少图片,纠正图片畸变,以不同格式输出标定数据……
本例子对所有开始使用该工具箱的人非常有用。
◆第二个标定实验 - 使用 Zhang Zhengyou 的数据进行标定
本节指示如何使用主标定程序以脚本模式对 Zhang Zhengyou 的数据进行标定。实验结束后,你将了解如何通过选择不通的参数改变固有摄像机模型从而达到最优化。该例子对使用主标定程序对自己已有的 matlab script 文件进行标定的人很有用。
◆第三个标定实验 - 使用 Heikkil 的数据进行标定(平面和非平面的标定物)
当标定物为非平面时,基于 Heikkil 数据的主最优程序标定实验也很有用,试一下这个程序,运行时间仅需 30 秒钟。
◆第四个标定实验 - 使用 Bakstein 和 Halir 的数据进行标定
另一个基于 Bakstein 和 Halir 的数据进行的主最优程序标定例子。
◆第五个标定实验 - 标定一个立体系统,立体图像校正和三维三角测量
这个例子指示如何使用工具箱标定立体系统(固有的和非固有的),校正立体图像,执行三维三角测量。演示了名称为 stereo_gui 的立体工具箱。
◆第六个标定例子 - 单摄像机的两种独立标定方法的综合
本例子通过 merge_two_datasets.m 进行了简单演示,使你可以简单的组合单个摄像机的两种独立标定方式。
4、标定参数的说明 标定完成后,通过点击 Save 按钮可以保存参数列表到 matlab 数据文件 Calib_Results.mat 。本节详细介绍了所有标定参数(固有的和非固有的)和它们的相关的 matlab 变量名称。此外还给出了我们所用符号与 Heikkil 和 Willson 的符号的一对一说明。
5、标定工具箱函数说明 本节给出了标定工具箱的主要函数的简单说明。
6、标定你自己的摄像机 本节包含了关于标定所要做的初始步骤:设计标定对象,命名标定图像,图片格式……
对与如何开始进行摄像机标定非常有用。对于比较懒的人来说,也提供了一个标定模版。
7、关于工具箱未公布的功能 本节包含了自本文档第一次发布后添加的功能列表。
8、 参考文献 设计本工具箱的参考文献
9、关于摄像机标定的链接 关于摄像机标定相关链接的简短列表