Пример #1
0
        private void init()
        {
            var path                  = Path.Combine(Directory.GetParent(Environment.CurrentDirectory).FullName, "Resources", "PrototypeTemplatesBW");
            var generatedScales       = EnumerableExtensions.GetRange(60, 170, 3);
            var generatedOrientations = EnumerableExtensions.GetRange(-90, +90, (int)((180f / GlobalParameters.NUM_OF_QUNATIZED_ORIENTATIONS) / 2 / 2 /*user factor - last "2"*/));

            Console.WriteLine("Generating templates.... Please wait!");
            var templates = OpenHandTemplate.CreateRange(path, "*.bmp", generatedScales, generatedOrientations);

            ModelRepository.Initialize(templates);
            //drawTemplatesToFiles(templates, "C:/generatedTemplates");

            Console.WriteLine("Initializing particle filter!");
            particleFilter = ParticleFilter.UnifromParticleSpreadInitializer(
                NUMBER_OF_PARTICLES,
                new DoubleRange[]
            {
                //template type
                new DoubleRange(0, ModelRepository.PrototypeCount - 1),

                //scale
                new DoubleRange(70, 150),

                //rotation
                new DoubleRange(-15, 15)
            },
                ModelParticle.FromParameters).ToList();

            initialParticles = particleFilter.Select(x => (ModelParticle)x.Clone()).ToList();
            resetClock       = new Stopwatch(); resetClock.Start();
        }
Пример #2
0
        public void Diffuse()
        {
            var id = (ModelParameters.ModelTypeIndex + rand.Next(ModelRepository.PrototypeCount)) % ModelRepository.PrototypeCount;

            ModelParameters.ModelTypeIndex = id;

            var angle = ModelParameters.Angle + rand.Next(-15, +15 + 1);

            ModelParameters.Angle = (short)angle;

            var scale = ModelParameters.Scale + rand.Next(-15, +15 + 1);

            ModelParameters.Scale = (short)scale;

            ModelParameters = ModelRepository.GetMostSimilarTo(ModelParameters);
            var template = ModelParameters.TryGetTemplate();

            this.updateTemplateData(template);
        }
Пример #3
0
        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);
        }