普通光流法(LK)中雅克比矩阵J的理解

点击查看代码
// 普通LK:J基于目标帧I2的梯度(因为J = -dI2/dx, -dI2/dy)
// 梯度用中心差分近似:dI/dx = [I(x+1) - I(x-1)] / 2,dI/dy = [I(y+1) - I(y-1)] / 2
J = -1.0 * Eigen::Vector2d(
// J的第一个分量:-dI2/dx(x方向梯度的负值)
0.5 * (GetPixelValue(img2, kp.pt.x + dx + x + 1, kp.pt.y + dy + y) -
GetPixelValue(img2, kp.pt.x + dx + x - 1, kp.pt.y + dy + y)),
// J的第二个分量:-dI2/dy(y方向梯度的负值)
0.5 * (GetPixelValue(img2, kp.pt.x + dx + x, kp.pt.y + dy + y + 1) -
GetPixelValue(img2, kp.pt.x + dx + x, kp.pt.y + dy + y - 1))
);
梯度的数值计算:中心差分

从 物理意义(像素运动)→ 数学推导 → 变量对应 三步拆解,理解这个核心方程的来龙去脉。





回看代码
点击查看代码
// J = -(∂I2/∂x, ∂I2/∂y)
J = -1.0 * Eigen::Vector2d(
// 第一个分量:∂I2/∂x(中心差分计算)
0.5 * (GetPixelValue(img2, x+1, y) - GetPixelValue(img2, x-1, y)),
// 第二个分量:∂I2/∂y(中心差分计算)
0.5 * (GetPixelValue(img2, x, y+1) - GetPixelValue(img2, x, y-1))
);


浙公网安备 33010602011771号