https://blog.csdn.net/humanking7/article/details/44756073

相机标定内容详解:转载自 祥的博客

预备知识

标定中的四个坐标系

1.1.平面旋转

首先看一下平面坐标系之间的转换。

两个平面坐标系 Oxy 和 Ox'y' 之间的夹角是 a 。如下图所示:

顺时针旋转 (Oxy -> Ox'y') ,变换关系如下:

公式(1) 和 公式(2) 等价。注意坐标顺序,下面论证会用到。

1.2.三维旋转

1.2.1.基元旋转

1. 绕 Ox 轴顺时针旋转(右手定则),但是坐标排列次序相反使用上述 公式(2) 。

2. 绕 Oy 轴顺时针旋转(右手定则),坐标排列次序使用上述 公式(1) 。

3. 绕 Oz 轴顺时针旋转(右手定则),但是坐标排列次序相反使用上述 公式(2) 。

1.2.2.点在不同三维坐标系下的转换(坐标系之间没有平移)

假如两个坐标轴之间的变换关系为,坐标系1 先绕 Oz 轴旋转, 再绕 Oy 轴旋转, 最后绕 Ox 轴旋转,最终得到了坐标系2,则 旋转矩阵R 为这三个 基元旋转矩阵 依次 左乘 。

1.2.3.点在不同三维坐标系下的转换(坐标系可能存在平移)

2.四个坐标系

在视觉测量中,需要进行的一个重要预备工作是定义四个坐标系的意义,即 摄像机坐标系 、 图像物理坐标系 、 像素坐标系 和 世界坐标系(参考坐标系) 。

2.1.图像物理坐标系(x,y) 到 像素坐标系(u,v)

1. 最简单的情况 (两坐标轴都为直角坐标系)

图像上的每点坐标 (u,v) 分别表示每一帧采集的图像在系统中的存储的数组的列数与行数,坐标 (u,v) 所对应的值就是该点的灰度信息,因此坐标系 uOv 又称为 像素坐标系。

同时,为了建立图像中各点的像素与实际的物理尺寸的联系,我们还要建立 图像物理坐标系 xO1y 。设点 O1 在图像像素坐标系中记为 (u0,v0) ,每个像素沿 x 轴的实际物理尺寸大小是 dx,沿 y 轴的实际物理尺寸大小是dy ,单位值毫米,则能得到两个坐标系间的关系式 。

2. 一般情况 (两坐标轴有一个轴平行,一个轴不平行)

为了方便以后公式的推导,将公式写为:

2.2. 摄像机坐标系(Xc,Yc,Zc)到图像物理坐标系(x,y)

三角形相似 问题可以解决。

2.3. 世界坐标系(Xw,Yw,Yw)到摄像机坐标系(Xc,Yc,Zc)

2.4.合并公式 + 总结

将公式合并后,如下所示:

综上所述,大家可以看出四个坐标系之间存在着下述关系 ( 矩阵依次左乘 )

张正友标定推导详解

为了和 张正友教授 的论文相统一,现在把公式符号统一一下。

数学基础

第一点 : 旋转向量 R 为正交矩阵,所以又以下的性质:

第二点 : 就是 S 。它是尺度因子,它的出现只是为了方便运算,而且对于齐次坐标,尺度因子不会改变坐标值 。

2. 正戏

Step.1 标定平面到图像平面的单应性(Homography)

因为张氏标定是一种基于平面棋盘格的标定,所以想要搞懂张氏标定,首先应该从两个平面的单应性(Homography)映射开始着手。

单应性(Homography) : 在计算机视觉中被定义为一个平面到另一个平面的投影映射。首先看一下,图像平面与标定物棋盘格平面的单应性。

因为标定物是平面,所以我们可以把世界坐标系构造在 Z = 0 的平面上。然后进行单应性计算。令 Z = 0 可以将上式转换为如下形式 ( 直接截取论文中的推导 ) :

H 是一个3x3的矩阵,并且有一个元素作为齐次坐标。因此,H有8个未知量待解 ( 可以分析一下, A 有5个未知量,后面的 [r1,r2,t] 有三个未知量,一共8个) 。

(X,Y) 作为标定物的坐标,可以由设计者人为控制,是已知量 。 (u,v) 是像素坐标,我们可以直接通过摄像机获得。一组对应的 (X,Y) => (u,v) 我们可以获得两组方程。

现在有 8个未知量 待求,所以至少要8个方程。所以至少需要4组对应的点。所以有 4组 (X,Y) => (u,v)就可以算出,图像平面到世界平面的 单应性矩阵H ,这也是张正友标定采用四个角点的棋盘作为标定物的一个原因

Step.2 利用约束条件求解内参矩阵A

从Step1可知,应用4个点我们可以获得单应性矩阵H。但是H是内参阵和外参阵的合体。我们想要最终分别获得内参和外参。所以需要想个办法,先把内参求出来。然后外参也就随之解出了。

上式中的 h1,h2 是通过求解单应性矩阵 H 求出来的,所以未知量只剩下 内参矩阵A 。 A中含有5个参数,如果需要完全解出来这5个未知量,则需要 3个不同的单应性矩阵H ( 因为 3个不同的单应性矩阵H在2个约束条件下可以产生6个方程 ) , 那么如何得到 3个不同的单应性矩阵H 呢? 那就是 3张不同的标定平面的照片, 我们大多是通过改变摄像机与标定板间的相对位置来获得不同的标定照片。( 如果用2张照片进行标定,就要舍去一个内参 r=0 )

当然这只是张正友标定法不断变换标定板方位的 第一个原因 。第二个原因 是张正友提到的 最大似然估计 ( Maximum-Likelihood Estimation )

首先令

可以看出 矩阵B 是一个对称矩阵,有效的元素只有 6个 ,所以令一个 6维的向量b ,然后简化公式 ( 就是那两个约束条件 )

将运算的结果带入到两个约束条件中,可得到方程组:

英文部分也提出了3张图片的作用 ( 不懂的可以再看看前面的分析 )

应用上述公式解出b后,就得到了B,在进行 cholesky分解 就可以得到 摄像机内参矩阵A 。

Step.3 利用内参矩阵A求解外参矩阵

已经有了内参矩阵A,通过下面的公式,就可以解出来,外参矩阵了。

以上就是张正友标定法的数学原理和推导,但是张正友自己也说这没有啥实际的物理意义,只是为后面的极大似然参数估计提供初值。而张正友标定中用于提高标定精度的极大似然算法,我也在研究当中,希望以后可以发一篇博客。

halcon相机标定

https://item.taobao.com/item.htm?spm=a230r.1.14.1.706323b3nsUNif&id=558920811564&ns=1&abbucket=13#detail

halcon相机标定及图像矫正的更多相关文章

  1. Halcon相机标定

    摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径       'E:/calibration_description/caltab_123mm.descr:为标定 ...

  2. Halcon学习笔记——机器视觉应用工程开发思路及相机标定

    机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...

  3. 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)

    使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的 ...

  4. 使用OpenCV进行相机标定

    1. 使用OpenCV进行标定 相机已经有很长一段历史了.但是,伴随着20世纪后期的廉价针孔照相机的问世,它们已经变成我们日常生活的一种常见的存在.不幸的是,这种廉价是由代价的:显著的变形.幸运的是, ...

  5. halcon 手眼标定的坐标转换原理讲解

    原文链接:https://blog.csdn.net/opencv_learner/article/details/82113323 一直以来,对于手眼标定所涉及到的坐标系及坐标系之间的转换关系都没能 ...

  6. 【视频开发】【计算机视觉】相机标定(Camera calibration)原理、步骤

    相机标定(Camera calibration)原理.步骤 author@jason_ql(lql0716)  http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉应用 ...

  7. Halocn双目相机标定

    [Halcon]Halcon双目标定 相机标定(4)---基于halcon的双目立体视觉标定 双目立体视觉:四(双目标定matlab,图像校正,图像匹配,计算视差,disparity详解,) 双目测距 ...

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

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

  9. 相机标定:关于用Levenberg-Marquardt算法在相机标定中应用

    LM算法在相机标定的应用共有三处. (1)单目标定或双目标定中,在内参固定的情况下,计算最佳外参.OpenCV中对应的函数为findExtrinsicCameraParams2. (2)单目标定中,在 ...

随机推荐

  1. outlook2013 解决附件大小限制

    1.先关闭outlook,然后点击"运行"-->输入"regedit" #打开注册表 2.依次打开  “HKEY_CURRENT_USER\Softwar ...

  2. UVaLive 3905 Meteor (扫描线)

    题意:给定上一个矩形照相机和 n 个流星,问你照相机最多能拍到多少个流星. 析:直接看,似乎很难解决,我们换一个思路,我们认为流星的轨迹就没有用的,我们可以记录每个流星每个流星在照相机中出现的时间段, ...

  3. sfc命令

    开始—>运行—>再输入“sfc /scannow”(不含引号),“sfc”是“系统文件检测”程序,它是一个在命令提示符下使用的实用程序,只有是管理员才能使用该程序,这个程序的作用就是检测系 ...

  4. Android 电脑投屏工具Vysor Pro介绍

    Chrome的插件,直接到chrome的扩展程序里面搜索Vysor,安装即可 如何破解: C:\Users\lanlan.shi\AppData\Local\Google\Chrome\User Da ...

  5. Black Box--[优先队列 、最大堆最小堆的应用]

    Description Our Black Box represents a primitive database. It can save an integer array and has a sp ...

  6. C#获得当前执行的函数名、当前代码行、源代码文件名

    http://blog.csdn.net/newegg2009/article/details/6220385 C#获得当前执行的函数名.当前代码行.源代码文件名 [日期:2010-10-18 11: ...

  7. 3DMAX 如何将删去的面补回来

    1.例如下面长方体被删除一个面 2.点击主键盘区数字键[3] ,进入[边界]修改模式 ,使用鼠标点击 被删除面的边界,并点击[修改面板]---[封口],例如下图:

  8. IT兄弟连 JavaWeb教程 JSP内置对象经典案例

    案例需求:使用MVC模式编写一个程序当发起一个deptList.do请求时在servlet中准备一个部门列表对象,把这个列表对象放入request作用域中,然后转发到deptlist.jsp,使用js ...

  9. css定位-position

    前言 定位的目的就是把元素摆放到指定的位置. 定位上下文:定位元素的大小,位置都是相对于定位上下文的. position属性值有5个值 static:所有有元素定位默认的初始值都是static.就是不 ...

  10. 基于nginx的配置网站密码认证

    在nginx配置服务中,创建访问网站密码认证. 1)需要ngx_http_auth_basic_module模块 语法: Syntax: auth_basic string | off; Defaul ...