Próbowałem porównać dwa obrazy i użyć Hu moment, aby porównać kontur wyodrębniony z tych obrazów: https://docs.google.com/file/d/0ByS6Z5WRz-h2WHEzNnJucDlRR2s/edit i https://docs.google.com/file/d/0ByS6Z5WRz-h2VnZyVWRRWEFva0k/edit Drugie zdjęcie jest równe pierwszemu tylko obrócone i spodziewam się w rezultacie tych samych Humoments. Są trochę inne.Porównanie momentów Hu
Humoments znak po prawej stronie (pierwsze zdjęcie):
[[ 6.82589151e-01]
[ 2.06816713e-01]
[ 1.09088295e-01]
[ 5.30020870e-03]
[ -5.85888607e-05]
[ -6.85171823e-04]
[ -1.13181280e-04]]
Humoments znak po prawej stronie (drugi obrazek):
[[ 6.71793060e-01]
[ 1.97521128e-01]
[ 9.15619847e-02]
[ 9.60179567e-03]
[ -2.44655863e-04]
[ -2.68791106e-03]
[ -1.45592441e-04]]
W tym filmie: http://www.youtube.com/watch?v=O-hCEXi3ymU na 4 Minut oglądałem on uzyskał dokładnie to samo. Gdzie się mylę?
Oto mój kod:
nomeimg = "Sassatelli 1984 ruotato.jpg"
#nomeimg = "Sassatelli 1984 n. 165 mod1.jpg"
img = cv2.imread(nomeimg)
gray = cv2.imread(nomeimg,0)
ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV)
element = cv2.getStructuringElement(cv2.MORPH_CROSS,(4,4))
imgbnbin = thresh
imgbnbin = cv2.dilate(imgbnbin, element)
#find contour
contours,hierarchy=cv2.findContours(imgbnbin,cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
#Elimination small contours
Areacontours = list()
area = cv2.contourArea(contours[i])
if (area > 90):
Areacontours.append(contours[i])
contours = Areacontours
print('found objects')
print(len(contours))
#contorus[3] for sing in first image
#contours[0] for sign in second image
print("humoments")
mom = cv2.moments(contours[0])
Humoments = cv2.HuMoments(mom)
print(Humoments)
Ostatnie pytania: 1) Jakiego zakresu mogę użyć do stwierdzenia, że są to te same lub podobne obrazy dla każdego człowieka? 2) Muszę używać moich "surowych" HuMoments lub "log" Humoments dla Support Vector Machine lub K-nn? – postgres
@postgres - 1) Jest nieco subiektywny, gdy używa obrazów, w dużej mierze zależy od tego, jak podobne obrazy muszą być, aby uznać za mecz. Najlepiej eksperymentować i ustawić odpowiedni próg. 2) Nie wiem zbyt wiele o SVN lub KNN, ale prawdopodobnie możesz też użyć, spróbuj i zobacz;) – fraxel