Skip to content
Snippets Groups Projects

RoiSet facilitates object detection models

Merged Christopher Randolph Rhodes requested to merge dev_obj_det into staging
2 files
+ 15
0
Compare changes
  • Side-by-side
  • Inline
Files
2
@@ -128,6 +128,8 @@ def filter_df_overlap_bbox(df1: pd.DataFrame, df2: pd.DataFrame = None) -> pd.Da
:param df1: DataFrame with potentially overlapping bounding boxes
:param df2: (optional) second DataFrame
:return DataFrame describing subset of overlapping ROIs
bbox_overlaps_with: index of ROI that overlaps
bbox_intersec: pixel area of intersecting region
"""
def _compare(r0, r1):
@@ -136,14 +138,21 @@ def filter_df_overlap_bbox(df1: pd.DataFrame, df2: pd.DataFrame = None) -> pd.Da
olz = (r0.zi == r1.zi)
return olx and oly and olz
def _intersec(r0, r1):
return (r0.x1 - r1.x0) * (r0.y1 - r1.y0)
first = []
second = []
intersec = []
if df2 is not None:
for pair in itertools.product(df1.index, df2.index):
if _compare(df1.iloc[pair[0]], df2.iloc[pair[1]]):
first.append(pair[0])
second.append(pair[1])
intersec.append(
_intersec(df1.iloc[pair[0]], df2.iloc[pair[1]])
)
else:
for pair in itertools.combinations(df1.index, 2):
if _compare(df1.iloc[pair[0]], df1.iloc[pair[1]]):
@@ -151,9 +160,13 @@ def filter_df_overlap_bbox(df1: pd.DataFrame, df2: pd.DataFrame = None) -> pd.Da
second.append(pair[1])
first.append(pair[1])
second.append(pair[0])
isc = _intersec(df1.iloc[pair[0]], df1.iloc[pair[1]])
intersec.append(isc)
intersec.append(isc)
sdf = df1.iloc[first]
sdf.loc[:, 'bbox_overlaps_with'] = second
sdf.loc[:, 'bbox_intersec'] = intersec
return sdf
# TODO: option to quantify overlap e.g. IOU
Loading