勉強したことのメモ

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

  関連記事

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

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

PHPで配列を確認する際にvar_dumpよりも見やすくなるdBug.phpの利用方法

PHPで配列を確認する際、大抵var_dumpで出力させているがこれが見づらい。 ...

PHPでシンプルな英数字のCAPTCHAを「Gregwar / Captcha」ライブラリで実装する方法

PHPでシンプルなランダム英数字のCAPTCHAを実装したい。「Gregwar ...

imgタグのsrc属性のURLにPHPでタイムスタンプを付与しキャッシュ対策する方法

imgタグで画像を表示する際、画像を書き換えても同じものが表示されるというケース ...

PHPでOGPタグ(metaタグ)を簡単に取得できる「OpenGraph.php」の利用方法

PHPでOGPタグ(metaタグ)を取得する際、file_get_content ...