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); }