示例#1
0
        public static IResult <ObjectLayer> Execute(Bitmap bitmap)
        {
            var r     = new Result <ObjectLayer>();
            var layer = createLayer(bitmap, 128, "BUD DetektorLayer");

            // hier aufrufen & berechnen
            ObjectPixels.ProcessLayer(layer);
            AxesOfCorrespondingEllipse.ProcessLayer(layer);
            PixelsAtLayerBorder.ProcessLayer(layer);

            // r.DebugLayers.Add(layer);
            r.Value = layer.CreateAbove((ImageObject io) => {
                // bei zoomstufe 0.5

                // hier abrufen
                var minPixels = io.Features["ObjectPixels"].Value > 600;
                var maxPixels = io.Features["ObjectPixels"].Value < 14000;

                //if (!minPixels || !maxPixels) {
                //    return false;
                //}

                // Abstand bud zum Rand
                // wenn am Rand bzw abgeschnitten, dann nicht weiter betrachten
                var distance = io.Features["PixelsAtLayerBorder"].Value < 5;

                // findet ähnlichkeiten zur einer ellipse
                //var axesMa = io.Features["MajorAxisOfCorrespondingEllipse"].Value < 3;
                //var axesMi = io.Features["MinorAxisOfCorrespondingEllipse"].Value < 3;

                var result = minPixels && maxPixels && distance; // && axesMa && axesMi;
                Console.WriteLine("Wert: " + result);
                return(result);

                // markiere alles als Bud
                // return true;
            });

            r.DebugLayers.Add(r.Value);
            return(r);
        }
        public static IResult <ObjectLayer> Execute(Bitmap bitmap)
        {
            var         r      = new Result <ObjectLayer>();
            var         layer  = createLayer(bitmap, 40, "first layer"); // Ein neues Layer wird gemacht
            ObjectLayer layer2 = null;                                   // Die Kachel wird in grayscale umgewandelt

            ObjectPixels.ProcessLayer(layer);
            AxesOfCorrespondingEllipse.ProcessLayer(layer);                // Gefundene Buds werden als Objecte mit Features bezeichnet
            r.DebugLayers.Add(layer);
            layer2 = layer.CreateAbove((ImageObject io) =>                 // Wenn ein Element den Parametern entspricht, wird er markiert
                                       io.Features["Area"].Value < 5000 && // und als Object auf neues Layer gespeichert
                                       io.Features["Area"].Value > 500 &&
                                       io.Features["AreaDiv"].Value < 1.55 //&&
                                                                           //io.Features["FormFactor"].Value<30
                                       );
            layer2.Name = "BUDs";
            r.DebugLayers.Add(layer2);

            r.Value = layer2;

            return(r);
        }