LitDev.Engines.FIP.DFT C# (CSharp) Method

DFT() public method

Discrete Fourier Transform of image
public DFT ( Bitmap OriginalImage ) : ].Complex[
OriginalImage System.Drawing.Bitmap Original ARGB image
return ].Complex[
        public Complex[,] DFT(Bitmap OriginalImage)
        {
            Complex[,] fourier = new Complex[OriginalImage.Width, OriginalImage.Height];

            Bitmap image = this.ToGreyscale(OriginalImage);

            int M = OriginalImage.Width;
            int N = OriginalImage.Height;

            for (int k = 0; k < M; k++)
            {
                for (int l = 0; l < N; l++)
                {

                    Complex sum = 0;

                    for (int j = 0; j < N; j++)
                    {
                        for (int i = 0; i < M; i++)
                        {
                            Double p = Convert.ToDouble(image.GetPixel(i, j).R);

                            Complex im = new Complex(0, 1);

                            Double g = (k * i) / Convert.ToDouble(M) + (l * j) / Convert.ToDouble(N);

                            Complex exp = Complex.Exp(-im * 2 * Math.PI * g);

                            sum += p * exp;

                        }
                    }

                    fourier[k, l] = sum / Math.Sqrt(M * N);
                }
            }

            return fourier;
        }

Same methods

FIP::DFT ( Double Data ) : ].Complex[