private void openingToolStripMenuItem_Click(object sender, EventArgs e) { bool[,] mask = new bool[3, 3]; mask[0, 0] = true; mask[0, 1] = true; mask[0, 2] = true; mask[1, 0] = true; mask[1, 1] = true; mask[1, 2] = true; mask[2, 0] = true; mask[2, 1] = true; mask[2, 2] = true; MathMorf open = new Opening(); //backgroundWorker2.RunWorkerAsync(open); Bitmap resultImage = open.procImg(image, mask, 3, 3 /*, backgroundWorker2*/); pictureBox1.Image = resultImage; pictureBox1.Refresh(); }
public override Bitmap processImage(Bitmap sourceImage, BackgroundWorker worker) { Bitmap resultImage = new Bitmap(sourceImage.Width, sourceImage.Height); Filters Op = new Opening(); Bitmap result = Op.processImage(sourceImage, worker); //суть: открытие минус исходное изображение for (int i = 0; i < sourceImage.Width; i++) { worker.ReportProgress((int)((float)i / resultImage.Width * 100)); if (worker.CancellationPending) { return(null); } for (int j = 0; j < sourceImage.Height; j++) { int newR = Clamp(result.GetPixel(i, j).R - sourceImage.GetPixel(i, j).R, 0, 255); int newG = Clamp(result.GetPixel(i, j).G - sourceImage.GetPixel(i, j).G, 0, 255); int newB = Clamp(result.GetPixel(i, j).B - sourceImage.GetPixel(i, j).B, 0, 255); resultImage.SetPixel(i, j, Color.FromArgb(newR, newG, newB)); } } return(resultImage); }
private void открытиеToolStripMenuItem_Click(object sender, EventArgs e) { Morphology filter = new Opening(); backgroundWorker1.RunWorkerAsync(filter); }