OpenCV中的归一化
归一化就是把数据经过处理后限制在某个特定范围内。
opencv
中使用 normalize
方法来实现归一化,它的函数原型如下
cv2.normalize(src, dst, alpha=None, beta=None, norm_type=None, dtype=None, mask=None)
其中:
src: 输入矩阵
dst: 输出矩阵, 与输入矩阵形状相同
alpha: 如果
norm_type
为NORM_MINMAX
,则alpha
为大值或小值;如果norm_type
为其他类型时,则为归一化要乘的系数beta: 如果
norm_type
为NORM_MINMAX
,则beta
为小值或大值,和alpha
对应;如果norm_type
为其他类型,beta
被忽略,一般传入0norm_type: 归一化类型,常见的有
NORM_MINMAX
、NORM_INF
、NORM_L1
、NORM_L2
dtype: 默认类型与
src
相同,可选参数mask: 可选操作掩膜,默认为空
示例
import cv2
import numpy as npimage = cv2.imread('lenna.png')
cv2.imshow("original image", image)# 灰度图
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 转换为浮点数类型数组
gray = np.float32(gray)# NORM_MINMAX,最常用的一种方法,数组的数值会被缩放到一个指定的范围,比如本例中的 0~1
dst = np.zeros(gray.shape, dtype=np.float32)
# 这里alpha=1, beta=0也是ok的
cv2.normalize(gray, dst=dst, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX)
# 显示原图时,需要将像素值 re-scale 到 0~255
cv2.imshow("NORM_MINMAX", np.uint8(dst*255))# NORM_INF,无穷范数,每个值除以最大值来进行无穷范数归一化
dst = np.zeros(gray.shape, dtype=np.float32)
cv2.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv2.NORM_INF)
# 归一化后最大值就是1,所以也是*255
cv2.imshow("NORM_INF", np.uint8(dst*255))# NORM_L1,1范数,每个值除以它们的和来进行归一化
dst = np.zeros(gray.shape, dtype=np.float32)
cv2.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv2.NORM_L1)
# 归一化后范围是 0~1,但最大值不是1,所以这里乘以一个足够大的数,你也可以取其它值,不一定是下面这个数。注意到 np.uint8 的最大值是255,因此 re-scale 的范围也是 0~255
cv2.imshow("NORM_L1", np.uint8(dst*20000000))# NORM_L2,2范数,每个值除以该向量的模长,归一化为单位向量
dst = np.zeros(gray.shape, dtype=np.float32)
cv2.normalize(gray, dst=dst, alpha=1.0, beta=0, norm_type=cv2.NORM_L2)
# 与NORM_L1类似
cv2.imshow("NORM_L2", np.uint8(dst*30000))cv2.waitKey(0)
cv2.destroyAllWindows()
更多 OpenCV
教程请访问我的知识星球,每日更新
OpenCV中的归一化相关推荐
- OpenCV中直方图反向投影算法详解与实现
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自:opencv学堂 一:直方图交叉 OpenCV中直方图反向 ...
- 在OpenCV中基于深度学习的边缘检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:AI算法与图像处理 导读 分析了Canny的优劣,并给出 ...
- 图像滤波与OpenCV中的图像平滑处理
.About图像滤波 频率:可以这样理解图像频率,图像中灰度的分布构成一幅图像的纹理.图像的不同本质上是灰度分布规律的不同.但是诸如"蓝色天空"样的图像有着大面积近似的灰度强度,而 ...
- 在OpenCV中利用卷积进行图像滤波
简 介: 本文首先讨论了卷积核的概念,以及如何用于对图像进行滤波.然后通过他们对图像进行数学运算来实现特定的效果,比如平和和锐化.展示了如何在OpenCV中实现2D滤波. 在等同卷积卷积核之后,我们创 ...
- OpenCV中颜色分布直方图及其应用
1.图像直方图 直方图是对数据的集合 统计,并将统计结果分布于一系列预定义的 bins 中.这里的 数据 不仅仅指的是颜色灰度值 , 统计数据可能是任何能有效描述图像的特征(如梯度.方向等).特别地, ...
- opencv 中 快速傅里叶变换 FFT
opencv 中 傅里叶变换 FFT,代码如下: void fft2(IplImage *src, IplImage *dst) { //实部.虚部IplImage *image_Re = 0, *i ...
- 【转】PCA算法学习_1(OpenCV中PCA实现人脸降维)
前言: PCA是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的.本文通过使用PCA来提取人脸中的特征脸这个例子,来熟悉下在oepncv中怎样使用PCA这个类. ...
- OpenCV 中的图像处理 004_平滑图像
本文主要内容来自于 OpenCV-Python 教程 的 OpenCV 中的图像处理 部分,这部分的全部主要内容如下: 改变色彩空间 学习在不同色彩空间之间改变图像.另外学习跟踪视频中的彩色对象. 图 ...
- OpenCV中的模板匹配/Filter2d
1.模板匹配 模板匹配是在图像中寻找目标的方法之一.Come On, Boy.我们一起来看看模板匹配到底是怎么回事. 参考链接:http://www.opencv.org.cn/opencvdoc/2 ...
最新文章
- 2019智能手表推荐_智能手表一定越贵越好?试用过后这五款才真正值得推荐
- mysql 多个if_mysql if else 多条件
- python怎么读取txt文件第二行-Python:如何选择文本文件的第一行,以及第二行……?...
- ubtunu打开firefox_如何在Firefox(在Lubuntu中)中打开“apt”链接?
- MiningZhiDaoQACorpus,580万百度知道问题,980万问答对数据挖掘项目
- linux vim 到底,真的有(很多)linux大牛用vim写项目吗?
- 我的QT5学习之路(目录)
- Java异常处理之InvocationTargetException(反射异常)
- c ++ 继承_了解C ++中的继承概念
- 【Codeforces576E_CF576E】Painting Edges(可撤销并查集+线段树分治)
- C++中 (n1)和(1n) 分别表示什么意思?
- Linux中的readelf命令
- 动易 转 html5,动易2005版系统默认风格及修改方法
- 【算法/C语言】01背包问题(动态规划DP)
- Oracle 分组求和(特殊处理)
- 远程windows蓝屏解决办法
- mysql报1114错误_mysql插入数据出现error1114 table is full
- layui select(下拉框)修改事件监听
- win7与linux切换,Windows 7停更后不想用Win10?教你直接换上Linux再战
- 启动计算机时听到嘀嘀声,为何电脑开机时会有滴滴的声音?