MATLAB构建公式,标定参数是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MATLAB构建公式,标定参数是啥?相关的知识,希望对你有一定的参考价值。

参考技术A

把公式变换一下再求A和theta。变换成线性关系为:ln(x/y)=theta*lnd+lnA
将此式看做是lnx关于lnd的函数就是线性的了 就是令M=ln(x/y),N=lnd,所以式子变成M=theta*N+lnA。

再用matlab的线性拟合函数就可以了.最近没怎么用MATLAB了 记得有一个线性拟合函数是polyfit 对线性的拟合很适用,你搜一搜例子就可以了。
另外用lingo也可以做 但都是变成线性的做。

优势特点

1) 高效的数值计算及符号计算功能,能使用户从繁杂的数学运算分析中解脱出来;

2) 具有完备的图形处理功能,实现计算结果和编程的可视化;

3) 友好的用户界面及接近数学表达式的自然化语言,使学者易于学习和掌握;

4) 功能丰富的应用工具箱(如信号处理工具箱、通信工具箱等) ,为用户提供了大量方便实用的处理工具。

编程环境

MATLAB由一系列工具组成。这些工具方便用户使用MATLAB的函数和文件,其中许多工具采用的是图形用户界面。包括MATLAB桌面和命令窗口、历史命令窗口、编辑器和调试器、路径搜索和用于用户浏览帮助、工作空间、文件的浏览器。随着MATLAB的商业化以及软件本身的不断升级,MATLAB的用户界面也越来越精致,更加接近Windows的标准界面,人机交互性更强,操作更简单。而且新版本的MATLAB提供了完整的联机查询、帮助系统,极大的方便了用户的使用。简单的编程环境提供了比较完备的调试系统,程序不必经过编译就可以直接运行,而且能够及时地报告出现的错误及进行出错原因分析。

简单易用

Matlab是一个高级的矩阵/阵列语言,它包含控制语句、函数、数据结构、输入和输出和面向对象编程特点。用户可以在命令窗口中将输入语句与执行命令同步,也可以先编写好一个较大的复杂的应用程序(M文件)后再一起运行。新版本的MATLAB语言是基于最为流行的C++语言基础上的,因此语法特征与C++语言极为相似,而且更加简单,更加符合科技人员对数学表达式的书写格式。使之更利于非计算机专业的科技人员使用。而且这种语言可移植性好、可拓展性极强,这也是MATLAB能够深入到科学研究及工程计算各个领域的重要原因。

强大处理

MATLAB是一个包含大量计算算法的集合。其拥有600多个工程中要用到的数学运算函数,可以方便的实现用户所需的各种计算功能。函数中所使用的算法都是科研和工程计算中的最新研究成果,而且经过了各种优化和容错处理。在通常情况下,可以用它来代替底层编程语言,如C和C++ 。在计算要求相同的情况下,使用MATLAB的编程工作量会大大减少。MATLAB的这些函数集包括从最简单最基本的函数到诸如矩阵,特征向量、快速傅立叶变换的复杂函数。函数所能解决的问题其大致包括矩阵运算和线性方程组的求解、微分方程及偏微分方程的组的求解、符号运算、傅立叶变换和数据的统计分析、工程中的优化问题、稀疏矩阵运算、复数的各种运算、三角函数和其他初等数学运算、多维数组操作以及建模动态仿真等。

图形处理

MATLAB自产生之日起就具有方便的数据可视化功能,以将向量和矩阵用图形表现出来,并且可以对图形进行标注和打印。高层次的作图包括二维和三维的可视化、图象处理、动画和表达式作图。可用于科学计算和工程绘图。新版本的MATLAB对整个图形处理功能作了很大的改进和完善,使它不仅在一般数据可视化软件都具有的功能(例如二维曲线和三维曲面的绘制和处理等)方面更加完善,而且对于一些其他软件所没有的功能(例如图形的光照处理、色度处理以及四维数据的表现等),MATLAB同样表现了出色的处理能力。同时对一些特殊的可视化要求,例如图形对话等,MATLAB也有相应的功能函数,保证了用户不同层次的要求。另外新版本的MATLAB还着重在图形用户界面(GUI)的制作上作了很大的改善,对这方面有特殊要求的用户也可以得到满足。

模块工具

MATLAB对许多专门的领域都开发了功能强大的模块集和工具箱。一般来说,它们都是由特定领域的专家开发的,用户可以直接使用工具箱学习、应用和评估不同的方法而不需要自己编写代码。领域,诸如数据采集、数据库接口、概率统计、样条拟合、优化算法、偏微分方程求解、神经网络、小波分析、信号处理、图像处理、系统辨识、控制系统设计、LMI控制、鲁棒控制、模型预测、模糊逻辑、金融分析、地图工具、非线性控制设计、实时快速原型及半物理仿真、嵌入式系统开发、定点仿真、DSP与通讯、电力系统仿真等,都在工具箱(Toolbox)家族中有了自己的一席之地。

程序接口

新版本的MATLAB可以利用MATLAB编译器和C/C++数学库和图形库,将自己的MATLAB程序自动转换为独立于MATLAB运行的C和C++代码。允许用户编写可以和MATLAB进行交互的C或C++语言程序。另外,MATLAB网页服务程序还容许在Web应用中使用自己的MATLAB数学和图形程序。MATLAB的一个重要特色就是具有一套程序扩展系统和一组称之为工具箱的特殊应用子程序。工具箱是MATLAB函数的子程序库,每一个工具箱都是为某一类学科专业和应用而定制的,主要包括信号处理、控制系统、神经网络、模糊逻辑、小波分析和系统仿真等方面的应用。

软件开发

在开发环境中,使用户更方便地控制多个文件和图形窗口;在编程方面支持了函数嵌套,有条件中断等;在图形化方面,有了更强大的图形标注和处理功能,包括对性对起连接注释等;在输入输出方面,可以直接向Excel和HDF5进行连接。

相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)

 

一、相机标定的目的

确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数。

二、通用摄像机模型

 

 

世界坐标系、摄像机坐标系和像平面坐标系都不重合。同时考虑两个因素 :

(1)摄像机镜头的畸变误差,像平面上的成像位置与线性变换公式计算的透视变换投影结果有偏差;

(2)计算机中图像坐标单位是存储器中离散像素的个数,所以像平面上的连续坐标还需取整转换。

 

摄像机参数

l  摄像机内部参数 (Intrinsic Parameters)

摄像机坐标和理想坐标系之间的关系

图像坐标系、摄像机坐标系

The list of internal parameters:

  • Focal length(焦距): The focal length in pixels is stored in the 2x1 vector fc.
  • Principal point(主点): The principal point coordinates are stored in the 2x1 vector cc.
  • Skew coefficient(偏斜系数): The skew coefficient defining the angle between the x and y pixel axes is stored in the scalar alpha_c.
  • Distortions(畸变): The image distortion coefficients (radial and tangential distortions) are stored in the 5x1 vector kc.

 

l  摄像机外部参数 (Extrinsic Parameters)

摄像机在世界坐标系里的位置和方向

摄像机坐标系、世界坐标系

 

主要包括:旋转矩阵 R 9个参数和平移矩阵的3个参数。或定义为 6 。主要包括: 旋转矩阵的3个偏转角和平移矩阵的3个参数。

 

简而言之: 

 

三、摄像机原理

 

 

摄像机坐标系的原点位于摄像机的镜头中心,像平面坐标中心位于光轴上,由小孔成像模型, 为焦距。从客观场景到数字图像的成像变换由 以下4步组成 :

四、摄像机标定方法分类

l  传统摄像机标定方法

l  主动视觉摄像机标定方法

l  摄像机自标定方法

标定方法

特点

优点

不足

传统摄像机标定方法

利用已知的景物结构信息。常用到标定块。

可以使用于任意的摄像机模型,标定精度高

标定过程复杂,需要高精度的已知结构信息。

主动视觉摄像机标定方法

已知摄像机的某些运动信息

通常可以线性求解,鲁棒性比较高

不能使用于摄像机运动未知和无法控制的场合

摄像机自标定方法

仅依靠多幅图像之间的对应关系进行标定

仅需要建立图像之间的对应,灵活性强

非线性标定,鲁棒性不高

 

 

四、张正友平面标定方法

算法原理

      在这里假定模板平面在世界坐标系 的平面上

       其中,为摄像机的内参数矩阵,为模板平面上点的齐次坐标,为模板平面上点投影到图象平面上对应点的齐次坐标,分别是摄像机坐标系相对于世界坐标系的旋转矩阵和平移向量

 

     

根据旋转矩阵的性质,即 ,每幅图象可以获得以下两个对内参数矩阵的基本约束

由于摄像机有5个未知内参数,所以当所摄取得的图象数目大于等于3时,就可以线性唯一求解出

算法描述

 

  1. 打印一张模板并贴在一个平面上
  2. 从不同角度拍摄若干张模板图象
  3. 检测出图象中的特征点
  4. 求出摄像机的内参数和外参数
  5. 求出畸变系数
  6. 优化求精

 

 

五.使用Matlab相机标定工具箱标定相机的基本步骤

1.安装MATLAB

本机安装的是MATLABR2014a

2.安装相机标定工具箱Camera Calibration Toolbox

虽然Matlab2014a已经自带了Camera Calibrator应用,基本上添加图片后,随便设置一下就能自动完成标定,因为很多以前老的论文做的实验都是基于单独的老版本的标定工具箱,所以这里还是使用老版本的工具箱来进行相机标定
 
将解压后的文件夹TOOLBOX_calib(文件夹可以重命名)添加到MATLAB搜索路径(可以把加压后的文件夹放在Matlab安装目录下的toolbox目录下)
工具包下载及介绍和示例教程:http://www.vision.caltech.edu/bouguetj/calib_doc/index.html

2.准备一张标定板

上述相机标定工具箱官网教程中提供了标定板图片下载地址(下载结果见pattern.pdf)
一般来说,标定板越大越好,且尽量保证表面是平的

3、实验数据采集

将标定板摆在相机可视的范围内,每拍一张照片,标定板换一个位置和朝向,将拍摄的照片文件名命名为imgnameX.jpg的格式,前面的imgname可以自己命名,X为图片索引,可以从1开始,如imgname1.jpg,图片格式也可以使用其他格式。如bmp,tif
 
 

3、相机标定步骤

相机标定参考教程:

First calibration example - Corner extraction, calibration, additional tools

3.1.启动相机标定工具箱
在Matlab命令行宽口输入calib启动相机标定工具箱
当图像量大且多时需要使用第二种方式;此处15到20张照片可以选择标准模式
 3.2 载入图片
进入图像所在目录,然后点击Image names按钮
 
输入标定图像序列的名称前缀(不包含数字序号)如上方式,然后输入图片格式
 
 
3.3.提取角点
 在标定工具箱上点击Extract grid cornder按钮
 
输入需要处理的图片数目,默认回车为刚才导入的全部图片
再选择默认的corner finder窗口大小(就是十字光标),wintx=winy=5,比较合适
角落提取引擎含有自动计算方块个数的系统。这个引擎特别适合多图像的情况。避免了在X方向和Y方向手动输入方块个数的麻烦,默认使用自动方块检测机制

然后在对每一幅测试图进行手动设置最外围的四个角点,第一个点会作为原点,一般位于左上角,其他三个点选择顺序不重要,不过还是建议按顺时针选取(为标定方便,我们未将最外层的方格包括在内)

 

 

接下来需要设定每个小方格在现实世界中的宽高,以便随后角点的自动选择;实验过程中设定为30mm×30mm;只需第一次设定

 
 程序会自动计算方块的数量和角点(X方向和Y方向),并且显示出来。接下来看Matlab命令行的提示,如果预测的角点接近真实图片上的角点,不需要通过键入径向畸变系数(radial distortion coefficient)来“帮助”软件。(这里为简化流程就不考虑畸变系数了,如果需要处理畸变系数可以参考原文)按下“回车键”,角点自动被提取出来。
 
角点被自动提取出来,并显示在figure 3上(围着角点的蓝色方块显示了角点的边界)。
 对剩下的每一幅图像都进行上述角点提取操作,(第一次标定必须很麻烦的一幅一幅的操作,若已经做过一次,可点击load选项,会自动载入Calib_Results.mat中的角点信息,这个信息在第一次标定时会生成,后面会讲到)
3.4实施标定
完成角点提取后,点击校正工具箱上的Calibration按钮来运行主要校正步骤。
初始化步骤计算校正参数的封闭解,不包括任何镜头失真(程序名称:init_calib_param.m)。非线性最优化步骤使所有参数的二次投影误差最小(9个内部自由度(DOF):焦点,投影中心,失真系数,和6X20个外部自由度,一共129个参数)

说明

A. 通过Recomp. corners按钮提高标定精确度;

B. Analyse error展示角点误差分布,用鼠标左键点击后,在命令窗口可直接显示该点信息;

C.点击Reproject on images按钮用计算出来的参数投影到图像。这些投影是基于当前的内部参数和外部参数。二次投影误差同样显示如下:

 
D:点击工具箱上的Show Extrinsic。外部参数(网格对于摄像机的相对坐标,即摄像机坐标系)将显示出来:
 
回头看一下误差图表,发现有一些二次误差很大。原因是我们没有在一些失真较大的图像上仔细提取角点(一个较好的工作是用预测失真选项)。无论如何,我们可以自动重新计算所有图像角点。方法是:点击Recomp.corners按钮,选择新的角点检测大小,wintx=winty=5,再点击Calibration按钮运行一次。
3.5保存标定结果
最优化完成后,点击Save按钮来保存校正的结果,结果保存在Calib_results.mat,得到的相机参数存储在Calib.Results.m文件中





附件列表

 

以上是关于MATLAB构建公式,标定参数是啥?的主要内容,如果未能解决你的问题,请参考以下文章

一文读懂计算机视觉坐标系相机参数关系及相机标定

一文读懂计算机视觉坐标系相机参数关系及相机标定

空间六点标定法 ——湖南Zeta

空间六点标定法 ——湖南Zeta

空间六点标定法 ——湖南Zeta

空间六点标定法 ——湖南Zeta