protected override void OnLoad(EventArgs e) { base.OnLoad(e); this.CreateTabContainer("Deconvolution"); this.TabContainer.Enabled = true; this.deconvolutedImageBox = new ImageListBox(() => this.DisplayedImage, this.SetDisplayedImage) { Parent = this.TabContainer, Height = 100 }; (new Button { Parent = this.TabContainer, Text = "deconvolute", Dock = DockStyle.Top }).Click += delegate { this.deconvolutedImageBox.Init(); foreach (var tuple in this.process()) { var map = new Map(tuple.Item1.Width, tuple.Item1.Height); if (tuple.Item2 != "Blue") { using (var gsp = new GrayscaleProcessor(tuple.Item1, RgbToGrayscaleConversion.JustReds)) { gsp.WriteBack = false; foreach (var grayscalePixel in gsp.Pixels()) { map[grayscalePixel.X, grayscalePixel.Y] = grayscalePixel.V > tuple.Item3 ? 1u : 0u; } } } else { using (var gsp = new GrayscaleProcessor(tuple.Item1, RgbToGrayscaleConversion.JustReds)) { gsp.WriteBack = false; foreach (var grayscalePixel in gsp.Pixels()) { map[grayscalePixel.X, grayscalePixel.Y] = 1u; } } } var layer = new ConnectedComponentCollector().Execute(map); layer.Name = tuple.Item2; this.addLayer(layer, true); this.deconvolutedImageBox.Add(tuple.Item1, tuple.Item2); } }; new Button { Text = "goto zoom", Parent = this.TabContainer, Dock = DockStyle.Top }.Click += delegate { WsiInterop.Navigation.Goto((float)this.zoomNumericUpDown.Value); }; this.zoomNumericUpDown = new NumericUpDown() { Parent = this.TabContainer, Dock = DockStyle.Top, Minimum = 0, Maximum = 1, Value = 0.5M, DecimalPlaces = 1, Increment = 0.1M }; }
private static ObjectLayer createLayer(Bitmap bitmap, int threshold, string name) { var map = new Map(bitmap.Width, bitmap.Height); using (var gsp = new GrayscaleProcessor(bitmap, RgbToGrayscaleConversion.JustReds)){ gsp.WriteBack = false; foreach (var grayscalePixel in gsp.Pixels()) { map[grayscalePixel.X, grayscalePixel.Y] = grayscalePixel.V > threshold?1u:0u; } } var layer = new ConnectedComponentCollector().Execute(map); layer.Name = name; return(layer); }