cv::Mat  CfilterDlg::IFFT(cv::Mat grayImage)
{// 将图像拓展到傅里叶变换的最佳尺寸int row = cv::getOptimalDFTSize(grayImage.rows);int col = cv::getOptimalDFTSize(grayImage.cols);// 将扩展后的尺寸设置为0cv::Mat padded;copyMakeBorder(grayImage, padded, 0, row - grayImage.rows, 0, col - grayImage.cols, cv::BORDER_CONSTANT, cv::Scalar::all(0));// 傅里叶计算的实部与虚部cv::Mat planes[] = { cv::Mat_<float>(padded),cv::Mat_<float>(padded.size(),CV_32F) };cv::Mat complexI;cv::merge(planes, 2, complexI);// 进行傅里叶变换cv::dft(complexI, complexI);// 将复数转换为幅值cv::Mat magnitudeImage;cv::split(complexI, planes);// 滤波处理for (int i = 0; i < 2; i++){for (int r = 0; r < padded.rows; r++){for (int c = 0; c < padded.cols; c++){float distance = sqrt(pow((r - padded.rows / 2.0f), 2) + pow((padded.cols - padded.cols / 2.0f), 2));float fv = 1 / (1 + pow((distance / 200.0f), (2 * 2.0f))); // Butterworth 滤波函数planes[i].at<float>(r, c) *= fv;}}}// 重做合并图片cv::merge(planes, 2, complexI);// 逆傅里叶变换cv::Mat ifft, result;cv::idft(complexI, ifft, cv::DFT_REAL_OUTPUT);cv::split(ifft, planes);cv::magnitude(planes[0], planes[1], magnitudeImage);// 归一化normalize(magnitudeImage, result, 0, 255, CV_MINMAX);result.convertTo(result, CV_8UC1);cv::imwrite("result.jpg", result);return result;
}

原图

处理图

对比效果

对比发现,高光部分 处理效果明显。

Opencv 基于傅里叶变换的图片滤波处理相关推荐

  1. OpenCV实现基于傅里叶变换(FFT)的旋转文本校正(文字方向检测)

    OpenCV实现基于傅里叶变换的旋转文本校正 from: http://johnhany.net/2013/11/dft-based-text-rotation-correction/ 发布于 201 ...

  2. OpenCV—python 图像矫正(基于傅里叶变换—基于透视变换)

    文章目录 一.基于傅里叶变换的图像矫正 1.1 傅里叶变换原理 1.2 傅里叶变换过程一系列函数 1.3 图像矫正处理流程 二.旋转图像矫正 三.基于透视的图像矫正 3.1 直接变换 3.2 自动获取 ...

  3. 实战精通OpenCV第一章--基于Android的图片卡通化及肤色改变(二)

    转载请注明出处:https://blog.csdn.net/mymottoissh/article/details/86723580 第一章 基于Android的图片卡通化及肤色改变 一.基于Visu ...

  4. 实战精通OpenCV第一章--基于Android的图片卡通化及肤色改变(一)

    转载请注明出处:https://blog.csdn.net/mymottoissh/article/details/86709457 本系列博客是基于<Mastering OpenCV with ...

  5. 实战精通OpenCV第一章--基于Android的图片卡通化及肤色改变(三)

    第一章 基于Android的图片卡通化及肤色改变 一.基于Visual Studio的图片卡通化 二.基于Visual Studio的肤色改变 三.Android代码移植 最近由于工作比较忙,很抱歉没 ...

  6. OPenCV:傅里叶变换、时域和频域、频谱和相位谱、傅里叶级数、离散傅里叶变换(DFT)、频域滤波、高通和低通滤波器、带通和带阻滤波器

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 快速了解傅立叶变换(播放PPT即能动态地显示gif图)    ...

  7. Opencv基于改进VGG19的表情识别系统(源码&Fer2013&教程)

    1.研究背景 在深度学习中,传统的卷积神经网络对面部表情特征的提取不充分以及计算参数量较大的问题,导致分类准确率偏低.因此,提出了一种基于改进的VGG19网络的人脸表情识别算法.首先,对数据进行增强如 ...

  8. OpenCV快速傅里叶变换(FFT)用于图像和视讯流的模糊检测

    OpenCV快速傅里叶变换(FFT)用于图像和视频流的模糊检测 翻译自[OpenCV Fast Fourier Transform (FFT) for blur detection in images ...

  9. Python,OpenCV基于支持向量机SVM的手写数字OCR

    Python,OpenCV基于支持向量机SVM的手写数字OCR 1. 效果图 2. SVM及原理 2. 源码 2.1 SVM的手写数字OCR 2.2 非线性SVM 参考 上一节介绍了基于KNN的手写数 ...

最新文章

  1. 系统动力学_System Dynamics
  2. MATLAB 与Modelsim之间通过Linker的联合仿真
  3. Struts2-整理笔记(三)结果处理跳转、获得servletAPI原生
  4. Wireshark的https代理抓包(whistle中间人代理)
  5. CodeForces - 91B Queue(单调队列+二分)
  6. mysql报错1241_flask内的mysql插入语句报错:1241, 'Operand should contain 1 column(s)
  7. Windows Server 2008 R2无密码共享设置
  8. userService 用户 会员 系统设计 v2 q224 .doc
  9. Oracle 自动生成的视图VM_NSO_1
  10. EF There is already an open DataReader associated with this Command
  11. C# AForge视频录像
  12. clone git 修改保存路径_SEO优化知识一般需要了解什么代码_学云网
  13. SQL中Date 函数
  14. 北航计算机控制系统实验报告,北航计算机控制系统实验报告教程.doc
  15. 2018:MIXED PRECISION TRAINING OF CONVOLUTIONAL NEURAL NETWORKS USING INTEGER OPERATIONS利用整数运算对卷积神经网络
  16. 南开大学张昊计算机,张昊(东北大学工商管理学院副教授)_百度百科
  17. 今天测试了两个跑步软件
  18. Excel根据出生日期和身份证使用公式计算年龄
  19. 8266接入华为hilink Demo之APP验证(三)
  20. 软件 黑苹果盒盖不休眠_如何设置mac盖上盖子不休眠

热门文章

  1. 一种节能环保(省钱)的家庭淋浴换热器
  2. 【黑马程序员】小乒乓,大热情
  3. RunZeBlog项目开发流程
  4. 选对社群引流方式,业绩翻倍
  5. iphone x php兼容吗,iPhone X/8/8P 都支持什么网络?别买错了
  6. java 打印 小票_JAVA调用小票打印机
  7. Android8.0 Media系统(一)
  8. Android nomedia问题分析
  9. 与器件封装热特性有关的参数学习
  10. 基于单片机的车辆防碰撞及自动刹车系统(STC89C52RC芯片+超声波传感器HC-SR04+液晶屏1602+继电器+蜂鸣器)...