MATLAB 标定技术 Overview_1

基于靶标平面相机参数动态标定Matlab程序

基于靶标平面相机参数动态标定Matlab程序 ★注意:直接运行bd.m文件即可进行动态标定,附录Ⅲ中的其它函数文件均会被bd.m文件调用;坐标数据由实验获取。 bd .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % M为靶标角点的世界坐标数据,m1—m5为5组图像像素坐标数据;本函数为主函数,它将数据赋值给函数Dtbd(M,m)实现相机动态标定。 clc; clear; M=load('Model.txt'); %Model.txt中为靶标角点的世界坐标,由实验测得 m1=load('data1.txt'); m2=load('data2.txt'); m3=load('data3.txt'); m4=load('data4.txt'); %data1.txt—data5.txt中为不同视角所对应的角点图像坐 %标,可用附录Ⅱ中的程序测得 m5=load('data5.txt');%Model.txt为靶标的世界坐标 M=[M(:,1:2) ; M(:,3:4) ; M(:,5:6) ; M(:,7:8)]; m1=[m1(:,1:2) ; m1(:,3:4) ; m1(:,5:6) ; m1(:,7:8)]; m2=[m2(:,1:2) ; m2(:,3:4) ; m2(:,5:6) ; m2(:,7:8)]; m3=[m3(:,1:2) ; m3(:,3:4) ; m3(:,5:6) ; m3(:,7:8)]; m4=[m4(:,1:2) ; m4(:,3:4) ; m4(:,5:6) ; m4(:,7:8)]; m5=[m5(:,1:2) ; m5(:,3:4) ; m5(:,5:6) ; m5(:,7:8)]; M=M'; % 将靶标平面上角点的世界坐标写入矩阵M中,M为2维矩阵m(:,:,1)=m1'; m(:,:,2)=m2'; m(:,:,3)=m3'; m(:,:,4)=m4'; m(:,:,5)=m5'; % 将5个视角对应的图像像素坐标写入矩阵m中,m为3维矩阵Dtbd(M,m) % 调用Dtbd .m文件进行动态标定%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Dtbd .m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Dtbd(M,m)函数实现的功能正是本论文中第4章所讲述的动态标定技术,它引入了径向畸变和切向畸变,具体标定过程可参照本论文。 function Dtbd(M,m) [rows,npts]=size(M); matrixone=ones(1,npts); M=[M;matrixone]; num=size(m,3); for i=1:num

摄像机参数标定步骤

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、标定实例

实验三 MATLAB图像处理基本操作及摄像机标定(DLT)

实验三 MATLAB图像处理基本操作及摄像机标定(DLT) 实验三 Matlab图像处理基本操作及摄像机标定(DLT) (DLT)1、实验目的 通过应用Matlab的图像处理基本函数,学习图像处理中的一些基础操作和处理。 理解摄像机标定(DLT)方法的原理,并利用程序实现摄像机内参数和外参数的估计。。 2、实验内容: 1) 读取一幅图像并显示。 2) 检查内存(数组)中的图像。 3) 实现图像直方图均衡化。 4) 读取图像中像素点的坐标值。 5) 保存图像。 6) 检查新生成文件的信息。 7) 使用阈值操作将图像转换为二值图像。 8) 根据RGB图像创建一幅灰度图像。 9) 调节图像的对比度。 10) 在同一个窗口内显示两幅图像。 11) 掌握matlab命令及函数,获取标定块图像的特征点坐标。 12) 根据摄像机标定(DLT)方法原理,编写Matlab程序,估计摄像机内参数和12) 外参数。 3、实验要求: 1) 选取一幅图像,根据实验内容1)—10)给出结果。

2) 根据给定的标定块图像及实验内容11),12)进行编程实验。 3) 书写实验报告 4、实验设备 1) 微机。 2) Matlab软件。 5、实验原理 DLT变换: Abdal-Aziz和Karara于70年代初提出了直接线性变换像机定标的方法,他们从摄影测量学的角度深入的研究了像机图像和环境物体之间的关系,建立了像机成像几何的线性模型,这种线性模型参数的估计完全可以由线性方程的求解来实现。 直接线性变换是将像点和物点的成像几何关系在齐次坐标下写成透视投影矩阵的形式: X,,wu,,,, Y,,w,,,svP 3,4,,,,Zw ,,1,,,,1,, 为图像坐标系下的点的齐次坐标,为世界坐标系下的空其中,,,, u,v,1X,Y,Zwww 间点的欧氏坐标, P为3*4的透视投影矩阵,为未知尺度因子。 消去S,可以得到方程组: pX,pY,pZ,p,puX,puY,puZ,pu,011w12w13w1431w32w33w34 pX,pY,pZ,p,puX,puY,puZ,pu,021w22w23w1431w32w33w34 当已知N个空间点和对应的图像上的点时,可以得到一个含有2*N个方程的方程组: AL,0 其中A为(2N*12)的矩阵, L为透视投影矩阵元素组成的向量: T ,,p,p,p,p,p,p,p,p,p,p,p,p111213142122232431323334 ||AL||像机定标的任务就是寻找合适的L,使得为最小,即 min || AL || L

基于MATLAB对相机标定的研究

基于MATLAB对相机标定的研究 相机标定是对相机成像的逆过程求解,是建立二维图像坐标和三维世界坐标之间的对应关系,是机器视觉的重要组成部分。文章对针孔相机成像原理进行分析,考虑相机成像过程的径向畸变和偏心畸变。利用棋盘格标定原理,基于MATLAB对相机进行标定。 标签:相机标定;MATLAB;二值化 随着科技的迅猛发展,机器视觉越来越多的被运用到工业生产。相机的标定是机器视觉的重要组成部分,是对由三维世界坐标到二维图像坐标的映射求解。并廣泛运用于逆向工程、空间测距、图像识别、3D电影、游戏等工程。 相机的标定方法分为两大类,分别为传统标定方法和自标定方法。传统标定方法利用标定块的角点坐标和对应的图像坐标,计算出相机的内外参数,这种标定方法可以标定任意相机模型,标定过程复杂但是结果精确。包括利用最优化算法的标定、考虑畸变补偿的两步法、张正友标定法。自标定法是利用Krupp方程为相机建立绝对二次曲线曲面方程进行求解。这种方法灵活性强,但是鲁棒性和标定结果相对较差。 1 相机的标定原理 对相机进行标定首先需要建立相机的成像模型,首先利用针孔模型对相机的成像原理进行分析,然后考虑实际相机的畸变模型,利用张正友标定方法求解。 1.1 线性模型分析 相机标定的针孔模型是利用小孔成像的原理来描述相机的成像模型。针孔相机模型如下图1。 要描述针孔相机模型,需要介绍四种坐标以及这四种的坐标的相互关系。如图1所示,世界坐标系(OW-XWYWZW)表示世界的绝对坐标,能描述相机及其物理的空间位置。相机坐标(OC-XCYCZC)以相机的光心为坐标的原点,光轴为ZC轴,而XC、YC轴分别平行于图像坐标系的X,Y轴。图像坐标(o-xy)是以光轴与图像平面的交点为原点,描述的成像的平面坐标。图像像素坐标(o-uv)是图像的存储坐标,以图像左上端点为原点,以像素为单位描述图像其u、v轴分别平行于图像坐标的x、y轴。 其中fx=f/dx,dx表示像素在x轴方向的物理尺寸,f为相机的焦距。A是相机的内部参数矩阵,表示针孔模型下相机坐标到像素坐标的转换关系。点(u0,v0)为图像的主点。R是旋转矩阵,t是平移量,M为外部参数矩阵,表示由世界坐标系经过旋转和平移到相机坐标系的转换。

Matlab摄像机标定工具箱的使用说明

摄像机标定工具箱 1.1 Matlab 摄像机标定工具箱 工具箱下载:https://www.360docs.net/doc/206379729.html,/bouguetj/calib_doc/download/index.html 说明文档:https://www.360docs.net/doc/206379729.html,/bouguetj/calib_doc/ 安装:将下载的工具箱文件toolbox_calib.zip 解压缩,将目录toolbox_calib 拷贝到Matlab 的目录下。 采集图像:采集的图像统一命名后,拷贝到toolbox_calib 目录中。命名规则为基本名和编号,基本名在前,后面直接跟着数字编号。编号最多为3位十进制数字。 1.1.1 标定模型 内参数标定采用的模型如式(1-1)所示,Brown 畸变模型式(1-2)所示。 ???? ??????=????????????????????=??????????11//100011100c c in c c c c y s x y x M z y z x v k u k k v u (1-1) 式中:(u , v )是特征点的图像坐标,(x c , y c , z c )是特征点在摄像机坐标系的坐标,k x 、k y 是焦距归一化成像平面上的成像点坐标到图像坐标的放大系数,k s 是对应于图像坐标u 、v 的摄像机的x 、y 轴之间不垂直带来的耦合放大系数,(u 0, v 0)是光轴中心点的图像坐标即主点坐标,(x c 1, y c 1)是焦距归一化成像平面上的成像点坐标。k s =αc k x ,αc 是摄像机的实际y 轴与理想y 轴之间的夹角,单位为弧度。 ?????++++++=++++++=1 142123654221112124113654221112)2()1()2(2)1(c c c c c c c c c d c c c c c c c c c c d c y x k y r k r k r k r k y y x r k y x k r k r k r k x x (1-2) 式中:(x c 1d , y c 1d )是焦距归一化成像平面上的成像点畸变后的坐标,k c 1是2阶径向畸变系数,k c 2是4阶径向畸变系数,k c 5是6阶径向畸变系数,k c 3、k c 4是切向畸变系数,r 为成像点到摄像机坐标系原点的距离,r 2= x c 12 + y c 12。 1.1.2 操作界面 将Matlab 的当前目录设定为含有标定工具箱的目录,即toolbox_calib 目录。在Matlab 命令窗口运行calib_gui 指令,弹出图1所示选择窗口。 图1 内存使用方式窗口 图1窗口中,具有两个选项,分别是“Standard ”和“Memory efficient ”。如果点击选择“Standard ”,则将目录中的所有图像读入内存中,所需内存较大。如果点击选择“Memory efficient ”,则将目录中的图像按照需要每次一幅图像读入内存中,所需内存较小。在选择了

Matlab摄像机标定工具箱的使用说明

摄像机标定工具箱 Matlab 摄像机标定工具箱 工具箱下载:说明文档:安装:将下载的工具箱文件解压缩,将目录toolbox_calib 拷贝到Matlab 的目录下。 采集图像:采集的图像统一命名后,拷贝到toolbox_calib 目录中。命名规则为基本名和编号,基本名在前,后面直接跟着数字编号。编号最多为3位十进制数字。 1.1.1 标定模型 内参数标定采用的模型如式(1-1)所示,Brown 畸变模型式(1-2)所示。 ???? ??????=????????????????????=??????????11//100011100c c in c c c c y s x y x M z y z x v k u k k v u (1-1) 式中:(u , v )是特征点的图像坐标,(x c , y c , z c )是特征点在摄像机坐标系的坐标,k x 、k y 是焦距归一化成像平面上的成像点坐标到图像坐标的放大系数,k s 是对应于图像坐标u 、v 的摄像机的x 、y 轴之间不垂直带来的耦合放大系数,(u 0, v 0)是光轴中心点的图像坐标即主点坐标,(x c 1, y c 1)是焦距归一化成像平面上的成像点坐标。k s = c k x ,c 是摄像机的实际y 轴与理想y 轴之间的夹角,单位为弧度。 ?????++++++=++++++=1142123654221112124113654221112)2()1()2(2)1(c c c c c c c c c d c c c c c c c c c c d c y x k y r k r k r k r k y y x r k y x k r k r k r k x x (1-2) 式中:(x c 1d , y c 1d )是焦距归一化成像平面上的成像点畸变后的坐标,k c 1是2阶径向畸变系数,k c 2是4阶径向畸变系数,k c 5是6阶径向畸变系数,k c 3、k c 4是切向畸变系数,r 为成像点到摄像机坐标系原点的距离,r 2= x c 12 + y c 12 。 1.1.2 操作界面 将Matlab 的当前目录设定为含有标定工具箱的目录,即toolbox_calib 目录。在Matlab

基于OpenCV的摄像机标定

万方数据

K,乙)变换为摄像机坐标系中的坐标值只(疋,K,乙)如下 ㈧…=㈠M㈤(2)将坐标值只(冠,K,zc)在针孔模型中进行规范化投影,得 只=[妻甜引∽(3)引入透镜的畸变,畸变后的规范化坐标值可以用雎如砌 阱Xdc,峨‰叫州黝;篙]㈤ 将Pd(xa,ya)转换为图像上像素坐标系上的坐标值B(“,访 f吲:时‰(4) 够可=f/.劬sx/咖(5)像素之间的有效距离(mm/pixel);dpy为计算机图像在垂直方向 换)方法计算出摄像机的内部参数和外部参数的初值Ⅲ。该步虑透镜畸变的影响,得到的参数值并不准确。不过作为下一 数据拟合目标函数““如式6所示。既要将图像上Ⅳ个角点的坐标值(U,K)(f=1,…朋拾取出来,还要利用上述畸变模型计算出这Ⅳ个标志点的坐标值(‰vJ)(f=1,…朋,然后利用式6进行数 转化为求解非线性最小二乘的问题,通过非线性优化算法“”多次迭代,最后得到使目标函数的值最小的参数值,降低了求解难度。迭代的初值由第①步的DLT方法算出,DLT方法不 2基于OpenCV的摄像机标定 基于OpenCV的摄像机标定采用平面棋盘格标定模板,一198一 为了提高角点提取的成功率,在标定方块的外围,还要求保留一个方块宽的白色空白区域,如图1所示。摄像机只需在不同的角度抓取几张平面标定模板的图片,就可以实现对摄像机的标定。显然,由于采用最小二乘法,抓得图越多,标定的结果就越精确。 图1平面棋盘格标定模板 虽然OpenCV中自动寻找角点函数提取角点的成功率很高,但是若碰到光线被遮挡等情况,使得标定模板上的标定块在图像上不清晰或提取的角点数目与设定的数目不相符的状况,就会导致角点提取失败,如图2所示:因此OpenCV并不保证能够提取所有图像上的角点。所以在设计标定算法时必须要考虑角点不能被提取的情况:一方面,如果角点提取成功的图过少,则标定出来的结果就不一定能满足精度的要求,需要重新采图;另一方面,由于摄像机外部参数的个数与标定图像的个数相关联,所以在最后计算标定结果时,应将提取角点失败的图像舍弃,再根据剩下图像的数目,动态地分配参数在内存中的储存空间,如果没有这么一个筛选的过程,盲目得在内存中分配参数的储存空间,则在提取角点失败的图像上,不能找到与角点在世界坐标系中的坐标值相对应的像素坐标系上的坐标值,在这种情况下强行计算的话,很容易出现程序报错,得不到标定结果的情况。因此,本文提出以下摄像机标定算法: (1)读取一组标定用图像数据; (2)用cvFindChessboardComers()筛选图像;将读入的一组图像数据分别代入cvFindChessboardComers0函数,如果返回值是1,则表示在该幅图像上提取的角点数目和设定的相同,提取角点成功;若为0,则表示角点提取失败,该幅图要抛弃; (3)如果可用的标定图的数目满足设定的最少标定用图的数目,继续步骤(4);否则,则应重新采图,返回步骤(1); (4)根据筛选剩下图像的数目用cvCreateMat0为摄像机的内外部参数、角点在世界坐标系的坐标值以及在图像坐标系中的坐标值分配内存存储空间; (5)将筛选剩下的图像代入cvFindChessboardComers0,得到角点在图像像素坐标系中坐标值;再将图像和得到的图像像素坐标系中坐标值代入FindComerSubPix()函数,进一步精 (a)角点提取失败(b)角点提取成功 图2角点提取图像  万方数据

北航机器视觉摄像机标定实验报告

摄像机标定实验 一、实验目的 1. 掌握图像坐标系、摄像机坐标系和世界坐标系的定义及相互之间的变换关系,掌握摄像机透视投影原理及模型; 2. 了解摄像机标定的意义,掌握基于自由移动平面靶标的摄像机标定原理; 3. 了解摄像机镜头光学畸变模型,掌握摄像机镜头径向畸变校正原理和实现方法; 4.学习使用MATLAB 工具箱进行摄像机参数标定,精度评价以及畸变校正。 二、实验软件平台 MATLAB (R2014a,64bit),摄像机标定工具箱TOOLBOX_calib。 三、实验内容 1. 先用AutoCAD 或者图像编程制作一个方格棋盘黑白靶标,并用打印机打印在A4 纸上,贴在某个平整的物面上,然后用摄像机从多个角度拍摄靶标图像7至10幅。 2. 利用MATLAB工具箱TOOL_BOX对拍摄得到的图像进行摄像机标定,精度分析。 四、实验步骤及结果 1. 下载MATLAB摄像机标定工具箱TOOLBOX_calib(2015年10月14日更新),解压该工具箱。 2. 使用摄像机从不同角度拍摄9幅方格棋盘黑白靶标的图片,将图片置于解压的工具箱文件夹内 3. 打开MATLAB软件,将MATLAB的path设置为解压后的TOOLBOX_calib文件夹。在命令窗口输入calib,弹出窗口,选择第一项Standard模式。 4. 点击Read images选项读入图片,将事先拍好的9幅靶标图片读入,如下图所示。

5. 在提取图像进入程序后,我们要对图像提取角点,点击Extract grid corners,根据提示进行操作。 此时程序会弹出图像请用户标出角点,通过选取,得到了下图。

matlab摄像机标定实验报告

摄像机标定实验报告 一、实验任务 使用工业摄像机拍摄9张标定图片,利用matlab中Camera Calibration Toolbox对摄像机进行标定。 二、实验原理 针孔摄像机模型 图1 摄像机针孔模型成像 摄像机采集图像原理如图1。物体上发出的光线投射到图像平面,仿佛所有的光线都经过针孔平面上的针孔点,垂直于针孔平面过针孔点的直线为光轴,从针孔到图像平面的距离就是焦距,在图中,摄像机焦距f,物体到摄像机的距离为Z,物体长S,物体在图像上的长度为s。物体光线、光轴与物体之间组成相似三角形,得到这样的关系?s/f=S/Z。 图2 针孔模型图像平面一针孔点为中心旋转180°把图像平面以针孔点为中心旋转180°。物体和图像在针孔平面的一边,仿佛所有光线

从物体走到图像平面成像的对应点,最后汇集到一点,这个点定义为投影中心[33]。图3-22中点O为投影中心。 在抽象的针孔模型中点P(X w,Y w,Z w)由通过投影中心O的光线投影到图像平面上,相应的图像点为p(x,y,f)。成像芯片的中心通常不在光轴上,定义图像平面与光轴交点为主点o c坐标(c x,c y)。f为透镜的物理焦距,定义f x为焦距长度与像素x轴方向长度的比,定义f y 为焦距长度与像素y轴方向长度的比。可以得到 x=f x(X w Z w )+c x(1) y=f y(Y w Z w )+c y(2) 将坐标为(X,Y,Z)的物理点映射到投影平面上坐标为(x,y)的过程叫投影变换。齐次坐标可以建立这种变换。齐次坐标把维数为n投影空间的点表示成(n+1)维向量。图像平面为二维投影空间,可用三维向量表示该平面上的点。将摄像机参数f x、f y、c x、c y重新排列为一个3×3的矩阵,如M,该矩阵就是摄像机内部参数矩阵。将物理世界中的点投射到摄像机上,用下式表示: p=MP,其中p=[x y w ],M=[ f x0c x 0f y c y 001 ],P=[ X w Y w Z w ](3) 标定过程 摄像机参数f x、f y、c x、c y、倾斜系数需要通过计算得到,这一过程为摄像机标定。标定过程就是确定摄像机的几何和光学参数、摄像机相对于世界坐标系的。 三、实验步骤与结果 本实验使用Matlab中Camera Calibration Toolbox对摄像机进行标定。 首先,于2014年3月1日下午在科研一楼503实验室拍摄一组9张平面棋盘图片,如图。

摄像机标定程序使用方法

一、材料准备 1 准备靶标: 根据摄像头的工作距离,设计靶标大小。使靶标在规定距离范围里,尽量全屏显示在摄像头图像内。 注意:靶标设计、打印要清晰。 2图像采集: 将靶标摆放成各种不同姿态,使用左摄像头采集N幅图像。尽量保存到程序的debug->data文件夹内,便于集中处理。 二、角点处理(Process菜单) 1 准备工作: 在程序debug文件夹下,建立data,left,right文件夹,将角探测器模板文件target.txt 复制到data文件夹下,便于后续处理。 2 调入图像: File->Open 打开靶标图像 3 选取角点,保存角点: 点击Process->Prepare Extrcor ,点击鼠标左键进行四个角点的选取,要求四个角点在最外侧,且能围成一个正方形区域。每点击一个角点,跳出一个显示角点坐标的提示框。当点击完第四个角点时,跳出显示四个定位点坐标的提示框。 点击Process->Extract Corners ,对该幅图的角点数据进行保存,最好保存到debug->data-> left文件夹下。命名时,最好命名为cornerdata*.txt,*代表编号。 对其余N-1幅图像进行角点处理,保存在相同文件夹下。这样在left文件夹会出现N 个角点txt文件。 三、计算内部参数(Calibration菜单) 1 准备工作: 在left文件夹中挑出5个靶标姿态差异较大的角点数据txt,将其归为一组。将该组数据复制到data文件夹下,重新顺序编号,此时,文件名必须为cornerdata*,因为计算参数时,只识别该类文件名。 2 参数计算: 点击Calibration->Cameral Calibrating,跳出该组图像算得的摄像机内部参数alpha、beta、gama、u0、v0、k1、k2七个内部参数和两组靶标姿态矩阵,且程序默认保存为文件CameraCalibrateResult.txt。 3 处理其余角点数据文件 在原来N个角点数据文件中重新取出靶标姿态较大的5个数据文档,重复步骤1和2;反复取上M组数据,保存各组数据。 注意:在对下一组图像进行计算时,需要将上一组在data文件夹下的5个数据删除。 四、数据精选 1 将各组内部参数计算结果进行列表统计,要求|gama|<2,且gama为负,删掉不符合条件的数据。 2 挑出出现次数最高的一组数据。

相关主题
相关文档
最新文档