搞懂Determine_die_pitch_fft_correlation补,hessian matrix部分

例程里面有个提取亚像素精度的重要函数,设计很多数学原理知识,如果不看原理只看应用有点知其然不知其所以然的感觉。
在这个学习中发现了matlab的一个功能就是,帮助你画出来你想要的图片,来促进理解,但是现在matlab功力不够,很多东西还得回来记着问问Ds快速学习。 
看它的帮助文档先:
local_max_sub_pix  extracts local maxima from the image  Image  with subpixel precision. To do so, in each point the input image is approximated by a quadratic polynomial in x and y and subsequently the polynomial is examined for local maxima. The partial derivatives, which are necessary for setting up the polynomial, are calculated either with various Gaussian derivatives or using the facet model, depending on  Filter . In the first case,  Sigma  determines the size of the Gaussian kernels, while in the second case, before being processed the input image is smoothed by a Gaussian whose size is determined by  Sigma . Therefore,  'facet'  results in a faster extraction at the expense of slightly less accurate results. A point is accepted to be a local maximum if both eigenvalues of the Hessian matrix are smaller than - Threshold . The eigenvalues correspond to the curvature of the gray value surface.
也就是说把输入的灰度图像拟合为一个2元2次多项式。然后求取部分最大值。
如果hessian矩阵的特征值比阈值设定的小,那么就保留这个点,后面又说特征值对应的是灰度曲面的曲率。(曲率
表明曲线偏离 直线的程度。数学上表明曲线在某一点的弯曲程度的数值。曲率越大,表示曲线的弯曲程度越大。
20 20 20
20 255 20
20 20 20
这个平面的话,那么明显就是一个亮点了,大概这种情况就会被保留。但是具体阈值就看具体图片选择了。

虽然开始也转载了别人的黑森矩阵的讲解,但我认为那个人并没有很好地理解。我从矩阵分析与应用,张贤达。这本书里看,hessian矩阵在梯度分析与最优化这一章,Ds所说hessian矩阵是拟牛顿优化法的核心,可见,博客中说hessian矩阵是提取最优提取关键点的思路是正确的。
下面转载一段关于hessian矩阵应用的博文,很好地增加直观理解:
************************************************************************************************************************

今天早上看了几篇英语新闻后去上 Stigler 的课。今天的课主要讲假设检验部分的理论基础。在讲课时,Stigler 提到 Neyman,说 Neyman 是他的 Academic Grandfather(学术上的祖父)。这次关于 Neyman-Pearson 准则的课主要是基于 Bayes 观点的,Stigler 特地讲了详细的证明过程。说实话,有不少地方我没听懂,还要下来再看讲义。这节课很能体现理科和工科在概率统计教学目标上的差异。

 

    下课后,我又去楼上的图书馆借了三本专业书。昨晚在看 Suzuki 发给我的论文时,关于使用 Hessian Matrix 的特征值来检测直线的部分我没有想清楚,所以想找本书来看看。因为在图书馆没有找到我需要的书,回来后又在网上搜了几篇相关的论文,最后终于想明白了。

 

    Hessian Matrix 实际上就是多变量情形下的二阶导数,它描述了各方向上灰度梯度的变化。一根二维平面图中的直线,它的灰度数据矩阵如下图所示。在沿直线方向(图示X方向),亮度变化极小,所以一阶和二阶导数均为零;在与直线垂直的方向,亮度先由暗变亮,再由亮变暗,在直线处(亮度值最高的地方)一阶导数为零,二阶导数小于零。于是,直接根据灰度数据矩阵计算出 Hessian Matrix,然后再计算出其两个特征值(计算特征值的目的,可视作从不同方向寻找直线的指向),根据是否其一为零,另一为负即可进行判断。

       搞懂Determine_die_pitch_fft_correlation补,hessian matrix部分_第1张图片搞懂Determine_die_pitch_fft_correlation补,hessian matrix部分_第2张图片

************************************************************************************************************************
************************************************************************************************************************
 To do so, in each point the input image is approximated by a quadratic polynomial in x and y and subsequently the polynomial is examined for local maxima. 
搞懂Determine_die_pitch_fft_correlation补,hessian matrix部分_第3张图片
 
 A point is accepted to be a local maximum if both eigenvalues of the Hessian matrix are smaller than - Threshold . The eigenvalues correspond to the curvature of the gray value surface.
 总之就是拟合函数,然后做出hessian矩阵,然后通过与阈值对比寻找最大值,结合上面的博客可以搞明白为什么要计算两个特征值!!!只能理解halcon算子大概含义,想要自己写是很难的,因为这是2元的Hessian矩阵,一般只能找到一元的。

你可能感兴趣的:(halcon例程学习)