2
1

More than 1 year has passed since last update.

iOSで画像間の類似度を数値化する方法です


どちらが上の画像に似ている?

にている画像を探したい

VisionFeaturePrintが使える

VisionFeaturePrintは、たくさんの画像で学習した機械学習モデルによって画像の特徴を数値に抽象化したものです。
その数値を比べることで、画像が似た特徴を持っているかがわかります。

手順

画像からfeaturePrintを取得します。

do {
    let request = VNGenerateImageFeaturePrintRequest()
    let requestHandler = VNImageRequestHandler(ciImage: ciImage, options: [:])
    try requestHandler.perform([self!.request])
    guard let featurePrint = request.results?.first as? VNFeaturePrintObservation else { return }

} catch let error {
    print(error)
}

画像それぞれのfeaturePrintの間の差を計算します。

var distance = Float(0)
try featurePrint.computeDistance(&distance, to: baseFeaturePrint)
print(distance)

この画像を基準に、featurePrintの差を出してみます。数値が小さい方が、特徴が似ていると判断されています。


↑BaseImage


松ぼっくり
distance: 28.104025


リス
distance: 22.826147

全体の色調は松ぼっくりの画像の方が似ていますが、きちんとリスという特徴を把握していることがわかります。

🐣


フリーランスエンジニアです。
お仕事のご相談こちらまで
rockyshikoku@gmail.com

Core MLやARKitを使ったアプリを作っています。
機械学習/AR関連の情報を発信しています。

Twitter
Medium

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1