Я хочу вычислить БПФ изображения, я читаю изображение, и ITK SmartPointer называется «imagen».Для ввода функции, которую я использую для вычисления FFT (fftw_plan_dft_r2c_2d), требуется двумерный двойной указатель * в качестве ввода.Из-за этого я делаю это:
double *in = (double*) imagen.GetPointer(); // conversión de itk.smartpointer --> double*.
Но когда я пытаюсь получить доступ к значениям пикселей изображения, они не определены. Тип пикселя 'image' является двойным:
typedef double PixelType;
typedef itk::Image < PixelType, 2> ImageType;
ImageType::Pointer imagen;
И изображение читается из фрейма через пользовательский интерфейс, используя Qt:
imagen=ui.imageframe->imagereader;
Кто-нибудь может мне помочь с этим?Мне нужно иметь значения изображения в 2D двойном * указателе для расчета FFT.
Приветствия и спасибо за вашу помощь в продвинутом!
Антонио Гомес Баркеро
EDITED
Я решил мою проблему, эторазмещено ниже, но теперь проблема заключается в том, чтобы преобразовать результат в 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));
}
}