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

目的

理論

通常、私たちは一定サイズの画像を扱う。しかし、場合によっては(同じ)画像を異なる解像度で扱う必要がある。例えば、画像内で顔のような何かを探索する際、その対象がその画像内でどのサイズで存在するかは分からない。その場合、同じ画像を異なる解像度で集合として作成し、それらすべての中で対象を探索する必要がある。これらの異なる解像度の画像の集合は画像ピラミッドと呼ばれる(最高解像度の画像を一番下に、最低解像度の画像を一番上にしてスタックに積むと、ピラミッドのように見えるからである)。

画像ピラミッドには2種類ある。1) ガウシアンピラミッド と 2) ラプラシアンピラミッド である

ガウシアンピラミッドの上位レベル(低解像度)は、下位レベル(高解像度)の画像において連続する行と列を除去することで形成される。そして上位レベルの各ピクセルは、下位レベルの5ピクセルからの寄与にガウシアン重みを掛けて形成される。これにより、\(M \times N\) の画像は \(M/2 \times N/2\) の画像になる。したがって面積は元の面積の4分の1に縮小される。これはオクターブと呼ばれる。ピラミッドを上に進む(すなわち解像度が下がる)につれて同じパターンが続く。同様に、拡大する際には各レベルで面積が4倍になる。ガウシアンピラミッドは cv.pyrDown()cv.pyrUp() 関数を使って求めることができる。

ラプラシアンピラミッドはガウシアンピラミッドから作られる。専用の関数は存在しない。ラプラシアンピラミッドの画像はエッジ画像のようなもので、要素のほとんどはゼロである。これらは画像圧縮に用いられる。ラプラシアンピラミッドのあるレベルは、ガウシアンピラミッドの同じレベルと、その一つ上のレベルを拡大したものとの差分によって作られる。

ダウンサンプリング

次の関数を使う: cv.pyrDown (src, dst, dstsize = new cv.Size(0, 0), borderType = cv.BORDER_DEFAULT)

引数
src入力画像。
dst出力画像。指定されたサイズを持ち、src と同じ型である。
dstsize出力画像のサイズ。
borderTypeピクセル外挿の方法( cv.BorderTypes を参照、cv.BORDER_CONSTANT はサポートされていない)。

試してみる

アップサンプリング

次の関数を使う: cv.pyrUp (src, dst, dstsize = new cv.Size(0, 0), borderType = cv.BORDER_DEFAULT)

引数
src入力画像。
dst出力画像。指定されたサイズを持ち、src と同じ型である。
dstsize出力画像のサイズ。
borderTypeピクセル外挿の方法( cv.BorderTypes を参照、cv.BORDER_DEFAULT のみサポートされている)。

試してみる