图片相似度 swift

Image similarity in swift

swift 视觉相似性特征能够为 2 个图像之间的差异分配一个数字。 其中图像之间的方差为 0,表示图像相同。 随着数量的增加,图像之间的差异越来越大。

我想做的是将其转化为相似度百分比。例如,一张图片与另一张图片有 80% 的相似度。 关于如何安排逻辑来完成此操作的任何想法:

import UIKit
import Vision
func featureprintObservationForImage(atURL url: URL) -> VNFeaturePrintObservation? {
let requestHandler = VNImageRequestHandler(url: url, options: [:])
let request = VNGenerateImageFeaturePrintRequest()
do {
  try requestHandler.perform([request])
  return request.results?.first as? VNFeaturePrintObservation
} catch {
  print("Vision error: \(error)")
  return nil
}
  }
 let apple1 = featureprintObservationForImage(atURL: Bundle.main.url(forResource:"apple1", withExtension: "jpg")!)
let apple2 = featureprintObservationForImage(atURL: Bundle.main.url(forResource:"apple2", withExtension: "jpg")!)
let pear = featureprintObservationForImage(atURL: Bundle.main.url(forResource:"pear", withExtension: "jpg")!)
var distance = Float(0)
try apple1!.computeDistance(&distance, to: apple2!)
var distance2 = Float(0)
try apple1!.computeDistance(&distance2, to: pear!)

这取决于你想如何扩展它。如果您只想要百分比,您可以使用 Float.greatestFiniteMagnitude 作为最大值。

1-(distance/Float.greatestFiniteMagnitude)*100

更好的解决方案可能是设置一个较低的上限,高于该上限的所有内容的相似度仅为 0%。

1-(min(distance, 10)/10)*100

这里的人为上限是10,但它可以是任意数字。