private void FillResultImages(Bitmap bitmap)
        {
            var phaseInterval     = MathHelper.CalculateMinMax(ComplexData, Spectrum.Phase);
            var magnitudeInterval = MathHelper.CalculateMinMax(ComplexData, Spectrum.Magnitude);

            FourierHelper.SwapQuadrants(ComplexData);

            using (var phaseBitmapData = new SingleBitmapData(bitmap, PixelFormat.Format8bppIndexed))
                using (var magnitudeBitmapData = new SingleBitmapData(bitmap, PixelFormat.Format8bppIndexed))
                {
                    for (int y = 0; y < phaseBitmapData.HeightInPixels; y++)
                    {
                        for (int x = 0;
                             x < phaseBitmapData.WidthInBytes;
                             x += phaseBitmapData.BytesPerPixel)
                        {
                            var index = x + y * phaseBitmapData.WidthInBytes;
                            phaseBitmapData.FirstPixelPtr[index]     = (byte)FourierHelper.LogNormalize(ComplexData[y][x].Phase, phaseInterval.Max, 255);
                            magnitudeBitmapData.FirstPixelPtr[index] = (byte)FourierHelper.LogNormalize(ComplexData[y][x].Magnitude, magnitudeInterval.Max, 255);
                        }
                    }

                    PhaseImage     = phaseBitmapData.Bitmap;
                    MagnitudeImage = magnitudeBitmapData.Bitmap;
                }

            FourierHelper.SwapQuadrants(ComplexData);
        }
        public static unsafe ImageComponents ProcessFourierImage(
            ImageComponents imageComponents,
            IProcessingFourierOperation fourierOperation)
        {
            var clonedData = CollectionHelper.Clone(imageComponents.ComplexData);

            FourierHelper.SwapQuadrants(clonedData);
            fourierOperation.ProcessImage(clonedData);
            FourierHelper.SwapQuadrants(clonedData);

            var processedData = CollectionHelper.Clone(clonedData);
            var bitmap        = FastFourierTransform.IFFT2D(processedData, imageComponents.Image);

            return(new ImageComponents(clonedData, bitmap));
        }