用matlab写中值滤波,不要用函数
时间: 2024-03-13 16:23:02 浏览: 31
以下是使用Matlab编写中值滤波算法的示例代码:
```matlab
% 读入图像
img = imread('lena.bmp');
% 显示原始图像
subplot(1,2,1);
imshow(img);
title('原始图像');
% 定义滤波器大小
winSize = 3;
% 计算边缘扩展大小
border = floor(winSize/2);
% 边缘扩展
imgBorder = padarray(img,[border border],'symmetric','both');
% 中值滤波
for i = 1:size(img,1)
for j = 1:size(img,2)
% 提取当前像素点的邻域
window = imgBorder(i:i+2*border,j:j+2*border);
% 对邻域进行排序
windowSort = sort(window(:));
% 取中间值作为滤波结果
imgFiltered(i,j) = windowSort((winSize^2+1)/2);
end
end
% 显示滤波结果
subplot(1,2,2);
imshow(imgFiltered);
title('中值滤波结果');
```
该代码中,首先读入了一张图像,并显示了原始图像。然后定义了滤波器大小和边缘扩展大小,并进行了边缘扩展。接着使用两个for循环遍历图像中的每个像素点,提取当前像素点的邻域,对邻域进行排序,取中间值作为滤波结果。最后显示滤波结果。
相关推荐
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)