如何使傅立叶变换正确

如何使傅立叶变换正确

我正在处理此图像:
c++ - 如何使傅立叶变换正确?-LMLPHP

我想得到这个结果:
c++ - 如何使傅立叶变换正确?-LMLPHP

相反,我得到这个:
c++ - 如何使傅立叶变换正确?-LMLPHP

这是代码的一部分:

// 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/

10-12 20:13