Detekce hran (2)
Detekci hran lze provádět podél více os a výsledky pak sloučit do jediné hodnoty. U 2D obrázků lze horizontální a vertikální „mapy hran" zkombinovat pomocí Pythagorovy věty:
$$z = \sqrt{x^2 + y^2}$$
Jedním z oblíbených detektorů hran je Sobelův filtr. Ten přikládá větší váhu středovým pixelům detektoru:
weights = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
V tomto cvičení vylepšíš předchozí detekci hran tak, že sloučíš výsledky dvou Sobelovým filtrem zpracovaných obrázků do jedné výsledné mapy hran.
Toto cvičení je součástí kurzu
Biomedical Image Analysis in Python
Pokyny k cvičení
- Aplikuj
ndi.sobel()naimpodél první a druhé osy. - Vypočítej celkovou intenzitu hran pomocí Pythagorovy věty. Použij
np.sqrt()anp.square(). - Zobraz obrázek s intenzitami hran. Použij škálu šedé a nastav
vmaxna75.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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()