電子化検定2009
今年最後のエントリです。なので、突然ですが、「電検」こと電子化検定を行います。
あなたは何級?
以下の問題にすばやく答えよ。制限時間13分くらい。
(問題1)左上のような画像を2値化した場合、右上のように消えてしまう文字がある。なぜか?
(問題2)消えてしまわないようにするためには、どうすれば良いか?あっさり述べよ。
(問題3)このような2値化の問題とOCRの関係について、かなり簡潔に述べよ。
続きを見る前に、じっくり考えてみましょう。
(問題1の回答例)
まず、大前提を確認しましょう。
2値化というのは、「黒と白しか使わない」画像にすることです。例を挙げれば、FAXなどがそうです。カラーじゃない、ということで、グレースケールと混乱する場合がありますが、2値化された画像は、灰色もありません。とても、ファイルサイズが小さくなるのですが、文字や形が欠けちゃう、という欠点があります。
次に、以下の2点を押えましょう。
- カラー画像を2値化するためには、まず、カラー画像をグレースケールっぽく変換する必要があります。
- グレースケールは、「どんくらい白いか」という程度が256段階で設定されていますが、その何段階目以上を白として、何段階目以下を黒とするのか、を決めなくてはいけません。
まず、グレースケールにする段階で、http://d.hatena.ne.jp/denshikA/20091119でも述べたとおり、
元画像 みんな平等 優劣つけた RGBを平等に扱ってしまうと、消えてしまう文字があります。なので、問題の右上のように文字が消えてしまったのは、このグレースケールにする変換方法がマズかったのかもしれません。グレースケールにするとき、RGBには何らかの形で優劣をつけてあげましょう。
次に、ちゃんと文字を消さずにグレースケール変換できたとして、今度は、白黒の境界線をどこにするのか、を検討してみます。
カラーをうまくグレースケールに変換できると、
このような感じで、左から、黒、青、赤、緑、白と並ぶはずです。そうすると、境界線の候補としては、A〜Fまでの6種類があります。
AとFを境界とした場合は自明なので省略いたします。
Bを境界とした場合、
Cを境界とした場合、
Dを境界とした場合、
Eを境界とした場合、
さて、ここまでくれば、後は簡単です。
例えば、仮にDを境界線としたとします。
この場合、
「緑地に白文字」は、両方とも白に変換されてしまうので、文字がつぶれます。
「赤地に緑文字」は、赤が黒に変換されて、緑が白に変換されますので、文字がつぶれません。
「青地に赤文字」は、両方とも黒に変換されてしまうので、文字がつぶれます。では、Cを境界線としてみると、
「緑地に白文字」は、両方とも白に変換されてしまうので、文字がつぶれます。
「青地に赤文字」は、青が黒に変換されて、赤が白に変換されますので、文字がつぶれません。
「黒地に青文字」は、両方とも黒に変換されてしまうので、文字がつぶれます。という感じで、どこに境界線をもってきたとしても、かならずつぶれてしまう組み合わせが出てきます。
つまり、カラー画像を、普通に2値化したら、どっかの文字や形がつぶれてしまう可能性は、かなり高い、ということです。背景が真っ白で、そこにいろんな色で文字が書かれているなら構わないのですが、背景がいろんな色で、そこの上に、いろんな色で文字が書かれている、という場合、非常に困ってしまうわけです。
ちなみに、問題の画像の右側ですが、これはDを境界線としているようです。
(問題2の回答例)
画像を分割して、部分ごとに2値化する。*2
(問題3の回答例)
OCRにかける場合、何らかの形で2値化らしきことをしなくてはいけないので、2値化によって消える文字があると、(OCRの誤認識だとかそんなこと以前の問題として、)全く認識できない、という問題が発生して、かなり困る。
全問正解者は1級。
2問正解者は2級。
1問正解者は3級。
正解なしは4級。
認定書を希望の方は、コメント欄に、何級だったぞー、とお書きください。後日、認定書をお送りします。
*1:昨今の不況を反映して、「赤地」とするべきところが、「赤字」となっておりますが、年末なので、許してください。