如何计算两个图像的相似度

时间:2019-02-18 22:38:03

标签: python distance similarity sift euclidean-distance

我正在尝试检查两个图像与SIFT的相似性。结果应为百分比。

我已经了解了如何使用OpenCV及其lib从图像中提取特征和描述符。如果我计算描述符之间的距离,我不会得到一个百分比。我尚未正确地计算出该值。

有人可以帮我把丢失的那块正确地放在我的头上吗?

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)

0 个答案:

没有答案