离散傅里叶变换:
傅里叶变换将讲时域信号分解为不同频率的正弦信号或余弦信号叠加之和,时域分析只能反映信号的幅值随时间变化得情况,除单频率分量的简谐波外,很难对信息频率的组成及各频率分量的大小进行详细分析,而信号频谱分析提供了比时域信号波形更直观、更丰富的信息。在实际的图像处理中,我们仅仅使用了图像幅度信息,因为幅度图像半酣了我们需要的原图像几乎所有的几何信息。然和,如果你想通过修改幅度图像或者相位图像的方法来间接修改原空间图像,你需要使用逆傅里叶变换来得到修改后的空间图像,这样你就必须同时保留幅度图像和相位图像。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>
using namespace cv;
using namespace std;
Mat DFT(Mat srcImage)
{
Mat srcGray;
cvtColor(srcImage, srcGray, CV_RGB2GRAY);//灰度图像作傅里叶变换
//将输入图像延扩到最佳的尺寸
int nRows = getOptimalDFTSize(srcGray.rows);//2,3,5倍有更高效率的傅里叶变换
int nCols = getOptimalDFTSize(srcGray.cols);
Mat resultImage;
//把灰度图像放在左上角,向右边和下边扩展图像
//将添加的像素初始化为0