Otama

あるPHP拡張のお話

PHPカンファレンス関西2013 / Hideo Hattori

自己紹介

  • Hideo Hattori
  • @hhatto, Github, Bitbucket
  • PHPがっつり使ったのはここ1年程度
  • CとかPythonとかZshとかが好き
  • アプリケーション開発とか運営とかしています

今日話すこと

  • CBIRって?
  • php-otamaの紹介

otamaとは

  • いわゆるひとつのCBIR(Content-based image retrieval)
  • 画像同士の類似度を出力できる
  • 画像をクエリに画像が検索できる
  • https://github.com/nagadomi/otama

otamapyとは

得意な亊

CとかPython CとかPython

CとかPython CとかPython

CとかPython CとかPython

CとかPython CとかPython

ある日言われました

 

 

「もう少しPHPにも興味持ってくださいよ」と。

 

 

興味ないわけじゃないよ!!

得意な亊(C/Python)

×

PHP

=

PHP拡張モジュールを書こう!!

php-otamaとは

  • otamaのPHPインターフェース
  • いわゆるPHP拡張モジュール

使い方(類似度を求める)

lena.jpg         lena-affine.jpg

使い方(類似度を求める)

設定ファイル(otama.conf)

{'driver': {'name': 'vlad_nodb'}}

使い方(類似度を求める)

Python

from otama import Otama

db = Otama()
db.open('./otama.conf')
filename1 = 'images/lena.jpg'
filename2 = 'images/lena-affine.jpg'
print(db.similarity({'file': filename1}, {'file': filename2}))

実行結果

0.362881481647

使い方(類似度を求める)

PHP

$db = new Otama();
$db->open("./otama.conf");

$filename1 = "images/lena.jpg";
$filename2 = "images/lena-affine.jpg";
var_dump($db->similarity($filename1, $filename2));

実行結果

double(0.36288148164749)

使い方(類似画像を検索)

設定ファイル(otama.conf)

{
    'namespace': 'testnamespace',
    'driver': {'name': 'color',
               'data_dir': './data',
               'color_weight': 0.2},
    'database': {'driver': 'sqlite3',
                 'name': './data/otama.sqlite3'}
}

使い方(類似画像を検索)

Python

import os
from glob import glob
from otama import Otama

db = Otama.open('test.conf')
db.create_table()
files = glob('images/*.jpg') + glob('images/*.png')
kvs = {}
for filename in files:
    kvs[db.insert(filename)] = filename

db.pull()

for result in db.search(5, 'lena.jpg'):
    print("file=%s, sim=%f" % (kvs[result['id']], result['similarity']))

使い方(類似画像を検索)

実行結果

file=image/lena.jpg, sim=1.000000
file=image/lena-768x768.jpg, sim=0.968963
file=image/lena-affine.jpg, sim=0.770081
file=image/lena-rotate.jpg, sim=0.747762
file=image/baboon.png, sim=0.303697

使い方(類似画像を検索)

PHP

まだ使えません!!

絶賛開発中

  • php-otama
  • Pull-Requestお待ちしてます!!

参考資料

ご清聴ありがとうございました!!

m(_ _)m