在线标定板生成器
生成可直接打印的棋盘格标定板,矢量输出、物理尺寸按毫米定义。页面自带 100mm 校验尺——打印完用直尺量一下,就知道打印机有没有偷偷缩放。 全部在浏览器本地生成,不上传文件、不用注册。
- 方格数
- 8×6
- 内侧角点
- 7×5(35 个)
- 板物理尺寸
- 160×120 mm
- 纸张
- A4 纵向
这个生成器有什么不一样
- 矢量,不是位图。PDF 和 SVG 里每个方格都是矢量矩形,物理尺寸由毫米直接定义,不经过位图缩放。位图在放大时会插值边缘,角点亚像素定位会被这条模糊边影响。
- 100mm 打印校验尺。绝大多数「标定精度不对」的问题,根因是打印机把页面缩到了 96%。尺子放在同一张纸上,量一下就知道该不该重打。
- 显式区分角点与方格。表单只接受内侧角点数,同时把方格数、总角点数算给你看,避免把 8×6 填成 patternSize。
- 参数直出。
patternSize和以米为单位的squareSize直接写成可复制的代码,不用再手算20mm → 0.02。
打印检查清单
- 下载 PDF,用 Adobe Acrobat / 系统预览打开(不要在浏览器里直接打印,多一层缩放)。
- 缩放设为 100% / 实际尺寸,关闭「适合页面」「缩放以适合可打印区域」。
- 纸张选对:选的纸张必须和纸盒里实际装的纸一致,否则驱动会重新排版。
- 量校验尺:打印后立刻用直尺量页面上的 100mm 尺,偏差超过 0.5mm 就重打,不要凑合。
- 贴板:把纸贴到硬质平板(铝板、亚克力)上,四角压平。纸张翘曲会让平面假设失效,这是仅次于缩放的误差来源。
不要塑封、不要覆膜。光面会让角点附近出现高光溢出,棋盘格的黑白边界变糊; 塑封膜本身也有厚度和形变。需要耐用就直接打印在哑光纸或 KT 板上。
常见坑
- 把方格数填成内角点:8×6 方格的板,
patternSize是 (7, 5),填成 (8, 6) 会一直检测失败。 - 打印机缩放:表现为「所有标定结果都系统性偏大/偏小」,跟相机无关,先量校验尺。
- 角点没覆盖图像边缘:全部挤在画面中间时,畸变参数(k1、k2、p1、p2)外推会很差,重投影误差好看但实际畸变没标出来。
- 用同一张板既标内参又做手眼:手眼标定的板位姿需要尽量分散、朝向变化大,和内参标定的「铺满画面」是两种取图策略。
- 只在一个距离上标定:焦距和主点会和其他距离强耦合,至少在 2–3 个距离各采一组。
常见问题
「内侧角点」和「方格数」有什么区别?
方格数是板上一共有多少个小格子;内侧角点是被黑格和白格共用的内部交叉点。一张 8×6 方格的棋盘格板,内侧角点是 7×5,共 35 个。OpenCV 的 findChessboardCorners 和 calibrateCamera 用的是角点数,也就是 patternSize=(7, 5)——这是新手最容易填错的一项。
打印出来量校验尺不是 100mm,怎么办?
说明打印机做了页面缩放。在打印对话框里关闭「适合页面 / Fit to page」,把缩放设为 100%(实际尺寸),并确认选择的纸张和实际装入的纸张一致。浏览器打印默认值经常是 96% 左右,会让整张标定板等比缩小约 4%,你的方格边长就不再是设定的值。
方格边长应该选多大?
内参标定一般 20–30mm,板子要能覆盖整幅图像,尤其是边缘区域。手眼标定或小视野场景可以用 10–15mm,但要保证相机在最近工作距离下仍能清晰拍到至少 5×5 个角点。方格太小会在远处检测不到,太大又难以覆盖视野边缘。A4 打印建议 20mm 左右。
为什么生成的 PDF 里说明文字是英文?
PDF 在浏览器端用 jsPDF 生成,它自带的字体不含中文字形,强行写中文会输出乱码。为了保证这张板的几何完全正确、不引入风险,PDF 内的说明文字暂时保持英文,网页界面仍然是中文。后续会嵌入中文字体子集。
生成的文件会上传到服务器吗?
不会。整个生成过程在你的浏览器里完成,这个页面没有后端接口,你的参数只会出现在你自己浏览器的地址栏里(方便分享配置),不会发往任何服务器。
支持 ChArUco 和 AprilTag 吗?
暂不支持,但已在计划内。ArUco / AprilTag 依赖官方字典的精确位图,位错一位就会静默检测失败——所以要先接入并逐个验证字典,而不是凭印象生成,验证通过再上线。
这个标定板能用于 LiDAR 与相机联合标定吗?
可以用于相机内参标定,以及以棋盘格为参照的雷达-相机外参初值。但 LiDAR 对靶标材质和反射率敏感,普通打印纸板的点云质量较差,联合标定更适合用 ChArUco 板或专用靶标。在线版的雷达-相机联合标定工具在路线图里。