图像像素类型转换与归一化

图像像素类型转换与归一化

函数原型

void normalize( InputArray src, InputOutputArray dst, double alpha = 1, double beta = 0,
                             int norm_type = NORM_L2, int dtype = -1, InputArray mask = noArray());
                             Parameters:

src			输入数组
dst			输出数组,支持原地运算
alpha		如果norm_type为NORM_MINMAX ,则alpha为最小值或最大值;如果norm_type为其他类型,则为归一化要乘的系数【重点】
beta		如果norm_type为NORM_MINMAX ,则beta为最小值或最大值;如果norm_type为其他类型,beta被忽略,此处不会被用到,一般传入0【重点】
normType	归一化的类型,可以有以下的取值:
    		NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。
   		 	NORM_INF:此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)
    		NORM_L1 :  归一化数组的L1-范数(绝对值的和)
    		NORM_L2: 归一化数组的(欧几里德)L2-范数
dtype		dtype为负数时,输出数组的type与输入数组的type相同;否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).
mask		操作掩膜,用于指示函数是否仅仅对指定的元素进行操作。

代码详解参考:https://blog.csdn.net/yl_best/article/details/89000431

1.normalize(image, dst, 1.0, 0, NORM_MINMAX)的函数作用:这个函数的作用就是把需要处理的数据通过某种算法限制在你需要的一定范围内。归一化数据。该函数分为范围归一化与数据值归一化。(Normalizes the norm or value range of an array.)
2.由于归一化会将整数像素值变为小数,所以要在归一化之前进行数据类型的转化。image.convertTo(image, CV_32F);//将image中的数据类型type改变成指定的类型。由于归一化会将整数像素值变为小数,所以要在归一化之前进行数据类型的转化
3.如果改变像素的取值类型,那么也要随之调整像素值,否则无法正常显示。
4.如果选择NORM_MINMAX类型,通常将alpha设定为最小值,将beta设定为最大值。比如,需要将数据范围限定在[0, 400],可以这么使用normalize(src, dst, 0, 400.0, NORM_MINMAX);,如果选择其他三种类型,beta设定为0,alpha按需求设定。

//归一化
void QuickDemo::norm_demo(Mat &image) {
	Mat dst;
	std::cout << image.type() << std::endl;
	image.convertTo(image, CV_32F);//将image中的数据类型type改变成指定的类型。由于归一化会将整数像素值变为小数,所以要在归一化之前进行数据类型的转化
	std::cout << image.type() << std::endl;
	normalize(image, dst, 1.0, 0, NORM_MINMAX);//将图片像素值按照指定方式归一化
	std::cout << dst.type() << std::endl;
	imshow("图像数据归一化", dst);
	// CV_8UC3, CV_32FC3
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值