由双目立体视差图重建三维点云【Win10+OpenCV3.4.1+PCL1.8】

本文介绍了在Win10系统上,利用OpenCV3.4.1和PCL1.8进行三维点云重建的方法。通过双目立体视觉获取视差图和深度信息,结合RGB图像,形成XYZRGB点云。重点讨论了坐标转换、.pfm格式文件处理,并提供了代码示例和素材来源。
摘要由CSDN通过智能技术生成

基于Win10+OpenCV3.4.1+PCL1.8环境,使用双目立体视差图进行三维点云的重建。

原理

使用双目视差图重建三维点云的原理其实很简单,与使用RGB-D相机进行三维点云重建的过程并没有太大区别,主要是通过双目立体视觉获取物体的深度信息( Z c Z_c Zc),并计算 X c 、 Y c X_c、Y_c XcYc坐标值,配合原图提供的RGB信息,即可构成三维点云(PointXYZRGB)。

代码

/*
相机参数:
	cam0 = [4152.073 0 1288.147; 0 4152.073 973.571; 0 0 1]
	cam1 = [4152.073 0 1501.231; 0 4152.073 973.571; 0 0 1]
	 doffs = 213.084	
	baseline = 176.252
	width = 2872
	height = 1984
相机内参数矩阵:
	K=[fx 0 u0; 0 fy v0; 0 0 1]
	
	doffs = |u1 - u0| 
*/

#include <pcl/visualization/cloud_viewer.h>
#include <iostream>  
#include <pcl/io/io.h>  
#include <pcl/io/pcd_io.h>  
#include <opencv2/opencv.hpp>  

using namespace cv;
using namespace std;
using namespace pcl;

int user_data;
// 相机内参
const double u0 = 1288.147;
const double v0 = 973.571;
const double fx = 4152.073;
const double fy = 4152.073;
const double baseline = 176.252;
const double doffs = 213.084;	// 代表两个相机主点在x方向上的差距, doffs = |u1 - u0|

void viewerOneOff(visualization::PCLVisualizer& viewer)
{
   
	viewer.setBackgroundColor(0.0, 0.0, 0.0);
}

int main()
{
   
	// 读入数据
	Mat color = imread("im0.png"); // RGB
	Mat depth = imread("disp0.png"
  • 0
    点赞
  • 249
    收藏
    觉得还不错? 一键收藏
  • 80
    评论
评论 80
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值