关于reprojectimageto3d()函数得到点云异常的问题

qq_36355900 2017-10-09 09:32:37
具体函数如下:disp是我求得视差图,Q是之前立体矫正得到的。

reprojectImageTo3D(disp, xyz, Q, true);
xyz *= 1.6;
for (int y = 0; y < xyz.rows; ++y)
{
for (int x = 0; x <xyz.cols; ++x)
{
cv::Point3f point = xyz.at<cv::Point3f>(y, x);
point.y = -point.y;
xyz.at<cv::Point3f>(y, x) = point;
}
}
cv::destroyAllWindows();
cout << endl << "保存点云坐标... " << endl;
saveXYZ(point_cloud_filename, xyz);

原图是

我才用的方法就是opencv自带的sgbm,可以得到视差图如下:

我存在两个问题,
第一个,我得到的x y z坐标都很小,在10左右,所以得到三维坐标的单位是什么?我所理解的乘以1.6后单位应该是cm,明显觉得坐标值不对。
第二个,我用meshlab显示三维坐标,点云呈射线状(或者说圆锥形?)哪里出了问题呢?是因为我视差效果比较差吗,我可以通过什么方法来提高呢,求大神们推荐?还是标定的问题?
希望有人能帮帮我呀~感激不尽
...全文
1962 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Thomson617 2020-05-29
  • 打赏
  • 举报
回复
将reprojectimageto3d()得到的结果乘以2.8346就是实际坐标值(1像素≈2.8346厘米)
weixin_35867652 2019-07-20
  • 打赏
  • 举报
回复
圆锥形是正确的
wangshifu0 2018-12-07
  • 打赏
  • 举报
回复
你好,我的点云也是这个效果,射线状的圆锥那种,请问你解决了吗?能和我联系一下吗?1017361768@qq.com,谢谢你了。
qq_36355900 2017-10-10
  • 打赏
  • 举报
回复
自己顶一下~

4,445

社区成员

发帖
与我相关
我的任务
社区描述
图形图像/机器视觉
社区管理员
  • 机器视觉
  • 迪菲赫尔曼
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧