Bedste svar
Baggrund:
Moment er en kvantitativ måling (deskriptor), populært brugt i mekanik og statistik , til at beskrive den rumlige fordeling af sæt af punkter. I de fleste forenklede termer er øjeblikke sæt skalarer, der giver et samlet mål for et sæt vektorer. Definitionen af øjeblikke er den samme på tværs af områder inden for mekanik, statistik og computersyn. Sættet af øjeblikke begynder med den groveste beskrivelse af sættet af vektorer og gradvis med højere ordrer begynder at blive mere følsomme over for lokale strukturer i sættet af vektorer. Valget af nyttig rækkefølge afhænger af datadistributionen og de sæt vektorer, jeg er interesseret i at skelne mellem.
Hvis punkterne repræsenterer masse , så er nul-øjeblikket den samlede masse, det første øjeblik divideret med den samlede masse er massecenter , og det andet øjeblik er rotationsinerti . Hvis punkterne repræsenterer sandsynlighedsdensitet , er nul-øjeblikket den samlede sandsynlighed (dvs. en ), det første øjeblik er middel , det andet øjeblik er varians , det tredje øjeblik er skævhed , og det fjerde øjeblik (med normalisering og skift) er kurtosis . [Wikipedia: Moments (Mathematics)]
Moments in images:
Momentbegrebet i statistik og mekanik er lånt i computersyn for groft at beskrive et billede. For billede med pixelintensiteter I ( x , y ), de rå billedmomenter M\_ {ij} beregnes af
M\_ {ij} = \ sum\_ {x} \ sum\_ {y} I (x, y)
, hvor i, j er rækkefølgen af øjeblikke. I en typisk billedmomentberegningsrørledning konverteres billedet I (x, y) til et sæt vektorer ved først at beregne et gråskalabillede og derefter bruge en hjørne- eller kantdetektor til at reducere billedet til et sæt fremtrædende punkter. Den rumlige fordeling af disse punkter karakteriserer billedet, idet et billede med forskelligt visuelt indhold vil have en målelig forskellig rumlig fordeling af fremtrædende punkter. De forskellige rækkefølger af billedets øjeblikke (sæt markante punkter) giver masse, centroid, hovedakse osv. Af billedet.
Øjeblik i OpenCV:
Eksempel på beregningsmomenter for et billede 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
vector
//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
for
(
int
i = 0; i
{ mu[i] = moments( contours[i],
false
); }
//Get the mass centers (image has multiple contours):
vector
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 eksempel er billedets centroidmoment nyttigt til at finde placeringen af flere objekter i billedet. Hvis billedet har flere personer (antager, at baggrundsproblemer er løst), og man var interesseret i en omtrentlig placering af hver person, er centroid-øjeblikket en passende løsning.
Du kan forestille dig lignende scenarier, hvor højere rækkefølge af øjeblikke bliver relevante, for eksempel i sporing af biler, kunne bilernes retning og position begge være let repræsenteret af centroid, varians og orienteringsakse billedmomenter.
Svar
Det spørgsmål, du stillede om OpenCV, kan også anvendes til computersyn generelt. Kan vi opdage mennesker inde i et rum med 95 – 100\% nøjagtighed?
Svaret afhænger af mange faktorer:
Scenarie 1: Der er 15 personer inde i et rum, der sidder i deres rette position og vender ud mod kameraet. Alle er tydeligt synlige, ingen lukkes. Belysningen er lys og ensartet. Kameraet er rimeligt godt.
Sikker på, vi kan gøre> 99\% nøjagtighed i et sådant tilfælde.Det være sig OpenCV eller et andet dyb læringsbibliotek, du er i sikkert vand. At opbygge et sådant system bør ikke være vanskeligere / udfordrende end et rutinemæssigt high school-projekt.
Scenarie 2: Der er 15 personer inde i et rum, der sidder i deres rette position overfor kameraet. Nogle af dem lukker hinanden. Der er ingen garanti for belysningens kvalitet. Nogle af dem har muligvis iført ikke-standardbriller, hatte eller underlig make-up. Kameraet er stadig rimeligt godt.
Dette begynder at blive lidt vanskeligt. OpenCV giver muligvis ikke dig> 99\% nøjagtighed i sådanne tilfælde. TensorFlow eller en anden dyb læringsarkitektur fungerer muligvis stadig. Facebook identificerer og mærker rutinemæssigt folk i sådanne scenarier. Er de 100\% nøjagtige? Det kommer an på. Det er måske ikke trivielt at opbygge et sådant system ved hjælp af alle open source-biblioteker. Det er dog heller ikke særlig svært. Med en lille indsats og lidt held kan> 95\% være opnåelige.
Scenarie 2: Der er 15 personer inde i et rum, der sidder i deres rette position, ikke nødvendigvis mod kameraet. Nogle af dem lukker hinanden. Belysningen er lort. Det har tendens til at undereksponere eller overeksponere folket i billedet. Nogle af dem har muligvis iført ikke-standardbriller, hatte eller underlig make-up. Kameraet er et VGA-webkamera for 15 år siden.
Nu har du ingen garantier for nøjagtigheden uanset de værktøjer, du bruger. Dette problem grænser nu op til at blive et forskningsprojekt.
Svaret på dit spørgsmål afhænger af hvilket scenario du søger at tage fat på.