matlab均值滤波和中值滤波代码
时间: 2023-06-04 20:02:41 浏览: 144
我可以回答关于matlab均值滤波和中值滤波代码的问题。以下是matlab均值滤波的代码示例:
```Matlab
img = imread('image.jpg'); % 读入图像
img_noise = imnoise(img, 'salt & pepper', 0.02); % 添加噪声
h = fspecial('average', [3 3]); % 设置均值滤波卷积核
img_filtered = imfilter(img_noise, h); % 进行均值滤波
imshow(img_filtered);
```
以下是matlab中值滤波的代码示例:
```Matlab
img = imread('image.jpg'); % 读入图像
img_noise = imnoise(img, 'salt & pepper', 0.02); % 添加噪声
img_filtered = medfilt2(img_noise, [3 3]); % 进行中值滤波
imshow(img_filtered);
```
其中,`imread()`函数用于读入图像,`imnoise()`函数用于添加噪声,`fspecial()`函数用于创建均值滤波卷积核,`imfilter()`函数用于进行均值滤波,`medfilt2()`函数用于进行中值滤波。
相关问题
均值滤波和中值滤波matlab代码
均值滤波和中值滤波是常用的图像处理技术。下面将为您提供使用MATLAB实现的代码示例。
均值滤波通过计算像素周围邻域的平均值来实现图像平滑处理。具体的MATLAB代码如下:
```matlab
% 读取输入图像
inImg = imread('input.jpg');
% 获取图像尺寸
[m, n] = size(inImg);
% 定义滤波器尺寸
filterSize = 3;
% 创建输出图像矩阵
outImg = zeros(m, n);
% 对图像进行均值滤波
for i = 2 : m-1
for j = 2 : n-1
% 计算滤波器内邻域的平均值
outImg(i, j) = sum(sum(inImg(i-1:i+1, j-1:j+1))) / (filterSize^2);
end
end
% 显示输出图像
imshow(uint8(outImg));
```
中值滤波则是通过取邻域中像素的中值来实现图像去噪处理。下面是实现中值滤波的MATLAB代码示例:
```matlab
% 读取输入图像
inImg = imread('input.jpg');
% 获取图像尺寸
[m, n] = size(inImg);
% 定义滤波器尺寸
filterSize = 3;
% 创建输出图像矩阵
outImg = zeros(m, n);
% 对图像进行中值滤波
for i = 2 : m-1
for j = 2 : n-1
% 获取滤波器内邻域的像素值
neighborPixels = reshape(inImg(i-1:i+1, j-1:j+1), 1, []);
% 取邻域像素的中值作为滤波结果
outImg(i, j) = median(neighborPixels);
end
end
% 显示输出图像
imshow(uint8(outImg));
```
上述代码示例中,`input.jpg`为待处理的图像文件名。代码中的滤波器尺寸`filterSize`可以根据需要进行调整。使用这些代码,您可以在MATLAB中实现均值滤波和中值滤波来对图像进行平滑和去噪处理。
matlab 均值滤波和中值滤波
Matlab中的均值滤波和中值滤波都是常用的图像处理方法,它们的主要区别在于滤波器的处理方式不同。
均值滤波器是一种线性滤波器,它将每个像素的值替换为其周围像素的平均值。这种滤波器可以有效地去除图像中的高斯噪声,但会导致图像失去细节。
中值滤波器是一种非线性滤波器,它将每个像素的值替换为其周围像素的中值。这种滤波器可以有效地去除图像中的椒盐噪声和斑点噪声,同时保留图像的细节。
以下是Matlab中均值滤波和中值滤波的示例代码:
均值滤波:
```matlab
img = imread('lena.png');
filtered_img = imfilter(img, fspecial('average', [3 3]));
imshow(filtered_img);
```
中值滤波:
```matlab
img = imread('lena.png');
filtered_img = medfilt2(img, [3 3]);
imshow(filtered_img);
```
阅读全文