Përmbajtje:

Raspberry Pi Numërimi i Objekteve: 5 Hapa
Raspberry Pi Numërimi i Objekteve: 5 Hapa

Video: Raspberry Pi Numërimi i Objekteve: 5 Hapa

Video: Raspberry Pi Numërimi i Objekteve: 5 Hapa
Video: День Стройки #Лайфхак #Ким #свс Азы Новичкам база знаний #theants Underground Kingdom 2024, Korrik
Anonim
Llogaritja e objekteve të mjedrës Pi
Llogaritja e objekteve të mjedrës Pi

Vizioni kompjuterik, pa dyshim, është një gjë fantastike! Duke përdorur këtë, një kompjuter fiton aftësinë për të "parë" dhe ndjerë më mirë mjedisin përreth, gjë që lejon zhvillimin e aplikacioneve komplekse, të dobishme dhe të lezetshme. Aplikime të tilla si zbulimi dhe njohja e fytyrës, gjurmimi i objekteve dhe zbulimi i objekteve janë gjithnjë e më të pranishme në aktivitetet tona të përditshme, falë përparimeve të vizionit kompjuterik.

Duke marrë parasysh sa të avancuara dhe të arritshme janë kornizat dhe mjetet e vizionit kompjuterik, aplikacioni i përshkruar në këtë artikull përshtatet mirë: duke përdorur një Raspberry PI të thjeshtë dhe një kornizë vizioni kompjuterik pa kosto dhe me burim të hapur të quajtur OpenCV për të numëruar objektet në lëvizje, më saktësisht sa objektet hyjnë dhe dalin nga një zonë e caktuar e monitoruar.

Hapi 1: Të thelloheni: Si mund të zbulohet lëvizja e objekteve në një rrjedhë imazhi?

Duke u thelluar: Si mund të zbulohet lëvizja e objekteve në një rrjedhë imazhi?
Duke u thelluar: Si mund të zbulohet lëvizja e objekteve në një rrjedhë imazhi?

Tani është koha për t'u thelluar në gjërat e përpunimit të imazhit:

si të merrni disa imazhe të transmetimit të kamerës në internet dhe të zbuloni se diçka ka lëvizur atje

Ai përbëhet nga pesë hapa:

Hapi 1: Për të nxjerrë në pah objektin në lëvizje

Siç përcaktohet në fizikën klasike, një referencë është e nevojshme për të konkluduar se diçka po lëviz ose nëse qëndron në vend. Këtu, për të përcaktuar nëse diçka ka lëvizur, është pothuajse e njëjtë: çdo kornizë e vetme e kapur nga kamera në internet do të krahasohet me një kornizë reference. Nëse diçka është ndryshe, diçka është zhvendosur. Simpleshtë e thjeshtë siç tingëllon.

Kjo kornizë referimi duhet të kapet në kushtet më perfekte (asgjë nuk lëviz, për shembull). Në botën e përpunimit të imazhit, ky krahasim midis një kornize të kapur dhe një kornize referimi konsiston në një teknikë të quajtur zbritja e sfondit. Nënshtrimi i sfondit konsiston në zbritjen e informacionit të ngjyrës nga pixel në pixel nga korniza e kapur dhe korniza e referencës. Pra, imazhi që rezulton nga ky sukses do të nxjerrë në pah / shfaq me më shumë detaje vetëm atë që është e ndryshme midis këtyre dy kornizave (ose, çfarë kanë lëvizur / marrë lëvizje) dhe gjithçka tjetër do të jetë e zezë në imazh (ngjyra e vlerës zero në një gri -piksel i shkallës). E rëndësishme: kushtet e ndriçimit dhe cilësia e imazhit të kamerës së internetit të kapur (për shkak të cilësisë së sensorëve të kapjes) mund të ndryshojnë paksa nga korniza në kornizë. Kjo nënkupton që "pjesët e barabarta" nga korniza referuese dhe kornizat e tjera nuk do të jenë plotësisht të zeza pas zbritjes së sfondit. Pavarësisht nga kjo sjellje, nuk ka pasoja serioze në hapat e ardhshëm të përpunimit të imazhit në këtë projekt.

Për të minimizuar kohën e përpunimit të figurës, para se të bëni një subtraksion në sfond, korniza e kapur dhe korniza e referencës shndërrohen në një imazh të shkallës gri. Por pse? Ashtë një çështje efikasiteti kompjuterik: një imazh që paraqet ngjyra të shumta (imazh me ngjyra) ka tre informacione për piksel: Komponentët me ngjyrë të kuqe, blu dhe jeshile (standardi i vjetër, por i artë RGB). Pra, matematikisht, çdo piksel mund të përkufizohet si një grup me tre vlera, secila prej të cilave përfaqëson një përbërës ngjyrash. Prandaj, duke e shtrirë atë në të gjithë imazhin, imazhi përfundimtar do të jetë në fakt përzierja e tre përbërësve të imazhit: Përbërësit e imazhit të kuq, blu dhe jeshil.

Për ta përpunuar atë, kërkohet shumë punë! Sidoqoftë, në imazhet në shkallë gri, çdo piksel ka vetëm një informacion me ngjyra. Pra, përpunimi i një imazhi me ngjyra është tre herë më i ngadalshëm sesa në rastin e imazhit në shkallë gri (të paktën tre herë, në varësi të asaj teknike të përfshirë). Dhe ka edhe më shumë: për disa qëllime (si ky projekt), përpunimi i të gjitha ngjyrave nuk është aspak i nevojshëm ose i rëndësishëm. Prandaj, arritëm në përfundimin: përdorimi i imazheve në shkallë gri rekomandohet shumë për qëllimin e përpunimit të imazhit. Pas zbritjes së sfondit, është e nevojshme të aplikoni filtrin Gaussian Blur.

Filtri Gaussian Blur i aplikuar mbi imazhin e zbritur në sfond zbut të gjitha konturet e objektit në lëvizje të zbuluar. Me siguri, do të jetë e dobishme në hapat e ardhshëm të përpunimit të imazhit.

Hapi 2: Binarizimi

Binarizimi
Binarizimi

Në shumicën e rasteve të përpunimit të imazhit, binarizimi është pothuajse një hap i detyrueshëm pas nxjerrjes në pah të objekteve / karakteristikave në një imazh. Arsyeja: në një imazh binar, çdo ngjyrë pixel mund të marrë vetëm dy vlera: 0x00 (e zezë) ose 0xFF (e bardhë). Kjo ndihmon shumë në përpunimin e imazhit në mënyrë që të kërkojë edhe më pak "fuqi llogaritëse" për të aplikuar teknikat e përpunimit të imazhit në hapat e ardhshëm. Binarizimi mund të bëhet duke krahasuar çdo ngjyrë pixel të imazhit në shkallë gri me një prag të caktuar. Nëse vlera e ngjyrës së pikselit është më e madhe se pragu, kjo ngjyrë e pikselit do të marrë vlerën e bardhë (0xFF), dhe nëse vlera e ngjyrës së pikselit është më e ulët se pragu, kjo ngjyrë e pikselit do të marrë vlerën e zezë (0x00). Për fat të keq, zgjedhja e vlerës së pragut nuk është aq e lehtë për t'u bërë. Varet nga faktorët e mjedisit, siç janë kushtet e ndriçimit. Një zgjedhje e gabuar e një vlere pragu mund të prishë të gjithë hapat më tej. Pra, ju rekomandoj fuqimisht që të rregulloni manualisht një prag në projekt për rastin tuaj para çdo veprimi të mëtejshëm. Kjo vlerë e pragut duhet të sigurojë që objekti në lëvizje të shfaqet në imazh binar. Në rastin tim, pas zgjedhjes adekuate të një pragu, rezulton në atë që shihni në figurën 5.

Figura 5 - imazh binar

Hapi 3: Zgjero

Deri më tani, ishte e mundur të zbuloheshin objekte në lëvizje, të nxirreshin në pah dhe të zbatohej binarizimi, gjë që rezulton në një imazh mjaft të qartë të objektit në lëvizje (= imazh mjaft i qartë i objektit për qëllime të përpunimit të imazhit). Përgatitja për numërimin e objekteve është bërë Pothuajse. "Pothuajse" këtu do të thotë që ka disa rregullime të shkëlqyera për t'u bërë para se të vazhdoni. Në këtë pikë, ka shanse reale për praninë e "vrimave" në objekte (masat e zeza të pikselëve në objektin e bardhë të theksuar). Këto vrima mund të jenë gjithçka, nga kushtet e veçanta të ndriçimit në një pjesë të formës së objektit. Pasi vrimat mund të "prodhojnë" objekte të rreme brenda objekteve reale (në varësi të madhësisë dhe vendndodhjes së tyre), pasojat e pranisë së vrimave në një imazh mund të jenë katastrofike për numërimin e objekteve. Një mënyrë për të eleminuar këto vrima është përdorimi i një Teknike të përpunimit të imazhit të quajtur Dilate. Përdoreni këtë dhe vrimat largohen.

Hapi 4: Kërkimi i kontureve (dhe centroideve të tij)

Kërkimi për konturet (dhe centroidët e tij)
Kërkimi për konturet (dhe centroidët e tij)

Në këtë pikë, ne kemi objektet e theksuara, pa vrima brenda tij dhe gati për atë që vjen më pas: kërkimin e kontureve (dhe centroideve të tij). Ka burime në OpenCV për të zbuluar konturet automatikisht, por konturet e zbuluara duhet të zgjidhen me mençuri (për të zgjedhur vetëm objektin ose objektet e vërteta). Pra, kriteret për të zbuluar konturet është zona e objektit, e matur në piksel². Nëse një kontur ka një sipërfaqe më të madhe se një kufi (e konfiguruar në softuer), kështu që duhet të konsiderohet si një objekt i vërtetë për t'u numëruar. Zgjedhja e kufirit/kritereve të kësaj zone është shumë e rëndësishme, dhe një zgjedhje e keqe këtu do të thotë numërim i gabuar. Ju duhet të provoni disa vlera të kufijve të vlerës së zonës dhe të kontrolloni se çfarë i përshtatet më mirë përdorimit tuaj. Mos u shqetësoni, këto kufizime nuk janë aq të vështira për tu gjetur / rregulluar. Pasi të zgjidhen të gjitha objektet në imazh, hapi tjetër është të vizatoni një retangle në të (ky retangle duhet të përmbajë një objekt të tërë të zbuluar brenda tij). Dhe qendra e këtij drejtkëndëshi është…. objekti centroid! Ndoshta po mendoni "Cila është çështja e madhe me këtë centroid?", Apo jo? Këtu është përgjigjja juaj: nuk ka rëndësi sa e madhe apo si është forma e objektit, lëvizja e tij është e njëjtë me centroidin. Me fjalë të tjera: kjo pikë e thjeshtë e quajtur centroid përfaqëson të gjithë lëvizjen e objektit. Kjo e bën numërimin shumë të thjeshtë tani, apo jo? Shihni imazhin më poshtë (figura 6), ku qendra e objektit përfaqësohet si një pikë e zezë.

Hapi 5: Lëvizja dhe numërimi i objekteve të Centorid

Finalja e madhe: krahasoni koordinatat centroid të objektit me koordinatat e linjave hyrëse dhe dalëse dhe aplikoni algoritmin e numërimit të përshkruar më parë. Dhe do të ketë numërim të objekteve në lëvizje!

Siç tregohet në fillim të këtij postimi, këtu është projekti në veprim:

Recommended: