【问题标题】:Projecting 3D points in image plane在图像平面中投影 3D 点
【发布时间】:2018-04-18 21:13:19
【问题描述】:

我正在尝试按照 -here 提供的公式将 3D 点云投影到图像平面上。 我的代码是:

Td=[0.994700168903275 0.0521802707917803 0.0885934158044077 -1.09405637454607/1000; -0.0536097887263755 0.998466155670681 0.0138320834629078 24.2728498290288/1000; -0.0877357654352521 -0.0185082500606608 0.995971826982662 9.35239973330908/1000; 0 0 0 1];
xd=xyz(:,1); 
yd=xyz(:,2);
zd=xyz(:,3);
xyz_c=zeros(76800,4);
for i=1:76800
   b=[xd(i); yd(i); zd(i); 1];
   xyz_c(i,:)=mtimes(Td,b);
end
uc=(xyz_c(:,1)./xyz_c(:,3))*250.406303917333+162.663763325924;
vc=(xyz_c(:,2)./xyz_c(:,3))*249.362838052888+119.937781665327;
figure(1)
imshow(scene2);hold on; plot(uc,vc);hold off;

平移向量除以 1000,因为该值以 mm 为单位,但我需要以 m 为单位。 scene2 是我想要匹配 3D 点的对应场景。不知何故,我知道投影点太低,换句话说,vc 值太大。当我在图像上绘制ucvc 时,我得到了这个:

很难看到,但 3D 点的标记顶部位于标记顶部开始的位置,这些点应高出 60 像素左右。当我执行以下imshow(scene2);hold on; plot(uc,vc-60);hold off; 时,结果会好得多:

我获得了一个带有 XYZ 坐标的点云,所以 xyz 变量基本上是直接来自导出的点云的信息。希望我能很好地解释我的问题。

问题是,代码有什么问题还是我遗漏了什么?

图片: [uc,vc]情节: 点云: 深度图:

【问题讨论】:

  • 你应该嵌入图片,这样更容易阅读
  • @Tobi 我会,但我在这里没有足够的声誉。我最近加入了
  • 你能添加没有重叠点的图像吗(我很难弄清楚图片中发生了什么)
  • @SneakyPolarBear 我添加了原始图像、生成的 [uc,vc] 图和原始点云(黑色圆圈是粉色标记所在的位置,很难看到)
  • 也许你们当中有人知道为点云点分配像素颜色值的代码,所以结果我得到了彩色点云

标签: matlab image-processing 3d mapping


【解决方案1】:

假设您的 cTd 转换矩阵是正确的,我唯一想到的是在 Matlab 中交换了行和列。因此,将方程式更改为:

uc=(xyz_c(:,1)./xyz_c(:,3))*250.406303917333+119.937781665327;
vc=(xyz_c(:,2)./xyz_c(:,3))*249.362838052888+162.663763325924;

试一试,不过我不确定。如您所说,像素仅在vc中关闭。但是,它应该在两个方向上相差 40 像素左右。

【讨论】:

  • 我试试看。我认为可能导致这种情况的另一个原因是 R|t 矩阵中的平移向量以米为单位,但主点和焦距以像素为单位。会不会是这个问题?
  • 当我改变要点时,它变得更糟。我使用 Matlab 立体校准工具获得的 cTd 变换矩阵。 Camera1 是 RGB 相机,我只是从校准输出中复制了 R 矩阵和 t 向量。问题是我使用来自 ToF 传感器的幅度图像进行立体校准,可能有问题
  • @Kuchx,让我试试我的 Kinect 和立体校准工具箱,然后我会回复你。
  • 很好,我会等你的结果!
【解决方案2】:

好的,用户 Amro 帮我指出了问题。如果您还记得我进行立体校准时 RGB 是 camera1 而 ToF 传感器是 camera2。问题是,当我试图将 3D 点(从 ToF)转换为图像帧 x1 = R*x2 + t=Td*x2 时,我的想法只是在 x2 中输入 3D 坐标值,然后我会得到图像中的对应坐标框架,但实际上我必须x1=inv(Td)*x2,现在场景叠加,因为它们应该基于支持的理论 - here。谢谢大家的解答,不胜感激!

问候 库克斯

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 2011-11-25
    • 1970-01-01
    • 2018-06-13
    • 2014-08-01
    相关资源
    最近更新 更多