【机器视觉】线阵相机模型说明以及使用HALCON标定助手对线阵相机进行标定

这篇具有很好参考价值的文章主要介绍了【机器视觉】线阵相机模型说明以及使用HALCON标定助手对线阵相机进行标定。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 相机内外参数(Intrinsics & Extrinsics)说明

线阵相机矫正所需参数共17个,其中11个参数为内参,6个参数为外参。

1.1 内参(Intrinsics ) 说明

线阵相机内参CamParam数量共11个,模型如下:

CamParam:= [Focus, Kappa, Sx, Sy, Cx, Cy, ImageWidth, ImageHeight, Vx, Vy, Vz]
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

Focus : 镜头焦距;
Kappa: 镜头畸变系数;正:枕形畸变 负:桶状畸变
Sx: 传感器像元宽度;
Sy: 传感器像元高度;
Cx: 表示镜头光轴在像平面坐标上的投影横坐标,一般初始化的时候设置为width/2;
Cy: 表示镜头光轴在像平面坐标上的投影纵坐标,一般初始化的时候设置为0,因为是一条线,所以纵坐标为0;
ImageWidth: 完整图片像素宽度;
ImageHeight: 完整图片像素高度;
Vx : 误差所致。x方向上运动速度,其实就是每拍摄一条线,x方向上的运动距离(宽),相机和运动方向不可能完全垂直,理论上为0最理想。
Vy: y方向上运动速度,其实就是在扫描的时候,多远距离拍摄一条线(高)
Vz: 误差所致。z方向上运动速度,其实就是每拍摄一条线,z方向上走的距离(深度),理论上为0最理想

1.2 外参(Extrinsics)说明

世界坐标系到相机坐标系(外参)。共有6个参数,表示了世界坐标系在相机坐标中的三维姿态。
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习
六个参数分别为x,y,z三个轴的旋转角度和x,y,z三个轴的平移量。
摄像机坐标(xc,yc,zc)到世界坐标(xw,yw,zw),
也就是外在参数模型如下,其中,代表旋转
矩阵和平移向量线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

2 使用Halcon标定助手进行相机标定

2.1 使用HALCON标定工具,设置标定板描述文件路径,以及相关参数

线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

2.2 标定设置

2.2.1 Setup

->选取合适的标定板文件或者自定义生成的标定板描述文件
->设定标定板厚度
->选取相机模型(线阵-多项式)
->设定像元大小、镜头焦距、运动速度等
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

2.2.2 Calibration

->取已经拍摄的用于标定的图像或使用相机助手获取标定板图像。
->在所有文件检测均有效后Calibrate按钮将由disable变为enable
->选中一张图像点击Set Reference设置参考文件。
->完成后点击Calibrate
设置参考的作用是什么?设置的是当你标定完成之后,使用相机内参外参进行矫正之后的图片。HALCON会将这个图片上的标定板中心点作为远点坐标,并且这张变换后的图片作为相机垂直照射的平面参考。
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习
下图由于导入的图像中标记提取失败,所以无法标定。必须保证所有图像都能提取到标记。提示检出质量问题时,如果对标定精度要求不是很高也是可以做标定的。此时Calibrate按钮是灰色的。
如果加载的图片找不到标定板,可以在最下方的标定板提取参数中改变参数,一般就能找提取到标定板了。最后点击标定按钮,就可以得到标定的参数了。
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

删除提取标记失败的55号图像,Calibrate变为高亮,点击即可进行标定。
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

2.2.3 Results

标定完成后即可获得标定的相机内参和外参结果。点击对应的Save按钮将参数保存到指定位置。
线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

2.2.4 Code Generation

线阵相机标定,线阵相机,机器视觉,人工智能,计算机视觉,机器学习

HALCON内代码生成:“*”星号代表注释文章来源地址https://www.toymoban.com/news/detail-562238.html

* Calibration 01: Code generated by Calibration 01
CameraParameters := ['line_scan_polynomial',0.153733,-114.127,93051.7,-4.24526e+07,-0.0433822,-3.50799e-05,7.04e-06,7.04e-06,3940.36,-0.362735,8192,6000,2.24896e-08,4.16196e-05,1.75223e-07]
CameraPose := [0.0177446,0.110862,0.898555,2.62363,347.663,180.539,0]

* Calibration 01: Sample code generated by Calibration 01
* Calibration 01: For demonstration purposes, we use the calibration
* Calibration 01: plate itself as sample object.
* Calibration 01: Therefore, we load the reference image
read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-20.11-Steady/examples/images/calib/calib_distorted_01.png')
* Calibration 01: Extract plate data from the image
TmpCtrl_PlateDescription := 'C:/Program Files/MVTec/HALCON-20.11-Steady/calib/caltab_30mm.descr'
TmpCtrl_FindCalObjParNames := ['gap_tolerance','alpha','skip_find_caltab']
TmpCtrl_FindCalObjParValues := [1,1,'false']
* Calibration 01: Create calibration model for managing calibration data
create_calib_data ('calibration_object', 1, 1, CalibHandle)
set_calib_data_cam_param (CalibHandle, 0, [], CameraParameters)
set_calib_data_calib_object (CalibHandle, 0, TmpCtrl_PlateDescription)
find_calib_object (Image, CalibHandle, 0, 0, 0, TmpCtrl_FindCalObjParNames, TmpCtrl_FindCalObjParValues)
get_calib_data_observ_points (CalibHandle, 0, 0, 0, TmpCtrl_MarkRows, TmpCtrl_MarkColumns, TmpCtrl_Ind, CameraPose)
* Calibration 01: Using the calibration plate as test object, the marks actually
* Calibration 01: lie above the corrected measurement plane. Therefore, we 'uncorrect'
* Calibration 01: the plane of measurement by the plate thickness here.
set_origin_pose (CameraPose, 0.0, 0.0, 0.001, CameraPose)
* Calibration 01: **********************************************************
* Calibration 01: Sample Task: Pose Estimation
* Calibration 01: **********************************************************
* Calibration 01: With known camera parameters, one image is enough to 
* Calibration 01: determine the new pose
* Calibration 01: **********************************************************
* Calibration 01: Sample Task: Image Rectification
* Calibration 01: **********************************************************
* Calibration 01: Choose the desired width of the visible area in world coordinates [mm]
TmpCtrl_RectificationWidth := 74
* Calibration 01: Convert to [m]
TmpCtrl_RectificationWidth := TmpCtrl_RectificationWidth / 1000.0
* Calibration 01: Adjust origin so the plate is roughly centered
set_origin_pose (CameraPose, -0.5*TmpCtrl_RectificationWidth, -0.4*TmpCtrl_RectificationWidth, 0, TmpCtrl_RectificationPose)
* Calibration 01: Generate the rectification map
gen_image_to_world_plane_map (TmpObj_RectificationMap, CameraParameters, TmpCtrl_RectificationPose, 640, 512, 640, 512, TmpCtrl_RectificationWidth / 640, 'bilinear')
* Calibration 01: Now, images can be rectified using the rectification map
map_image (Image, TmpObj_RectificationMap, TmpObj_RectifiedImage)
stop ()

到了这里,关于【机器视觉】线阵相机模型说明以及使用HALCON标定助手对线阵相机进行标定的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3D智能相机:带你读懂3D机器视觉如何实时扫描构建物体的3D模型

    作者:御剑飞行  3D智能相机是一种能够捕捉三维空间中物体形状和位置信息的相机。它可以在一个瞬间同时捕捉到物体的深度和颜色信息,并用这些数据创建一个三维模型。 3D智能相机工作方式示意图,图源@御剑飞行 3D智能相机能够捕获物体的更详细信息,包括其尺寸、形

    2024年04月09日
    浏览(55)
  • 机器视觉之Basler工业相机使用和配置方法(C++)

    basler工业相机做双目视觉用,出现很多问题记录一下: 首先是多看手册:https://zh.docs.baslerweb.com/software 手册内有所有的源码和参考示例,实际上在使用过程中,大部分都是这些源码,具体项目选择对应的示例代码。 可以通过balser的镜头选型工具,按照自己需要测量目标的距

    2024年02月07日
    浏览(41)
  • C#联合Halcon机器视觉框架源码

    本软件参考EV开发,共用 50多个算子 模块,基于 WPF+Halcon ,是非常不错的学习框架,需要什么功能可以自己添加,插件式开发非常方便。 整体代码目录结构如下: 一、Main模块 软件启动入口位置,将NExtVision设为启动项目。 LoadFrm用于初始化、增加预编译及加载插件等功能。

    2024年04月12日
    浏览(55)
  • c#联合halcon机器视觉通用视觉框架2。流程化开发

    c#联合halcon机器视觉通用视觉框架2。 流程化开发。 缺陷检测,定位,测量,OCR识别。 拉控件式。 在现代工业领域中,机器视觉技术已经成为了一个非常重要的应用方向。然而,要将这种技术应用到具体的生产场景中,需要一个有效的视觉框架来实现。在这方面,c#联合hal

    2024年04月13日
    浏览(49)
  • 机器视觉_HALCON_示例实践_1.检测圆形

    前面的文(用户指南/快速向导)差不多已经把HALCON的基本内容讲完了,并且在学习过程中还跑过一个简单示例——在单一背景下定位回形针。示例跑过,顿时觉得自己行了,但如果此时(假设你和我一样没有其他图像处理经验)你想上手解决一个实际问题,很可能寸步难行。

    2024年02月05日
    浏览(46)
  • 机器视觉Halcon-菜单助手读取图片方式及注意点

    【助手】→【打开新的image acquisition 】→【图像助手】→【选择路径】→【代码生成】→【插入代码】 注意:文件与选择路径的区别,以下是生成代码 1.文件-生成代码 输入参数:目录/图片具体夹路径(C:/Users/CP/Desktop/j/1.bmp) 输出参数:图像对象(Image) 2.选择路径(分段说

    2024年02月10日
    浏览(47)
  • 【朝夕教育】2023年04月 Halcon机器视觉-15种常用缺陷检测实例

    缺陷检测是一种通过计算机视觉技术来检测产品制造过程中的缺陷的方法。该技术可以检测出产品表面的缺陷,如裂纹、凹陷、划痕、气泡等,并且可以实时监测和诊断制造过程中的问题。在制造业中,机器视觉缺陷检测技术已经被广泛应用于各种产品的质量控制和检测工作

    2024年02月04日
    浏览(45)
  • 机器视觉中Halcon/Opencv/VisionPro/VisionMaster这些软件都要学吗?我应该如何选择?

    作为一位从业多年的机器视觉算法工程师。以下是我对Opencv、Halcon、VisionPro和VisionMaster这四个软件的个人综合评价,包括它们的优缺点以及适用场景。 Opencv 优点: 开源免费:  Opencv是一个开源的计算机视觉库,对于预算有限的项目和个人开发者来说,这是一个巨大的优势。

    2024年01月18日
    浏览(55)
  • 线阵相机之行触发

    行触发即外部信号控制相机进行每一行图像的采集 线阵相机传感器每次成像只会扫描一行图像,而每次采集的时机则会直接影响到最终图像效果,因此实际应用中一般都需要使用外部信号来控制相机采集的节拍。

    2024年02月21日
    浏览(57)
  • 线阵相机之帧超时

    1 帧超时的效果 在帧超时时间内相机若未采集完一张图像所需的行数,则相机会直接完成这张图像的采集,并自动将缺失行数补黑出图,机制有以下几种选择: 1. 丢弃整张补黑的图像 2. 保留补黑部分出图 3.丢弃补黑部分出图

    2024年02月22日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包