赞
踩
已知:
现在要计算 IoU = area_X / (area_N + area_M - area_X) ?
两个矩形相交情况,如上图所示,只要矩形框A和B点的坐标,即可求出相交区域的面积,从而求得IoU。
计算思路如下:
以矩形框N为参考矩形,矩形框M如果与N不相交,那么M可能出现在N的上下左右,四种情况,如下图所示:
有两种判断不相交的方法:
def iou(x1,y1, x2, y2, a1, b1, a2, b2):
ax = max(x1, a1) # 相交区域左上角横坐标
ay = max(y1, b1) # 相交区域左上角纵坐标
bx = min(x2, a2) # 相交区域右下角横坐标
by = min(y2, b2) # 相交区域右下角纵坐标
area_N = (x2 - x1) * (y2 - y1)
area_M = (a2 - a1) * (b2 - b1)
w = bx - ax
h = by - ay
if w<=0 or h<=0:
return 0 # 不相交返回0
area_X = w * h
return area_X / (area_N + area_M - area_X)
def iou(x1,y1, x2, y2, a1, b1, a2, b2):
ax = max(x1, a1) # 相交区域左上角横坐标
ay = max(y1, b1) # 相交区域左上角纵坐标
bx = min(x2, a2) # 相交区域右下角横坐标
by = min(y2, b2) # 相交区域右下角纵坐标
area_N = (x2 - x1) * (y2 - y1)
area_M = (a2 - a1) * (b2 - b1)
w = max(0, bx - ax)
h = max(0, by - ay)
area_X = w * h
return area_X / (area_N + area_M - area_X)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。