image

Měření fronty

Motivace, koncepce

Měření délky kolon je jedou z klíčových aplikací dopravního inženýrství. Získané informace lze využít zejména pro zkvalitnění řízení dopravního uzlu na první úrovni, křižovatce. Pro návrh řízení křižovatky dle matematického modelu je nejčastějším používaným kritériem maximalizace počtu vozidel, která křižovatkou projedou. Směrové poměry dopravního proudu se zpravidla v průběhu dne mění. S tím je spojena tvorba kolon při nevyhovujícím signálním plánu.

Navržení opravdu kvalitního modelu řízení je tedy spojeno s důkladným seznámením se s poměry a variačními cykly dané křižovatky. Toho lze docílit pozorováním, avšak to vede k veliké časové náročnosti. Aby se potřebný čas minimalizoval, byl navržen dále popisovaný software. Mimo to jej lze využít při dynamickém řízení, případně jinak.


Obrázek 1: Kolona.

Realizace

Software je navržen s důrazem na snadnou ovladatelnost a uživatelskou přívětivost. Pro pozorování oblasti není nutné aby pracoval v real-time režimu, avšak pro dynamické řízení je to nutnou podmínkou. Proto je na něj kladen další požadavek - výpočetní rychlost. Ta je úzce spjata s hardware, na kterém aplikace běží. Avšak s výkonem hardware roste i jeho cena, snažíme se tedy o to, aby software pracoval v režimu real-time na průměrné kancelářské stanici.

Popis a funkce algoritmu

Software je navržen v jazyce C++, což je objektový jazyk, který programátorovi dovoluje vytvářet logické celky - modely skutečné situace - zvané objekty. Pro realizaci software pro odhad délky kolon byly vytvořeny následující objekty:


Obrazek 2: Ukázka zdrojového kódu.

TVirtualniSmycka. Je modelem klasické indukční smyčky. Charakteristickou vlastností je schopnost sdělit, zda je obsazena či nikoli. Dále dokáže počítat projíždějící vozidla, v případě potřeby lze její činnost pozastavit - smyčku odpojit. K jejím výhodám patří uživatelova volnost při jejím umisťování, poměrně dobrá přesnost a další. Smyčka pracuje nad binárním snímkem pohybu, který pracovně nazýváme maska.


Obrázek 3: Virtuální smyčka.

TKolonovaSmycka. Tato smyčka je odvozena od virtuální smyčky. Její funkční část tvoří několik virtuálních smyček, které spravuje účelově navržená logika, jejímiž výstupy jsou např. aktuální obsazenost, maximální obsazenost atp.

Tato smyčka se potýká s problémy, které ovlivňují přesnost odhadu délky kolony. Asi největší z nich je umístění kamery - zpravidla se kolona snímá čelním pohledem, to způsobí, že při příjezdu vysokého vozidla (např. kamionu) se kolona jeví delší než ve skutečnosti je. Když se za takovýto kamion zařadí osobní vozidlo, to nemusí být z kamerového stanoviště pozorováno, tak se proti předchozímu stavu se změní pouze přesnost odhadu délky kolony.

Kolonová smyčka
Obrázek 4: Kolonová smyčka.

TScena. Tento objekt má dvě důležité funkce. Stará se o rozmístění a nastavení vlastností detekčních smyček na scéně. Tyto informace má uloženy v konfiguračním souboru, který lze snadno vytvořit buďto přímo v popisovaném software, nebo o něco složitěji, za předpokladu znalosti struktury souboru, v textovém editoru.

Druhou funkcí je rozlišení objektů popředí (pohybující se vozidla) a pozadím scény (statické objekty jako vozovka, most, dopravní značení apod.) K tomuto účelu se využívají tři obrázky. Prvním je aktuální snímek (může přijít z kamery nebo videa), druhým je snímek pozadí. Objekt TScena se snaží z příchozích snímků odstranit pohybující se objekty a zachovat pouze to statické. Podobně jako když editujete fotografii, ve snaze odstranit z ní obličej svého méně oblíbeného sourozence.

Rozmístění smyček
Obrázek 5: Smyčky rozmístěné ve sledované scéně.

Toto algoritmu umožňuje dlouhá expozice (i několik minut). To samozřejmě není vlastnost kamery. Dlouhou expozici simulujeme softwarově z několika desítek nebo stovek po sobě jdoucích snímků. Dále využíváme logických pravidel, která rozhodují o tom, zda je pixel (obrazová jednotka) součástí pozadí nebo popředí a tedy o jeho zápisu do obrázku z pozadím.

Kvalita snímku pozadí je rozhodujícím faktorem pro úspěšnost celého software. Je proto nutné věnovat jeho tvorbě dostatečnou pozornost a to jak ve formě propracovanosti algoritmu pro jeho generování tak v dostatku výpočetních prostředků - tvorba pozadí zabírá většinu procesorového času, přiděleného programu.

Celá scéna
Hezké pozadí
Výsledná maska
Obrázek 6: Popředí, pozadí a jejich rozdíl - maska.

Třetím a posledním snímkem je již výše zmíněná binární - pouze dvě barvy (černá a bílá) - maska. Ta je tvořena rozdílem snímku aktuálního a snímku s pozadím. Výsledek je poté oprahován experimentálně stanovenou optimální hodnotou. Nad tímto snímkem pracuje první část objektu TScena, tedy smyčky.

Rozmazané pohybyjící se objekty v pozadí
Obrázek 7: Dlouhá expozice způsobí vytracení pohybujících se objektů.

Požadavky na pozadí

Protože je pozadí stěžejním článkem pro úspěšný a bezchybný chod programu, věnujeme mu následujících několik řádek. Klademe na něj tyto požadavky:

  • Nezapisovat objekty popředí, když už, tak pomalu
  • Rychle mazat objekty popředí omylem zapsané do pozadí
  • Rychlost modelu
  • Přizpůsobovat model pomalým změnám (stmívání apod.)
  • Přizpůsobovat model rychlým změnám (mrak za jasného počasí ...)

Body 1. a 2. lze vyřešit za předpokladu, že umíme rozpoznat cizí objekty v pozadí (pohybující se vozidla se stanou součástí snímku pozadí a tedy pro software neviditelné). A že umíme rozpoznat cizí objekty v popředí (změna osvětlení během průjezdu vozidla způsobí neobnovení vozidlem zakryté části vozovky a její následnou detekci jako objektu popředí).




Obrázek 8: Vozidlo zanechalo na obrázku s pozadím stopy, které se jeví jako falešný pohyb.

Tento problém lze řešit např. tak, že v posledních řekněme tisíci snímcích nalezneme medián pro dané souřadnice, čímž se zvýší pravděpodobnost, že tento medián je částí pozadí, a porovnáním s pixelem, o kterém rozhodujeme určíme, zda je tento součástí pozadí či nikoli. Nevýhodou tohoto řešení je kolize s požadavkem 3. Dále nelze očekávat obstojný výsledek tam, kde se tvoří kolony (např. před stop-čárou), kde by tedy medián mohl vyjít jako nejvíce zastoupená barva vozidel v dopravním proudu.

Jak bylo výše zmíněno, my požíváme dlouhou expozici v kombinaci s logickými pravidly, která se snaží minimalizovat její nedokonalost pro naši potřebu. Dlouhou expizici si můžeme představit jako nevážené průměrování několika desítek nebo stovek posledních snímků, tím vznikají chyby v modelu hlavně v oblasti před stop-čárou, kde může být pozadí zastoupeno méně než 50% času pozorování.

Bod 3. řeší absence používání rozsáhlých struktur, kontejnerů se stovkami obrázků, nad nimiž zdlouhavým procházením hledáme statistické ukazatele.

Body 4. a 5. lze řešit tak, že pozorujeme masku a při jejím velkém obsazení (např. 80% se jeví jako pohyb) zvýšíme citlivost expozice. Toto řešení však není univerzální, závisí na poměru pohybujících se objektů na scéně. Jeho další nevýhodou je že při zvýšené citlivosti snadno dojde k nechtěnému zápisu objektu popředí do snímku s pozadím.

Přeexponované popředí
Maska z přeexponovaného popředí
Obrázek 9: Bílé vozidlo vpředu přenastavilo expozici kamery a tím znehodnotilo masku.

Snadná konfigurace, user friendly interface

Samozřejmostí dobrého software je uživatelská přívětivost. Tento software s uživatelem za provozu příliš nekomunikuje. Pouze zobrazuje informace, které vypozoruje ze scény, v případě potřeby umí tyto
informace uchovat nebo předat. Přesto jsme chování aktivních prvků navrhli a barevně odlišili s důrazem na přehlednost.

Neobsazená virtuální smyčka
Obsazená virtuální smyčka
Obrázek 10: Obsazená a volná virtuální smyčka.

Situací ve které software potřebuje s uživatelem komunikovat nastane při konfiguraci. Zde se vedle snímku se scénou zobrazí malé menu, ze kterého si uživatel myší vybere a rozmístí prvky podle svých představ. V případě potřeby program vyzve uživatele k zadání doplňujících informací pomocí příkazového řádku. Na základě těchto vstupů je následně vygenerován konfigurační soubor, ze kterého se informace načtou při dalším spuštění programu.


Umisťnování smyček
Obrázek 10: Konfigurační menu s příkladem rozmisťování smyček.

Dnešní stav

K dnešnímu dni (28.03.2007) je program schopen detekovat počty projíždějících vozidel pomocí měřících smyček. Umí vygenerovat konfigurační soubor, dokáže se z konfiguračního souboru inicializovat. Dále je schopen vytvořit model pozadí a přehledně zobrazit celou situaci.

Soubory

[png file]

auto_smouha_maska.png

Maska se šmouhou od auta

[jpg file]

auto_smouha_popredi.jpg

Obrázek popředí

[jpg file]

auto_smouha_pozadi.jpg

Obrázek pozadí

[jpg file]

hezke_pozadi.jpg

Hezké pozadí

[jpg file]

kolona.jpg

Fronta vozidel

[jpg file]

konfigurace.jpg

Konfigurační rozhraní

[jpg file]

konfigurace_umistovani.jpg

Umisťnování smyček

[png file]

maska.png

Výsledná maska

[jpg file]

popredi.jpg

Celá scéna

[png file]

preexponovano_maska.png

Maska z přeexponovaného popředí

[jpg file]

preexponovano_popredi.jpg

Přeexponované popředí

[jpg file]

rozmisteni.jpg

Rozmístění smyček

[jpg file]

smouhy.jpg

Rozmazané pohybyjící se objekty v pozadí

[jpg file]

smycka_kolonoca.jpg

Kolonová smyčka

[jpg file]

smycka_merici.jpg

Měřicí smyčka

[jpg file]

smycka_obsazena.jpg

Obsazená virtuální smyčka

[jpg file]

snycka_neobsazena.jpg

Neobsazená virtuální smyčka

[png file]

zdrojak_smaller.png

Zdrojový kód