数据预处理
首先需要拍摄标定板的照片,最好在30张以上。但是一张张拍摄有点麻烦,可以拍摄一段视频,然后从视频中抽取帧照片。
v = VideoReader('../data/20240708-131907.mp4'); %视频文件路径
NumMAx = v.NumFrames; %视频总帧数
Num =30; % 抽取照片数
TimeMax = v.Duration; %视频总时长
TimeList = linspace(TimeMax./Num,TimeMax - TimeMax./Num,Num); %抽取照片时间序列
for i = 1:Num
v.CurrentTime = TimeList(i);
video = readFrame(v); % TimeList(i)时刻对应帧照片
pathFile = ['../data/','time',num2str(i),'.jpg']; % 照片保存路径
imwrite(video,pathFile)
end
通过抽取视频中相应帧的照片,保存至本地文件。
参数标定
点击APP 中Camera Calibrator
然后点击AddImages,选择刚刚保存的抽取出的标定板照片文件
弹出图像特征,设置方格大小,默认25mm,根据标定板方格实际大小修改。
剔除其中图像坐标原点和方向错误的图片,点击标定,右侧会出现每张照片像素点坐标重建的平均误差,如果有大于0.5的,选中相应照片剔除,导出计算结果。
可以选择将结果保存至工作区或者生成脚本文件
生成的脚本文件,可以更改输入照片文件的路径,后面可以通过运行脚本的方式进行相机参数标定
B站有个视频讲的很清楚,相机标定