コンピュータに画像はどう見えるのか? その1 Hough変換

本日のお題画像:


人間は、画像を見たときに、その中に写っている文字や形状を見ています。ところが、コンピュータは、画像を見たときに、その中に写っている文字や形状を見ていません。個々の点の色や明るさを見ているだけです。つまり、「木を見て森を見ず」なのです。


基本的に、コンピュータは画像の中の文字も読めませんし、線があるとか、円があるとかも理解できません。なので、

  • 文字を認識させるためには、OCRというテクノロジーを使う必要があります
  • 画像内の線や円を認識させるためには、それなりの診断ツールを使う必要があります。

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点は、赤枠の波1本となる
  2. 緑枠の2点は、赤枠内で2本の波となり、1点で交差する


さて、次に緑枠内に3点を作って見ましょう。まず、3角形っぽく

次に、一列に並べてみましょう。


以上のことより、薄々お気づきだと思いますが、このお題画像のように、

緑枠内に直線を描くと、赤枠内にはいくつかの波ができるのですが、それがたった1点で交差することになります。


というわけで、本日のところは、細かい点を抜きにして、実際に触ってみた肌感覚で理解していただきたいのですが、以下のようにまとめておきます。

  • コンピュータは、画像を見たとき、(緑枠内のように)個々の点しか理解できない
  • 緑枠内の点は、赤枠内の波として表現できる(これをHough変換といいます)
  • 緑枠内の直線は、赤枠内で、たった一つの交差点をつくる
  • なので、コンピュータは、画像内の直線を探す時、Hough変換された波線が交差する点を探している


次回は、この直線を理解することで、書籍電子化や新聞電子化の何の役に立つのか、ということを見て行きましょう。

*1:何が何でも早く技術的なもんを知りたい、という方は、http://codezine.jp/article/detail/153が良いと思いますよ

*2:ただし、1個だけ例外があるのですが、2点を縦に並べてみると、赤枠の左端と右端の2箇所で交差しちゃうんですが、そんな細かいことはどうでもいいです