public Bitmap Apply(Bitmap image, KassWitkinKernel kernel) { Complex[,] cImagePadded = ImageDataConverter.ToComplex(image); Complex[,] cKernelPadded = kernel.ToComplexPadded(); Complex[,] convolved = Convolution.Convolve(cImagePadded, cKernelPadded); return(ImageDataConverter.ToBitmap(convolved)); }
public FourierTransform(int[,] image) { Width = image.GetLength(0); Height = image.GetLength(1); ImageBitmap = ImageDataConverter.ToBitmap(image); GrayscaleImageInteger = image; GrayscaleImageComplex = ImageDataConverter.ToComplex(GrayscaleImageInteger); }
public PictureBoxForm(Complex[,] image1, Complex[,] image2) { InitializeComponent(); Bitmap bitmap1 = ImageDataConverter.ToBitmap(image1); Bitmap bitmap2 = ImageDataConverter.ToBitmap(image2); this.pictureBox1.Image = bitmap1 as System.Drawing.Image; this.pictureBox2.Image = bitmap2 as System.Drawing.Image; }
private void convolveButton_Click(object sender, EventArgs e) { Bitmap paddedLena = inputImagePictureBox.Image as Bitmap; Bitmap paddedMask = paddedMaskPictureBox.Image as Bitmap; Complex[,] cLena = ImageDataConverter.ToComplex(paddedLena); Complex[,] cPaddedMask = ImageDataConverter.ToComplex(paddedMask); Complex[,] cConvolved = Convolution.Convolve(cLena, cPaddedMask); Bitmap convolved = ImageDataConverter.ToBitmap(cConvolved); convolvedImagePictureBox.Image = convolved; }
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); }
public void InverseFFT(Complex[,] fftImage) { if (FourierImageComplex == null) { FourierImageComplex = fftImage; Width = FourierImageComplex.GetLength(0); Height = FourierImageComplex.GetLength(1); } GrayscaleImageComplex = FourierFunction.FFT2D(FourierImageComplex, Width, Height, -1); GrayscaleImageInteger = ImageDataConverter.ToInteger(GrayscaleImageComplex); ImageBitmap = ImageDataConverter.ToBitmap(GrayscaleImageInteger); }
public static Bitmap FftPhasePlot(Complex[,] fftImage) { int[,] FourierPhaseNormalizedInteger = FourierNormalizer.Normalize(fftImage, NormalizeType.Phase); return(ImageDataConverter.ToBitmap(FourierPhaseNormalizedInteger)); }
public Bitmap ToBitmapPadded() { return(ImageDataConverter.ToBitmap(PaddedKernel)); }
//public Complex[,] ToComplexPadded() //{ // return ImageDataConverter.ToComplex(PaddedKernel); //} #endregion public Bitmap ToBitmap() { return(ImageDataConverter.ToBitmap(Kernel)); }
public static Bitmap ToBitmap(Complex[,] image) { return(ImageDataConverter.ToBitmap(ImageDataConverter.ToInteger(image))); }