matlab高通滤波器代码
时间: 2023-08-23 20:11:34 浏览: 89
以下是一个用MATLAB实现的高通滤波器代码的示例:
```matlab
clc;
clear;
% 读取原始图片
\[f, map\] = imread('...\Origin_Picture.jpg');
f = rgb2gray(f); % 将三通道RGB图片转为灰度图
\[m, n\] = size(f); % 读取图片尺寸
F = fftshift(fft2(double(f))); % 傅里叶变换
d0 = 20; % 设置滤波器频段
flag = 0; % 高通滤波器选择(0为高通)
H = ones(m, n); % 全通滤波器矩阵
for k = 0:2
for u = 1:m
for v = 1:n
d = sqrt((u - 0.5 * m - 1).^2 + (v - 0.5 * n - 1).^2); % 以矩阵中心为圆心绘制圆孔
if flag == 0 % 高通滤波器
if d <= d0 + 40 * k % 不同孔径的圆形滤波器,步长40
H(u, v) = 0;
H(u, v) = double(H(u, v));
else
H(u, v) = 1;
H(u, v) = double(H(u, v));
end
end
end
end
end
G = H .* F; % 进行滤波
```
这段代码实现了一个高通滤波器,通过设置不同的`d0`值和`k`值,可以得到不同孔径的圆形滤波器。滤波器的频率响应通过将滤波器矩阵`H`与原始图像的傅里叶变换结果`F`相乘得到。最后得到的结果`G`即为经过高通滤波器处理后的图像。
#### 引用[.reference_title]
- *1* *3* [Matlab 实现低通/高通/带通滤波器](https://blog.csdn.net/weixin_44178960/article/details/119154574)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
- *2* [MATLAB设计滤波器代码](https://blog.csdn.net/weixin_55642035/article/details/127991476)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item]
[ .reference_list ]