internal unsafe void Zlepiaj(int *mapaSpójnychObszarów, SiecNeuronowa.ISiećNeuronowa <string> sieć, Size samLoto, bool *obrazKopis, List <ZdjecieZPozycją> listaZdjęć) { ZaładujObszary(listaZdjęć); var Rzuty = PobierzRzutY(obrazKopis, new Rectangle(Point.Empty, samLoto), samLoto.Width); double Skaler = 255; Skaler /= Rzuty.Max(); int Próg = (int)(ProgowanieGradientowe.ProgójTablice(Rzuty, (int)(samLoto.Height * SkalerByPominąćKrańce)) * SkalerRóznicyNajkrutszyOdNajduszychLinijek); bool[] SprogowaneY = Otsu.ProgójTablice(Rzuty, Próg); if (!ProgowanieAdaptacyjne.Sprawdź2Modalność(Otsu.PobierzHistogram256(Matematyka.SkalujTablice(Rzuty, Skaler)), (int)(Skaler * Próg), 1.2f)) { return; } int[] SumaWRzędach = SumaBool(SprogowaneY, PrzypószczalnaWysokość); var Ekrema = ZnajdźEktremaNajwieksze(SumaWRzędach, PrzypószczalnaWysokość / 2); UsuńStycznePoPierszeństwie(Ekrema, PrzypószczalnaWysokość); #if DEBUG ZapiszLinikiY(samLoto, obrazKopis, SprogowaneY, new HashSet <int>(Ekrema), SumaWRzędach); #endif foreach (var item in Ekrema) { BadajLinike(mapaSpójnychObszarów, samLoto, obrazKopis, listaZdjęć, item); } DecydujOPrzynależności(); List <ZdjecieZPozycją> Dodawane = ZnajdźNoweObszary(obrazKopis, sieć, samLoto); HashSet <ZdjecieZPozycją> ObszaryDoUsuniecia = ZnajdźDoUsuniecia(); listaZdjęć.RemoveAll(x => ObszaryDoUsuniecia.Contains(x)); Dodawane.ForEach(x => x.ZlepionaRzutami = true); listaZdjęć.AddRange(Dodawane); #if DEBUG ZlepianieRzutami(samLoto, obrazKopis, Dodawane); #endif }
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); }
static PodziałLinik() { Sieć = SiecNeuronowa.SieciRywalizujące <string> .Wczytaj("Loto\\Sieci\\" + StałeGlobalne.NazwaPlikuRywalizującejSieci, Czytnik); SiećNeuronowa = new OpakowanieSieci <string>(Network.Load("Loto\\Sieci\\siec.tv"), Sieć.DzienikZamian); }
public ZlepianieLinijek(SiecNeuronowa.ISiećNeuronowa <string> s) { Sieć = s; }