MATLAB高斯滤波样例
时间: 2024-09-01 13:00:16 浏览: 83
高斯滤波是一种图像处理中的平滑技术,它利用高斯函数作为权重函数来对图像进行卷积。这种方法可以去除图像中的噪声,同时保留图像的重要部分。MATLAB提供了一个名为`imgaussfilt`的函数用于实现高斯滤波。
下面是一个简单的MATLAB高斯滤波的样例代码:
```matlab
% 读取图像
img = imread('example.jpg');
% 设置高斯滤波器的标准差
sigma = 1.5;
% 应用高斯滤波
gaussianFilteredImg = imgaussfilt(img, sigma);
% 显示原始图像和滤波后的图像
subplot(1, 2, 1);
imshow(img);
title('Original Image');
subplot(1, 2, 2);
imshow(gaussianFilteredImg);
title('Gaussian Filtered Image');
```
在这个样例中,我们首先读取了一个名为`example.jpg`的图像文件。然后我们设置了一个标准差`sigma`,这个值越大,图像越模糊。接着使用`imgaussfilt`函数对图像应用高斯滤波。最后,我们用`subplot`和`imshow`函数展示了原始图像和滤波后的图像。
相关问题
编写 MATLAB 代码实现图像去噪经典算法(均值滤波,高斯滤波,双边滤波,中值滤波),并且对添加了高斯噪声、泊松噪声、乘性噪声和椒盐噪声的图片分别进行去噪并比较性能,包括信噪比等指标。
好的,以下是 MATLAB 代码实现图像去噪经典算法:
```matlab
% 读入图像
img = imread('image.jpg');
% 添加高斯噪声
noise = imnoise(img, 'gaussian', 0, 0.01);
% 添加泊松噪声
noise = imnoise(img, 'poisson');
% 添加乘性噪声
noise = imnoise(img, 'speckle', 0.01);
% 添加椒盐噪声
noise = imnoise(img, 'salt & pepper', 0.01);
% 均值滤波
filtered_img = imfilter(noise, fspecial('average', [3 3]));
% 高斯滤波
filtered_img = imgaussfilt(noise, 1);
% 双边滤波
filtered_img = imbilatfilt(noise, 3, 0.1);
% 中值滤波
filtered_img = medfilt2(noise, [3 3]);
% 计算信噪比
SNR = 10 * log10(sum(img(:).^2) / sum((img(:) - filtered_img(:)).^2));
% 显示结果
figure;
subplot(1, 2, 1); imshow(noise); title('Noisy Image');
subplot(1, 2, 2); imshow(filtered_img); title(['Filtered Image (SNR = ' num2str(SNR) 'dB)']);
```
其中,`imnoise()` 函数用于添加噪声,`imfilter()` 函数用于进行滤波,`fspecial()` 函数用于生成滤波器,`imgaussfilt()` 函数用于高斯滤波,`imbilatfilt()` 函数用于双边滤波,`medfilt2()` 函数用于中值滤波。
为了比较各个算法的性能,可以在添加不同噪声后,分别进行各种滤波算法,并计算信噪比等指标,最后对比各个算法的效果。
以下是样例代码:
```matlab
% 读入图像
img = imread('image.jpg');
% 添加高斯噪声
noise = imnoise(img, 'gaussian', 0, 0.01);
% 均值滤波
filtered_img = imfilter(noise, fspecial('average', [3 3]));
% 计算信噪比
SNR = 10 * log10(sum(img(:).^2) / sum((img(:) - filtered_img(:)).^2));
% 显示结果
figure;
subplot(2, 2, 1); imshow(noise); title('Gaussian Noise');
subplot(2, 2, 2); imshow(filtered_img); title(['Mean Filter (SNR = ' num2str(SNR) 'dB)']);
% 添加泊松噪声
noise = imnoise(img, 'poisson');
% 高斯滤波
filtered_img = imgaussfilt(noise, 1);
% 计算信噪比
SNR = 10 * log10(sum(img(:).^2) / sum((img(:) - filtered_img(:)).^2));
% 显示结果
subplot(2, 2, 3); imshow(noise); title('Poisson Noise');
subplot(2, 2, 4); imshow(filtered_img); title(['Gaussian Filter (SNR = ' num2str(SNR) 'dB)']);
```
可以根据需要,添加其他噪声类型和滤波算法,并计算相应的指标,进行比较。
阅读全文