时间为友,记录点滴。
我们在之前有聊过高斯噪声,并且详细得说了高斯曲线的由来、性质以及代码实现。本次我们借助高斯分布的特点来认识一些OpenCV的API。他们分别是求像素的最大最小值以及其对应像素位置的minMaxLoc, 和求一张图片中均值和方差的meanStdDev,以及做归一化的normalize。
minMaxLoc
官方代码中对这个API的介绍已经非常清楚,而且也没有什么难以理解的,搬运到这里,Mark一下吧。
/** @brief Finds the global minimum and maximum in an array.
需要注意的:
- 最大、最小值都是double类型
- Point类是OpenCV默认的基础类(先默认为就是由(x, y)组成就可以了)
- mask 是ROI区域(这个貌似我们还没有提过,在本实验中就不涉及了)
meanStdDev
老规矩,简单的API只Mark
/** Calculates a mean and standard deviation of array elements.
需要注意的是:
- 输出的均值mean 和 方差stddev都是Mat类型的(没有去扒源码,费解为什么一个值不能存在vector里面吗?)
normalize
这个API是做归一化的。
CV_EXPORTS_W
官方对他的解释非常长,其实就是norm_type这个类型不同会导致输出结果的不同。先翻译成中文看:
src 输入数组;
dst 输出数组,数组的大小和原数组一致;
alpha 1,用来规范值,2.规范范围,并且是下限;
beta 只用来规范范围并且是上限, 因此只在 NORM_MINMAX中起作用;
norm_type 归一化选择的数学公式类型;
dtype 当为负,输出在大小深度通道数都等于输入,当为正,输出只在深度与输如不同,不同的地方游dtype决定;
mark 掩码。选择感兴趣区域,选定后只能对该区域进行操作。
关于alpha/beta和norm_type之间的关系,用公式看比啰嗦的问题简洁多了:
设数组中元素为{A1,A2,A3…An}
- NORM_L1:
注释:当前元素在整体元素累加和中占得比例,可以想象