Spaces:
Runtime error
Runtime error
import numpy as np | |
import scipy | |
def detect_boundaries(mask, axis): | |
# calculate the boundaries of the mask | |
#axis = 0 results in x_from, x_to | |
#axis = 1 results in y_from, y_to | |
sum = mask.sum(axis=axis) | |
ind_from = min(sum.nonzero()[0]) | |
ind_to = max(sum.nonzero()[0]) | |
return ind_from, ind_to | |
def area(mask): | |
x1, y1 = detect_boundaries(mask, 0) | |
a = y1 - x1 | |
x2, y2 = detect_boundaries(mask, 1) | |
b = y2 - x2 | |
return (a * b, x1, y1, x2, y2) | |
def calculate_best_angle_from_mask(mask, angles=np.arange(-10,10,0.5)): | |
areas = [] | |
for angle in angles: | |
rotated_mask = scipy.ndimage.rotate(mask, angle, reshape=True, order = 0) # order = 0 is the nearest neighbor interpolation, so the mask is not interpolated | |
this_area = area(rotated_mask) | |
areas.append(this_area[0]) | |
best_angle = angles[np.argmin(areas)] | |
return best_angle | |