Hello Mat

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

Wiener滤波器

[复制链接]

1323

主题

1551

帖子

0

金钱

管理员

Rank: 9Rank: 9Rank: 9

积分
22647
发表于 2017-9-21 22:04:55 | 显示全部楼层 |阅读模式
Wiener滤波器:
SNR = 0.0001;   % 信噪比
resim = Wiener(im, 1.2, 30,SNR);       % 逆滤波

  1. function resim = Wiener(ifbl, LEN, THETA, SNR)
  2. % Wiener滤波器
  3. %函数输入:
  4. %         ifbl:  输入的图像矩阵
  5. %         LEN:   模糊旋转长度,模糊的像素个数
  6. %         THETA: 模糊旋转角
  7. %         SNR:信噪比
  8. %函数输出:
  9. %         resim: 重构滤波图像

  10. ifbl = medfilt2(abs(ifbl));%中值滤波
  11. fbl = fft2(ifbl); % 转化到频域
  12. % 点扩展函数PSF
  13. PSF = fspecial('motion',LEN,THETA);
  14. % 转化PSF函数到期望的维数 光传递函数OTF
  15. OTF = psf2otf(PSF,size(fbl));
  16. OTFC = conj(OTF);   % 共轭操作
  17. modOTF = OTF.*OTFC; % 平方
  18. % 检测是否存在0值,若为0,则置为0.000001
  19. for i = 1:size(OTF, 1)
  20.     for j = 1:size(OTF, 2)
  21.         if OTF(i, j) == 0
  22.             OTF(i, j) = 0.000001;
  23.         end
  24.     end
  25. end
  26. % 使用Wiener滤波器公式,去模糊图像
  27. debl = ((modOTF./(modOTF+SNR))./(OTF)).*fbl;
  28. lbed = ifft2(debl);    % 傅里叶反变换
  29. resim = lbed;          % 重构滤波图像
复制代码






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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 23:05 , Processed in 0.220964 second(s), 24 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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