实验原理
从世界坐标系变换到中心在相机光学中心的坐标系统,其变换参数称为相机的外部参数,也叫相机的位姿(位置和姿态)。从相机坐标系统变换到计算机图像坐标系统的变换参数称为相机内参,即相机的自身参数。
相机外参需要标定的参数有:相机平移参数Tx、Ty、Tz,相机的旋转参数yaw、pitch、roll。相机内参需要标定的参数有:焦距λ、失真系数k、图像原点的计算机坐标Om和On。
对已知格子大小的棋盘格图片进行多角度、多位置拍摄后,可以获得已知空间坐标点在图像坐标系下的坐标,进而可以解算相机的位姿变换矩阵和成像变换矩阵,也就是相机的外参和内参。
实验步骤
a、制作标定板。
- 打印标定板。将其贴在纸盒上,使其可以直立放置。
- 绘制10x10的网格,网格大小设置好,比如20mm。(下面是标定板的制作)https://blog.csdn.net/jsxyhelu2015/article/details/108251421
b、用摄像头(我用的手机)对标定板进行拍摄
- 打开手机相机,专业模式
- 选择广角镜头,没有广角镜头的选择普通镜头
- 对标定板进行拍摄,尽量多个角度且尽量占满图像的不同位置。
4.图片命名要求有一致的前缀,比如Img01、Img02……等。
c、下载安装相机标定工具包
-
- 下载安装相机标定工具包
- 下载地址(该地址可能不能用了,反正我没找到,我在其他地方找到了一份链接:https://pan.baidu.com/s/1FdN1Roc_sqDVs2AFqtQjpg
提取码:dalf
--来自百度网盘超级会员V1的分享) - http://www.vision.caltech.edu/bouguetj/calib_doc/download/index.html
- 解压后将其路径添加至Matlab
- 改变Matlab工作路径至你存放标定板拍摄图片的文件夹。
- Matlab命令行键入calib_gui,选择标准模式
- 选择Image names,输入图片前缀。随后选择Read images
- 单击“Extract grid corners”提取角点, wintx winty使用默认即可,随后选择自动格子计数(默认回车即可)
- 会弹出第一幅图片让你用鼠标选定四个原点
- 随后dx,dy要写你真是棋盘格上的真实宽和高,比如前面设置的20mm。
- 然后处完所有读入图片后,点击工具箱上Calibration,然后会出现内参数结果。
最终显示的相机内参结果如下图所示:
此时可见像素的误差较大,可以通过工具的误差分析功能来可视化分析误差,如下图所示:
之后使用工具的重标定功能(“Recomp.corners”)对特征点重新标定之后,可见误差有所减小,如下图所示:
文章来源:https://www.toymoban.com/news/detail-482672.html
此外,还可以使用工具的“Show Extrinsic”功能,可视化显示相机与标定靶之间的关系如果自动找角点的位置不准确,如何处理?文章来源地址https://www.toymoban.com/news/detail-482672.html
- 下载地址(该地址可能不能用了,反正我没找到,我在其他地方找到了一份链接:https://pan.baidu.com/s/1FdN1Roc_sqDVs2AFqtQjpg
- 下载安装相机标定工具包
到了这里,关于单目相机的标定(matlab)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!