You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

基于预测深度生成3D点云异常的排查与解决

问题:预测深度生成3D点云异常,真值深度正常的排查与解决

问题背景

我尝试利用预测深度图像结合相机内参生成3D点云(PC),但结果异常;而用真值(GT)深度图像生成的点云完全正常。两者使用了相同的相机内参、代码逻辑和处理流程,原本预期生成的点云应该接近,但实际结果差距很大。

原始点云生成代码

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值的除法缩放处理被遗漏了。修正这个问题——确保预测深度值在转换为真实3D坐标的z值时,执行z = depth_value / 5000的操作后,用预测深度生成的点云就和真值深度生成的点云结果一致了。

内容的提问来源于stack exchange,提问作者Md Siyam Sajeeb Khan

火山引擎 最新活动