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に保存し、類似画像検索するような形がいいかも。
関連記事
-
-
HTML / CSSで作成したコンテンツをPDFファイルで出力する方法(TCPDF)
HTML / CSSで作成したコンテンツをPDFファイルで出力させたい。以前mp ...
-
-
フォルダにリンク制限をかける
imgというフォルダがあり、直接URLを叩いても 中身を見られないけど、同一サー ...
-
-
フォームからアップロードした画像にPHPでロゴ画像(透かし)を追加する方法
フォームから送られてきた画像に対してサイトロゴみたいなロゴ画像を右下等、指定の位 ...
-
-
PHPにて「hashids(Sqids)」ライブラリで数値からユニークなランダム英数字のIDに変換する方法
PHPにてユーザID等を推測されないよう数値のIDからユニークなランダム英数字の ...
-
-
PHPで簡単にカレンダーを生成できるライブラリ「PHP Calendar」の利用方法
PHPでカレンダーを描写したいということがたまにある。今までバニラPHPで書いて ...