图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波
频率域滤波与空间域滤波殊途同归,空间域图像增强与频率域图像增强是两种截然不同的技术,实际上在相当程度上说它们是在不同的领域做相同的事情,只是有些滤波更适合在空间域完成,而有些则更适合在频率域中完成。
本章的知识点快速查看:
- 傅里叶变换;
- 快速傅里叶变换;
- 频域滤波;
- 频域低通滤波;
- 频域高通滤波;
傅里叶变换
一说到傅里叶,这可是贯穿我们从高中数学1到大二,没有哪个受过数学的苦的人不知道得了。而傅里叶级数,就是正弦加上余弦函数的加权和来表示的。
快速傅里叶变换
频域滤波
频域低通滤波
频域高通滤波
2傅里叶变换基础知识
傅里叶级数:法国数学家傅里叶发现任何周期函数只要满足一定条件(狄利赫里条件),都可以用正弦函数和余弦函数构成无穷级数,却以不同频率的正弦和余弦函数的加权来表示,称为傅里叶级数。
傅里叶变换的实质——基的转换:对于给定函数f(x),关键是选择合适的基,使得f(x)在这组基下,表现出需要的特性。当某一组基不满足要求时,就需要通过变换函数转换到另一组基下
3快速傅里叶变换及其实现
fft2()函数:该函数用于执行二维快速傅里叶操作,因此可以直接用于图像处理
Y=fft2(X)
Y=fft2(X,m,n)
X为输入图像,m和n分别用于将X的第一和第二维规整到指定的长度,当m和n均为2 的整数次幂时算法的执行速度要比m和n为素数时更快。
Y是计算得到的傅里叶频谱,是一个复数矩阵
注意:计算abs(Y)可以得到幅度谱,计算angle(Y)可以得到相位谱
fftshift()函数:利用了频谱的周期性特点,将输出图像的一半平移到另一端,从而使零频被移动到图像的中间。
Y=fftshift(X)
Y=fftshift(X,dim)
X为要平移的频谱,dim指出了在多维数组的哪个角度上执行平移操作。Y是经过平移的频谱
ifft2()函数:该函数用于对图像(矩阵)执行逆傅里叶变换。输出矩阵的大小与输入矩阵相同。
Y=ifft2(X)
Y=ifft2(X,m,n)
X为要计算反变换的频谱;m,n的意义与fft2()中相同;Y是反变换后得到的原始图像
matlab实现(幅度谱的意义示例)
I1=imread('cell.tif');%读入原图像
fcoef=fft2(I1);%做fft变换
spectrum=fftshift(fcoef);%将零点移到中心
temp=log(1+abs(spectrum));%对幅值做对数变换以压缩动态范围subplot(1,2,1);
imshow(temp,[]);
title('FFF');
subplot(1,2,2);
imshow(I1);
title('Source');I2=imread('circuit.tif');%读入原图像
fcoef=fft2(I2);%做fft变换
spectrum=fftshift(fcoef);%将零点移到中心
temp=log(1+abs(spectrum));%对幅值做对数变换以压缩动态范围figure;
subplot(1,2,1);
imshow(temp,[]);
title('FFF');
subplot(1,2,2);
imshow(I2);
title('Source');
美女与猫——交换两幅图像的相位谱
A=imread('beauty.jpg');
B=imread('cat.jpg');%求傅里叶变换
Af=fft2(A);
Bf=fft2(B);%分别幅度谱和相位谱
AfA=abs(Af);
AfB=angle(Af);BfA=abs(Bf);
BfB=angle(Bf);%交换相位谱并重建复数矩阵
AfR=AfA .*cos(BfB)+AfA .*sin(BfB) .*i;
BfR=BfA .*cos(AfB)+BfA .*sin(AfB) .*i;%傅里叶反变换
AR=abs(ifft2(AfR));
BR=abs(ifft2(BfR));%显示图像
subplot(2,2,1);
imshow(A);
title('美女原图像');subplot(2,2,2);
imshow(B);
title('猫的原图像');subplot(2,2,3);
imshow(AR,[]);
title('美女的幅度谱与猫的相位谱组合');subplot(2,2,4);
imshow(BR,[]);
title('猫的幅度谱与美女的相位谱组合');
4频域滤波基础
频域滤波与空间域滤波的关系:傅里叶变换可以将图像从空域变换到频域,而傅里叶反变换则可以将图像的频谱逆变换为空域图像,也即人可以直接识别的图像。
注意:将频谱原点移至图像中心,因此需要构造对应的原点在中心的滤波器,并在滤波之后使用iffshift()函数将原点移回以进行反变换
5频率域低通滤波器
理想低通滤波器:最容易想到的衰减高频成分的方法就是在一个称为“截止频率”的位置“截断”所有的高频成分,将图像频谱中所有高于这一截止频率的频谱成分设为0,低于截止频率的成分保持不变。
高斯低通滤波器:
I=imread('baby_noise.bmp');
%生成滤镜
ff=imgaussflpf(I,20);
%应用滤镜
out=imfreqfilt(I,ff);
其他相关文章请点击:
图像算法一:【图像点运算】灰度直方图、伽马变换、灰度阈值变换、分段线性变换、直方图均衡化
图像算法二:【图像几何变换】平移、镜像、转置、缩放、旋转、插值
图像算法三:【图像增强--空间域】图像平滑、中值滤波、图像锐化
图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波
图像算法五:【图像小波变换】多分辨率重构、Gabor滤波器、Haar小波
图像算法六:【彩色图像处理】彩色模型、彩图处理
图像算法七:【形态学图像处理】二值运算、膨胀、腐蚀
图像算法八:【图像分割】边缘检测(Roberts,Sobel,canny)、霍夫变换(hough)、阈值分割、区域分割
图像算法九:【图像特征提取】特征降维、PCA人脸特征抽取、局部二进制
~~~~
图像算法四:【图像增强--频率域】傅里叶变换、快速傅里叶变换、频域滤波、频域低通滤波、频域高通滤波相关推荐
- c++ opencv数字图像处理:频率域滤波--低通滤波--理想低通滤波
文章目录 前言 一.理想低通滤波器(ILPF) 二.代码 三.说明 前言 数字图像处理c++ opencv(VS2019 opencv4.53)持续更新 一.理想低通滤波器(ILPF) 通过设置频率半 ...
- 数字图像处理学习笔记5:频率域滤波1(傅里叶频谱图,低通滤波-平滑,高通滤波-锐化)
文章目录 前言 一.傅里叶变换:傅里叶频谱图 二.低通滤波 1.理想低通滤波 2.布特沃斯低通滤波 3.高斯低通滤波 4.小结 三.高通滤波 1.理想高通滤波 2.布特沃斯高通滤波 3.高斯高通滤波 ...
- 数字图像处理 空间域高斯低通滤波 MATLAB实验
一.原理_空间域高斯低通滤波 高斯低通滤波是一种使用的去噪滤波,可用于去除高斯噪声,且几乎没有振铃现象. 二.步骤 (1)读入原图像lena.bmp并显示: (2)对原图像分别添加高斯噪声,并显示加噪 ...
- 图像频率域分析之傅里叶变换
Overview 欢迎访问 持续更新:https://cgabc.xyz/posts/bcb5a7d3/ 傅里叶变换基础 傅里叶级数 法国数学家傅里叶发现,任何周期函数都可以用正弦函数和余弦函数构成的 ...
- 数字图像处理——第四章 频率域图像增强
文章目录 频率域图像增强 1. 傅里叶变换 1.1 一维傅里叶变换 1.2 二维傅里叶变换 2. 频率域滤波 2.1 陷波滤波器及其性质 2.2 空间域滤波与频率域滤波之间的对应关系 2.2.1 空间 ...
- 数字图像处理——第四章 频率域滤波
数字图像处理--第4章 频率域滤波 文章目录 数字图像处理--第4章 频率域滤波 频率域 1.傅里叶级数原理 1.1.一维傅里叶变换 1.2.二维傅里叶变换 2.python×傅里叶级数 2.1.傅里 ...
- 【OpenCV 例程200篇】83. 频率域低通滤波:印刷文本字符修复
[OpenCV 例程200篇]83. 频率域低通滤波案例:印刷文本字符修复 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更 ...
- python低通滤波器_[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波
[Python图像处理] 二十三.傅里叶变换之高通滤波和低通滤波 发布时间:2019-04-28 20:35, 浏览次数:2739 , 标签: Python 该系列文章是讲解Python OpenCV ...
- opencv学习笔记22:傅里叶变换,高通滤波,低通滤波
傅里叶变换原理 任何连续的周期信号,都可以由一组适当的正弦曲线组合而成. 下列左上图由其他三图构成. 左图经过傅里叶变换,由时域图转换到频域图.相互可逆 相位:不是同时开始的一组余弦函数,在叠加时要体 ...
最新文章
- 学python买什么书好-学python3什么书好
- 微服务架构可视化平台实践
- oracle语句mysql数据库名称_查询oracle数据库中当前数据库所有表的名称
- Flex学习的利器《Hello Flex4》
- 暂时放在首页,因为需要大家帮忙!!
- linux的vim显示E172,Linux命令:vim
- python numpy.random模块中提供啦大量的随机数相关的函数
- 十年再出发!阿里云智能总裁张建锋演讲全记录
- css中属性设置成百分比
- SIP(Session Initiation Protocol,会话初始协议)
- 【零基础学Java】—this关键字的三种用法+Java继承的三个特点(二十一)
- VBA 自动关闭 弹出的对话框 + VBA错误捕捉
- feign整合sential_Sentinel 和 Feign 集成时,方法名称写错
- gitgithub 的使用
- web 前端签名插件_10款前端开发神器,助你成前端高手?
- Spring Boot中自动注入没有生效,报NullPointer的问题
- mysql数据库的字符集设置
- 算法帝国:华尔街交易怪兽的核武器缔造史
- 如何基于 RISC-V CPU 集成一个 RISC-V SoC 呢?(上)
- ArcGIS(ESRI)的发展历史和版本历史(简介)
热门文章
- git 删除和复制远程分支
- MVP 模式实例解析
- bzoj1691/luogu2869 [USACO07DEC]挑剔的美食家 (STL::set)
- IE webDriver 驱动下载地址
- [原创]java WEB学习笔记58:Struts2学习之路---Result 详解 type属性,通配符映射
- [manacher] hdu 3294 Girls#39; research
- 转载 漫谈机器学习中的距离和相似性度量方法
- 装了xcode3.2 后再装xcode4.1 出现的问题 永远build不过
- Linux0.11 kernel/exit.c中的free_page_tables()
- 【python】for..range练习 与函数的练习题