【学习OpenCV4】图像像素数据类型的转换与归一

一、什么是归一化

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

二、归一化的方式

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Huffiee

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值