标定方法——张正友标定法

article/2025/9/22 3:32:26

标定

标定是联系世界坐标与像素坐标的环节,目的是求出相机和投影仪的内外参数,对于3D成像来说至关重要

张正友标定法

通过各种方法的对比,为了方便,我们采用的是张正友标定。我们主要对张正友标定法的原理进行介绍,文章后面后面也会给大家介绍一个张正友标定的matlab包,它以及具体使用的视频。张正友标定是基于2D平面靶标的相机标定,实验中对平面棋盘格进行多角度拍摄后,将所得图片输入计算即可实现相机标定,具有较强的实验可行性。

张正友标定原理介绍

要想进一步了解张正友标定法,首先需学习一个最基本的思想——非线性最小二乘法思想,其次是了解张正友标定法的主体思想。接下来我将分两部分进行介绍。(由于篇幅过长,所以最小二乘法思想在另一篇文章中)

张正友标定法的主题思想

前面我们理解了非线性最小二乘法的思想,这种思想实际上就是一个求解最合适的x的过程。

张正友标定法是一种基于2D平面靶标的摄影机标定,我们通过拍摄多张标定板的图片,再通过多个实际中的点(世界坐标)和图片上的点(像素坐标)的一一对应,即可求出世界坐标和像素坐标的对应关系。

关于什么是世界坐标和像素坐标,还有其中转化时涉及到的相机坐标,图像坐标,大家可以寻找其他资料进行了解(可以搜针孔相机模型),这里我直接用结论。在世界坐标和像素坐标的转化中,将关系矩阵分成两个部分,一个是内参矩阵,另一个是外参矩阵。

内参矩阵是由相机内部的参数决定的,定义为是u轴和v轴的尺度因子(与摄像机的焦距有关),是u轴和v轴的不垂直因子,  为主点坐标(是光轴与成像平面的交点);

外参矩阵是由摄像机与被测物所处的相对位置决定(相机坐标经过旋转平移后于世界坐标重合,这个旋转平移的矩阵就是外参矩阵)。定义为:是相机坐标的三个坐标轴在世界坐标轴中的方向矢量,互相垂直,是从世界坐标的原点到光心的平移矢量。

为了让大家更清楚了解张正友标定法,我先从大家熟悉的对应点的关系去给大家讲解。靶标平面上的点和图像平面上的点具有一一对应关系。记靶标平面上的点为图像平面上的点为相应的齐次坐标为 通过坐标变换我们可以得到, s是个常数。

这里我们假设靶标平面位于世界坐标系的xy平面上,即z=0。所以有。之后仍然采用M表示靶标平面上点的坐标,但此时,这样就能有一一对应关系

接下来就是求解了。我们拍的每一种照片上有多组对应点通过这多组对应点,应用最小二乘法我们可以求出H,H的计算是使实际图像坐标与通过M求出之间参差最小的过程,目标函数为

H求解出来后,我们就可以求解摄像机的参数矩阵了。

利用式,和R的正交性, ,可以得到

……①

式①是关于摄像机内参数的两个基本约束,一个转换矩阵H可以得到关于摄像机内参的两个约束,所以要求出A,需求多个转换矩阵(每张图片可以求出一个转换矩阵,所以需要拍摄多张图片)。

为了方便求解,这里设:

我们注意到B是一个对称矩阵,可以表示为六维向量

H中的第i列向量为,可以推出

其中

这样就可以将①式化为

如果对靶标平面拍n幅图像,将n个这样的方程叠加起来就可以得到:

……②

其中V为2n×6的矩阵。

如果n3,一般的,b可以在相差一个尺度因子λ的定义下唯一确定;如果n=2,可以加上一个附加约束条件r=0,即即可以用作为附加方程。

通过对②的求解可解出b。而解可以通过求解矩阵的最小特征值对应的特征向量,或者对矩阵V进行奇异分解得出。

B求出后,就可以利用Cholesky矩阵分解算法求出再通过逆得到A。一旦A确定后,每幅图像的外参就容易求出了,通过

可以推出:

 

 ;

  

 ,

其中:

由此就可以求出相机的内参和外参,由于通常情况下,相机镜头是由畸变的,我们也可以将这组参数作为初始值,然后进行优化搜索(最小二乘思想),进而求出所有参数的准确值。

归纳一些张正友标定法的主体思想:

  1. 通过每张照片上的点的对应关系求出转换矩阵H(其中用到了最小二乘法思想减小误差)。          
  2. 通过多张图片求出的多个H,来进一步求内参矩阵A,然后就进一步可求出外参矩阵,最后再通过最小二乘法思想对畸变进行评估,进而求出更加精确的值。

张正友标定算法压缩包与视频讲解

通过了解张正友标定法的原理,在使用压缩包时也能更加容易知道问题出现在哪里(如果出现问题),但实际中其实你只要会用安装包以及标定后得出的数据就行了。由于安装包、讲解视频、数据使用都是由前辈先给出的(挺多的,这是我给出我认为比较靠谱的),这里将给出他们的链接

讲解视频:使用Matlab工具箱(procamcalib)进行投影仪标定—超详细过程_哔哩哔哩_bilibili

相机标定压缩包:(151条消息) TOOLBOX_calib-master_toolbox_calib相机外参-互联网文档类资源-CSDN文库

投影仪标定压缩包:(151条消息) matlab投影仪标定工具箱.zip_投影仪校正MATLAB-教育文档类资源-CSDN文库

按照视频的去操作就行。

关于如何使用这些数据可以参考这个文件:(152条消息) matlab相机标定参数介绍_matlab相机标定参数怎么用,matlab相机标定参数-C#文档类资源-CSDN文库h​​​​​​

对于如何应用这些数据,如果看完这些还不理解的话,后面我们计算最小相位图的时候会用到这些数据,大家可以作为一个例子去理解。


http://chatgpt.dhexx.cn/article/0nFTg9dZ.shtml

相关文章

笔记总结-相机标定(Camera calibration)原理、步骤

这已经是我第三次找资料看关于相机标定的原理和步骤,以及如何用几何模型,我想十分有必要留下这些资料备以后使用。这属于笔记总结。 1.为什么要相机标定? 在图像测量过程以及机器视觉应用中,为确定空间物体表面某点的三维几何位置…

如何实现标定?

上一篇《什么是标定》对标定进行了初步的介绍,让大家有了一个感性的认识。标定是一项非常复杂的工作的,涉及方方面面的知识非常多,本文将对标定具体实现的过程进行介绍。 控制器对标定的支持 在前面的文章中介绍了控制算法是在软件编程的时候…

标定的分类(一)

关于标定的分类及说明(一) 现在工业机器视觉和计算机视觉大量应用标定算法,但是对于初学者来说,存在概念模糊,理论理解错误的现状,因此,需要对标定进行梳理,防止大家在学习过程中混淆各种标定概念。话不多…

什么是标定?

标定这两个字在汽车行业里的工程师基本都听过,但是在其他行业里大部分人都不知道什么是标定,甚至都没有听说过标定。什么是标定?举一个常见的例子,家里买了电视,连接网络就可以看节目了,与其他任何环境影响…

JMS及其API介绍

Java Message Service是java ee的规范之一,可以用来发送异步消息,在某些场景下,可以作为不同系统,或者不同模块之间的集成方式。 可以类比为通过数据库来集成的方式,模块A完成逻辑以后,往数据库插…

Springboot 整合 JMS

ActiveMQ JMS 仅支持 Java 平台。 由于 JMS 是一套标准,所以 SpringBoot 整合 JMS 必然是整合 JMS 的某一个实现。 Apache ActiveMQ 是一个开源的消息中间件,完全支持 JMS 1.1 规范,支持多种编程语言( C、C、C#、Delphi、Erlang、AdobeFla…

1.JMS规范介绍

目录 1.什么是JMS规范 2.什么是MOM 3.MOM的特点 4.JMS和MOM的关联 5.JMS的体系结构 6.JMS常见基本概念 7.JMS 的事务性会话和非事务性会话 8.JMS消息的可靠性机制 1.什么是JMS规范 Java 消息服务(Java Message Service)是 java 平台中关于面向消息…

JMS 示例

JMS 开发示例。 使用weblogic8作为jms server。 1、在weblogic中配置JMS。 配置JMS connection factory 配置JMS File Store 配置JMS Server 配置JMS destination 2、创建JMS Sender package jms; import java.util.Hashtable; import javax.jms.JMSE

ActiveMQ详解一 —— JMS介绍

1. JMS概述 不同系统之间信息交换,有多种方式。 SUN公司提出了一种面向详细的中间件服务—— JMS,Java消息服务,是JavaEE的标准/规范之一。 JMS指出:消息的发送应该是异步的、非阻塞的。 也就是说,消息的发送者发送…

SpringBoot整合JMS

SpringBoot整合JMS 文章目录 SpringBoot整合JMS前言一、JMS、AMQP概念以及区别二、ActiveMQ安装三、SpringBoot整合ActiveMQ:队列模式实例1、创建demo项目2、添加依赖3、添加application配置4、添加配置文件ActiveMQConfig5、创建JMS组件文件6、发送消息控制器7、测…

JMS规范介绍

目录 1.什么是JMS规范 2.什么是MOM 3.MOM的特点 4.JMS和MOM的关联 5.JMS的体系结构 6.JMS常见基本概念 7.JMS 的事务性会话和非事务性会话 8.JMS消息的可靠性机制 1.什么是JMS规范 Java 消息服务(Java Message Service)是 java 平台中关于面向消息…

JMS规范

一、JMS经典模式详解 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM,Message oriented Middleware)的API,用于在两个应用程序之间&#xff0c…

微服务 —— 消息服务中间件 JMS

一、消息服务中间件 对于大多数应用来说,可采用消息服务中间件来提升系统异步通信,消息解耦问题。 消息的作用:异步处理、应用解耦、流量削峰。 异步消息中的两个概念:消息代理、目的地 当消息发送者发送消息,由消息…

JMS解析(二)——JMS简介

JMS解析(一)——JMS简介_踩踩踩从踩的博客-CSDN博客 前言 本篇文章会紧接着上篇文章未介绍完毕的JMS规范,继续消息接收、事务管理、持久化以及应用的介绍。 消息接收 消息接收分为队列接收和topic消息接收 对于队列的接收基本的consumer…

JMS(Java消息服务)(Activemq简单介绍)

是什么? JMS(java消息服务)是规范,它定义了一些规则,一些接口。具体实现由各种做这个产品的厂家或开源组织来实现。 为什么? 在JMS还没有诞生前,每个企业都会有自己的一套内部消息系统&#…

JMS解析(一)——JMS简介

消息中间件MQ及ActiveMQ介绍_踩踩踩从踩的博客-CSDN博客 前言 上篇文章对消息中间件做了个解析,以及ActiveMQ的安装和基本使用,做了个基本了解,因为如果不了JMS规范,一定是不学不好消息中间件和ActiveMQ,本篇文章会从JMS是什么&…

JMS基本概念

简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。Java消…

JMS概述

** 一、什么是JMS ** JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进行…

深入浅出JMS(一)——JMS简介

如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了。为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随着这个疑惑,短息和留言应运而生,无论手机是否开机、是否未…

详解 ROI Align 的基本原理和实现细节

转载至http://blog.leanote.com/post/afanti.denggmail.com/b5f4f526490b 欢迎支持原作者。 ROI Align 是在Mask-RCNN这篇论文里提出的一种区域特征聚集方式, 很好地解决了ROI Pooling操作中两次量化造成的区域不匹配(mis-alignment)的问题。实验显示,在检测测任务…