基于C#联合Halcon实现双目标定整体效果
一,标定
1,标定前准备工作 (获取描述文件与获取相机参数)
针对标准标定板可以直接调用官方提供描述文件,也可以自己生成描述文件后用PS文件打印
2,相机标定
(获取标定信息通过find_calib_object将标定信息添加到calibDataID中,通过“获取最终标定信息”将左相机,右相机,设置的参考位姿进行信息整合)其原理与前面单相机标定原理一样,单相机标定可以参考:如何做一个C#仿Halcon Calibration插件-CSDN博客
多相机标定可以参考Halcon 多相机统一坐标系(标定)_多相机标定统一坐标系-CSDN博客
3,显示相机标定信息
(双目标定用到的参数:左相机参数,右相机参数,右相机相对位姿这三组参数,其他为辅助鉴定标定效果)
二,验证
1,通过标定板图像进行数据验证
RowsL := []
ColsL := []
RowsR := []
ColsR := []
for I := 1 to NumImages by 1
select_obj (ImagesRectL, ImageRectifiedL, I)
select_obj (ImagesRectR, ImageRectifiedR, I)
find_caltab (ImageRectifiedL, CaltabL, CaltabFile, SizeGauss, MarkThresh, MinDiamMarks)
find_marks_and_pose (ImageRectifiedL, CaltabL, CaltabFile, RectCamParL, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoordL, CCoordL, StartPoseL)
find_caltab (ImageRectifiedR, CaltabR, CaltabFile, SizeGauss, MarkThresh, MinDiamMarks)
find_marks_and_pose (ImageRectifiedR, CaltabR, CaltabFile, RectCamParR, StartThresh, DeltaThresh, MinThresh, Alpha, MinContLength, MaxDiamMarks, RCoordR, CCoordR, StartPoseR)
RowsL := [RowsL,RCoordL]
ColsL := [ColsL,CCoordL]
RowsR := [RowsR,RCoordR]
ColsR := [ColsR,CCoordR]
endfor
X := RowsR - RowsL
EpipolarError := [mean(X),deviation(X)]
2,通过生成深度图像进行验证
2.1),加载图像并进行校正效果
map_image (Image, Map, ImagesRect)
2.2)生成深度图像与分值图像
binocular_distance (ImageRectifiedL, ImageRectifiedR, DistanceImage, ScoreImageDistance, RectCamParL, RectCamParR, RectLPosRectR, 'ncc', MaskWidth, MaskHeight, TextureThresh, MinDisparity, MaxDisparity, NumLevels, ScoreThresh, 'left_right_check', 'interpolation')
通过外部参数修改生成的深度图像效果
拟合平面,优化图像并获取最终高度范围内图像
图像优化可以参Halcon深度图高度测量