opencv3.2.0图像离散傅里叶变换
源码:
##名称:离散傅里叶变换
##平台:QT5.7.1+opencv3.2.0
##日期:2017年12月13、 /**** 新建QT控制台程序****/ #include <QCoreApplication>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace std;
using namespace cv; int main()
{
//读入原始图像
Mat srcImage = imread("/home/ttwang/Valley_logo.jpg",);
imshow("srcImage",srcImage); /****将图像扩大到合适尺寸********/
int m = getOptimalDFTSize(srcImage.rows);
int n = getOptimalDFTSize(srcImage.cols);
Mat padded;
copyMakeBorder(srcImage,padded,,m-srcImage.rows,,n-srcImage.cols,BORDER_CONSTANT,
Scalar::all()); /******为傅里叶变换的结果(实部和虚部)分配存储空间******/
Mat planes[] = {Mat_<float>(padded),Mat::zeros(padded.size(),CV_32F)};
Mat complexI;
merge(planes,,complexI); /********进行傅里叶变换*********/
dft(complexI,complexI); /*********将复数转化为幅值***********/
split(complexI,planes);
magnitude(planes[],planes[],planes[]);
Mat magnitudeImage = planes[]; /**********进行对数尺度**********/
magnitudeImage += Scalar::all();
log(magnitudeImage,magnitudeImage); /*******剪切和重分布幅度图象限 ******/
magnitudeImage = magnitudeImage(Rect(,,magnitudeImage.cols & -,magnitudeImage.rows & -));
int cx = magnitudeImage.cols / ;
int cy = magnitudeImage.rows /;
Mat q0(magnitudeImage,Rect(,,cx,cy));
Mat q1(magnitudeImage,Rect(cx,,cx,cy));
Mat q2(magnitudeImage,Rect(,cy,cx,cy));
Mat q3(magnitudeImage,Rect(cx,cy,cx,cy));
Mat tmp;
q0.copyTo(tmp);//交换象限(左上与右下交换)
q3.copyTo(q0);
tmp.copyTo(q3); q1.copyTo(tmp);//交换象限(右上与左下交换)
q2.copyTo(q1);
tmp.copyTo(q2); /********归一化********/
normalize(magnitudeImage,magnitudeImage,,,NORM_MINMAX); /******显示效果图******/
imshow("magnitudeImage",magnitudeImage); waitKey();
return ;
}
运行结果:

效果图 原图
opencv3.2.0图像离散傅里叶变换的更多相关文章
- opencv3.2.0图像对比度与亮度调整
##名称:图像对象度与对比度调整(由轨迹条分别控制对比度和亮度值) ##平台:QT5.7.1+opencv3.2.0 ##时间:2017年12月13日 /***********建立QT控制台程序*** ...
- Opencv 实现图像的离散傅里叶变换(DFT)、卷积运算(相关滤波)
我是做Tracking 的,对于速度要求非常高.发现傅里叶变换能够使用. 于是学习之. 核心: 最根本的一点就是将时域内的信号转移到频域里面.这样时域里的卷积能够转换为频域内的乘积! 在分析图像信号的 ...
- Python 实现图像快速傅里叶变换和离散余弦变换
图像的正交变换在数字图像的处理与分析中起着很重要的作用,被广泛应用于图像增强.去噪.压缩编码等众多领域.本文手工实现了二维离散傅里叶变换和二维离散余弦变换算法,并在多个图像样本上进行测试,以探究二者的 ...
- opencv3.2.0 分离颜色通道&多通道图像混合
##名称:分离颜色通道&多通道图像混合 ##平台:QT5.7.1+OpenCV3.2.0 ##时间:2017年12月11日 /***************创建QT控制台程序********* ...
- OpenCV3.1.0中调用MHI(Motion History Images, 运动历史图像)
写在前边: OpenCV3.0+要想使用MHI,就要现安装扩展模块opencv_contrib.安装方法见:ubuntu 14.04 64位 安装Opencv3.1.0 (包含opencv_contr ...
- opencv 3 core组件进阶(3 离散傅里叶变换;输入输出XML和YAML文件)
离散傅里叶变换 #include "opencv2/core/core.hpp" #include "opencv2/imgproc/imgproc.hpp" ...
- c语言数字图像处理(六):二维离散傅里叶变换
基础知识 复数表示 C = R + jI 极坐标:C = |C|(cosθ + jsinθ) 欧拉公式:C = |C|ejθ 有关更多的时域与复频域的知识可以学习复变函数与积分变换,本篇文章只给出DF ...
- 【转】离散傅里叶变换-DFT(FFT)基础
转:https://blog.csdn.net/zhangxz259/article/details/81627341 什么是离散傅里叶变换 matlab例子 本文是从最基础的知识开始讲解,力求用最通 ...
- OpenCV离散傅里叶变换
离散傅里叶变换 作用:得到图像中几何结构信息 结论:傅里叶变换后的白色部分(即幅度较大的低频部分),表示的是图像中慢变化的特性,或者说是灰度变化缓慢的特性(低频部分). 傅里叶变换后的黑色部分(即幅度 ...
随机推荐
- php unset变量
<?php $a="abc"; $b="def"; unset($a,$b); echo $a."\n"; echo $b." ...
- POJ 1015
#include<iostream> #include<algorithm> #define MAXN 201 #define count C_ount using names ...
- easyui 中iframe嵌套页面,提示弹窗遮罩的解决方法,parent.$.messager.alert和parent.$.messager.confirm
项目中用到easyui 布局,用到north,west,center三个区域,且在center中间区域嵌入iframe标签.在主内容区做一些小提示弹窗(例如删除前的弹窗提示确认)时,会遇到遮罩问题,由 ...
- Scrapy框架--cookie的获取/传递/本地保存
环境:Python3.6 + Scrapy1.4 我要实现的东西:1. 完成模拟登陆 2. 登陆成功后提取出cookie,然后保存到本地cookie.txt文件中 3. ...
- 命令行创建Android应用,命令行生成签名文件,命令行查看签名信息,对APK包签名并编译运行
一.命令行创建Android应用 android create project -n HelloWorld -t android-22 -p HelloWorld1 -k org.crazyit.he ...
- Http编程(二)使用Apache 的API实现
要下载jar包 import java.io.FileOutputStream; import java.io.IOException; import org.apache.http.HttpEnti ...
- Disconf 学习系列之Disconf 的主要目标
不多说,直接上干货! 部署极其简单:同一个上线包,无须改动配置,即可在 多个环境中(RD/QA/PRODUCTION) 上线: 部署动态化:更改配置,无需重新打包或重启,即可 实时生效: 统一管理:提 ...
- Javac语法糖之其它
1.变长参数 class VarialbeArgumentsDemo { public static void doWork(int... a) {//可变参数 } public static voi ...
- css 设置滚动条的样式
/*移动端显示滚动条*/ .layui-table-body::-webkit-scrollbar { -webkit-appearance: none; } .layui-table-body::- ...
- 使用httpClient处理get请求或post请求
另外一个版本: http://www.cnblogs.com/wenbronk/p/6671928.html 在java代码中调用http请求, 并将返回的参数进行处理 get请求: public s ...