Taula de continguts:

Recompte d'objectes Raspberry Pi: 5 passos
Recompte d'objectes Raspberry Pi: 5 passos

Vídeo: Recompte d'objectes Raspberry Pi: 5 passos

Vídeo: Recompte d'objectes Raspberry Pi: 5 passos
Vídeo: Master GPIO with Raspberry Pi Pico & MicroPython - Part 2 2024, Juliol
Anonim
Recompte d'objectes Raspberry Pi
Recompte d'objectes Raspberry Pi

La visió per computador, sens dubte, és una cosa fantàstica. Utilitzant això, un ordinador adquireix la capacitat de "veure" i detectar millor l'entorn, cosa que permet el desenvolupament d'aplicacions complexes, útils i genials. Aplicacions com la detecció i reconeixement de rostres, el seguiment d’objectes i la detecció d’objectes estan cada vegada més presents en les nostres activitats del dia a dia, gràcies als avenços de la visió per computador.

Tenint en compte el grau d’avanç i d’accessibilitat dels marcs i eines de visió per ordinador, l’aplicació descrita en aquest article s’adapta bé: utilitzar un Raspberry PI senzill i un marc de visió per ordinador de codi obert i lliure de cost anomenat OpenCV per comptar objectes en moviment, més exactament quant els objectes entren i surten d’una determinada zona controlada.

Pas 1: aprofundir: com es pot detectar el moviment dels objectes en un flux d'imatges?

Aprofundint: com es pot detectar el moviment dels objectes en un flux d'imatges?
Aprofundint: com es pot detectar el moviment dels objectes en un flux d'imatges?

Ara és hora d'aprofundir en el processament d'imatges:

com obtenir imatges de flux de càmeres web i detectar que hi ha hagut alguna cosa

Consta de cinc passos:

Pas 1: per ressaltar l'objecte en moviment

Tal com es defineix a la física clàssica, cal fer una referència per inferir que alguna cosa es mou o si està parada. Aquí, per determinar que s’ha mogut alguna cosa, és pràcticament el mateix: cada fotograma capturat de flux de càmera web serà comparat amb un marc de referència. Si alguna cosa és diferent, alguna cosa s’ha mogut. És senzill com sembla.

Aquest marc de referència s'ha de capturar en les condicions més perfectes (per exemple, res en moviment). En el món del processament d’imatges, aquesta comparació entre un marc capturat i un marc de referència consisteix en una tècnica anomenada resta de fons. La subtracció de fons consisteix a restar literalment informació de color de píxel a píxel del marc capturat i del marc de referència. Per tant, la imatge resultant d’aquest procés ressaltarà / mostrarà amb més detalls només el que és diferent entre aquests dos fotogrames (o, el que s’ha mogut / té moviment) i tota la resta serà negre a la imatge (el color del valor zero en un gris -píxel d’escala). Important: les condicions d’il·luminació i la qualitat de la imatge de la càmera web capturada (a causa de la qualitat dels sensors de captura) poden variar lleugerament d’un fotograma a un altre. Implica que les "parts iguals" del marc de referència i d'altres no seran totalment negres després de la resta de fons. Tot i aquest comportament, no hi ha conseqüències greus en els següents passos de processament d'imatges en aquest projecte.

Per tal de minimitzar el temps de processament d'imatges, abans de fer un subtrat de fons, el marc capturat i el marc de referència es converteixen en una imatge a escala de grisos. Però perquè? És un problema d’eficiència informàtica: una imatge que presenta diversos colors (imatge en color) té tres informacions per píxel: components de color vermell, blau i verd (l’antic però RGB estàndard daurat). Per tant, matemàticament, cada píxel es pot definir com una matriu de tres valors, cadascun representant un component de color. Per tant, estenent-la a tota la imatge, la imatge final serà en realitat la combinació de tres components de la imatge: components de la imatge vermella, blava i verda.

Per processar-lo, cal molta feina. No obstant això, en imatges a escala de grisos, cada píxel només té una informació de color. Per tant, el processament d’una imatge en color és tres vegades més lent que en el cas de la imatge a escala de grisos (almenys tres vegades, depenent de la tècnica implicada). I hi ha més: per a alguns propòsits (com aquest projecte), processar tots els colors no és necessari ni és important. Per tant, vam arribar a la conclusió: l’ús d’imatges a escala de grisos és molt recomanable per al processament d’imatges. Després del subtrat de fons, cal aplicar el filtre Gaussian Blur.

El filtre Gaussian Blur aplicat sobre la imatge restada de fons suavitza tots els contorns de l'objecte detectat en moviment. De ben segur, serà útil en els propers passos del processament d’imatges.

Pas 2: binarització

Binarització
Binarització

En la majoria dels casos de processament d'imatges, la binarització és gairebé un pas obligatori després de ressaltar els objectes / caràcters d'una imatge. Motiu: en una imatge binària, cada color de píxel només pot assumir dos valors: 0x00 (negre) o 0xFF (blanc). Això ajuda molt al processament d'imatges per tal de requerir encara menys "poder informàtic" per aplicar tècniques de processament d'imatges en els passos següents. La binarització es pot fer comparant cada color de píxel de la imatge a escala de grisos amb un llindar determinat. Si el valor del color del píxel és superior al llindar, aquest color de píxel assumirà el valor blanc (0xFF) i si el valor del color del píxel és inferior al llindar, aquest color de píxel assumirà el valor negre (0x00). Malauradament, l'elecció del valor llindar no és tan fàcil de fer. Depèn de factors ambientals, com ara les condicions d’il·luminació. Una elecció incorrecta d’un valor llindar pot arruïnar tots els passos. Per tant, us recomanem que ajusteu manualment un llindar del projecte per al vostre cas abans de fer cap acció. Aquest valor llindar ha de garantir que l'objecte en moviment es mostri en imatge binària. En el meu cas, després d’una elecció adequada d’un llindar, resulta el que veieu a la figura 5.

Figura 5: imatge binària

Pas 3: dilatar

Fins ara, era possible detectar objectes en moviment, ressaltar-los i aplicar la binarització, cosa que resulta en una imatge bastant clara de l’objecte en moviment (= imatge bastant clara de l’objecte a efectes de processament d’imatges). La preparació per al recompte d’objectes és QUASI acabada. El "CASE" aquí significa que hi ha alguns ajustaments que cal fer abans de continuar. En aquest punt, hi ha possibilitats reals de presència de "forats" als objectes (masses negres de píxels a l'objecte ressaltat en blanc). Aquests forats poden ser qualsevol cosa, des de condicions particulars d’il·luminació fins a alguna part de la forma de l’objecte. Quan els forats poden "produir" objectes falsos dins d'objectes reals (depenent de la grandària i el lloc on es trobin), les conseqüències de la presència de forats en una imatge poden ser catastròfiques per al recompte dels objectes. Una manera d’eliminar aquests forats és utilitzar un processador d’imatges anomenat Dilate Technic. Utilitzeu això i els forats desapareixen.

Pas 4: la cerca dels contorns (i els seus centreids)

La cerca dels contorns (i els seus centreids)
La cerca dels contorns (i els seus centreids)

En aquest punt, tenim els objectes ressaltats, sense forats al seu interior i preparats per al següent: la cerca dels contorns (i els seus centreides). Hi ha recursos a l’OpenCV per detectar els contorns automàticament, però els contorns detectats s’han de triar amb prudència (només per triar l’objecte o objectes reals). Per tant, el criteri per detectar els contorns és l'àrea de l'objecte, mesurada en píxels². Si un contorn té una superfície superior a un límit (configurat al programari), s’ha de considerar com un objecte real a comptar. L’elecció d’aquest límit / criteri d’àrea és molt important, i una mala elecció aquí significa un recompte equivocat. Heu de provar alguns valors de límits de valor d'àrea i comprovar què s'adapta millor al vostre ús. No us preocupeu, aquest límit no és tan difícil de trobar / ajustar. Un cop escollits tots els objectes de la imatge, el següent pas és dibuixar-hi un retangle (aquest retangle ha de contenir tot un objecte detectat al seu interior). I el centre d’aquest rectangle és … l'objecte centroid! Potser esteu pensant "Quin és el gran problema d'aquest centreide?", No? Aquí teniu la vostra resposta: no importa la mida o la forma de l’objecte, el seu moviment és el mateix del centre. En altres paraules: aquest simple punt anomenat centreide representa tot el moviment de l'objecte. Ara fa que el recompte sigui molt senzill, oi? Vegeu la imatge següent (figura 6), on el centre de l'objecte es representa com un punt negre.

Pas 5: Moviment de Centorid i recompte d'objectes

El gran final: compareu les coordenades del centreide de l'objecte amb les coordenades de les línies d'entrada i sortida i apliqueu l'algoritme de recompte descrit anteriorment. I hi haurà un recompte d’objectes en moviment.

Com es mostra al començament d’aquest post, aquí teniu el projecte en acció:

Recomanat: