Example #1
0
        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));
        }
Example #2
0
        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));
        }