steger算法笔记
发表于:2023-11-01 | 分类: 学习笔记
字数统计: 752 | 阅读时长: 2分钟 | 阅读量:

steger算法

Steger算法的基本思路就是首先通过Hessian矩阵获得光条的法线方向,然后在其法线方向对像素灰度应用泰勒多项式展开从而得到灰度的分布函数,进而计算出光条中心的亚像素位置。由于光条特征的灰度在其法线方向上近似为高斯分布,因而越靠近光条中心点的像素其灰度值越大。因此对该法线方向上的灰度分布函数的二阶泰勒多项式求取极值,即可得到光条在该法线方向上的中心点坐标。

在工程优化问题过程中,目标函数通常会以非线性多元函数的形式出现,这种函数形式非常复杂,不便计算,经常会将目标函数在某点的邻域内展开成泰勒多项式,以此来近似或逼近原目标函数。

Hessian矩阵:对于一个实值多元函数,如果函数的阶偏导数存在,则定义函数的Hessian矩阵为: 对于二维离散图像来说,其Hessian矩阵可以表示为: 其中表示像素的灰度,可将视作该图像的灰度分布函数。分别表示二维高斯函数的二阶偏导数与图像进行卷积运算的结果。(为什么?)

对一个多元函数泰勒展开的矩阵形式可以表示为: 其中就是上面提到的Hessian矩阵。

那么二维图像中的泰勒展开和Hessian矩阵对于图像中光条上的任意像素,设其法线方向的单位方向向量为 则在该像素处将光条法线方向上的灰度分布函数沿方向展开成泰勒多项式的形式,并忽略二阶以上的展开项。因此光条法线方向上的像素的灰度可以由该点的灰度和二阶泰勒多项式表示为: 上面这个式子就是光条在像素处横截面上的灰度分布函数,而使其一阶导数为零的点就是待提取的光条中心点。因此,求上面式子求一阶导 再将这个式子以向量形式表示: 简化可得: 如果,即一阶导数为零的点位于当前像素内,且方向的二阶导数大于指定的阈值,则该点为光条的中心点,则为所求的亚像素坐标。

根据有关文献可知,在求Hessian矩阵之前对图像进行高斯滤波时,设置高斯方差,其中为光条宽度。

steger算法的一些缺点:多次卷积带来计算复杂度高,速度慢,如果整幅图像仅使用相同的高斯卷积核大小,则在光条宽度分布不均匀且曲率变化大时难以准确提取中心线,甚至导致光条不连续。

上一篇:
slam知识点
下一篇:
LIO-SAM阅读笔记