public Image <Rgb24> ReverseFourierTransform() { var signal = new Complex[Image.Width, Image.Height]; var normalImage = new double[Image.Width, Image.Height]; for (int i = 0; i < Image.Width; i++) { for (int j = 0; j < Image.Height; j++) { signal[i, j] = TransformedSignal[i, j]; } } FourierTransformation.FFT2(signal, FourierTransformation.Direction.Backward); for (int i = 0; i < Image.Width; i++) { for (int j = 0; j < Image.Height; j++) { normalImage[i, j] = signal[i, j].Real; } } return(CreateImage(normalImage)); }
public ImageProcessor GetFourierTransformedImages(double normalizationScale, double logoffset) { var realImage = new double[Image.Width, Image.Height]; var imaginaryImage = new double[Image.Width, Image.Height]; var signal = new Complex[Image.Width, Image.Height]; for (int i = 0; i < Image.Width; i++) { for (int j = 0; j < Image.Height; j++) { signal[i, j] = Image[i, j].R; } } FourierTransformation.FFT2(signal, FourierTransformation.Direction.Forward); var copy = new Complex[Image.Width, Image.Height]; ComplexToImages(copy, signal, realImage, imaginaryImage); Normalize(realImage, normalizationScale, logoffset); Normalize(imaginaryImage, normalizationScale, logoffset); return(new ImageProcessor(CreateImage(realImage), CreateImage(imaginaryImage), copy)); }