目录
cv::normalize()
是 OpenCV 中用于将数据值缩放到指定范围或对数据进行归一化处理。
1. 函数原型:
void cv::normalize( InputArray src, OutputArray dst, double alpha = 1, double beta = 0, int norm_type = NORM_L2, int dtype = -1, InputArray mask = noArray() );
参数:
-
src
(InputArray
): 输入数组或图像,通常为单通道或多通道的矩阵(如cv::Mat
类型)。这是需要被标准化的源数据。 -
dst
(OutputArray
): 输出标准化后的数组或图像。大小和类型取决于输入和参数设置。 -
alpha
(double
): 归一化后的最小值或缩放系数,具体含义取决于norm_type
。如果选择了NORM_MINMAX
,alpha
表示归一化后数据的最小值。如果是NORM_L2
、NORM_L1
或NORM_INF
,alpha
是缩放的目标值。 -
beta
(double
): 归一化后的最大值,当norm_type
为NORM_MINMAX
时有效。这个参数只会在该类型下使用,以设置归一化后的最大值。 -
norm_type
(int
): 归一化的类型。常见的有以下几种:NORM_INF
: 将数组的每个元素除以绝对值的最大值。NORM_L1
: 将数组的每个元素除以元素绝对值之和。NORM_L2
: 将数组的每个元素除以元素平方和的平方根(欧几里得范数)。NORM_MINMAX
: 线性缩放,使得数组的最小值和最大值分别为alpha
和beta
。
-
dtype
(int
): 输出数据类型。如果设置为-1
,则输出与输入类型相同。否则,可以显式指定输出类型(如CV_32F
、CV_8U
等)。 -
mask
(InputArray
): 可选的掩码数组(通常是二值图像)。只对掩码中为非零的像素进行标准化处理。
返回值:
该函数没有返回值,但它会通过 dst
输出标准化后的结果。
2. 使用场景:
- 归一化处理:将图像像素值归一化到特定范围,常用于图像的预处理或后处理,例如将图像像素值归一化到
[0, 1]
范围内。 - 特征标准化:对输入数据进行标准化处理,使其适用于机器学习模型的训练和预测。
- L2 范数归一化:用于规范化向量或图像数据,使其符合 L2 范数的要求,常用于图像处理中的向量计算。
3. 示例:
cv::Mat src = cv::imread("image.jpg", cv::IMREAD_GRAYSCALE);
cv::Mat dst;
// 将图像归一化到 [0, 255] 范围内
cv::normalize(src, dst, 0, 255, cv::NORM_MINMAX);
- 上面的示例代码中,
cv::normalize()
函数将输入图像的像素值缩放到 [0, 255] 范围内。 norm_type
为NORM_MINMAX
,意味着我们使用最小-最大缩放。alpha=0
表示归一化后的最小值为 0,beta=255
表示归一化后的最大值为 255。
通过这种方式,可以对图像进行有效的归一化处理,方便后续的图像分析与处理。
标签:normalize,归一化,OpenCV,图像,alpha,cv,NORM From: https://www.cnblogs.com/keye/p/18386693