【C++】相机标定源码笔记- 立体视觉相机的校准和图像矫正类

类主要用于双目相机的标定和矫正。它包含了读取和保存相机模型、计算标定参数以及矫正图像的功能。通过这些功能,可以实现双目相机的标定和矫正,从而提高双目相机的精度和稳定性。

公有函数: 构造函数、带参构造函数、析构函数、读取双目相机模型、保存双目相机模型、计算双目相机标定参数、矫正图像。

公有变量: 左右相机的内参、双目相机的标定参数包括旋转矩阵、平移向量、本质矩阵、基础矩阵、矫正矩阵和投影矩阵等。

私有变量: 是否加载了双目相机模型、左右相机的图像点、物体点、有效区域、图像大小、重投影误差、是否已经生成矫正map、左右相机的Mat数组。

------------------函数------------------

默认构造函数:初始化矫正标志为假,初始化模型加载标志为假。

带参数的构造函数:初始化矫正标志为假,读取双目相机模型。

析构函数:空。

读取双目相机模型:检查文件名是否为.yml结尾,打开文件,读取文件中的参数(图像尺寸、旋转矩阵、平移向量、本质矩阵、基础矩阵、第一个相机的矫正旋转矩阵、第二个相机的矫正旋转矩阵、第一个相机的投影矩阵、第二个相机的投影矩阵、读取重投影矩阵、读取做相机的有效区域、读取右相机的有效区域。)初始化相机内参:将双目模型加载标志设为真、初始化左相机的内参类实例、检查左相机是否已标定、初始化右相机的内参、检查右相机是否已标定、返回双目模型和左右相机内参是否成功加载。

保存立体模型参数文件:检查文件名是否为.yml结尾,打开文件,保存参数到文件。返回true。

**计算立体标定参数:**检查左右相机检测结果数量是否一致,获取检测结果数量,获取图像尺寸,开始立体校准。 定义左相机棋盘格完整角点集,右相机棋盘格角点集。定义左右相机角点计数,遍历所有图像获取左/右相机角点{ 如果检测结果为真则添加图像角点到 左/右侧相机图像角点集合,否则添加空向量到角点集合 }。 定义左右相机棋盘格非空角点集合,找出在同一帧左右角点对。获取有效的角点对数量。 定义世界坐标系下的角点,进行双目相机标定,计算重投影误差。输出重投影误差。进行双目相机矫正,输出左右相机的有效区域。

cv::stereoCalibrate

cv::stereoRectify

图像立体矫正 检查是否已经初始化了矫正映射(输出做相机的内参矩阵和畸变系数,输出做相机的矫正变换矩阵和投影矩阵,输出图像尺寸,输出有相机的内参矩阵和畸变系数,输出有相机的矫正变换矩阵和投影矩阵,输出图像尺寸, 初始化左相机的矫正映射,初始化有相机的矫正映射,设置标志表示矫正映射已经初始化)。 应用矫正映射到做相机图像,应用矫正映射到右相机图像。 如果需要显示校正后的图像(创建一个画布,用于显示左右图像,定义画布的左半部分,定义画布的右半部分,创建显示窗口,将矫正后的左图像复制到画布的左半部分,将矫正后的右图像复制到画布的右半部分。在画布上绘制绿色的水平线,用于检查矫正效果。显示校正后的图像,等待用户按键。 ),返回true。

cv::remap

本质矩阵 vs 基础矩阵

使用双目相机进行三维重建的pipeline

相关推荐
2401_857439692 小时前
SSM 架构下 Vue 电脑测评系统:为电脑性能评估赋能
开发语言·php
SoraLuna2 小时前
「Mac畅玩鸿蒙与硬件47」UI互动应用篇24 - 虚拟音乐控制台
开发语言·macos·ui·华为·harmonyos
xlsw_2 小时前
java全栈day20--Web后端实战(Mybatis基础2)
java·开发语言·mybatis
Dream_Snowar3 小时前
速通Python 第三节
开发语言·python
唐诺4 小时前
几种广泛使用的 C++ 编译器
c++·编译器
高山我梦口香糖4 小时前
[react]searchParams转普通对象
开发语言·前端·javascript
冷眼看人间恩怨5 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
信号处理学渣5 小时前
matlab画图,选择性显示legend标签
开发语言·matlab
红龙创客5 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
Lenyiin5 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin