エセプログラマーの戯言

プログラムやリナックスなどについてのメモです

全体表示

[ リスト ]

Image::Seek

お久しぶりです。

最近忙しくて全然手を付けていませんでしたが、今日から、また再開したいと思います。


今日は、Perlのモジュール「Image::Seek」について書こうと思います。
参考:Perl で作る画像類似検索システムの考察

Image::Seekとは

ImgSeekという類似画像検索システムをperl-XSにポーティングしたもののようです。


Image::Seek
ImgSeek (http://www.imgseek.net/) is an implementation of Haar wavelet decomposition techniques to find similar pictures in a library. This module is port of the ImgSeek library to Perl's XS. It can deal with image objects produced by the Imager and Image::Imlib2 libraries.

インストール

上の文にもありますが、とりあえず、Imagerか、Image::Imlib2が必要です。

今回は、Image::Imlib2の方でやりたいと思います。(Imagerでやったら、インストールは出来たものの、なぜかうまく動かなかった。)

imlib2、imlib2_devをインストール
# yum install Imlib2 Imlib2_dev

続いて、Image::Imlib2
# cpan install Image::Imlib2

ここで、エラー発生。ExUtils::CBuilderをインストールしろと言われるので、インストール。

# cpan install ExUtils::CBuilder

んで、再度挑戦

# cpan install Image::Imlib2

成功。最後に、Image::Seekのインストール

# cpan install Image::Seek

無事インストール完了しました。

使ってみる


とりあえず、画像を何個か用意して、試してみました。

画像データベースの作成
use strict;
use Image::Imlib2;
use Image::Seek qw(loaddb add_image query_id savedb);

loaddb("image.db");
for (10..30){
  my $img = Image::Imlib2->load("${_}.jpg");
  add_image($img, $_);
}
savedb("image.db");

とりあえず、id=10に類似したものを検索してみる
use strict;
use Image::Imlib2;
use Image::Seek qw(loaddb add_image query_id savedb);

loaddb("image.db");

my @results = query_id(10, 5); //id=10の画像に類似したものを5件取得
foreach(@results){
   foreach (@$_){
      print $_ . "\t";
   }
   print "\n";
}

結果
10      -33.3800005018711
21      -21.8256015831392
11      -21.6441377225683
20      -19.7209152092057
22      -8.4882187503716
17      -7.35577595067657

二番目の要素が、小さい方がより類似している画像ということになります。
最初は、当然オリジナルがヒットしています。

この記事に

閉じる コメント(0)

コメント投稿

顔アイコン

顔アイコン・表示画像の選択

名前パスワードブログ
絵文字
×
  • オリジナル
  • SoftBank1
  • SoftBank2
  • SoftBank3
  • SoftBank4
  • docomo1
  • docomo2
  • au1
  • au2
  • au3
  • au4
投稿

.


みんなの更新記事