我正在使用灰度红外相机。我从红外摄像机获取像素数据,然后将此像素数据转换为整数。获得Integer值后,我将数据规范化:
normalized[j] = static_cast<double>(GrayData[j]-min_value)/(max_value-min_value);
inputdata_fft[j] = static_cast<double>(normalized[j]);
规范化数据是否合适? 之后,我使用FFTW库进行FFT。我的代码如下:
Complex_data_out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)*(buffer_size/2+1));
magnitude_fft_num = (double *) malloc(buffer_size*sizeof(double));
fft_for_proc = fftw_plan_dft_r2c_1d(buffer_size, inputdata_fft, Complex_data_out, FFTW_ESTIMATE);
fftw_execute(fft_for_proc);
for(int i=0; i<static_cast<int>(buffer_size/2); i++)
{
real = Complex_data_out[i][0]; //Extract real component
imag = Complex_data_out[i][1]; //Extract imaginary component
magnitude_fft_num[i] = sqrt((real*real)+(imag*imag)); // Calculate the Magnitude
data_out_fft[i] = static_cast<int>(magnitude_fft_num[i]);
}
现在我有FFT数据。如何从这些数据中计算波数?我想在x轴上绘制波数(每厘米),在y轴上绘制强度。如何获得强度值?我还发现了以下计算波数的方法:
data_out_fft[i] = static_cast<int>(magnitude_fft_num[i]*2*pii);
这是对的吗?请帮我。谢谢