目录
  1. 一、什么是归一化
  2. 二、归一化的方式
  3. 2.1 基本API
  4. 2.2 示例程序

一、什么是归一化

  归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在一定范围的之内。为了后面数据处理的方便,其次是保证程序运行时收敛加快。   归一化的目的,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系,如大小关系;或是为了作图,原来很难在一张图上作出来,归一化后就可以很方便的给出图上的相对位置等。

二、归一化的方式

2.1 基本API

void normalize(
	InputArray 			src,
	InputOutputArray 	dst, 
	double 		alpha = 1, 
	double 		beta = 0, 
	int 		norm_type = NORM_L2, 
	int 		dtype = -1, 
	InputArray 			mask = noArray()
);
参数作用
src输入数组
dst输出数组
alpha归一化最小值
beta归一化最大值
norm_type归一化的类型
dtype负数时输出数组的type与输入数组的type相同
mask指示函数是否仅仅对指定的元素进行操作

其中norm_type有以下几种类型:

  • NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。
  • NORM_INF:此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)
  • NORM_L1 : 归一化数组的L1-范数(绝对值的和)
  • NORM_L2: 归一化数组的(欧几里德)L2-范数

2.2 示例程序

void MyDemo::normalize_Demo(Mat& image) {
	Mat dst;
	std::cout << image.type() << std::endl;	//CV_8UC3
	image.convertTo(image, CV_32F);			//像素数据转换为浮点数数据
	std::cout << image.type() << std::endl;	//CV_32FC3
	normalize(image, dst, 0, 1.0, NORM_MINMAX);	//归一化
	std::cout << dst.type() << std::endl;
	imshow("Normalize", dst);
}