我正在处理此图像:
我想得到这个结果:
相反,我得到这个:
这是代码的一部分:
// Convert the raw images to vectors
PF_PixelFloat* pixelPointerAtIndex;
for (unsigned long index= 0; index < imgArraySize; index++){
pixelPointerAtIndex = (PF_PixelFloat*)((char*)inWorld.data + (index * sizeof(PF_PixelFloat)));
imgRedDataVector.push_back( (std::complex<double>) pixelPointerAtIndex->red);
imgGreenDataVector.push_back((std::complex<double>) pixelPointerAtIndex->green);
imgBlueDataVector.push_back((std::complex<double>) pixelPointerAtIndex->blue);
}
// Fourier Transform
fft::transform(imgRedDataVector);
fft::transform(imgGreenDataVector);
fft::transform(imgBlueDataVector);
// Copy the Fourier data back to the image
for (unsigned long index = 0; index < imgArraySize; index++) {
pixelPointerAtIndex = (PF_PixelFloat*)((char*)inWorld.data + (index * sizeof(PF_PixelFloat)));
pixelPointerAtIndex->red = imgRedDataVector[index].real();
pixelPointerAtIndex->green = imgGreenDataVector[index].real();
pixelPointerAtIndex->blue = imgBlueDataVector[index].real();
}
我也有尝试:
finalImgRedDataVector[index].imag()
...
好像我正在获取“参数”,而我需要“模量”
任何人都知道这是什么问题或我缺少什么?
我正在使用FftComplex.h
谢谢。
最佳答案
您也不会得到“参数”。复数有两个部分,“实”和“虚”。将它们描绘为X和Y坐标,自变量是它们所成的角度,大小是到原点的距离。第二幅图描述的是幅度。
在C ++中,这是abs(std::complex)
关于c++ - 如何使傅立叶变换正确?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51588756/