Python 如何计算两幅图像的相似性

Python 如何计算两幅图像的相似性,python,distance,similarity,sift,euclidean-distance,Python,Distance,Similarity,Sift,Euclidean Distance,我试图用SIFT检查两幅图像的相似性。结果应该是一个百分比 我已经了解了如何使用OpenCV及其库从图像中提取特征和描述符。如果我计算描述符之间的距离,我不会得到一个百分比。我还没有正确地整理我的头脑如何计算这个 有人能帮我把我脑子里丢失的那块拼凑好吗 alg = cv2.xfeatures2d.SIFT_create() trainFiles = getPaths(dirTrain) images = [] for file in trainFiles: img = cv2.im

我试图用SIFT检查两幅图像的相似性。结果应该是一个百分比

我已经了解了如何使用OpenCV及其库从图像中提取特征和描述符。如果我计算描述符之间的距离,我不会得到一个百分比。我还没有正确地整理我的头脑如何计算这个

有人能帮我把我脑子里丢失的那块拼凑好吗

alg = cv2.xfeatures2d.SIFT_create()

trainFiles = getPaths(dirTrain)
images = []


for file in trainFiles:
    img = cv2.imread(file)
    images.append(img)

np_images = np.array(images)
descriptors = np.zeros((1,128)) #Matrix to hold the descriptors

for i,img in enumerate(np_images):
    kp, des     = alg.detectAndCompute(img,None)
    descriptors = np.concatenate((descriptors,des),axis=0)
    print('Processed image {} of {}'.format(i,len(np_images)))

descriptors = descriptors[1:,:]

a = descriptors[0]
b = descriptors[1]
# euclidean distance 
dist = np.linalg.norm(a-b)

我真的不知道SIFT和图像之间的距离,但要得到一个百分比,需要定义一个比率。哪些图像之间的距离最大(100%)?它们可能是全黑图像和黑白图像吗?一旦你有了这个距离,你就有了你比率的分母,你可以用一个百分比来测量你的距离。我真的不知道筛选和图像之间的距离,但是要得到一个百分比,你需要定义一个比率。哪些图像之间的距离最大(100%)?它们可能是全黑图像和黑白图像吗?一旦你有了这个距离,你就有了比率的分母,你可以用百分比来测量你的距离。