Detectar bordas (2)
A detecção de bordas pode ser feita ao longo de vários eixos e, depois, combinada em um único valor de borda. Para imagens 2D, os "mapas de bordas" horizontal e vertical podem ser combinados usando o teorema de Pitágoras:
$$z = \sqrt{x^2 + y^2}$$
Um detector de bordas popular é o filtro de Sobel. O filtro de Sobel dá peso extra aos pixels centrais do detector:
pesos = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
Neste exercício, melhore sua detecção anterior mesclando os resultados de duas imagens filtradas por Sobel em um mapa de bordas composto.
Este exercicio faz parte do curso
Análise de Imagens Biomédicas em Python
Instruções do exercicio
- Aplique
ndi.sobel()aimao longo do primeiro e do segundo eixos. - Calcule a magnitude total da borda usando o teorema de Pitágoras. Use
np.sqrt()enp.square(). - Exiba a imagem de magnitude. Use um mapa de cores em tons de cinza e defina
vmaxcomo75.
exercicio interativo prático
Tente este exercicio completando este código de exemplo.
# 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()