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