OpenCVのnormalize関数の使い方は?

OpenCVのnormalize関数では、配列内の値を指定した範囲に正規化できます。

関数のプロトタイプは以下のとおりです。

void normalize(InputArray src, OutputArray dst, double alpha=1, double beta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray());

パラメーターの説明

  1. 単一チャネルまたは複数チャネルの画像を入力として受け取り、CV_8U、CV_16U、CV_32F、CV_64F のデータ型を受け付けます。
  2. dst: 出力配列で、入力配列と同じサイズとデータ型を持っています。
  3. alpha: スケール係数、src内の値にalphaを乗算後、betaを加算する。
  4. オフセットは、srcの値にalphaを掛けてbetaを加えたもの
  5. 正規化の種類で、正規化の基準の計算方法を指定する。デフォルトはNORM_L2で、L2ノルムを計算する。他にもNORM_INF(無限ノルムを計算する)、NORM_MINMAX([0, 1]の間に値を正規化する)が選べる。
  6. dtype: 出力配列のデータ型。-1 の場合、入力配列のデータ型と同じです。
  7. 必須マスク: どの要素を正規化するかを指定するオプションのマスク. マスクが必要ない場合は、デフォルトの noArray() を使用します.

normalize関数は、画像のピクセル値を特定の範囲に正規化するために使用できます。一般的な操作は次のとおりです。

  1. 画像の画素値を [0, 1] の範囲に正規化:normalize(src, dst, 0, 1, NORM_MINMAX);
  2. 画像ピクセル値を[-1, 1]の範囲に正規化する: cv::normalize(src, dst, -1, 1, cv::NORM_MINMAX);
  3. 画像の画素値を [0, 255] 範囲へ正規化する:normalize(src, dst, 0, 255, NORM_MINMAX, CV_8U);
bannerAds