2011-11-21 5 views
3

저는 FFT (고속 푸리에 변환)를 처음 사용하고 C++와 같은 프로그래밍 언어로 계산하는 방법에 대해 잘 모릅니다. 여기 FFT2DFFT2D (고속 푸리에 변환 2D) R, G, B 색상 구성 요소 수행 방법

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. 

힌트 방법 : 이들을 각각 복소수의 1 차원 배열로 표시되면서 이미지 픽셀은 세 개의 이미지의 색상 (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는 복소수의 3 개 배열입니다. 변환 된 계수의 1D 배열도 같은 방식으로 나타납니다.

하나의 색상 구성 요소에 대해서만 처리를 구현해야하며 프로그래밍 템플릿은 구현 된 기능을 기반으로 R, G, B를 개별적으로 처리합니다. 템플릿은 각 입력 이미지의 크기가 2m * 2n이되도록 이미지에 0을 채 웁니다.

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#에서 FFT2D의 여러 가지 유형의 코드를 발견했습니다. 대부분 2D 배열 구조를 사용하여 구현했습니다. 행과 열의 루프로 2D 배열 구조에 실수와 허수 부를 할당합니다. 그러나, 내 경우에는 색상 구성 요소의 1D 배열 구조입니다.

하자가, 몇 가지 코드를하고이 FFT2D 기능 내부하십시오 FFTID를 호출하기 전에

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 
# } 
    } 

, 그것은 또한 당신이 경우, 책으로 twoK의 값을 계산 M = 2K

필요 어떤 아이디어 나 참고 자료가 있으면 알려주세요.

감사 이치로가

+0

[FFTW] (http://www.fftw.org) 라이브러리를 사용하십시오. –

답변

-2

당신은 [수치 조리법]으로 책 잡아 제안 감사 [1].

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

FFT, 심슨 가족 규칙, Fouriers Algorith 모두가 있어야한다. 나는 Rajaram이라는 저자의 글을 읽었습니다. C에있었습니다.

+1

이것은 실제로 질문에 대답하지 않으며 Numerical Recipes의 FFT 루틴은별로 유용하지 않습니다. –

+0

Sujay는 대답이 아니며 내가 찾고있는 것입니다. – user553710

+1

-1 Numerical Recipes (2007)은 1976 년경 FFT를 포함한 스펙트럼 방법을 설명합니다. 그 이후로 많은 변화가있었습니다. 최신 정보는 FFTW 문서를 참조하십시오. –