Színkövetés magyarázata#

Mi a szín követése, és hogyan csinálja a CMUcam4?#

A színkövetés az a képesség, hogy fogunk egy képet, elkülönítünk egy adott színt, és kinyerjük az információt a kép azon régiójának helyzetéről, amely éppen azt a színt tartalmazza. Példaként tegyük fel, hogy kap egy fényképet, amelyen egy piros labda ül egy földúton. Ha valaki megkérné, hogy rajzoljon egy dobozt a képen bármi köré, ami piros színű, akkor elég könnyen rajzolna egy téglalapot a labda köré. Ez a színkövetés alapötlete. Nem kellett tudnia, hogy a tárgy egy labda. Csak a piros szín fogalmával kellett rendelkeznie ahhoz, hogy elkülönítse a tárgyat a képen. Az alábbiakban röviden kitérünk arra, hogyan használja fel a CMUcam4 valójában a kameraképben lévő információt a színkövetés elvégzéséhez.

A szín megadásához definiálnia kell egy minimális és egy maximális megengedett értéket három színcsatornához. Minden egyedi színt egy piros, zöld és kék érték képvisel, amely azt jelzi, hogy az egyes csatornákból mennyi keveredik az egyedi színbe. A szín megadásának trükkös része az, hogy mindhárom színcsatornához meg kell határoznia a megengedett értékek tartományát. Mivel a fény nem tökéletesen egyenletes, és egy tárgy színe sem tökéletesen egyenletes, alkalmazkodnia kell ezekhez a változásokhoz. Azonban nem szabad túlságosan lazítani ezeken a határokon, különben sok nemkívánatos szín is elfogadásra kerül. Mivel a CMUcam4 esetében minden színcsatorna egy 0 és 255 közötti számmá alakul, minden csatornát két számmal, egy felső és egy alsó határral határolhat be. Ha mindhárom csatornához van két határa, ez azt jelenti, hogy hat érték használható a követni kívánt teljes színtér korlátozására. Ha elképzeli, hogy a színeket egy kocka képviseli, ahol minden oldal egy másik színcsatorna (piros, zöld és kék), akkor a szín kiválasztására használt hat érték egy háromdimenziós dobozt rajzolna abba a kockába, amely a kívánt színkészletet definiálja.

Miután megvan a követni kívánt szín határa, a CMUcam4 fogja ezeket a határokat, és feldolgozza a képet. Sokféle, meglehetősen összetett módja van a színek követésének egy képen. A CMUcam4 egy egyszerű, egymenetes algoritmust használ, amely minden új képkockát a kamerából egymástól függetlenül dolgoz fel. A kép bal felső sarkánál kezdi, és sorban, soronként megvizsgál minden pixelt. Ha a vizsgált pixel a felhasználó által megadott színtartományba esik, akkor azt a pixelt követettként jelöli meg. Megvizsgálja továbbá az aktuális követett pixel pozícióját, hogy az-e a legfelső, legalsó, legbaloldalibb vagy legjobboldalibb pozíció az összes, a képen eddig talált követett pixel közül. Ha azt találja, hogy a pixel az aktuális követett régió befoglaló keretén kívül van, akkor megnöveli a befoglaló keretet, hogy tartalmazza ezt az új pixelt. Mivel akár egyetlen követett pixel helye is megváltoztathatja a befoglaló keretet, a befoglaló keret néha meglehetősen ingadozhat képkockáról képkockára. A zajszűrés (lásd a következő bekezdést) használható ennek az ingadozásnak egy részének csökkentésére. Az egyetlen másik fontos tárolt információ a követett pixelek vízszintes és függőleges koordinátáinak összege. A kép végén a CMUcam4 fogja a követett pixelek vízszintes összegét és függőleges összegét, és mindegyiket elosztja a követett pixelek teljes számával, és kap egy értéket, amely megmutatja, hol helyezkedik el a követett tárgy közepe. Mivel minden követett pixel csak egy kis részt ad hozzá a végső vízszintes és függőleges összeghez, a követett pixelek közepe (gyakran súlypontnak nevezik) általában sokkal stabilabb mérés, mint a befoglaló keret. Miután a kép összes pixelét ellenőrizték, a követett pixelek teljes száma a befoglaló keret területével együtt is felhasználható a követett tárgy megbízhatóságának és pixelszámának kiszámításához.

A zajszűrés lehetővé teszi, hogy nagyobbra állítsuk a színkövetési tartományokat, így nagyobb változásokat tudunk kezelni a kép pixelértékeiben anélkül, hogy a képen lévő más véletlenszerű változásokat is követnénk. A zajszűrés mögötti gondolat az, hogy egy pixelt csak akkor akarunk a követett szín pixeljének tekinteni, ha egy olyan pixelcsoport része, amely a színkövetési határokon belül van. A CMUcam4-ben ezt úgy valósítjuk meg, hogy csak egyetlen menetet igényel a képen. A kép pixeleinek feldolgozása közben a CMUcam4 fenntart egy számlálót, amely nyilvántartja, hogy az aktuális sorban, az aktuális pixel előtt hány egymást követő pixel volt a követett szín határain belül. Ha ez az érték a zajszűrő értéke felett van, akkor az aktuális pixel követett pixelként lesz megjelölve.

Mi az a hisztogram, és mire jó?#

A hisztogram egy olyan diagramtípus, amely az adatok gyakoriságát és eloszlását jeleníti meg. A CMUcam4 esetében a hisztogram a képen található színértékek gyakoriságát és eloszlását mutatja. Minden oszlop egy adott csatorna színértékeinek egy tartományát képviseli. A CMUcam4 a 0-tól 255-ig terjedő lehetséges színértékeket 1, 2, 4, 8, 16, 32 és 64 különböző tárolóhelyre (bin) tudja felosztani. Minden tárolóhely a képen talált azon pixelek számát tartalmazza, amelyek valamely színhatárok közé esnek. Tehát egy adott tárolóhelyben lévő nagy érték azt jelenti, hogy sok ilyen színt találtak a képen. Minden hisztogram csak egyetlen kiválasztott színcsatornát képvisel.

A hisztogramok a kép tartalmának absztrahálására szolgálnak. Sok felhasználásuk van, például primitív tárgyfelismerés, küszöbölés vagy színkiegyenlítés. Különösen hasznosak a különböző textúrák megkülönböztetéséhez. Próbálja meg a CMUcam4-et kikapcsolt automatikus erősítéssel két különböző textúrájú felület felé irányítani, és figyelje meg a színeloszlásuk közötti különbséget. Ez a hatás felhasználható a padlófelületek megkülönböztetésére vagy akadályok észlelésére.