我正在尝试实现离散傅立叶逆变换我预先应用离散傅立叶变换的图像。输出是两种图像。一张图像位于正确位置,另一张图像位于反向位置。你能帮我解决这个问题吗?逆离散傅立叶变换输出图像
这是我写的代码。
double inverseFourierReal = 0.0;
double inverseFourierImg = 0.0;
double degreeValue,cosValue,sinValue;
// double inverse = inverseFourier;
for(int rowm = 0; rowm < rows; rowm++)
for(int coln = 0; coln < cols; coln++) {
inverseFourierImg = 0.0;
inverseFourierReal = 0.0;
for(int rowk = 0; rowk < rows; rowk++) {
for(int coll = 0; coll < cols; coll++) {
degreeValue = 2. * PI * (float(rowk*rowm)/rows + float(coll*coln)/cols);
cosValue = cos(degreeValue);
sinValue = sin(degreeValue);
inverseFourierReal += cosValue * fourierImageReal[rowk][coll] - sinValue * fourierImageImg[rowk][coll];
//inverseFourierImg += (cosValue * fourierImageImg[rowk][coll] + sinValue * fourierImageReal[rowk][coll]);
//cout<<inverseFourierReal;
}
}
invr_FourierReal.at<double>(rowm,coln) = abs((inverseFourierReal)/(sqrt(rows*cols)));
// invr_FourierReal.at<double>(rowm,coln) = double(inverseFourierReal)/(sqrt(rows*cols));
//invr_FourierImg.at<double>(int(rowm),int(coln)) = double(inverseFourierImg)/(sqrt(rows*cols));
}
您可以在这里看到的输出图像:
编辑: 我已经改变了代码,你可以看到新的输出。它是颠倒的。 我使用了Lena图像作为输入
P.S抱歉我的英语水平很差。
当我们没有看到你正在做的这部分代码时,我们该如何帮助?最可能类似的问题:[使用1D变换实现二维逆傅里叶变换](http://stackoverflow.com/a/40816757/2521214) – Spektre
@Spektre感谢您的回复。我已经添加了我用于逆向变换的那段代码 – Hikmat
添加了答案,至少我是这么看的。 – Spektre