图像平滑(滤波)


滤波理论

图像滤波,即在尽量保留图像细节特征的条件下 对目标图像的噪声 进行抑制。
是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到 后续图像处理 和 分析的有效性和可靠性。

消除图像中的噪声成分叫作图像的平滑化或滤波操作。信号或图像的能量大部分集中在幅度谱的低频和中频段是很常见的,而在较高频段,感兴趣的信息经常被噪声淹没。因此一个能降低高频成分幅度的滤波器就能够减弱噪声的影响。

目的

  1. 消除图像中混入的噪声;
  2. 为图像识别抽取出图像特征。

要求

  1. 不能损坏图像轮廓及边缘;
  2. 图像视觉效果应当更好。

一、均值滤波

均值滤波是平均卷积操作

比如九个格子,将中间的格子(第五个)的值,作为原来的平均数;

blur = cv2.blur(img, (3,3))  # 每 3x3 做一个操作;即 核 为 3x3
cv_show(blur)

二、方框滤波

基本和均值一样,可以选择归一化,容易越界
中间参数基本都是用 -1;
如果不使用 normalize,可能会越界;所有越界值,如果大于 255,就取 255;
normalize 指定为 True,代表做归一化,和均值滤波一样;


box = cv2.boxFilter(img, -1, (3,3), normalize=False)
# cv_show(box)
plt.imshow(box)
 
box2 = cv2.boxFilter(img, -1, (3,3), normalize=False)
# cv_show(box2)
plt.imshow(box2)

三、高斯滤波

高斯模糊的卷积核里的数值,是满足高斯分布的,相当于更重视中心的(距离近的)。
离得近的权重高,远的权重低。

aussian = cv2.GaussianBlur(img, (3,3), 1)

# cv_show(aussian)

plt.imshow(aussian)

# 噪音点没有前面的严重

四、中值滤波

相当于用中值代替

median = cv2.medianBlur(img, 5)
# cv_show(median)

plt.imshow(median)
# 展示所有
res = np.hstack((blur, aussian, median))
cv_show(res)
posted @ 2021-02-04 10:56  月思  阅读(393)  评论(0编辑  收藏  举报