INHOUDSOPGAWE:

Framboos Pi -voorwerptelling: 5 stappe
Framboos Pi -voorwerptelling: 5 stappe

Video: Framboos Pi -voorwerptelling: 5 stappe

Video: Framboos Pi -voorwerptelling: 5 stappe
Video: Raspberry Pi: wat kun je ermee? 2024, Julie
Anonim
Framboos Pi -voorwerptelling
Framboos Pi -voorwerptelling

Rekenaarvisie is ongetwyfeld 'n fantastiese ding! Deur dit te gebruik, kry 'n rekenaar die vermoë om die omgewing rondom te "sien" en beter te voel, wat dit moontlik maak om komplekse, nuttige en cool toepassings te ontwikkel. Toepassings soos gesigopsporing en herkenning, objekopsporing en objekopsporing kom meer en meer voor in ons daaglikse aktiwiteite, danksy vooruitgang in rekenaarvisie.

Aangesien rekenaarvisie-raamwerke en -hulpmiddels gevorderd en toeganklik is, pas die toepassing wat in hierdie artikel beskryf word, goed: met behulp van 'n eenvoudige Raspberry PI en 'n gratis en oopbron-rekenaarvisieraamwerk genaamd OpenCV om voorwerpe in beweging te tel, meer presies hoeveel voorwerpe gaan in en uit 'n sekere gemonitorde sone.

Stap 1: Dieper word: hoe kan objekbeweging in 'n beeldstroom opgespoor word?

Word dieper: hoe kan objekbeweging in 'n beeldstroom opgespoor word?
Word dieper: hoe kan objekbeweging in 'n beeldstroom opgespoor word?

Dit is nou tyd om dieper te werk in beeldverwerking:

hoe om 'n paar webcam -stroombeelde te kry en op te spoor dat iets daarheen beweeg het

Dit bestaan uit vyf stappe:

Stap 1: Om die voorwerp in beweging uit te lig

Soos gedefinieer in die klassieke fisika, is 'n verwysing nodig om te sien dat iets beweeg of as dit stilstaan. Om te bepaal of iets beweeg het, is dit byna dieselfde: elke raam wat deur 'n webcam -stroom vasgelê word, sal vergelyk word met 'n verwysingsraamwerk. As iets anders is, is iets verskuif. Dit is eenvoudig soos dit klink.

Hierdie verwysingsraamwerk moet in die perfekste omstandighede vasgelê word (byvoorbeeld niks beweeg nie). In die wêreld van die beeldverwerking bestaan hierdie vergelyking tussen 'n vasgelegde raam en 'n verwysingsraamwerk uit 'n tegniek wat agtergrondaftrekking genoem word. Agtergrondsubtrasie bestaan uit letterlik pixel-tot-pixel kleurinligting van die vasgelegde raam en die verwysingsraamwerk. Die gevolglike beeld uit hierdie proses sal dus slegs meer besonderhede beklemtoon / wys met die verskil tussen hierdie twee rame (of wat beweeg het / beweeg het) en alles anders sal swart wees in die prentjie (die kleur van nulwaarde op 'n grys -skaalse pixel). Belangrik: die beligtingstoestande en die kwaliteit van die webkamera -opname (as gevolg van die kwaliteit van die opnamesensors) kan effens wissel van raam tot raam. Dit impliseer dat die 'gelyke dele' van die verwysingsraamwerk en 'n ander raam nie heeltemal swart sal wees na die aftrekking van die agtergrond nie. Ten spyte van hierdie gedrag, is daar geen ernstige gevolge in die volgende stappe van beeldverwerking in hierdie projek nie.

Om die verwerkingstyd van die beeld te verminder, word 'n vasgelegde raam en verwysingsraamwerk na 'n grysskaalbeeld omskep voordat 'n agtergrondsubtrasie gemaak word. Maar hoekom? Dit is 'n kwessie van rekenaardoeltreffendheid: 'n beeld met veelvuldige kleure (kleurprente) bevat drie inligting per pixel: rooi, blou en groen kleurkomponente (die ou, maar goue RGB -standaard). Dus, wiskundig, kan elke pixel gedefinieer word as 'n drie-waarde skikking, elk verteenwoordig 'n kleurkomponent. Daarom, as dit tot die hele beeld uitgebrei word, is die finale beeld eintlik 'n mengsel van drie beeldkomponente: rooi, blou en groen beeldkomponente.

Om dit te verwerk, is baie werk nodig! In grysskaalbeelde het elke pixel egter slegs een kleurinligting. Die verwerking van 'n kleurbeeld is dus drie keer stadiger as in grysskaal (ten minste drie keer, afhangende van watter tegniek daarby betrokke is). En daar is nog meer: vir sommige doeleindes (soos hierdie projek), is al die kleure glad nie nodig of belangrik nie. Daarom het ons tot die gevolgtrekking gekom: die gebruik van beelde op grys skaal word sterk aanbeveel vir die verwerking van beelde. Na die subtrasie van die agtergrond, is dit nodig om 'n Gaussian Blur -filter toe te pas.

Die Gaussian Blur -filter wat toegepas word op die agtergrond wat afgetrek word, maak alle kontoere van die bewegende bespeurde voorwerp glad. Dit sal beslis help in die volgende stappe van beeldverwerking.

Stap 2: Binarisering

Binarisering
Binarisering

In die meeste gevalle van beeldverwerking is binarisasie byna 'n verpligte stap na voorwerp / karaktereienskappe in 'n beeld. Rede: in 'n binêre beeld kan elke pixelkleur slegs twee waardes aanneem: 0x00 (swart) of 0xFF (wit). Dit help die beeldverwerking baie om nog minder 'rekenaarkrag' te benodig om beeldverwerkingstegnieke in die volgende stappe toe te pas. Binarisering kan gedoen word deur elke pixelkleur van die grysskaalbeeld met 'n sekere drempel te vergelyk. As die waarde van die pixelkleur groter as die drempel is, sal hierdie pixelkleur witwaarde (0xFF) aanneem, en as die waarde van die pixelkleur laer as die drempel is, sal hierdie pixelkleur swart waarde (0x00) aanneem. Ongelukkig is die keuse van die drempelwaarde nie so maklik nie. Dit hang af van omgewingsfaktore, soos beligtingstoestande. 'N Verkeerde keuse van 'n drempelwaarde kan al die stappe verder verwoes. Daarom beveel ek u sterk aan om 'n drempel in die projek vir u saak handmatig aan te pas voor verdere aksies. Hierdie drempelwaarde moet verseker dat die bewegende voorwerp in 'n binêre beeld verskyn. In my geval, na 'n voldoende keuse van 'n drumpel, lei dit tot wat u in figuur 5 sien.

Figuur 5 - binêre beeld

Stap 3: Verdun

Tot nou toe was dit moontlik om bewegende voorwerpe op te spoor, dit uit te lig en binarisering toe te pas, wat lei tot 'n redelik duidelike beeld van bewegende voorwerp (= 'n redelike duidelike beeld van die voorwerp vir beeldverwerkingsdoeleindes). Die voorbereiding vir die tel van voorwerpe is byna gedoen. Die 'byna' hier beteken dat daar 'n paar fyn aanpassings moet wees voordat u verder gaan. Op hierdie punt is die werklike kans dat daar 'gate' in die voorwerpe is (swart massas pixels in die wit gemerkte voorwerp). Hierdie gate kan enigiets wees, van spesifieke beligtingstoestande tot 'n deel van die voorwerpvorm. Sodra gate vals voorwerpe binne werklike voorwerpe kan "produseer" (afhangende van hoe groot en waar hulle geleë is), kan die gevolge van die teenwoordigheid van gate in 'n beeld katastrofies wees vir die telling van voorwerpe. 'N Manier om hierdie gate uit te skakel, is deur 'n beeldverwerkingstegniek genaamd Dilate te gebruik. Gebruik dit en gate gaan weg.

Stap 4: Die soeke na die kontoere (en sy sentroïede)

Die soeke na die kontoere (en sy sentroïede)
Die soeke na die kontoere (en sy sentroïede)

Op hierdie punt het ons die gemerkte voorwerpe, geen gate daarin nie en gereed vir die volgende: die soektog na die kontoere (en die sentroïede daarvan). Daar is hulpbronne in OpenCV om outomaties kontoere op te spoor, maar die aangetaste tellings moet verstandig gekies word (slegs om die werklike voorwerp of voorwerpe te kies). Die kriteria om die kontoere op te spoor, is dus die oppervlakte van die voorwerp, gemeet in pixels². As 'n kontoer 'n groter gebied as 'n limiet het (in sagteware gekonfigureer), moet dit as 'n werklike voorwerp beskou word. Die keuse van hierdie gebiedsgrens/kriteria is baie belangrik, en 'n slegte keuse hier beteken verkeerde tellings. U moet 'n paar waardes vir gebiedsgrense probeer en kyk wat die beste by u gebruik pas. Moenie bekommerd wees nie; hierdie limiet is nie so moeilik om te vind / aan te pas nie. Sodra al die voorwerpe in die prent gekies is, is die volgende stap om 'n reghoek te teken (hierdie reghoek moet 'n hele bespeurde voorwerp daarin bevat). En die middelpunt van hierdie reghoek is…. die voorwerp sentroïed! U dink miskien: "Wat is die probleem met hierdie sentroïde?", Reg? Hier is u antwoord: maak nie saak hoe groot of hoe die vorm van die voorwerp is nie; sy beweging is dieselfde as die sentroïde. Met ander woorde: hierdie eenvoudige punt genaamd sentroïed verteenwoordig die hele beweging van die voorwerp. Dit maak die telling nou baie eenvoudig, nie waar nie? Sien die onderstaande prentjie (figuur 6), waar die voorwerp se sentroïde as 'n swart punt voorgestel word.

Stap 5: Beweging en voorwerptelling van Centorid

Die finale: vergelyk die sentroïedkoördinate van die voorwerp met die koördinate van die ingangs- en uitganglyne en pas die telalgoritme toe wat voorheen beskryf is. En daar word getel van bewegende voorwerpe!

Finale resultaat Soos in die begin van hierdie berig getoon, is die projek in aksie:

Aanbeveel: