工控编程吧
标题:
6.2 halcon使用标定助手完成相机标定
[打印本页]
作者:
qq263946146
时间:
2019-3-31 00:52
标题:
6.2 halcon使用标定助手完成相机标定
在相机标定实际项目中,会用到很多不同种类的标定板,如棋盘格标定板,圆形阵列标定板。
(, 下载次数: 5)
上传
点击文件名下载附件
在用相机对标定板拍摄时,标定板充满相机视野的1/3到1/4便可,
其次是标定的成像灰度值最好大于128,以便于快速提取特征,
最后是标定的拍摄张数最好在9--16张。
在选择标定板厂家时,要根据 自己的精度 要求选择不同的加工精度的标定板。
如果自己当前手上没有标定板实物,也可以用halcon提供的一个算子来制作 一个标定板。
此算子会生成两个文件。
一个是标定 板的描述文件,记录标定板的一些参数信息。
这些信息包括哪些?halcon手册已有详细介绍,例如 上面halcon提供的圆形阵列标定板,
参数包括标定 板的宽度高度,黑色圆点的行数 列数,内/外边框的长度,黑色圆点半径 ,中心矩,
裁剪宽度等。
另一个文件是postScript图形文件,用于打印用,后缀是.ps,可以使用photoshop等软件打开。
gen_caltab( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )
XNum, 每行黑色圆点的个数;
YNum, 每列黑色圆点的个数;
MarkDist, 两个相邻黑色圆点的中心间距,单位米;
DiameterRatio, 黑色圆心直径与中心间距比值。
CalPlateDescr,标定板描述文件路径(.descr)
CalPlatePSFile,标定板图像文件路径。
制作已知尺寸的标定 板,其实就相当于我知世界坐标系和图像 坐标系的坐标来求解相机的内参,外参。
因为标定 板的参数 已知,成像后的特征坐标也可以得到,这样就可以代入前面帖子介绍的公式 进行相机参数 求解。
拍摄多张标定板,标定板位姿角度不同,就可以建立多个方程求解。
这整个过程叫做标定,只有经过标定,确定了相关参数 模型后才可以进行后续 的三维拟合等应用。
下面来使用halcon提供的标定助手进行相机标定
1.打开标定 助手 : 菜单栏上:助手->打开新的calibration,弹出后手窗口
(, 下载次数: 3)
上传
点击文件名下载附件
安装 选择卡: 主要是进行标定 板,机模型的一些参数 设置。
标定任务:选择是标定相机的位姿和所有参数,还是仅标定用户自己定义的个别参数
标定板:描述文件里是标定 板的一些参数信息,点击其右侧图标可以选择指定的标定文件。
这里选择D:/Program Files/MVTec/HALCON-17.12-Progress/calib/caltab_30mm.descr
厚度:指的是标定板的厚度;
摄像机参数:根据 相机的扫描 方式 分为线扫和面扫,相机模型一般都是面扫相机,
通过 单独曝光得到面积 图像,线扫相机一般用于运动测量,这里使用面扫相机。
单个像元的宽,高表示 每个像素 所占的实际 物理尺寸,单位是微米,该参数 可在相机的自带文件中或
官方数据查找,这个值会影响焦距。
焦距是光学镜头的焦距。
标定选项卡:
在此选项卡中进行标定板图片的加载或实时采集,如果 采用实时 采集的话至少在10帧图像以上,
要包括 各个 角落 以及倾斜状态 ,让标定 板尽量充满整个视野。
我们这里加载磁盘halcon自带的多疑图片,点击加载按钮可以加载路径下:
C:\Users\Public\Documents\MVTec\HALCON-17.12-Progress\examples\images\scratch
(, 下载次数: 1)
上传
点击文件名下载附件
可以用鼠标点击列表框图像进行查看相关信息,也可以顾名思义,使用右侧按钮进行操作
这里警告级别选择70即可,如果加载图像中有品质问题的请删除。
点击右侧标定按钮执行标定。
显示参数区域表示在图像 窗口绘制时采用的颜色 ,平滑区域是高斯平滑系数,值越大,平滑越强烈。
成功标定后,可以在标定结果选项卡查看 结果。
摄像机参数,摄像机位姿就是对应相机的内参,外参。
在代码生成选项卡内,可以点击插入代码,将生成的相机内参,外参,以数组变量形式导入到代码窗口使用。
生成参数具体使用可以参考如下代码
* Calibration 01: Code generated by Calibration 01
CameraParameters := ['area_scan_division',0.0186441,-520.011,8.35005e-006,8.3e-006,246.657,254.674,640,480]
CameraPose := [-0.00783001,-0.0153528,0.298274,11.077,32.5599,267.989,0]
*
CamParOriginal:=[0.00219846,-78129.2,5.46495e-06,5.5e-06,318.206,236.732,640,480]
CamParVirtualFixed:=CamParOriginal
CamParVirtualFixed[1]:=0
*上面三条是标定时候的参数
gen_radial_distortion_map(MapFixed,CamParOriginal,CamParVirtualFixed,'bilinear')
*生产径向畸变映射图,
*mapfixed是输出,
*CamParOriginal是标定后的参数,
*CamParVirtualFixed也是输出的参数,
*'bilinear'映射类型
read_image(Image,'pioneer')
map_image(Image,MapFixed,ImageRectifiedFixed)
dev_display (ImageRectifiedFixed)
复制代码
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4