Comece agoraComece grátis

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

Ver curso

Instruções do exercicio

  • Aplique ndi.sobel() a im ao longo do primeiro e do segundo eixos.
  • Calcule a magnitude total da borda usando o teorema de Pitágoras. Use np.sqrt() e np.square().
  • Exiba a imagem de magnitude. Use um mapa de cores em tons de cinza e defina vmax como 75.

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()
Editar e Executar Código