+namespace ProcessImage {\r
+\r
+void\r
+shuffleFourierToNaturalOrder (ImageFile& im)\r
+{\r
+ ImageFileArray vReal = im.getArray();\r
+ ImageFileArray vImag = im.getImaginaryArray();\r
+ unsigned int ix, iy;\r
+ unsigned int nx = im.nx();\r
+ unsigned int ny = im.ny();\r
+\r
+ // shuffle each column\r
+ for (ix = 0; ix < nx; ix++) {\r
+ ProcessSignal::shuffleFourierToNaturalOrder (vReal[ix], ny);\r
+ if (im.isComplex())\r
+ ProcessSignal::shuffleFourierToNaturalOrder (vImag[ix], ny);\r
+ }\r
+\r
+ // shuffle each row\r
+ float* pRow = new float [nx];\r
+ for (iy = 0; iy < ny; iy++) {\r
+ for (ix = 0; ix < nx; ix++)\r
+ pRow[ix] = vReal[ix][iy];\r
+ ProcessSignal::shuffleFourierToNaturalOrder (pRow, nx);\r
+ for (ix = 0; ix < nx; ix++)\r
+ vReal[ix][iy] = pRow[ix];\r
+ if (im.isComplex()) {\r
+ for (ix = 0; ix < nx; ix++)\r
+ pRow[ix] = vImag[ix][iy];\r
+ ProcessSignal::shuffleFourierToNaturalOrder (pRow, nx);;\r
+ for (ix = 0; ix < nx; ix++)\r
+ vImag[ix][iy] = pRow[ix];\r
+ }\r
+ }\r
+ delete pRow;\r
+}\r
+ \r
+void\r
+shuffleNaturalToFourierOrder (ImageFile& im)\r
+{\r
+ ImageFileArray vReal = im.getArray();\r
+ ImageFileArray vImag = im.getImaginaryArray();\r
+ unsigned int ix, iy;\r
+ unsigned int nx = im.nx();\r
+ unsigned int ny = im.ny();\r
+\r
+ // shuffle each x column\r
+ for (ix = 0; ix < nx; ix++) {\r
+ ProcessSignal::shuffleNaturalToFourierOrder (vReal[ix], ny);\r
+ if (im.isComplex())\r
+ ProcessSignal::shuffleNaturalToFourierOrder (vImag[ix], ny);\r
+ }\r
+\r
+ // shuffle each y row\r
+ float* pRow = new float [nx];\r
+ for (iy = 0; iy < ny; iy++) {\r
+ for (ix = 0; ix < nx; ix++)\r
+ pRow[ix] = vReal[ix][iy];\r
+ ProcessSignal::shuffleNaturalToFourierOrder (pRow, nx);\r
+ for (ix = 0; ix < nx; ix++)\r
+ vReal[ix][iy] = pRow[ix];\r
+ if (im.isComplex()) {\r
+ for (ix = 0; ix < nx; ix++)\r
+ pRow[ix] = vImag[ix][iy];\r
+ ProcessSignal::shuffleNaturalToFourierOrder (pRow, nx);\r
+ for (ix = 0; ix < nx; ix++)\r
+ vImag[ix][iy] = pRow[ix];\r
+ }\r
+ }\r
+ delete [] pRow;\r
+}\r
+\r
+ \r
+}; // namespace ProcessIamge\r
+\r
+#ifdef HAVE_FFTW\r