OpenCV相机标定与3D重建(49)将视差图(disparity map)重投影到三维空间中函数reprojectImageTo3D()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

将视差图像重投影到3D空间。

cv::reprojectImageTo3D 是 OpenCV 库中的一个函数,用于将视差图(disparity map)重投影到三维空间中。这个过程涉及到使用从立体校准过程中获得的 Q 矩阵(也称为 disparity-to-depth 映射矩阵),它能将每个像素的视差值转换为 3D 坐标。

函数原型

cpp 复制代码
void cv::reprojectImageTo3D
(
	InputArray 	disparity,
	OutputArray 	_3dImage,
	InputArray 	Q,
	bool 	handleMissingValues = false,
	int 	ddepth = -1 
)	

参数

  • 参数disparity:输入的视差图,通常是一个单通道的浮点型或整数类型的图像,表示每个像素处的视差值。
  • 参数_3dImage:输出的3D图像,结果是一个三通道的浮点型图像,每个像素包含该位置对应的3D坐标 (X, Y, Z)。
  • 参数Q:4x4 的 disparity-to-depth 映射矩阵,用于将视差值转换为3D坐标。此矩阵由 stereoRectify 或其他相关函数生成。
  • 参数handleMissingValues:可选参数,指示是否处理缺失值。如果设置为 true,则对于无效的视差值(例如,小于最小视差或大于最大视差的值),输出图像中的相应位置会被填充为特定值(通常是极大值或极小值)。默认值是 false,即不处理缺失值。
  • 参数ddepth:可选参数,指定输出图像的深度。可以是 CV_32F(单精度浮点数)或 CV_64F(双精度浮点数)。如果设置为 -1,则输出图像将继承输入图像的深度。

该函数将单通道的视差图转换为一个三通道的图像,表示3D表面。也就是说,对于每个像素 (x, y) 及其对应的视差 d = disparity(x, y),它计算:

X Y Z W = Q x y disparity ( x , y ) z . \begin{bmatrix} X \\ Y \\ Z \\ W \end{bmatrix} = Q \begin{bmatrix} x \\ y \\ \texttt{disparity} (x,y) \\ z \end{bmatrix}. XYZW =Q xydisparity(x,y)z .

代码示例

cpp 复制代码
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main()
{
    // 假设我们已经有了视差图和 Q 矩阵
    Mat disparity = /* 加载或计算得到的视差图 */;
    Mat Q = (Mat_<double>(4, 4) << /* ... */); // 4x4 disparity-to-depth 映射矩阵

    // 定义输出的3D图像
    Mat _3dImage;

    // 执行重投影
    reprojectImageTo3D(disparity, _3dImage, Q, true, CV_32F);

    // 可选:保存或显示结果
    // imwrite("3d_image.png", _3dImage);

    cout << "3D Image has been successfully computed." << endl;

    return 0;
}
相关推荐
微财经观圈3 小时前
AI 3D生成工具重拓扑后怎样检查UV、法线和材质是否正常?
人工智能·3d·重拓扑
Zldaisy3d4 小时前
一种具备优异带外抑制特性的增材制造滤波超表面
3d
CAD芯智库8 小时前
中望3D悟空2027亮点速递(1)-全新单手鼠标交互和特征树显示提效
经验分享·科技·3d·业界资讯·国产三维cad软件·中望3d悟空·中望3d2027
微财经观圈9 小时前
AI 3D生成角色怎样套用预设动作?自动绑骨与动作测试步骤
人工智能·3d
菩提树下的凡夫12 小时前
激光振镜双目结构光3D相机丢点问题
数码相机·3d
70asunflower12 小时前
Python_3D建模与HTML预览开发指南
人工智能·3d·ai agent
大江东去浪淘尽千古风流人物2 天前
【UniSim-SLAM】前馈SLAM的双流架构:Sim(3)统一位姿图、与经典SLAM及DPVO的三范式对比
深度学习·计算机视觉·3d·交互·人体姿态估计·eccv·3d重建
高升说4 天前
手眼 3D 相机选型:先定工作距离,再谈精度,最后定安装
人工智能·数码相机·3d
利刃大大5 天前
我用 GPT-6 给江南大学建了个 3D 沙盘
gpt·3d·ai·blender·江南大学
不要生病了5 天前
从脑电到彩色三维点云:Neuro-3D 精读与证据边界
3d