首页 > 其他分享 >HALCON-从入门到入门-相机标定-内参外参

HALCON-从入门到入门-相机标定-内参外参

时间:2024-06-20 16:28:05浏览次数:22  
标签:外参 入门 标定 HALCON 相机 calib CalibDataID data 坐标系

1.废话

为什么要进行相机标定

几个坐标系

像素坐标系(图片坐标系)

就是我们在电脑上看到图片的坐标系,以左上角为原点(2d坐标系)单位是像素pixel

相机坐标系

相机物方视野投影的坐标系,单位是mm

世界坐标系

就是真实的世界坐标系,单位是mm

标定的结果

标定的结果中有内参矩阵,外参,畸变系数

先说内参矩阵表示为K

包含的信息有焦距,感光芯片尺寸和分辨率(像素数量)等信息

包含了像素坐标系和相机坐标系的互相转换信息。

畸变系数

表示相机镜头 加工或安装过程中造成的畸变

然后是外参,包括旋转矩阵和平移向量

包含了相机坐标系和世界坐标系的转换关系

根据上面的三个标定数据,我们就可以将一个像素坐标转换为世界坐标系中的真实坐标了。

这对于我们使用相机进行测量,引导具备重要意义。

2.标定助手标定

首先拍一些标定板的照片

打开halcon标定助手

点击加载按钮 加载一些图片进来(也可以连接相机直接拍摄)

点击每一张图片,查看halcon对标定板的识别情况

正常情况就是会识别到标定板上的每个点,并给出坐标轴显示

不同姿态的标定板都可以稳定识别

识别算法还是写得非常棒

点击第一张图片(也可以选择其他的,主要是看标定结果你是用在平面上还是一个斜面上)

设置为参考位姿

最后给出的外参结果就是基于这个选择生成的。

确认其他所有的细节都搞定了之后点击标定按钮

好的,告诉我们标定成功了

然后给出了标定结果

包括摄像机参数-内参

摄像机位姿-外参

选择后面的代码生成

点击上面标定一栏的插入代码,即可将标定结果插入到脚本编写界面

3.脚本标定

首先把图片加载进来

list_files ('G:/20240620-halcon_calib/image', 'files', Files)

创建相机标定对象

gen_cam_par_area_scan_division (0.008, 0, 0.0000086, 0.0000086, 320, 256, 640, 512, StartCamPar)
CalTabDescrFile := 'caltab_big.descr'
create_calib_data ('calibration_object', 1, 1, CalibDataID)
set_calib_data_cam_param (CalibDataID, 0, [], StartCamPar)
set_calib_data_calib_object (CalibDataID, 0, CalTabDescrFile)

这里的相机参数 需要指定一个初始的,不需要太精确

标定板描述文件,根据算子生成,官方的标定板在安装目录有现成的标定板描述文件

接着循环识别每一张图片,使用刚才创建的标定对象识别每一张图片

for Index := 0 to |Files|-1 by 1
    read_image (Image, Files[Index])
    
    
    find_calib_object (Image, CalibDataID, 0, 0, Index, [], [])
    get_calib_data (CalibDataID, 'camera', 0, 'init_params', StartCamPar)
    get_calib_data_observ_points (CalibDataID, 0, 0, Index, Row, Column, Index2, Pose)
    get_calib_data_observ_contours (Contours, CalibDataID, 'caltab', 0, 0, Index)
    gen_cross_contour_xld (Cross, Row, Column, 6, 0.785398)
    dev_set_color ('green')
    dev_display (Contours)
    dev_set_color ('yellow')
    dev_display (Cross)
endfor

等到每一张图片都识别成功了,调用下面代码执行标定

calibrate_cameras (CalibDataID, Error)
get_calib_data (CalibDataID, 'camera', 0, 'params', CamParam)

没有问题

4.文件

标签:外参,入门,标定,HALCON,相机,calib,CalibDataID,data,坐标系
From: https://blog.csdn.net/linux_huangyu/article/details/139833173

相关文章

  • 软件测试入门基础03-MySQL
    前言:这是我个人的学习记录,我是科班在读有一定基础,很多东西不会特别详细,欢迎大佬指点,也很高兴有人看了能得到帮助这一小节的内容是MySQL,我已经修完数据库,但时间久远忘记许多于是又看了一遍做个笔记。印象中数据库挺简单,简单的说就是增删改查。我修这门课时把实验做完基本上知......
  • langchain入门
    LangChain为各种大型语言模型应用提供通用接口,从而简化应用程序的开发流程,轻松地构建如下所示的RAG应用 理解langchain的运作机制LangChain是一个为构建大型语言模型(LLMs)驱动的应用程序而设计的框架。它的核心目标是简化从开发到生产的整个应用程序生命周期。模块化构......
  • 初级冥想的入门方法:开启心灵之旅的第一步|流静
    冥想,这一古老的修行方式,如今在现代社会中焕发出新的活力。对于初学者而言,迈入冥想的大门似乎充满神秘与未知。然而,通过简单的入门方法,每个人都可以轻松开始这段心灵之旅。初级冥想的起步,在于寻找一个安静而舒适的空间。这个空间可以是家中的一角,也可以是公园里的长椅,......
  • MySQL入门学习-连接查询.INNER JOIN
        表的连接在数据库中扮演着至关重要的角色。当我们处理多个表之间的关联数据时,连接查询是必不可少的。    假设我们有两个表A和B,它们有一个共同的字段。现在,我们想从A和B中选择出所有匹配的数据。这就是连接查询的作用。    以下是一个基本的......
  • MySQL入门学习-子查询.列子查询
        列子查询是MySQL中一种常用的子查询类型,它返回一个单列的结果集,该结果集可以在主查询中作为一个列使用。一、以下是一些列子查询的例子:1.简单的列子查询```sqlSELECTcolumn1,    (SELECTcolumn2FROMtable2WHEREtable1.column1=table2.column......
  • Windows安全加固总结(非常详细)零基础入门到精通,收藏这一篇就够了
    为了达到安全的目的,一般来说我们需要关注操作系统的八个方面:补丁管理>账号漏洞>授权管理>服务管理>功能优化>文件管理>远程访问控制>日志审计其中:补丁管理使用最新版的补丁,避免使系统存在已知的漏洞,从而被攻击者利用。账号口令梳理出系统中正在使......
  • 基于Halcon开发的类似VIDI的通用深度学习软件
    基于Halcon开发的类似康耐视VIDI的通用深度学习软件基于Halcon20.11+QT5.12+VS2017开发,目标检测,语义分割和图片分类都已经工具化并且可可根据项目需要任意配置,各个深度学习工具的标注,训练,数据集,图片集,模型参数,结果筛选等等都已完成,并已实际应用于工业外观检测项目。和康耐......
  • 人大这波666! 国内首本中文版的LLM大语言模型入门指南!(PDF免费送)
    我就知道人大还留有后手。自从这篇中文大模型综述发布以后,在全网收到了一致好评。人大这边也一直没闲着,在后续一年之内修改了十多遍,收录了近千篇的参考文献,快马加鞭赶出了这本大语言模型中文版。一经发布就震惊国内高校和研究人员,是更适合中国体制的大模型指南。本书内容......
  • 数据分析第十二讲 数据可视化入门(一)
    数据可视化入门(一)在完成了对数据的透视之后,我们可以将数据透视的结果通过可视化的方式呈现出来,简单的说,就是将数据变成漂亮的统计图表,因为人类对颜色和形状会更加敏感,然后再进一步解读数据背后隐藏的商业价值。在之前的课程中,我们已经为大家展示过用使用Series或DataFrame......
  • 【第12章】别人的工作流,如何使用和调试(下)?(安装视频生成模型SVD/服务器报错/爆显存/丢图
    ......