、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、、
图像进行傅立叶运算的物理意义

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:Mfor j=1:Nif (sqrt(((i-M/2)^2+(j-N/2)^2))>freq)out(i,j)=0;endend
end
function out = imfreqfilt(I, ff)
% imfreqfilt函数          对灰度图像进行频域滤波
% 参数I               输入的空域图像
% 参数ff              应用的与原图像等大的频域滤镜if (ndims(I)==3) && (size(I,3)==3)   % RGB图像I = rgb2gray(I);
endif (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:Mfor j=1:Nout(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:Mfor j=1:Nout(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:Mfor j=1:Nout(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:NI(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');


周期性图像的傅立叶频谱中出现了两对相对于坐标轴对称的亮点,它们分别对应于图形图像中水平和竖直方向的正弦噪声。

转载于:https://www.cnblogs.com/-song/archive/2012/03/25/3331883.html

数字图像处理之频率域图像增强相关推荐

  1. 第4章 Python 数字图像处理(DIP) - 频率域滤波10 - 使用低通频率域滤波器平滑图像 - 理想、高斯、巴特沃斯低通滤波器

    目录 使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 高斯低通滤波器(GLPF) 巴特沃斯低通滤波器 低通滤波的例子 使用低通频率域滤波器平滑图像 理想低通滤波器(ILPF) 在以原点为中心 ...

  2. c++ opencv数字图像处理:频率域滤波--低通滤波--理想低通滤波

    文章目录 前言 一.理想低通滤波器(ILPF) 二.代码 三.说明 前言 数字图像处理c++ opencv(VS2019 opencv4.53)持续更新 一.理想低通滤波器(ILPF) 通过设置频率半 ...

  3. python数字图像处理(四) 频率域滤波

    import matplotlib.pyplot as plt import numpy as np import cv2 %matplotlib inline 首先读入这次需要使用的图像 img = ...

  4. 第4章 Python 数字图像处理(DIP) - 频率域滤波12 - 选择性滤波 - 带阻

    目录 选择性滤波 带阻滤波器和带通滤波器 陷波滤波器 选择性滤波 处理特定的频带的滤波器称为频带滤波器 带阻滤波器: 若某个频带中的频率被滤除 带通滤波器: 若某个频带中的频率被通过 处理小频率矩形区 ...

  5. 第4章 Python 数字图像处理(DIP) - 频率域滤波11 - 使用高通滤波器锐化图像

    目录 使用高通滤波器锐化图像 由低通滤波器得到理想.高斯和巴特沃斯高通滤波器 指纹增强 频域中的拉普拉斯 钝化掩蔽.高提升滤波和高频强调滤波 同态滤波 使用高通滤波器锐化图像 由低通滤波器得到理想.高 ...

  6. 第4章 Python 数字图像处理(DIP) - 频率域滤波6 - 二维DFT和IDFT的一些性质 - 平移和旋转、周期性、对称性

    目录 二维DFT和IDFT的一些性质 空间间隔和频率间隔的关系 平移和旋转 周期性 对称性 二维DFT和IDFT的一些性质 空间间隔和频率间隔的关系 Δu=1MΔT(4.69)\Delta u = \ ...

  7. 第4章 Python 数字图像处理(DIP) - 频率域滤波5 - 二变量函数的傅里叶变换、图像中的混叠、二维离散傅里叶变换及其反变换

    目录 二变量函数的傅里叶变换 二维冲激及其取样性质 二维连续傅里叶变换对 二维取样和二维取样定理 图像中的混叠 二维离散傅里叶变换及其反变换 二变量函数的傅里叶变换 二维冲激及其取样性质 两个连续变量 ...

  8. 第4章 Python 数字图像处理(DIP) - 频率域滤波2 - 复数、傅里叶级数、连续单变量函数的傅里叶变换、卷积

    目录 基本概念 复数 傅里叶级数 冲激函数及其取样(筛选)性质 连续单变量函数的傅里叶变换 卷积 基本概念 复数 复数CCC的定义为 C=R+jI(4.3)C = R + jI \tag{4.3}C= ...

  9. 第4章 Python 数字图像处理(DIP) - 频率域滤波1 - 傅里叶级数和变换简史

    本章主要讲解频域域滤波的技术,主要技术用到是大家熟悉的傅里叶变换与傅里叶反变换.这里有比较多的篇幅讲解的傅里叶的推导进程,用到Numpy傅里叶变换.本章理论基础比较多,需要更多的耐心来阅读,有发现有错 ...

最新文章

  1. 10个常用方法有效优化ASP.NET的性能
  2. 九十六、轻松搞定Python中的PPT办公自动化系列
  3. SAP Loyalty management模块演示场景的测试数据
  4. Condition类必须配合Mutex使用,why?
  5. 视觉开发需要什么程度的数学_软件开发需要学好数学吗?
  6. html游戏图标库,又一款开源图标库 CSS.GG,值得一用
  7. flask-sqlalchemy CURD
  8. 华为发布智能数据解决方案FusionData,重定义数据基础设施,释放数据价值
  9. [转载] python更新numpy_Python numpy从1.6更新到1.8
  10. 大学排行榜 : qs全球世界 大学排行榜
  11. coreldraw矫正两张图_CorelDRAW矫正图像方法-CDR中如何矫正图像_好特教程
  12. 以码为梦,心向远方,路在脚下|211应届计算机毕业生的迷茫
  13. [Win32] 实现内存修改器
  14. jscript php,JavaScript_JScript 运算符,JScript 运算符算术运算符- phpStudy
  15. Web 前端开发规范手册
  16. html表格导入wps,怎么快速将网页数据导入WPS表格中?
  17. scrapy的安装与使用
  18. Arduino嵌入式开发-如何点亮一盏LED灯
  19. tarjan习题题解
  20. 探索支付宝账单的技术实现

热门文章

  1. MSP430G2553需要注意的一些参数
  2. 质保、保修、包修:含义不同
  3. mysql海量数据的优化
  4. [转载] 杜拉拉升职记——20 两位同僚
  5. 高职学生如何成为编程高手
  6. css float(脱离正常流:向左/右浮动直到父元素/另一float, 不占空间)
  7. TensorFlow高阶 API: keras教程-使用tf.keras搭建mnist手写数字识别网络
  8. 利用python实现ORM
  9. 很好的PHP分页类(调试过)
  10. Oracle 11g R2手动配置EM(转)