根据标记位置计算球的旋转角度
Calculate ball rotation angle based on marker position
我正在使用相机在蓝色球上追踪一个黑色标记,如下图所示。
我可以可靠地检测球图像顶部的标记位置,但需要知道
如何根据标记位置计算球的旋转角度。
如图所示,当标记位于中间时,两个角度都应为 0 度。如图所示,当标记在左边缘只有一半可见时,水平角应为 -90 度。我知道从 2D 图像计算角度是非线性的,在边缘附近类似的像素运动意味着旋转变化比中间更大,但我就是想不出公式。
绕垂直轴旋转:
Phi = ArcSin((Marker.X - Center.X) / Radius)
一般来说,如果你在半径为1的球形机械手的前表面抓取二维坐标(x0,y0)的初始点并将其拖动到终点(x1,y1),那么你旋转方向向量
d0 = (x0, y0, Sqrt(1 - x0^2 - y0^2))
to
d1 = (x1, y1, Sqrt(1 - x1^2 - y1^2))
如何处理这些向量?我取决于你要使用什么方法进行轮换
我正在使用相机在蓝色球上追踪一个黑色标记,如下图所示。
我可以可靠地检测球图像顶部的标记位置,但需要知道 如何根据标记位置计算球的旋转角度。
如图所示,当标记位于中间时,两个角度都应为 0 度。如图所示,当标记在左边缘只有一半可见时,水平角应为 -90 度。我知道从 2D 图像计算角度是非线性的,在边缘附近类似的像素运动意味着旋转变化比中间更大,但我就是想不出公式。
绕垂直轴旋转:
Phi = ArcSin((Marker.X - Center.X) / Radius)
一般来说,如果你在半径为1的球形机械手的前表面抓取二维坐标(x0,y0)的初始点并将其拖动到终点(x1,y1),那么你旋转方向向量
d0 = (x0, y0, Sqrt(1 - x0^2 - y0^2))
to
d1 = (x1, y1, Sqrt(1 - x1^2 - y1^2))
如何处理这些向量?我取决于你要使用什么方法进行轮换