目标检测-两个矩形的交并比(IOU)

我们先来看下IOU的公式:

现在我们知道矩形T的左下角坐标(X0,Y0),右上角坐标(X1,Y1); 
矩形G的左下角坐标(A0,B0),右上角坐标(A1,B1)

这里我们可以看到 和 在确定坐标而不确定两个矩形是否相交的情况下,为已知的常量.

所以,我们只需要求解就行

这里我们先来看一下水平方向上的情况:

 从上述的三种情况中我们可以看出: 
当有重叠或者是内含的情况时,我们可以通过

  

计算得到重叠部分的长度.当满足第一种情况时,我们发现W<=0W<=0 
竖直方向上的处理方式类似.得到HH

所以处理成代码的时候可得:

#RT:RightTop
#LB:LeftBottom
def IOU(rectangle A, rectangleB):
    W = min(A.RT.x, B.RT.x) - max(A.LB.x, B.LB.x)
    H = min(A.RT.y, B.RT.y) - max(A.LB.y, B.LB.y)
    if W <= 0 or H <= 0:
        return 0;
    SA = (A.RT.x - A.LB.x) * (A.RT.y - A.LB.y)
    SB = (B.RT.x - B.LB.x) * (B.RT.y - B.LB.y)
    cross = W * H
    return cross/(SA + SB - cross)

参考:https://blog.csdn.net/qq_30490125/article/details/52887389

猜你喜欢

转载自blog.csdn.net/ytusdc/article/details/88721598