图像处理技巧:形态学滤波之腐蚀操作

图片[1]-图像处理技巧:形态学滤波之腐蚀操作-山海云端论坛

引言

欢迎回来,图像处理爱好者们!🌟 今天,让我们深入研究图像处理领域中的形态学计算。这些非线性的图像处理技术允许我们操纵图像中对象的形状和结构。在本系列中,我们将依次介绍四种基本的形态学操作:腐蚀、膨胀、开操作和闭操作。

闲话少说,让我们直接开始吧!

腐蚀操作原理

腐蚀是常见的形态学操作之一,它通过从图像边界中去除像素来精细地缩小图像中的对象。具体而言,它通过考虑每个像素的邻域并将其值设置为该邻域中所有像素中的最小值来实现这一点。在二进制图像中,如果任何相邻像素的值为0,则输出像素也设置为0。

接下来是定义结构化元素,对于这个例子,让我们使用十字架作为我们的选择:

<code># Define the structuring element selem_cross = np.array([[0,1,0], [1,1,1], [0,1,0]])</code>

腐蚀操作效果可以通过以下代码进行展示:

<code>def apply_erosion(image, selem): # Perform erosion on the given image using the structuring element, selem eroded_image = erosion(image, selem) # Display the original and eroded images fig, axes = plt.subplots(1, 3, figsize=(15, 10)) ax = axes.ravel() ax[0].imshow(selem, cmap='gray', extent=[0, selem.shape[1], 0, selem.shape[0]]) ax[0].set_title('Structuring Element', fontsize=20) ax[1].imshow(image, cmap='gray', extent=[0, image.shape[1], 0, image.shape[0]]) ax[1].set_title('Original Image', fontsize=20) ax[2].imshow(eroded_image, cmap='gray', extent=[0, image.shape[1], 0, image.shape[0]]) ax[2].set_title('Eroded Image', fontsize=20) plt.tight_layout() plt.show() # Apply erosion on the original image with cross structuring element apply_erosion(original_image, selem_cross)</code>
图片[2]-图像处理技巧:形态学滤波之腐蚀操作-山海云端论坛

观察上述输出,可以看到经过变换后的图对应的是原始图像的图的缩小版,这就是腐蚀操作的效果。大家可以通过下列动图进行更加详细的理解。

需要注意的是,腐蚀操作中使用的邻域大小或结构元素的选择会对结果产生不同的影响。我们可以通过选择不同的结构元素,如正方形、圆盘或自定义形状,以实现基于所需结果的特定腐蚀的效果。

例如,如果我选择使用一个正方形作为我的结构元素:

<code># Define the structuring element selem_square = np.array([[0,0,0,0], [0,1,1,0], [0,1,1,0], [0,0,0,0]]) # Apply erosion on the original image with square structuring element apply_erosion(original_image, selem_square)</code>

总结

腐蚀的主要目的是去除零散的噪点和细线,从而只保留实质性的物体。在我们施加腐蚀操作后,剩余的线条看起来更加细,图像中对象的形状看起来更小。腐蚀通常是对象分割和边界提取等任务中必备的基础操作。

© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容