Hello Mat

 找回密码
 立即注册
查看: 4376|回复: 0

理想高通滤波器

[复制链接]

1294

主题

1520

帖子

110

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22633
发表于 2017-3-7 21:52:19 | 显示全部楼层 |阅读模式
  1. function H = freqfilter_ideal_Hp(M,N,D0)
  2. % 理想高通滤波器
  3. % input:
  4. %     M,N:频域滤波器的尺寸
  5. %     D0:带阻滤波器的截止频率
  6. % output:
  7. %       H:M x N的矩阵,表示频域滤波器矩阵,数据类型为double,
  8. u = -M/2:M/2-1;
  9. v = -N/2:N/2-1;
  10. [U,V] = meshgrid(u,v);
  11. D = sqrt(U.^2+V.^2);
  12. H = double(D>=D0);
  13. end
复制代码
主程序如下:
  1. clc,clear,close all
  2. warning off
  3. feature jit off
  4. D0 = 64; % 阻止的频率点与频域中心的距离
  5. im = imread('coloredChips.png');           % 原图像
  6. R = imnoise(im(:,:,1),'gaussian',0,0.01);  % R + 白噪声
  7. G = imnoise(im(:,:,2),'gaussian',0,0.01);  % G + 白噪声
  8. B = imnoise(im(:,:,3),'gaussian',0,0.01);  % B + 白噪声
  9. im = cat(3,R,G,B);                         % 原图像 + 白噪声
  10. H = freqfilter_ideal_Hp(2*size(R,1),2*size(R,2),D0);     % 理想高通滤波器
  11. R1 = fftfilt2(R,H);
  12. G1 = fftfilt2(G,H);
  13. B1 = fftfilt2(B,H);
  14. im1 = cat(3,R1,G1,B1);
  15. im1 = uint8(im1);
  16. figure('color',[1,1,1])
  17. subplot(121),imshow(im,[]); title('原始图像')
  18. subplot(122),imshow(im1,[]); title('理想高通滤波图像');
复制代码
子函数:
  1. function Z = fftfilt2(X,H)
  2. % 频域滤波
  3. % 函数输入:
  4. %       X:输入的空域图像矩阵,double类型
  5. %       H,频域滤波器,一般为图像X的2倍时较好
  6. % 函数输出:
  7. %       Z:输出的空域图像局长呢,数据类型为double类型
  8. % 二维傅里叶变换
  9. F = fft2(X,size(H,1),size(H,2));
  10. % 傅里叶反变换
  11. Z = H.*F;
  12. Z = ifftshift(Z);
  13. Z = abs(ifft2(Z));
  14. Z = Z(1:size(X,1),1:size(X,2));
复制代码



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

相关帖子

算法QQ  3283892722
群智能算法链接http://halcom.cn/forum.php?mod=forumdisplay&fid=73
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Python|Opencv|MATLAB|Halcom.cn ( 蜀ICP备16027072号 )

GMT+8, 2024-4-27 22:59 , Processed in 0.229412 second(s), 26 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表