大纲:目标跟踪基础:两张图片相似度算法-腾讯云开发者社区-腾讯云 (tencent.com)
一、传统方法
1.欧式距离(用于判断是否完全相同)
[三维重建] [机器学习] 图片相似度_评价两张图片相似度或差异度的指标是-优快云博客
import numpy as np
def euclidean_distance(image1, image2):
# 将图片展平为一维向量
vector1 = image1.flatten()
vector2 = image2.flatten()
# 计算欧式距离
distance = np.linalg.norm(vector1 - vector2)
return distance
# 示例用法
image1 = np.array([[1, 2, 3], [4, 5, 6]])
image2 = np.array([[4, 5, 6], [7, 8, 9]])
distance = euclidean_distance(image1, image2)
print(distance)
缺点:只考虑了像素差异,没有考虑位置和形状。
2.余弦相似度
from PIL import Image
from numpy import average, linalg, dot
def get_thumbnail(image, size=(1200, 750), greyscale=False):
image = image.resize(size, Image.ANTIALIAS)
if greyscale:
image = image.convert('L')
return image
def image_similarity_vectors_via_numpy(image1, image2):
image1 = get_thumbnail(image1)
image2 = get_thumbnail(image2)
images = [image1, image2]
vectors = []
norms = []
for image in images:
vector = []
for pixel_tuple in image.getdata():