如何使傅立叶变换正确?

时间:2018-07-30 07:14:21

标签: c++ image-processing fft

我正在处理此图像: enter image description here

,我想得到这个结果: enter image description here

相反,我得到这个: enter image description here

这是代码的一部分:

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

谢谢。

1 个答案:

答案 0 :(得分:1)

您也没有得到“参数”。复数有两个部分,“实”和“虚”。将它们描绘为X和Y坐标,自变量是它们形成的角度,量级是到原点的距离。第二幅图描述的是幅度。

在C ++中,这是abs(std::complex)