バーコードを読み取って本のリストを作るiPhoneアプリはあるらしいのだが,本というものは背表紙が見える状態で整理されていることが多いのだし,本棚の写真を撮るだけでリスト作れたら便利だなーと思いまして.で,画像処理全くわからないんだけど我流でOpenCVを使いながら試み中.一応そのものズバリなタイトルな英語論文(Building book inventories using smartphones)はあって,それを参考にキーワードを探りながら画像処理の知識を蓄えている.
本のタイトルのあたりは角が多いのでコーナー検出をすればそこにコーナーが集中する,ということと,直線の検出をすると平行な線がたくさん出る,ということを使えばいいんじゃないかと思っている(後者は論文でも使っている).
今の処理の流れは
- 元画像に対してコーナー検出を行なって角の座標を得る(コーナー検出アルゴリズムはEigenValueがよさそうという結果を得ている)
- 元画像に対してCannyエッジ検出を行った画像を得る
- エッジ検出を行った画像に対して,角の座標付近を黒で塗りつぶす処理を行う(文字が消えるのを期待する)
- HoughLinesで直線検出を行う(これで背表紙ごとに分割できるはず…うまくいけば)
比較的うまくいっている例が以下となる:
トランジスタ技術みたいな太い本はうまくいくのだが,細い本や暗い本,角が丸みを帯びた本はダメ.スマートフォンだとどうしても解像度が低いし,ズームができない(つまり斜め方向から撮影する本が多くなって角が判別しにくくなる)のでより条件が悪くなる.遠くから解像度の高いカメラで撮影しないと使い物にならなさそう.
背表紙ごとの分割をクリアした所で,OCRと名寄せの困難が待ち受けてるので,ハードルはかなり高そう.