相机内外参标定综合

相机内外参标定

  • 内外参标定常用的工具
  • 相机成像原理
  • 内外参标定数学原理
    • 1)求解内参矩阵与外参矩阵的积
    • 2)求解内参矩阵
    • 3)求解外参矩阵

内外参标定常用的工具

如图所示,棋盘格是很常见使用的标定工具请添加图片描述
左下角写着棋盘格的参数:30-12×9,表明:棋盘格边长为30mm,共有12×9格,也可以自己数出来

cv::Mat image = cv::imread("Chessboard.png", 0);//读入图片
int width = 11;
int height = 8;
cv::Size board_size = cv::Size(width , height); // 行列方向内角点数量
std::vector<cv::Point2f> image_points_buff;//保存内角点的向量
cv::findChessboardCorners(image, board_size, image_points_buff,cv::CALIB_CB_ADAPTIVE_THRESH |cv::CALIB_CB_NORMALIZE_IMAGE)// 对粗提取的角点精细化,有以下两种方式可供选择
cv::cornerSubPix(image, image_points_buff, cv::Size(3,3), cv::Size(-1, -1),cv::TermCriteria(CV_TERMCRIT_EPS + CV_TERMCRIT_ITER, 30, 0.1));
//cv::find4QuadCornerSubpix(image, image_points_buff, cv::Size(5, 5)); 
cv::Mat image_color;
cv::cvtColor(image, image_color, CV_GRAY2BGR);
cv::drawChessboardCorners(image_color, board_size, image_points_buff, true);

以上代码段需要注意的是:
1)findChessboardCorners函数中填入的是内角点数量,是11×8
2)需要用subpix相应算法进行细化
最终得到的角点图片是这样的:

请添加图片描述
可以看到,角点的检测结果是有先后顺序的,无论棋盘格如何旋转,角点检测的顺序都是跟下图中一样,注意看1、2、 3、 4四个点对应的红色箭头,四个顶点的特征都是不一致的。
而且下面的结果必成立

11×8个角点会被存储在image_points_buff数组中
image_points_buff.size() = height; 
image_points_buff[0].size() = width;
image_points_buff[0][0]               //对应下图1号点
image_points_buff[0][width-1]         //对应下图2号点
image_points_buff[height-1][0]        //对应下图3号点
image_points_buff[height-1][width-1]  //对应下图4号点

请添加图片描述

相机成像原理

在这里插入图片描述
相机无畸变模型:
在这里插入图片描述
其中, ( U , V , W ) (U,V,W) (U,V,W)为在世界坐标系下一点的物理坐标, ( u , v ) (u,v) (u,v)为该点对应的在像素坐标系下的像素坐标。

将下面的矩阵称为相机的内参矩阵,内参矩阵取决于相机的内部参数。其中, f f f为像距, d X dX dX d Y dY dY分别表示 X X X Y Y Y方向上的一个像素在相机感光板上的物理长度(即一个像素在感光板上是多少毫米), u 0 v 0 u_{0} v_{0} u0v0分别表示相机感光板中心在像素坐标系下的坐标, θ \theta θ 表示感光板的横边和纵边之间的角度( 9 0 ° 90^{°} 90°表示无误差)。
在这里插入图片描述

将矩阵 ( R T 0 0 ) \begin{pmatrix} R&T\\ 0&0 \end{pmatrix} (R0T0)称为相机的外参矩阵,外参矩阵取决于相机坐标系和世界坐标系的相对位置, R R R表示旋转矩阵, T T T表示平移矢量。

另外,相机拍摄的图片还存在一定的畸变,畸变包括桶形畸变和枕形畸变。
畸变模型包括径向畸变和切向畸变。

径向畸变公式(3阶)如下:

内外参标定数学原理

张正友标定法标定相机的内外参数的思路如下:

1)求解内参矩阵与外参矩阵的积

2)求解内参矩阵

3)求解外参矩阵

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/412717.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

odoo16 销售订单中数量与单价,手机录入不方便

odoo16 销售订单中数量与单价&#xff0c;手机录入不方便 在销售订单中&#xff0c;服装批发&#xff0c;数量与单价均是整数&#xff0c;系统默认的为保留两位小数的float类型&#xff0c;输入起来很不方便&#xff0c;如何修改 电脑版&#xff0c;输入时&#xff0c;自动选取…

测试驱动开发:基于Jenkins+GoTest+HTML的持续化集成

目录 前言 一、项目框架 1.项目迭代 2.项目时序图 3.项目测试执行 二、项目具体实现 1.创建流水线 2.拉取代码 3.执行测试代码 4.生成测试报告 5.报告内容解读 6.数据统计 7.邮件通知 8.企业微信通知 三、项目遇到的问题 1.go test -args 2.go test生…

ASO优化:巧用字符串

应用商店优化&#xff08;ASO&#xff09;与网站的搜索引擎优化 (SEO) 非常相似。 同样&#xff0c;应用程序商店通过关键字、评论、下载和升级数量以及其他排名因素来查找最相关的应用程序。 ASO 和 SEO 都致力于为产品带来更多流量&#xff0c;并将其置于搜索结果的顶部。 …

django后台进行加密手机号字段,加密存储,解密显示

需求: 1 &#xff1a;员工在填写用户的手机号时&#xff0c;直接填写&#xff0c;在django后台中输入 2&#xff1a;当员工在后台确认要存储到数据库时&#xff0c;后台将会把手机号进行加密存储&#xff0c;当数据库被黑之后&#xff0c;手机号字段为加密字符 3&#xff1a;员…

文心一言使用分享

ChatGPT 和文心一言哪个更好用&#xff1f; 一个直接可以用&#xff0c;一个还需要借助一些工具&#xff0c;还有可能账号会消失…… 没有可比性。 通用大模型用于特定功能的时候需要一些引导技巧。 import math import time def calculate_coordinate(c, d, e, f, g, h,…

Jenkins的环境部署,(打包、发布、部署、自动化测试)

一、Tomcat环境安装 1.安装JDK&#xff08;Java环境&#xff09; JDK下载地址&#xff1a;Java Downloads | Oracle 安装好后在系统环境变量里配置环境变量&#xff1a; ①添加JAVA_HOME 变量名&#xff1a;JAVA_HOME变量值&#xff1a;C:\Program Files\Java\jdk1.8.0_18…

Docker安全基线检查需要修复的一些问题

一、可能出现的漏洞 限制容器之间的网络流量 限制容器的内存使用量 为Docker启用内容信任 将容器的根文件系统挂载为只读 审核Docker文件和目录 默认情况下&#xff0c;同一主机上的容器之间允许所有网络通信。 如果不需要&#xff0c;请限制所有容器间的通信。 将需要相互通…

精品基于Uniapp+springboot农产品安全领域的信息采集系统App

《[含文档PPT源码等]精品基于Uniappspringboot农产品安全领域的信息采集系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;sprin…

openEuler 下部署Zabbix报表系统zbxtable

1.zbxtable简单介绍 官网地址:使用文档 | ZbxTable ZbxTable 是使用 Go 语言开发的一个开源的 Zabbix 报表系统 目前已经推出 ZbxTable 2.1 版本 主要功能如下&#xff1a; 按照主机类型&#xff0c;展示或导出主机资源 资产管理&#xff0c;资源状态总览 多用户、角色、…

三、MySQL实例初始化、设置、服务启动关闭、环境变量配置、客户端登入(一篇足以从白走到黑)

目录 1、选择安装的电脑类型、设置端口号 2、选择mysql账号密码加密规则 3、设置root账户密码 4、设置mysql服务名和服务启动策略 5、执行设置&#xff08;初始化mysql实例&#xff09; 6、完成设置 7、MySQL数据库服务的启动和停止 方式一&#xff1a;图形化方式 方式…

Python 一行命令部署http、ftp服务

Python 一行命令部署http服务 文章目录 Python 一行命令部署http服务具体操作命令如下浏览器返回下载Python 一行命令部署FTP服务 具体操作命令如下 这个比nginx相对来说更加简单&#xff0c;可以用于部署特殊场景时如银行等部署时&#xff0c;各种权限控制&#xff0c;内网之间…

课表排课小程序怎么制作?多少钱?

在当今的数字化时代&#xff0c;无论是购物、支付、点餐&#xff0c;还是工作、学习&#xff0c;都离不开各种各样的微信小程序。其中&#xff0c;课表排课小程序就是许多教育机构和学校必不可少的工具。那么课表排课小程序怎么制作呢&#xff1f;又需要多少钱呢&#xff1f; …