画像の 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));
}
}