Vysvětlení sledování barvy#
Co je sledování barvy a jak jej CMUcam4 provádí?#
Sledování barvy je schopnost vzít obraz, izolovat určitou barvu a získat informace o poloze oblasti tohoto obrazu, která obsahuje právě tuto barvu. Jako příklad předpokládejme, že dostanete fotografii, na které je červený míč ležící na polní cestě. Pokud by vás někdo požádal, abyste nakreslili rámeček kolem všeho, co má v obraze červenou barvu, docela snadno byste nakreslili obdélník kolem míče. To je základní myšlenka sledování barvy. Nepotřebovali jste vědět, že objektem je míč. K izolování objektu na snímku jste potřebovali pouze mít představu o červené barvě. Níže stručně popíšeme, jak CMUcam4 ve skutečnosti používá informace v obraze z kamery k provedení sledování barvy.
Abyste určili barvu, musíte definovat minimální a maximální přípustnou hodnotu pro tři barevné kanály. Každá jedinečná barva je reprezentována hodnotou červené, zelené a modré, která udává, kolik z každého kanálu je do jedinečné barvy namícháno. Zapeklité na určování barvy je, že musíte definovat rozsah přípustných hodnot pro všechny tři barevné kanály. Protože světlo není dokonale rovnoměrné a barva objektu není dokonale rovnoměrná, musíte tyto variace zohlednit. Nechcete však tyto meze příliš uvolnit, jinak bude přijato mnoho nežádoucích barev. Protože v případě CMUcam4 je každý barevný kanál převeden na číslo mezi 0 a 255, můžete každý kanál ohraničit dvěma čísly, horní a dolní mezí. Pokud máte dvě meze pro každý ze tří kanálů, znamená to, že šest hodnot lze použít k omezení celého barevného prostoru, který chcete sledovat. Pokud si barvy představíte reprezentované krychlí, kde každá strana je jiný barevný kanál (červený, zelený a modrý), pak by šest hodnot použitých k výběru vaší barvy nakreslilo uvnitř této krychle trojrozměrný kvádr, který definuje vaši požadovanou sadu barev.
Jakmile máte meze pro barvu, kterou chcete sledovat, CMUcam4 tyto meze vezme a zpracuje obraz. Existuje mnoho způsobů sledování barev v obraze, které mohou být poměrně složité. CMUcam4 používá jednoduchý jednoprůchodový algoritmus, který zpracovává každý nový obrazový snímek z kamery nezávisle. Začíná vlevo nahoře v obraze a postupně zkoumá každý pixel řádek po řádku. Pokud pixel, který kontroluje, spadá do rozsahu barev, které uživatel určil, označí tento pixel jako sledovaný. Zkoumá také polohu aktuálního sledovaného pixelu, aby zjistil, zda se jedná o nejvyšší, nejnižší, nejlevější nebo nejpravější polohu ze všech dosud v obraze nalezených sledovaných pixelů. Pokud zjistí, že je pixel mimo aktuální ohraničující rámeček sledované oblasti, rámeček zvětší, aby tento nový pixel obsahoval. Protože i poloha jediného sledovaného pixelu může změnit ohraničující rámeček, může rámeček někdy dost kolísat od snímku ke snímku. K omezení části tohoto kolísání lze použít filtrování šumu (viz další odstavec). Jedinou další důležitou informací, která se ukládá, je součet vodorovných a svislých souřadnic sledovaných pixelů. Na konci obrazu CMUcam4 vezme vodorovný součet a svislý součet sledovaných pixelů a každý vydělí celkovým počtem sledovaných pixelů a získá hodnotu, která ukazuje, kde se nachází střed sledovaného objektu. Protože každý sledovaný pixel přispívá pouze malou částí k výsledným vodorovným a svislým součtům, je střed (často nazývaný těžiště) sledovaných pixelů obvykle mnohem stabilnějším měřením než ohraničující rámeček. Jakmile jsou zkontrolovány všechny pixely v obraze, lze celkový počet sledovaných pixelů také použít ve spojení s plochou ohraničujícího rámečku k výpočtu spolehlivosti a počtu pixelů ve sledovaném objektu.
Filtrování šumu nám umožňuje zvětšit rozsahy sledování barvy, abychom mohli zohlednit větší variace v hodnotách pixelů obrazu, aniž bychom způsobili sledování jiných náhodných variací v obraze. Myšlenka filtrování šumu spočívá v tom, že chceme pixel považovat za pixel sledované barvy pouze tehdy, pokud je součástí skupiny pixelů, které jsou v mezích sledování barvy. V CMUcam4 to implementujeme způsobem, který vyžaduje pouze jediný průchod obrazem. Při zpracování pixelů v obraze udržuje CMUcam4 čítač, který sleduje, kolik po sobě jdoucích pixelů v aktuálním řádku před aktuálním pixelem bylo v mezích sledované barvy. Pokud je tato hodnota nad hodnotou filtru šumu, pak je aktuální pixel označen jako sledovaný pixel.
Co je histogram a k čemu je dobrý?#
Histogram je typ grafu, který zobrazuje četnost a rozložení dat. V případě CMUcam4 histogram ukazuje četnost a rozložení hodnot barev nalezených v obraze. Každý sloupec představuje rozsah hodnot barev pro konkrétní kanál. CMUcam4 může rozdělit možné hodnoty barev od 0 do 255 do 1, 2, 4, 8, 16, 32 a 64 různých přihrádek. Každá přihrádka obsahuje počet pixelů nalezených v obraze, které spadají do určitých barevných mezí. Velká hodnota v jedné konkrétní přihrádce tedy znamená, že v obraze bylo nalezeno mnoho těchto barev. Každý histogram představuje pouze jeden vybraný barevný kanál.
Histogramy jsou způsobem abstrahování obsahu obrazu. Mají mnoho využití, jako je primitivní rozpoznávání objektů, prahování nebo vyvažování barev. Jsou obzvláště užitečné pro rozlišování mezi různými texturami. Zkuste namířit CMUcam4 s vypnutým automatickým zesílením na dva různě texturované povrchy a všimněte si rozdílu v jejich rozložení barev. Tento efekt lze použít k rozlišení podlahových povrchů nebo detekci překážek.