hession矩阵的计算与在图像中的应用
参考的一篇博客,文章地址:https://blog.csdn.net/lwzkiller/article/details/55050275
Hessian Matrix,它有着广泛的应用,如在牛顿方法、求极值以及边缘检测、消除边缘响应等方面的应用。一个Hessian Matrix涉及到很多数学相关的知识点,比如泰勒公式、极值判断、矩阵特征值及特征向量、二次型等。本篇文章,主要说明多元情况下的极值判定、hessian矩阵与二次型的联系以及有关hessian matrix在图像上的应用。
1. 二元函数泰勒公式
对于一元函数的泰勒公式,大家都有所了解,其意义是使用多次多项式来近似表达原函数f(x),一元函数的f(x)的泰勒公式如下:
在实际应用中,我们一般取前面几阶多项式的和来近似表达原函数f(x)。
然而,在图像处理中,我们应用的都是二元函数f(x,y),下面着重讲解下二元函数的泰勒公式:
如果在点
的某一邻域内连续且有到n+1阶的连续偏导数,
为此邻域的任意一点,则有
其中记号表示
,
表示
,
通用记号表示
人生苦短,关于这些公式这里就不证明了,大家可以参考相关数学资料进行证明。
2. 极值判断
如果对于函数中某一点其一阶导数为0,二阶导数不为0,那么该点必定为极值点。再进一步分析,如果二阶导数大于0,那么该点为极小值点,如果二阶导数小于0,那么该点为极大值点。关于这些性质的描述,最直观方法就是自己画图进行理解。另外可以通过表达式给予一些直观理解(省略后面的多阶余项),虽然表达式并非严格,比如,对于一元函数进行泰勒公式展开并认定完全相等:
针对凸函数,如果在x0处的一阶为0,二阶为正,那么我们就可以断定f(x)肯定比在x0处的函数值大,我们可以认为x0为极小值点。对于图像中的二元函数呢?我们是可以类推的。根据上述二元泰勒公式可得二阶近似表达式:
,对于二元函数极值情形,我们可以根据二阶表达式的正负进行判定。
对于这种情形,这里面会涉及到Hessian矩阵正定以及负定的判断,这里令,
,如果对于任意向量
,都有
为正,那么
有最小值,且H为正定的。如果对于任意向量
,都有
非负,那么
有最大值,且H为负定的。
3. 二次型的性质
可以发现上面矩阵H即为Hessian矩阵,具有对称性。而二次型的矩阵也是对称的,接下来主要介绍下二次型最优化,以一个具体例子进行说明。
最小化二次型函数,其中A是实对称二阶矩阵,即是hessian矩阵,
,对于该问题的优化很简单,最终该问题的结果与矩阵A的特征值相关。我们可以绘制二次型函数以及对应的等高线如下:
并且我们求得矩阵A的特征向量[-0.7071,0.7071],[0.7071,0.7071],对应的特征值分别为0.5,1.5
我们可以知道等高线越密集的地方,说明函数值变化较快,而这个函数变化最快的方向即是特征向量[0.7071,0.7071]所对应的方向;等高线越稀疏的地方,说明函数值变化较慢,而变化最慢的方向即是特征向量[-0.7071,0.7071]所对应的方向,并且可以观察矩阵特征值的大小与函数值变化程度有关,较大特征值所对应的特征向量方向上的函数值变化最快,较小特征值所对应的特征向量方向上的函数值变化最慢。
这里描述二次型的目的就是讲解Hessian矩阵的特征值以及特征向量与二次型函数值变化之间的关系。其中二次型函数的二阶偏导就构成了Hessian矩阵,也即是A矩阵。
4. 边缘检测以及边缘响应消除
既然检测到的对应点确认为边缘点,那么我们就有理由消除这个边缘点,所以边缘检测与边缘响应消除的应用是一回事。边缘到底有什么特征呢?如下图所示,一个二维平面上的一条直线,图像的特征具体可以描述为:沿着直线方向,亮度变化极小,垂直于直线方向,亮度由暗变亮,再由亮变暗,沿着这个方向,亮度变化很大。我们可以将边缘图像分布特征与二次型函数图形进行类比,是不是发现很相似,我们可以找到两个方向,一个方向图像梯度变化最慢,另一个方向图像梯度变化最快。那么图像中的边缘特征就与二次型函数的图像对应起来了,其实二次型函数中的hessian矩阵,也是通过对二次型函数进行二阶偏导得到的(可以自己求偏导测试下),这就是我们为什么可以使用hessian矩阵来对边缘进行检测以及进行边缘响应消除,我想大家应该明白其中的缘由了。还是那句话,数学模型其实就是一种反映图像特征的模型。
所以Hessian matrix实际上就是多变量情形下的二阶导数,他描述了各方向上灰度梯度变化,这句话应该很好理解了吧。我们在使用对应点的hessian矩阵求取的特征向量以及对应的特征值,较大特征值所对应的特征向量是垂直于直线的,较小特征值对应的特征向量是沿着直线方向的。对于SIFT算法中的边缘响应的消除可以根据hessian矩阵进行判定。
关于hessian的应用基本讲完了,有问题可以留言讨论。
参考文献:
1.https://www.zhihu.com/question/40181086
2.https://zh.wikipedia.org/wiki/%E6%B5%B7%E6%A3%AE%E7%9F%A9%E9%98%B5
3.http://www.zhihujingxuan.com/18143.html
4.http://blog.sina.cn/dpool/blog/s/blog_5d2990b70101c1pc.html
5.http://blog.sina.com.cn/s/blog_790bb71901015087.html
6.http://painterlin.com/2015/09/12/Intuition-of-Eigen-Value.html
hession矩阵的计算与在图像中的应用的更多相关文章
- OpenCV,计算两幅图像的单应矩阵
平面射影变换是关于其次3维矢量的一种线性变换,可以使用一个非奇异的$3 \times 3$矩阵H表示,$X' = HX$,射影变换也叫做单应(Homography).计算出两幅图像之间的单应矩阵H,那 ...
- OpenGL中摄像机矩阵的计算原理
熟悉OpenGL|ES的朋友,可能会经常设置摄像机的view矩阵,iOS中相对较好,已经封装了方向,只需要设置摄像机位置,目标点位置以及UP向量即可.下面先介绍下摄像机view矩阵的计算原理.此处假设 ...
- Matlab实现Hough变换检測图像中的直线
Hough变换的原理: 将图像从图像空间变换至參数空间.变换公式例如以下: 变换以后,图像空间与參数空间存在下面关系: 图像空间中的一点在參数空间是一条曲线,而图像空间共线的各点相应于參数空间交于一点 ...
- 【OpenCV学习】计算两幅图像的重叠区域
问题描述:已知两幅图像Image1和Image2,计算出两幅图像的重叠区域,并在Image1和Image2标识出重叠区域. 算法思想: 若两幅图像存在重叠区域,则进行图像匹配后,会得到一张完整的全景图 ...
- Halcon学习之六:获取Image图像中Region区域的特征参数
area_center_gray ( Regions, Image : : : Area, Row, Column ) 计算Image图像中Region区域的面积Area和重心(Row,Colu ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- Matlab实现Hough变换检测图像中的直线 分类: 图像处理 2014-06-14 22:07 641人阅读 评论(0) 收藏
Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...
- 从单一图像中提取文档图像:ICCV2019论文解读
从单一图像中提取文档图像:ICCV2019论文解读 DewarpNet: Single-Image Document Unwarping With Stacked 3D and 2D Regressi ...
- 访问图像中的像素[OpenCV 笔记16]
再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存 ...
随机推荐
- POJ 3762 The Bonus Salary!(最小K覆盖)
POJ 3762 The Bonus Salary! 题目链接 题意:给定一些任务.每一个任务有一个时间,有k天.一个时间仅仅能运行一个任务,每一个任务有一个价值.问怎么安排能得到最多价值 思路:典型 ...
- MySQL的笔记
一. SELECT tmp2.name,tmp2.browseNum FROM (SELECT tmp.`name`, COUNT(tmp.id) AS browseNum FROM(SELECT ...
- Knowledge-Reserve
Knowledge-Reserve ComputerOperatingSystem 编译 静态库&动态库(Linux) 静态链接&动态链接 内存 内联函数&宏 Static&a ...
- VB
on error resume next: 从该语句开始,遇到错误时程序不会中止,也不会出现错误提示,将继续运行.作用范围直至程序结束或语句所在函数等结束 Public Property :可读也可写 ...
- luogu11月月赛T3咕咕咕(组合数学)
题目描述 小 F 是一个能鸽善鹉的同学,他经常把事情拖到最后一天才去做,导致他的某些日子总是非常匆忙. 比如,时间回溯到了 2018 年 11 月 3 日.小 F 望着自己的任务清单: 看 iG 夺冠 ...
- MySQL->元数据[20180510]
MySQL元数据 Meta Data,一般是结构化数据(如存储在数据库里的数据,字段长度.类型.默认值等等).Meta Data就是描述数据的数据,在MySQL中描述有哪些数据库.哪些表.表有 ...
- laravel5.5源码笔记(二、服务提供者provider)
laravel里所谓的provider服务提供者,其实是对某一类功能进行整合,与做一些使用前的初始化引导工作.laravel里的服务提供者也分为,系统核心服务提供者.与一般系统服务提供者.例如上一篇博 ...
- Dynamics CRM plugin调试方法之Profiler
https://blog.csdn.net/vic0228/article/details/72903815
- 【树形DP】MZOJ_1063_士兵守卫
本题也是这三天来在下写的几篇树形DP之一,但是不知道为什么洛谷上面老是unknown error,...直接去了UVa,说我编译错误...我在想是不是头文件的原因,于是被逼无奈,交了一道c89的代码. ...
- dart 自己写一个简单的文件编码器
// import 'dart:convert'; import 'dart:io'; main() async { var src = File('./lib/convert/source.txt' ...