Виявлення контурів (2)
Виявлення контурів можна виконувати вздовж кількох осей і потім об'єднувати в одне значення контуру. Для 2D-зображень горизонтальну та вертикальну «карту контурів» можна поєднати за теоремою Піфагора:
$$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()