因此,我在我的任务中使用了 Matterport 3D 数据集,它使用标准结构描述了定向边界框,其中一项更改如下:
"obb": {
"centroid":[3.39208,-1.72134,1.13262],
"axesLengths":[1.11588,0.619098,0.439177],
"dominantNormal":[-0.707107,-0.707107,0],
"normalizedAxes":[0,0,1,-0.707107,0.707107,0,-0.707107,-0.707107,0]
}
我知道定向边界框通常由质心、局部坐标系轴和沿这些轴的长度定义。
就我而言,考虑到对象仅在世界坐标系中围绕垂直轴(z 轴)旋转,我想找出它围绕 z 轴旋转的角度。但为此,我需要将世界坐标系转换为局部坐标系的旋转矩阵。在标准表示的情况下,旋转矩阵只是 3x3 矩阵,轴作为列向量。但是,在这种情况下,如果您查看归一化轴数组,则会给出 9 个值,但没有约定哪个轴应该是旋转矩阵中的第一列向量或第二列向量。
假设对象位置是垂直的并且仅围绕 z 轴旋转,我可以确定旋转矩阵的最后一列。例如,上述示例中的 [0, 0, 1]。但是如何确定另外两个轴呢?有没有办法在确定时考虑“dominantNormal”信息?