MATLAB单相机校准程序中文
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
y
z X
Y
R Z wenku.baidu.com K t
w :任意齐次坐标 比例因子 K :相机内在矩阵,定义 为:
fx 0 0 s fy 0 cx cy 1
坐标( c x c y ) 代表了光学中心(主点), 以像素为单位。 当像平面的 x 和 y 轴是完全垂直时, 斜参数等于 0 。
观察矫正后图像 查看消除镜头畸变的影响, 图像窗格中, 单击显示矫正后图像 。如果校准是准确 的,图像的扭曲的线条变得笔直。
畸变检查是很重要的无畸变的图像,即使重映射误差很小。如果标定板涵盖了图 像,只有一小部分失真估计可能是不正确的,尽管重投影误差很小。
改善标定
为了改善校准,您可以删除重投影误差较大的图像, 添加更多的图片或修改校准 器设置。 添加或删除图片 考虑添加更多的图片如果: 1. 2. 3. 你有不到 10 图像。 标定板没有足够覆盖的图像帧。 标定板没有足够的变化方向。
查看图像和探测点
数据浏览器窗格中显示一个图像 id 列表。这些图像包含一个检测标定板。要查 看图像,在 数据浏览器 窗格选中它。
图像窗格显示棋盘图像,用绿色圆圈表示检测到角点。你可以通过缩放验证的检 测到的角点在视图选项卡中。黄色的正方形表示(0,0)的原点。棋盘的 X 和 Y 箭 头表示坐标轴方向。
准备标定板,相机, 和图片
为达到最佳效果,使用 10 至 20 幅含有标定板的图像。标定 APP 至少需要三个图 像。 使用未压缩的或无损压缩格式如 PNG 图像。 标定板和相机的设置必须满 足一系列需求。 为了提高精度遵循以下提示对于准备标定板,设置摄像头和捕捉 图像。 准备棋盘标定板
相机标定应用程序推荐使用一个棋盘标定板,一个棋盘标定板是一个方便的校准目标。如果你想使用一个 不同的标定板中提取关键点,可以直接使用相机标定 MATLAB 函数。请看几何相机校正 函数列表。 你可以打印(MATLAB 中生成)和使用提供的 棋盘状图案标定板。你使用的棋盘标定板不能是方形的。 一 边必须含有偶数的方块另一边必须包含奇数的方块。因此,该标定板包含两个黑色的角落一边和两个白人角 落另外一侧。 这个标准使应用程序以确定标定板的方向,标定程序认为长边是 x 轴。
作为一般规则,棋盘标定板应该填补至少 20%的捕获的图像。例如, 前面的图片拍摄的棋盘方块的大小为 108 毫米。
添加图片
开始校准,必须添加图片。您可以添加保存好的图像从一个文件夹或直接从相机 添加图片。程序自动分析了图像,以确保它们满足标定的要求然后检测角点。
从文件夹添加图片
点击添加图片按钮,并选择 从文件夹。你可以从多个档夹添加图片,点击添加图 片为每个文件夹。
标定
一旦你满意拍摄的图片,点击标定。默认的校准设置假设使用一组相机参数数量 最少的模型。首先使用默认设置运行标定。在评估结果后,你可以尝试通过调整 设置和添加或删除图片提高标定精度,然后再标定一次。 标定算法
校准算法假定针孔相机模型:
wx
( X , Y , Z ): 世界坐标的点 ( x , y ):形象 对应的像点坐标的像素
捕获图像
为达到最佳效果,使用至少 10 到 20 的包含标定板的图像。标定 APP 至少需要三个图像。 使用未压缩的图 像或图像无损压缩格式如 PNG。为了提高标定精度:
1. 2. 3. 4. 5. 6.
捕获的图像模式大约距离等于距离你的相机感兴趣的对象。 例如,如果您计划从 2 米测量对象,保持你 的从相机模式大约 2 米。 把棋盘角度小于 45 度相对于相机平面。 不要修改图片。例如,没有裁剪他们。 不使用自动对焦或缩放图像。 在相对于相机不同位置捕获的图像 棋盘状图案。 捕获足够的不同模式的图像,你已经覆盖尽可能多的图像帧。 在图像边缘镜头畸变会快速增加增加。 为了捕捉这些透镜畸变, 该标定板必须出现接近边缘的位置。
如果有任何图像不合适,检测结果窗口就会显示出来,其中包含检测信息。结果 显示有多少总图像得到处理,有多少被接受,拒绝或跳过了。
想查看了被拒绝的图片,点击 查看图片。它还拒绝整个棋盘不能被检测到的图 像。 被拒绝的可能的原因可能是是一个模糊的图像或标定板放在了一个极端的角 度。图像越大,方格越多,检测需要更长的时间。
选择一个映像 这些方法: 点击图中相应的酒吧。 从列表中选择图像的 数据 浏览器 窗格。 散点图 散点图显示每个点重投影误差。+号表示的是被选中的图片。一个精确的标定通 常导致一个紧凑的点云。离群值较大指出潜在的问题与相应的图片。为了改善精 度,可以考虑删除这些图像。
可视化相机外部参数
程序提供了一种可视化的 3D 视图。 基于摄像机参考系和标定板参考系两种模式, 点击按钮显示之间切换这两个视觉效果。单击并拖动图形可以旋转它。点击一个 棋盘或一个摄像头以选中它。 突出显示的数据可视化对应于所选择的图像列表 中。检查相对标定板和相机的位置,以查看它们是否匹配你的期望。例如,一个 标定板出现在相机后面表明标定误差。
径向畸变系数描述了这种类型的畸变模型。 xdistorted = x (1 + k 1 *r2 + k2*r4 + k3*r6) ydistorted= y(1 + k1*r2 + k2*r4 + k3*r6) x , y :不失真 像素位置 k 1 , k 2 , 和 k 3 :径向畸变 系数的镜头 r 2 : x2 + y 2 通常,两个系数就已经满足校准的精度要求。严重失真,比如在广角镜头,选择 使用 3 个系数 即包括 k 3 。 无畸变的像素位置归一化图像坐标, 光学中心的起源。 表达的坐标 在国际单 位。 计算偏斜系数
R :代表三维矩阵 相机的旋转 t :翻译的相机相对的 世界坐标系统
摄像机标定算法就是估计内参数,外参数和失真系数。 相机校正包括以下步骤:
1) 2)
假定透镜畸变为零,在封闭的形式上解出内参数和外参数 [1] 所有参数同时估计,包括畸变系数,利用非线性最小二乘最小化 (Levenberg-Marquardt 算法)。 设置 初始变形系数的估计为零,使用前面的步骤得到的封闭的解作为初始估计的内参数和外参数。[1] [2]
考虑删除图片,如果图片: 1) 重投影误差太大 2) 被污染 3) 包含一个棋盘角度相对于相机平面大于 45 度的标定板 4) 包含错误检测到棋盘点 改变径向畸变系数的数量 您可以指定 2 或 3 径向畸变系数通过选择相应的的单选按钮选项 部分。 径向失 真 在边缘附近的弯曲畸变比光学中心更严重。 镜头越小, 失真就越大。
然后计算并显示检测结果。
9.
点击 OK 显示 检测结果 对话框。
10. 当你已经完成了捕获在线图片,你可以单击 关闭图像捕获 关闭 图像捕获 选 项卡并返回到 校准 选项卡。
分析图像
你选择图片后,在棋盘方格大小对话框中,输入的长度。
程序试图检测添加的图片中的每一个棋盘。 分析图像窗口出现时出现一个进度条, 表明检测进度。
准备棋盘标定板:
1) 2)
棋盘打印输出粘贴到一个光滑的平面上。表面缺陷会影响标定的准确性。 测量一个方格的大小。这对标定是必需的。方格的大小可以不同根据打印机设置。
3)
提高检测速度,设置标定板尽可能少的背景杂波。
相机的设置
适当调整你的相机,遵循以下规则: 保持焦点中的模式,但是不要使用自动对焦。 不改变图像之间的缩放设置。 否则焦距变化。
获得在线图片
为了标定必须添加图片。 你可以从一个网络摄像头使用 MATLAB 摄像头的支 持在线获得图像。 你必须 获得 MATLAB 支持 USB 摄像头安装驱动。参 看 Install the Webcam Support Package 的信息。 1. 获得在线图片,单击 添加图片 箭头 并选择 从相机 。
输出相机参数
当你对标定精度满意时,点击输出相机参数 。您可以保存和导出相机参数作为 一个对象或 MATLAB 脚本生成相机参数。
在某些情况下默认值工作刚刚好,你不需要在输出参数之前做进行任何改进。如 果你需要做出改进,您可以使用 MATLAB 相机标定函数。这一系列函数,请参 阅 MATLAB Geometric Camera Calibration 模块。
打开相机标定 APP
MATLAB Toolstrip:打开应用程序选项卡,下拉到 图像处理和计算机视觉 ,点击 应用程序图示。 MATLAB 命令提示:输入 cameraCalibrator。
7. 8.
预览 窗口显示的在线图片是 RGB 图像流数据。 当你调整完所有设备属性和 捕捉设置后,使用 预览 窗口捕捉图像。 单击 捕获 按钮。捕获的数字图像的缩略图和快照出现在 数据浏览器 面板。 他们自动捕获命名为. png 文件。 您可以随意停止捕获,点击停止捕获 。
当你捕获图像数量到达指定值后,会让你输入单个方格的大小,输入后点 击 OK 。
评估校准结果
你可以通过重投影误差,相机的外参数和矫正畸变图像来评估校准精度。 最佳 校准方法是使用这三种方法的评价。
检查重投影误差 重投影误差 是距离在检测点和重投影点之间的像素距离。程序通过计算从世界 坐标系到图像坐标系重投影误差,重投影误差小于一个像素认为标定是成功的。
重投影误差表现为一个条形图和散点图。你可以之间使用按钮切换他们。您可以 找到一个偏离较远的图片即重投影误差较大的图片。然后,您可以在 数据浏览 器 窗格从列表中选择和删除这些图像,以提高标定精度。 条形图 条形图显示每个图像,均重投影误差和总体平均误差。直方图的标签 id 对应于图 像。突出显示的栏对应于所选择的图像。
在 捕捉间隔 字段中,使用文本框或滑块设置图像捕获之间的秒数。 默认值是 5 秒,最小是 1 秒,最大是 60 秒。 在 图像捕捉的数量 领域, 使用文本框或滑块设置图像捕捉的数量,默认设置 是 20 图片,最低是 2 图片,最大 100 张图像。 在默认配置中,共有 20 个图像捕获, 每 5 秒。 6. 把预览窗口锁定在程序的中心是很有益的。
2.
图像捕捉 选项卡打开。如果你只有一个摄像头连接到系统,它被默认选中, 在线预览窗口打开。 如果你有多个摄像头连接,想使用一个特定的,选择 的相机 相机 列表。 你可以设置相机控制的属性。 单击 相机属性 打开你的相机的属性的列表。 这个列表显示你的设备。
3.
可以使用滑块或下拉框改变任何可用的属性设置。当你改变设置时预览窗口 动态更新。当你完成设定属性,单击弹出对话框将属性列表清除。 4. 5. 输入一个获得图像档的位置 保存 位置 字段输入档夹的路径或者使用 的 浏 览 按钮。你必须拥有写入位置的读写权限。 设置您的捕获参数。
当您选择 计算偏斜系数 检查框时,程序估计图像轴倾斜。一些相机传感器包含缺 陷导致的 x y 轴不垂直。你可以使用一个斜参数建立缺陷模型。如果你不选择复 选框,图像的轴认为是垂直的,大多数现代的相机都不需要设置此参数。 计算切向畸变 切向畸变发生在镜头和图像平面不平行的情况下。 切向畸变系数模型描述这种类 型的失真。
扭曲的点被指示为( xdistorted , ydistorted):
xdistorted = x + [2 * p1 * y + p2 * (r2 + 2 * x2)] ydistorted = y + [p1 * (r2 + 2*y2) + 2 * p2 * x]
x , y :不失真像素位置 p 1 和 p 2 : 镜头切向畸变系数 r 2= x 2+ y 2 当您选择 计算切向畸变 检查框,校准器估计切向畸变系数。 否则,校准器设置切向 畸变系数为零。
单相机标定程序
相机标定概述
您可以使用相机标定程序估计相机内参数,外参数,镜头畸变参数。您可以使用 这些相机参数到多种计算机视觉应用。这些应用范围包括消除镜头畸变的影响, 测量平面物体,或者从多个摄像头重建三维场景。
单摄像机标定工作流程
遵循这个工作流使用这个 APP 来标定你的相机的内外参数: 1. 2. 3. 4. 5. 6. 准备好图片,相机,和标定板。 加载图片。 校准相机。 评估校准精度。 调整参数来提高精确度(如果需要)。 输出参数对象。