如何计算两个旋转矩形的重叠比?

时间:2014-10-20 07:33:09

标签: opencv geometry

给定两个矩形,我们知道四个角的位置,宽度,高度,角度。 如何计算这两个矩形的重叠比? 你能帮帮我吗?

3 个答案:

答案 0 :(得分:2)

一种方便的方法是使用Sutherland-Hodgman多边形裁剪算法。它的工作原理是将一个多边形与另一个多边形的四条支撑线(半平面)相连。最后得到交叉点多边形(最差的是八边形)并通过polygon area公式找到它的区域。

enter image description here

您可以通过反转原点周围的多边形来简化裁剪,使其中一个变为轴平行。这不会改变这个区域。

请注意,这种方法很容易推广到两个一般的凸多边形,采用O(N.M)运算。 G.T.使用旋转卡尺原理的Toussaint将工作量减少到O(N + M),并且B. Chazelle& D. P. Dobkin表明,在O(Log(N + M))运算中可以检测到非空交点。这表明S-H削波方法可能有一点改进空间,即使N = M = 4是一个很小的问题。

答案 1 :(得分:0)

假设您有矩形A和B,您可以使用该操作:

 intersection_area =  (A & B).area(); 

从这个区域你可以计算出与其中一个矩形相对应的比率。也会有更难的动态方法来做到这一点。

答案 2 :(得分:0)

使用rotateRectangleIntersection函数获取轮廓,并使用contourArea函数获取面积并找到比率

https://docs.opencv.org/3.0-beta/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#rotatedrectangleintersection