数字图像去除点噪声代码matlab
时间: 2023-07-09 18:12:57 浏览: 88
以下是一个使用中值滤波器去除点噪声的MATLAB代码示例:
```matlab
% 读取图像
img = imread('image.jpg');
% 将图像转换为灰度图像
gray = rgb2gray(img);
% 应用中值滤波器
median = medfilt2(gray, [3 3]);
% 显示结果
subplot(1,2,1), imshow(img), title('Original Image')
subplot(1,2,2), imshow(median), title('Filtered Image')
```
在上面的代码中,我们首先读取图像并将其转换为灰度图像。然后,我们使用`medfilt2()`函数应用了中值滤波器来去除图像中的点噪声。最后,我们显示了原始图像和处理后的图像。你可以根据自己的需要调整中值滤波器的大小。
相关问题
数字图像处理 噪声的去除 流程和代码 不调用matlab函数
数字图像处理中噪声的去除通常需要经过以下步骤:
1. 选择合适的去噪算法:根据噪声类型和噪声强度,选择合适的去噪算法,比如均值滤波、中值滤波、高斯滤波、小波变换等。
2. 加载图像:读取需要处理的图像。
3. 添加噪声:使用随机函数给图像添加噪声,可以添加高斯噪声、椒盐噪声、泊松噪声等。
4. 进行去噪处理:根据选择的算法,对图像进行去噪处理。
5. 显示和保存处理结果:显示处理后的图像,并将结果保存到本地。
下面是一个简单的 Matlab 代码示例,演示了如何对添加了高斯噪声的图像进行均值滤波去噪处理:
```matlab
% 读取图像
img = imread('lena.jpg');
% 添加高斯噪声
noisy_img = imnoise(img, 'gaussian', 0, 0.01);
% 进行均值滤波去噪处理
[M, N] = size(noisy_img);
denoised_img = zeros(M, N);
for i = 2:M-1
for j = 2:N-1
denoised_img(i,j) = mean(mean(noisy_img(i-1:i+1, j-1:j+1)));
end
end
denoised_img = uint8(denoised_img);
% 显示处理结果
subplot(1, 2, 1);
imshow(noisy_img);
title('Noisy Image');
subplot(1, 2, 2);
imshow(denoised_img);
title('Denoised Image');
% 保存处理结果
imwrite(denoised_img, 'denoised_lena.jpg');
```
注:代码中使用了一个 3x3 的均值滤波模板,对每个像素点周围的 3x3 区域进行均值处理,并将处理结果写入到 denoised_img 中。可以使用其他大小的模板,比如 5x5、7x7 等,也可以使用其他滤波算法,比如中值滤波、高斯滤波等。
阅读全文