/// <summary> /// Reduce image to half its size. /// </summary> private void btnReduceHalf_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); img.Transform(new AffineTransformation( new DoubleMatrix[] { new double[, ] { { 0.5, 0 }, { 0, 0.5 } } }, new DoubleMatrix[] { new double[, ] { { 0 }, { 0 } } })); Matrix <Pixel> cropped = new Matrix <Pixel>(img.Width / 2, img.Height / 2); for (int x = 0; x < cropped.DimensionX; x++) { for (int y = 0; y < cropped.DimensionY; y++) { cropped[x, y] = img.ImageData[x, y]; } } img.ImageData = cropped; imgComparison.TransformedImage = img; }
/// <summary> /// Make the Vent fractal from image. /// </summary> private void Vent_Fractal_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); img.Transform(new AffineTransformation( new DoubleMatrix[] { new double[, ] { { 0, -0.5 }, { 0.5, 0 } }, new double[, ] { { 0.5, 0 }, { 0, 0.5 } }, new double[, ] { { 0.5, 0 }, { 0, 0.5 } } }, new DoubleMatrix[] { new double[, ] { { img.Width / 2 }, { 0 } }, new double[, ] { { 0 }, { img.Height / 2 } }, new double[, ] { { img.Width / 2 }, { img.Height / 2 } } } )); imgComparison.TransformedImage = img; }
/// <summary> /// Transform image using greyscale. /// </summary> private void btnGreyscale_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); img.Transform(new GreyscaleTransformation()); imgComparison.TransformedImage = img; }
/// <summary> /// Test button to do an Affine transformation on an image. /// </summary> private void btnAffineTransformation_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); img.Transform(new AffineTransformation( new DoubleMatrix[] { new double[, ] { { -1, 0 }, { 0, 1 } }, //Reflection on Y axis }, new DoubleMatrix[] { new double[, ] { { 511 }, { 0 } }, })); imgComparison.TransformedImage = img; }
/// <summary> /// Test button. /// </summary> private void btnReduceTransformation_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); img.Transform(new AffineTransformation( new DoubleMatrix[] { new double[, ] { { 1d / img.Height, 0 }, { 0, 1d / img.Height } }, }, new DoubleMatrix[] { new double[, ] { { 200 }, { 200 } }, })); imgComparison.TransformedImage = img; }
/// <summary> /// Attempt to transform image to make a Fractal Fern. /// </summary> private void btnFractalFernTransformation_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); var transformation = new AffineTransformation( new DoubleMatrix[] { new double[, ] { { 0, 0 }, { 0, 0.16 } }, new double[, ] { { 0.3, 0.4 }, { 0.4, 0.3 } }, new double[, ] { { 0.4, 0.2 }, { 0.2, 0.4 } }, new double[, ] { { 0.4, 0.2 }, { 0.2, 0.4 } } }, new DoubleMatrix[] { new double[, ] { { img.Width / 2 }, { img.Height *(1 - 0.16) } }, new double[, ] { { 0 }, { 1.6 } }, new double[, ] { { 0 }, { 1.6 } }, new double[, ] { { 0 }, { 0.44 } } }, new double[] { 0.01, 0.85, 0.07, 0.07 }); img.Transform(transformation); //for (int i = 0; i < 1000; i++) // img.Transform(transformation, true); imgComparison.TransformedImage = img; }
/// <summary> /// Attempt to make Koch Snowflake with image. /// </summary> private void btnKochSnowflakeTransformation_Click(object sender, EventArgs e) { CustomImage img = GetImageToTransform(); var transformation = new AffineTransformation( new DoubleMatrix[] { new double[, ] { { 1d / 3d, 0 }, { 0, 1d / 3d } }, new double[, ] { { 1 / 3d * Math.Cos(3.1416 / 3d), 1 / 3d * Math.Sin(3.1416 / 3d) }, { -1 / 3d * Math.Sin(3.1416 / 3d), 1 / 3d * Math.Cos(3.1416 / 3d) } }, new double[, ] { { 1 / 3d * Math.Cos(3.1416 / 3d), -1 / 3d * Math.Sin(3.1416 / 3d) }, { 1 / 3d * Math.Sin(3.1416 / 3d), 1 / 3d * Math.Cos(3.1416 / 3d) } }, new double[, ] { { 1d / 3d, 0 }, { 0, 1d / 3d } } }, new DoubleMatrix[] { new double[, ] { { 0 }, { 2 * img.Height / 3 } }, new double[, ] { { img.Width *(1 - Math.Sin(3.1416 / 3d)) / 3d }, { img.Height *(1 - (Math.Cos(3.1416 / 3d)) / 3d) } }, new double[, ] { { 2 * img.Width / 3 - (img.Width / 3d * Math.Cos(3.1416 / 3d) - img.Height / 3d * Math.Sin(3.1416 / 3d)) }, { img.Height - (img.Width / 3d * Math.Sin(3.1416 / 3d) + img.Height / 3d * Math.Cos(3.1416 / 3d)) } }, new double[, ] { { 2 * img.Width / 3 }, { 2 * img.Height / 3 } } }); img.Transform(transformation); imgComparison.TransformedImage = img; }