中值滤波opencv-python

中值滤波-cv.medianBlur()函数

文章目录

  • 前言
  • 一、中值滤波是什么?
  • 二、cv.medianBlur()函数
    • 1.函数原型
    • 2.与均值滤波的比较
  • 参考


前言

线性滤波是滤波模板内的像素值通过线性组合得到,运算过程包含排序、逻辑计算等等,并且线性滤波是对所有的像素进行线性组合,因此含有噪音的像素也一样会被计算在内,导致线性滤波对于去噪只能是减缓,不能消除,使得噪音仍然存在。而非线性滤波对像素的处理是非线性的,使得滤波的效果可能会更好,非线性滤波通过一定的逻辑判断可以将噪音过滤掉。常见的非线性滤波主要有中值滤波和双边滤波。


一、中值滤波是什么?

中值滤波和均值滤波的算法过程有异曲同工之妙,均值滤波是对滤波模板内的所有像素进行求和再求平均值,再将均值复制给所有的中心像素;中值滤波不同的是对滤波模板内的所有元素进行排序,取排序序列的中值作为中心像素。中值滤波和卷积操作一样,只有一个中心像素,也会和卷积一样进行图像的遍历,遍历的方向也和卷积一致。由于中值滤波不考虑像素差距较大的边缘值,可以比较好的应对斑点噪音和椒盐噪音。

二、cv.medianBlur()函数

1.函数原型

代码如下(示例):

dst = cv.medianBlur(src,
					ksize
					[,dst])
#src:待中值滤波的输入图像
#ksize:中值滤波模板的大小
#dst:输出图像

函数用于图像的中值滤波,并将滤波结果返回
src: 符合ndarray数组对象,例如灰度图 三通道彩色图
ksize:当数值维3或者5时,数据类型可以是uint8,uint16,uint32.但是对于较大的滤波模板,数据类型就只能是uint8.ksize必须相等,且为大于1的奇数.

2.与均值滤波的比较

在细节信息保护上,线性滤波因为本身固有的缺陷会导致细节信息缺失较为严重,因此线性滤波都会造成图像一定程度的模糊,但是在一定条件下,中值滤波对细节信息的保护会比线性滤波中的均值滤波更好,可以一定程度的避免图像模糊。但是随着滤波模板尺寸变大,中值滤波也一样图像模糊,这是因为滤波模板中的所有像素的中值接近于均值时,中值滤波就可以和均值滤波基本一致,但是中值滤波处理图像所需要的时间会比均值滤波处理时间更长。中值滤波处理脉冲干扰信号效果最佳,因为脉冲干扰信号引入的干扰一般都是较大或者较小的噪音。

参考

冯振 陈亚萌 基于python的opencv4详解[M]

你可能感兴趣的:(opencv,python,opencv,python,计算机视觉)