Momentumok
Előismeret
Számszerű leírást adnak az alakzatokról, az alakzatokat alkotó objektumpontok koordinátából kerülnek számításra.
p+q-ad rendű momentum:
Vagyis az objektumpontok x koordinátáit p-edik, az y koordinátáit q-adik hatványra emeljük és összeszorozva összegezzük. Az fi érték az intenzitásérték az adott pozíción. Abban az esetben használjuk, amennyiben az intenzitásérték nagysága azt jellemzi, mennyire erősen kapcsolódik az objektumhoz a képpont. Ha nincs ilyen jelentés társítva, akkor érdemes a bináris verziót használni, vagyis fi legyen 1 az objektumpontokban.
Nézzük meg néhány momentum jelentését!
m00 = az alakzat mérete
m10 = az alakzat x-koordinátáinak összege
m01 = az alakzat y-koordinátáinak összege
m01/m00 = az alakzat súlypontjának x koordinátája
m10/m00 =az alakzat súlypontjának y koordinátája
Az alakzatra kiszámolt momentum értékek jól láthatóan függnek attól, hogy az alakzat a kép mely részén található. Pozíciótól független (vagyis eltolás invariáns) leírást a centrális momentumokkal érhetünk el. Ekkor az x és y koordináta értékekből kivonjuk a súlypont (alakzat x és y koordináták átlaga) megfelelő koordinátáját.
Normalizált centrális momentumok számítása (amennyiben p+q ≥ 2):
Ezen momentumokkal eltolás és skála invarianciát érhetünk el.
A Hu momentumok számítása az alábbi:
hu = cv2.HuMoments(m[, hu])
A bemeneti m a moments() függvény eredménye.
Példaprogram
import numpy as np
import cv2
img = cv2.imread("dolphin.png",cv2.IMREAD_GRAYSCALE);
ret,img_inv = cv2.threshold(img,0,255,cv2.THRESH_BINARY_INV);
img, contours,hierarchy = cv2.findContours(img_inv, 1, 2);
cnt = contours[0];
M = cv2.moments(cnt);
print( M )