编写MATLAB代码,用lpfilter函数和hpfilter函数分别对自选图像进行低通和高通滤波,并显示其 结果。
时间: 2024-03-12 08:43:51 浏览: 169
好的,以下是MATLAB代码实现:
```matlab
% 读取自选图像
img = imread('your_image.jpg');
% 显示原始图像
subplot(2,2,1);
imshow(img);
title('原始图像');
% 进行低通滤波
lp_img = lpfilter(img);
subplot(2,2,2);
imshow(lp_img);
title('低通滤波');
% 进行高通滤波
hp_img = hpfilter(img);
subplot(2,2,3);
imshow(hp_img);
title('高通滤波');
% 显示滤波后的图像
subplot(2,2,4);
imshowpair(lp_img, hp_img, 'montage');
title('滤波后的图像');
```
其中,`lpfilter`和`hpfilter`函数是自定义的低通和高通滤波函数,需要自己实现。这里给出一个简单的实现方式:
```matlab
function lp_img = lpfilter(img)
% 低通滤波器
lp_filter = fspecial('average', [3 3]);
lp_img = imfilter(img, lp_filter);
end
function hp_img = hpfilter(img)
% 高通滤波器
hp_filter = [-1 -1 -1; -1 8 -1; -1 -1 -1];
hp_img = imfilter(img, hp_filter);
end
```
这里使用了`fspecial`函数来生成一个$3\times3$的均值滤波器作为低通滤波器,使用了一个$3\times3$的高通滤波器,可以根据需要自行调整滤波器的大小和类型。运行该代码,即可得到低通和高通滤波后的图像,并显示在画布上。
阅读全文