参数面板用于调整当前示例、算法参数和辅助操作;主区负责展示图像处理过程。
当用广角或普通镜头拍摄时,真实场景里的直线在照片边缘可能出现弯曲,物体的形状也会被拉长或压缩。如果不校正,后续基于直线或距离的测量就会出错。
常用办法是先建立畸变模型:径向畸变用多项式描述光线向边缘的弯曲,切向畸变描述镜头与传感器不平行带来的偏移。校正时根据目标像素反查它在原图中的采样位置,再把弯曲的结构重新映射回规则坐标。
拖动“径向强度 |k1|”滑块,对比桶形与枕形两种畸变下的变形程度;点击或移动像素,观察畸变图与校正图之间的坐标重映射,注意直线从弯曲恢复平直的过程主要由径向系数 k1 决定(本页切向项 p1/p2 固定为 0)。
镜头畸变会把本应保持笔直的结构扭曲或弯曲。标定得到的畸变系数并不直接修改亮度,而是先计算每个输出像素应当回到原畸变图中的哪个坐标,再由remap完成采样。
畸变图是已经被镜头畸变扭曲后的观测图像。当前输出像素不会直接复制畸变图同坐标,而是先查询给出的源位置。
映射表通常由initUndistortRectifyMap预先计算完成。当前坐标代入一次径向畸变映射后,就能得到等价的采样位置。
校正图的当前像素位于 (30, 30),它显示的是畸变图源坐标采样后的结果(使用双线性插值),因此校正后直线会重新接近笔直。
畸变校正不是对像素值做卷积或增强,而是利用内参矩阵和畸变系数,为每个输出像素找到原畸变图中的采样位置。