V současných systémech řízení dopravy je vysoká pravděpodobnost, že řidič přehlédne některé z dopravních značek na silnici z důvodu přeplněnosti sousedními vozidly. S neustálým růstem počtu vozidel v městských aglomeracích po celém světě se očekává, že se tento problém bude jen zhoršovat.

Na automobil lze implementovat vizuální systém rozpoznávání dopravních značek s cílem detekovat a rozpoznávat všechny vznikající dopravní značky. Totéž by se zobrazilo řidiči pomocí funkcí spouštění alarmu, pokud by řidič odmítl sledovat dopravní značení.

V eInfochips jsme se pokusili pomoci automobilovým společnostem detekovat a rozpoznávat dopravní značky ve videosekvencích zaznamenaných palubní kamerou vozidla. K zobrazení značek omezujících rychlost se používá rozpoznávání dopravních značek (TSR). Zde se pro zpracování obrazu používá OpenCV. OpenCV je open source knihovna počítačového vidění navržená pro výpočetní efektivitu se silným zaměřením na aplikace v reálném čase.

Tok jsme klasifikovali do dvou fází: Zjištění a Uznání

  • Zjištění
    • Rozostření
    • Detekce na základě barev
    • Detekce na základě tvaru
    • Funkce oříznutí a extrahování
    • Oddělení
    • Tesserakt
    • svm

    Blokové schéma:

    Zjištění

    Dopravní značky v Indii jsou ohraničeny červenými barevnými kruhy. Zaměření je tedy skutečně na červeně zakroužkované objekty v daném snímku nebo snímku. Proces detekce zahrnuje následující kroky:

    • Rozmazání: Nezpracovaný obraz může obsahovat náhodný nebo AWGN šum jako černé tečky kvůli méně účinnému snímacímu zařízení. Také kvůli nesprávnému osvětlení mohou mít některé části tohoto obrazu ostré hrany nebo náhlé změny barev, které mohou ovlivnit celý proces detekce. Abychom snížili šum nebo vyhladili obraz, musíme mít efekt podobný rozostření. Používají se dva typy rozmazání.

    • medianBlur() : snižuje šum soli a papíru
    • GaussianBlur() : Toto lze použít na nabroušené hrany pro vyhlazení

    Existují dva přístupy k detekci objektu,

    • Detekce na základě barev: Barva je jedním z nejúčinnějších atributů pro detekci objektů. Ve výchozím nastavení jsou informace o barevném obrázku reprezentovány v kartézském barevném prostoru, který je náhodou RGB (červená, zelená a modrá). RGB je aditivní barevný systém založený na trichromatické teorii. K dispozici jsou různé barevné prostory jako HSV nebo HSL, CMY (K), YIQ atd. Barevný prostor HSV (Hue, Saturation a Value) hraje důležitou roli při zpracování obrazu.

    -> Změna barevného prostoru: Změna barevného prostoru z RGB na HSV. HSV představují barevné informace ve formě válcových souřadnicových systémů.

    tj. (rho, phi a z) -> (Sytost, Odstín a Hodnota).

    -> Definované rozsahy barev: Barevný prostor HSV pomůže definovat konkrétní rozsah barev pro detekci objektů. tedy červená barva. Vyžaduje to dvě hranice: Horní a dolní. Zkombinujte obrázky spodní a horní hranice do jednoho obrázku s vhodnou váhou. Konečný obrázek obsahuje pouze informace o objektu v červené barvě.

    -> Detekce na základě barev poskytuje veškeré informace o červeném objektu přítomné na obrázku, které nás mohou nebo nemusí zajímat. Z tohoto důvodu musíme pro přesnou detekci klasifikovat obraz na základě tvaru.

    Detekce na základě tvaru: Pomocí detekce na základě tvaru je možné detekovat informace o konkrétním tvaru. tj. Kruhové objekty.

    -> V OpenCV má HoughCircle () schopnost detekovat specifické kruhové objekty v daném obrázku v měřítku gravy. Udává t celkový počet detekovaných kruhů se třemi důležitými parametry. tj. středové souřadnice (x, y) a poloměr.

    V této fázi jsme detekovali informace v červených kruzích.

    Funkce oříznutí a extrahování: Pomocí Rect and mask extrahujte funkce z červeného kruhu.

    Oddělení: K oddělení číslic se používá metoda kontury. tj. „50“ -> „5“ , „0“

    Nyní, když oddělené číslice přecházejí do fáze rozpoznávání. [Viz Detection_flow.png]

    Uznání

    Existuje tolik technik rozpoznávání, jako je Tesseract OCR, SVM, porovnávání šablon, SIFT, SURF, ORB, HOG, MSER atd.

    1. Tesseract

    Tesseract OCR (Optical Character Recognition) je nejlepší pro rozpoznávání znaků. Navíc poskytuje open source OCR engine. Tesseract má své vlastní předdefinované knihovny. Má vlastní sadu natrénovaných dat pro rozpoznávání znaků i s pomocí Leptonica. Podporuje více jazyků. V této metodě předáním textového obrázku do tesseract API rozpozná daný znak ve formě textu. Tesseract je nástroj příkazového řádku, který vygeneruje rozpoznaný text ze vstupního obrázku pomocí sady trénovacích dat dostupných v systému. Tesseract také poskytuje C++ API, které lze implementovat do libovolného programu.

    2. SVM

    Support Vector Machine je součástí konceptu strojového učení. SVM má schopnost klasifikovat a rozpoznávat obrázky pomocí trénovaných dat.

    Jak funguje SVM?

    Support Vector Machine (SVM) je diskriminační klasifikátor formálně definovaný oddělovací nadrovinou. Jinými slovy, s označenými tréninkovými daty (učení pod dohledem); Algoritmus vytváří optimální nadrovinu, která kategorizuje nové příklady.

    U lineárně oddělitelné sady 2D bodů, které patří do jedné ze dvou tříd, pomáhá najít oddělující přímku. [Viz separating-lines.png]

    Činnost algoritmu SVM je založena na nalezení nadroviny, která poskytuje největší minimální vzdálenost k tréninkovým příkladům. Více než dvakrát tato vzdálenost dostává v teorii SVM důležitý název marže. Optimální oddělovací nadrovina proto maximalizuje rezervu trénovacích dat. [Viz optimal-hyperplane.png]

    Jak se vypočítá optimální nadrovina?

    Zápis používaný k formální definici nadroviny:

    Kde B je známý jako váhový vektor a B0 jako vychýlení.

    Optimální nadrovinu lze reprezentovat jako,

    Kde x symbolizuje tréninkové příklady nejblíže nadrovině. Obecně se tréninkové příklady, které jsou nejblíže nadrovině, nazývají podpůrné vektory.

    Vzdálenost mezi bodem x a nadrovinou ( B, B0):

    Konkrétně pro kanonickou nadrovinu je čitatel roven jedné a vzdálenost k podpůrným vektorům je

    Okraj M je dvojnásobek vzdálenosti nejbližších příkladů:

    A konečně, problém maximalizace M je ekvivalentní problému minimalizace funkce L(B) s určitými omezeními. Omezení modelují požadavek, aby nadrovina správně klasifikovala všechny trénovací příklady

    Kde yi představuje každý z popisků příkladů školení.

    Kroky k rozpoznání obrázku pomocí SVM zahrnují:

    1) Nastavení tréninkových dat:

    Abychom mohli trénovat sadu obrázků na SVM, musíme nejprve vytvořit trénovací matici pro SVM. Tato matice je specifikována následovně: každý řádek matice odpovídá jednomu obrázku a každý prvek v tomto řádku odpovídá jednomu prvku třídy. V tomto případě barva a podpůrný vektor pixelu v určitém bodě. Protože jsou obrázky 2D, musíme je převést na 1D matici. Délka každého řádku bude plocha obrázku a každému trénovanému obrázku musíme přiřadit popisek. (Upozorňujeme, že obrázky musí mít stejnou velikost). [Viz SVM_Training.png]

    Zde 10 obrázků o velikosti 50×70, převedených do 1D matice o velikosti 1×3500. Nastavte také štítek pro každou 1-D matici.

    2) Nastavte parametry SVM

    Ptr svm = SVM::create();
    svm->setType(SVM::C_SVC);
    svm->setKernel(SVM::LINEAR);
    svm->setTermCriteria(TermCriteria(TermCriteria::MAX_ITER, 100, 1e-6));

    Typ SVM: C_SVC které lze použít pro klasifikaci n-tříd (n >=2).

    Typ jádra SVM: LINEÁRNÍ znamená mapování provedené na trénovací data pro zlepšení jejich podobnosti s lineárně oddělitelným souborem dat

    Kritéria ukončení algoritmu: Určuje maximální počet iterací a chybu tolerance.

    3) Trénujte SVM

    svm->train(trainingDataMat, ROW_SAMPLE, labelsMat);
    svm->save(«svm_training.xml»);

    Je to metoda pro sestavení svm modelu ve formě tréninku. Specifikuje, že každý trénovaný ukázkový obrázek obsahuje ukázky řádků a ukládá trénovací informace v souboru .xml.

    4) Otestujte snímky pomocí trénovaných dat SVM

    float response = svm->predict(sampleImage);

    Jednoduše načtěte obrázek, převeďte jej na 1D matici a předejte to svm->predict();

    Vrátí štítek shodného natrénovaného obrázku.

    3. Shoda šablon:

    Porovnání šablon je technika digitálního zpracování obrazu pro nalezení malých částí obrazu, které odpovídají obrazu šablony. Může být použit ve výrobě jako součást kontroly kvality, rozpoznávání objektů, způsob navigace mobilního robota nebo jako způsob detekce hran v obrazech.

    Abychom identifikovali odpovídající oblast, musíme porovnat obrázek šablony se zdrojovým obrázkem posunutím obrázku šablony přes zdrojový obrázek.

    Posouváním můžeme záplatu posouvat vždy o jeden pixel (středový pixel obrázku šablony) (zleva doprava, nahoru dolů) na každé místo. Výsledek poskytne ve formě matice, která představuje, jak „dobrá“ nebo „špatná“ shoda v daném místě je (nebo jak podobná je záplata konkrétní oblasti zdrojového obrázku).

    Pro každé umístění T (obrázek šablony) nad I (zdrojový obrázek) můžeme uložit výsledek do výsledné matice (R). Každé místo (x,y) v R (matice výsledků) obsahuje odpovídající výsledek. Nejjasnější umístění označuje nejvyšší shodu.

    V tomto případě porovnávání šablon nejprve převeďte všechny detaily a šablony do rozlišení s pevnou velikostí a proveďte aritmetickou operaci pixel po pixelu. Posouvání se tedy v tomto procesu provádí pouze jednou. Podle definované aritmetické operace a její shody s obrázkem šablony poznáme obrázek.

    Porovnání šablon nabízí šest různých metod výpočtu:

    metoda 1 :: CV_TM_SQDIFF: rozdíl na druhou

    metoda 2 :: CV_TM_SQDIFF_NORMED: normalizovaný čtvercový rozdíl

    metoda 3 :: CV_TM_CCORR: vzájemná korelace

    metoda 4 :: CV_TM_CCORR_NORMED: normalizovaná vzájemná korelace

    metoda 5 :: CV_TM_CCOEFF: korelační koeficient

    metoda 6:: CV_TM_CCOEFF_NORMED: normalizovaný korelační koeficient

    kde I = Zdrojový obrázek , T = Obrázek šablony.

    4. ORB:

    Když shoda šablon selže při rozpoznání, řízení přejde ve výchozím nastavení na ORB pro rozpoznání.

    Nejdůležitější na ORB je, že pochází z „OpenCV Labs“. Jedná se o kombinaci dvou algoritmů; Rychlý a krátký funkce. ORB je dobrou alternativou k SIFT a SURF, pokud jde o výpočetní náklady, odpovídající výkon a hlavně patenty. Ano, SIFT a SURF jsou patentovány a za použití se předpokládá, že zaplatíte. Ale ORB není.

    ORB je v podstatě spojením FAST detektoru klíčových bodů a BRIEF deskriptoru s mnoha modifikacemi pro zvýšení výkonu. Nejprve pomocí FAST najde klíčové body a poté použije Harrisovu rohovou míru k nalezení horních N bodů mezi nimi. Také používá pyramidy k výrobě víceúrovňových prvků. Ale je tu jeden problém, FAST nepočítá orientaci otáčení. Autoři přišli s KRÁTKOU úpravou.

    ORB má řadu volitelných parametrů. Nejužitečnější jsou nFeatures, které označují maximální počet funkcí, které mají být zachovány (ve výchozím nastavení 500), scoreType, které označuje, zda by funkce hodnotilo skóre Harris nebo FAST (ve výchozím nastavení skóre Harris) atd. Další parametr, WTA_K, rozhoduje o počtu body, které produkují každý prvek orientovaného BRIEF deskriptoru. Standardně jsou to dva, tedy výběr dvou bodů najednou. V takovém případě se pro párování použije vzdálenost NORM_HAMMING. Pokud je WTA_K 3 nebo 4, což vyžaduje 3 nebo 4 body k vytvoření STRUČNÉHO deskriptoru, pak je odpovídající vzdálenost definována pomocí NORM_HAMMING2

    Výstup rozpoznávání:

    Obrázek 1: Výstup rozpoznávání dopravních značek, ŽIVÝ provoz v Ahmedabad, Indie (Zdroj: eInfochips)

    Pozorovací tabulka:

    Důvodů, proč nám chybí dopravní značení, je mnoho. Kolísání koncentrace, únava, nedostatek spánku jsou jen málo častých důvodů. Mezi další faktory, které přispívají k chybějícím signálům, patří špatné osvětlení, vliv vnějšího prostředí a povětrnostní podmínky. Přesto se zdá nelogické, aby nás vedle nás někdo upozorňoval na dopravní značení. Je mnohem přijatelnější mít místo toho systém, který dokáže detekovat dopravní značky, aby řidiče naváděl a varoval.

    ČTĚTE VÍCE
    Je Ford F-150 generátor nebo měnič?