Hva er øyeblikk i OpenCV?

Beste svaret

Bakgrunn:

Moment er et kvantitativt mål (deskriptor), populært brukt i mekanikk og statistikk , for å beskrive den romlige fordelingen av poengsett. I de fleste forenklede termer er øyeblikk sett med skalarer som gir et samlet mål på et sett med vektorer. Definisjonen av øyeblikk er den samme på tvers av domener innen mekanikk, statistikk og datasyn. Sett med øyeblikk begynner med den groveste beskrivelsen av settet med vektorer, og gradvis med høyere ordrer, begynner å bli mer følsom for lokale strukturer i settet med vektorer. Valget av nyttig rekkefølge avhenger av datadistribusjonen og settene av vektorer jeg er interessert i å skille mellom.

Hvis punktene representerer masse , er nullpunktet den totale massen, det første øyeblikket delt på den totale massen er massesenter , og det andre øyeblikket er rotasjonsinerti . Hvis punktene representerer sannsynlighetstetthet , er nullpunktet den totale sannsynligheten (dvs. en ), det første øyeblikket er betyr , det andre øyeblikket er avvik , det tredje øyeblikk er skjevhet , og det fjerde øyeblikket (med normalisering og skift) er kurtosis . [Wikipedia: Moments (Mathematics)]

Moments in images:

Momentbegrepet i statistikk og mekanikk er lånt i datasyn for grovt å beskrive et bilde. For bilde med pikselintensiteter I ( x , y ), blir de rå bildemomentene M\_ {ij} beregnet av

M\_ {ij} = \ sum\_ {x} \ sum\_ {y} I (x, y)

, der i, j er rekkefølgen på øyeblikkene. I en typisk beregningsrørledning for billedmoment blir bildet I (x, y) konvertert til et sett med vektorer ved først å beregne et gråskalabilde og deretter bruke en hjørne- eller kantdetektor for å redusere bildet til et sett med fremtredende punkter. Den romlige fordelingen av disse punktene karakteriserer bildet, ved at et bilde med ulikt visuelt innhold vil ha en målbart annen romlig fordeling av fremtredende punkter. De forskjellige rekkefølgen av øyeblikkene av bildet (sett med fremtredende punkter) gir masse, sentroid, hovedakse osv. Av bildet.

Øyeblikk i OpenCV:

Eksempel på beregningsmomenter for et bilde i opencv.

Mat src, gray; // opencv matrices for the image and its grayscale

src = imread( "../path/to/image.jpg" , 1 ); // load the image

cvtColor( src, gray, CV\_BGR2GRAY ); // convert to grayscale

vector > contours; // image contour is set of salient points of the image we are interested in

vector hierarchy;

//Detect edges using canny

Canny( gray, canny\_output, 50, 150, 3 ); // canny edges are low-level image structures that are used by contour detector

//Find contours

findContours( canny\_output, contours, hierarchy, CV\_RETR\_TREE, CV\_CHAIN\_APPROX\_SIMPLE, Point(0, 0) );

// Get the moments of image

vector mu(contours.size() );

for ( int i = 0; i

{ mu[i] = moments( contours[i], false ); }

//Get the mass centers (image has multiple contours):

vector mc( contours.size() );

for ( int i = 0; i

{ mc[i] = Point2f( mu[i].m10/mu[i].m00 , mu[i].m01/mu[i].m00 ); } // compute the centers of mass of each contour in the image

I dette eksemplet er centroid-øyeblikket av bildet nyttig for å finne plasseringen til flere objekter i bildet. Hvis bildet har flere personer i seg (antar at problemer med bakgrunnsrus er løst) og man var interessert i en omtrentlig plassering av hver person, er sentroid-øyeblikket en passende løsning.

Du kan forestille deg lignende scenarier der høyere rekkefølge av øyeblikk blir relevant, for eksempel i sporing av biler, kan orienteringen av bilene og posisjonen begge være lett representert av centroid, varians og orienteringsakse bildemomenter.

Svar

Spørsmålet du stilte om OpenCV kan også brukes på datasyn generelt. Kan vi oppdage personer i et rom med 95 – 100\% nøyaktighet?

Svaret avhenger av mange faktorer:

Scenario 1: Det er 15 personer inne i et rom, sittende i riktig posisjon mot kameraet. Alle er tydelig synlige, ingen blir tilstengt. Belysningen er lys og jevn. Kameraet er rimelig bra.

Visst, vi kan gjøre> 99\% nøyaktighet i et slikt tilfelle.Det være seg OpenCV eller noe annet dyp læringsbibliotek, du er i trygt farvann. Å bygge et slikt system skal ikke være vanskeligere / utfordrende enn et rutinemessig videregående skoleprosjekt.

Scenario 2: Det er 15 personer inne i et rom, sittende i riktig posisjon vendt mot kameraet. Noen av dem lukker hverandre. Det er ingen garanti for kvaliteten på belysningen. Noen av dem kan ha på seg ikke-standard briller, hatter eller rare sminke. Kameraet er fortsatt ganske bra.

Dette begynner å bli litt vanskelig. Det kan hende at OpenCV ikke gir deg> 99\% nøyaktighet i slike tilfeller. TensorFlow eller annen dyp læringsarkitektur kan fortsatt fungere. Facebook identifiserer og merker rutinemessig folk i slike scenarier. Er de 100\% nøyaktige? Det kommer an på. Å bygge et slikt system ved hjelp av alle åpen kildekode-biblioteker som vi har til rådighet er kanskje ikke trivielt. Det er imidlertid ikke veldig vanskelig heller. Med litt innsats og litt hell kan det være mulig å oppnå> 95\%.

Scenario 2: Det er 15 personer inne i et rom som sitter i riktig posisjon, ikke nødvendigvis vendt mot kameraet. Noen av dem lukker hverandre. Belysningen er skitten. Det har en tendens til å undereksponere eller overeksponere folket i bildet. Noen av dem kan ha på seg ikke-standard briller, hatter eller rare sminke. Kameraet er et VGA-webkamera fra 15 år siden.

Nå har du ingen garantier for nøyaktigheten, uavhengig av verktøyene du bruker. Dette problemet grenser nå til å bli et forskningsprosjekt.

Svaret på spørsmålet ditt avhenger av hvilket scenario du ønsker å ta opp.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *