我想计算一个图像的 FFT,我读取图像,ITK SmartPointer 被称为“imagen”。我用于计算 FFT (fftw_plan_dft_r2c_2d) 的函数的输入需要一个 2D 双 * 指针作为输入。因此,我这样做:
double *in = (double*) imagen.GetPointer(); // conversión de itk.smartpointer --> double*.
但是当我尝试访问图像的像素值时,它们没有被定义“图像”的像素类型是双倍的:
typedef double PixelType;
typedef itk::Image < PixelType, 2> ImageType;
ImageType::Pointer imagen;
并且图像是使用 Qt 通过用户界面从帧中读取的:
imagen=ui.imageframe->imagereader;
谁能帮我这个?我需要将图像的值放在 2D double* 指针中以计算 fft。
干杯并感谢您的帮助!
安东尼奥·戈麦斯·巴克罗
已编辑
我已经解决了我的问题,贴在下面,但现在的问题是将结果转换为二维矩阵,直到执行时间才知道它的第二维,因为图像是在执行期间而不是在编译期间加载的,有什么提示吗? ? 谢谢!
解决方案
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));
}
}