数字图像处理之频率域图像增强

原创 2012年03月25日 12:35:04
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
图像进行傅立叶运算的物理意义

http://met.fzu.edu.cn/dip/chapter4.html
http://www.360doc.com/content/10/1128/20/2226925_73234298.shtml
http://blog.csdn.net/depraved_survival/article/details/1739743
http://www.360doc.com/content/12/0218/13/8795013_187569365.shtml
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
理想低通滤波器,过滤图像中的高频成分即噪声(但是也包含边缘)
function out = imidealflpf(I, freq)
% imidealflpf函数			构造理想的频域低通滤波器
% I参数				输入的灰度图像
% freq参数				低通滤波器的截止频率
% 返回值:out – 指定的理想低通滤波器
[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        if (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)
            out(i,j)=0;
        end
    end
end
function out = imfreqfilt(I, ff)
% imfreqfilt函数			对灰度图像进行频域滤波
% 参数I				输入的空域图像
% 参数ff				应用的与原图像等大的频域滤镜

if (ndims(I)==3) && (size(I,3)==3)   % RGB图像
    I = rgb2gray(I);
end

if (size(I) ~= size(ff))
    msg1 = sprintf('%s: 滤镜与原图像不等大,检查输入', mfilename);
    msg2 = sprintf('%s: 滤波操作已经取消', mfilename);
    eid = sprintf('Images:%s:ImageSizeNotEqual',mfilename);
    error(eid,'%s %s',msg1,msg2);
end

% 快速傅立叶变换
f = fft2(I);

% 移动原点
s = fftshift(f);

% 应用滤镜及反变换
out = s .* ff; %对应元素相乘实现频域滤波
out = ifftshift(out);
out = ifft2(out);

% 求模值
out = abs(out);

% 归一化以便显示
out = out/max(out(:));
I=imread('baby_noise.bmp');
figure(1);subplot(1,4,1);imshow(I);title('source');
%求源图像的fft频谱图
temp=fft2(I);%做fft变换
temp=fftshift(temp);%将零点移到中心
temp=log(1+abs(temp));%对幅值做对数变换,以压缩动态范围
figure(2);subplot(1,4,1);imshow(temp,[]);title('I');%temp是double array,是浮点数,需要[].


ff=imidealflpf(I,20);%生成滤镜,频率是20即0-20之间的低频带被保留,大于20的高频带丢失
out=imfreqfilt(I,ff);%应用滤镜,即执行fft
figure(1);subplot(1,4,2);imshow(out);title('ideal lpf ,20');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,2);imshow(temp,[]);title('20');

ff=imidealflpf(I,40);
out=imfreqfilt(I,ff);
figure(1);subplot(1,4,3);imshow(out);title('ideal lpf ,40');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,3);imshow(temp,[]);title('40');

ff=imidealflpf(I,60);
out=imfreqfilt(I,ff);
figure(1);subplot(1,4,4);imshow(out);title('ideal lpf ,60');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,4);imshow(temp,[]);title('60');



、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
高斯低通滤波器

将上面的函数imidealflpf换成imgaussflpf,如下
function out = imgaussflpf(I, sigma)
% imgaussflpf函数     		构造频域高斯低通滤波器
% I参数				输入的灰度图像
% sigma参数			高斯函数的Sigma参数

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        out(i,j) = exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
    end
end
I=imread('baby_noise.bmp');
figure(1);subplot(1,4,1);imshow(I);title('source');
%求源图像的fft频谱图
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,1);imshow(temp,[]);title('I');


ff=imgaussflpf(I,20);%生成滤镜,sigma=20,sigma越大保留的信息越多 
out=imfreqfilt(I,ff);%应用滤镜,即执行fft
figure(1);subplot(1,4,2);imshow(out);title('gauss lpf ,20');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,2);imshow(temp,[]);title('20');

ff=imgaussflpf(I,40);
out=imfreqfilt(I,ff);
figure(1);subplot(1,4,3);imshow(out);title('gauss lpf ,40');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,3);imshow(temp,[]);title('40');

ff=imgaussflpf(I,60);
out=imfreqfilt(I,ff);
figure(1);subplot(1,4,4);imshow(out);title('gauss lpf ,60');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,4);imshow(temp,[]);title('60');



貌似在抑制噪声的同时,图像的模糊程度更低了,比理想低通滤波器的效果好一点。
、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
高斯高通滤波器
function out = imgaussfhpf(I, sigma)
% imgaussfhpf函数			构造频域高斯高通滤波器
% I参数				输入的灰度图像
% sigma参数			高斯函数的Sigma参数

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        out(i,j) = 1 - exp(-((i-M/2)^2+(j-N/2)^2)/2/sigma^2);
    end
end
I=imread('baby_noise.bmp');
figure(1);subplot(1,4,1);imshow(I);title('source');
%求源图像的fft频谱图
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,1);imshow(temp,[]);title('I');


ff=imgaussfhpf(I,20);%生成滤镜,sigma=20,sigma越大,边缘提取越精确
out=imfreqfilt(I,ff);%应用滤镜,即执行fft
figure(1);subplot(1,4,2);imshow(out);title('gauss hpf ,20');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,2);imshow(temp,[]);title('20');

ff=imgaussfhpf(I,40);
out=imfreqfilt(I,ff);
figure(1);subplot(1,4,3);imshow(out);title('gauss hpf ,40');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,3);imshow(temp,[]);title('40');

ff=imgaussfhpf(I,60);
out=imfreqfilt(I,ff);
figure(1);subplot(1,4,4);imshow(out);title('gauss hpf ,60');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,4,4);imshow(temp,[]);title('60');



、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、

拉普拉斯滤波器
function out = imlapf(I)
% imlapff函数			构造频域拉普拉斯滤波器
% I参数				输入的灰度图像

[M,N] = size(I);
out = ones(M,N);
for i=1:M
    for j=1:N
        out(i,j) = -((i-M/2)^2+(j-N/2)^2);
    end
end
I=imread('baby_noise.bmp');
figure(1);subplot(1,2,1);imshow(I);title('source');
%求源图像的fft频谱图
temp=fft2(I);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,2,1);imshow(temp,[]);title('I');


ff=imlapf(I);%生成滤镜 
out=imfreqfilt(I,ff);%应用滤镜,即执行fft
figure(1);subplot(1,2,2);imshow(out);title('lap');
%求out的fft频谱图
temp=fft2(out);
temp=fftshift(temp);
temp=log(1+abs(temp));
figure(2);subplot(1,2,2);imshow(temp,[]);title('lap');




、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
添加周期噪声。使用带阻滤波器消除之p230.
II=imread('lena.gif');
figure(1);subplot(1,2,1);imshow(II);title('source');
%显视频谱图
ii_f=fft2(II);
ii_f=fftshift(ii_f);
ii_f=abs(ii_f);
ii_f=log(1+ii_f);
figure(2);subplot(1,2,1);imshow(ii_f,[]);title('source');

%加周噪
[M,N]=size(II);
I=double(II);
for i=1:M
for j=1:N
    I(i,j)=I(i,j) + 20*sin(20*i) + 20*sin(20*j);
end
end
I=uint8(I);
figure(1);subplot(1,2,2);imshow(I);title('add noise');
%显视频谱图
i_f=fft2(I);
i_f=fftshift(i_f);
i_f=abs(i_f);
i_f=log(1+i_f);
figure(2);subplot(1,2,2);imshow(i_f,[]);title('add noise');



周期性图像的傅立叶频谱中出现了两对相对于坐标轴对称的亮点,它们分别对应于图形图像中水平和竖直方向的正弦噪声。
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

频率域波图像增强

本文主要包括以下内容 频率域图像增强 高通滤波器和低通滤波器 本章的典型案例分析 利用频域滤波消除周期噪声 频域滤波基础频域滤波与空域滤波的关系 傅立叶变换可以将图像从空域变换到频域,而...

频率域上的图像增强

http://download1.csdn.net/down3/20070617/17204050839.rar 本人同意他人对我的文章引用,但请在引用时注明出处,谢谢.作者:蒋志强 相应...

(4)MATLAB 频率域图像增强

频域滤波可以用来消除周期噪声。     傅里叶变换     图像较平滑,低频部分对应的幅值较大,图像灰度变化越剧烈,其频谱高频分量较强I1 = imread('cell.tif'); %读入原图...

频率域图像处理基础

谈到频率域,就不得不说傅里叶变换了。傅里叶是18世纪法国的一位伟大的数学家。他最大的贡献在于指出任何周期函数都可以表示为不同频率的正弦和或者余弦和的形式,每个正弦或者余弦乘以不同的系数(也就是被大家所...

频率域上的图像增强

http://download1.csdn.net/down3/20070617/17204050839.rar本人同意他人对我的文章引用,但请在引用时注明出处,谢谢.作者:蒋志强相应的PDF文档及可...

17. Java数据库编程() ----- 学习笔记

本章目标:

频率域滤波基础之三(读数字图像处理学习halcon)

低频对应于图像变化缓慢的灰度分量,前面我们通过衰减高频成分来平滑图像。高频则对应于图像中变化快速的灰度变化。这些通常是物体的边缘及噪声。以下我们将通过高通滤波来实现图像的锐化。高通滤波会衰减傅立叶变换...

数字图像处理-频率域滤波原理

频率域滤波,傅立叶变换

频率域滤波基础之二(读数字图像处理学习halcon)

二维离散傅立叶(DFT)变化及其反傅立叶变换(IDFT) 傅立叶变换通用形式 对通用形式来讲,c=1,s=-1即为傅立叶变化(图像空间域转频域);c=1/MN,s=1即为逆变换(频域转空间域)...

频率域滤波基础之五(读数字图像处理学习halcon)

选择性滤波 在很多应用中,其中感兴趣是处理指定的频段或频率矩形。第一类滤波器分别称为带阻滤波器或带通滤波器。第二类滤波器称为陷波滤波器。 1、带阻滤波和带通滤波 D(u,v)是距离频率矩形中心的距...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数字图像处理之频率域图像增强
举报原因:
原因补充:

(最多只允许输入30个字)