У меня есть набор изображений бинарной маски неправильной формы, и я хочу измерить максимальную толщину вдоль средней оси, а также хочу определить точное положение этой максимальной толщины.
Я попробовал функцию medial_axis в scikit-image и успешно получил нужную медиальную ось.
from skimage.morphology import medial_axis
from scipy import ndimage
index = random.randint(0,pred_imgs.shape[0])
print(index)
mask = pred_imgs[index]
mask=ndimage.binary_fill_holes(mask).astype(int)
skel, distance = medial_axis(mask, return_distance=True)
dist_on_skel = distance * skel
fig, axes = plt.subplots(1, 2, figsize=(8, 8), sharex=True, sharey=True, dpi = 200)
ax = axes.ravel()
ax[0].imshow(mask, cmap=plt.cm.gray, interpolation='nearest')
ax[0].set_title('original')
ax[1].imshow(dist_on_skel, cmap='magma', interpolation='nearest')
ax[1].contour(mask, [0.5], colors='w')
ax[1].set_title('medial_axis')
Для следующего шага я хочу измерить толщину вдоль оси, как красные и синие линии на рисунке ниже (эти линии перпендикулярны оси). Кроме того, я хочу знать положение максимальной толщины, которая является начальной и конечной точкой красной линии.
Как я могу сделать это в Python? Большое спасибо!