Применение маски
Маски являются бинарными, однако их можно применять к изображениям, чтобы отфильтровать пиксели, для которых маска равна False.
Функция where() из NumPy — удобный способ применения масок. Она принимает три аргумента:
np.where(condition, x, y)
condition, x и y могут быть как массивами, так и отдельными значениями. Это позволяет сохранять исходные значения пикселей изображения, а маскированным пикселям присваивать значение 0.
Поупражняемся в применении масок: выделим пиксели, соответствующие костной ткани, на рентгеновском снимке кисти (im).
Это упражнение является частью курса
Анализ биомедицинских изображений на Python
Инструкции к упражнению
- Создайте булеву маску костной ткани, выбрав пиксели со значением, большим или равным 145.
- Примените маску к изображению с помощью
np.where(). Пикселям, не попавшим в маску, присвойте значение0. - Постройте гистограмму маскированного изображения. Чтобы выбрать только ненулевые пиксели, используйте следующие аргументы:
min=1,max=255,bins=255. - Отобразите маскированное изображение и гистограмму. Этот шаг уже выполнен за вас.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import SciPy's "ndimage" module
____
# Screen out non-bone pixels from "im"
mask_bone = ____
im_bone = np.where(____, ____, ____)
# Get the histogram of bone intensities
hist = ____
# Plot masked image and histogram
fig, axes = plt.subplots(2,1)
axes[0].imshow(im_bone)
axes[1].plot(hist)
format_and_render_plot()