%%均值滤波
close all;
clear all;
clc;
% 读取图像
I = imread('Noise Image.jpg');
% 转换为灰度图像(如果需要)
%I = rgb2gray(I);
% 定义均值滤波器
h = ones(3,3) / 9; % 3x3的均值滤波器
% 应用滤波器
J = imfilter(I, h);
% 显示原始图像和滤波后的图像
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
subplot(1,2,1), imshow(I), title('初始图像');
subplot(1,2,2), imshow(J), title('均值滤波后的图像');
%%中值滤波
close all;
clear all;
clc;
I = imread('Noise Image.jpg'); % 读取图像
I = rgb2gray(I); %转换为灰度图像(如果需要)
J = medfilt2(I); % 使用2D中值滤波器 % 应用中值滤波
% 显示原始图像和中值滤波后的图像
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
subplot(1,2,1), imshow(I), title('原始图像');
subplot(1,2,2), imshow(J), title('中值滤波后的图像');
%%高斯滤波
close all;
clear all;
clc;
I = imread('Noise Image.jpg'); % 读取图像
%I = rgb2gray(I); % 转换为灰度图像(如果需要)
J = imgaussfilt(I, 2); % 使用标准差为2的高斯滤波器 % 应用高斯滤波器
% 显示原始图像和高斯滤波后的图像
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
%%双边滤波
close all;
clear all;
clc;
I = imread('Noise Image.jpg'); % 读取图像
% 转换为灰度图像(如果需要)
%I = rgb2gray(I);
% 应用双边滤波器
J = bfilt_rgb(I, 3, 9, 15); % 9x9滤波器,空间标准差为15,灰度标准差为15
% 显示原始图像和双边滤波后的图像
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);
%%灰度图引导滤波
close all;
clear all;
clc;
I = imread('Noise Image.jpg'); % 读取图像
if length(size(I))>2
I=rgb2gray(I);
end
I = double(I) / 255;
p = I;
r = 9;
eps = 0.4^2; %0.021^2 0.04^2
J = guidedfilter(I,p,r,eps); %引导滤波
% 显示原始图像和双边滤波后的图像
subplot(1,2,1), imshow(I);
subplot(1,2,2), imshow(J);