コンピュータに画像はどう見えるのか? その1 Hough変換
人間は、画像を見たときに、その中に写っている文字や形状を見ています。ところが、コンピュータは、画像を見たときに、その中に写っている文字や形状を見ていません。個々の点の色や明るさを見ているだけです。つまり、「木を見て森を見ず」なのです。
基本的に、コンピュータは画像の中の文字も読めませんし、線があるとか、円があるとかも理解できません。なので、
OCRについては、6月くらいになったら、詳しく突っ込みますので、本日は、画像の中にある線について、考えてみましょう。
とりあえず、http://users.cs.cf.ac.uk/Paul.Rosin/CM0311/dual2/hough.htmlに行ってみましょう。(いずれ、技術的な解説はしますので、ここでは、なすがままに、身をゆだねてください。*1)
こんな画面が出てきますね?
緑枠内をどこでも良いのでクリックしてください。
すると、赤枠内に、波が現れます。(このことを、「Hough変換」と呼ぶのですが、名前はどうでも良いです。)
消したいときは、右下の方にある「click here」というところをクリックしてみてください。(単に再表示させる、だけなんですが。)
次に、緑枠内をクリックした後、ボタンを押したまま、ドラッグしてみてください。赤枠内の波が、どんどん変化していくことでしょう。ちょうど、緑枠内で円を描くように動いてみると、波が波らしく動くでしょう。(って、ただ、それだけなのですが、ヒマな時、一人ウェーブをやって遊んでいます。)
一度、画面をクリアして、今度は、緑枠内に、2点を作って見ましょう。
ここで確認して欲しいのですが、2点を緑枠のどこに配置したとしても、赤枠の波2本は、1点で交わってますね。(ここがかなり重要です*2)
つまり、ここまでを整理しておくと、
- 緑枠の1点は、赤枠の波1本となる
- 緑枠の2点は、赤枠内で2本の波となり、1点で交差する
さて、次に緑枠内に3点を作って見ましょう。まず、3角形っぽく
次に、一列に並べてみましょう。
以上のことより、薄々お気づきだと思いますが、このお題画像のように、
緑枠内に直線を描くと、赤枠内にはいくつかの波ができるのですが、それがたった1点で交差することになります。
というわけで、本日のところは、細かい点を抜きにして、実際に触ってみた肌感覚で理解していただきたいのですが、以下のようにまとめておきます。
- コンピュータは、画像を見たとき、(緑枠内のように)個々の点しか理解できない
- 緑枠内の点は、赤枠内の波として表現できる(これをHough変換といいます)
- 緑枠内の直線は、赤枠内で、たった一つの交差点をつくる
- なので、コンピュータは、画像内の直線を探す時、Hough変換された波線が交差する点を探している
次回は、この直線を理解することで、書籍電子化や新聞電子化の何の役に立つのか、ということを見て行きましょう。
*1:何が何でも早く技術的なもんを知りたい、という方は、http://codezine.jp/article/detail/153が良いと思いますよ
*2:ただし、1個だけ例外があるのですが、2点を縦に並べてみると、赤枠の左端と右端の2箇所で交差しちゃうんですが、そんな細かいことはどうでもいいです