gpt4 book ai didi

c++ - 如何执行 FFT2D(快速傅立叶变换 2D)R、G、B 颜色分量

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:24:51 27 4
gpt4 key购买 nike

我是快速傅里叶变换 (FFT) 的新手,不太清楚它是如何用 C++ 等编程语言计算的。这是FFT2D的方法

void FFT2D(Complex<double> *f, Complex<double> *F, int width, int height);
It takes an input image f of size width * height and output the transformed
coefficients into F.

提示:图像像素存储为三个独立的图像颜色(R、G、B)平面,每个平面由一维复数数组表示。假设一幅图像的尺寸为宽W,高H,则图像位置(m,n)处像素的颜色分量值(R,G,B)可表示为R[m + n * W],G( m + n * W) 和 B[m + n * W],其中 R、G、B 是三个复数数组。变换系数的一维数组也以相同的方式表示。

我只需要实现一个颜色分量的处理,编程模板将根据实现的功能分别处理 R、G、B。该模板还将用零填充图像,以便每个输入图像的大小为 2m * 2n。

If I called from another class, I have to pass R, G, B separately
Suppose:
Complex<double> *R = new Complex<double>[width * height];
Let, width = 4096 and height 4096
FFT2D(R, output F, width, height) for compute “R” color component;
FFT2D(G, output F, width, height) for compute “G” color component;
FFT2D(B, output F, width, height) for compute “B” color component;

We have template of calculated FFT1D function:
void FFT1D(Complex<double> *fx, Complex<double> *Fu, int twoK, int stride)
Hint: it outputs the frequency coefficients in the array Fu.

FFT1D 从 FFT2D 的函数内部调用。我在 C、C++、Java 和 C#of FFT2D 中发现了几种不同类型的代码。他们中的大多数已经使用二维数组结构实现;他们将实部和虚部分配给行和列循环中的二维数组结构。但是,在我的例子中是颜色分量的一维数组结构。

让我们做一些代码,这是在 FFT2D 函数中:

Complex<double> *outPutMap = new Complex<double>[width * height];
for (int i = 0; i < height; i++){
# for(int j = 0; j < width; j++){
# outPutMap[i + j * width] = f[i + j * width];
# I don’t understand how to implement in here for color component and how
# it assign a value for real and imaginary part
# }
}

之前,调用FFTID,也需要计算一个twoK的值,如书上,M = 2K

如果您有任何想法或任何引用,请告诉我。

谢谢

问候一郎

最佳答案

我建议您拿一本像 [Numerical Recipes][1] 这样的书。

http://www.amazon.com/Numerical-Recipes-Art-Scientific-Computing/dp/0521750334

FFT、辛普森法则、傅里叶算法应该都有。我读过一位名叫 Rajaram 的作者写的……它是用 C 写的。

关于c++ - 如何执行 FFT2D(快速傅立叶变换 2D)R、G、B 颜色分量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8208974/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com