public override Bitmap procImg(Bitmap sourceImage, bool[,] mask, int MW, int MH /*, BackgroundWorker worker*/) { MathMorf eros = new Erosion(); MathMorf dil = new Dilation(); Bitmap result = new Bitmap(sourceImage.Width, sourceImage.Height); result = eros.procImg(sourceImage, mask, MW, MH /*,worker*/); result = dil.procImg(result, mask, MW, MH /*,worker*/); return(result); }
public override Bitmap procImg(Bitmap sourceImage, bool[,] mask, int MW, int MH /*, BackgroundWorker worker*/) { MathMorf eros1 = new Erosion(); Object locker = new Object(); Bitmap res1 = new Bitmap(sourceImage.Width, sourceImage.Height); res1 = eros1.procImg(sourceImage, mask, MW, MH /*, worker*/); Bitmap result = new Bitmap(sourceImage.Width, sourceImage.Height); for (int y = 0; y < sourceImage.Height; y++) { for (int x = 0; x < sourceImage.Width; x++) { result.SetPixel(x, y, Color.FromArgb(255, sourceImage.GetPixel(x, y).R - res1.GetPixel(x, y).R, sourceImage.GetPixel(x, y).G - res1.GetPixel(x, y).G, sourceImage.GetPixel(x, y).B - res1.GetPixel(x, y).B)); } } return(result); }
private void erosionToolStripMenuItem_Click(object sender, EventArgs e) { bool[,] mask = new bool[3, 3]; mask[0, 0] = false; mask[0, 1] = true; mask[0, 2] = false; mask[1, 0] = true; mask[1, 1] = true; mask[1, 2] = true; mask[2, 0] = false; mask[2, 1] = true; mask[2, 2] = false; MathMorf eros = new Erosion(); // backgroundWorker2.RunWorkerAsync(eros); Bitmap resultImage = eros.procImg(image, mask, 3, 3 /*, backgroundWorker2*/); pictureBox1.Image = resultImage; pictureBox1.Refresh(); }