-
Notifications
You must be signed in to change notification settings - Fork 0
/
confrontaSiftBinario.py
39 lines (27 loc) · 998 Bytes
/
confrontaSiftBinario.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import numpy as np
import cv2
class confrontaSIFT:
def siftControl(self,a,b,sog):
# find the keypoints and descriptors with SIFT
des1 = a
des2 = b
#IDEA DI FONDO: CONTO I MATCH CON UNA DISTANZA ENTRO UNA SOGLIA
# MI BASO SUL SIFT GIA FATTO DI OPENCV
soglia=sog
# BFMatcher with default params
bf = cv2.BFMatcher()
matches = bf.match(des1,des2)
matchesRif = bf.match(des1,des1)
cont=0
contRif=0
#uso il numero di corrispondenze non la loro distanza, se ritenete cambiate, (altrimenti al variare della dimensione dell immagine
#l indicatore dovrebbe essere sfasato [si diverta il gruppo di machine learning a scoprire se questa ipotesi e vera])
#il numero e normalizzato rispetto al numero calcolato nel caso di somiglianza perfetta (stessa immagine)
for m in matches:
if m.distance < soglia:
cont = cont+1
for m in matchesRif:
if m.distance < soglia:
contRif = contRif+1
ris = float(cont)/float(contRif)
return ris