OpenCV(cv::normalize())



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() );

参数:

  1. src (InputArray): 输入数组或图像,通常为单通道或多通道的矩阵(如 cv::Mat 类型)。这是需要被标准化的源数据。

  2. dst (OutputArray): 输出标准化后的数组或图像。大小和类型取决于输入和参数设置。

  3. alpha (double): 归一化后的最小值或缩放系数,具体含义取决于 norm_type。如果选择了 NORM_MINMAXalpha 表示归一化后数据的最小值。如果是 NORM_L2NORM_L1NORM_INFalpha 是缩放的目标值。

  4. beta (double): 归一化后的最大值,当 norm_typeNORM_MINMAX 时有效。这个参数只会在该类型下使用,以设置归一化后的最大值。

  5. norm_type (int): 归一化的类型。常见的有以下几种:

    • NORM_INF: 将数组的每个元素除以绝对值的最大值。
    • NORM_L1: 将数组的每个元素除以元素绝对值之和。
    • NORM_L2: 将数组的每个元素除以元素平方和的平方根(欧几里得范数)。
    • NORM_MINMAX: 线性缩放,使得数组的最小值和最大值分别为 alphabeta
  6. dtype (int): 输出数据类型。如果设置为 -1,则输出与输入类型相同。否则,可以显式指定输出类型(如 CV_32FCV_8U 等)。

  7. mask (InputArray): 可选的掩码数组(通常是二值图像)。只对掩码中为非零的像素进行标准化处理。

返回值:

该函数没有返回值,但它会通过 dst 输出标准化后的结果。



2. 使用场景:

  1. 归一化处理:将图像像素值归一化到特定范围,常用于图像的预处理或后处理,例如将图像像素值归一化到 [0, 1] 范围内。
  2. 特征标准化:对输入数据进行标准化处理,使其适用于机器学习模型的训练和预测。
  3. 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_typeNORM_MINMAX,意味着我们使用最小-最大缩放。alpha=0 表示归一化后的最小值为 0,beta=255 表示归一化后的最大值为 255。

通过这种方式,可以对图像进行有效的归一化处理,方便后续的图像分析与处理。



posted @   做梦当财神  阅读(603)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
历史上的今天:
2022-08-29 医学图像存储格式
2022-08-29 np.fft
2022-08-29 核磁共振中k-space图的低频和高频
2022-08-29 SE、GRE序列
2022-08-29 磁共振成像原理
点击右上角即可分享
微信分享提示