反dft

Posted cyssmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反dft相关的知识,希望对你有一定的参考价值。

实验效果:
技术图片
代码地址:https://github.com/cyssmile/openCV_learning_notes/blob/master/opencv_test/opencv_030/main.cpp

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int argc,char** arrgv) 
{
	Mat source = imread("D:/images/test.jpg",IMREAD_GRAYSCALE);
	if (source.empty()) 
	{
		cout << "can`t open this ph" << endl;
	}
	imshow("source",source);
	source.convertTo(source,CV_32FC1,1.0/255.0);
	Mat sourceComplex[2] = {source,Mat::zeros(source.size(),CV_32F)};
	Mat dftReady;
	merge(sourceComplex, 2, dftReady);
	dft(dftReady,dftReady,DFT_COMPLEX_OUTPUT);
	Mat dst;
	dft(dftReady, dst, DFT_INVERSE | DFT_REAL_OUTPUT | DFT_SCALE);
	imshow("invertDft", dst);
	waitKey(0);
	destroyAllWindows();
	return 0;
}

注意:如果在预处理阶段。没有进行尺度变换会出现以下结果:
技术图片

source.convertTo(source,CV_32FC1,1.0);

正常应该

source.convertTo(source,CV_32FC1,1.0/255.0);

以上是关于反dft的主要内容,如果未能解决你的问题,请参考以下文章

傅里叶域中的去模糊算法

《DSP using MATLAB》示例Example5.6

有没有办法从复杂的 ma 中制作 dft

DFT 和 FFT 之间有啥区别使 FFT 如此之快?

OpenCV-DFT最优尺寸cv::getOptimalDFTSize

从JVM的角度看JAVA代码--代码优化