1. 标定参数的构成

• 标定参数分为相机的内参和外参;
• 内参:内参标定的是摄像系统的内部结构和关系,镜头的畸变在出厂的时候就已经固定下来的,唯一可能改变的是镜头和相机之间的组装关系。所以如果相机和镜头没有拆卸过,就不需要重新标定相机的内参了;
• 外参:外参是指摄像系统的坐标系与世界坐标系之间的关系,如果测量表面上下移动了,或测量表面旋转了,这时需要重新标定相机的外参,也就是重新确定摄像机在世界坐标系中的姿态。而标定外参只需要一张图像即可。
世界到相机的变换矩阵如下,object to camera

相机到世界的变换矩阵如下,camera to world

2. 标定流程代码

Halcon代码以及标定板图片/标定板参数文件下载地址:
链接:https://pan.baidu.com/s/1jbF9KIvPIwte1dOR7nk4fA
提取码:3qml

以下是halcon代码:以下代码完成的事情和使用标定助手完成内外参标定是一样的。

open_framegrabber ('KsjCamera_Release-19_11_x64', 1, 1, 0, 0, 0, 0, 'progressive', 8, 'default', -1, 'false', 'default', '255', 0, -1, AcqHandle)
grab_image_start (AcqHandle, -1)* 1.创建标定模型
create_calib_data ('calibration_object', 1, 1, CalibDataID)* 2.设置相机初始参数
* 相机类型/焦距/Kappa/像元尺寸/中心点坐标/分辨率
StartParameters:=['area_scan_division',0.008,0,3.2e-006,3.2e-006,1024,768,2048,1536]
set_calib_data_cam_param (CalibDataID, 0, [], StartParameters)* 3.设置标定板参数
set_calib_data_calib_object (CalibDataID, 0, './Mycaltab.descr')dev_get_window (WindowHandle)
for Index := 1 to 12 by 1grab_image_async (Image, AcqHandle, -1)write_image (Image, 'jpeg', 0, './'+Index)* 4.标定板的查找(圆形阵列、蜂窝)tryfind_calib_object (Image, CalibDataID, 0, 0, Index-1, [], [])* 5.显示  get_calib_data_observ_points (CalibDataID, 0, 0, Index-1, Row, Column, Index1, Pose)gen_cross_contour_xld (Cross, Row, Column, 26, 0.785398)get_calib_data_observ_contours (Contours, CalibDataID, 'caltab', 0, 0, Index-1)disp_3d_coord_system (WindowHandle, StartParameters, Pose, 0.02)      catch (Exception)Index:=Index-1endtrystop()
endforclose_framegrabber (AcqHandle)* 6.摄像机标定
calibrate_cameras (CalibDataID, Error)
* 7.获得内外参
get_calib_data (CalibDataID, 'camera', 0, 'params', CameraParam)
get_calib_data (CalibDataID, 'calib_obj_pose', [0,0], 'pose', obj_in_camera)
* 去掉厚度
set_origin_pose (obj_in_camera, 0, 0, 0.001, PoseNewOrigin)//标定板厚度1mm
* 保存内外参
write_cam_par (CameraParam, './campar.dat')
write_pose (PoseNewOrigin, './campose.dat')

Halcon 摄像机标定流程-代码实现相关推荐

  1. Halcon 摄像机标定流程

    Halcon标定流程 摄像机分两种,一种是面扫描摄像机(Area Scan Camera),一种是线扫描摄像机(Line Scan Camera).准确来说,叫摄像机系统比较正确.两者的区别我也提一提 ...

  2. halcon相机标定

    一.相机标定的目的: 1.摄像头拍出来的原始图片是存在畸变的,我们需要通过标定来矫正这种畸变. 2.相机坐标系 到 世界坐标系 的转化,需要知道图片上像素点的距离转化到实际中代表多长. 3.标定分为内 ...

  3. Python+OpenCV学习(17)---摄像机标定

    Python+OpenCV学习(17)---摄像机标定 原文:http://blog.csdn.net/firemicrocosm/article/details/48594897 利用python学 ...

  4. Halcon标定板标定流程

    一.相机内参标定 目的:标定内参的目的是消除镜头的畸变. 面阵相机的内参由一个8位的数组组成包括: startCamPar:=[Focus,Kappa,Sx,Sy,Cx,Cy,ImageWidth,I ...

  5. Halcon 圆形标定板标定基本流程-标定助手操作

    Halcon 圆形标定板基本流程 1. 认识标定板: 2. 生成标定板的描述文件 3. 开始标定 4. 采集标定板的图像 5. 得到相机内外参 1. 认识标定板: 这个标定板的规格是 7×7: 标定板 ...

  6. 双目立体视觉源代码 双目立体视觉匹配程序 双目视觉3d成像(三维重构图像处理) 基于双目视觉的深度计算和三维重建 opencv写的双目视觉摄像机标定和三维重建代码

    双目视觉/双目标定源码/图片集标定匹配三维重建坐标计算OpenCV 1.双目立体视觉源代码(包括标定,匹配,三维重建) 2.双目视觉实验图片集(双目立体视觉中使用的标准实验图,适合初学者进 行实验使用 ...

  7. halcon相机标定及图像矫正(代码)

    侵删 1 halcon相机标定和图像矫正 对于相机采集的图片,会由于相机本身和透镜的影响产生形变,通常需要对相机进行标定,获取相机的内参或内外参,然后矫正其畸变.相机畸变主要分为径向畸变和切向畸变,其 ...

  8. Halcon九点及旋转标定流程

    参考文章:剖析Halcon 9点标定旋转中心标定与使用_william9987的博客-CSDN博客_halcon旋转标定 一.XY轴九点标定: 使用仿射变换: 夹具夹取产品或者标定块,选取一个特征,开 ...

  9. 【Halcon笔记1】基于Halcon软件的【摄像机标定】以及【内部参数】和【外部参数】的求解过程【原理细节详解】

    [1]具体请看Learning OpenCv[摄像机标定] [2]马颂德[摄像机定标] [3]<基于Halcon软件的摄像机标定>论文

最新文章

  1. 网站建设中的五大常见问题
  2. 51单片机c语言乘法,求一个 89C51 简易计算器的c语言程序 只要加减乘除就行!
  3. c字符串中包含双引号_必须知道的C语言知识细节:单引号和双引号正确用法
  4. 获取目录文件.bat
  5. mysql_safe作用_mysqld_safe
  6. 第三百七十二天 how can I 坚持
  7. solr5.3.1 mysql_Solr-5.3.1 dataimport 导入mysql数据
  8. 有什么可以测试耳机性能的软件吗,测试耳机性能好坏的简单方法
  9. crm客户管理软件的精髓
  10. 暴雪战网国际版[国区登录战网国际版方法]
  11. java将大写数字转换成小写并输出
  12. MYSQL数据库备份导出
  13. A Java Runtime Environment (JRE) or Java Development Kit (JDK)...
  14. 【Scratch考级99图】图10-等级考试scratch 画正五边形
  15. Crowd 安装备注
  16. 抖音何以为“抖音”?网友:原来如此。。。
  17. Wise Care 365 Pro(系统优化工具) 绿色单文件特别版
  18. Several approaches to non-archimedean geometry
  19. mac上可以直接查看exif信息
  20. JavaScript - 取小数点后某几位数

热门文章

  1. dell R710 更换raid卡后,raid卡信息没有了,处理方案
  2. ubuntu16 安装opencv
  3. 对于(不是特别不合理)的指摘、的对应方式(学会调整,不要一根筋)
  4. vue-cli3 中 sockjs-node/info?t=报错 的解决方法
  5. 【问题解决方案】visudo: /etc/sudoers is busy, try again later
  6. iOS上架被拒理由及相关解决方案记录
  7. Nginx + uWSGI + flask + socketio 部署解决方案
  8. JSON跨域解决方案收集
  9. Oracle中用户和架构之间的区别?
  10. 什么是在JavaScript中扩展错误的好方法?