【问题标题】:opencv - 3D rigid/affine transformationopencv - 3D 刚性/仿射变换
【发布时间】:2017-01-23 04:02:17
【问题描述】:

这是opencv: Rigid Transformation between two 3D point clouds 的重复问题。但是,没有接受任何答案,我不明白那里唯一的答案。

唯一的答案说缩放和剪切在更高维度上可以有不同的含义,并举例说明 2D 缩放是 3D 平移。

我认为 3D 仿射变换应该包括 3 维(即 x、y、z 轴)的缩放/剪切。 3D 刚性变换应该只在 3 维上进行平移和旋转。

我很困惑为什么帖子中的答案说“这就是为什么你没有选择在 3D 中设置刚性仿射变换的原因,因为你实际上已经在执行一个”

我应该对原始帖子发表评论,但由于声誉要求,我不能发表评论。

【问题讨论】:

    标签: opencv 3d coordinate-transformation


    【解决方案1】:

    尽管问题中链接的(现在已删除)答案(以及我之前的欺骗性猜测......我责怪Arcturian MegaDonkey的坏盘子)可能暗示,estimateAffine3d 完全按照它所说的:估计仿射3d 中的转换,包括缩放、剪切、平移和旋转。 OP 已经证实了这一点(在 cmets 中),我已经运行了几个测试,其中转换成功恢复。

    没有理由相信estimateAffine3d 没有按预期工作。

    【讨论】:

    • 好的,我可以这样说:OpenCV中的estimateAffine3D函数只估计3D平移和旋转,而2D中出现的剪切和缩放是通过3D平移和旋转来实现的。因此,该函数不估计真正的 3D 仿射变换,包括 3D 剪切和缩放。
    • @linzhang.robot 是的,estimateAffine3D 只估计刚体变换。如果在 3D 对象改变形状时存在真正的 3D 剪切或缩放,estimateAffine3D 将尝试将其解释为刚体变换。
    • 如果我有两组 3D 点,它们之间的转换包括真正的 3D 缩放或剪切(比如来自两个立方体的点具有不同的大小)。转换由函数estimateAffine3D 估计。在这种情况下,刚体变换将无法描述两组点之间的关系(对吗?)。我还可以使用函数估计的变换来将一个点与另一个点对齐(即将一组点转换为另一组点)吗?
    • 我在带有标记的模型上测试了estimateAffine3D 和另一个函数estimateRigid3D 估计的转换。通过标记估计转化。然后将变换应用于模型,结果表明模型的形状被estimateAffine3D估计的变换改变(即不是刚性的)。因此,我认为estimateAffine3D 可以估计仿射变换包括真正的 3D 缩放/剪切。
    • 另外,this post 怀疑estimateAffine3D 假设两个输入点云对应于相同的物理点。但是,就我而言,两个点云并不完全相同。
    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-05
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多