opencv学习笔记:归一化normalize()、深度转换convertTo()、找最大最小值及其坐标minMaxLoc()

一、归一化介绍–normalize()

1.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:输出图像的深度;
参数mask:掩码。选择感兴趣区域,选定后只能对该区域进行操作。

1.2、归一化类型
①NORM_INF
     d s t ( i , j ) = s r c ( i , j ) ∗ a l p h a m a x ( ∣ s r c ( i , j ) ∣ ) dst(i,j)=\frac{src(i,j)*alpha}{max(|src(i,j)|)} dst(i,j)=max(src(i,j))src(i,j)alpha

②NORM_L1
     d s t ( i , j ) = s r c ( i , j ) ∗ a l p h a ∑ ∣ s r c ( i , j ) ∣ dst(i,j)=\frac{src(i,j)*alpha}{\sum |src(i,j)|} dst(i,j)=src(i,j)src(i,j)alpha

③NORM_L2
     d s t ( i , j ) = s r c ( i , j ) ∗ a l p h a ∑ ( s r c ( i , j ) 2 ) dst(i,j)=\frac{src(i,j)*alpha}{\sqrt{ \sum (src(i,j)^{2})}} dst(i,j)=(src(i,j)2) src(i,j)alpha

④NORM_MINMAX
     d s t ( i , j ) = s r c ( i , j ) ∗ a l p h a m a x ( s r c ( i , j ) ) − m i n ( s r c ( i , j ) ) dst(i,j)=\frac{src(i,j)*alpha}{max(src(i,j))-min(src(i,j))} dst(i,j)=max(src(i,j))min(src(i,j))src(i,j)alpha
当src(i,j) = max(src(i,j))时,dst(i,j) = 1;当src(i,j) = min(src(i,j))时,dst(i,j) = 0

⑤NORM_L2SQR
⑥NORM_HAMMING
⑦NORM_HAMMING2
⑧NORM_TYPE_MASK
⑨NORM_RELATIVE
在norm_type = NORM_L1 / NORM_L2 / NORM_INF这三种情况下,beta的取值与归一化结果无关,alpha的取值是对计算出的结果进行了缩放。
在norm_type = NORM_MINMAX情况下,alpha、beta的取值是确定了范围的边界,大小与取值顺序无关。
以上是规范化值得计算公式,要进行规范化范围,就需要在上述公式的基础上乘以要规范的范围,比如要规范到(0~255)之间,用NORM_MINMAX就有:
     d s t ( i , j ) = s r c ( i , j ) − m i n ( s r c ) m a x ( s r c ) − m i n ( s r c ) ∗ ( b ′ − a ′ ) + a ′ dst(i,j)=\frac{src(i,j)-min(src)}{max(src)-min(src)}*(b'-a') +a' dst(i,j)=max(src)min(src)src(i,j)min(src)(ba)+a
其中 b ′ = m a x ( a , b ) , a ′ = m i n ( a , b ) b'=max(a, b),a'=min(a, b) b=max(a,b)a=min(a,b)

二、深度转换–convertTo()

2.1、API介绍

void convertTo( OutputArray dst, int rtype, double alpha=1, double beta=0 )

参数dst:输出图像;
参数rtype:要转换的深度;
参数alpha:对灰度值的缩放倍数;
参数beta:对灰度值得增量。
公式: dst = satyrate_cast(src * alpha + beta);

三、找最大最小值及其坐标–minMaxLoc()

3.1、API介绍

void minMaxLoc(InputArray src, CV_OUT double* minVal,
                       CV_OUT double* maxVal = 0, CV_OUT Point* minLoc = 0,
                       CV_OUT Point* maxLoc = 0, InputArray mask = noArray());

参数src:单通道图或数组。
参数minVal:查找到的最小值。
参数maxVal:查找到的最大值。
参数minLoc:查找到的最小值的坐标。
参数maxLoc:查找到的最大值得坐标。

3.2、作用
   minmaxloc()函数的作用是查找数组中的最小和最大元素值及其位置。在整个数组中搜索极值,如果掩码不是空数组,则在指定的数组区域中搜索极值。该函数适用于单通道图,对于多通道图要进行通道分离。

你可能感兴趣的:(opencv)