public static ModelParams GetClosestTo(ModelParams model) { Func <short, short, float> scaleDistFunc = (a, b) => (float)Math.Abs(a - b); Func <short, short, float> angleDistFunc = (a, b) => (float)Math.Abs(a - b);//(float)Angle.DistanceDeg(a, b); var templateIdx = model.ModelTypeIndex; var closestScale = getClosestValue(sortedScales[templateIdx], model.Scale, scaleDistFunc); var closestAngle = getClosestValue(sortedAngles[templateIdx], model.Angle, angleDistFunc); return(new ModelParams(templateIdx, closestScale, closestAngle)); }
private static void createRange(Dictionary<ModelParams, ITemplate> dict, Gray<byte>[,] templateImg, int templateIdx, IEnumerable<int> scaleRange, IEnumerable<int> rotationRange, string label = "") { var contour = findContour(templateImg); var pts = contour.GetEqualyDistributedPoints(N_SAMPLE_POINTS, treatAsClosed: false); pts = pts.Normalize(); foreach(var s in scaleRange) { foreach(var r in rotationRange) { var template = create(pts, s, r, label); var mParams = new ModelParams(templateIdx, (short)s, (short)r); dict.Add(mParams, template); } } }
public static ModelParticle FromParameters(params double[] arr) { var mParams = new ModelParams(modelTypeIndex: (int)arr[0], scale: (short)arr[1], angle: (short)arr[2]); mParams = ModelRepository.GetMostSimilarTo(mParams); var p = new ModelParticle { ModelParameters = mParams, Weight = 0 }; var template = mParams.TryGetTemplate(); p.updateTemplateData(template); return p; }
private static void createRange(Dictionary <ModelParams, ITemplate> dict, Gray <byte>[,] templateImg, int templateIdx, IEnumerable <int> scaleRange, IEnumerable <int> rotationRange, string label = "") { var contour = findContour(templateImg); var pts = contour.GetEqualyDistributedPoints(N_SAMPLE_POINTS, treatAsClosed: false); pts = pts.Normalize(); foreach (var s in scaleRange) { foreach (var r in rotationRange) { var template = create(pts, s, r, label); var mParams = new ModelParams(templateIdx, (short)s, (short)r); dict.Add(mParams, template); } } }
public static ModelParticle FromParameters(params double[] arr) { var mParams = new ModelParams(modelTypeIndex: (int)arr[0], scale: (short)arr[1], angle: (short)arr[2]); mParams = ModelRepository.GetMostSimilarTo(mParams); var p = new ModelParticle { ModelParameters = mParams, Weight = 0 }; var template = mParams.TryGetTemplate(); p.updateTemplateData(template); return(p); }