НачатьНачать бесплатно

Обнаружение границ (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()
Редактировать и запускать код