图像数据处理16

四、形态学图像处理

4.1 形态学图像处理基础

这一节主要讲解了数学上的一些概念,比如集合的相关运算、连通、通路、区域等、我在这一节中主要学习的内容是图像处理中的结构元素。

结构元素

结构元素(SE)是一个形状和大小已知的像素点集,它能够用来探测和提取图像中的特定形状以及结构信息,它通常由一个元素取值为0或1的二维矩阵来表示,其中取值为1的元素定义了结构元素的形状和大小,取值为0的元素则不参运算。结构元素在膨胀运算、腐蚀运算、开运算闭运算、击中不击中等运算中都有着重要的作用。

通过Opencv创建结构元素

# 创建一个矩形结构元素  

rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

# 创建一个圆形结构元素  
circleKernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))

# 创建一个椭圆形结构元素

ellipseKernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (7, 3)) 

通过Scikit-image创建结构元素

Square = morphology.square(3) #创建一个3×3的正方形结构元素

Rectangle= morphology.rectangle(3,4) #创建一个3×4的矩形结构元素

格式为morphology.图形英文名称(结构元素尺寸大小)

4.2 腐蚀与膨胀

腐蚀可以简单理解成对削弱前景像素的边界,而膨胀则可理解成增强前景像素的边界(如在二进制图像中,往往白色为前景图像,黑色为背景)

腐蚀可以去除图像上的细小物体、毛刺和小桥等结构。膨胀可将图像中的目标区域扩大,使得原本分离的小区域连接起来,或者填补目标区域内的孔洞。

import cv2
import numpy as np

# 读取图像
image = cv2.imread('1.jpg', 0)  # 0代表以灰度模式读取图像

# 创建矩形结构元素
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

# 腐蚀操作
erosion = cv2.erode(image, kernel, iterations=1)

# 膨胀操作
dilation = cv2.dilate(image, kernel, iterations=1)

# 将所有图像缩小至一半
small_image = cv2.resize(image, (0, 0), fx=0.5, fy=0.5)
small_erosion = cv2.resize(erosion, (0, 0), fx=0.5, fy=0.5)
small_dilation = cv2.resize(dilation, (0, 0), fx=0.5, fy=0.5)

# 在同一个窗口中展示结果
combined_image = np.hstack((small_image, small_erosion, small_dilation))
cv2.imshow('Combined yuantu fushi and pengzhang', combined_image)

cv2.waitKey(0)
cv2.destroyAllWindows()

第一幅图片为原图,第二幅图片为腐蚀操作后的图像,第三幅为膨胀操作后的图像。

注,本人为在校学生,博客是边学边写的,主要是为了巩固知识,如有错误请积极指正。

本文的内容主要基于我对张运楚教授编著的《数字图像处理》一书的学习和理解。这本书深入浅出地介绍了数字图像处理的基本理论以及经典算法等,并且提供了丰富的示例代码和实际用例,极大地帮助了我学习图像处理知识。在此,我推荐大家阅读这本书,更加深入的学习有关图像处理的知识。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值