该文章内容主要来自于http://www.bubuko.com/infodetail-705559.html

1. 归一化定义与作用

归一化就是要把需要处理的数据经过处理后(通过某种算法)限制在你需要的一定范围内。

首先归一化是为了后面数据处理的方便,其次是保证程序运行时收敛加快。归一化的具体作用是归纳统一样本的统计分布性。归一化在0-1之间是统计的概率分布,归一化在某个区间上是统计的坐标分布。归一化有同一、统一和合一的意思。

归一化的目的,是使得没有可比性的数据变得具有可比性,同时又保持相比较的两个数据之间的相对关系,如大小关系;或是为了作图,原来很难在一张图上作出来,归一化后就可以很方便的给出图上的相对位置等。

在使用机器学习算法的数据预处理阶段,归一化也是非常重要的一个步骤。例如在应用SVM之前,缩放是非常重要的。Sarle的神经网络FAQ的第二部分(1997)阐述了缩放的重要性,大多数注意事项也适用于SVM。缩放的最主要优点是能够避免大数值区间的属性过分支配了小数值区间的属性。另一个优点能避免计算过程中数值复杂度。因为关键值通常依赖特征向量的内积(inner products),例如,线性核和多项式核力,属性的大数值可能会导致数值问题。我们推荐将每个属性线性缩放到区间[-1,+1]或者[0, 1]。

当然,我们必须使用同样的方法缩放训练数据和测试数据。例如,假设我们把训练数据的第一个属性从[-10,+10]缩放到[-1, +1],那么如果测试数据的第一个属性属于区间[-11, +8],我们必须将测试数据转变成[-1.1, +0.8]。

参考:“SVM:从理论到OpenCV实践” 4.2 归一化数据:

http://blog.csdn.net/zhazhiqiang/article/details/20146243

2. normalize 函数介绍

函数原型:

void normalize(InputArray src,OutputArray dst, double alpha=1, doublebeta=0, int norm_type=NORM_L2, int dtype=-1, InputArray mask=noArray() )

该函数归一化输入数组使它的范数或者数值范围在一定的范围内。

Parameters:

src  输入数组

dst 输出数组,支持原地运算

alpha

range normalization模式的最小值

beta

range normalization模式的最大值,不用于norm normalization(范数归一化)模式。

normType

归一化的类型,可以有以下的取值:

NORM_MINMAX:数组的数值被平移或缩放到一个指定的范围,线性归一化,一般较常用。

NORM_INF: 此类型的定义没有查到,根据OpenCV 1的对应项,可能是归一化数组的C-范数(绝对值的最大值)

NORM_L1 :  归一化数组的L1-范数(绝对值的和)

NORM_L2: 归一化数组的(欧几里德)L2-范数

dtype

dtype为负数时,输出数组的type与输入数组的type相同;

否则,输出数组与输入数组只是通道数相同,而tpye=CV_MAT_DEPTH(dtype).

mask

操作掩膜,用于指示函数是否仅仅对指定的元素进行操作。

3.归一化公式:

1、线性函数转换,表达式如下:(对应NORM_MINMAX)

ifmask(i,j)!=0

dst(i,j)=(src(i,j)-min(src))*(b‘-a‘)/(max(src)-min(src))+ a‘

else

dst(i,j)=src(i,j)

其中b‘=MAX(a,b), a‘=MIN(a,b);

2. 当norm_type!=CV_MINMAX:

ifmask(i,j)!=0

dst(i,j)=src(i,j)*a/norm (src,norm_type,mask)

else

dst(i,j)=src(i,j)

其中,函数norm的功能是计算norm(范数)的绝对值

Thefunctions norm calculate an absolute norm of src1 (when there is no src2 ):

OpenCV2中矩阵的归一化 normalize函数详解相关推荐

  1. OpenCV中矩阵的归一化*(Normalize函数)

    图像处理中,图片像素点单通道值一般是[0-255]的unsigned char类型,将其转化到[0,1]之间,更方便计算,这就需要用到矩阵的归一化运算. 今天,写程序中需要对某矩阵归一化,用OpenC ...

  2. python中zip的使用_浅谈Python中的zip()与*zip()函数详解

    前言 1.实验环境: Python 3.6: 2.示例代码地址:下载示例: 3.本文中元素是指列表.元组.字典等集合类数据类型中的下一级项目(可能是单个元素或嵌套列表). zip(*iterables ...

  3. python中transpose函数_对numpy中的transpose和swapaxes函数详解

    transpose() 这个函数如果括号内不带参数,就相当于转置,和.T效果一样,而今天主要来讲解其带参数. 我们看如下一个numpy的数组: `arr=np.arange(16).reshape(( ...

  4. java里的进制转换函数_基于Java中进制的转换函数详解

    十进制转成十六进制: Integer.toHexString(int i) 十进制转成八进制 Integer.toOctalString(int i) 十进制转成二进制 Integer.toBinar ...

  5. 【转】angularjs指令中的compile与link函数详解

    这篇文章主要介绍了angularjs指令中的compile与link函数详解,本文同时诉大家complie,pre-link,post-link的用法与区别等内容,需要的朋友可以参考下 通常大家在使用 ...

  6. python中argparse模块关于 parse_args() 函数详解(全)

    目录 前言 1. 函数讲解 2. 基本用法 3. 实战讲解 前言 原理:命令行解析使用argparse包 作用:命令行传参赋值 可用在机器学习深度学习 或者 脚本运行等 了解这个函数需要了解其背后的原 ...

  7. angularjs指令中的compile与link函数详解

    通常大家在使用ng中的指令的时候,用的链接函数最多的是link属性,下面这篇文章将告诉大家complie,pre-link,post-link的用法与区别. angularjs里的指令非常神奇,允许你 ...

  8. matlab stem函数坐标轴_在MATLAB中可以设置坐标轴的函数详解

    1.绘制二维曲线的最基本函数plot 2.双纵坐标函数plotyy 3. 坐标控制 函数的调用格式为: axis([xmin xmax ymin ymax zmin zmax]) axis函数功能丰富 ...

  9. OpenGL的glPushMatrix和glPopMatrix矩阵栈顶操作函数详解

    OpenGL中图形绘制后,往往需要一系列的变换来达到用户的目的,而这种变换实现的原理是又通过矩阵进行操作的.opengl中的变换一般包括视图变换.模型变换.投影变换等,在每次变换后,opengl将会呈 ...

  10. Lua中的模块与module函数详解

    很快就要开始介绍Lua里的"面向对象"了,在此之前,我们先来了解一下Lua的模块. 1.编写一个简单的模块 Lua的模块是什么东西呢?通常我们可以理解为是一个table,这个tab ...

最新文章

  1. RedisClient 连接redis 提示 ERR Client sent AUTH, but no password is set
  2. 使用VC连接Access数据库的两种方法
  3. sql 判断分钟是偶数数据_使用SQL交换座位(奇偶数的用法)
  4. WPF:仿WIN7窗体打开关闭效果
  5. 目标检测比赛中的 trick
  6. 简单使用JDOM解析XML
  7. MySQL删除环境变量配置
  8. Openstack的nova-network的vlan模式扩展
  9. LeetCode——866.回文素数
  10. GTN-Graph Transformer Network 图变换网络 NeurIPS2019
  11. 怎么用鼠标选中java中table的某一行_为什么同事的工作效率那么高?学会这些鼠标双击技巧,你也可以的...
  12. 【华为OD机试真题 JS】事件推送
  13. java affinity_线程亲和性(Thread Affinity)
  14. 架构设计的深入思考与总结——概述
  15. 动态数据的表格页面展示
  16. SICP第一章:构造过程抽象(1.1)
  17. 如何用中文编程c++
  18. 支持OnVif协议的摄像头直播推流php
  19. Excel应用技巧:不规则合并单元格之批量填充序列
  20. 百度云实现语音识别及语音合成

热门文章

  1. [UML]UML系列——类图class的实现关系Realization
  2. Java基础语法总结(全)
  3. ubuntu13.10 归档管理器解压zip文件中文乱码问题的解决(亲测成功)
  4. Android Studio创建安卓虚拟机并测试app
  5. js高级学习笔记(b站尚硅谷)-15-闭包的剩余知识
  6. 还没有合并再请求pull_代码被revert,你pull了master代码没了咋找回来
  7. java编程思想txt下载_《JAVA编程思想》之第5章-初始化和清理
  8. 微型计算机工作最小时间单位,2010~2011学年第1学期微机原理2试卷A(答案)
  9. 货物与产品的区别_商品与产物的区别
  10. 判断两个时间段是否有交集_判断两个人是否处于暧昧关系,就看四点,特明显...