otamapy has been released
Posted on Tue, 12 Feb 2013 00:00:07 +0900
otama の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あたりとかもうちょっと突っ込んで勉強したい。