答案 0 :(得分:1)
考虑以下未旋转的矩形:
A -------- B
| |
D -------- C
如何定义边界框有两种选择。之一:
可以从给定的w_b
轻松计算边界框的宽度和高度(让我们称之为h_b
和R
)。
在下文中,我假设矩形的中心位于原点。这使得计算更容易遵循。该中心可能会在之后合并。
给定未旋转矩形的宽度w
和高度h
,位置为:
A = (-w/2, -h/2)
B = ( w/2, -h/2)
C = ( w/2, h/2)
D = (-w/2, h/2)
使用角度A
围绕原点旋转angle
,我们得到A'
:
A'.x = -w/2 * cos angle - h/2 * sin angle
A'.y = w/2 * sin angle - h/2 * cos angle
可以计算剩余点的类似方程。在下文中,我将重点介绍边界框定义的第一个选项(第二个选项类似,我留给您)。
假设边界框的宽度由A
和C
定义,我们得到:
w_b = | C'.x - A'.x |
然后:
w_b = | w * cos angle + h * sin angle |
类似:
h_b = | w * sin angle + h * cos angle |
除了w
和h
之外的所有变量都是已知的。因此,您可以求解线性方程组来得到它们。然后,使用这些值计算未旋转的点,然后计算旋转的点。
在计算案例的解决方案后,您需要检查假设是否仍然有效。即如果边界框实际上由您假设的角定义。否则,这种情况没有解决方案。
请注意,如果angle
为45°,则LSE变得不足,因为正弦和余弦相等。因此,您可以获得一个额外的自由度来选择w
和h
。