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());
パラメーターの説明
- 単一チャネルまたは複数チャネルの画像を入力として受け取り、CV_8U、CV_16U、CV_32F、CV_64F のデータ型を受け付けます。
- dst: 出力配列で、入力配列と同じサイズとデータ型を持っています。
- alpha: スケール係数、src内の値にalphaを乗算後、betaを加算する。
- オフセットは、srcの値にalphaを掛けてbetaを加えたもの
- 正規化の種類で、正規化の基準の計算方法を指定する。デフォルトはNORM_L2で、L2ノルムを計算する。他にもNORM_INF(無限ノルムを計算する)、NORM_MINMAX([0, 1]の間に値を正規化する)が選べる。
- dtype: 出力配列のデータ型。-1 の場合、入力配列のデータ型と同じです。
- 必須マスク: どの要素を正規化するかを指定するオプションのマスク. マスクが必要ない場合は、デフォルトの noArray() を使用します.
normalize関数は、画像のピクセル値を特定の範囲に正規化するために使用できます。一般的な操作は次のとおりです。
- 画像の画素値を [0, 1] の範囲に正規化:normalize(src, dst, 0, 1, NORM_MINMAX);
- 画像ピクセル値を[-1, 1]の範囲に正規化する: cv::normalize(src, dst, -1, 1, cv::NORM_MINMAX);
- 画像の画素値を [0, 255] 範囲へ正規化する:normalize(src, dst, 0, 255, NORM_MINMAX, CV_8U);