otamapy has been released
2013-02-12 - ⧖ 1.0 minotama のPythonインターフェース otamapy (おたまぱい)をリリースしました。
otamaとは?
otamaはC言語で実装されたCBIR(Content-based image retrieval) Engine、 いわゆる類似画像検索エンジン用のライブラリです。 対象画像の特徴をデータベースに保存し、画像をクエリに画像を検索できます。
otamaはCV用ライブラリ nv と 画像処理ライブラリ eiio に依存しているので、 インストールは nv, eiioをインストールした後に行うとスムーズに進むはず。
otamapyとは?
otamapyはotamaをPythonでラップしたものです。 otamaにはすでにRubyのインターフェースが存在しましたのでそれをベースに作成しました。
otamapyのインストールと使い方
インストール
$ pip install otamapy
データベースにストアした後、検索。
# store_and_search.py
import os
from otama import Otama
DATA_DIR = 'data'
config = {'namespace' : 'testnamespace' ,
'driver' : {'name' : 'sim' , 'data_dir' : DATA_DIR , 'color_weight' : 0.2 },
'database' : {'driver' : 'sqlite3' , 'name' : './data/store.sqlite3' }
}
if not os .path .exists (DATA_DIR ):
os .mkdir (DATA_DIR )
# テーブルが存在しなければ作成する
db = Otama .open (config )
db .create_table ()
# データベースに格納
kvs = {}
files = ('foo.jpg' , 'bar.jpg' )
for filename in files :
kvs [db .insert (filename )] = filename
# データベースに反映
db .pull ()
# 検索
for result in db .search (10 , 'foo.jpg' ):
print ("file=%s, sim=%0.3f" % (kvs [result ['id' ]], result ['similarity' ]))
# おわり
db .close ()
実行結果
$ python store_and_search.py
file=foo.jpg, sim=1.000
file=bar.jpg, sim=0.969
類似度は0~1の数値で表されます。 foo.jpg をクエリにして検索すると、 foo.jpg が1.0で一番近い(同じ)画像と判断されています。
今後
otamapyは現在、一部のAPIが未実装ですので、 2月中くらいにはRubyインターフェースと同じAPIを提供できるようにしたいです。 あとはPython3.x系に対応しようとしましたが途中で諦めてしまったので、 それも追々対応したいです。
それにしてもCBIRの分野はおもしろいですね。 CVあたりとかもうちょっと突っ込んで勉強したい。