画像のFFTを計算したいと思います。画像を読み込み、ITK SmartPointerは「imagen」と呼ばれます。 FFT(fftw_plan_dft_r2c_2d)の計算に使用する関数の入力には、2D double *ポインタが入力として必要です。FFT_2Dを計算するための2Dダブル*ポインタ内の画像のピクセル値
double *in = (double*) imagen.GetPointer(); // conversión de itk.smartpointer --> double*.
しかし、私は、画像の画素の値にアクセスしようとすると、彼らは「イメージ」のpixeltypeがdoubleの を定義されていない:そのため、私はそれを行う
typedef double PixelType;
typedef itk::Image < PixelType, 2> ImageType;
ImageType::Pointer imagen;
そして、イメージはQtのを使用して、ユーザインターフェースtrhougフレームから読み込まれます:
imagen=ui.imageframe->imagereader;
誰もがこれで私を助けることができますか?私は、fftを計算するために、画像の値を2Dのdouble *ポインタに入れておく必要があります。
先進的なサポートに感謝します。
アントニオ・ゴメスBarqueroが
EDITED
私は、私の問題を解決した下記掲載されていますが、今の問題は、までの第2次元を知らなくても、2Dマトリックスに結果を変換することです実行時に、イメージはコンパイル中ではなく、実行中にロードされるため、任意のヒント??ありがとう!
SOLUTION
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));
}
}