File size: 1,784 Bytes
6163604
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# Author: Parag Mali
# This file contains many common operations on the bounding boxes like finding intersection
from collections import OrderedDict
from . import feature_extractor

def check_inside(rectA, rectB):

    # returns True if A is inside B
    if rectA[0] >= rectB[0] and\
       rectA[1] >= rectB[1] and\
       rectA[2] <= rectB[2] and\
       rectA[3] <= rectB[3]:

       return True

    return False

# check if two rectangles intersect
def intersects(first, other):
    return not (first[2] < other[0] or
                first[0] > other[2] or
                first[1] > other[3] or
                first[3] < other[1])

def find_intersecting_boxes(math_regions, sorted=True):
    # specific for fusion algo
    # returns indices of intersecting math region for each math region
    inter_map = {}

    for i in range(len(math_regions)):
        inter_map[i] = []

    for i in range(len(math_regions)):
        for j in range(len(math_regions[i+1:])):
            if intersects(math_regions[i], math_regions[i+1+j]):
                inter_map[i].append(i+1+j)
                #inter_map[i+1+j].append(i)

    inter_map = OrderedDict(inter_map)

    return inter_map

def merge(box1, box2):

    final_box = [0,0,0,0]
    final_box[0] = min(box1[0], box2[0])  # left
    final_box[1] = min(box1[1], box2[1])  # top
    final_box[2] = max(box1[2], box2[2])  # left + width
    final_box[3] = max(box1[3], box2[3])  # top + height

    return final_box


if __name__ == '__main__':
    box1 = [849.00,3797.00,1403.00,3890.00]
    box2 = [1169.00,3804.00,1392.00,3886.00]

    print(intersects(box1, box2))
    print(gtdb.feature_extractor.inclusion(box1, box2))
    print(gtdb.feature_extractor.inclusion(box2, box1))
    print(gtdb.feature_extractor.iou(box2, box1))