public static Bitmap DrawClasses(ImgInfo imgInfo, Designer designer) { var labels = imgInfo.Labels; List<int> classesToRemove = new List<int>(); Bitmap result = new Bitmap(imgInfo.OldPicture.Width, imgInfo.OldPicture.Height); for (int i = 0; i < result.Height; i++) for (int j = 0; j < result.Width; j++) if (labels[j, i] != 0) { //var cl = imgInfo.Classes[labels[j, i]]; result.SetPixel(j, i, labels[j, i] < 0 ? Color.FromArgb(Math.Abs((labels[j, i]*15)%255), Math.Abs(labels[j, i] * 12 + labels[j, i] * labels[j, i]) % 255, Math.Abs((labels[j, i] * 5 + labels[j, i]) % 255 * labels[j, i]) % 255) : Color.Brown); // Color.FromArgb(Math.Abs((labels[j, i]*15)%255), Color.AliceBlue)); //Math.Abs(labels[j, i] * 12 + labels[j, i] * labels[j, i]) % 255, //Math.Abs((labels[j, i] * 5 + labels[j, i]) % 255 * labels[j, i]) % 255)); //else //{ // classesToRemove.Add(labels[j, i]); // labels[j, i] = 0; //} } foreach (var r in classesToRemove) { imgInfo.Classes.Remove(r); } return result; }
public static Designer GetConfiguration(ImgInfo imgInfo ) { var result = new Designer(); result.Add(new DesignExpression(cl=> cl.Ratio > LowThreshold)); result.Add(new DesignExpression(cl => cl.Ratio < HighThreshold)); result.Add(new DesignExpression(cl => (float)cl.Width / cl.Height > 0.1)); result.Add(new DesignExpression(cl => (float)cl.Width / cl.Height < 10)); result.Add(new DesignExpression(cl => cl.MaxDiff < cl.Weight / 3.33)); //result.Add(new DesignExpression(cl => cl.Height > 20)); //result.Add(new DesignExpression(cl => cl.Width > 20)); result.Add(new DesignExpression(cl => cl.Weight > 70)); result.Add(new DesignExpression(cl=> !(cl.Angles.Left.X == 0 && cl.Angles.Right.X == imgInfo.OldPicture.Width-1) )); return result; }
public static Designer GetSecondConfiguration(ImgInfo imgInfo) { var result = new Designer(); result.Add(new DesignExpression(cl => imgInfo.LincedLaters.Contains(cl.Class))); return result; }