Halcon 单相机标定+消除径向畸变

单相机标定通常是相机使用的第一步,只有通过标定才能准确的获得相机的内参,以便于进行消除畸变、1D/2D测量等后续操作。

1、生成标定板描述文件

gen_caltab (7, 7, 0.0125, 0.5, 'caltab.descr', 'caltab.ps')

参数含义可以查手册(f1),运行后会在当前目录下生成两个文件: caltab.descr:标定板描述文件用于接下来的标定 caltab.ps:可用于打印标定板

2、标定助手

1)、描述文件选择刚刚生成的 2)、选择全标定,相元的高、宽可以咨询相机的商家询问,焦距可以查看镜头上,一般有标明,这里的参数只是初始参数。 3)、标定栏,选择采集助手,点实时,有两种合格的状态提示(确定是完美品质,品质有问题不耽误使用),失败一般是没有完全覆盖标定板。 4)、点采集20张左右的图片,尽量覆盖整个视场,覆盖所有角度(3d)。 5)、选择一张图片作为基础参考位姿。 6)、可以保存图片,如果标定后续有可能利用标定助手生成的代码进行标定可以用。失败的图片要移除,否则无法标定。 7)、点击标定,可以看到结果栏的内外参结果,可以保存成文件。用的时候可以直接读取进程序使用。 8)、在代码生成栏,可以插入tuple数据,也可以插入标定代码。

3、实例:单相机标定+消除径向畸变

* 标定 + 消除径向畸变
* Calibration 01: Code generated by Calibration 01
CameraParameters := [0.0057932,-11394.5,6.00136e-006,6e-006,330.616,235.876,640,480]
CameraPose := [0.00223981,-0.00965318,0.110595,6.81103,1.68414,177.246,0]

* Image Acquisition 01: Code generated by Image Acquisition 01
change_radial_distortion_cam_par ('adaptive', CameraParameters, 0, CamParamOut)
open_framegrabber ('DirectShow', 1, 1, 0, 0, 0, 0, 'default', 8, 'rgb', -1, 'false', 'default', '[0] LRCP  USB2.0', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)
while (true)
    grab_image_async (Image, AcqHandle, -1)
    * Image Acquisition 01: Do something
    gen_radial_distortion_map (Map, CameraParameters, CamParamOut, 'bilinear')
    map_image (Image, Map, ImageMapped)
endwhile
close_framegrabber (AcqHandle)

 

posted @ 2020-10-28 10:23  sunyheart  阅读(980)  评论(0编辑  收藏  举报