边缘检测(2)
可以在多个轴向上执行边缘检测,然后合成为单一的边缘值。对于 2D 图像,水平与垂直的"边缘图"可以用勾股定理合并:
$$z = \sqrt{x^2 + y^2}$$
一种常见的边缘检测器是 Sobel 滤波器。Sobel 滤波器会为检测器中心像素赋予更大的权重:
weights = [[ 1, 2, 1],
[ 0, 0, 0],
[-1, -2, -1]]
在本练习中,请在之前的检测结果基础上改进,通过合并两幅经过 Sobel 滤波的图像,生成一个复合边缘图。
本练习是课程的一部分
Python 中的生物医学图像分析
练习说明
- 在第 1 轴和第 2 轴上对
im应用ndi.sobel()。 - 使用勾股定理计算整体的边缘幅值。请使用
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()