六、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\)中的应用很多,是 ...
随机推荐
- 解决Torch.load()错误信息: UnicodeDecodeError: 'ascii' codec can't decode byte 0x8d in position 0: ordinal not in range(128)
使用PyTorch跑pretrained预训练模型的时候,发现在加载数据的时候会报错,具体错误信息如下: File "main.py", line 238, in main_wor ...
- 浅谈JavaScript--事件委托与事件监听
事件监听 该方法用于向指定元素添加事件句柄(代码块),且不会覆盖已存在的事件句柄. 即可以向同一个元素添加同一个事件多次. 添加事件 语法: element.addEventListener(even ...
- 【转】vs发布msi程序详解
源地址:http://wenku.baidu.com/link?url=MV1Mf7IukCZ0cab8AzXQoQ3MAXeUAHGz5b2IuUL4Kw-hCI90ZyBKXwKeQA3t3-SV ...
- 图解Linux安装jdk
测试是否安装成功: 查看Java的版本命令:java -version Windows:查看java版本的方法是:运行--->cmd,输入java –version.注意: linux:终端中输 ...
- 2017-10-7 清北刷题冲刺班p.m
测试 A 同花顺 文件名 输入文件 输出文件 时间限制 空间限制card.cpp/c/pas card.in card.out 1s 512MB题目描述所谓同花顺,就是指一些扑克牌,它们花色相同,并且 ...
- 消息队列RabbitMQ、缓存数据库Redis
1.RabbitMQ消息队列 1.1 RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中 ...
- TOPOI 测验1320, 问题C: 4410: [CF41D]Pawn 解题报告
题目链接 题目大意 在一个树阵中按一定走法取一些树,使和最大且被 k+1整除 解题思路 类似一个数塔问题 因为最后的结果要被 k+1 整除,所以可以记录到每一个点 对 k+1 取余结果不同的最优解( ...
- 洛谷 P4397 [JLOI2014]聪明的燕姿 / TOPOI 测验1315, 问题E: 1935: 聪明的燕姿 解题报告
题目链接 : 1. 洛谷 2.topoi . 大致题意:输入一个数s,找出所有约数和为s的数 关于一个数的约数和求法: 一个>1的整数可以被分解为多个 质数 的乘方,设数 s = p1k1 * ...
- 跳坑 小程序swiper组件 轮播图片 右边空白问题
swiper 组件 设置轮播图片时,右侧会出现空白的情况:是因为 swiper组件有默认的 高度和宽度,所以我们在设置图片高度和宽度的同时, 也要为 设置高度和宽度,和高度和宽度样式一样的就可以.
- thinkphp5更新时验证数据
在编辑页面form表单中添加一个隐藏域:<input type="hidden" name="表中id字段名" value="get方式传过来的 ...