一、二元函数的泰勒展开

二元函数f(x,y)f(x,y)f(x,y)在某一点(x0,y0)(x_0,y_0)(x0​,y0​)的泰勒展开可以理解为f(x,y)f(x,y)f(x,y)在这一点的函数值f(x0,y0)f(x_0,y_0)f(x0​,y0​)加上(x0,y0)(x_0,y_0)(x0​,y0​)点的全微分dfdfdf,再加上一个无穷小o(ρ)o(\rho)o(ρ)。
f(x,y)=f(x0,y0)+df+o(ρ)f(x,y)=f(x_0,y_0)+df+o(\rho)f(x,y)=f(x0​,y0​)+df+o(ρ)
其中 df+o(ρ)=fxdx+fydy+12fxxdx2+12fxydxdy+12fyxdxdy+12fyydy2+⋯df+o(\rho)=f_x dx + f_y dy + \frac{1}{2}f_{xx} dx^2 + \frac{1}{2}f_{xy} dx dy + \frac{1}{2}f_{yx} dx dy + \frac{1}{2}f_{yy} dy^2 + \cdotsdf+o(ρ)=fx​dx+fy​dy+21​fxx​dx2+21​fxy​dxdy+21​fyx​dxdy+21​fyy​dy2+⋯
则f(x,y)=f(x0,y0)+fxdx+fydy+12fxxdx2+12fxydxdy+12fyxdxdy+12fyydy2+⋯f(x,y)=f(x_0,y_0)+f_x dx + f_y dy + \frac{1}{2}f_{xx} dx^2 + \frac{1}{2}f_{xy} dx dy + \frac{1}{2}f_{yx} dx dy + \frac{1}{2}f_{yy} dy^2 + \cdotsf(x,y)=f(x0​,y0​)+fx​dx+fy​dy+21​fxx​dx2+21​fxy​dxdy+21​fyx​dxdy+21​fyy​dy2+⋯
为f(x,y)f(x,y)f(x,y)在(x0,y0)(x_0,y_0)(x0​,y0​)的泰勒展开。

二、Hessian 矩阵

上面展开式中的二阶偏导函数可以组合成为一个矩阵,如下
Hf(x,y)=[fxx(x,y)fyx(x,y)fxy(x,y)fyy(x,y)]Hf(x,y)=\begin{bmatrix}f_{xx}(x,y)&f_{yx}(x,y)\\f_{xy}(x,y)&f_{yy}(x,y)\\ \end{bmatrix} Hf(x,y)=[fxx​(x,y)fxy​(x,y)​fyx​(x,y)fyy​(x,y)​]
Hf(x,y)Hf(x,y)Hf(x,y)被称之为Hessian 矩阵, 它并不是一个普通的矩阵,而是一个由偏导函数构成的矩阵。也就是说,HfHfHf的具体取值只有在给定变量值(x,y)(x,y)(x,y)时才能得到。
那么构造这个矩阵的意义何在呢?
这个矩阵其实代表了这个二元函数的二阶导数,几何意义上代表了二元函数的曲率。
怎么理解二阶导数代表二元函数的曲率呢?降维到一元函数来理解就好了。
一元函数的一阶导数衡量梯度,二阶导数衡量曲率。
例如,当 f′′(x)<0f^{′′}(x)<0f′′(x)<0, f(x)f(x)f(x) 往上弯曲;当 f′′(x)>0f^{′′}(x)>0f′′(x)>0时,f(x)f(x)f(x) 往下弯曲,f′′(x)f^{′′}(x)f′′(x)的绝对值越大,弯曲程度也就越大,故可以用来衡量曲线的曲率。
一个单变量函数的二阶导数如下图所示。

三、Hessian 矩阵的特征值

在几何上,二次元函数其实代表了一个曲面,而曲面的主曲率又包含最大曲率和最小曲率,那么Hessian 矩阵又是怎样表示这两个曲率的呢?
答案就是通过它的特征值和特征向量。最大特征值和其对应的特征向量对应其邻域二维曲线最大曲率的强度和方向,即山坡陡的那面;最小特征值对应其邻域二维曲线最小曲率的强度和方向,即平缓的方向。
(关于特征值和特征向量的理解:从线性空间的角度看,在一个定义了内积的线性空间里,对一个N阶对称方阵进行特征分解,就是产生了该空间的N个标准正交基,然后把矩阵投影到这N个基上。N个特征向量就是N个标准正交基,而特征值的模则代表矩阵在每个基上的投影长度。)

四、应用Hessian 矩阵检测图片边缘

在图片特征点的边缘消除中,往往会用的Hessian矩阵。
在曲面横跨边缘的地方会同时具有较大的最大主曲率和有较小的最小主曲率。
给定一张图片的Hessian 矩阵如下
H(x,y)=[Ixx(x,y)Ixy(x,y)Ixy(x,y)Iyy(x,y)]H(x,y) = \begin{bmatrix}I_{xx}(x,y) & I_{xy}(x,y)\\ I_{xy}(x,y) &I_{yy}(x,y) \end{bmatrix} H(x,y)=[Ixx​(x,y)Ixy​(x,y)​Ixy​(x,y)Iyy​(x,y)​]
矩阵里面的每一项可以通过求取邻近点像素的差分得到。令α=λmaxα=λ_{max}α=λmax​为最大的特征值(最大主曲率),β=λminβ=λ_{min}β=λmin​为最小的特征值(最小主曲率),如果γ\gammaγ为最大特征值与最小特征值之间的比例,那么α=γβ\alpha = \gamma \betaα=γβ,则γ\gammaγ越大越接近于边界上的点。
我们不想去求具体的α和β\alpha\text{和}\betaα和β来得到γ\gammaγ,而是用H 矩阵的迹和行列式去代表γ\gammaγ。

则H 矩阵的迹和行列式分别为:
Tr(H)=Ixx+Iyy=α+βTr(H) = I_{xx}+I_{yy} = \alpha +\beta Tr(H)=Ixx​+Iyy​=α+β
Det(H)=IxxIyy−(Ixy)2=αβDet(H) = I_{xx}I_{yy}-(I_{xy})^2=\alpha \beta Det(H)=Ixx​Iyy​−(Ixy​)2=αβ
这样便有组合式
T=Tr(H)2Det(H)=(α+β)2αβ=(γ+1)2γT=\frac{Tr(H)^2}{Det(H)} = \frac{(\alpha+\beta)^2}{\alpha\beta} = \frac{(\gamma+1)^2}{\gamma} T=Det(H)Tr(H)2​=αβ(α+β)2​=γ(γ+1)2​
上式中,当两个特征值相等时, T的值最小,随着γ\gammaγ的增加,T的值也随之不断增大,也就是说T和γ\gammaγ是同单调的,可以代表γ\gammaγ。

所以我们要过滤掉这些边缘上的点,在Lowe的文章中,实验给出γ\gammaγ的上限阈值为10。所以T的最大值应该为 12.1,每个待过滤的特征点分别计算组合T,只要T>12.1的就需要被过滤掉。

从二元函数的泰勒展开到应用Hessian矩阵检测边缘相关推荐

  1. 多元函数泰勒级数展开_二元函数的泰勒展开二元函数的泰勒展开.pdf

    二元函数的泰勒展开二元函数的泰勒展开 第八章 * 第九节 二元函数的泰勒公式 一.二元函数泰勒公式 二.极值充分条件的证明 一.二元函数的泰勒公式 一元函数(f )x 的泰勒公式: ′ (f ′′)x ...

  2. matlab泰勒二维展开,matlab-自控原理 taylor 泰勒展开 一、二元函数

    matlab : R2018a 64bit OS : Windows 10 x64 typesetting : Markdown blog : my.oschina.net/zhichengjiu 一 ...

  3. python二元函数求导_用Excel和python实现二元函数梯度下降的人工智能,之用,excel,一元...

    梯度下降法和牛顿法的总结与比较 机器学习的本质是建立优化模型,通过优化方法,不断迭代参数向量,找到使目标函数最优的参数向量.最终建立模型 通常用到的优化方法:梯度下降方法.牛顿法.拟牛顿法等.这些优化 ...

  4. 二元函数泰勒公式例题_考研数一对二元函数的二阶泰勒公式的要求是了解,那我们要了解到什么程度呢?会出那种类型的题呢?...

    展开全部 二阶泰勒来公式不需要很32313133353236313431303231363533e78988e69d8331333433626531深的了解,基本上是考不到的,从97到11年的真题来看 ...

  5. python 画三维函数图-Python之Numpy:二元函数绘制/三维数据可视化/3D

    意义 在机器学习任务中选择计算模型或者学习数学时,可视化有助于研究函数值的变化趋势(观察收敛.分布.几何形状等),带来直观的感受. 源码 # 绘制二元函数 # 参考文献 # + python画二元函数 ...

  6. MAT之PSO:利用PSO算法优化二元函数,寻找最优个体适应度

    MAT之PSO:利用PSO算法优化二元函数,寻找最优个体适应度 目录 实现结果 设计代码 实现结果 设计代码 figure [x,y] = meshgrid(-5:0.1:5,-5:0.1:5); z ...

  7. 遗传算法求二元函数极值怎么编码_遗传算法求解一元函数二元函数最值

    ##--------------------------施工中----------------------------## import random import math import numpy ...

  8. 二元函数泰勒公式例题_高等数学入门——二元函数可微性的判断方法总结

    系列简介:这个系列文章讲解高等数学的基础内容,注重学习方法的培养,对初学者不易理解的问题往往会不惜笔墨加以解释.在内容选取上,以国内的经典教材"同济版高等数学"为蓝本,并对具体内容 ...

  9. python 二元函数绘制_Python绘制二元函数曲面

    微实践:绘制二元函数曲面 我们将演示如何借助于ufunc的广播运算计算下述二元函数的在一个xy平面上的值并将其绘制成3D曲面.其中,x和y的取值范围均为[-2,+2]. 为了达到目的,我们需要一个二维 ...

  10. python多元函数求极小值_使用遗传算法求二元函数的最小值

    二元函数为y=x1^2+x2^2,x∈[-5,5] NIND=121; %初始种群的个数(Number of individuals) NVAR=2; %一个染色体(个体)有多少基因 PRECI=20 ...

最新文章

  1. linux的挂载命令
  2. [转]MFC下关于“建立空文档失败”问题的分析
  3. LuoGuP4721:【模板】分治 FFT
  4. 转:C# 线程同步技术 Monitor 和Lock
  5. oc 经常用到弹出view的方法
  6. makefile工作笔记0001---认识使用makefile
  7. Pandas——Series与DataFrame
  8. 初学Power bi项目财务与人力/利润表/人员结构-刘刘的第一篇学习记录文章
  9. bak 服务器备份文件怎么恢复,bak文件怎么还原
  10. 计步算法 睡眠 心率 学习 PPG传感器(转))
  11. 井字棋游戏 Matlab
  12. 从0开始使用Git:Win10下使用Git配置并关联Gitbub远程仓库全教程与踩坑分析
  13. html元素的默认样式,CSS重置,常见元素的默认样式
  14. golang生成随机数
  15. 什么是USBHOST、USB Slave和USB OTG?它们之间有什么区别 USB、MiniUSB、MicroUSB
  16. gamemaker学习笔记:打包Android过程记录
  17. 盘点为下个牛市做准备的10个新Layer1
  18. Multi-Faceted Distillation of Base-Novel Commonality for Few-shot Object Detection
  19. A Game of Thrones(45)
  20. 从“范跑跑”和“郭跳跳”看网络事件传播规律

热门文章

  1. linux下原始套接字编程错误:Operation not supported
  2. C1WebChart 图形化处理。
  3. 22_粗粒度权限控制
  4. Luogu4114 Qtree1
  5. tree 命令以树状图列出目录的内容
  6. jq 改数组的k值_在JSON jq中修改键值数组
  7. word表格内插入某月某日星期几_Word文字技巧—如何在Word中自动生成日历
  8. 包括8个html的网页设计作品,8个超棒的HTML5网站设计欣赏
  9. stm32f adc matlab 串口,基于Matlab和串口通信的ADC动态性能FFT测试法
  10. java课程设计文档_Java课程设计-文档相似性检查系统(完整)测试版