halcon相机标定及图像矫正
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相机标定
halcon相机标定及图像矫正的更多相关文章
- Halcon相机标定
摄像机标定程序: 注意:E:/calibration_image :为标定图像文件路径 'E:/calibration_description/caltab_123mm.descr:为标定 ...
- Halcon学习笔记——机器视觉应用工程开发思路及相机标定
机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分,硬件部分和软件部分. 1.硬件部分,硬件的选型至关重要,决定了后续工作是否可以正常开展,其中关键硬件部分包括:光源,相机以及镜头. 2. ...
- 张正友相机标定Opencv实现以及标定流程&&标定结果评价&&图像矫正流程解析(附标定程序和棋盘图)
使用Opencv实现张正友法相机标定之前,有几个问题事先要确认一下,那就是相机为什么需要标定,标定需要的输入和输出分别是哪些? 相机标定的目的:获取摄像机的内参和外参矩阵(同时也会得到每一幅标定图像的 ...
- 使用OpenCV进行相机标定
1. 使用OpenCV进行标定 相机已经有很长一段历史了.但是,伴随着20世纪后期的廉价针孔照相机的问世,它们已经变成我们日常生活的一种常见的存在.不幸的是,这种廉价是由代价的:显著的变形.幸运的是, ...
- halcon 手眼标定的坐标转换原理讲解
原文链接:https://blog.csdn.net/opencv_learner/article/details/82113323 一直以来,对于手眼标定所涉及到的坐标系及坐标系之间的转换关系都没能 ...
- 【视频开发】【计算机视觉】相机标定(Camera calibration)原理、步骤
相机标定(Camera calibration)原理.步骤 author@jason_ql(lql0716) http://blog.csdn.net/lql0716 在图像测量过程以及机器视觉应用 ...
- Halocn双目相机标定
[Halcon]Halcon双目标定 相机标定(4)---基于halcon的双目立体视觉标定 双目立体视觉:四(双目标定matlab,图像校正,图像匹配,计算视差,disparity详解,) 双目测距 ...
- 相机标定简介与MatLab相机标定工具箱的使用(未涉及原理公式推导)
相机标定 一.相机标定的目的 确定空间物体表面某点的三维几何位置与其在图像中对应点之间的相互关系,建立摄像机成像的几何模型,这些几何模型参数就是摄像机参数. 二.通用摄像机模型 世界坐标系.摄像机坐标 ...
- 相机标定:关于用Levenberg-Marquardt算法在相机标定中应用
LM算法在相机标定的应用共有三处. (1)单目标定或双目标定中,在内参固定的情况下,计算最佳外参.OpenCV中对应的函数为findExtrinsicCameraParams2. (2)单目标定中,在 ...
随机推荐
- 1.131.15 Sqoop导出数据Export使用
一.export 1.export概述 export工具将一组文件从HDFS导入到RDBMS.目标表必须已经存在于数据库中.根据用户指定的分隔符读取输入文件并将其解析为一组记录, 只有map: [ro ...
- Identity Server 4 原理和实战(完结)_----选看 OAuth 2.0 简介(上)
https://www.yuque.com/yuejiangliu/dotnet/cg95ni 代表资源所有者的凭据 授权 Authorization Grant 授权是一个代表着资源所有者权限的凭据 ...
- CCF 201512-3 画图 (DFS搜索+模拟)
问题描述 用 ASCII 字符来画图是一件有趣的事情,并形成了一门被称为 ASCII Art 的艺术.例如,下图是用 ASCII 字符画出来的 CSPRO 字样. ..____.____..____. ...
- POJ - 1321 棋盘问题 dfs分层搜索(n皇后变式)
棋盘问题 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 47960 Accepted: 23210 Descriptio ...
- Cookie和Session(3)
关于Cookie和Session Cookie和Session都为了用来保存状态信息,都是保存客户端状态的机制,它们都是为了解决HTTP无状态的问题而所做的努力. 1)cookie 是一种发送到客户浏 ...
- c#中 这种构造方法Recer(…):this(…){ }
指的是构造函数首先调用另外一个构造函数. class Program { static void Main(string[] args) { Person p2 = new Person(" ...
- Weekly Contest 111-------->944. Delete Columns to Make Sorted
We are given an array A of N lowercase letter strings, all of the same length. Now, we may choose an ...
- 381. Insert Delete GetRandom O(1) - Duplicates allowed
Design a data structure that supports all following operations in average O(1) time. Note: Duplicate ...
- Memcached 查看帮助
进入到memcached目录, 输入命令: memcached -h 即可查看帮助 -p<num>要侦听的TCP端口号(默认值:11211) -u<num>udp监听端口号(默 ...
- CAS单点登录之服务端部署
一.CAS服务端搭建 1.1 CAS支持Http登录配置 CAS默认是要https的链接才能登录的,不过学习的话是可以先去掉https限制,本博客介绍的是基于Cas4.2.7的,之前改过4.0的,详情 ...