MCPcopy Create free account
hub / github.com/AstroImageJ/astroimagej / rc2DFHT

Method rc2DFHT

ij/src/main/java/ij/process/FHT.java:234–265  ·  view source on GitHub ↗

Performs a 2D FHT (Fast Hartley Transform).

(float[] x, boolean inverse, int maxN)

Source from the content-addressed store, hash-verified

232
233 /** Performs a 2D FHT (Fast Hartley Transform). */
234 public void rc2DFHT(float[] x, boolean inverse, int maxN) {
235 if (S==null) initializeTables(maxN);
236 for (int row=0; row<maxN; row++)
237 dfht3(x, row*maxN, inverse, maxN);
238 progress(0.4);
239 transposeR(x, maxN);
240 progress(0.5);
241 for (int row=0; row<maxN; row++)
242 dfht3(x, row*maxN, inverse, maxN);
243 progress(0.7);
244 transposeR(x, maxN);
245 progress(0.8);
246
247 int mRow, mCol;
248 float A,B,C,D,E;
249 for (int row=0; row<=maxN/2; row++) { // Now calculate actual Hartley transform
250 for (int col=0; col<=maxN/2; col++) {
251 mRow = (maxN - row) % maxN;
252 mCol = (maxN - col) % maxN;
253 A = x[row * maxN + col]; // see Bracewell, 'Fast 2D Hartley Transf.' IEEE Procs. 9/86
254 B = x[mRow * maxN + col];
255 C = x[row * maxN + mCol];
256 D = x[mRow * maxN + mCol];
257 E = ((A + D) - (B + C)) / 2;
258 x[row * maxN + col] = A - E;
259 x[mRow * maxN + col] = B + E;
260 x[row * maxN + mCol] = C + E;
261 x[mRow * maxN + mCol] = D - E;
262 }
263 }
264 progress(0.95);
265 }
266
267 void progress(double percent) {
268 if (showProgress)

Callers 1

transformMethod · 0.95

Calls 4

initializeTablesMethod · 0.95
dfht3Method · 0.95
progressMethod · 0.95
transposeRMethod · 0.95

Tested by

no test coverage detected