matlab对图片3×3中值滤波
时间: 2023-07-27 11:12:51 浏览: 89
使用MATLAB实现一个3x3的中值滤波的步骤如下:
1. 读取图像并将其转换为灰度图像;
2. 创建一个与原始图像相同大小的矩阵,用于存储中值滤波后的图像;
3. 遍历原始图像的每个像素点,分别取其周围3x3个像素点的灰度值,将这些灰度值排序,取其中位数作为当前像素点的灰度值;
4. 将步骤3中得到的灰度值赋给步骤2中对应位置的像素;
5. 显示中值滤波后的图像。
下面是一个MATLAB实现的示例代码:
```matlab
% 读取图像并转换为灰度图像
img = imread('example.jpg');
gray_img = rgb2gray(img);
% 创建用于存储中值滤波后图像的矩阵
filtered_img = zeros(size(gray_img));
% 遍历每个像素点并进行中值滤波
for i = 2:size(gray_img, 1)-1
for j = 2:size(gray_img, 2)-1
% 取周围3x3个像素点的灰度值
pixels = [gray_img(i-1,j-1) gray_img(i-1,j) gray_img(i-1,j+1) ...
gray_img(i,j-1) gray_img(i,j) gray_img(i,j+1) ...
gray_img(i+1,j-1) gray_img(i+1,j) gray_img(i+1,j+1)];
% 对灰度值排序并取其中位数
sorted_pixels = sort(pixels);
median_pixel = sorted_pixels(5);
% 将中值赋给对应位置的像素
filtered_img(i,j) = median_pixel;
end
end
% 显示原始图像和中值滤波后的图像
subplot(1,2,1), imshow(gray_img), title('Original Image');
subplot(1,2,2), imshow(filtered_img), title('Filtered Image');
```
注意,在该示例代码中,我们假设输入的图像为RGB彩色图像,因此我们需要先将其转换为灰度图像。如果输入的是灰度图像,则可以跳过这一步。
阅读全文