Matlab图像中加入脉冲噪声、高斯噪声并用均值滤波、中值滤波进行滤波处理

一、脉冲噪声和高斯噪声简介

脉冲噪声和高斯噪声是两种常见的信号干扰类型,它们的特性和影响各不相同:

脉冲噪声(Impulse Noise):

  • 在图像中,脉冲噪声表现为随机出现的亮点或暗点,这些噪声点通常与周围像素明显不同。脉冲噪声也被称为椒盐噪声,因其外观类似于图像上撒了黑椒和食盐。

  • 这种噪声可能由图像传感器、传输错误或其他电子干扰引起。

  • 处理脉冲噪声通常使用中值滤波器等非线性滤波技术,这些技术能有效去除这些孤立的噪声点而不过度模糊图像。
    高斯噪声(Gaussian Noise)

  • 高斯噪声在图像中表现为在整个图像上加上了一层随机的灰度变化,使图像看起来更"粗糙"。

  • 这种噪声的幅度在像素间呈正态分布,影响是全局性和一致的。

  • 高斯噪声的来源可能包括传感器噪声、环境光的波动或电路的热噪声。

  • 减少高斯噪声通常采用高斯滤波、双边滤波等线性或非线性滤波技术。

二、均值滤波和中值滤波简介

均值滤波(Mean Filtering)

  • 原理:均值滤波是一种线性滤波技术,通过对图像中每个像素的邻域内的像素值求平均,来计算该像素的新值。

  • 效果:这种滤波器可以有效地去除图像中的随机噪声,但缺点是它也会使图像边缘模糊,因为它不区分边缘和噪声,统一进行平均处理。

  • 应用:适用于去除随机噪声,尤其是高斯噪声,但不适合处理具有锐利边缘或细节要求较高的图像。
    中值滤波(Median Filtering)

  • 原理:中值滤波是一种非线性滤波技术,它通过将图像中每个像素的邻域内的像素值进行排序,并取中间值作为该像素的新值。

  • 效果:中值滤波特别有效于去除脉冲噪声(如椒盐噪声),同时能较好地保持图像边缘的清晰度。这是因为中值滤波只是替换极端值,而不改变邻域内其他像素的值。

  • 应用:广泛用于去除椒盐噪声和其他类型的极端值噪声。由于其保边缘的特性,中值滤波在医学图像处理和实时视频处理中非常有用。

三、代码

Matlab 复制代码
img = imread("E:/桌面/图.jpg"); % 读取图像
img_gray = rgb2gray(img); % 转换为灰度图像
% 1. 添加脉冲噪声并使用均值滤波进行处理
img_noise = imnoise(img_gray, 'salt & pepper', 0.05); % 添加脉冲噪声
img_denoised_mean = filter2(fspecial('average', 3), img_noise); % 使用均值滤波进行去噪处理

figure;
subplot(2,2,1), imshow(img), title('原彩色图');
subplot(2,2,2), imshow(img_gray), title('灰度图');
subplot(2,2,3), imshow(img_noise), title('加入脉冲噪声的图像');
subplot(2,2,4), imshow(uint8(img_denoised_mean)), title('均值滤波去噪后的图像');

% 2. 添加脉冲噪声并使用中值滤波进行处理
img_noise = imnoise(img_gray, 'salt & pepper', 0.05); % 添加脉冲噪声
img_denoised_median = medfilt2(img_noise); % 使用中值滤波进行去噪处理

figure;
subplot(2,2,1), imshow(img), title('原彩色图');
subplot(2,2,2), imshow(img_gray), title('灰度图');
subplot(2,2,3), imshow(img_noise), title('加入脉冲噪声的图像');
subplot(2,2,4), imshow(img_denoised_median), title('中值滤波去噪后的图像');

% 3. 添加高斯噪声并使用均值滤波进行处理
img_noise = imnoise(img_gray, 'gaussian', 0, 0.02); % 添加高斯噪声
img_denoised_mean = filter2(fspecial('average', 3), img_noise); % 使用均值滤波进行去噪处理

figure;
subplot(2,2,1), imshow(img), title('原彩色图');
subplot(2,2,2), imshow(img_gray), title('灰度图');
subplot(2,2,3), imshow(img_noise), title('加入高斯噪声的图像');
subplot(2,2,4), imshow(uint8(img_denoised_mean)), title('均值滤波去噪后的图像');

% 4. 添加高斯噪声并使用中值滤波进行处理
img_noise = imnoise(img_gray, 'gaussian', 0, 0.02); % 添加高斯噪声
img_denoised_median = medfilt2(img_noise); % 使用中值滤波进行去噪处理

figure;
subplot(2,2,1), imshow(img), title('原彩色图');
subplot(2,2,2), imshow(img_gray), title('灰度图');
subplot(2,2,3), imshow(img_noise), title('加入高斯噪声的图像');
subplot(2,2,4), imshow(img_denoised_median), title('中值滤波去噪后的图像');

四、效果图

1.脉冲噪声+均值滤波

在原始灰度图像上添加了脉冲噪声,使得图像中出现了黑白相间的明显点状噪声。使用均值滤波处理后,图像的噪声显著减少,但在去噪的同时,图像细节有所损失,导致图像变得模糊。

2.脉冲噪声+中值滤波

在原始灰度图像上添加了脉冲噪声,使得图像中出现了黑白相间的明显点状噪声。使用中值滤波后的图像,相比于均值滤波,在去除噪声的同时保留了图像的边缘和细节信息,因此得到的图像更清晰,噪声点也被有效地去除。

3.高斯噪声+均值滤波

在原始灰度图像上添加了高斯噪声,图像整体变得模糊,但不像脉冲噪声那样明显。使用均值滤波处理后,能够减少高斯噪声的影响,但在去噪的同时,图像细节有所损失,导致图像变得模糊。

4.高斯噪声+中值滤波

在原始灰度图像上添加了高斯噪声,图像整体变得模糊,但不像脉冲噪声那样明显。使用中值滤波后的图像,相比于均值滤波,在去除噪声的同时保留了图像的边缘和细节信息,因此得到的图像更清晰,噪声点也被有效地去除。

注:有任何问题欢迎评论区交流讨论或者私信!

相关推荐
HYHYLLLL2 小时前
【2026年】多模态AI在水务场景的应用
人工智能·深度学习·计算机视觉·水务
欧特克_Glodon1 天前
OpenCV计算机视觉开发入门与实践<二十七>:图像分割概述
c++·人工智能·opencv·计算机视觉
hahaha60162 天前
HLS高层次综合设计技巧--C++类和模板
图像处理·人工智能·算法·计算机视觉
qq_25294131682 天前
航拍羊群目标检测数据集 | 航拍羊群 智慧畜牧业 动物检测 无人机巡检5010期
人工智能·yolo·目标检测·计算机视觉·无人机·羊群识别·羊群
yyk333242 天前
OpenCV中运动目标检测
opencv·目标检测·目标跟踪
AndrewHZ2 天前
图像处理入门021 | 直方图:图像像素分布的可视化 —— cv2.calcHist 与 4 类典型分布
图像处理·opencv·直方图·直方图均衡化·cdf·灰度直方图·多通道直方图
音视频牛哥2 天前
拆解人形机器人:从关节、灵巧手到VLA与媒体神经系统
机器学习·计算机视觉·机器人
爱吃火鸡面呀2 天前
OpenCV 实战:文档扫描与神经风格迁移完整指南
人工智能·opencv·计算机视觉
java1234_小锋2 天前
YOLO26 计算机视觉 - 训练自己的 YOLO26 模型
人工智能·yolo·机器学习·计算机视觉·yolo26
Hello-FPGA2 天前
量子计算滨松c15550-22up单光子相机与PCIe1004采集卡
人工智能·计算机视觉·fpga开发