matlab的低通滤波图像代码
时间: 2023-08-23 19:36:21 浏览: 90
MATLAB中的低通滤波可以使用函数`fspecial`和`imfilter`实现。下面是一个示例代码,用于对一张图片进行高斯低通滤波:
```matlab
% 读取需要处理的图片
img = imread('image.jpg');
% 定义高斯滤波器
h = fspecial('gaussian', [5 5], 2);
% 对图片进行低通滤波
img_filtered = imfilter(img, h);
% 显示原图和滤波后的图像
subplot(1, 2, 1);
imshow(img);
title('原图');
subplot(1, 2, 2);
imshow(img_filtered);
title('低通滤波后的图像');
```
在上面的代码中,`fspecial`函数用于创建一个高斯滤波器,其第一个参数指定了滤波器类型,这里选择了高斯滤波器;第二个参数是滤波器大小;第三个参数是高斯分布的标准差。
`imfilter`函数用于对图片进行滤波,第一个参数是需要处理的图片,第二个参数是滤波器。
最后,使用`subplot`函数将原图和滤波后的图像显示在同一幅图中,方便比较。
希望这个示例可以帮助您实现低通滤波。
相关问题
matlab 低通滤波图像
要在MATLAB中进行低通滤波,需要用到一个叫做“fspecial”的函数来创建滤波器。下面是一个简单的低通滤波图像的例子:
```matlab
% 读取图像
img = imread('lena.jpg');
% 创建一个11x11的平均滤波器
h = fspecial('average', [11 11]);
% 对图像进行滤波
img_filtered = imfilter(img, h);
% 显示原始图像和滤波后的图像
subplot(1,2,1), imshow(img), title('原始图像');
subplot(1,2,2), imshow(img_filtered), title('低通滤波后的图像');
```
在这个例子中,我们首先使用`imread`函数读取了一张名为“lena.jpg”的图像。然后,我们使用`fspecial`函数创建了一个11x11的平均滤波器。最后,我们使用`imfilter`函数将滤波器应用于图像,并使用`subplot`和`imshow`函数将原始图像和滤波后的图像显示在同一张图中。
你可以尝试使用不同类型和大小的滤波器来进行低通滤波,并比较它们的效果。
用matlab实现: 对图像eight.tif加入椒盐噪声后,实现Butterworth低通滤波。 选择一幅图像,将其加入椒盐噪声,对其进行傅立叶变换,转换数据矩阵,然后分别对其Butterworth低通滤波和理想低通滤波,同时显示原始图像、噪声图像、Butterworth滤波图像和理想低通滤波图像。
可以按照以下步骤进行操作:
1. 读取图像eight.tif,并显示原始图像。
```matlab
I = imread('eight.tif');
figure, imshow(I), title('Original Image');
```
2. 加入椒盐噪声。
```matlab
J = imnoise(I, 'salt & pepper', 0.1);
figure, imshow(J), title('Noisy Image');
```
3. 对图像进行傅里叶变换,并将零频分量移到图像中心。
```matlab
F = fftshift(fft2(J));
```
4. 定义Butterworth低通滤波器函数。
```matlab
function H = butterworth_lp(D0, n, M, N)
[X, Y] = meshgrid(1:N, 1:M);
D = sqrt((X-M/2).^2 + (Y-N/2).^2);
H = 1./(1 + (D./D0).^(2*n));
end
```
5. 对傅里叶变换后的图像进行Butterworth低通滤波。
```matlab
D0 = 50; % 截止频率
n = 2; % 滤波器阶数
H = butterworth_lp(D0, n, size(F, 1), size(F, 2));
G = H.*F;
g = real(ifft2(ifftshift(G)));
g = uint8(g);
figure, imshow(g), title('Butterworth Lowpass Filtered Image');
```
6. 定义理想低通滤波器函数。
```matlab
function H = ideal_lp(D0, M, N)
[X, Y] = meshgrid(1:N, 1:M);
D = sqrt((X-M/2).^2 + (Y-N/2).^2);
H = double(D <= D0);
end
```
7. 对傅里叶变换后的图像进行理想低通滤波。
```matlab
D0 = 50; % 截止频率
H = ideal_lp(D0, size(F, 1), size(F, 2));
G = H.*F;
g = real(ifft2(ifftshift(G)));
g = uint8(g);
figure, imshow(g), title('Ideal Lowpass Filtered Image');
```
最后,将原始图像、噪声图像、Butterworth滤波图像和理想低通滤波图像显示在同一幅图像中。
```matlab
figure;
subplot(2, 2, 1), imshow(I), title('Original Image');
subplot(2, 2, 2), imshow(J), title('Noisy Image');
subplot(2, 2, 3), imshow(g), title('Butterworth Lowpass Filtered Image');
subplot(2, 2, 4), imshow(g), title('Ideal Lowpass Filtered Image');
```
阅读全文