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)); }
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); }