勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ

PHPで画像を比較して類似度を算出する「image-comparator」ライブラリの利用方法

PHPで画像の類似度を計測したい。ただ、そのためのロジックが全く分からないためライブラリ等で対応したかった。調べたところ「image-comparator」ライブラリで実装できた。以下に利用方法をメモ。

 

image-comparator

GitHub

https://github.com/sapientpro/image-comparator

要件

  • PHP8.1以上
  • PHP-GDが必要

 

インストール

サーバにSSH接続し以下コマンドでインストールする。

composer require sapientpro/image-comparator

 

ソースコード

<?php
require 'vendor/autoload.php';
use SapientPro\ImageComparator\ImageComparator;
$imageComparator = new ImageComparator();

$image_1 = './img/001.jpg';
$image_2 = './img/002.jpg';
$similarity = $imageComparator->compare($image_1, $image_2); //類似度が算出される

 

サンプル

https://taitan916.info/sample/image-comparator/

同じ画像は当然類似度100になったんだけど、それ以降は何とも言えないところ。

 

所感

サンプルページは結果をキャッシュして使っているためすぐにページが表示されるが、キャッシュしていない場合処理時間がかかった。また、サーバに負荷もかかってそう。

そのため類似画像検索みたいなシステムを作ろうとすると結構なサーバスペックが必要かもしれない。そういったシステムの場合画像をハッシュ化してMySQLに保存し、類似画像検索するような形がいいかも。

 - PHP

  関連記事

FileReader APIを用いて画像をアップロードせずにサムネイル表示
FileReader APIを用いて画像をアップロードせずにサムネイル表示

以前にFile APIを用いてファイル名やサイズ、形式(拡張子)を取得するメモを ...

JavaScriptでフォームのバリデート時に便利な「validator.js」ライブラリの利用方法
JavaScriptでフォームのバリデート時に便利な「validator.js」ライブラリの利用方法

JavaScriptでフォームのバリデートを行う際、「半角英数字 正規表現」等で ...

PHPでスマホ(iPhone / Android)に画像をダウンロードさせる方法とダウンロード後の保存場所について
PHPでスマホ(iPhone / Android)に画像をダウンロードさせる方法とダウンロード後の保存場所について

PHPで作ったシステムにスマホ(iPhone / Android)でアクセスし何 ...

Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法
Composer無し&ファイル1枚でPHPのエラーメッセージ画面をリッチにするライブラリ「PHP Error」の利用方法

先日PHPのエラーメッセージを見やすくするwhoopsの利用方法をメモしたが導入 ...

JavaScriptでCookieを取り扱う「js-cookie」ライブラリの利用方法
JavaScriptでCookieを取り扱う「js-cookie」ライブラリの利用方法

「jquery-cookie」プラグイン開発終了に伴い「js-cookie」ライ ...