【发布时间】:2020-10-19 14:00:35
【问题描述】:
我试图从具有预测深度的图像生成 3D 点云 (PC)。给出了相机内在函数和地面实况深度图像。首先,我正在使用相机内在生成具有 GT 深度的 PC,它看起来像这样:
但是,当我尝试为具有预测深度的同一图像生成 PC 时,PC 看起来很奇怪。这是具有预测深度的 PC:
我正在使用相同的相机内在函数来执行此操作。我对两代 PC 使用相同的代码和程序。我原以为两台电脑会很接近,但我得到的真的很奇怪。我做错了什么?
我生成点云的代码如下:
int rows = RGB.size[0];
int cols = RGB.size[1];
for (int v = 0; v < rows; v++) {
for (int u = 0; u < cols; u++) {
auto z = depth.at<ushort>(v, u) / 5000;
auto x = (u - intrinsics.cx) * z / intrinsics.fx;
auto y = (v - intrinsics.cy) * z / intrinsics.fy;
// std::cout<<"x = "<< x << " y = " << y <<std::endl;
point3d << x, y, z;
pc.vertices.push_back(point3d);
pc.colors.push_back(RGB.at<cv::Vec3b>(v, u));
}
}
编辑:我发现了错误。深度值按 5000 缩放。所以,我错过了那部分,并且在构建点云时没有除 z 的值。除以5000后,问题就解决了。
【问题讨论】:
标签: opencv point-clouds color-depth