中值滤波、方框滤波、高斯滤波、均值滤波、膨胀、腐蚀、开运算、闭运算

1.1 常见图像噪声类型
  • 高斯噪声:符合正态分布的随机噪声

  • 椒盐噪声:随机出现的黑白像素点

  • 泊松噪声:光子计数噪声

  • 量化噪声:模拟信号数字化过程中产生

2.1 均值滤波(Averaging Filter)

原理:用邻域像素的平均值替换中心像素值

python 复制代码
blur_3x3 = cv2.blur(noisy_img, (3,3))  # 3×3小窗口

效果分析

  • 窗口越大,去噪效果越强,但图像越模糊

  • 计算速度快,适合实时处理

  • 会模糊边缘和细节

2.2 方框滤波(Box Filter)

原理:均值滤波的通用形式,可选择是否归一化

python 复制代码
# 非归一化方框滤波(像素值可能溢出)
box_nonorm = cv2.boxFilter(noisy_img, -1, (3,3), normalize=False)
# 归一化方框滤波
box_norm = cv2.boxFilter(noisy_img, -1, (3,3), normalize=True)

特殊应用

  • 非归一化滤波可用于局部对比度增强

  • 归一化时与均值滤波效果相同

2.3 高斯滤波(Gaussian Filter)

原理:使用高斯函数作为权重,距离中心越近权重越大

python 复制代码
# 不同标准差的高斯滤波
gauss_small = cv2.GaussianBlur(noisy_img, (5,5), 1)  # 小标准差
gauss_large = cv2.GaussianBlur(noisy_img, (5,5), 3)  # 大标准差

参数选择技巧

  • 标准差σ与窗口大小关系:ksize ≈ (6σ+1)

  • σ越大,平滑效果越强,但计算量也越大

2.4 中值滤波(Median Filter)

原理:用邻域像素的中值替换中心像素值

python 复制代码
# 中值滤波去噪
median_3 = cv2.medianBlur(sp_noisy, 3)
median_5 = cv2.medianBlur(sp_noisy, 5)

适用场景

  • 对椒盐噪声效果显著

  • 能较好保持边缘锐利度

  • 计算复杂度高于线性滤波

1、膨胀:

其原理是:将核在原始图像中进行遍历,然后将原始图像遍历到的像素点的值与自定义卷积核(全为1的二维矩阵)得值进行与运算,像素点与对应核一 一对应进行与,当卷积核对应的元素值只要有一个为1时,设置卷积核中心值的像素点为1,如果全为0,,则其值设置为0.

2、腐蚀:

其原理是:将核在原始图像中进行遍历,然后将原始图像遍历到的像素点的值与自定义卷积核(全为1的二维矩阵)得值进行与运算,像素点与对应核一 一对应进行与,当卷积核对应的元素值均为1时,设置卷积核中心值的像素点为1,否则其值设置为0.

3、开运算原理

1)原理:图像开运算是图像依次经过腐蚀、膨胀处理后的过程。

2)特点:图像被腐蚀后,去除了噪声,但是也压缩了图像;接着对腐蚀过的图像进行膨胀处理,可以去除噪声,并保留原有图像

在OpenCV中,同样提供开运算的库函数,函数原型如下所示

1)、函数原型:result =cv2.morphologyEx(img, cv2.MORPH_OPEN, kernel)

  • img:需要进行开运算处理的图像
  • cv2.MORPH_OPEN:图像进行开运算需要填写的参数(进行开运算时,该参数为固定参数不可改变)
  • kernel:卷积核模板,例如kernel = np.ones((5,5), np.uint8),5x5的卷积核

4、闭运算原理

1)、原理:图像开运算是图像依次经过膨胀、再腐蚀处理后的过程

2)、特点:图像先膨胀,后腐蚀,它有助于关闭前景物体内部的小孔,或物体上的小黑点。

  • 闭运算可以消除图像轮廓内部的噪声

OpenCV中,也提供了图像闭运算的函数,和开运算库函数一样,唯一不同则为闭运算对应自己的参数,函数原型如下:

1)、函数原型:result =cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel)

img:需要进行开运算处理的图像

cv2.MORPH_CLOSE:图像进行闭运算需要填写的参数(进行闭运算时,该参数为固定参数不可改变)

kernel:卷积核模板,例如kernel = np.ones((5,5), np.uint8),5x5的卷积核

相关推荐
shellvon6 小时前
你怎么被识别的?从TLS到Canvas的设备追踪术
后端·算法
薛定谔的算法7 小时前
JavaScript栈的实现与应用:从基础到实战
前端·javascript·算法
羚羊角uou7 小时前
【Linux】匿名管道和进程池
linux·c++·算法
空白到白8 小时前
决策树-面试题
算法·决策树·机器学习
flashlight_hi8 小时前
LeetCode 分类刷题:2563. 统计公平数对的数目
python·算法·leetcode
前端世界8 小时前
HarmonyOS 数据处理性能优化:算法 + 异步 + 分布式实战
算法·性能优化·harmonyos
楼田莉子8 小时前
C++算法专题学习:栈相关的算法
开发语言·c++·算法·leetcode
kyle~8 小时前
排序---冒泡排序(Bubble Sort)
c语言·c++·算法
l1t8 小时前
我改写的二分法XML转CSV文件程序速度追上了张泽鹏先生的
xml·c语言·人工智能·算法·expat