我想在处理“FFT”之前将汉宁窗口应用于图像。我找到了 Ruben Bjorge 写的一个脚本:
number size, sizeX, sizeY, top, left, bottom, right, ii, posX, posY
image front, hannX, hannY, hann, avg, hannout
front := GetFrontImage();
GetSize(front, sizeX, sizeY);
GetSelection(front, top, left, bottom, right);
// Create Hanning window.
ii = 1;
hannX := CreateFloatImage("", (right-left), (bottom-top));
hannX = 0;
hannX[0, 0, 1, (right-left)] = 1 - cos( 2 * Pi() * icol / (right-left));
while( ii < (bottom-top) )
{
hannX[ii, 0, 2*ii, (right-left)] = hannX[0, 0, ii, (right-left)];
ii = ii * 2;
}
ii = 1;
hannY := CreateFloatImage("", (right-left), (bottom-top));
hannY = 0;
hannY[0, 0, (bottom-top), 1] = 1 - cos( 2 * Pi() * irow / (bottom-top));
while( ii < (right-left) )
{
hannY[0, ii, (bottom-top), 2*ii] = hannY[0, 0, (bottom-top), ii];
ii = ii * 2;
}
hann = hannX * hannY;
// Subtract average from image.
avg = front - Average(front);
// Multiply with Hanning window.
hannout = avg[top, left, bottom, right] * hann;
// Do fast Fourier transform and display image.
fft = RealFFT(hannout);
通过使用这个脚本,FFT 的校准比例变为 1。但它应该是 0.11948,如下图所示。
我的问题是:有没有办法在不改变图像校准比例的情况下应用汉宁窗口?
或者如何根据原始图像的比例计算FFT图像的比例?
由于我脚本的其余部分需要 fft 图像的正确比例,如果有人能回答这个长问题,我将不胜感激。谢谢。