電子化検定2009


今年最後のエントリです。なので、突然ですが、「電検」こと電子化検定を行います。
あなたは何級?


以下の問題にすばやく答えよ。制限時間13分くらい。

  
*1

(問題1)左上のような画像を2値化した場合、右上のように消えてしまう文字がある。なぜか?


(問題2)消えてしまわないようにするためには、どうすれば良いか?あっさり述べよ。


(問題3)このような2値化の問題とOCRの関係について、かなり簡潔に述べよ。

続きを見る前に、じっくり考えてみましょう。





(問題1の回答例)

まず、大前提を確認しましょう。


2値化というのは、「黒と白しか使わない」画像にすることです。例を挙げれば、FAXなどがそうです。カラーじゃない、ということで、グレースケールと混乱する場合がありますが、2値化された画像は、灰色もありません。とても、ファイルサイズが小さくなるのですが、文字や形が欠けちゃう、という欠点があります。


次に、以下の2点を押えましょう。

  1. カラー画像を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:昨今の不況を反映して、「赤地」とするべきところが、「赤字」となっておりますが、年末なので、許してください。

*2:例えば、http://ci.nii.ac.jp/naid/110003275220など