基于MATLAB的均值滤波算法实现
时间: 2023-07-26 15:46:57 浏览: 98
【matlab代码】-【图像去噪】-非局部均值滤波算法.zip
5星 · 资源好评率100%
MATLAB中实现均值滤波算法的步骤如下:
1. 读取图像。可以使用`imread`函数读取图像。例如:`img = imread('image.png')`。
2. 确定滤波器的大小。可以选择一个正方形的滤波器。例如:`filter_size = 3`。
3. 对图像进行边缘扩展。为了避免滤波器在边缘处产生边缘效应,需要对图像进行边缘扩展。可以使用`padarray`函数实现。例如:`img_pad = padarray(img, [floor(filter_size/2), floor(filter_size/2)], 'replicate')`。
4. 循环遍历图像的每个像素,计算滤波器的卷积结果。可以使用`conv2`函数实现。例如:
```matlab
for i = 1:size(img, 1)
for j = 1:size(img, 2)
img_filtered(i,j) = sum(sum(filter .* img_pad(i:i+filter_size-1,j:j+filter_size-1)));
end
end
```
其中,`filter`为滤波器矩阵,可以使用`ones`函数生成。例如:`filter = ones(filter_size) / filter_size^2`。
5. 显示滤波后的图像。可以使用`imshow`函数显示滤波后的图像。例如:`imshow(img_filtered)`。
完整代码如下:
```matlab
img = imread('image.png');
filter_size = 3;
filter = ones(filter_size) / filter_size^2;
img_pad = padarray(img, [floor(filter_size/2), floor(filter_size/2)], 'replicate');
for i = 1:size(img, 1)
for j = 1:size(img, 2)
img_filtered(i,j) = sum(sum(filter .* img_pad(i:i+filter_size-1,j:j+filter_size-1)));
end
end
imshow(img_filtered);
```
阅读全文