Entry

動画からのテキスト抽出技法についてメモ

2011年04月16日

近年,インターネット上で動画が大量に流通するようになったことを受けて,検索/管理のためにこれらの動画を分類する需要が高まっています。

また,低廉な撮影装置(WebCAM とか)もかなり普及したことから,製造/流通の各業界では,製品画像やパッケージの印刷そのものを製品管理・在庫管理に応用できないか,模索しているところもある。これらの業務は,現在 QR コード(2次元バーコード)や RFID を使った管理手法があるけれども,特別な機器(といってもそんなに高価なものではないが)が必要であったり,規格が柔軟性に制限をかけている側面もあったりします。つことで,これらの認識を,画像認識の問題系として解決できないか,といった話が熱を帯びています。

この点,動画とは少し場面の異なる,手書き帳票の OCR 製品については,各主要ベンダからいくつか提案があったりします。去年,その関係の展覧会を見に行ったのだけれども,どこもかなりやる気だった。手書き文字認識それ自体の認識精度はどこも高い。しかし,そもそも「帳票のどこに文字があるのか」について自動認識するのは難しいらしく,これらの製品のほとんどが,文字の書かれている場所をあらかじめシステムに登録しておく必要がありました(帳票のレイアウトを登録する機能として実装されている)。帳票種別は,より認識精度の高いバーコードで登録しておく感じ。結局主要な認識はバーコードになるわけで,本末転倒な感じもしなくもないんですが。

で,動画。

動画を分類する場合,ウェブページ上の動画であれば,動画そのものではなく,周辺の情報(HTML に書かれている文字列など)で分類することもできます。しかし,ここで検討されているのは,動画それ自体に映っている画像から文字列を抽出することです。動画そのものから抜き出すので,同じ動画に異なる文字列がつく可能性を低減できるのがウリになります。

背景としてはそんな感じ。

動画から文字領域を抜き出す場合にネックになる主な特徴は,以下のようなもの。

  • 登録済みの帳票と異なり,どこに文字列が現れるか分からない。
  • 紙帳票と異なり背景が複雑に変化する。
  • WebCAM などのデバイスは,安いが低解像度/低コントラストなものが多く,スキャナによる出力のような高品質の入力は期待できない。
  • 上記と関連して,ノイズ成分が大きく無視できない。
  • 文字列が水平または垂直に並んでいる状態で撮影することは難しい(あるいは手間がかかる)。

ここでは,あたしが調べた範囲で,現在提案されている手法の概略とその特徴だけ紹介しておきます。大きく分けると,3種類程度に分類できる。

  • 従来の画像処理技術を使用した方法
    • 画像を二値化しあるいはカラーのまま,連結成分からテキスト領域の特徴を解析する手法(connected component analysis)
    • 二値化に関する手法はかなり研究されている分野なので,ある程度の実績が期待できる。
    • ラベリングアルゴリズムは普通にやって O(n2) ~ O(n3)。とある高速なアルゴリズムを使って O(n log(n)) (だった気がする)。
    • 単純にピクセル単位で連結成分を作るので,背景に文字がまぎれている箇所がある場合などにうまく対応できない(例外的な処理を多く作らないといけない)と思う。
    • 基本的にピクセル単位で局所的に解析する手法なので(local analysis),各種パラメタを設定するのに職人的な経験と調整が必要になる。
  • 機械学習を使った方法
    • N x M の窓をテクスチャの単位にして,N x M 次元の入力ベクトルをテキスト領域と背景領域に分離する。
    • 機械学習の方法には,SVM(Support Vector Machine)や NN(Neural Network) あたりを使用した教師あり学習を使うのが一般的。
    • 学習がなかなか収束しないのは機械学習一般の悩みなんだけれども,今回のお題では特に訓練データを作るのが大変(学習ツールを作るのが大変)。
    • 大域的な情報も特徴ベクトルに組み込めば,周辺テクスチャの様子も踏まえた解析が可能。
    • FFT,DCT,Wavelet,Gabor フィルタなんかで特徴を分解し,必要な情報だけでペクトルを構成することもできる。
  • フィルタをかけて特徴を抽出する方法
    • エッジ検出を基本とした Sobel (1次微分) や Laplacian (2次微分) を使う。
    • LoG(Laplacian of Gaussian)とか有名。Gaussian はノイズ成分を低減する方向に作用する。
    • これも周波数領域(FFT の場合)等で操作を行うことで,特徴をうまく調節できることがある。
    • 機械学習ほどではないが,パラメタが比較的少なく,実験もしやすい。
    • フィルタをかけた後,別のアルゴリズムで領域を検出する必要はある(うまくテキストと背景を分離できてれば難しくない)。

せっかく調べたので,折を見てちょくちょく手を出してみようと思います。

Trackback
Trackback URL:
Ads
About
Search This Site
Ads
Categories
Recent Entries
Log Archive
Syndicate This Site
Info.
クリエイティブ・コモンズ・ライセンス
Movable Type 3.36
Valid XHTML 1.1!
Valid CSS!
ブログタイムズ

© 2003-2012 AIAN