Array Utils (empanada.array_utils)#
- empanada.array_utils.box_area(boxes)[source]#
Computes the area/volume of a set of boxes.
- Parameters
boxes – Array of size (n, 4) or (n, 6) where bounding box is defined as (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2).
- Returns
Array of (n,) of each box area/volume.
- Return type
areas
- empanada.array_utils.box_intersection(boxes1, boxes2=None)[source]#
Computes the pairwise intersection area/volume between two arrays of bounding boxes.
- Parameters
boxes1 – Array of size (n, 4) or (n, 6) where bounding box is defined as (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2).
boxes2 – Array of size (m, 4) or (m, 6) where bounding box is defined as (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2). If None, then pairwise intersections are calculated between all pairs of boxes in boxes1. Default, None.
- Returns
Array of (n, m) defining pairwise area/volume intersection between boxes.
- Return type
intersections
- empanada.array_utils.box_iou(boxes1, boxes2=None, return_intersection=False)[source]#
Calculates the pairwise intersection-over-union between sets of boxes.
- Parameters
boxes1 – Array of size (n, 4) or (n, 6) where bounding box is defined as (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2).
boxes2 – Array of size (m, 4) or (m, 6) where bounding box is defined as (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2). If None, then pairwise IoUs are calculated between all pairs of boxes in boxes1. Default, None.
- Returns
Array of (n, m) defining pairwise IoUs between boxes.
- Return type
ious
- empanada.array_utils.crop_and_binarize(mask, box, label)[source]#
Crop a mask from a bounding box and binarize the cropped mask where it’s equal to the given label value.
- Parameters
mask – Array of (h, w) or (d, h, w) defining an image.
box – Bounding box tuple of (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2).
label – Label value to binarize within cropped mask.
- Returns
Boolean array of (h’, w’) or (d’, h’, w’).
- Return type
binary_cropped_mask
- empanada.array_utils.extend_range(range1, range2, num_votes)#
Merges together two overlapping runs and updates the number of votes at each index within the range.
- Parameters
range1 – Tuple or List of (start_i, end_i) as integers.
range2 – Tuple or List of (start_j, end_j) as integers.
num_votes – List of integers. Stores the number of votes at each index in range1.
- Returns
List of (start_i, end_j) as integers. extended_num_votes: Updated list of num_votes to cover the new range.
- Return type
extended_range
- empanada.array_utils.intersection_from_ranges(merged_runs, changes)#
Computes intersection from run ranges.
- Parameters
merged_runs – Integer array of (n, 2) where each element is a range of [start, end].
changes – Boolean array of (n,). True where the current range is from a different source run length encoding than the next range.
- Returns
Integer, number of pixels/voxels that overlap in merged_runs.
- Return type
intersection
- empanada.array_utils.join_ranges(ranges)#
Joins overlapping ranges into non-overlapping ranges.
- Parameters
ranges – np.ndarray of (n, 2) possibly overlapping ranges. Each range is defined by [start_idx, end_idx].
- Returns
np.ndarray of (m, 2) non-overlapping ranges.
- Return type
joined
- empanada.array_utils.mask_ioa(mask1, mask2)[source]#
Calculates IoA score between two binary masks. The object area is derived from mask2.
- Parameters
mask1 – Boolean array of (h, w) or (d, h, w) defining an image.
mask2 – Boolean array of (h, w) or (d, h, w) defining an image.
- Returns
Float IoA score.
- Return type
ioa_score
- empanada.array_utils.mask_iou(mask1, mask2, return_intersection=False)[source]#
Calculates IoU score between two binary masks.
- Parameters
mask1 – Boolean array of (h, w) or (d, h, w) defining an image.
mask2 – Boolean array of (h, w) or (d, h, w) defining an image.
return_intersection – Bool. If True, the intersection is returned.
- Returns
Float IoU score.
- Return type
iou_score
- empanada.array_utils.merge_boxes(box1, box2)[source]#
Merges two bounding boxes into 1 box that encloses both.
- Parameters
box1 – Bounding box tuple of (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2).
box2 – Bounding box tuple of (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2).
- Returns
Bounding box tuple of (y1, x1, y2, x2) or (z1, y1, x1, z2, y2, x2). Defines the box that completely encloses box1 and box2.
- Return type
merged_box
- empanada.array_utils.merge_rles(starts_a, runs_a, starts_b=None, runs_b=None)[source]#
Joins possible overlapping run length encodings into a single set of non-overlapping rles.
If starts_b and runs_b are none, then it’s assumed that starts_a and runs_a contain overlaps indices.
- Parameters
starts_a – Array of (n,) where each element is the starting index of a run.
runs_a – Array of (n,) where each element is the run length of a run.
starts_b – Default None. Array of (m,) starting indices.
runs_b – Default None. Array of (m,) rung lengths.
- Returns
Array of (l,) starting indices merged_runs: Array of (l,) run lengths
- Return type
merged_starts
- empanada.array_utils.put(array, indices, value, axis=0)[source]#
Put values at indices, inplace, along an axis.
- Parameters
array – np.ndarray
indices – List of indices
axis – Int. Axis to put along.
- empanada.array_utils.rle_decode(starts, runs)[source]#
Decodes run length encoding arrays to an array of indices.
- Parameters
starts – Array of (l,) starting indices.
runs – Array of (l,) run lengths.
- Returns
An array of (n,) decoded indices.
- Return type
indices
- empanada.array_utils.rle_encode(indices)[source]#
Run length encodes an array of 1d indices.
- Parameters
indices – An array of (n,) indices to run length encode.
- Returns
Array of (l,) starting indices. runs: Array of (l,) run lengths.
- Return type
starts
- empanada.array_utils.rle_intersection(starts_a, runs_a, starts_b, runs_b)[source]#
Calculates the intersection between two run length encodings.
- Parameters
starts_a – Array of (n,) where each element is the starting index of a run.
runs_a – Array of (n,) where each element is the run length of a run.
starts_b – Array of (m,) where each element is the starting index of a run.
runs_b – Array of (m, ) where each element is the run length of a run.
- Returns
The number of overlapping pixels/voxels between rles.
- Return type
intersection
- empanada.array_utils.rle_ioa(starts_a, runs_a, starts_b, runs_b, return_intersection=False)[source]#
Calculates the IoA between two run length encodings.
- Parameters
starts_a – Array of (n,) where each element is the starting index of a run.
runs_a – Array of (n,) where each element is the run length of a run.
starts_b – Array of (m,) where each element is the starting index of a run.
runs_b – Array of (m, ) where each element is the run length of a run.
return_intersection – Bool. If True, the intersection is returned.
- Returns
Float, the intersection-over-area score. intersection: The number of overlapping pixels/voxels between rles.
- Return type
ioa
- empanada.array_utils.rle_iou(starts_a, runs_a, starts_b, runs_b, return_intersection=False)[source]#
Calculates the IoU between two run length encodings.
- Parameters
starts_a – Array of (n,) where each element is the starting index of a run.
runs_a – Array of (n,) where each element is the run length of a run.
starts_b – Array of (m,) where each element is the starting index of a run.
runs_b – Array of (m, ) where each element is the run length of a run.
return_intersection – Bool. If True, the intersection is returned.
- Returns
Float, the intersection-over-union score. intersection: The number of overlapping pixels/voxels between rles.
- Return type
iou
- empanada.array_utils.rle_to_string(starts, runs)[source]#
Converts run length encoding to a string.
- Parameters
starts – Array of (l,) starting indices.
runs – Array of (l,) run lengths.
- Returns
String representation of a run length encoding. Format is “starts[0] runs[0] starts[1] runs[1] … starts[n] runs[n]”
- Return type
rle_string
- empanada.array_utils.rle_voting(ranges, vote_thr=2)#
Finds overlapping ranges and tabulates the number of votes at each index within those ranges. Outputs ranges in which all indices had vote_thr or more votes.
- Parameters
ranges – np.ndarray of (n, 2) possibly overlapping ranges. Each range is defined by [start_idx, end_idx].
- Returns
np.ndarray of (m, 2) non-overlapping ranges. All indices in the ranges had more than (or equal to) vote_thr votes in ranges.
- Return type
voted_ranges
- empanada.array_utils.split_range_by_votes(running_range, num_votes, vote_thr=2)#
Splits a range into two new ranges based on the votes for each index.
- Parameters
running_range – List of 2. First element is the run start and second element is run end.
num_votes – List of n. Each element is the number of votes for a particular index within the range(start, end).
vote_thr – Minimum number of votes for an index to be kept in the running range.
- Returns
List of new ranges with indices that had too few votes removed.
- Return type
split_voted_ranges
- empanada.array_utils.string_to_rle(encoding)[source]#
Converts run length encoding string to start and run arrays.
- Parameters
rle_string – String representation of a run length encoding. Format is “starts[0] runs[0] starts[1] runs[1] … starts[n] runs[n]”
- Returns
Array of (l,) starting indices. runs: Array of (l,) run lengths.
- Return type
starts