Steger 算法 的原理和流程
Steger 算法是一种基于 Hessian 矩阵的、用于提取图像中诸如光条、血管、裂纹等线状结构中心线的先进算法,并能直接达到亚像素精度。
一、 核心思想
Steger 算法的核心假设是:线状结构的灰度分布在其横截面上近似符合高斯分布。因此,在中心线处,灰度值达到极大值,并且沿着其法线方向(垂直于切线方向),灰度变化最剧烈。
算法的目标就是:
-
找到每个点所在线状结构的法线方向。
-
沿着这个法线方向,寻找灰度值真正的极大值点(该点可能位于两个像素之间,即亚像素位置)。
Hessian 矩阵的作用就是用来高效地求解第一步中的法线方向。
二、 算法流程详解
假设输入是一张灰度图像 I(x,y)I(x, y)I(x,y)。
步骤 1:计算 Hessian 矩阵
对于图像中的每一个像素点 (x,y)(x, y)(x,y),计算其 Hessian 矩阵 HHH。Hessian 矩阵是一个二阶偏导数矩阵,描述了该点附近的灰度 curvature(曲率)信息。
其中:
IxxI_{xx}Ixx: 图像在 xxx 方向上的二阶偏导数(通过用高斯函数的二阶偏导核 ∂2G(σ)∂x2\frac{\partial^2 G(\sigma)}{\partial x^2}∂x2∂2G(σ) 与图像卷积得到)。
IxyI_{xy}Ixy: 图像在 xxx 和 yyy 方向上的混合偏导数(通过用高斯函数的混合偏导核 ∂2G(σ)∂x∂y\frac{\partial^2 G(\sigma)}{\partial x \partial y}∂x∂y∂2G(σ)