我在世界坐标系中有一个定向的边界框。我想找出它在相机坐标系中绕y轴的旋转。
因此定向的边界框由归一化的轴和大小表示。
class BoundingBox3D {
public:
Eigen::Vector3f centroid;
Eigen::Vector3f size_along_obb_axes;
// define OBB local coordinate system for the orientation
Eigen::Vector3f x_axis;
Eigen::Vector3f y_axis;
Eigen::Vector3f z_axis;
}
顺便说一句,归一化轴也构成了其旋转矩阵的世界坐标系的列。
我拥有相机坐标系转换矩阵的世界,通过该矩阵,我可以将每个轴转换为相机坐标系。我以变换后的轴为列构造旋转矩阵,并从旋转矩阵中获得欧拉角,如下所示:
this->rot_mat << this->transformed_x_axis[0], this->transformed_y_axis[0], this->transformed_z_axis[0],
this->transformed_x_axis[1], this->transformed_y_axis[1], this->transformed_z_axis[1],
this->transformed_x_axis[2], this->transformed_y_axis[2], this->transformed_z_axis[2];
this->heading_rad = this->rot_mat.eulerAngles(0, 1, 2); //x, y, z angles in radians
这是正确的吗? 有没有更好的方法可以做到这一点?