天天看點

IOU的計算

IOU:在圖像檢測中經常用來篩選候選框。具體為兩個候選框的交集除以兩個候選框的補集。

# -*- coding: utf-8 -*-
def IOU(Reframe,GTframe):
    """
    自定義函數,計算兩矩形 IOU,傳入為均為矩形對角線,(x,y)  坐标。·
    """
    x1 = Reframe[0]
    y1 = Reframe[1]
    width1 = Reframe[2]-Reframe[0]
    height1 = Reframe[3]-Reframe[1]

    x2 = GTframe[0]
    y2 = GTframe[1]
    width2 = GTframe[2]-GTframe[0]
    height2 = GTframe[3]-GTframe[1]

    endx = max(x1+width1,x2+width2)
    startx = min(x1,x2)
    width = width1+width2-(endx-startx)  #相交方框的寬

    endy = max(y1+height1,y2+height2)
    starty = min(y1,y2)
    height = height1+height2-(endy-starty)#相交方框的高

    if width <=0 or height <= 0:
        ratio = 0 # 重疊率為 0 
    else:
        Area = width*height; # 兩矩形相交面積
        Area1 = width1*height1 
        Area2 = width2*height2
        ratio = Area*1./(Area1+Area2-Area)
    # return IOU
    return ratio,Reframe,GTframe
           

繼續閱讀