OpenCV 4.13.0
Open Source Computer Vision
読み込み中...
検索中...
見つかりません
🤖 AIによる機械翻訳(非公式) — これは OpenCV 4.13.0 公式リファレンス(英語)を AI (Claude) で自動翻訳したものです。訳に誤りを含む場合があります。正確な情報は 公式英語版(原文) を参照してください。
特徴の理解

目標

この章では、特徴とは何か、なぜそれらが重要なのか、なぜコーナーが重要なのか、などを理解してみる。

解説

ほとんどの人はジグソーパズルゲームで遊んだことがあるだろう。画像の小さなピースがたくさん渡され、それらを正しく組み合わせて大きな本物の画像を作り上げる必要がある。問題は、それをどうやって行うかである。 同じ理論をコンピュータプログラムに当てはめて、コンピュータにジグソーパズルを解かせるのはどうだろうか?コンピュータがジグソーパズルを解けるなら、美しい自然風景の実画像をたくさんコンピュータに与えて、それらすべての画像をつなぎ合わせて1枚の大きな画像にするよう指示できないだろうか?コンピュータが複数の自然画像を1枚につなぎ合わせられるなら、ある建物や任意の構造物の写真をたくさん与えて、そこから3Dモデルを作るよう指示するのはどうだろうか?

このように、疑問と想像は続いていく。しかし、それはすべて最も基本的な問いにかかっている。ジグソーパズルをどうやって解くのか?バラバラになった大量の画像ピースを、どうやって1枚の大きな画像に並べるのか?大量の自然画像をどうやって1枚の画像につなぎ合わせるのか?

その答えは、私たちは独特で、簡単に追跡でき、簡単に比較できる、特定のパターンや特定の特徴を探しているということである。そのような特徴を定義しようとすると、言葉で表現するのは難しいかもしれないが、私たちはそれが何であるかを知っている。複数の画像にわたって比較できる良い特徴を1つ指し示すように言われれば、指し示すことができる。だからこそ小さな子供でもこれらのゲームを簡単に遊べるのである。私たちは画像中のこれらの特徴を探し、それらを見つけ、他の画像で同じ特徴を探し、それらを位置合わせする。それだけである。(ジグソーパズルでは、異なる画像の連続性をより重視する。)これらの能力はすべて、私たちに本来備わっている。

こうして、私たちの1つの基本的な問いはさらに数を増やすが、より具体的になる。これらの特徴とは何か?。(その答えはコンピュータにも理解できるものでなければならない。)

人間がどのようにこれらの特徴を見つけるのかを言うのは難しい。これはすでに私たちの脳にプログラムされている。しかし、いくつかの絵を深く観察して異なるパターンを探すと、何か興味深いものが見つかる。たとえば、下の画像を見てみよう:

image

この画像は非常に単純である。画像の上部に、6つの小さな画像パッチが与えられている。あなたへの問題は、これらのパッチが元の画像内で正確にどの位置にあるかを見つけることである。いくつ正しい結果を見つけられるだろうか?

AとBは平らな面であり、広い範囲に広がっている。これらのパッチの正確な位置を見つけるのは難しい。

CとDははるかに単純である。それらは建物のエッジである。おおよその位置は見つけられるが、正確な位置を見つけるのはやはり難しい。これは、エッジに沿ってはどこでもパターンが同じだからである。しかし、エッジを横切る方向では異なる。したがって、エッジは平らな領域に比べて良い特徴であるが、十分良いとは言えない(ジグソーパズルでは、エッジの連続性を比較するのに役立つ)。

最後に、EとFは建物のコーナーである。そしてそれらは簡単に見つけられる。なぜなら、コーナーではこのパッチをどこに動かしても、見た目が異なるからである。したがって、それらは良い特徴と見なせる。それでは、より深く理解するために、より単純な(そして広く使われている)画像に移ろう。

image

上記と同様に、青いパッチは平らな領域であり、見つけて追跡するのが難しい。青いパッチをどこに動かしても同じに見える。黒いパッチにはエッジがある。それを垂直方向(つまり勾配に沿って)に動かすと変化する。エッジに沿って(エッジと平行に)動かすと、同じに見える。そして赤いパッチはコーナーである。パッチをどこに動かしても異なって見える、つまり独特である。したがって基本的に、コーナーは画像中の良い特徴と見なされる。(コーナーだけでなく、場合によってはブロブも良い特徴と見なされる。)

こうして私たちは「これらの特徴とは何か?」という問いに答えた。しかし次の問いが生じる。それらをどうやって見つけるのか?あるいはコーナーをどうやって見つけるのか?。私たちは直感的な方法で、つまり、その周囲のすべての領域で(わずかに)動かしたときに最大の変化を持つ画像中の領域を探すことで、これに答えた。これは後の章でコンピュータ言語に置き換えられる。このような画像特徴を見つけることを 特徴検出 (Feature Detection) と呼ぶ。

私たちは画像中の特徴を見つけた。いったん見つけたら、他の画像でも同じものを見つけられるべきである。これはどうやって行うのか?私たちは特徴の周囲の領域を取り、それを自分の言葉で「上部は青い空、下部は建物の一部、その建物にはガラスがある、など」と説明し、他の画像で同じ領域を探す。基本的には、特徴を記述しているのである。同様に、コンピュータも他の画像でそれを見つけられるように、特徴の周囲の領域を記述すべきである。このような記述を 特徴記述 (Feature Description) と呼ぶ。特徴とその記述が得られたら、すべての画像で同じ特徴を見つけて、それらを位置合わせしたり、つなぎ合わせたり、好きなことができる。

そこでこのモジュールでは、特徴を見つけ、それらを記述し、マッチングするためのOpenCVのさまざまなアルゴリズムを見ていく。