![[cs]](_i/flag_cz.gif)
![[en]](_i/flag_en.gif)
O úroveň výš | |
Zpět na domovskou stránku |
Jednou z možností určení poměru odbočení je pomocí vhodně umístěných virtuálních smyček, respektive dvojice smyček. Každému směru odpovídají určité dráhy pohybu vozidel, a tedy pro určení počtu odbočujících stačí sledovat tyto dráhy.
Každému směru připadne jedna dvojice smyček. Na obrázku jsou znázorněny přibližně dráhy vozidel pro směry A->C, A->B, B->C, B->A a C->A.
Obr.1: Znázornění směrů jízdy.
Obsazenost smyčky se určuje z masky pozadí, kde bílé body znázorňují pohyb vozidel. Smyčka se bere za obsazenou, když její zaplnění dosáhne určité hodnoty (například 95%) a uvolnění nastane při poklesu zaplnění pod kritickou mez (například 45%). Je vidět, že smyčka pro svoji aktivaci a deaktivaci využívá hystereze, která je důležitá, neboť naše maska pohybu není vždy ideální a občas se v pohybujícím objektu vyskytují „díry“. Smyčky jsou ve dvojicích, protože je třeba kontrolovat i směr vozidla. Bylo by jen velmi obtížné, či dokonce nemožné nalézt polohy smyček tak, aby do jedné smyčky zasahoval JEN jeden směr. Viz dvoj smyčka na Obr.1 přes kterou projíždí vozidla ve směru A-B, C-A a B-C, ale jen správný směr A-B vyvolá správnou sekvenci obsazování první a druhé smyčky a započte průjezd v daném směru.
Smyčky budou umístěny pomoci jednoduchého editoru, který bude součástí výsledného programu. O jednotlivých smyčkách bude třeba uchovat následující informace:
1) ID
– identifikátor smyčky
2) poloha
(X,Y)
3) velikost
(záleží na velikosti snímané scény)
4) Úhel
natočení (0-360°)
5) Textový
popis směru
Tyto informace budou uloženy v souboru, který bude vytvořen a bude moci být editován. Každá křižovatka totiž vyžaduje jiný počet a jiné rozmístění smyček
Maska pohybu je vytvořena rozdílem aktuálního snímku z kamery (videa) a modelem pozadí, který je vytvořen a upravován podle dlouhodobých změn na scéně (změna intenzity jasu, pohyb stínů statických objektů). Pozadí je dynamicky upravováno tak, že hodnota každého pixelu je postupně zvyšována nebo snižována až k hodnotě která je na stejné pozici v aktuálním snímku. Pozadí se tak snaží pomalu vypadat jako aktuální snímek, ale vzhledem k velikosti připisované (nebo odečítané) konstantě (alfa=0,00004) se do pozadí zapíší jen statické předměty (nebo velmi pomalu se pohybující).
Při spuštění programu je alfa vyšší aby se model základního pozadí vytvořil rychleji, pro další činnost je již vhodné konstantu snížit (aby nemizela vozidla stojící na semaforu).
Obrázek 2: Model pozadí.
Model pozadí je záměrně rozostřen. Tímto rozostřením je redukován vliv šumu v obraze a je možné použít nižší hladinu prahování a tím zvýšit kvalitu masky pohybu.
Poměrně značným problémem jsou stíny, které mohou způsobit falešnou detekci. Na Obrázku 3 by sice k falešné detekci nedošlo, neboť červené auto a stín autobusu jely v zákrytu, ale v jiných případech by to problém mohl být. S ohledem na tento fakt je třeba vhodně zvážit nejlepší umístění smyčky na vozovku. Bílý „flek“ nad smyčkou je způsoben částečným zapsáním stojícího vozu do pozadí (příliš vysoká hodnota alfa v obnovování pozadí). Pro naše potřeby to ale nevadí, dokonce je lepší rychlejší update pozadí (rychleji se vůz na pozadí zapíše a rychleji z pozadí zase zmizí).
Obrázek 3: Falešné obsazení smyčky stínem.
Maska je nakonec upravena pomocí morfologických operací ERODE a DILATE, které odstraní osamocené pixely a ucelí neúplné části. Opět je třeba těchto mocných operací užít s rozvahou, neboť nevhodné použití může vést ke spojení dvou a více různých objektů. Na Obr.4 nahoře je například vidět tenká vodorovná čárka spojující motocyklistu a automobil.
Obrázek 4: Několik průjezdů smyčkou.
Výsledek celého programu je do značné míry ovlivňován použitou kamerou, jejím nastavením a kvalitou záznamu. Rychlá automatická expozice způsobuje celoplošné ztmavení při průjezdu větší světlé plochy, což má za následek umělé obsazení všech smyček a tedy chybu ve výsledném sčítání počtu projetých aut.
![]() |
Autobus |
![]() |
První příklad křižovatky |
![]() |
Druhý příklad křižovatky |
![]() |
Třetí příklad křižovatky |
![]() |
Pozadí scény |
![]() |
Uvažované směry jízdy |