計算機視覺是研究圖像的學問,在圖像的最終評價時,往往需要用到一些圖像相似度的度量指標,因此,在本文中我們將詳細地介紹原生和調用第三方庫的計算圖像余弦相似度的方法。
使用原生numpy實現
import numpy as npdef image_cosine_similarity(img1, img2):"""使用純NumPy計算兩張圖像的余弦相似度"""# 展平圖像并轉換為浮點數vec1 = img1.flatten()vec2 = img2.flatten()# 計算點積dot_product = np.dot(vec1, vec2)# 計算L2范數norm1 = np.linalg.norm(vec1)norm2 = np.linalg.norm(vec2)# 計算余弦相似度return dot_product / (norm1 * norm2)
使用sklearn實現
import numpy as np
from sklearn.metrics.pairwise import cosine_similaritydef image_cosine_similarity_sklearn(img1, img2):"""使用 sklearn 計算兩張圖像的余弦相似度參數:img1, img2: 兩張圖像(2D 灰度或 3D 彩色 numpy 數組)返回:余弦相似度(范圍 [-1, 1],但圖像通常為 [0, 1])"""# 展平圖像并轉換為 floatvec1 = img1.flatten().reshape(1, -1).astype(float)vec2 = img2.flatten().reshape(1, -1).astype(float)# 計算余弦相似度similarity = cosine_similarity(vec1, vec2)return similarity[0][0] # 返回標量值