halcon 里面 亚像素精度是如何实现?
一、HALCON为什么能做到亚像素HALCON主要思想灰度函数 I(x) ↓ 数学模型 ↓ 拟合 ↓ 极值 ↓ 亚像素位置即不是找像素 而是找函数。二、实现方式算法数学模型精度速度典型 Halcon 算子适用特征法线 二次多项式拟合梯度抛物线拟合 向量投影高中edges_sub_pix、contour_sub_pix阶跃边缘、工件轮廓二维灰度重心加权坐标平均中高极快measure_profile_sheet_of_light、measure_pos激光线、亮斑、线条二维高斯拟合二维高斯曲面最小二乘极高慢高精度 Blob / 激光扩展算子超细激光、微小圆点1、二维阶跃边缘亚像素二次多项式拟合重点二维阶跃边缘局部可近似为直线边缘定义两个正交方向n边缘单位法向量灰度变化最快的方向梯度方向t边缘单位切向量沿边缘走向灰度基本不变。边缘定位本质只关心法线方向的灰度变化切线方向可忽略步骤 1二维梯度求解求法线方向步骤 2沿法线提取一维亚像素剖面步骤 3一维亚像素偏移量手推二次多项式梯度拟合步骤 4偏移量映射回二维浮点坐标核心二维推导2、二维灰度重心法亮线 / 激光线 / 光斑工程高频针对激光线、焊点亮斑、刻度线这类「灰度单峰特征」Halcon 激光标定measure_profile_sheet_of_light、卡尺measure_pos(..., center_of_gravity)均使用二维灰度重心计算简单、速度快、鲁棒性强。灰度重心法-CSDN博客3、二维高斯拟合针对超细激光、微小圆点等对精度要求极致的场景Halcon 高阶算子使用二维高斯函数拟合。二维高斯模型求解思路对公式取对数转化为线性方程组用窗口内多组像素灰度最小二乘拟合全部参数直接输出 \((\mu_r,\mu_c)\) 作为亚像素坐标。4.3 特点精度最高抗高斯噪声能力强计算量大仅用于高精度检测场景常与重心法组合用于激光线二次精定位。三、halcon 中的亚像素HALCON真正使用的方法HALCON官方不是简单二次拟合。而是第一步Gaussian滤波Gaussian导数第二步二维梯度边缘是什么二维里面不是一个数。而是梯度。因此图像 ↓ Gaussian ↓ Gaussian一阶导 ↓ 梯度 ↓ 梯度峰值 ↓ 亚像素分别求X方向和Y方向的导数Gaussian导数梯度向量例如某个像素Ix120 Iy80那么梯度案例假设整数像素(100,200)附近梯度第一步求逆矩阵第二步计算偏移量HALCON edges_sub_pix 数学模型然后取多个灰度 ↓ 拟合 ↓ 峰值 ↓ 亚像素位置Steger算法为什么也是亚像素Steger就是二阶Taylor展开Hessian矩阵特征值分析实现亚像素中心定位。怎么求解整数像素 ↓ Taylor展开 ↓ 偏移 ↓ 亚像素Steger算法得到的中心线坐标通常具有约0.050.1 像素的重复精度具体取决于信噪比、条纹宽度和成像条件因此被广泛用于激光条纹中心提取。总结