Измерьте толщину неправильной формы вдоль средней оси с помощью Python - PullRequest
0 голосов
/ 11 января 2019

У меня есть набор изображений бинарной маски неправильной формы, и я хочу измерить максимальную толщину вдоль средней оси, а также хочу определить точное положение этой максимальной толщины.

Я попробовал функцию 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')

example

Для следующего шага я хочу измерить толщину вдоль оси, как красные и синие линии на рисунке ниже (эти линии перпендикулярны оси). Кроме того, я хочу знать положение максимальной толщины, которая является начальной и конечной точкой красной линии.

Imgur

Как я могу сделать это в Python? Большое спасибо!

...