Nejlepší odpověď
Pozadí:
Moment je kvantitativní měřítko (deskriptor), populárně používané v mechanice a statistice , popsat prostorové rozložení množiny bodů. Zjednodušeně řečeno, momenty jsou množinou skalárů, které poskytují agregovanou míru množiny vektorů. Definice momentů je stejná napříč doménami mechaniky, statistiky a počítačového vidění. Sada momentů začíná nejhrubším popisem sady vektorů a postupně s vyššími řády začíná být citlivější na místní struktury v sadě vektorů. Volba užitečného pořadí momentu závisí na distribuci dat a souborech vektorů, které mě zajímají rozlišovat.
Pokud body představují hmotnost , pak nultý moment je celková hmotnost, první okamžik dělený celkovou hmotností je těžiště a druhým momentem je rotační setrvačnost . Pokud body představují hustotu pravděpodobnosti , je nulovým okamžikem celková pravděpodobnost (tj. jedna ) ), první okamžik je průměr , druhý okamžik je varianta , třetí momentem je šikmost a čtvrtým momentem (s normalizací a posunem) je kurtosis . [Wikipedia: Moments (Mathematics)]
Momenty v obrazech:
Koncept okamžiku ve statistice a mechanice byl vypůjčen v počítačovém vidění, aby hrubě popsal obraz. Pro obrázek s intenzitou pixelů I ( x , y ), prvotní momenty obrazu M\_ {ij} se vypočítají pomocí
M\_ {ij} = \ sum\_ {x} \ sum\_ {y} I (x, y)
, kde i, j jsou pořadí okamžiků. V typickém potrubí pro výpočet momentu obrazu je obraz I (x, y) převeden na sadu vektorů nejprve výpočtem obrazu v šedém měřítku a poté pomocí detektoru rohů nebo hran pro zmenšení obrazu na sadu výběžků. Prostorové rozložení těchto bodů charakterizuje obraz v tom, že obraz s různým vizuálním obsahem bude mít měřitelně odlišné prostorové rozložení hlavních bodů. Různé pořadí momentů obrazu (sada hlavních bodů) poskytuje hmotu, těžiště, hlavní osu atd. Obrazu.
Okamžiky v OpenCV:
Příklad výpočetních momentů pro obrázek v 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
V tomto příkladu je těžiště obrázku užitečné k vyhledání umístění více objektů v obrázku. Pokud má obrázek více lidí (předpokládejme, že jsou vyřešeny problémy s nepořádkem na pozadí) a jednoho zajímalo přibližné umístění každé osoby, pak je těžiště vhodným řešením.
Můžete si představit podobné scénáře, kdy vyšší pořadí momentů se stane relevantním, například při sledování automobilů, orientaci automobilů a pozici lze snadno vyjádřit těžištěm, rozptylem a momenty obrazové osy orientace.
Odpovědět
Otázku, kterou jste položili ohledně OpenCV, lze obecně aplikovat také na počítačové vidění. Můžeme detekovat lidi v místnosti s přesností 95 – 100\%?
Odpověď závisí na mnoha faktorech:
Scénář 1: V místnosti je 15 lidí, kteří sedí na odpovídající pozici obrácené k fotoaparátu. Všechny jsou jasně viditelné, nikdo není uzavřen. Osvětlení je jasné a jednotné. Fotoaparát je přiměřeně dobrý.
Jistě, v takovém případě můžeme dosáhnout> 99\% přesnosti.Ať už je to OpenCV nebo nějaká jiná knihovna pro hluboké učení, jste v bezpečné vodě. Vybudování takového systému by nemělo být o nic složitější než běžný projekt na střední škole.
Scénář 2: V místnosti je 15 lidí, kteří sedí na vhodné pozici čelem k fotoaparátu. Některé se navzájem uzavírají. Neexistuje žádná záruka kvality osvětlení. Někteří z nich mohou nosit nestandardní brýle, klobouky nebo divný make-up. Fotoaparát je stále poměrně dobrý.
Začíná to být trochu složitější. OpenCV vám v takových případech nemusí poskytnout> 99\% přesnost. TensorFlow nebo nějaká jiná architektura hlubokého učení může stále fungovat. Facebook v takových scénářích pravidelně identifikuje a označí lidi. Jsou 100\% přesné? Záleží. Budování takového systému pomocí všech knihoven open source, které máme k dispozici, nemusí být banální. Není to však ani příliš obtížné. S trochou úsilí a trochou štěstí lze dosáhnout> 95\%.
Scénář 2: V místnosti je 15 lidí, kteří sedí v příslušné poloze a nemusí nutně směřovat ke kameře. Některé z nich se navzájem uzavírají. Osvětlení je hovno. Má tendenci podexponovat nebo přeexponovat lidi v obraze. Někteří z nich mohou nosit nestandardní brýle, klobouky nebo divný make-up. Fotoaparát je VGA webová kamera z doby před 15 lety.
Nyní nemáte žádné záruky přesnosti bez ohledu na to, jaké nástroje používáte. Tento problém nyní hraničí s tím, že se stane výzkumným projektem.
Odpověď na vaši otázku závisí na tom, jaký scénář chcete řešit.