Example #1
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);
        }
Example #2
0
        private void loadMaskButton_Click(object sender, EventArgs e)
        {
            int kernelWidth  = 32;
            int kernelHeight = 32;

            //Create a KassWitkin kernel.
            ___kernel.Width         = kernelWidth;
            ___kernel.Height        = kernelHeight;
            ___kernel.CenterX       = (___kernel.Width) / 2;
            ___kernel.CenterY       = (___kernel.Height) / 2;
            ___kernel.Du            = 2;
            ___kernel.Dv            = 2;
            ___kernel.ThetaInRadian = 0.9;//Tools.DegreeToRadian(0.9);
            ___kernel.Compute();

            Bitmap mask = ___kernel.ToBitmap();

            maskPictureBox.Image = mask as Image;

            kassWitkinMaskTestBox.Text = "" + mask.Width + " X " + mask.Height;
        }