Mik is pontosan az OpenCV mozzanatai?

Legjobb válasz

Háttér:

A pillanat egy kvantitatív mérték (leíró), amelyet a mechanika és a statisztika népszerű módon használ. , a halmaz térbeli eloszlásának leírására. A legtöbb leegyszerűsítve a momentumok skalárok halmaza, amelyek a vektorok halmazának összesített mértékét adják. A pillanatok meghatározása a mechanika, a statisztika és a számítógépes látás területén azonos. A pillanatsor a vektorhalmaz legdurvább leírásával kezdődik, és fokozatosan magasabb rendekkel kezd érzékenyebbé válni a vektorhalmaz helyi struktúráira. A pillanat hasznos sorrendjének megválasztása az adateloszlástól és az általam megkülönböztetni kívánt vektorok halmazától függ.

Ha a pontok tömeget jelentenek , akkor a nulladik pillanat a teljes tömeg, az első pillanat elosztva a teljes tömeggel a tömegközéppont , a második pillanat pedig a rotációs tehetetlenség . Ha a pontok valószínűségi sűrűséget képviselik, akkor a nullpont a teljes valószínűség (azaz egy ), az első pillanat a átlag , a második pillanat a szórás , a harmadik pillanat a ferdeség , a negyedik pillanat pedig (normalizálással és eltolással) a kurtosis . [Wikipédia: Pillanatok (matematika)] ​​

Pillanatok képekben:

A pillanat fogalmát a statisztikában és a mechanikában a számítógépes látásmódban kölcsönözték egy kép durva leírására. Pixel intenzitású képhez I ( x , y ), a nyers képmomentumokat M\_ {ij} kiszámítja:

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

, ahol i, j a pillanatok sorrendje. Egy tipikus képmoment-számítási folyamatban az I (x, y) képet vektorok halmazává konvertáljuk úgy, hogy először kiszürkítünk egy szürkeárnyalatos képet, majd sarok- vagy éldetektorral csökkentjük a képet kiemelkedő pontok halmazává. Ezeknek a pontoknak a térbeli eloszlása ​​jellemzi a képet, mivel a különböző vizuális tartalmú képeknek mérhetően eltérő térbeli eloszlása ​​lesz a kiemelt pontoknak. A kép különböző pillanatainak sorrendje (kiemelkedő pontok összessége) adja meg a kép tömegét, centroidját, fő tengelyét stb.

Pillanatok az OpenCV-ben:

Példa a egy kép az opencv-ben.

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

Ebben a példában a kép centroid pillanata hasznos a képen található több objektum helyének megkeresésére. Ha a képen több ember van (tegyük fel, hogy a háttér rendetlenségével megoldódnak a problémák), és az egyiket az egyes személyek hozzávetőleges helye érdekli, akkor a centroid pillanat megfelelő megoldás.

Elképzelhet hasonló forgatókönyveket, ahol a pillanatok magasabb rendje relevánssá válik, például az autók nyomon követésében az autók orientációját és helyzetét egyaránt jól ábrázolhatja a centroid, a variancia és az orientációs tengely képmomentumai. p> Az OpenCV-vel kapcsolatban feltett kérdés általában a számítógépes látásra is alkalmazható. Felfedezhetünk embereket egy szoba belsejében 95 – 100\% pontossággal?

A válasz sok tényezőtől függ:

Forgatókönyv 1: 15 ember van egy szobában, a megfelelő helyzetben ülve a kamerával szemben. Mindegyik jól látható, senkit sem zárnak el. A világítás világos és egyenletes. A kamera meglehetősen jó.

Persze, ilyenkor> 99\% -os pontosságot tudunk elérni.Legyen szó OpenCV-ről vagy más mély tanulási könyvtárról, biztonságos vizekben vagy. Egy ilyen rendszer kiépítése nem lehet nehezebb / kihívást jelent, mint egy rutinszerű középiskolai projekt.

2. forgatókönyv: 15 ember van egy szobában, a megfelelő helyzetben ülve a kamerával szemben. Néhányan elzárják egymást. A világítás minőségére nincs garancia. Néhányuk nem szabványos szemüveget, kalapot vagy furcsa sminket visel. A kamera továbbra is meglehetősen jó.

Ez kezd kissé trükkös lenni. Ilyen esetekben az OpenCV nem biztos, hogy 99\% -nál pontosabb. A TensorFlow vagy más mély tanulási architektúra továbbra is működhet. A Facebook rutinszerűen azonosítja és címkézi az embereket ilyen esetekben. 100\% -ban pontosak? Attól függ. Egy ilyen rendszer kiépítése a rendelkezésünkre álló összes nyílt forráskódú könyvtár segítségével nem biztos, hogy triviális. Azonban ez sem túl nehéz. Kis erőfeszítéssel és némi szerencsével> 95\% lehet elérhető.

2. forgatókönyv: Egy helyiségben 15 ember van, a megfelelő helyzetben ülve, nem feltétlenül a kamerával szemben. Néhányan elzárják egymást. A világítás szar. Hajlamos a képen látható emberek alul vagy túlságosan kitenni. Néhányuk nem szabványos szemüveget, kalapot vagy furcsa sminket visel. A kamera egy 15 évvel ezelőtti VGA webkamera.

Mostantól nincs garancia a pontosságra, függetlenül a használt eszközöktől. Ez a probléma most kutatási projektté válik.

A kérdésre adott válasz attól függ, hogy melyik forgatókönyvet kívánja megválaszolni.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük