文章目录

  • 为什么要进行相机参数标定
  • 相机内参矩阵原理
  • 相机标定方法——Recap: 相机标定
  • 张正友标定法
  • 相机模型
  • 计算单应性矩阵H
  • 计算内参数矩阵
  • 计算外部参数
  • 实验(matlab实现)

为什么要进行相机参数标定

在拍摄中,相机可能会出现畸变,用软件的方法校正生成的图像,避免拍摄出的图像产生桶形和枕形畸变

不同的镜头的在生产和组装过程中的畸变程度各不相同,通过相机标定可以校正这种镜头畸变,生成矫正后的图像。

相机内参矩阵原理

针孔相机模型

设P=(X,Y,Z)为场景中的一点,在针孔相机模型中,其要经过以下几个变换,最终变为二维图像上的像点p=(μ,ν)

1、将P从世界坐标系通过刚体变换(旋转和平移)变换到相机坐标系,这个变换过程使用的是相机间的相对位姿,也就是相机的外参数。
2、从相机坐标系,通过透视投影变换到相机的成像平面上的像点p=(x,y)
3、将像点p从成像坐标系,通过缩放和平移变换到像素坐标系上点p=(μ,ν)

相机将场景中的三维点变换为图像中的二维点,也就是各个坐标系变换的组合,可将上面的变换过程整理为矩阵相乘的形式

矩阵K称为相机的内参数矩阵

对于大多数标准相机来说,可将扭曲参数γ设为0.
像主点(光心):光线坐标轴和图像平面的交点

相机标定方法——Recap: 相机标定

因为相机拍摄的照片会损失三维的信息。
因此如果要对相机进行标定,我们首先要恢复照片的三维信息
在过去,通常采用制造三个相互垂直的平面
标定工具需要有极高的精度,包括不同平面的角度、特征点的物理距离等。因此制作标定工具十分困难。

张正友标定法

使用棋盘格标定的方法,将照片中的三维信息压缩为二维(Z=0)

在张氏标定法中,用于标定的棋盘格是三维场景中的一个平面Π,其在成像平面的像是另一个平面π,知道了两个平面的对应点的坐标,就可以求解得到两个平面的单应矩阵H
其中,标定的棋盘格是特制的,其角点的坐标是已知的;图像中的角点,可以通过角点提取算法得到(如Harris角点),这样就可以得到棋盘平面Π和图像平面π的单应矩阵H。

方法步骤:
1、检测每张图片中的棋盘图案的角点;
2、利用解析解估算方法计算出5个内部参数,以及6个外部参数
3、通过基于极大似然准则的优化解,提高A,R,t矩阵的精度。

相机模型


s: 世界坐标系到图像坐标系的尺度因子
A: 相机内参矩阵
(u0,v0): 像主点坐标
α, β: 焦距与像素横纵比的融合
γ: 径向畸变参数

令棋盘格平面为Z=0的平面。
注意,s对于齐次坐标来说,不会改变齐次坐标值。
定义旋转矩阵R的第i列为 ri, 则有

计算单应性矩阵H

H表示的是成像平面和标定棋盘平面之间的单应矩阵(Homographic矩阵)
可通过最小二乘,从角点世界坐标到图像坐标的关系求解


H是一个齐次矩阵,所以有8个未知数,至少需要8个方程,每对对应点能提供两个方程,所以至少需要四个对应点,就可以算出世界平面到图像平面的单应性矩阵H。

计算内参数矩阵

由于旋转矩阵是个正交矩阵,r1和r2正交



代入可得:

即每个单应性矩阵能提供两个方程,而内参数矩阵包含5个参数,要求解,至少需要3个单应性矩阵。为了得到三个不同的单应性矩阵,我们使用至少三幅棋盘格平面的图片进行标定。通过改变相机与标定板之间的相对位置来得到三个不同的图片。
为了方便计算,定义如下:

可以看到,B是一个对称阵,所以B的有效元素为六个,让这六个元素写成向量b,即

令hi为单应矩阵H的第i个行向量,则有

根据b的定义,可以推导出如下公式


有了上边的等式,再来看从一幅标定板图像得到的等式
推出
如果有n组观察图像,则V 是 2n x 6 的矩阵


根据最小二乘定义,V b = 0 的解是 VTV 最小特征值对应的特征向量。
因此, 可以直接估算出 b,后续可以通过b求解内参

当观测平面 n ≥ 3 时,可以得到b的唯一解
当 n = 2时, 一般可令畸变参数γ = 0
当 n = 1时, 仅能估算出α 与 β, 此时一般可假定像主点坐标 u0 与 v0 为0

对于方程Vb=0可以使用SVD求得其最小二乘解。对V^TV进行SVD分解,其最小特征值对应的特征向量就是Vb=0的最小二乘解,从而求得矩阵B。由于这里得到的B的估计值是在相差一个常量因子下得到的,所以有:

计算外部参数


基于极大似然准则的优化解这里不做介绍

实验(matlab实现)

设备:华为荣耀V9
matlab实现参考:https://blog.csdn.net/JennyBi/article/details/85764988#%E7%9B%B8%E6%9C%BA%E6%A0%87%E5%AE%9A%E7%9A%84%E5%8E%9F%E7%90%86

实验结果
Camera Intrinsics 相机内部参数
IntrinsicMatrix: [3x3 double] 内参矩阵

FocalLength: [3.2069e+03 3.2136e+03] 焦距
PrincipalPoint: [1.9719e+03 1.4998e+03] 主点, 投影中心
Skew: 0 倾斜参数

Lens Distortion 镜头扭曲
RadialDistortion: [0.0441 -0.2188] 径向失真
TangentialDistortion: [0 0 ]切线失真

Camera Extrinsics 相机外部参数
RotationMatrices: [3x3x19 double] 旋转矩阵
TranslationVectors: [19x3 double] 平移向量

Accuracy of Estimation 估计准确度
MeanReprojectionError: 1.6714 平均投影错误
ReprojectionErrors: [35x2x19 double] 重投影错误
ReprojectedPoints: [35x2x19 double] 重投影点

Calibration Settings 校准设置
NumPatterns: 19
WorldPoints: [35x2 double]
WorldUnits: ‘mm’
EstimateSkew: 0
NumRadialDistortionCoefficients: 2
EstimateTangentialDistortion: 0



show original 原始图像

show undistorted 矫正图像

参考博客:
https://www.cnblogs.com/wangguchangqing/p/8335131.html#autoid-0-0-0
https://blog.csdn.net/u010128736/article/details/52860364

计算机视觉学习6_棋盘格_相机模型与参数标定相关推荐

  1. python计算机视觉- 相机模型与参数标定

    文章目录 相机投影模型 针孔相机模型 像主点偏移 内参矩阵 畸变现象 畸变矫正 外参矩阵 两类参数 相机标定 线性回归 (最小二乘) 非线性优化 标定过程 实验过程 MATLAB进行标定 相机投影模型 ...

  2. 计算机视觉:相机模型与参数标定

    目录 一.针孔照相机模型 1.像主点偏移 2.内参矩阵 3.畸变现象 4.畸变校正 二.照相机标定 1.标定原理 2.实验流程 三.代码实现(python+opencv) 1.数据准备 2.代码实现 ...

  3. 前向传播和反向传播_深度学习的地基模块:模型、参数、非线性、前向传播、反向偏微分

    头条ID:钱多多先森,关注更多AI.CV.数码.个人理财领域知识,关注我,一起成长 在深度学习中,数据.模型.参数.非线性.前向传播预测.反向偏微分参数更新等等,都是该领域的基础内容.究竟他们最基础的 ...

  4. 视觉SLAM十四讲学习笔记-第五讲-相机模型

    专栏系列文章如下: 视觉SLAM十四讲学习笔记-第一讲_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习笔记-第二讲-初识SLAM_goldqiu的博客-CSDN博客 视觉SLAM十四讲学习 ...

  5. 机器视觉——单目相机模型(坐标标定以及去畸变)

    单目相机模型: 针孔相机模型的映射关系: 化为矩阵形式: 其中,中间的矩阵被称为相机的内参矩阵K.通常认为,相机的内参在出厂之后是固定的,不会在使用过程中发生变化.有点相机生产厂商会告诉你相机的内参, ...

  6. 计算机视觉学习(七)-- 相机标定

    一.相机标定的原理 原理参考:https://blog.csdn.net/honyniu/article/details/51004397 一般来说,标定的过程分为两个部分: 第一步是从世界坐标系转换 ...

  7. lm opencv 算法_相机模型与标定(七)--LM算法在相机标定中的使用

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

  8. 计算机视觉学习笔记(四)homography 单应性矩阵的理解及求解

    单应性矩阵的理解及求解 1. 齐次坐标(Homogeneous Coordinate) 一幅2D图像上的非齐次坐标为(x,y),而齐次坐标为(x,y,1),也可以写成(x/z,y/z,1)或(x,y, ...

  9. 直播预告:深度学习驱动下的相机标定技术发展

    个人介绍: 廖康博士,毕业于北京交通大学信息科学研究所,师从林春雨教授.将赴新加坡南洋理工大学S-Lab担任博士后研究员,合作导师为Chen Change Loy.曾于德国马克斯·普朗克研究所(马普所 ...

最新文章

  1. mysql 集群实践_MySQL Cluster集群探索与实践
  2. 用单链表实现栈及操作
  3. 【网络协议】专题总结以及网络协议高频面试题汇总(8篇)
  4. SpringBoot 2.x 整合Mybatis二:PageHelper分页
  5. 学习笔记之-java8的新特性-函数式接口,lambda表达式,方法引用,Stream API,Optional类
  6. printf and echo
  7. MVC(dotnet)
  8. windows主机的linux虚拟机中使用neovim复制、粘贴
  9. 【LeetCode】【字符串】题号:*443. 压缩字符串
  10. 字符串转数组和数组转字符串
  11. [分组背包]Luogu1064 金明的预算方案
  12. 用vscode做markdown编辑器(借助Markdown All in One)
  13. pdffactory pro7最新标准专业的PDF工具-实用的虚拟打印机
  14. YOLOv5网络详解
  15. 新一代XSS平台(送邀请码)
  16. RK3588 Android12开机log分析
  17. 量子计算机五条原则,量子信息科学:量子计算机、隐形传物与人脑量子运算
  18. 数据挖掘入门必看的几个问题
  19. GeoTrans2.4.1 用户手册 之 (三)协调转换和数据传输
  20. ITIL: 事件管理流程 问题管理流程

热门文章

  1. mx150 宏碁swift3_大众化的轻薄本-宏碁蜂鸟Swift 3评测报告
  2. [No000026]365种创业、办公、和生活成长的精华资源
  3. 智云大咖秀:怎样的稳定器才是摄影师的“灵魂辅助”?
  4. 如何选择值得深入学习的技术方向
  5. linux屏幕伽马值设置,设置计算机显示屏的亮度和对比度伽玛值
  6. word中,去表格格式,把表格转换为文本的方法
  7. Java编程题-买苹果
  8. git上传到阿里云code
  9. 思维方式-《金字塔原理》书中的精髓:如何利用金字塔原理,逻辑清晰地思考问题、表达观点。
  10. Android 热点发多播,腾讯体育-中超英超直播(com.tencent.qqsports) - 6.5.21.960 - 应用 - 酷安...