1

画像の FFT を計算したいので、画像を読み取ります。ITK SmartPointer は「imagen」と呼ばれます。FFT (fftw_plan_dft_r2c_2d) の計算に使用する関数の入力には、入力として 2D double* ポインターが必要です。そのため、私はそれを行います:

double *in = (double*) imagen.GetPointer(); // conversión de itk.smartpointer --> double*.

しかし、画像のピクセルの値にアクセスしようとすると、それらは定義されていません 「画像」のピクセルタイプは2倍です:

typedef double PixelType;
typedef itk::Image < PixelType, 2> ImageType;

ImageType::Pointer imagen;

そして、画像はQtを使用してユーザーインターフェイスを介してフレームから読み取られます。

imagen=ui.imageframe->imagereader;

誰でもこれで私を助けることができますか?fft を計算するには、画像の値を 2D double* ポインターにする必要があります。

乾杯、高度なサポートに感謝します!

アントニオ・ゴメス・バルケロ

編集済み

私は自分の問題を解決しましたが、以下に投稿されていますが、コンパイル時ではなく実行時に画像がロードされるため、実行時まで2次元を知らずに結果を2Dマトリックスに変換することが問題になります。ヒントはありますか? ? ありがとう!

解決

double *in;
ImageType::IndexType pixelIndex;
ImageType::PixelType pixelValue;
    for ( int x = 0; x<ancho; x++){
        for (int y = 0; y<alto; y++){ 
            pixelIndex[0] = x; //x position
            pixelIndex[1] = y; //y position
            ImageType::PixelType pixel2 = imagen->GetPixel(pixelIndex);
            *(in+x*ancho+y) = static_cast <double> (imagen->GetPixel(pixelIndex));
        }
    }
4

1 に答える 1

0

ITK には FFT も用意されています。

フレームワークの例: http://www.vtk.org/Wiki/ITK/Examples/SpectralAnalysis/VnlFFTRealToComplexConjugateImageFilter

FFTW を使用するための非常によく似た別のオプションがあります。USE_FFTW フラグを on に設定して ITK をビルドするだけです。(注:USE_FFTWオプションは、cmake構成ステップを硬化する「詳細」設定の下にあります)。

ITK メーリング リストから: http://old.nabble.com/how-to-use-FFTW-with-ITK-td19531608.html

于 2011-09-23T23:20:37.850 に答える