15.指数-导数与微分-2阶指数-矢量-归一化-欧几里得-对数-象限(数学篇)---OpenCV从零开始到图像(人脸 + 物体)识别系列

15.指数-导数与微分-2阶指数-矢量-归一化-欧几里得-对数-象限(数学篇)—OpenCV从零开始到图像(人脸 + 物体)识别系列


本文作者:小嗷

微信公众号:aoxiaoji

简书链接:https://www.jianshu.com/u/45da1fbce7d0


1.前言

1.前言内容

2. 简介及用途

2.1 指数

指数是幂运算aⁿ(a≠0)中的一个参数,a为底数,n为指数,指数位于底数的右上角,幂运算表示指数个底数相乘。当n是一个正整数,aⁿ表示n个a连乘。当n=0时,aⁿ=1。

2.指数

指数的API函数:exp - 第138页(opencv2refman.pdf)

3.指数API

大概意思就是计算每个数组元素的指数。

用途:伽马变换可以根据γ值的不同来选择性的增强低灰度或者高灰度区域的对比度。

gamma变换。Gamma变换有常被称为指数变换或幂变换,是一种常用的非线性变换。它的变换函数如下

Y = (X + esp)γ

4.加码变换

伽马变换可以的话,今天写完。不可以就下次写

2.2 导数与微分

导数平面(1元)图上,我们可以理解为斜率,切线。3维(2元)就是我们的世界,就是一个切面.

就说最简单的一元情况下,导数是一个确定的数值,几何意义是切线斜率,物理意义是瞬时速度。而微分是一个函数表达式,用于自变量产生微小变化时计算因变量的近似值。

下面导数字段转载自知乎:马同学(小嗷在他基础上改改加加)

先简短地回答下我对“什么是导数”的认识:导数是用来找到“线性近似”的数学工具。

下面我来解释一下,为什么我是这样认为的。

在我学习微积分的过程中,我对导数的认知经历了三次变化:

  1. 导数是变化率、是切线的斜率、是速度、是加速度
  2. 导数是用来找到“线性近似”的数学工具
  3. 导数是线性变换

我认为第一种认知比较片面,在多元函数的情况下甚至是错误的。第二种认知更接近微积分的本质,第三种认知是为了实现第二种认知发展出来的。

因为种种原因,我们的学习都是从第一种认知开始的。我会在本文分别介绍一下这三种认知。最后会通过第三种认知回答“多元微积分中,可微函数的切线为什么会共面(此平面即切平面)?”

1 导数是变化率、是切线的斜率、是速度、是加速度

因为牛顿研究物理的缘故,所以牛顿用变化率的方式引入了导数(牛顿称之为“流数”)。

在物理里面变化率还是很自然的概念,比如为了求瞬时速度:

5.瞬时速度

6.瞬时速度1

7.瞬时速度2

我们一般是上面这样的学习过程,所以我们认为,导数是曲线的变化率、是瞬时速度、是加速度,还可以是切线的斜率。

简单函数

7.1 函数公式

把导数看作是变化率、是切线的斜率,在一元函数的时候是正确的。二元变化就不一样。

在二元函数中,比如这样一个曲面上的一点a:

8.切面

在曲面上可以做无数条过a点的曲线(图上随便画了三根):

9.切面1

9.切面2

把导数看作是变化率、是切线的斜率,在多元函数中是片面的,甚至是不正确的。

我们必须要重新审视“导数是什么”这个问题。

2 导数是用来找到“线性近似”的数学工具

讲这个之前,我们要先理解微积分的基本思想。这个思想在我的很多回答中都提到了,这里简单的阐述下。

2.1 微积分的基本思想

微积分的基本思想是“以直代曲”:

10.积分

“以直代曲”的意思就是,切线可以在切点附近很好的近似曲线:

11.积分1

我觉得下面这幅图也挺有意思,如果在曲线上多选几个点,都作出附近的切线,我们可以透过切线看到曲线的轮廓:

11.积分2

这里我希望给你一个直观印象,切线可以在切点附近很好的近似曲线。如果仔细看泰勒公式、洛必达法则等,还会通过代数发现这一事实。(泰勒公式、洛必达法则,往后图像识别会用到)

2.2 导数是用来找到“线性近似”的数学工具

因为“以直代曲”是微积分的基础,所以我们首要任务就是要找到这个“直”,也就是切线,也就是所谓的“线性近似”。导数就是为了完成这个任务需要使用的数学工具。

我们来看看,在一元函数中:

11.积分3

因此,在一元函数中,我们把导数看作斜率,可以找到我们想要的“线性近似”(切线),但是在二元中,我们需要新的技术手段。

3 导数是线性变换

3.1 二元函数的“线性近似”

导数最主要的目的是找到“线性近似”,在一元函数的时候是要找到切线,在二元函数的时候是要找到一个切平面

11.积分4

一个平面是没有斜率的概念的,因此我们不能把导数继续看作斜率了,我们需要别的方法来找到这个切平面。

3.2 线性变换

对线性代数不熟悉的话,可以先看下我之前的回答 什么是仿射变换? 。下面就会用到大量的线性代数基础知识,我不再进行解释了。

(线性代数,我先拿个本本记住,以后再说。以后,会有一篇专门讲仿射变换。)

等不及的小伙伴,其实可以自行看

麻省理工公开课:线性代数一共35集

http://open.163.com/special/opencourse/daishu.html

12.线性代数

如马尔可夫矩阵;.傅立叶级数 ,如:马尔可夫,在深度学习中,即AI,有个关于马尔可夫链的东东,慢慢来吧,我们一起一层一层皮剥开它。有机会,我在写个麻省理工公开课的每一集读后感

外国老师讲课的厉害在于让你能听懂让你觉得自己挺有希望的,中国老师讲课的厉害在于让你听不懂然后开始怀疑自己的智商问题。

还是从一元的时候开始推:

11.积分5

(向量也是建议开公开课)

11.积分6

上图的11.x7指向右边,实际上求出的A是右导数,我换个方向就可以求出左导数:

11.积分7

如果A=B,相当于左右导数相等,我们就称为此点可导。

顺便说一句,此时在 a 点附近同样也有11.x8.PNG

二元函数的时候,11.x7有无数的方向(不像一元的时候只有左右两边):

11.积分8

我们把这些11.x7分别记为 11.x9 ,那它们的切线分别为:

11.x10

导数分别就是 11.x11(可以理解这些都是方向导数)。

导数:如果有11.x12那么此点可导,此点导数即为A。

为什么A就是导数?A不是还没有完成找到切平面的任务吗?

3.3 通过导数A来找到切平面

首先,所有的11.x7肯定是共面的:

11.积分9

因为此点可导,即所有的11.x7的导数都是A,所以变换后的结果也共面(线性变换的特点是,变换前是共面的,变换后也是共面的):

11.积分10

看看吧(可以旋转视角来观察):

11.积分11

对所有的11.x13的都进行 A 变换,实际上就得到了切平面:

11.积分12

至此,导数完成了找到“线性近似”的任务。这里也很自然的回答了“多元微积分中,可微函数的切线为什么会共面(此平面即切平面)?”

注意,有一点需要特别说明的是,因为矢量的起始点要求是在原点,但是我上面把起始点放在a点了,所以实际上是仿射变化,所以实际上11.13,A 仍然是导数。

用途:仿射变换

13.仿射变换

(导数、向量、微分以后会经常用到。导数平面(1元)图上,我们可以理解为斜率,切线。3维(2元)就是我们的世界,就是一个切面.)

2.3 二阶指数

一阶导数的导数称为二阶导数,就是导数再求导数
简单函数

7.1 函数公式

2.4 矢量,即向量

矢量(vector)是一种既有大小又有方向的量,又称为向量。一般来说,在物理学中称作矢量,例如速度、加速度、力等等就是这样的量。舍弃实际含义,就抽象为数学中的概念──向量。在计算机中,矢量图可以无限放大永不变形。

14.矢量

具体请转移到

http://open.163.com/special/opencourse/daishu.html

2.5 归一化

归一化就是把要处理的量都缩放到一个范围。即:规范化数组的规范或值范围。

归一化处理很简单,假设原图像是8位灰度图像,那么读入的像素矩阵最大值为256,最小值为1

定义矩阵为I ,J=I/256,就是归一化的图像矩阵,就是说归一化之后所有的像素值都在[0,1]区间内 。opencv里有专门的函数做归一化处理

2.6 normalize(归一化)

  1. 函数原型:void cv::normalize(InputArry src,InputOutputArray dst,double alpha=1,double beta=0,int norm_type=NORM_L2,int dtype=-1,InputArray mark=noArry())
  2. 函数作用
    归一化数据。该函数分为范围归一化与数据值归一化。(Normalizes the norm or value range of an array.)

  3. 参数说明

    src               输入数组;
    dst               输出数组,数组的大小和原数组一致;
    alpha           1,用来规范值,2.规范范围,并且是下限;
    beta             只用来规范范围并且是上限;
    norm_type   归一化选择的数学公式类型;
    dtype           当为负,输出在大小深度通道数都等于输入,当为正,输出只在深度与输如不同,不同的地方游dtype决定;
    mark            掩码。选择感兴趣区域,选定后只能对该区域进行操作。
    
  4. 归一化选择的数学公式类型介绍(norm_type)

设数组中原有{A1,A2,A3…An}

NORM_L1:NORM_L1:

NORM_INF:16.NORM_INF

NORM_L2:17.NORM_L2

NORM_MINMAX:(AK不属于{max(Ai)},min(Ai),当AK等于max(Ai)时p=1,等于min(Ai)时p=0)

18.NORM_MINMAX

5.举例说明:

src={10,23,71}

NORM_L1运算后得到 dst={0.096,0.221,0.683}

NORM_INF运算后得到 dst={0.141,0.324,1}

NORM_L2运算后得到 dst={0.133,0.307,0.947}

NORM_MINMAX运算得到 dst={0,0.377,1}

6.范围归一化与值归一化的区别

区别一:范围归一化使用的是如下式子,设范围为【0,255】

19.范围归一化使用的是如下式子

即把src缩放到【0,255】这个范围内,并不使用上面的4个公式去解。

区别二:使用范围归一化时,beta必有值不等于0

举例说明:

一 值归一化:
#include<opencv2/opencv.hpp>  
#include<iostream>  

using namespace std;  

int main()  
{  
    vector<double>a={ 10,11,234,45,65,456,0 };  
    cv::normalize(a, a, 1,0, cv::NORM_MINMAX);  
    for (int i=0;i < a.size();i++)  
    {  
        cout << a[i] << endl;  
    }  
    return 0;  
}  

结果如下:

20.效果图1

二 范围归一化
#include<opencv2/opencv.hpp>  
#include<iostream>  

using namespace std;  

int main()  
{  
    vector<double>a={ 10,11,234,45,65,456,0 };  
    cv::normalize(a, a, 0,255, cv::NORM_MINMAX);  
    for (int i=0;i < a.size();i++)  
    {  
        cout << a[i] << endl;  
    }  
    return 0;  
}  

结果如下:

20.效果图2

查opencv2refman.pdf第151页

(加公众号输入opencv2refman.pdf,自动跳出百度分享,或者上几篇文章,有写地址)

21.第151页

2.7 欧几里得之欧氏距离

欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。

二维空间的公式:

22.二维空间的公式

三维空间的公式:

23.三维空间的公式

n维空间的公式

n维欧氏空间是一个点集,它的每个点 X 或向量 x 可以表示为 (x[1],x[2],…,x[n]) ,其中 x[i](i = 1,2,…,n) 是实数,称为 X 的第i个坐标。

两个点 A = (a[1],a[2],…,a[n]) 和 B = (b[1],b[2],…,b[n]) 之间的距离 ρ(A,B) 定义为下面的公式:

ρ(A,B) =√ [ ∑( a[i] - b[i] )^2 ] (i = 1,2,…,n)
向量 x = (x[1],x[2],…,x[n]) 的自然长度 |x| 定义为下面的公式:
|x| = √( x[1]^2 + x[2]^2 + … + x[n]^2 )

2.8 什么是欧几里得几何学?

研究直线和二次曲线(即圆锥曲线, 就是椭圆、双曲线和抛物线)的几何结构和度量性质(面积、长度、角度)。理解为主,以后大把机会用到

http://open.163.com/special/Khan/euclideangeometry.html

用途:两个特征向量之间的欧氏距离,越小表明匹配度越高。

24.欧氏距离

2.9 对数

在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然。 这意味着一个数字的对数是必须产生另一个固定数字(基数)的指数。 在简单的情况下,乘数中的对数计数因子。更一般来说,乘幂允许将任何正实数提高到任何实际功率,总是产生正的结果,因此可以对于b不等于1的任何两个正实数b和x计算对数。

如果a的x次方等于N(a>0,且a不等于1),那么数x叫做以a为底N的对数(logarithm),记作x=logaN。其中,a叫做对数的底数,N叫做真数。

25.对数

2.10 象限

象限(Quadrant)是平面直角坐标系(笛卡尔坐标系)中里的横轴和纵轴所划分的四个区域,每一个区域叫做一个象限。象限以原点为中心,x,y轴为分界线。右上的称为第一象限,左上的称为第二象限,左下的称为第三象限,右下的称为第四象限。坐标轴上的点不属于任何象限。

26.象限

28.总结与感想.png

  1. 本人是抱着玩一玩的心态,学习opencv(其实深度学习没有外界说的这么高深,小嗷是白板,而且有工作在身并且于代码无关)
  2. 大家可以把我的数学水平想象成初中水平,毕竟小嗷既不是代码靠吃饭又不是靠数学吃饭,毕业N年
  3. 写文章主要是为了后人少走点弯路,多交点朋友,一起学习
  4. 如果有好的图像识别群拉我进去QQ:631821577
  5. 就我一个白板,最后还是成的,你们别怕,慢慢来把

7.二维码

分享可以无数次,转载成自己文章QQ邮箱通知一下,未经授权请勿转载。

  • 邮箱:631821577@qq.com
  • QQ群:736854977
  • 有什么疑问公众号提问,下班或者周六日回答,ths

我当初学到傅里叶的时候,就知道下面是深坑。小嗷蹲在坑上,手里拿着一根薯条,看看坑下的无底洞,沉思一阵子正想转身离开。结果,脚滑了掉进去….

最后,数学还是要学习一下。如果想走这条路。

推荐文章:

14.图像增强与图像去噪,图像分割之边缘检测(傅里叶变换)— OpenCV从零开始到图像(人脸 + 物体)识别系列

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值