Výsledky 1 až 3 z 3

Téma: [all] Rastrove vyplnovani

  1. #1
    Senior Member
    Založen
    07.10.2002
    Bydliště
    Ostrava / Straznice
    Příspěvky
    1 133
    Vliv
    289

    Standardní [all] Rastrove vyplnovani

    Potreboval bych nejak polopaticky vysvelit, jak to vlastne funguje. Chapu zcasti princip, ale nejak me to podle skript moc smysl nedava. Davam sem i cast skript, kde se to pise, uci nas to slovak, ale to doufam problem nebude.

    Diky za pripadne vysvetleni...

    Predpokladajme, že existuje vnútorný bod, z ktorého začíname proces vyplňovania – inicializačný pixel. Problém je vo svojej podstate rekurzívny a dá sa jednoducho sformulovať napr. takto:
    Def Vypln(x, y, cin, cout) Ak P(x,y) ≠ cin, a zároveň P(x,y) ≠ cout potom vykonaj kroky 1.—5.
    1. P(x,y) = cin
    2. Vypln(x-1,y, cin, cout)
    3. Vypln(x+1,y, cin, cout)
    4. Vypln(x,y-1, cin, cout)
    5. Vypln(x,y+1, cin, cout)
    Už pri pomerne malých oblastiach je však hĺbka rekurzie tak vysoká, že procedúra je prakticky nepoužiteľná. Preto je nutné zredukovať počet rekurzívnych vnorení napr. tak, že v jednom kroku rekurzie

    1. pre stanovený pixel nájdeme na tom istom riadku vnútorný pixel, ktorý je najviac vľavo – prvý vnútorný pixel,

    2. od prvého vnútorného pixelu vyplňujeme všetky pixely smerom do prava, až kým nenarazíme na hranicu,

    3. pri vyplňovaní každého pixelu zisťujeme, či pixel „pod“ a „nad“ nie sú kritické,

    4. kritické pixely uchováme.

    Pritom kritický pixel je taký, ktorý súčasne spĺňa nasledujúce tri podmienky:
    a) je vnútorný bod oblasti
    b) je nevyplnený
    c) je „nad“ alebo „pod“ prvým vnútorným pixelom na riadku, alebo vľavo od neho je hraničný pixel, alebo je to inicializačný pixel.

    Kroky 1.—4. vykonávame dovtedy, kým existujú kritické pixely. Miera rekurzie v tomto prípade závisí od toho, koľko nových kritických pixelov vzniká pri vyplňovaní jedného riadku.

    Skonštruujte situáciu, keď pri vyplňovaní riadku vznikajú 4 kritické pixely.
    Intel C2D 4300, 1GB DDR2, 120GB Seagate, nVidia7600GT pasiv.

  2. #2

    Standardní

    To sou ruzne metody vyplnovani - nejjednodussi a taky nepomalejsi je flood fill, pak sou jine algoritmy, pouzivajici vyplnovani pomoci car (da se to HW akcelerovat) apod.

    http://www.fit.vutbr.cz/study/courses/index.php?id=92

    Muzu ti z toho poslat ty prednasky, na webu nejsou, nekdo je smazal. Melo by tam byt nazorne popsano vyplnovani.
    (asi bych nasel i nejaky C++ kod z cviceni)
    In a world without fences and walls, who needs Gates and Windows? | Nesnáším wide monitory.
    Workstation: Xeon E3-1275v5 :: Silentmaxx TwinBlock fanless :: Fujitsu D3417-B :: 32 GB ECC DDR4 :: Radeon Pro WX 2100 fanless :: Dell UP2715K :: Gentoo
    Server: Xeon E3-1245v6 :: Supermicro X11SSH-F :: 32 GB ECC DDR4 :: Aquantia 5GBase-T :: 36 TB storage :: Gentoo Hardened

  3. #3
    Senior Member
    Založen
    07.10.2002
    Bydliště
    Ostrava / Straznice
    Příspěvky
    1 133
    Vliv
    289

    Standardní

    To by bylo super, mam z toho zitra zkousku a ten clovek ma zalibu v letadlech
    Intel C2D 4300, 1GB DDR2, 120GB Seagate, nVidia7600GT pasiv.

Informace o tématu

Users Browsing this Thread

Toto téma si právě prohlíží 1 uživatelů. (0 registrovaných a 1 anonymních)

Pravidla přispívání

  • Nemůžete zakládat nová témata
  • Nemůžete zasílat odpovědi
  • Nemůžete přikládat přílohy
  • Nemůžete upravovat své příspěvky
  •