get_circle_pose -从圆的2D投影角度确定圆的3D姿态。
Description
图像中的每个椭圆都可以解释为一个圆在图像中的透视投影。事实上,对于给定半径的圆,在3D中存在两个不同方向的圆,它们会产生相同的投影。get_circle_pose确定这两个圆的3D位置和方向。首先,每个轮廓由一个椭圆近似。然后,基于相机内部参数(CameraParam)和圆在3D中的半径(radius),在相机坐标中确定三维位置和方向(Pose1,Pose2)。
根据参数OutputType的值,位置和方向以3D姿态(OutputType = ‘pose’)或3D圆的中心和圆所在平面的法向量(OutputType = ‘center_normal’)的形式返回。在前一种情况下,绕z轴旋转的角度被设置为零,因为它无法确定。在后一种情况下,输出参数Pose1和Pose2的前三个元素包含圆心的位置。以下三个元素包含法向量。法向量被归一化和定向,使得它们指向远离光学中心(即相机坐标系的原点)的地方。如果OutputType设置为“center_normal”,输出参数Pose1和Pose2只包含6个描述圆的位置和方向的元素,而不是OutputType设置为“pose”时返回的3D姿态的7个元素。
如果在contour中传递了多个轮廓,Radius必须包含一个包含每个轮廓值的元组,或者只有一个值,然后用于所有轮廓。得到的位置和方向依次存储在Pose1和Pose2中,即Pose1和Pose2首先包含第一个轮廓的位姿或位置和法向量,然后包含第二个轮廓的各自值,以此类推。