一 、 理解摄像机模型,网上有很多讲解的十分详细,在这里我只是记录我的整合出来的资料和我的部分理解

计算机视觉领域中常见的三个坐标系:图像坐标系,相机坐标系,世界坐标系,实际上就是要用矩阵来表

示各个坐标系下的转换,首先在图像坐标系下与相机坐标系的关系

可得出   Xcam=x/dx+x0,    Ycam=y/dy+y0  表示为矩阵形式

Xcam           1/dx   0      x0          x

Ycam      =    0     1/dy   y0    *    y

1               0     0        1           1

相机坐标系与图像坐标系的关系是

既有可以写成  

我们知道相机坐标系与世界坐标系的关系是

表达成矩阵表示为

    可以推导出

(这里面的Xc ,Yc,Zc 也就是上面的X Y Z )其中

K= 就为相机的内参     R  T  为相机的外参(好难编辑)

接下来就是说明一下使用MATLAB  Opencv ,以及ROS环境下的Opencv进行相机校准

相机的标定主要有两种方法     :摄像头标定方法和摄像头自标定方法,典型的有:(1)Tsai(传统的标定方法)  (2)张正友(介于传统与自标定方法之间)张正友标定法由于很简单

所以得到广泛 的应用,张正友标定法的步骤:

1、打印一张模板并贴在一个平面上;
           2、从不同角度拍摄若干张模板图像;
           3、检测出图像中的特征点;
           4、求出摄像机的外参数(单应性矩阵)和内参数(最大似然估计) ;
           5、求出畸变系数;

6、优化求精。

二、对于在matlab中进行相机标定是一件非常简单的事,因为在matlab官方网站,以及matlab中文论坛上都是有教程的,只需要找到标定模板就可以了,

matlab中文论坛的学习网址   http://www.ilovematlab.cn/thread-267670-1-1.html

详细相机标定过程请参考      http://www.mathworks.com/help/vi ... ator.html#btxr8c_-2

MATLAB相机标定教学视频   http://www.mathworks.com/videos/ ... h-matlab-81233.html

2.1   首先我们得准备软件matlab,安装matlab就按照网上的教程既可以安装成功了,不过安装过程可能遇到一些软件破解的一些问题,如果安装不上,

那就果断的换安装的软件版本, 其次就是准备标定魔板,我是直  接用A3的纸打印了标准的棋盘方格,自己百度一下标定棋盘网上有很多图纸可供下载,

http://wiki.ros.org/camera_calibration/Tutorials/MonocularCalibration?action=AttachFile&do=view&target=check-108.pdf

我使用的就是check-108,其中108代表的是每个小方格的边长为108mm,使用A3的纸张打印,后来测量一下每个黑白方格的边长为35mm,

2.2  材料和软件都准备好了,我们在准备摄像头,我们有四个选择:(1)手机拍照 我们就标定手机的摄像头,(2)笔记本自带的摄像头,(3)使用带USB的的摄像头(4)网上提供的模板

2.2.1 手机摄像头标定,最好的方法是将手机固定,然后移动标定模板,改变模板的远近位置,以及翻转角度等等,如下图

这里面是我把标定模板给固定,改变手机的位置,这就导致拍出来的照骗有些事不能用的(可以试试),就会明白为什么会不能进行标定了,

这只是展示其中四张照片,当然拍下来的至少要20张不一样的照片,现在开始使用MATLAB进行标定了,

2.2.2当我们想标定笔记本的摄像头或者我自己外界一个摄像头的时候,就需要使用一个软件去获取摄像头的照骗,使用 Ecap软件就可以打开摄像头,并且捕捉照骗

可以捕获很多不同角度的关于标定模板的图片,至少需要20张,紧接着打开matlab,在命令行输入

>> cameraCalibrator    出现:

之后可以添加“add images”,然后选择我的模板的方格大小,默认是25mm   改为与实际模板一致的边长是35mm

也可以直接添加网上所提供的标定模板,

此标定模板为6*4   108mm 添加完选择“”calibrate“”有

右边出现一下统计图,左下角就是每个图片相对摄像头的远近和角度,点击保存calibration.mat文件,点击“Export camera parameters”出现标定的结果

到此MATLAB的相机标定就完成了

(虽然我写的很幸苦,但是我也只是想记录下我的实验过程,中间也遇到很多问题,这都是解决后的结果本来是1,2,3放在一起的

但是因为篇幅太长,只好将其分为三段,中间也丢失过好几次,然后又重新写,大神们看见就当是在看笑话,一笑了之即可,

我知道这其中没有什么创新可言,真实惭愧,谢谢)

版权所有,转载请注明出处

如果您觉得看完有所收获,欢迎扫一扫,可以资助一分,几分money,不在乎多少(我也是跟网上的大神们学的),不想挣钱娶媳妇的程序员不是好程序员,谢谢

相机标定 matlab opencv ROS三种方法标定步骤(1)相关推荐

  1. 相机标定 matlab opencv ROS三种方法标定步骤(2)

    二  ubuntu下Opencv的相机标定 一般直接用Opencv的源码就可以进行相机的标定,但是可能只是会实现结果,却不懂实现的过程,我也是模模糊糊的看了<计算机视觉中的多视图几何>以及 ...

  2. 相机标定 matlab opencv ROS三种方法标定步骤(3)

    三 ,  ROS 环境下 如何进行相机标定 刚开始做到的时候遇到一些问题没有记录下来,现在回头写的时候都是没有错误的结果了,首先使用ROS标定相机, 要知道如何查看节点之间的流程图  rosrun r ...

  3. python调用matlab函数_从 Python 调用 MATLAB 函数的三种方法

    0. 实验环境Ubuntu 16.04 Matlab R2015b 1. 借助于 mlab 库 安装方法非常简单,只需一行命令 sudo pip install mlab 即可. import num ...

  4. 【图像处理】——图像滤波(Python+opencv实现三种方法:均值滤波、中值滤波、高斯滤波等)

    目录 一.什么是滤波以及滤波的目的? 二.均值滤波(cv2.blur()) 1.原理 2.关键代码 3.封装代码 二.中值滤波(cv2.medianBlur()) 1.原理 2.关键代码 3.封装代码 ...

  5. 图像灰度化的三种方法(matlab、C++、Python实现)

    灰度化处理就是将一幅色彩图像转化为灰度图像的过程.彩色图像分为R,G,B三个分量,分别显示出红绿蓝等各种颜色,灰度化就是使彩色的R,G,B分量相等的过程.灰度值大的像素点比较亮(像素值最大为255,为 ...

  6. 用matlab设计fir高阶滤波器,用matlab设计fir滤波器的三种方法.doc

    用matlab设计fir滤波器的三种方法.doc 用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法摘要介绍了利用MATLAB信号处理工具箱进行FIR滤波器设计的三种方法程序设计法.FDATO ...

  7. matlab滤波器设计工具箱带阻滤波器,用matlab信号处理工具箱进行fir滤波器设计的三种方法...

    用matlab信号处理工具箱进行fir滤波器设计的三种方法 摘 要 介绍了利用 MATLAB 信号处理工具箱进行 FIR 滤波器设计的三种方法:程序设计法. FDATool 设计法和 SPTool 设 ...

  8. 在matlab中怎样安装dh包,建立DH模型的三种方法以及区别

    目录 1.建立DH模型的三种方法 2.SDH和MDH的应用范围 3. SDH和MDH的区别 0.SDH是ZX类变换,MDH是XZ类变换 1.SDH和MDH都是强调把坐标系建立在连杆上 2.举个例子说明 ...

  9. Matlab中计算程序运行时间的三种方法

    经常我们需要计算我们程序到底运行多长时间,这样可以比较程序的执行效率.当然这个对于只有几秒钟的小程序没有什么意义,但是对于大程序就有很重要的意义了. 下面我们就说说MATLAB中计算程序运行时间的三种 ...

最新文章

  1. AI又进阶!除了鉴别PS图片,还能一键卸妆
  2. websocket python爬虫_python实现基于websocket协议的网络爬虫
  3. Java内部类作用全解
  4. 机器学习week3课后作业
  5. 如何用模型分析中国经济?
  6. thinkphp源码分析(一)—开门篇
  7. 今晚直播 | 高效视频理解模型的设计及ICCV比赛冠军方案解读
  8. php 下载的压缩文件,php在线压缩打包rar并自动下载文件的例子
  9. HP前女老板Dunn和Carly的琐碎事
  10. Leetcode: Palindrome Partition I II
  11. 牛客练习赛50-记录
  12. linux 商业游戏,Ubuntu下安装试玩原生Linux版商业游戏Braid
  13. 广州交警发布科目三电子路考操作要点
  14. Mysql中把varchar类型的字段转化为tinyint类型的字段
  15. Eclipse在桌面上创建的快捷方式打不开
  16. java 图片导出word_【freemaker实现导出word②】代码实现导出word(包括导出list数据和导出图片到word)...
  17. 【转载】《武学求真录》和《逝去的武林》及《老拳师的故事》 -3
  18. 沈从文写给张兆和的情书
  19. 篮球赛日程表_横县校椅青桐2019春节篮球赛火热开赛!快收好赛程表!
  20. 2021-08-05,虾皮API,seller_info - 获得shopee店铺详情

热门文章

  1. ashx导出dataTable为Excel
  2. 机器学习入门(04)— 神经网络多维数组 NumPy 相乘运算
  3. 4 三元表达式 列表解析 生成器表达式
  4. phpstrom+xdebug调试PHP代码
  5. [导入]Learning.ASP.NET 2.0.with.AJAX.pdf(14.14 MB)
  6. 控制显示隐藏_大众发动机控制单元隐藏功能刷写
  7. php extension loaded,php中extension_loaded()函数的使用详解
  8. linux i2c核心,总线与设备驱动,Linux2.6.37 I2C驱动框架分析(一)
  9. java aws访问授权 实例_java – 使用IAM身份验证和Spring JDBC访问AWS ...
  10. C语言 函数(做个笔记)