結城あすかの毎日電波思考 (あすか日記)

アクセスカウンタ

zoom RSS 画像認証と遊ぼう! 第7回「辞書で殴れ編」

<<   作成日時 : 2013/05/15 23:13   >>

ブログ気持玉 0 / トラックバック 0 / コメント 0

 前回は、文字のフォントデザインによっては活字OCRソフトとの相性でうまく認識できないものがあるというところで終わったにょ。

 そこで、今回は文字認識そのものを既製のOCRソフトを使わずに自分でやってみるというところにょ。とはいえ、市販のOCRソフトのように手間隙かけて高度な認識アルゴリズムを組み込んだりなんてことは出来ないので、ここではパターンマッチングを用いた簡易OCR機能を使うにょ。

 この方法で認識できるのは、文字のデザインが一定であり、十分に特徴的なものであり、英数字等の簡単な文字しか使われていないものだけにょ。前回、前々回と扱ってきた老舗ブログサイトの画像認証は基本的に数字のみで、文字デザインも1種類だけなので、十分にこの条件に見合ってるにょ。


 文字認識機能そのものは、これまで使ってきた画像処理の技術検証用ツールに組み込まれているので、ここではその機能で用いる文字認識のためのOCR辞書の作成を行なっていくにょ。

 件のサイトの画像認証では「0」〜「9」の数字がすべて用いられているので、この10個の数字の文字パターンを登録した辞書を作る必要があるにょ。
 登録の順番はどうでもいいのだけど、とりあえず「0」から始めるにょ。

 まず、「0」を含んだ画像認証の画像を用意するにょ。

画像

 これを前回、前々回で行ったのと同様の処理を行うと、こうなるにょ。

画像


 ここから「0」の画像だけを取り出すにょ。
 例によってPhotoshopとかペイント等を用いて手作業でやっても良いのだけど、それでは芸がないので、この画像処理ツールだけでやっていくにょ。
 最初に処理選択で「領域検出(カラーラベリング)」を選ぶにょ。

画像

 パラメータは検出対象の色が白か黒か選ぶだけにょ。

画像

 実行すれば、個々のパターンごとに色分けされるにょ。

画像

 この色分けは左側のパターンから順番に行われるにょ。


 次に処理選択で「画像選択(カラーラベル)」を選ぶにょ。

画像

 これは先に「領域検出(カラーラベリング)」を行った画像から、任意の画像を選択して取り出す処理にょ。

 パラメータを設定するにょ。

画像

 設定するのは、左から何番目のパターンを選択するのかと、選択したパターンを白か黒かどちらで塗り潰すかにょ。「白」を選択した場合は黒地に白の画像になるにょ。

 実行すればこうなるにょ。

画像

 選択した「0」のパターン以外が消え去った感じにょ。


 このままじゃバランスが悪くて落ち着かないので、「画像パターンの整頓処理」を行なっておくにょ。

画像


 次にこの「0」の傾きを直すにょ。
 処理選択で「画像の回転」を選ぶにょ。

画像

 パラメータを設定するにょ。

画像

 「回転角度」は自分で適当に感覚で見繕って設定するにょ。左方向が正、右方向が負にょ。
 「回転中心座標」は画像の左上を原点にした回転の中心座標。デフォルトでは画像全体の中心に設定されてるにょ。先に「画像パターンの整頓処理」を行った時に文字パターンはセンタリング処理が行われているので、基本的にはこのままでいいにょ。
 「補間画素を二値化する」は回転処理後にバイキュービック法による画素補間を行なっているので、中間色を廃して二値画像にしたい場合にチェックするにょ。当然ながら、元画像が二値画像以外だと意味が無いにょ。
 「背景色」は回転によって元画像に存在しない座標の画素が現れた場合、白と黒のどちらに塗り潰すかという設定。例えば横長の画像を90度回転させた場合、左右に来るのは存在しないはずの元画像の天辺より上だったり底辺より下だったりするので、それを何色にするかということにょ。

 実行すればこうにょ。

画像

 これで文字が直立したにょ。角度が間違ってた場合は「取消」を押せばやり直せるにょ。


 辞書に登録するパターンはサイズを統一しておく必要があるので、ここでは48×48のサイズにしておくにょ。
 ここでは画像全体の中央部の48×48の領域を「画像の切り出し」を用いて取り出してみるにょ。

画像


 これで辞書に登録する「0」のパターン画像が完成したので、辞書そのものを作成するにょ。他の数字は後から追加登録するにょ。

 処理選択から「OCR辞書の新規作成」を選択するにょ。

画像

 パラメータを設定するにょ。

画像

 「処理画像ファイル名」のところには、作成する辞書ファイルのファイル名を入力するにょ。拡張子は何でもいいけど、ここではオーソドックスに「dic」を使ってるにょ。
 「登録文字」は表示されてる画像パターンが意味する文字のことにょ。ここでは数字の「0」なので「0」と入力するにょ。
 「辞書の種類」は辞書が扱う文字種を区別するための数字にょ。ソースのライブラリを使って開発する場合は色々と使い道があるだろうけど、この画像処理ツール上では数字が「1」、英大文字が「2」、英小文字が「4」、記号が「8」ということにしてあるにょ。
 「辞書の名前」は複数の辞書を使い分けたりする場合の識別子にょ。別にファイル名と同じ必要はないにょ。
 「横幅」「高さ」は辞書に登録する画像のサイズにょ。表示されてる画像と合致しない場合は自動的に拡大縮小して登録されるにょ。

 実行すればまず警告のダイアログが出るので、OKを押すにょ。

画像

 結果は右下の処理結果のコーナーの「処理の成否」に出るにょ。「OK」なら無事に作成されたにょ。

画像


 長くなったので、続きは次回にょ。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(0件)

タイトル (本文) ブログ名/日時

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(0件)

内 容 ニックネーム/日時

コメントする help

ニックネーム
本 文
TweetsWind
画像認証と遊ぼう! 第7回「辞書で殴れ編」 結城あすかの毎日電波思考 (あすか日記)/BIGLOBEウェブリブログ
文字サイズ:       閉じる