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

Обнаружение краёв (1)

Фильтры можно также использовать как «детекторы». Если часть изображения соответствует шаблону весов, возвращаемое значение будет очень высоким (или очень низким).

При обнаружении краёв таким шаблоном служит изменение интенсивности вдоль некоторой плоскости. Фильтр для обнаружения горизонтальных краёв может выглядеть так:

weights = [[+1, +1, +1],
           [ 0,  0,  0],
           [-1, -1, -1]]

В этом упражнении создайте детектор вертикальных краёв и проверьте, насколько хорошо он работает на рентгеновском снимке руки (im).

Это упражнение является частью курса

Анализ биомедицинских изображений на Python

Посмотреть курс

Инструкции к упражнению

  • Создайте массив весов фильтра размером 3x3, который обнаруживает изменение интенсивности слева направо. Используйте только значения 1, 0 и -1.
  • Выполните свёртку im с детектором краёв.
  • Постройте график вертикальных краёв с цветовой картой seismic. Используйте vmin=-150 и vmax=150 для настройки масштаба цветовой карты.
  • Добавьте цветовую шкалу и отобразите результаты.

Интерактивное практическое упражнение

Попробуйте выполнить это упражнение, дополнив этот пример кода.

# Set weights to detect vertical edges
weights = [[____], [____], [____]]

# Convolve "im" with filter weights
edges = ____

# Draw the image in color
plt.imshow(____, ____, vmin=-150, vmax=150)
____
format_and_render_plot()
Редактировать и запускать код