相机内外参标定综合

相机内外参标定

  • 内外参标定常用的工具
  • 相机成像原理
  • 内外参标定数学原理
    • 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.mzph.cn/news/632068.shtml

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

相关文章

Qt绘画的使用

1. 绘图 绘图组件&#xff1a; 1、绘画对象 2、绘画位置 3、绘画工具 4、绘画时机 绘画时机&#xff1a; 当整个窗口或窗口的一部分需要重新绘制时&#xff0c;会调用绘制事件处理函数 void QWidget::paintEvent(QPaintEvent *event) 绘画对象&#xff1a; QPainter类&#xff…

群晖Drive搭建云同步服务器结合内网穿透实现Obsidian笔记文件远程多端同步

文章目录 一、简介软件特色演示&#xff1a; 二、使用免费群晖虚拟机搭建群晖Synology Drive服务&#xff0c;实现局域网同步1 安装并设置Synology Drive套件2 局域网内同步文件测试 三、内网穿透群晖Synology Drive&#xff0c;实现异地多端同步Windows 安装 Cpolar步骤&#…

使用内网穿透解决电信无公网IP难题,神卓互联

事情经过 事情是这样的&#xff0c;由于客户的单位通了电信宽带&#xff0c;然后采购了我们的ERP系统安装在单位的服务器上&#xff0c;在单位的时候可以通过输入服务器的局域网Ip地址访问&#xff0c;也就是192.168.2.1xx这样的地址&#xff0c;访问确实没有问题&#xff0c;…

【漏洞复现】Sentinel Dashboard默认弱口令漏洞

Nx01 产品简介 Sentinel Dashboard是一个轻量级的开源控制台&#xff0c;提供机器发现以及健康情况管理、监控、规则管理和推送的功能。它还提供了详细的被保护资源的实际访问统计情况&#xff0c;以及为不同服务配置的限流规则。 Nx02 漏洞描述 Sentinel Dashboard存在默认弱…

墙地砖外形检测的技术方案-外部轮廓检测算法

Ramer算法 利用Canny算子得到墙地砖轮廓后&#xff0c;必须进一步将轮廓线精确分段成墙地砖的四条边&#xff0c;从而可得到墙地砖轮廓尺寸、边直度和直角度指标。采用如下算法实现&#xff1a; 第1&#xff0c;选择较高阈值&#xff0c;利用ramer算法将轮廓线用多边形&#…

软件测试|Python 用户输入和字符串格式化

简介 在 Python 中&#xff0c;用户输入和字符串格式化是编程中常见的任务之一。用户输入使我们能够与用户交互&#xff0c;而字符串格式化帮助我们创建美观的输出。本文将介绍如何在 Python 中执行这些任务&#xff0c;并提供详细示例。 用户输入 在 Python 中&#xff0c;…

[论文阅读]DeepFusion

DeepFusion Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection 用于多模态 3D 物体检测的激光雷达相机深度融合 论文网址&#xff1a;DeepFusion 论文代码&#xff1a;DeepFusion 摘要 激光雷达和摄像头是关键传感器&#xff0c;可为自动驾驶中的 3D 检测提供补…

多输入多输出 | Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出预测

多输入多输出 | Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出预测 目录 多输入多输出 | Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出预测预测效果基本介绍模型背景程序设计参考资料 预测效果 基本介绍 Matlab实现PSO-CNN粒子群优化卷积神经网络多输入多输出…

ONLYOFFICE:开源、免费、安全,打造定制化办公平台的最佳选择

文章目录 写在前面ONLYOFFICE是什么&#xff1f;ONLYOFFICE的惊艳之处齐全的插件&#xff0c;助你锦上添花部署一款自己的安全可靠的办公平台写在最后 写在前面 说起 Office 办公软件&#xff0c;我想大家最常用的应该就是微软的 Microsoft Office 以及国产的 WPS Office。两款…

349. 两个数组的交集(力扣)(OJ题)

题目链接&#xff1a;349. 两个数组的交集 - 力扣&#xff08;LeetCode&#xff09; 个人博客主页&#xff1a;https://blog.csdn.net/2301_79293429?typeblog 专栏&#xff1a;https://blog.csdn.net/2301_79293429/category_12545690.html 给定两个数组 nums1 和 nums2 &a…

具有中国特色的普及工厂数字化转型的新路子

工业互联网浪潮来袭&#xff0c;你准备好了吗&#xff1f; 国家智能制造专委会委员、浙江省智能制造专家委员会毛光烈主任在“第七届中国工业大数据大会”上的演讲&#xff0c;《具有中国特色的普及工厂数字化转型的新路子》&#xff0c;阐述了关于工厂订单全流程业务数据体系运…

Scrapy配置文件设置(全网最全)

Scrapy配置设置(全网最全&#xff09;&#xff1a; 背景&#xff1a; ​ 之前在做爬虫项目的时候&#xff0c;老报错或有问题&#xff0c;我看了网上很多文章&#xff0c;但是都不是很全面&#xff0c;在这里写一篇博客给大家讲讲scrapy文件中的setting.py文件&#xff0c;我…

每周一算法:数独游戏

题目链接 数独游戏 题目描述 数独是根据 9 9 9 \times 9 99 盘面上的已知数字&#xff0c;推理出所有剩余空格的数字&#xff0c;并满足每一行、每一列、每一个粗线宫内的数字均含 1 − 9 1 - 9 1−9 &#xff0c;不重复。每一道合格的数独谜题都有且仅有唯一答案&#x…

align-item 和 align-content

align-item 和 align-content flex 布局中的 align-items 和 align-content 属性都用于垂直对齐 flex 容器内的项目&#xff0c;但它们适用于不同的情况&#xff1a; align-items: 这个属性用于在交叉轴上对齐单行内的 flex 项目。当你有一个 flex 容器&#xff0c;并且里面的…

通信入门系列——信号的频谱分析

一、信号频谱 信号的频谱&#xff0c;指的是一段频率范围内的情况&#xff0c;信号的幅度和相位的情况。 以一个频率为1Hz的余弦电压信号进行说明&#xff0c;这个信号的傅里叶变换为X(ω)πδ(ω-2π)πδ(ω2π)&#xff0c;也就是所谓的频谱密度&#xff0c;单位为V/(rad/…

vue3-表单输入绑定

表单输入绑定 获取表单输入的值方式&#xff1a; 手动连接值绑定和更改事件监听器 v-model 指令 &#xff08;常用&#xff09; <script lang"ts" setup> import { ref } from "vue" // 定义个变量接收输入的内容&#xff1a; const text ref(&…

PMP冲突解决策略:项目经理的必备技能

原创不易&#xff0c;你们的点赞收藏是我创作的动力&#xff01; 在项目管理领域&#xff0c;冲突是不可避免的现象。作为项目经理&#xff0c;掌握有效的冲突解决策略至关重要。本文将为您详细介绍PMP&#xff08;项目管理专业&#xff09;中常用的几种冲突解决策略&#xff…

rviz可视化机械臂(python)

一、准备的东西 一个机械臂的urdf 规划的路径点 二、launch文件的撰写 1.初始化 <?xml version"1.0" encoding"utf-8"?> <launch><param name"robot_description" textfile"机械臂.urdf" /><node name&qu…

Kotlin-控制流程

&#x1f4d1;前言 本文主要是【Kotlin】——Kotlin-控制流程的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句…

mac下配置git自定义快捷命令

1. 指定自定义别名 vi ~/.bash_profile open ~/.bash_profile 配置环境变量,插入类似下面的内容 .bash_profile文件 alias gcgit checkout alias gmgit commit -m alias gcbgit checkout -balias gtgit statusalias gagit add .alias glggit logalias gdgit diffalias gr…