图像傅里叶变换的作用:

  • 频谱分析,获取图像中高频低频的分布情况
  • 快速卷积,两个矩阵的傅里叶变换结果相乘

案例代码:

cv::Mat TestOpencvDft()
{cv::Mat lena = cv::imread("lena.jpg", 0);cv::resize(lena, lena, cv::Size(501, 501));// 确定适合做傅里叶变换的图像最佳尺寸int rows = cv::getOptimalDFTSize(lena.rows);int cols = cv::getOptimalDFTSize(lena.cols);// 扩展图像cv::Mat lena_pad;int up = (rows - lena.rows) / 2;int down = rows - lena.rows - up;int left = (cols - lena.cols) / 2;int right = cols - lena.cols - left;cv::copyMakeBorder(lena, lena_pad, up, down, left, right, cv::BORDER_CONSTANT);// 构建输入cv::Mat channels[2], complex;channels[0] = cv::Mat_<float>(lena_pad); // 构建实数部分channels[1] = cv::Mat::zeros(lena_pad.size(), CV_32FC1); // 构建虚数部分cv::merge(channels, 2, complex); // 构建复数矩阵// 离散傅里叶变换cv::Mat lena_dft;cv::dft(complex, lena_dft);// 拆分实数部分和虚数部分,将复数转化为幅值cv::Mat result_channels[2];cv::split(lena_dft, result_channels);cv::Mat amplitude;cv::magnitude(result_channels[0], result_channels[1], amplitude);// 将幅值进行对数缩小,公式: amp = log(amp+1),这里 +1 是为了防止有小于 1 的值转换后形成负数amplitude += 1;log(amplitude, amplitude);// 截取和原图对应的区域amplitude = amplitude(cv::Rect(up, left, lena.cols, lena.rows));cv::normalize(amplitude, amplitude, 0, 1, cv::NORM_MINMAX);// 最值中心化int center_x = amplitude.cols / 2;int center_y = amplitude.rows / 2;// 分解成 4 个象限cv::Mat up_left = amplitude(cv::Rect(0, 0, center_x, center_y));cv::Mat up_right = amplitude(cv::Rect(center_x, 0, center_x, center_y));cv::Mat down_left = amplitude(cv::Rect(0, center_y, center_x, center_y));cv::Mat down_right = amplitude(cv::Rect(center_x, center_y, center_x, center_y));// 对角区域调换cv::Mat temp;temp = up_left.clone();down_right.copyTo(up_left);temp.copyTo(down_right);temp = up_right.clone();down_left.copyTo(up_right);temp.copyTo(down_left);// 傅里叶逆变换cv::Mat re;cv::idft(lena_dft, re, cv::DFT_SCALE);cv::Mat re_channels[2];cv::split(re, re_channels);cv::Mat result;re_channels[0].convertTo(result, CV_8UC1);return result;
}

输入图片:

读取灰度图:

修改宽高

按照最优的宽高扩展图像

傅里叶变换结果

转换成幅值图:

  • 四个角是低频部分,中心是高频部分

    最值中心化:
  • 将低频部分移动到中心

    傅里叶逆变换结果

【OpenCV4】图像的傅里叶变换 cv::dft() 和逆变换 cv::idft() 解析(c++)相关推荐

  1. opencv4 图像特征匹配_概述 | 全景图像拼接技术全解析

    点击上方蓝字关注我们 微信公众号:OpenCV学堂 关注获取更多计算机视觉与深度学习知识 前言 图像/视频拼接的主要目的是为了解决相机视野(FOV-Field Of View)限制,生成更宽的FOV图 ...

  2. python的图像傅里叶变换 np.fft.fft2 cv.dft 函数

    码字不易,如果对您有所帮助,记着点赞哦! 一. 图像傅里叶变换原理: 原理简介请参考:https://www.cnblogs.com/wojianxin/p/12529809.html 对二维图像进行 ...

  3. 图像的傅里叶变换和逆变换C++版

    目录 头文件:包含OpenCV和标准库输出调试 读入并显示原图 进行离散傅里叶变换和逆变换 显示傅里叶变换图 完整代码: 参考文献: 首先把整体程序分段,每段都是单独的功能.最后再把完整代码给出: 头 ...

  4. 【图像处理】——傅里叶变换、DFT以及在图像上的应用

    目录 1.傅里叶变换 2.DFT 1)一维离散傅里叶变换: 离散傅里叶变换例子 2)二维离散傅里叶变换: 注:连续变换和离散变化学习心得 3.DFT在图像上的应用 注意:二维和一维的区别 4.DFT在 ...

  5. CV:计算机视觉技术之图像基础知识(一)—以python的cv2库来了解计算机视觉图像基础(傅里叶变换-频域-时域/各种滤波器-线性-非线性-均值-中值-高斯-双边)

    CV:计算机视觉技术之图像基础知识(一)-以python的cv2库来了解计算机视觉图像基础(傅里叶变换-频域-时域/各种滤波器-线性-非线性-均值-中值-高斯-双边) 目录 一.图像中的傅里叶变换 1 ...

  6. 【 MATLAB 】离散傅里叶变换(DFT)以及逆变换(IDFT)的MATLAB实现

    刚刚写过一篇用MATLAB实现离散傅里叶级数的博文,如下: [ MATLAB ]离散傅里叶级数(DFS)及 IDFS 的 MATLAB 实现 离散傅里叶变换不是一种神奇的东西,它和离散傅里叶级数关系很 ...

  7. 利用python对图像进行傅里叶变换_python用opencv 图像傅里叶变换

    傅里叶变换 dft = cv.dft(np.float32(img),flags = cv.DFT_COMPLEX_OUTPUT) 傅里叶逆变换 img_back = cv.idft(f_ishift ...

  8. 使用OpenCV实现离散傅里叶变换(DFT)

    使用OpenCV实现离散傅里叶变换(DFT) 傅里叶变换,妈呀这个东东好高级啊!真的高级吗?理解起来还真是有点困难,需要一些高等数学的基础.有了OpenCV,你不理解也没问题,会用就OK!就好比你会用 ...

  9. 利用python对图像进行傅里叶变换_(九)OpenCV-Python学习—图像傅里叶变换

    对于二维图片,可以对其进行傅里叶变换,获取图片的频谱信息.频谱有很多应用,包括显著性检测,卷积定理,频率域滤波等,下面是图片傅里叶变换的一些基本概念: 1. 图像傅里叶变换 对于M行N列的图像矩阵f( ...

最新文章

  1. 中国人工智能AI框架自主研发
  2. Xamarin.android Activity动画切换效果实现
  3. iOS混淆 -- 生成define 替换名
  4. 服务器集群后产生那些问题
  5. 【Python3爬虫】破解时光网登录加密参数并实现模拟登录
  6. 泥塑课c语言,【C】泥塑课(From http://www.jisuanke.com/)
  7. 一个人如果不学习,30岁就死了,活着的只是重复和应付
  8. 一个进程(Process)最多可以生成多少个线程(Thread)
  9. 【Java_Spring】控制反转IOC(Inversion of Control)
  10. 真没想到!时隔3年,被废掉武功的快播,依然是最受欢迎的播放器
  11. BP神经网络python代码实现
  12. 【教程】鼠标右键新建添加RTF文档
  13. git 清除 commit 记录
  14. linux安装包apr安装说明,Linux下安装Apr及其Apr-util的基本步骤
  15. 【CTA】CTA认证要求打开日历时提示联系人权限确认
  16. RM-MEDA的理解与分析
  17. 包装类的使用:自动装箱与自动拆箱
  18. 如何学习一门新的编程语言
  19. 【转】面向程序员的数据库访问性能优化法则
  20. 《MATLAB语音信号分析与合成(第二版)》:第10章 语音信号的合成算法

热门文章

  1. echarts3D地图塌陷问题
  2. html嘻哈素材,音效素材-470个现代嘻哈风格混合Trap声音流行音乐会节目音乐制作工具包...
  3. Java计算机毕业设计单位职工房产管理源码+系统+数据库+lw文档
  4. SaaS模式在国内的基本现状研究
  5. 密码计算机手机版,手机密码软件
  6. Spring Boot请求403 Forbidden错误
  7. 研发项目工时统计工具哪个好?9大工时管理系统盘点
  8. 【容易打工网】办公室礼仪 职场生存十八定律
  9. 群发邮箱软件哪个好?邮箱群发平台哪个好用?
  10. 三大特性看明白中国电影市场