空灵学院

 找回密码
 立即注册

扫一扫,访问微社区

搜索
查看: 1962|回复: 0

基于Matlab的巴特沃斯滤波图像平滑

[复制链接]

1137

主题

1761

帖子

7558

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
7558
发表于 2014-1-19 19:18:06 | 显示全部楼层 |阅读模式
以下内容摘自好友lyqmath新浪博客,在此借花献佛。

前言
巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯替芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的。巴特沃斯滤波器的特性巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理。
实例
  1. <font size="4">% By lyqmath
  2. % DLUT School of Mathematical Sciences 2008
  3. % BLOG:http://blog.sina.com.cn/lyqmath
  4. clc; clear all; close all;
  5. I=imread('rice.png');
  6. figure;
  7. subplot(2, 2, 1); imshow(I); title('原图像');
  8. J1 = imnoise(I, 'salt & pepper');   % 叠加椒盐噪声
  9. subplot(2, 2, 2); imshow(J1); title('加噪声图像');
  10. g = fft2(double(J1));        % 傅立叶变换
  11. g = fftshift(g);             % 转换数据矩阵
  12. [M, N]=size(g);
  13. nn = 2;                      % 二阶巴特沃斯(Butterworth)低通滤波器
  14. d0 = 20;
  15. m = fix(M/2);
  16. n = fix(N/2);
  17. for i = 1:M
  18.     for j = 1:N
  19.         d = sqrt((i-m)^2+(j-n)^2);
  20.         h = 1/(1+0.414*(d/d0)^(2*nn));   % 计算低通滤波器传递函数
  21.         result(i,j) = h*g(i,j);
  22.         T(i, j) = h;
  23.     end
  24. end
  25. result = ifftshift(result);
  26. J2 = ifft2(result);
  27. J3 = uint8(real(J2));
  28. subplot(2, 2, 3); mesh(T); title('滤波器示意图')
  29. box on;
  30. % 显示滤波处理后的图像
  31. subplot(2, 2, 4); imshow(J3); title('滤波结果')</font>
复制代码
结果

总结
将图像变换到频域,设计相应的滤波器,达到高通/低通滤波等操作。同时也可以结合滤波器本身的特点来进行特定的操作,比如过滤掉特殊的条形纹等。


回复

使用道具 举报

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

本版积分规则

Archiver|空灵学院 ( 11033542 )

GMT+8, 2024-9-21 09:21 , Processed in 0.026116 second(s), 24 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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