六、C++离散傅里叶逆变换
C++离散傅里叶逆变换
一、序言:
该教程承接上文的离散傅里叶变换,用于进行离散傅里叶逆变换。
二、设计目标
对复数数组进行离散傅里叶逆变换,并生成可供使用的图像类。
三、详细步骤
输入:经傅里叶变换后产生的复数数组
输出:MyImage图像
定义:
static MyImage* Idft2(ComplexNumber *Scr,int const width,int const height);
实现:MyImage* MyCV::Idft2(ComplexNumber *Scr, int width, int height)
{
int bytesPerLine = (width*+)/*;
double* double_data = new double[width*height];
memset(double_data,,sizeof(double_data)*sizeof(double)); //全部赋值为0
double fixed_factor_for_axisX = ( * PI) / height; // evaluate i2π/N of i2πux/N, and store the value for computing efficiency
double fixed_factor_for_axisY = ( * PI) / width; // evaluate i2π/N of i2πux/N, and store the value for computing efficiency
for (int x = ; x<height; x++) {
for (int y = ; y<width; y++) {
for (int u = ; u<height; u++) {
for (int v = ; v<width; v++) {
double powerU = u * x * fixed_factor_for_axisX; // evaluate i2πux/N
double powerV = v * y * fixed_factor_for_axisY; // evaluate i2πux/N
ComplexNumber cplTemp;
cplTemp.SetValue(cos(powerU + powerV), sin(powerU + powerV));
double_data[y + x*width] = double_data[y + x*width] +
((Scr[v + u*width] * cplTemp).m_rl
/(height*width));
}
}
}
}
unsigned char *idft2_data = new unsigned char[bytesPerLine*height];//存储处理后的数据
for(int i=;i<height;i++)
for(int j=;j<width;j++)
{
idft2_data[i*bytesPerLine+j] = (unsigned char)double_data[i*width+j];
}
return new MyImage(idft2_data,width,height,MyImage::format::GRAY8);
}
至此,离散傅里叶逆变换的方法实现完成,效果图如下:


如果上述教程或代码中有任何错误,欢迎批评和指证。
六、C++离散傅里叶逆变换的更多相关文章
- Matlab信号处理基础
一. 简介 离散傅立叶.离散余弦和离散小波变换是图像.音频信号常用基础操作,时域信号转换到不同变换域以后,会导致不同程度的能量集中,信息隐藏利用这个原理在变换域选择适当位置系数进行修改,嵌入信息,并确 ...
- FFT [TPLY]
FFT [TPLY] 题目链接 https://www.luogu.org/problemnew/show/1919 https://www.luogu.org/problemnew/show/380 ...
- 「快速傅里叶变换(FFT)」学习笔记
FFT即快速傅里叶变换,离散傅里叶变换及其逆变换的快速算法.在OI中用来优化多项式乘法. 本文主要目的是便于自己整理.复习 FFT的算法思路 已知两个多项式的系数表达式,要求其卷积的系数表达式. 先将 ...
- 快速傅里叶变换FFT& 数论变换NTT
相关知识 时间域上的函数f(t)经过傅里叶变换(Fourier Transform)变成频率域上的F(w),也就是用一些不同频率正弦曲线的加 权叠加得到时间域上的信号. \[ F(\omega)=\m ...
- 口胡FFT现场(没准就听懂了)&&FFT学习笔记
前言(不想听的可以跳到下面) OK.蒟蒻又来口胡了. 自从ZJOI2019上Day的数论课上的多项式听到懵逼了,所以我就下定决心要学好多项式.感觉自己以前学的多项式都是假的. 但是一直在咕咕,现在是中 ...
- 浅谈FFT&NTT
复数及单位根 复数的定义大概就是:\(i^2=-1\),其中\(i\)就是虚数单位. 那么,在复数意义下,对于方程: \[ x^n=1 \] 就必定有\(n\)个解,这\(n\)个解的分布一定是在复平 ...
- $FFT$(快速傅里叶变换)
- 概念引入 - 点值表示 对于一个$n - 1$次多项式$A(x)$,可以通过确定$n$个点与值(即$x$和$y$)来表示这唯一的$A(x)$ - 复数 对于一元二次方程 $$x^2 + 1 = 0 ...
- [拉格朗日反演][FFT][NTT][多项式大全]详解
1.多项式的两种表示法 1.系数表示法 我们最常用的多项式表示法就是系数表示法,一个次数界为\(n\)的多项式\(S(x)\)可以用一个向量\(s=(s_0,s_1,s_2,\cdots,s_n-1) ...
- 「学习笔记」Fast Fourier Transform
前言 快速傅里叶变换(\(\text{Fast Fourier Transform,FFT}\) )是一种能在\(O(n \log n)\)的时间内完成多项式乘法的算法,在\(OI\)中的应用很多,是 ...
随机推荐
- 16.Tomcat弱口令 && 后台getshell漏洞
Tomcat7+ 弱口令 && 后台getshell漏洞 Tomcat版本:8.0 环境说明 Tomcat支持在后台部署war文件,可以直接将webshell部署到web目录下.其中, ...
- 9.CVE-2016-5195(脏牛)内核提权漏洞分析
漏洞描述: 漏洞编号:CVE-2016-5195 漏洞名称:脏牛(Dirty COW) 漏洞危害:低权限用户利用该漏洞技术可以在全版本Linux系统上实现本地提权 影响范围:Linux内核>=2 ...
- 1. sqlmap超详细笔记+思维导图
sqlmap思维导图: 基本操作笔记: -u #注入点 -f #指纹判别数据库类型 -b #获取数据库版本信息 -p #指定可测试的参数(?page=1&id=2 -p "page, ...
- Java静态导入
Java静态导入 静态导入的语法是: import static ...; 静态导入的好处就是可以简化一些操作,例如System.out.println(…);就可以将其写入一个静态方法 import ...
- DES加密解决算法
/// <summary> /// DES加密算法 /// sKey为8位或16位 /// </summary> /// <param name="pToEnc ...
- Log4NET的日志框架的使用
日志信息分类 1.等级由低到高:debug<info<warn<Error<Fatal; 2.区别: debug 级别最低,可以随意的使用于任何觉得有利于在调试时更详细的了解系 ...
- 图像的读取,显示与保存(基于skimage模块)
一 skiamge模块 skimage包的全称是scikit-image SciKit (toolkit for SciPy) ,它对scipy.ndimage进行了扩展,提供了更多的图片处理功能.它 ...
- JSP自学笔记
基础语法 1.对比 JSP:java平台安全性高,适合开发大型的.企业级的web应用程序: ASP.net:.NET平台简单易学,安全性和跨平台性差: PHP:简单高效,成本低,开发周期短,适合中小型 ...
- ASP.NET对象
ASP.NET有五个基本的常用对象 一张图胜过前言万语 ASP.NET对象重头戏 对象名 解释 属性 方法 例子 Request 获取客户端数据信息 1.UserAgent:用来获取客户端浏览器 ...
- 【转载】【爬坑记录】hyperledger caliper 性能测试工具使用的一些问题记录
原文: https://blog.csdn.net/raogeeg/article/details/82752613 安装方法详见:https://github.com/hyperledger/cal ...