一、依赖库
pip install opencv-python
二、滤波去噪说明
中值滤波和高斯滤波各有优缺点,哪种滤波方法更好取决于具体的应用场景和图像中的噪声类型。中值滤波对于去除椒盐噪声(即黑白点噪声)特别有效,因为它通过取邻域像素的中值来替换中心像素的值,从而消除孤立的噪声点。 中值滤波还能较好地保留图像的边缘信息。 然而,中值滤波可能会导致图像细节的模糊,特别是在滤除噪声的同时也会模糊一些细微的图像特征。 此外,对于大尺寸图像,中值滤波的处理速度可能会较慢,因为需要对较大的邻域进行排序操作。高斯滤波则适用于平滑图像并去除高斯噪声。它通过计算像素周围邻域的加权平均值来平滑图像,其中权重由高斯函数确定。 高斯滤波可以有效地平滑图像并去除高频噪声,同时较好地保留图像的边缘和细节。然而,高斯滤波也可能导致图像的边缘和细节变得模糊,影响图像的清晰度。 此外,高斯函数的标准差需要事先确定,这可能需要一些经验或实验来确定最佳值。因此,在选择中值滤波还是高斯滤波时,需要根据具体的图像特点和去噪需求来决定。 如果图像中主要存在椒盐噪声,那么中值滤波可能是一个更好的选择;如果图像中主要存在高斯噪声或需要进行图像平滑处理,那么高斯滤波可能更为合适。
三、滤波去噪实现
import osimport cv2# 设置输入和输出文件夹路径
input_folder = "imgs3/" # 替换为输入文件夹的实际路径
output_folder = "imgs4/" # 替换为输出文件夹的实际路径# 确保输出文件夹存在
if not os.path.exists(output_folder):os.makedirs(output_folder)# 遍历输入文件夹中的所有图像文件
for filename in os.listdir(input_folder):if filename.endswith(".jpg") or filename.endswith(".png"): # 根据需要添加其他图像格式# 读取图像image_path = os.path.join(input_folder, filename)image = cv2.imread(image_path)# 应用中值滤波进行去噪# 你可以根据需要更改核大小,这里设置为5# denoised_image = cv2.medianBlur(image, 5)# 应用高斯滤波进行去噪# 你可以根据需要更改核大小和标准差# cv2.GaussianBlur(image, (5, 5), 0)函数被用来对图像进行高斯滤波。这里的(5, 5)是高斯核的大小,# 您可以根据需要调整这个值。第三个参数0表示让OpenCV自动计算高斯核的标准差(sigmaX和sigmaY),您也可以手动设置这个值。denoised_image = cv2.GaussianBlur(image, (5, 5), 0)# 保存去噪后的图像到输出文件夹output_path = os.path.join(output_folder, filename)cv2.imwrite(output_path, denoised_image)print(f"Processed and saved {filename} to {output_path}")