从0到1学Python丨图像平滑方法的两种非线性滤波:中值滤波、双边滤波

1. 图像平滑方法概述

图像平滑是对图像的一种基本处理方法,目的是去除图像中的噪点,同时保留图像中的细节信息。图像平滑方法可以大概分为线性滤波和非线性滤波两种。线性滤波用的较多的是均值滤波、高斯滤波、中值滤波等方法,而非线性滤波则主要有边缘保留滤波,其主要有非常经典的双边滤波。

2. 中值滤波

2.1 原理

中值滤波是非线性滤波中一种常用的方法,其主要思想是用像素点周围所有像素的中值来代替该像素点的灰度值。中值滤波不仅可以消除高斯噪声、椒盐噪声等,还可以保持图像的细节信息,但是对于图像中的较大噪声,其效果可能不太好。

2.2 实现

import cv2

img = cv2.imread('lena.jpg')

median = cv2.medianBlur(img, 5)

以上代码使用cv2库的medianBlur()方法实现了中值滤波。调用函数的第一个参数是输入图像,第二个参数是卷积核大小,这里设置为5x5。

3. 双边滤波

3.1 原理

双边滤波是一种非常有用的边缘保留滤波方法,它不仅可以去噪,还可以保留图像边缘信息。双边滤波主要是在高斯滤波的基础上,增加了一个对像素值相似度的惩罚项。

双边滤波通常在图像降采样、去噪声、图像平滑等方面应用广泛。

3.2 实现

import cv2

img = cv2.imread('lena.jpg')

bilateral = cv2.bilateralFilter(img, 9, 75, 75)

以上代码使用cv2库的bilateralFilter()方法实现了双边滤波。调用函数的第一个参数是输入图像,第二个参数是卷积核大小,这里设置为9x9。第三个参数和第四个参数分别是空间高斯函数标准差和灰度值相似性高斯函数标准差。

总结

本篇文章介绍了图像平滑方法中的两种非线性滤波:中值滤波和双边滤波。中值滤波可以有效去除图像中的高斯噪声和椒盐噪声,并且保留了图像的细节信息。双边滤波则可以更好地保留图像的边缘信息,在降采样、去噪声和图像平滑等方面应用广泛。

后端开发标签