我正在嘗試實現離散傅立葉逆變換我預先應用離散傅立葉變換的圖像。輸出是兩種圖像。一張圖像位於正確位置,另一張圖像位於反向位置。你能幫我解決這個問題嗎?逆離散傅立葉變換輸出圖像
這是我寫的代碼。
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