图像裁剪/缩放/去畸变后相机内参与畸变系数变化规律问询
本文旨在明确图像经过裁剪、缩放、去畸变操作后,相机内参(camera matrix)和畸变系数(distortion coefficients)的精确变化规律,以下是已知的操作后参数变化趋势及实际校准数据:
各操作的参数变化趋势
1. 裁剪操作
- 图像尺寸:从
[848, 480]变为[582, 326] - 内参变化:
fx、fy基本不变,cx、cy分别减少133、77 - 待明确:畸变系数的变化公式
2. 缩放操作
- 图像尺寸:从
[582, 326]变为[848, 480] - 内参变化:
fx、cx约为裁剪后数值的1.457倍,fy、cy约为裁剪后数值的1.472倍 - 畸变系数:理论上保持不变
3. 去畸变操作
- 内参变化:基本不变
- 畸变系数:理论上变为
[0, 0, 0, 0](实际校准值因误差近似为0)
实际相机校准数据
【原始参数】
- 内参:
fx=402.242923,fy=403.471056,cx=426.716067,cy=229.689399 - 畸变系数:
k1=0.068666,k2=-0.039624,p1=-0.000182,p2=-0.001510
【裁剪后参数】
- 内参:
fx≈408.235312(基本不变),fy≈409.653612(基本不变),cx≈297.611639(减少133),cy≈153.667098(减少77) - 畸变系数:
k1=0.048520,k2=-0.010035,p1=0.000943,p2=-0.000870
【裁剪后缩放参数】
- 内参:
fx≈598.110106(约为裁剪后fx的1.457倍),fy≈608.949995(约为裁剪后fy的1.472倍),cx≈430.389861(约为裁剪后cx的1.457倍),cy≈226.585804(约为裁剪后cy的1.472倍) - 畸变系数:
k1=0.054762,k2=-0.025597,p1=0.002752,p2=-0.001316
【去畸变后参数】
- 内参:
fx≈404.312916(基本不变),fy≈405.544033(基本不变),cx≈427.986926(基本不变),cy≈229.213162(基本不变) - 畸变系数:
k1≈-0.000838,k2≈0.001244,p1≈-0.000108,p2≈0.000769(近似为0)
畸变系数的精确变化规律推导
1. 裁剪操作后的畸变系数变换
裁剪本质是选取图像的子区域,对应像素坐标系原点平移。设水平偏移量为Δx = 原始cx - 裁剪后cx(此处为133),垂直偏移量为Δy = 原始cy - 裁剪后cy(此处为77)。
径向畸变系数(k1、k2)变换
原始归一化坐标:x = (u - cx)/fx,y = (v - cy)/fy
裁剪后归一化坐标:x' = (u' - cx')/fx' ≈ x + Δx/fx,y' = y + Δy/fy(因fx、fy基本不变)
径向畸变模型为:x_distorted = x(1 + k1*r² + k2*r⁴),y_distorted = y(1 + k1*r² + k2*r⁴),其中r² = x² + y²。
裁剪后,新的畸变系数需满足裁剪区域内原始畸变模型与裁剪后模型等价。通过泰勒展开近似,可得:
k1' ≈ k1 / (1 + 2k1*( (Δx/fx)² + (Δy/fy)² )) k2' ≈ k2 / (1 + 4k2*( (Δx/fx)² + (Δy/fy)² ))
注:该近似存在误差,更精确的方式是将裁剪后像素映射回原始相机归一化坐标,重新拟合畸变系数——这也是实际校准数据与近似值有差异的原因。
切向畸变系数(p1、p2)变换
切向畸变模型为:x_distorted = x + 2p1xy + p2(r² + 2x²),y_distorted = y + p1(r² + 2y²) + 2p2xy。
将x替换为x' = x + Δx/fx、y替换为y' = y + Δy/fy,忽略高阶小项后,近似公式为:
p1' ≈ p1 + (2k1*ΔxΔy)/(fx*fy) p2' ≈ p2 + (k1*(Δx² - Δy²))/(fx² - fy²)
2. 缩放操作后的畸变系数变换
缩放操作中,水平缩放比例sx = 848/582 ≈ 1.457,垂直缩放比例sy = 480/326 ≈ 1.472。内参按比例缩放后,缩放前后的归一化坐标保持一致:x = (u - cx)/fx = (u'*sx - cx'*sx)/(fx'*sx) = (u' - cx')/fx' = x'
同理y = y'。
由于归一化坐标未发生变化,理论上畸变系数应保持不变。实际数据中的差异源于缩放插值误差或重新标定的系统误差。
3. 去畸变操作后的畸变系数
去畸变通过反向映射校正图像,使畸变后的像素回归无畸变状态,因此理论上畸变系数应为[0, 0, 0, 0]。实际校准值近似为0是标定过程的正常误差。
内容的提问来源于stack exchange,提问作者mphong

