Opencvイメージピラミッド

4559 ワード

次の関数を使用して、あるsizeの画像を別のsizeの画像に変換することができます:(1)、resize関数
void resize(InputArray src,OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

最初のパラメータ、InputArrayタイプのsrc、入力画像、すなわちソース画像、Matクラスのオブジェクトを記入すればよい.2番目のパラメータ、OutputArrayタイプのdstは、画像を出力し、それがゼロでない場合、dsize(3番目のパラメータ)のサイズがあるか、src.size()によって計算される.3番目のパラメータ、Sizeタイプのdsize、出力画像のサイズ;ゼロに等しい場合は、次の式で計算します.
このうち,dsize,fx,fyはいずれも0にできない.4番目のパラメータ、doubleタイプのfx、水平軸に沿ったスケーリング係数、デフォルト値0があり、0に等しい場合は、次の式で計算します.5番目のパラメータ、doubleタイプのfy、垂直軸に沿ったスケーリング係数、デフォルト値0があり、0に等しい場合は、次の式で計算します.
6番目のパラメータ、intタイプのinterpolation、補間方法を指定するために使用され、デフォルトはINTER_LINEAR(リニア補間).オプションの補間方法は、INTER_NEAREST-近隣補間INTER_LINEAR-リニア補間(デフォルト)INTER_AREA-領域補間(ピクセル領域関係による再サンプリング補間)INTER_CUBIC-3次スプライン補間(4を超える)です.×4ピクセルの隣接領域内の二重三次補間)INTER_LANCZOS 4-Lanczos補間(8を超える×8画素近傍のLanczos補間)画像を縮小するには、一般的にCV_INTER_AREAで補間しますが、画像を拡大するには、一般的にCV_INTER_CUBIC(非効率、遅い、推奨しない)またはCV_INTER_LINEAR(非効率、高速、推奨)
(2)、pyrUp、pyrDown関数
void pyrUp(InputArray src, OutputArraydst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT )

最初のパラメータ、InputArrayタイプのsrc、入力画像、すなわちソース画像、Matクラスのオブジェクトを記入すればよい.2番目のパラメータ、OutputArrayタイプのdst、出力画像、ソースピクチャと同じサイズとタイプがあります.3番目のパラメータ、const Size&タイプのdstsize、出力画像のサイズ;デフォルト値Size()があります.つまり、デフォルトでは、Size(src.cols*2、src.rows*2)によって計算され、次の条件を満たす必要があります.
4番目のパラメータ、intタイプのborderType、また来ました.境界モード、一般的には気にしないでください.
 void pyrDown(InputArray src,OutputArray dst, const Size& dstsize=Size(), int borderType=BORDER_DEFAULT)

最初のパラメータ、InputArrayタイプのsrc、入力画像、すなわちソース画像、Matクラスのオブジェクトを記入すればよい.2番目のパラメータ、OutputArrayタイプのdst、出力画像、ソースピクチャと同じサイズとタイプがあります.3番目のパラメータ、const Size&タイプのdstsize、出力画像のサイズ;デフォルト値Size()があります.つまり、デフォルトでは、Size Size((src.cols+1)/2、(src.rows+1)/2)で計算され、次の条件を満たす必要があります.
このpyrDown関数はGaussピラミッド構築のダウンサンプリングのステップを実行する.まず、ソース画像を次のカーネルとボリューム演算します.次に、画像の偶数行と列を補間することで、ダウンサンプリング操作を行います.
#define _PYRAMMID_
#ifdef _PYRAMMID_

void usage_resize()
{
    Mat  src = imread("./smimage/1.jpg");
    Mat  dst;
    dst.create(Size(src.size().width/2,src.size().height/2), src.type());
    resize(src, dst,dst.size());

    //show images
    imshow("SRC", src);
    imshow("DST", dst);
    waitKey(0);
}

void usage_pyrUp()
{
    Mat src, dst;
    src = imread("./smimage/h.jpg");
    pyrUp(src, dst);
    imshow("src", src);
    imshow("dst", dst);
    waitKey(0);

}

void usage_pyrDown()
{
    Mat src, dst;
    src = imread("./smimage/h.jpg");
    pyrDown(src, dst);
    imshow("src", src);
    imshow("dst", dst);
    waitKey(0);
}