基于matlab 的 图像去噪实验

图像去噪
去噪就是从信号和图像中去除噪声或不需要的伪影。对于⼤多数⾳频、图像和视频处理设备,去噪是⼀个关键步骤,因为这些设备在信号传输、采集、处理、信号存储或转换过程中容易产⽣噪声。噪声可能会对信号还原、分析和跟踪等后续信 号处理任务产⽣不利影响。
均值滤波器
均值滤波器就是让每个像素取领域的平均值,⽐如邻域取 3x3 的范围,计算公式为:
均值滤波器会将噪声点使⽤领域内的像素来平滑抹除,但是去噪的同时也会导致丢失⼀些细节信息。
⾼斯加权均值滤波器
⾼斯加权均值滤波器是⼀种更⾼级的滤波器,它在计算均值时为每个像素分配不同的权重。这些权重是根据⾼斯函数确定 的,使得靠近中⼼像素的像素具有更⾼的权重。⾼斯滤波器常⽤于图像处理中,因为它能够有效地减少噪声,同时保持图 像的边缘和细节。
此次采⽤的⾼斯加权均值滤波器我们采⽤固定的权重,如下图所⽰:
使⽤⾼斯加权均值滤波器处理图像的计算公式为:
中值滤波器
中值滤波是⼀种⾮线性滤波,在处理脉冲噪声以及椒盐噪声时效果极佳,能够有效的保护好图像的边缘信息。中值滤波的 处理思路很简单,取卷积核当中所覆盖像素中的中值作为锚点的像素值即可。
计算公式为:
原图和添加了⾼斯噪声和椒盐噪声的图像分别如下:
滤波结果
%% 图像去噪 %%
% 清理一下工作区
clc
clear all
close all

%% 读入要测试的图像 %%
image = imread('data/img02.jpg');
image_gray = rgb2gray(image);    %将彩色图转化为二维的灰度图
image_input = im2double(image_gray); % 转化为标准化数组

% 获取图像的尺寸
[row,col] = size(image_input);   %获取图像的像素点个数

%% 对图像加入高斯噪声 %%
image_gussian = imnoise(image_input,'gaussian',0,0.8);

% 对图像加入椒盐噪声
image_salt = imnoise(image_input,'salt & pepper',0.2); 

% 显示图像加入高斯噪声和椒盐噪声后的结果
figure;
subplot(1,3,1),imshow(image_input),title('原图');
subplot(1,3,2),imshow(image_gussian),title('加入高斯噪声后');
subplot(1,3,3),imshow(image_salt),title('加入椒盐噪声后');

%% 均值滤波 %%
I1 = image_gussian;
P1 = image_salt;
for i=2:row-1
    for j=2:col-1
        I1(i,j)=(image_gussian(i,j)+image_gussian(i-1,j)+image_gussian(i+1,j)+image_gussian(i,j-1)+image_gussian(i,j+1)+image_gussian(i-1,j-1)+image_gussian(i-1,j+1)+image_gussian(i+1,j-1)+image_gussian(i+1,j+1))/9;
        P1(i,j)=(image_salt(i,j)+image_salt(i-1,j)+image_salt(i+1,j)+image_salt(i,j-1)+image_salt(i,j+1)+image_salt(i-1,j-1)+image_salt(i-1,j+1)+image_salt(i+1,j-1)+image_salt(i+1,j+1))/9;   
    end
end    

%% 高斯加权均值滤波 %%
I2 = image_gussian;
P2 = image_salt;
% for i=2:row-1
%     for j=2:col-1
%         %
%     end
% end    


% 高斯加权均值滤波
window_size = 3; % 定义窗口大小
sigma = 1.5; % 定义高斯核的标准差

for i = 2:row-1
    for j = 2:col-1
        % 提取窗口内的像素值
        window = double(I2(i-1:i+1, j-1:j+1));
        % 计算高斯加权均值
        weights = fspecial('gaussian', window_size, sigma);
        weighted_sum = sum(sum(window .* weights));
        normalized_weighted_sum = weighted_sum / sum(weights(:));
        % 将加权均值赋给当前像素
        P2(i, j) = uint8(normalized_weighted_sum);
    end
end


%% 中值滤波 %%
I3 = image_gussian;
P3 = image_salt;
% for i=2:row-1
%     for j=2:col-1
%         %
%     end
% end
% 中值滤波
window_size = 5; % 定义窗口大小

for i = 2:row-1
    for j = 2:col-1
        % 提取窗口内的像素值
        window = I3(i-1:i+1, j-1:j+1);
        % 将窗口内的像素值展开成一维数组
        window_values = window(:);
        % 对窗口内的像素值进行排序
        sorted_window = sort(window_values);
        % 取中值
        median_value = sorted_window(floor(numel(sorted_window)/2) + 1);
        % 将中值赋给当前像素
        P3(i, j) = median_value;
    end
end

%% 结果可视化 %%
figure;
subplot(2,3,1),imshow(image_input),title('原图','fontsize',16);       
subplot(2,3,2),imshow(image_gussian),title('高斯噪声','fontsize',16);    
subplot(2,3,4),imshow(I1),title('均值滤波','fontsize',16);    
subplot(2,3,5),imshow(I2),title('高斯加权均值滤波','fontsize',16);    
subplot(2,3,6),imshow(I3),title('中值滤波','fontsize',16);    
figure;
subplot(2,3,1),imshow(image_input),title('原图','fontsize',16);       
subplot(2,3,2),imshow(image_salt),title('椒盐噪声','fontsize',16);    
subplot(2,3,4),imshow(P1),title('均值滤波','fontsize',16);    
subplot(2,3,5),imshow(P2),title('高斯加权均值滤波','fontsize',16);    
subplot(2,3,6),imshow(P3),title('中值滤波','fontsize',16);                 

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 图像去噪是数字图像处理中常见的一项任务,基于Matlab图像去噪分析与仿真步骤如下: 1. 图像读取与显示:首先,使用Matlab的imread函数读取需要处理的图像,并使用imshow函数显示原始图像。 2. 噪声模型选择:根据实际情况,选择合适的噪声模型。常见的噪声模型包括高斯噪声、椒盐噪声等。 3. 添加噪声:根据选择的噪声模型,使用Matlab的imnoise函数在原始图像上添加相应的噪声。 4. 去噪算法选择:根据噪声模型的不同,选择合适的去噪算法。常见的去噪算法包括均值滤波、中值滤波、小波去噪等。 5. 实施去噪算法:使用Matlab中相应的函数或算法库,对添加了噪声的图像进行去噪处理。 6. 去噪结果评估:通过计算去噪后图像与原始图像之间的差异,评估去噪算法的效果。常见的评估指标包括峰值信噪比(PSNR)、结构相似性指数(SSIM)等。 7. 结果可视化:使用Matlab的imshow函数,显示原始图像、添加噪声后图像以及去噪后的图像,以便进行对比和分析。 8. 优化调整:根据去噪结果评估的反馈意见,对噪声模型、去噪算法的参数进行调整和优化。 9. 重复进行步骤5至8,直到得到满意的去噪效果。 通过上述步骤,基于Matlab实现的图像去噪分析与仿真可以对不同的噪声模型和去噪算法进行评估和比较,从而选择最适合的去噪方法。 ### 回答2: 基于matlab进行图像去噪的分析和仿真步骤如下: 1. 导入图像:首先使用matlab的图像处理工具箱,导入需要去噪的图像。可以使用imread函数读取图像,并将其存储为matlab中的矩阵。 2. 图像预处理:根据具体情况,对图像进行预处理,包括调整图像大小、图像旋转、图像剪裁等操作。预处理步骤可以帮助提高后续图像去噪算法的性能。 3. 噪声模型建立:根据实际噪声的特征,可以建立相应的噪声模型。例如,高斯噪声模型、椒盐噪声模型等。根据噪声模型,可以为后续的图像去噪算法提供参考。 4. 图像去噪算法选择:根据噪声模型和图像特点,选择合适的图像去噪算法。常用的图像去噪算法包括均值滤波、中值滤波、高斯滤波、小波变换等。 5. 算法实现:根据选择的图像去噪算法,使用编程语言matlab进行算法实现。根据算法的思路,编写相应的程序代码进行图像去噪操作。 6. 参数调整:根据实验效果和需求,对图像去噪算法的参数进行调整。例如调整滤波器大小、滤波器类型等参数,以获得更好的去噪效果。 7. 仿真结果评估:对去噪后的图像进行评估,衡量图像去噪算法的性能。可以使用一些图像评估指标,如峰值信噪比(PSNR)、结构相似度指标(SSIM)等。 8. 结果分析与优化:根据仿真结果及评估指标,分析算法的优势和不足之处。根据需要,对图像去噪算法进行优化,以提高去噪效果和算法的性能。 9. 结果可视化:将去噪后的图像与原始图像进行对比,以观察去噪效果。可以使用imshow函数在matlab中展示图像。 以上是基于matlab图像去噪的分析与仿真步骤的简要介绍,具体的实现过程可根据具体图像和噪声情况的不同进行调整。 ### 回答3: 基于Matlab进行图像去噪的分析与仿真步骤如下: 1. 读取图像:使用Matlab的imread函数读取待去噪的图像,将其存储为灰度图像。 2. 添加噪声:可以选择性地在图像中添加噪声,常见的有高斯噪声、椒盐噪声等。使用Matlab的imnoise函数实现。 3. 设计去噪算法:选择合适的去噪算法进行图像去噪,常见的有均值滤波、中值滤波、维纳滤波等。根据图像噪声特点选择适当的算法,并实现相应的Matlab代码。 4. 对图像进行去噪处理:将设计好的去噪算法应用于添加噪声的图像上,得到去噪处理后的图像。 5. 评估去噪效果:使用合适的评价指标(如均方误差、结构相似性指标等)对去噪效果进行定量评估。通过与原始无噪声图像进行比较,评估去噪算法的效果。 6. 保存并显示处理结果:使用Matlab的imwrite函数将去噪处理后的图像保存为图像文件,并使用imshow函数显示原始图像、添加噪声后的图像以及去噪处理后的图像,进一步直观地观察去噪效果。 7. 参数优化:根据评估结果,可以调整去噪算法的参数以进一步优化去噪效果。反复进行算法调整并评估的过程,直到达到满意的去噪效果。 通过以上分析与仿真步骤,可以使用Matlab进行图像去噪的研究与实验,进一步提高图像质量及去噪效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

墨痕_777

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值