加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2011-05-20 15:49:23)
标签:

matlab

巴特沃斯滤波

图像平滑

杂谈

分类: 技术文章

lyqmath

http://blog.sina.com.cn/lyqmath

简介
巴特沃斯滤波器是电子滤波器的一种。巴特沃斯滤波器的特点是通频带的频率响应曲线最平滑。这种滤波器最先由英国工程师斯替芬·巴特沃斯(Stephen Butterworth)在1930年发表在英国《无线电工程》期刊的一篇论文中提出的。巴特沃斯滤波器的特性巴特沃斯滤波器的特点是通频带内的频率响应曲线最大限度平坦,没有起伏,而在阻频带则逐渐下降为零。在振幅的对数对角频率的波得图上,从某一边界角频率开始,振幅随着角频率的增加而逐步减少,趋向负无穷大。利用巴特沃斯(Butterworth)低通滤波器对受噪声干扰的图像进行平滑处理。

实例

% By lyqmath
% DLUT School of Mathematical Sciences 2008
% BLOG:http://blog.sina.com.cn/lyqmath
clc; clear all; close all;
I=imread('rice.png');
figure;
subplot(2, 2, 1); imshow(I); title('原图像');
J1 = imnoise(I, 'salt & pepper');   % 叠加椒盐噪声
subplot(2, 2, 2); imshow(J1); title('加噪声图像');
g = fft2(double(J1));        % 傅立叶变换
g = fftshift(g);             % 转换数据矩阵
[M, N]=size(g);
nn = 2;                      % 二阶巴特沃斯(Butterworth)低通滤波器
d0 = 20;
m = fix(M/2);
n = fix(N/2);
for i = 1:M
    for j = 1:N
        d = sqrt((i-m)^2+(j-n)^2);
        h = 1/(1+0.414*(d/d0)^(2*nn));   % 计算低通滤波器传递函数
        result(i,j) = h*g(i,j);
        T(i, j) = h;
    end
end
result = ifftshift(result);
J2 = ifft2(result);
J3 = uint8(real(J2));
subplot(2, 2, 3); mesh(T); title('滤波器示意图')
box on;
% 显示滤波处理后的图像
subplot(2, 2, 4); imshow(J3); title('滤波结果')

结果

http://s7/middle/72586626ha3b061c4b596&690

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

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有