halcon之屌炸天的自标定(1)
2015-12-15 15:05
399 查看
本次先对halcon的自标定做个整体介绍,了解屌炸天的自标定在实际应用中的应用与实现方法,具体的编程细节将在后续的文章中介绍。
halcon提供了一种自标定的算子,它可以在不用标定板的情况下,标定出相机内参(无焦距),相对于多幅标定无法获取相机的外参。
求出了相机内参就可以进行畸变校正,因而自标定相对于多幅标定,在畸变校正方面更快捷,这样设备在现场更容易操作、维护。
在畸变校正以后我们同样可以放置一个参考物求取像素当量,构建XY世界坐标系,以用于测量、定位等应用。
上述代码是一个常规的自标定流程:
1.求出拍摄物体的边缘XLD
2.使用radial_distortion_self_calibration函数,根据边缘求出相机内参
3.change_radial_distortion_cam_par 求出理想无畸变内参
4.change_radial_distortion_image 根据相机内参,对图像进行畸变校正
更多例程参考halcon example
自标定的原理来自此论文,论文要钱无法获取实在遗憾无法深入了解,哪位能下载到记得email我一份。
T. Thormälen, H. Broszio: “Automatic line-based estimation of radial lens distortion”; in: Integrated Computer-Aided Engineering; vol. 12; pp. 177-190; 2005.
但是根据说明文档可以了解到:halcon的自标定根据提取到是物体边缘的直线,求出相机畸变系数。
因为畸变一般在图像的边缘更严重,所以需要保证在图像的四周边缘有足够的直线线段。
当然在实际项目中拍摄物体不可能都像例程中一样有理想的直线边缘,替代方法是:用菲林片制作一张网格黑色印制(10*10,可以根据自己实际情况调整)充满整个视野,
相机拍摄一次求取内参,根据此结果进行标定,同时还可以根据网格求出像素当量,构建XY世界坐标系。
NOTICE:使用halcon自标定需要保证运行环境内存>=2G,当使用多项式模式标定则需要>=4G,否则会出现error 6001:memory not enough。
关注微信:halconhub,每日获取halcon精华文章
halcon提供了一种自标定的算子,它可以在不用标定板的情况下,标定出相机内参(无焦距),相对于多幅标定无法获取相机的外参。
求出了相机内参就可以进行畸变校正,因而自标定相对于多幅标定,在畸变校正方面更快捷,这样设备在现场更容易操作、维护。
在畸变校正以后我们同样可以放置一个参考物求取像素当量,构建XY世界坐标系,以用于测量、定位等应用。
edges_sub_pix (GrayImage,Edges,'canny',1.0,20,40) segment_contours_xld (Edges,ContoursSplit,'lines_circles',5,8,4) radial_distortion_self_calibration (ContoursSplit,SelectedContours, \ 640,480,0.08,42,'division', \ 'variable',0,CameraParam) get_domain (GrayImage,Domain) change_radial_distortion_cam_par ('fullsize',CameraParam,0,CamParamOut) change_radial_distortion_image (GrayImage,Domain,ImageRectified, \ CameraParam,CamParamOut)
上述代码是一个常规的自标定流程:
1.求出拍摄物体的边缘XLD
2.使用radial_distortion_self_calibration函数,根据边缘求出相机内参
3.change_radial_distortion_cam_par 求出理想无畸变内参
4.change_radial_distortion_image 根据相机内参,对图像进行畸变校正
更多例程参考halcon example
radial_distortion_self_calibration.hdev | Calibrate the radial distortion coefficient and the center of distortion | |
radial_distortion_comparison.hdev | Compare results of camera calibration and radial distortion self-calibration |
T. Thormälen, H. Broszio: “Automatic line-based estimation of radial lens distortion”; in: Integrated Computer-Aided Engineering; vol. 12; pp. 177-190; 2005.
但是根据说明文档可以了解到:halcon的自标定根据提取到是物体边缘的直线,求出相机畸变系数。
因为畸变一般在图像的边缘更严重,所以需要保证在图像的四周边缘有足够的直线线段。
当然在实际项目中拍摄物体不可能都像例程中一样有理想的直线边缘,替代方法是:用菲林片制作一张网格黑色印制(10*10,可以根据自己实际情况调整)充满整个视野,
相机拍摄一次求取内参,根据此结果进行标定,同时还可以根据网格求出像素当量,构建XY世界坐标系。
NOTICE:使用halcon自标定需要保证运行环境内存>=2G,当使用多项式模式标定则需要>=4G,否则会出现error 6001:memory not enough。
关注微信:halconhub,每日获取halcon精华文章
相关文章推荐
- CiTRIX XenServer 6.5安装体验
- ThreadLocal
- JAXB--简单应用(一)
- Java实现数据库和数据表的二级联动
- 118 session & cookie
- gem5: 在缓存代码中如何识别缓存是L1,L2还是L3呢?
- SQL Mirroring[Hot back up with Double machine]
- 图像添加柯西分布噪声
- PHP开启opcache方法
- CentOS下Redis数据库的基本安装与配置教程
- ClassNotFoundException:scala.PreDef$
- SELinux的启动和关闭
- wampserver解决“不能切换在线”及运行“404问题”
- 55分钟学会正则表达式
- #pragma预编译指令
- 深度剖析之 Material Design Android Library
- C++字符串切分(split)
- cobbler buildiso报错
- MyEclipse8.5 基于jax-ws的webservice对象(实体)传递的开发
- springAOP事物管理不生效原因总结