2006-05-16 ラベリング。_ 林檎とバナナを数える。5年ほど前の話だが、ほんの出来心で作り始めたらかなり面白くてハマってしまった画像認識。その当時は、取りあえず第一歩として床に適当にばら撒かれた林檎とバナナを写真で撮って画像化し、それぞれの数を自動で数えるというエンジンを作ってみた。まんま、画像認識入門に最適な例題って感じでしょ? こういうことをする際には、いくつかのキーポイントがある。第一に重要なのは、「対象物を抽出する」という作業。これが出来ないと話にならない。そして、次の段階として特に重要なのは「ラベリング」という作業だ。林檎とバナナを選んだのは、色が特徴的であるから色相で物体を容易に抽出できるだろうと思って(但し床が同色系でないことが条件)。別の言い方をすれば、色相を使って画像を二値化し、これにより分離抽出された領域についてラベリングを実施。円形度が大きいものを林檎、小さいものをバナナとするというような感じの考え方。 出来た実験アプリの動作は極めて良好で、イジワルして林檎と同じような色した四角いものを入れたりしたけど、円形度でちゃんとはじかれて林檎だけがカウントされた。こんな簡単なものでもはじめて動いたときはたいそう感動し、嬉しかった。 このエンジンはその後、顕微鏡写真からの「ミジンコ計数ソフト」にインプリされたり、ある製造ライン上で、変形した商品を自動で発見するソフトにインプリされたりと、結構活躍した。 今回急遽このエンジンを再利用する機会を生じ、久々にコードを引っ張りだしてみた。オリジナルはMacintosh/CodeWarriorで書いたコードであるが今回は、Windows/VC++だ。が、全く修正せずにコンパイルが通り、無事動いた。速度も5年前とは雲泥の差で、5年前はVGA程度の画像の処理に数秒を要していたが、今ではその10倍程度の画像を投入しても、コンマ数秒のオーダーで終了する。 これ使って、またなにか面白いこと、したくなってきたな。 もっと読みたい奇特なかたは、↓の読みたい月をクリックしてね。 |
最新ツッコミ |