电子网站建设考试,网站建设和设计,互联网公司的排名,做网站属于什么技术1. 引言
欢迎回来#xff0c;我的图像处理爱好者们#xff01;今天#xff0c;让我们继续研究图像处理领域中的形态学计算。在本篇中#xff0c;我们将重点介绍腐蚀操作的反向效果膨胀操作。
闲话少说#xff0c;我们直接开始吧#xff01;
2. 膨胀操作原理
膨胀操作…1. 引言
欢迎回来我的图像处理爱好者们今天让我们继续研究图像处理领域中的形态学计算。在本篇中我们将重点介绍腐蚀操作的反向效果膨胀操作。
闲话少说我们直接开始吧
2. 膨胀操作原理
膨胀操作为腐蚀操作的作用相反这是图像处理中最常使用的另一种形态学操作它主要通过在图像边界上扩展像素来实现扩宽图像中对象的作用。膨胀操作通过考虑每个像素的邻域并将其值设置为该邻域中所有像素中的最大值来实现的。对于二值图像如果任何相邻像素的值为1则输出像素也被设置为1。
接着让我们通过具体示例来进行讲解首先导入我们今天的图像代码如下
# Define the image
original_image np.array([[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 1, 1, 1, 0, 0],[0, 0, 1, 1, 1, 1, 0, 0],[0, 1, 1, 1, 1, 0, 0, 0],[0, 1, 1, 1, 0, 0, 0, 0],[0, 1, 1, 1, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0],[0, 0, 0, 0, 0, 0, 0, 0]])plt.figure(figsize(10,10))
plt.imshow(original_image, cmapgray, extent[0, 8, 0, 8])
plt.title(Original Image, fontsize20);得到结果如下
3. 定义结构化元素
和上一节腐蚀操作类似我们选择同样的十字架结构化元素模板代码如下
# Define the structuring element
selem_cross np.array([[0,1,0],[1,1,1],[0,1,0]])
plt.figure(figsize(9,9))
plt.imshow(selem_cross, cmapgray)
plt.title(Structuring Element: Cross, fontsize20);得到结果如下
4. 膨胀操作效果
经过上述操作我们定义了需要操作的原始图像和相应的结构化模板元素接着我们使用函数apply_erosion来将上述结构化模板元素作用于相应的图像中进而得到我们膨胀操作的效果代码如下
def apply_erosion(image, selem):# Perform erosion on the given image using the structuring element, selemeroded_image erosion(image, selem)# Display the original and eroded imagesfig, axes plt.subplots(1, 3, figsize(15, 10))ax axes.ravel()ax[0].imshow(selem, cmapgray, extent[0, selem.shape[1], 0, selem.shape[0]])ax[0].set_title(Structuring Element, fontsize20)ax[1].imshow(image, cmapgray, extent[0, image.shape[1], 0, image.shape[0]])ax[1].set_title(Original Image, fontsize20)ax[2].imshow(eroded_image, cmapgray, extent[0, image.shape[1], 0, image.shape[0]])ax[2].set_title(Eroded Image, fontsize20)plt.tight_layout()plt.show()apply_erosion(original_image, selem_cross)最终膨胀操作的效果如下 观察上述输出可以看到经过膨胀操作后的图相比原始图像的扩大版。大家可以通过下列动图进行更加详细的理解样例图如下
5. 其他效果
需要注意的是和腐蚀操作类似膨胀操作中使用的邻域大小或结构元素的选择会对结果产生不同的影响。 这里如果选择使用上一篇节中得正方形作为测试结构元素相应得效果如下
6. 总结
本文重点介绍了和腐蚀操作相反作用得膨胀操作并通过具体例子进行了原理讲解同时给出了相应得代码示例。
您学废了嘛