畸变标定(相机内参标定)
作用:校正镜头非线性光学畸变(桶形 / 枕形畸变,直线变弯);
输出:相机内参、畸变系数,保存
.calib标定文件;
只修正几何失真,不能把像素转换成 mm。
相机映射标定(九点 / N 点标定、仿射标定)
作用:建立像素坐标系 ↔ 世界物理坐标系 (mm),完成像素当量转换;
属于线性仿射变换,无法矫正镜头畸变。
✅ 高精度测量标准顺序:先畸变矫正 → 再九点 / 相机映射标定
普通镜头存在两种畸变:
径向畸变(主要)
图像离中心越远,像素偏移越大,工业普通镜头大多为桶形畸变。
\(\begin{cases}
x_{dist}=x(1+k_1r^2+k_2r^4+k_3r^6)\\
y_{dist}=y(1+k_1r^2+k_2r^4+k_3r^6)
\end{cases}\)
\(k_1,k_2,k_3\) 径向畸变系数
切向畸变(次要,镜片装配偏心导致)
\(\begin{cases}
x_{dist}=x+2p_1xy+p_2(r^2+2x^2)\\
y_{dist}=y+p_1(r^2+2y^2)+2p_2xy
\end{cases}\)
\(p_1,p_2\) 切向畸变系数
拍摄多姿态棋盘格,提取内角点;
张正友标定法求解:内参矩阵、\(k_1,k_2,k_3,p_1,p_2\);
生成畸变查找映射表;
运行阶段两种矫正方式:
图像矫正:输出整张校正后的图像(边缘产生黑边,耗时更高)
坐标点矫正:原图不变,只对边缘、轮廓、匹配得到的像素坐标修正(测量项目推荐)
相机、镜头、光圈、焦距、工作距离 WD 全部固定;一旦改动,必须重新标定!
准备:标准棋盘格标定板,准确记录棋盘方格边长 (mm)。
工具路径:标定 → 畸变标定
参数配置:
标定板类型:棋盘格
设置棋盘内角点行列数量、方格实际尺寸;
畸变模型:常规镜头选择径向 + 切向畸变;广角镜头可选用高级模型。
采集数量:10~18 张图像
拍摄规范:
标定板分布到视野中心、左上、右上、左下、右下四角;
每张图片标定板轻微倾斜(10°~30°),不要完全平行于相机;
图像清晰,无过曝、无反光,内角点完整;
尽量让棋盘占据画面较大区域,不要只拍很小一块。
运行标定,查看平均重投影误差
✅ 合格:<0.3~0.5 pixel
误差过大原因:标定板反光、图像模糊、点位分布不均衡、标定板变形。
标定成功后,导出保存:xxx.calib 畸变标定文件。
工具:标定 → 畸变校正
载入
.calib文件,输入原图,输出校正后图像。
缺点:图像四周出现黑色无效区域,存在少量运算耗时。
适用:Blob 分析、缺陷检测,需要完整校正图像场景。
● 不转换整张图像,原始图像直接用于视觉工具;
● 模板匹配、边缘测量提取像素坐标后,送入【坐标畸变校正】修正点位。
● 优点:无黑边、速度更快、不丢失原始图像信息。
● 使用标准圆点标定板 / 棋盘格,在视野内均匀采集≥9 个标定点;
● 在【相机映射标定】工具录入每个点对应的实际物理坐标;
● 运行标定,生成映射矩阵;
● 使用【坐标映射转换】将校正后的像素坐标转为世界坐标 (mm)。
图像采集 → 图像预处理 → 视觉工具 (边缘 / 轮廓) 提取像素坐标
→ 坐标畸变校正 → 坐标映射转换(像素→mm) → 尺寸计算
表格
|
项目 |
畸变标定 & 畸变校正 |
相机映射 / 九点标定 |
|
解决问题 |
镜头非线性畸变(直线变弧线) |
像素坐标与实际 mm 坐标线性转换 |
|
变换模型 |
非线性畸变模型 |
仿射线性变换 |
|
能否互相替代 |
❌ 不能,九点无法消除镜头畸变 |
❌ 畸变矫正不能实现像素转毫米 |
|
执行顺序 |
优先执行 |
畸变矫正完成后执行 |
|
输出文件 |
*.calib 畸变文件 |
映射变换矩阵 |
● 视野中心测量准,边缘测量误差大
● 最常见原因:只做九点标定,未开启畸变矫正。
● 畸变标定重投影误差偏高
● 标定板不平整、反光、只在视野中心拍照、图像模糊。
● 校正后图像出现黑边
● 使用了整张图像畸变校正,改为坐标畸变校正方案。
● 更换镜头、调焦、改变工作距离后精度漂移
● 镜头光学参数改变,必须重新畸变标定。
● 远心镜头项目
● 畸变系数趋近于 0,开启矫正几乎无改善,建议关闭,节省算力。
