Example #1
0
 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);
        }