示例#1
0
        public static FFTImageDataModel FFT(JpegModel imageModel)
        {
            Image             image         = Image.FromFile(imageModel.file);
            Bitmap            bitmap        = new Bitmap(image);
            FFTImageDataModel fftImageModel = new FFTImageDataModel();

            List <Color> colorList = new List <Color>();

            for (int y = 0; y < bitmap.Height; ++y)
            {
                for (int x = 0; x < bitmap.Width; ++x)
                {
                    colorList.Add(bitmap.GetPixel(x, y));
                }
            }

            return(DoFFTOverImage(colorList));
        }
示例#2
0
        private static FFTImageDataModel DoFFTOverImage(List <Color> colorsData)
        {
            int dataCount = 1024;
            FFTImageDataModel fftImageDataModel = new FFTImageDataModel();

            Complex[] dataR = new Complex[dataCount];
            Complex[] dataG = new Complex[dataCount];
            Complex[] dataB = new Complex[dataCount];
            for (int i = 0; i < dataCount; ++i)
            {
                dataR[i] = new Complex(colorsData[i].R, 0);
                dataG[i] = new Complex(colorsData[i].G, 0);
                dataB[i] = new Complex(colorsData[i].B, 0);
            }
            FourierTransform.FFT(dataR, FourierTransform.Direction.Forward);
            FourierTransform.FFT(dataG, FourierTransform.Direction.Forward);
            FourierTransform.FFT(dataB, FourierTransform.Direction.Forward);
            fftImageDataModel.R = GetFftDataModel(dataR);
            fftImageDataModel.G = GetFftDataModel(dataG);
            fftImageDataModel.B = GetFftDataModel(dataB);
            return(fftImageDataModel);
        }