Обнаружение границ (2)
Обнаружение границ можно выполнять по нескольким осям, а затем объединять результаты в единое значение. Для двумерных изображений горизонтальную и вертикальную «карты границ» можно объединить с помощью теоремы Пифагора:
$$z = \sqrt{x^2 + y^2}$$
Одним из популярных детекторов границ является фильтр Собеля. Этот фильтр придаёт дополнительный вес центральным пикселям детектора:
weights = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
В этом упражнении улучшите результаты предыдущего обнаружения, объединив результаты двух изображений, обработанных фильтром Собеля, в составную карту границ.
Это упражнение является частью курса
Анализ биомедицинских изображений на Python
Инструкции к упражнению
- Примените
ndi.sobel()кimвдоль первой и второй осей. - Вычислите общую величину границ с помощью теоремы Пифагора. Используйте
np.sqrt()иnp.square(). - Отобразите изображение с величинами границ. Используйте цветовую карту оттенков серого и установите
vmaxравным75.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Apply Sobel filter along both axes
sobel_ax0 = ndi.sobel(____, axis=____)
sobel_ax1 = ____
# Calculate edge magnitude
edges = ____
# Plot edge magnitude
plt.imshow(____, ____, ____)
format_and_render_plot()