Tartalomjegyzék:

Raspberry Pi objektumszámlálás: 5 lépés
Raspberry Pi objektumszámlálás: 5 lépés

Videó: Raspberry Pi objektumszámlálás: 5 lépés

Videó: Raspberry Pi objektumszámlálás: 5 lépés
Videó: Raspberry Pi Explained in 100 Seconds 2024, Július
Anonim
Raspberry Pi tárgyszámlálás
Raspberry Pi tárgyszámlálás

A számítógépes látás kétségkívül fantasztikus dolog! Ennek használatával a számítógép elnyeri a képességét, hogy jobban "lássa" és érzékelje a környezetet, ami lehetővé teszi összetett, hasznos és jó alkalmazások fejlesztését. Az olyan alkalmazások, mint az arcfelismerés és -felismerés, az objektumkövetés és a tárgyfelismerés, a számítógépes látás fejlődésének köszönhetően egyre inkább jelen vannak mindennapi tevékenységeinkben.

Tekintettel arra, hogy a számítógépes látás keretrendszerei és eszközei mennyire fejlettek és hozzáférhetők, a cikkben leírt alkalmazás jól illeszkedik: egy egyszerű Raspberry PI és egy ingyenes, nyílt forráskódú, OpenCV nevű számítógépes látáskeret segítségével számolják a mozgásban lévő objektumokat, pontosabban mennyit. az objektumok be- és kilépnek egy bizonyos felügyelt zónába.

1. lépés: Egyre mélyebb: Hogyan lehet észlelni a tárgyak mozgását egy képfolyamban?

Egyre mélyebb: Hogyan lehet észlelni a tárgyak mozgását egy képfolyamban?
Egyre mélyebb: Hogyan lehet észlelni a tárgyak mozgását egy képfolyamban?

Itt az ideje, hogy elmélyüljön a képfeldolgozásban:

hogyan szerezhet be néhány webkamerás adatfolyamot, és észlelheti, hogy valami oda költözött

Öt lépésből áll:

1. lépés: A mozgásban lévő tárgy kiemelése

A klasszikus fizika meghatározása szerint referencia szükséges annak megállapításához, hogy valami mozog, vagy ha mozdulatlanul áll. Itt annak megállapításához, hogy valami megmozdult -e, nagyjából ugyanaz: minden egyes webkamera -adatfolyam által rögzített képkockát összehasonlítanak egy referenciakerettel. Ha valami más, akkor valamit áthelyeztek. Egyszerű, ahogy hangzik.

Ezt a referenciakeretet a legtökéletesebb körülmények között kell rögzíteni (például semmi sem mozog). A képfeldolgozás világában ez az összehasonlítás a rögzített keret és a referenciakeret között a háttér kivonásnak nevezett technikát foglalja magában. A háttérszubtráció abból áll, hogy a rögzített keretből és a referenciakeretből szó szerint kivonják a képpontok közötti színinformációkat. Tehát a folyamat eredményeként kapott kép csak azt fogja kiemelni / megmutatni további részletekkel, hogy mi a különbség a két képkocka között (vagy ami elmozdult / mozgott), és minden más fekete lesz a képen (a nulla érték színe szürke -skála pixel). Fontos: a megvilágítási feltételek és a rögzített webkamera minősége (a rögzítési érzékelők minősége miatt) képkockánként kis mértékben változhat. Ez azt jelenti, hogy a referenciakeretből származó "egyenlő részek" és egy másik képkocka nem lesz teljesen fekete a háttér kivonása után. E viselkedés ellenére ennek a projektnek a képfeldolgozás következő lépéseiben nincsenek komoly következményei.

A képfeldolgozási idő minimalizálása érdekében a háttér -szubsztrálás előtt a rögzített keret és a referenciakeret szürkeárnyalatos képpé alakul át. De miért? Ez számítástechnikai hatékonysággal kapcsolatos probléma: a több színben megjelenített kép (színes kép) képpontonként három információval rendelkezik: piros, kék és zöld színösszetevők (a régi, de arany RGB szabvány). Tehát matematikailag minden képpont háromértékű tömbként definiálható, amelyek mindegyike egy színkomponenst képvisel. Ezért, ha kiterjesztjük a teljes képre, a végső kép valójában három képkomponens keveréke lesz: piros, kék és zöld képkomponensek.

A feldolgozáshoz sok munka szükséges! A szürkeárnyalatos képeknél azonban minden képpont csak egy színinformációt tartalmaz. Tehát egy színes kép feldolgozása háromszor lassabb, mint a szürkeárnyalatos kép esetén (legalább háromszor, attól függően, hogy milyen technikáról van szó). És van még más is: bizonyos célokra (például ehhez a projekthez) az összes szín feldolgozása egyáltalán nem szükséges vagy fontos. Ezért arra a következtetésre jutottunk: a szürkeárnyalatos képek használata erősen ajánlott képfeldolgozási célokra. A háttér -szubsztráció után Gauss -Blur szűrőt kell alkalmazni.

A háttérből kivont Gauss -elmosódás szűrő kisimítja a mozgó észlelt objektum minden kontúrját. Az biztos, hogy segít a képfeldolgozás következő lépéseiben.

2. lépés: Binarizálás

Binarizálás
Binarizálás

A képfeldolgozás legtöbb esetben a binarizálás szinte kötelező lépés a kép kiemelt objektumai / karakterisztikái után. Ok: egy bináris képen minden képpont szín csak két értéket vehet fel: 0x00 (fekete) vagy 0xFF (fehér). Ez sokat segít a képfeldolgozásban annak érdekében, hogy a következő lépésekben még kevesebb "számítási teljesítmény" szükségesjen a képfeldolgozási technikák alkalmazásához. A binarizálás elvégezhető a szürkeárnyalatos kép egyes képpontjainak színével egy bizonyos küszöbértékhez hasonlítva. Ha a képpont színének értéke meghaladja a küszöbértéket, akkor ez a képpont szín fehér értéket (0xFF) vesz fel, és ha a képpontszín értéke alacsonyabb a küszöbértéknél, akkor ez a képpontszín fekete értéket (0x00) vesz fel. Sajnos a küszöbérték kiválasztása nem olyan egyszerű. Ez a környezeti tényezőktől, például a fényviszonyoktól függ. A küszöbérték rossz megválasztása tönkreteheti az összes lépést. Ezért határozottan javaslom, hogy manuálisan állítsa be a projekt küszöbértékét az Ön esetére, mielőtt bármilyen további lépést megtenné. Ennek a küszöbértéknek biztosítania kell, hogy a mozgó objektum bináris képben jelenjen meg. Esetemben egy küszöb megfelelő megválasztása után azt eredményezi, amit az 5. ábrán lát.

5. ábra - bináris kép

3. lépés: Tágítson

Eddig lehetőség volt a mozgó objektumok észlelésére, kiemelésére és a binarizáció alkalmazására, ami a mozgó objektum elég tiszta képét eredményezi (= az objektum elég tiszta képe képfeldolgozási célokra). Az objektumszámlálás előkészítése majdnem megtörtént. A "majdnem" itt azt jelenti, hogy vannak finom beállítások a továbblépés előtt. Ezen a ponton valós esély van arra, hogy "lyukak" jelenjenek meg az objektumokban (fekete pixeltömegek a fehér kiemelt objektumba). Ezek a lyukak bármi lehet, az adott fényviszonyoktól kezdve az objektum alakjának egyes részein. Amint a lyukak hamis tárgyakat "előállíthatnak" a valódi tárgyakon belül (attól függően, hogy mekkora és hol találhatók), a lyukak képen való megjelenésének következményei katasztrofálisak lehetnek az objektumok számolására. A lyukak kiküszöbölésének egyik módja a Dilate nevű képfeldolgozó technika. Használja ezt, és a lyukak eltűnnek.

4. lépés: A kontúrok (és középpontok) keresése

A kontúrok keresése (és középpontai)
A kontúrok keresése (és középpontai)

Ezen a ponton megvannak a kiemelt objektumok, nincsenek benne lyukak, és készen állunk a következőre: a kontúrok (és középpontjai) keresésére. Az OpenCV -ben vannak erőforrások a kontúrok automatikus észlelésére, de az észlelt kontúrokat okosan kell megválasztani (csak a valódi objektum vagy objektumok kiválasztásához). Tehát a kontúrok észlelésének kritériumai az objektum területe, pixelben² mérve. Ha egy kontúrnak nagyobb a területe, mint egy korlát (szoftveresen konfigurálva), akkor azt valós objektumnak kell tekinteni. Ennek a területhatárnak/kritériumnak a megválasztása nagyon fontos, és a rossz választás itt rossz számításokat jelent. Próbáljon ki néhány területérték -határértéket, és ellenőrizze, hogy melyik illik jobban a használatához. Ne aggódjon, ezeket a korlátokat nem nehéz megtalálni / beállítani. Miután a kép összes objektuma ki lett választva, a következő lépés egy újrarajzolás rajzolása (ennek az áttekerésnek egy teljes észlelt objektumot kell tartalmaznia benne). És ennek a téglalapnak a középpontja…. az objektum középpontja! Talán azon gondolkodik: "Mi a nagy baj ezzel a centroiddal?", Igaz? Itt a válasz: nem számít, hogy mekkora vagy milyen alakú a tárgy, mozgása megegyezik a centroidéval. Más szavakkal: ez az egyszerű pont, amelyet centroidnak neveznek, az objektum minden mozgását képviseli. Nagyon egyszerűvé teszi a számolást most, nem? Lásd az alábbi képet (6. ábra), ahol az objektum középpontja fekete pontként jelenik meg.

5. lépés: Centorid mozgása és tárgyszámlálása

A nagy finálé: hasonlítsa össze az objektum középponti koordinátáit a be- és kilépési vonalak koordinátáival, és alkalmazza a korábban leírt számlálási algoritmust. És számolni kell a mozgó tárgyakkal!

Ahogy a bejegyzés elején leírták, itt a projekt működése:

Ajánlott: