Last commit not found
""" | |
Author: Roman Solovyev, IPPM RAS | |
URL: https://github.com/ZFTurbo | |
""" | |
import numpy as np | |
def compute_overlap(boxes, query_boxes): | |
""" | |
Args | |
a: (N, 4) ndarray of float | |
b: (K, 4) ndarray of float | |
Returns | |
overlaps: (N, K) ndarray of overlap between boxes and query_boxes | |
""" | |
N = boxes.shape[0] | |
K = query_boxes.shape[0] | |
overlaps = np.zeros((N, K), dtype=np.float64) | |
for k in range(K): | |
box_area = ( | |
(query_boxes[k, 2] - query_boxes[k, 0]) * | |
(query_boxes[k, 3] - query_boxes[k, 1]) | |
) | |
for n in range(N): | |
iw = ( | |
min(boxes[n, 2], query_boxes[k, 2]) - | |
max(boxes[n, 0], query_boxes[k, 0]) | |
) | |
if iw > 0: | |
ih = ( | |
min(boxes[n, 3], query_boxes[k, 3]) - | |
max(boxes[n, 1], query_boxes[k, 1]) | |
) | |
if ih > 0: | |
ua = np.float64( | |
(boxes[n, 2] - boxes[n, 0]) * | |
(boxes[n, 3] - boxes[n, 1]) + | |
box_area - iw * ih | |
) | |
overlaps[n, k] = iw * ih / ua | |
return overlaps | |