Esempio n. 1
0
        private void padMaskButton_Click(object sender, EventArgs e)
        {
            Bitmap image = paddedImagePictureBox.Image as Bitmap;

            int combinedWidth  = (int)Tools.ToNextPow2(Convert.ToUInt32(image.Width));
            int combinedHeight = (int)Tools.ToNextPow2(Convert.ToUInt32(image.Height));

            //Sleuth eye
            ___kernel.Pad(image.Width, image.Height, combinedWidth, combinedHeight);

            paddedMaskPictureBox.Image = ___kernel.ToBitmapPadded();

            paddedKassWitkinMaskTextBox.Text = "" + paddedMaskPictureBox.Image.Width + " X " + paddedMaskPictureBox.Image.Height;
        }
Esempio n. 2
0
        public List <Bitmap> Apply(Bitmap bitmap)
        {
            Kernels = new List <KassWitkinKernel>();

            double degrees = FilterAngle;

            KassWitkinKernel kernel;

            for (int i = 0; i < NoOfFilters; i++)
            {
                kernel               = new KassWitkinKernel();
                kernel.Width         = KernelDimension;
                kernel.Height        = KernelDimension;
                kernel.CenterX       = (kernel.Width) / 2;
                kernel.CenterY       = (kernel.Height) / 2;
                kernel.Du            = 2;
                kernel.Dv            = 2;
                kernel.ThetaInRadian = Tools.DegreeToRadian(degrees);
                kernel.Compute();

                //SleuthEye
                kernel.Pad(kernel.Width, kernel.Height, WidthWithPadding, HeightWithPadding);

                Kernels.Add(kernel);

                degrees += degrees;
            }

            List <Bitmap> list = new List <Bitmap>();

            Bitmap image = (Bitmap)bitmap.Clone();

            Complex[,] cImagePadded = ImageDataConverter.ToComplex(image);
            FourierTransform ftForImage = new FourierTransform(cImagePadded); ftForImage.ForwardFFT();

            Complex[,] fftImage = ftForImage.FourierImageComplex;

            foreach (KassWitkinKernel k in Kernels)
            {
                Complex[,] cKernelPadded = k.ToComplexPadded();
                Complex[,] convolved     = Convolution.ConvolveInFrequencyDomain(fftImage, cKernelPadded);

                Bitmap temp = ImageDataConverter.ToBitmap(convolved);
                list.Add(temp);
            }

            return(list);
        }