diff --git a/sort.py b/sort.py index bb80efd..6502947 100644 --- a/sort.py +++ b/sort.py @@ -44,20 +44,20 @@ def linear_assignment(cost_matrix): return np.array(list(zip(x, y))) -def iou_batch(bb_test, bb_gt): - """ - From SORT: Computes IUO between two bboxes in the form [l,t,w,h] - """ - bb_gt = np.expand_dims(bb_gt, 0) - bb_test = np.expand_dims(bb_test, 1) - - xx1 = np.maximum(bb_test[..., 0], bb_gt[..., 0]) - yy1 = np.maximum(bb_test[..., 1], bb_gt[..., 1]) - xx2 = np.minimum(bb_test[..., 2], bb_gt[..., 2]) - yy2 = np.minimum(bb_test[..., 3], bb_gt[..., 3]) - w = np.maximum(0., xx2 - xx1) - h = np.maximum(0., yy2 - yy1) - wh = w * h +def iou_batch(bb_test, bb_gt): + """ + From SORT: Computes IUO between two bboxes in the form [x1,y1,x2,y2] + """ + bb_gt = np.expand_dims(bb_gt, 0) + bb_test = np.expand_dims(bb_test, 1) + + xx1 = np.maximum(bb_test[..., 0], bb_gt[..., 0]) + yy1 = np.maximum(bb_test[..., 1], bb_gt[..., 1]) + xx2 = np.minimum(bb_test[..., 2], bb_gt[..., 2]) + yy2 = np.minimum(bb_test[..., 3], bb_gt[..., 3]) + w = np.maximum(0., xx2 - xx1) + h = np.maximum(0., yy2 - yy1) + wh = w * h o = wh / ((bb_test[..., 2] - bb_test[..., 0]) * (bb_test[..., 3] - bb_test[..., 1]) + (bb_gt[..., 2] - bb_gt[..., 0]) * (bb_gt[..., 3] - bb_gt[..., 1]) - wh) return(o)