【计算机视觉】中值滤波

中值滤波

  • 什么是中值
  • 中值滤波
  • 邻域的选择与效果
  • 代码

什么是中值

中值又称为中位数,是指将数组中的所有值按照从小到大顺序排列起来,形成一个新的从大到小排列的数组。然后我们将位于数列中间位置的值称为中位数中值

e . g . e.g. e.g. [5,2,3,2,4,1,6] 这七个元素中,按照从大到小排列为:[1,2,2,3,4,5,6],其中间值为3,所以其中值的结果为3。


中值滤波

中值滤波主要过滤图像中的胡椒噪声以及盐粒噪声
胡椒噪声,指的是图像中像素值为0的小黑点,像胡椒面一样洒在图像上;
盐粒噪声,则与胡椒噪声相反,指的是图像中像素值为255的小白点,像盐粒一样洒在图像上。
椒盐噪声,椒盐噪声为以上两种噪声的随机混合,即图片中存在值为0的小黑点噪声,又存在值为255的小白点噪声。

而中值滤波的优势在于可以过滤偏大或偏小的数据。所以如果矩阵中存在极端变量值,即0或255,用中值滤波一般可以达到滤波效果。

e . g . e.g. e.g.
下图中第一张为盐粒噪声,第二张为胡椒杂声,第三张为椒盐噪声。
【计算机视觉】中值滤波_第1张图片
针对以上三种噪声,我们的选择是采用中值滤波的方案,中值滤波将每一像素点的灰度值设置为该点某邻域窗口内的所有像素点灰度值的中值。邻域的大小通过k值自己设定。下面将介绍这个k值对噪声处理的影响。


邻域的选择与效果

中值滤波有一个参数,即选择中值卷积核的大小,我们一般的选择为:k=3,5或者7。
我们将上述三张图分别做三种卷积核的效果:

原始图片来源于网络,若侵权请联系删除更改
【计算机视觉】中值滤波_第2张图片
原始图片来源于网络,若侵权请联系删除更改

原始图片来源于网络,若侵权请联系删除更改
【计算机视觉】中值滤波_第3张图片

通过上述三张图片的对比,可以发现当k=3时,相比于5和7可能会发生噪声清理不完全的情况,而当k=7可以明显的发现,相较于5和3更为模糊。所以图片在做消噪的过程中,会伴随着清晰度的损失。


代码

# 中值滤波
import cv2

img = cv2.imread('./media_filter.png')
# 选择中值滤波核的大小,3、5、7
dst = cv2.medianBlur(img,5)

cv2.imshow('dst', dst)
cv2.waitKey(0)

2022.11.4 理工大学机房

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