Esempio n. 1
0
        private unsafe void miGaussianBlur_Click(object sender, System.EventArgs e)
        {
            if (this.ActiveCImage == null)
            {
                return;
            }

            CImage cimage = this.ActiveCImage;
            float  scale  = 1f / (float)Math.Sqrt(cimage.Width * cimage.Height);

            ComplexF[] data = cimage.Data;

            Fourier.FFT3(data, cimage.Width, cimage.Height, 1, FourierDirection.Forward);

            for (int i = 0; i < data.Length; i++)
            {
                data[i] *= scale;
            }

            Fourier.FFT3(data, cimage.Width, cimage.Height, 1, FourierDirection.Backward);

            for (int i = 0; i < data.Length; i++)
            {
                data[i] *= scale;
            }

            cimage.FrequencySpace = true;

            this.ActiveCImage = cimage;
        }
Esempio n. 2
0
        private void miOpen_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();

            ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";
            if (ofd.ShowDialog(this) != DialogResult.OK)
            {
                return;
            }

            try {
                this.ActiveCImage = new CImage(ofd.FileName);
            }
            catch (Exception ex) {
                MessageBox.Show(this, "Error opening file '" + ofd.FileName + " because '" + ex.Message + " (" + ex.GetType().Name + ")'.", "Open...", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
        }
Esempio n. 3
0
        private void miBackwardFFT_Click(object sender, System.EventArgs e)
        {
            if (this.ActiveCImage == null)
            {
                return;
            }

            CImage cimage = this.ActiveCImage;
            float  scale  = 1f / (float)Math.Sqrt(cimage.Width * cimage.Height);

            ComplexF[] data = cimage.Data;

            Fourier.FFT2(data, cimage.Width, cimage.Height, FourierDirection.Backward);

            int offset = 0;

            for (int y = 0; y < cimage.Height; y++)
            {
                for (int x = 0; x < cimage.Width; x++)
                {
                    if (((x + y) & 0x1) != 0)
                    {
                        data[offset] *= -1;
                    }
                    offset++;
                }
            }

            cimage.FrequencySpace = false;

            for (int i = 0; i < data.Length; i++)
            {
                data[i] *= scale;
            }

            this.ActiveCImage = cimage;
        }
Esempio n. 4
0
 private void miExit_Click(object sender, System.EventArgs e)
 {
     this.ActiveCImage = null;
     Application.Exit();
 }
Esempio n. 5
0
 private void miClose_Click(object sender, System.EventArgs e)
 {
     this.ActiveCImage = null;
 }
Esempio n. 6
0
        private void miOpen_Click(object sender, System.EventArgs e)
        {
            OpenFileDialog ofd = new OpenFileDialog();
            ofd.Filter = "Image Files(*.BMP;*.JPG;*.GIF)|*.BMP;*.JPG;*.GIF|All files (*.*)|*.*";
            if( ofd.ShowDialog( this ) != DialogResult.OK ) {
                return;
            }

            try {
                this.ActiveCImage = new CImage( ofd.FileName );
            }
            catch( Exception ex ) {
                MessageBox.Show( this, "Error opening file '" + ofd.FileName + " because '" + ex.Message + " (" + ex.GetType().Name + ")'.", "Open...", MessageBoxButtons.OK, MessageBoxIcon.Error );
            }
        }
Esempio n. 7
0
        private unsafe void miGaussianBlur_Click(object sender, System.EventArgs e)
        {
            if( this.ActiveCImage == null ) {
                return;
            }

            CImage cimage = this.ActiveCImage;
            float scale = 1f / (float) Math.Sqrt( cimage.Width * cimage.Height );
            ComplexF[] data = cimage.Data;

            Fourier.FFT3( data, cimage.Width, cimage.Height, 1, FourierDirection.Forward );

            for( int i = 0; i < data.Length; i ++ ) {
                data[i] *= scale;
            }

            Fourier.FFT3( data, cimage.Width, cimage.Height, 1, FourierDirection.Backward );

            for( int i = 0; i < data.Length; i ++ ) {
                data[i] *= scale;
            }

            cimage.FrequencySpace = true;

            this.ActiveCImage = cimage;
        }
Esempio n. 8
0
        private void miForwardFFT_Click(object sender, System.EventArgs e)
        {
            if( this.ActiveCImage == null ) {
                return;
            }

            CImage cimage = this.ActiveCImage;
            float scale = 1f / (float) Math.Sqrt( cimage.Width * cimage.Height );
            ComplexF[] data = cimage.Data;

            int offset = 0;
            for( int y = 0; y < cimage.Height; y ++ ) {
                for( int x = 0; x < cimage.Width; x ++ ) {
                    if( (( x + y ) & 0x1 ) != 0 ) {
                        data[ offset ] *= -1;
                    }
                    offset++;
                }
            }

            Fourier.FFT2( data, cimage.Width, cimage.Height, FourierDirection.Forward );

            cimage.FrequencySpace = true;

            for( int i = 0; i < data.Length; i ++ ) {
                data[i] *= scale;
            }

            this.ActiveCImage = cimage;
        }
Esempio n. 9
0
 private void miExit_Click(object sender, System.EventArgs e)
 {
     this.ActiveCImage = null;
     Application.Exit();
 }
Esempio n. 10
0
 private void miClose_Click(object sender, System.EventArgs e)
 {
     this.ActiveCImage = null;
 }