Example #1
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));
        }
Example #2
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 #3
0
        static void Main(string[] args)
        {
            List <DataModel> datas = new DataParser("asd.csv").LoadFromTextFile();

            //asd123
            using var sw = new StreamWriter("result.csv");
            sw.WriteLine("No,Ido,Bemenet,Re,Im,Magnitude,dB,Phase");
            foreach (var d in datas)
            {
                List <Complex> cmplx = new List <Complex>();
                foreach (var item in d.RawData)
                {
                    cmplx.Add(new Complex(item));
                }

                var result = new FourierTransformation().FastFourierTransformation(cmplx.Take(256).ToArray());
                for (int i = 0; i < result.Length; i++)
                {
                    sw.WriteLine($"{i},{d.RecordTime},{d.RawData[i]},{result[i].Real},{result[i].Imaginary},{result[i].Magnitude},{result[i].Decibell},{result[i].Phase}");
                }
            }
        }