『画像ピラミッド』 っていったいなんでしょう。
OpenCv CookBookによれば 解像度の異なる同一画像の集合 だそうで 要するに 何かの処理をする場合 あらかじめいくつかの解像度の画像の集合を準備し ザクッとした当たりをつけたあとさらに精密な処理を行う目的で使うもののようです。(実はあまり実感がわきませんが・・)
c++では buildPyramidというメソッドがあって 画像のListが作成できますが Android版には、ありません。Android版には PyrDown, PyrUpのみ実装されています。
static void pyrDown(Mat src, Mat dst)
static void pyrDown(Mat src, Mat dst, Size dstsize)
static void pyrUp(Mat src, Mat dst)
static void pyrUp(Mat src, Mat dst, Size dstsize)
拡大縮小 とも 出力Matのサイズが指定可能に見えますが 実際指定してみると 2倍 または 1/2以外のサイズを指定するとエラーになり サイズの指定を省略した場合と同じ結果しか得られませんでした。なおMatの使い回しは可能です。
処理結果 |
拡大 120*90 のjpeg を作成し pyrUp(src,mat1) pyrUp(mat1,mat2) つまり 倍⇒倍 とした結果です。
縮小 480*360 のjpeg を作成し pyrDown(src,mat1) pyrDown(mat1,mat2) つまり 半分⇒半分 とした結果です。
入力データにしたjpegは 240*180のjpegを IrfanViewで加工し使っています。
ところで このPyrDown, PyrUpですが resize との差があまりわかりません。実際resizeをPyrUpの代わりに繰り返した結果とも比較してみましたが 鮮明さに差はありませんでした。リソースの消費具合等の違いなのでしょうか??
by Android2.2 with OpenCv 2.3.1 for Android |