Пример #1
0
        private unsafe List <ZdjecieZPozycją> ZnajdźNoweObszary(bool *c, SiecNeuronowa.ISiećNeuronowa <string> sieć, Size Wielkość)
        {
            List <ZdjecieZPozycją> z = new List <ZdjecieZPozycją>();

            foreach (var item in ZnalezioneObszary)
            {
                if (item.Count > 0)
                {
                    List <ZdjecieZPozycją> Lisr = new List <ZdjecieZPozycją>();

                    foreach (var item2 in item)
                    {
                        ZdjecieZPozycją zpi;
                        if (ObsógaMapyObszarów.TryGetValue(item2.NarKwadratu, out zpi))
                        {
                            Lisr.Add(zpi);
                        }
                    }
                    if (Lisr.Count > 0)
                    {
                        ZdjecieZPozycją zp = new ZdjecieZPozycją();
                        zp.Obszar = DoKwadratów.StwórzKwadratZawierającyWiele(Lisr.ToArray());
                        zp.ObliczPodobieństwo(c, Wielkość.Width, sieć);
                        zp.Moc = Lisr.Sum(x => x.Moc);
                        z.Add(zp);
                    }
                }
            }
            return(z);
        }
Пример #2
0
        public ZdjecieZPozycją PobierzZdjecie(List <int> Zloczone)
        {
            ListaZPorównywaniem <int> l = new ListaZPorównywaniem <int>(Zloczone);

            if (DzienikZnalezionych.ContainsKey(l))
            {
                return(DzienikZnalezionych[l]);
            }
            else
            {
                ZdjecieZPozycją z = new ZdjecieZPozycją();
                z.Obszar   = DoKwadratów.StwórzKwadratZawierającyWiele(PobierzZdjeciaPoIndeksach(Zloczone));
                z.Skeljona = Zloczone.Count > 1;
                z.ObliczPodobieństwo(Obraz, Szerokośc, Sieć);
                DzienikZnalezionych.Add(l, z);
                return(z);
            }
        }
Пример #3
0
        public void Scal()
        {
            List <ZdjecieZPozycją>    DoDodania   = new List <ZdjecieZPozycją>();
            HashSet <ZdjecieZPozycją> DoUsuniecia = new HashSet <ZdjecieZPozycją>();

            while (w.Count != 0)
            {
                WystepująceWTymSamymMiejscu ostatni = w.Last();
                if (ostatni.Count == 1)
                {
                    w.RemoveAt(w.Count - 1);
                    continue;
                }

                ZdjecieZPozycją z = new ZdjecieZPozycją();
                z.Obszar = DoKwadratów.StwórzKwadratZawierającyWiele(ostatni.ToArray());
                z.ObszarInterpolowany = DoKwadratów.StwórzKwadratZawierającyWieleRec(WeźInterpolowany(ostatni));
                z.Skeljona            = true;
                z.ObliczPodobieństwo(Obraz, Szerokość, sieć);
                if (PrógDoUsuniecia + z.NajbliszePodobieństwo < ostatni.Podobność)
                {
                    foreach (var item in ostatni)
                    {
                        DoUsuniecia.Add(item);
                    }
                    w.RemoveAll(X => X.Kolizja(ostatni));
                    DoDodania.Add(z);
                }
                else
                {
                    w.RemoveAt(w.Count - 1);
                }
            }

            LinikaZmieniana.ListaZZdjeciami.RemoveAll(X => DoUsuniecia.Contains(X));
            LinikaZmieniana.ListaZZdjeciami.AddRange(DoDodania);
            LinikaZmieniana.ListaZZdjeciami.Sort(new DoKwadratów.SortowanieWzgledemX());
        }
Пример #4
0
 public void UsuńMałe() => DoKwadratów.UsuńOdbiegająceWielkością(ListaZZdjeciami, WspółczynikUsunieciaConst);