matalb自己写中值滤波
时间: 2023-08-02 07:08:26 浏览: 143
如果你想自己编写MATLAB中值滤波的代码,可以参考以下示例代码:
```matlab
% 读取图像
I = imread('lena.png');
% 添加椒盐噪声
J = imnoise(I, 'salt & pepper', 0.02);
% 中值滤波
[m, n] = size(J);
K = zeros(m, n);
for i = 2 : m-1
for j = 2 : n-1
% 取 3x3 邻域
neighbors = [J(i-1,j-1), J(i-1,j), J(i-1,j+1), ...
J(i,j-1), J(i,j), J(i,j+1), ...
J(i+1,j-1), J(i+1,j), J(i+1,j+1)];
% 对邻域进行排序
sorted_neighbors = sort(neighbors);
% 取中间值作为滤波结果
K(i,j) = sorted_neighbors(5);
end
end
% 显示结果
subplot(1, 2, 1), imshow(J), title('添加噪声的图像');
subplot(1, 2, 2), imshow(uint8(K)), title('中值滤波后的图像');
```
上述代码中,首先读取一张图像并添加椒盐噪声,然后使用双重循环遍历图像中的每个像素,取其周围 3x3 的邻域,并对邻域进行排序,取中间值作为滤波结果,最后显示原图和处理后的图像。需要注意的是,由于在边缘处无法取到 3x3 的邻域,因此在循环中从第二行、第二列开始遍历,并在循环结束前剔除最后一行、最后一列。
阅读全文