Converts this FHT to a complex Fourier transform and returns it as a two slice stack. Author: Joachim Wesner
()
| 472 | * Author: Joachim Wesner |
| 473 | */ |
| 474 | public ImageStack getComplexTransform() { |
| 475 | if (!isFrequencyDomain) |
| 476 | throw new IllegalArgumentException("Frequency domain image required"); |
| 477 | float[] fht = (float[])getPixels(); |
| 478 | float[] re = new float[maxN*maxN]; |
| 479 | float[] im = new float[maxN*maxN]; |
| 480 | for (int i=0; i<maxN; i++) { |
| 481 | FHTreal(i, maxN, fht, re); |
| 482 | FHTimag(i, maxN, fht, im); |
| 483 | } |
| 484 | swapQuadrants(new FloatProcessor(maxN, maxN, re)); |
| 485 | swapQuadrants(new FloatProcessor(maxN, maxN, im)); |
| 486 | ImageStack stack = new ImageStack(maxN, maxN); |
| 487 | stack.addSlice("Real", re); |
| 488 | stack.addSlice("Imaginary", im); |
| 489 | return stack; |
| 490 | } |
| 491 | |
| 492 | /** FFT real value of one row from 2D Hartley Transform. |
| 493 | * Author: Joachim Wesner |
no test coverage detected