HALCON标定板制作、标准文件输出方法、算子讲解

利用 Halcon软件自制标定板

在这里插入图片描述
参考博客:
halcon相机标定及图像矫正
Halcon学习 标定助手
关键算子:

gen_caltab

( : : XNum, YNum, MarkDist, DiameterRatio, CalPlateDescr, CalPlatePSFile : )
为具有矩形排列标记的标定板生成标定板描述文件和相应的后记文件。
该算子可以制作所需的标定板参数文件 Caltab.descr 和标定板图像文件 Caltab.ps。

参数:

输入:

  • XNum
    X方向的标记点数。
    默认值:7
    建议值:5、7、9
    建议增加:1
    限制:XNum > 1

  • YNum
    Y方向的标记点数。
    默认值:7
    建议值:5、7、9
    建议增加:1
    限制:YNum > 1

  • MarkDist
    标记的距离(米)。
    默认值:0.0125
    建议值:0.1、0.0125、0.00375、0.00125
    限制:0.0 < MarkDist

  • DiameterRatio
    标记直径与标记距离的比值。
    默认值:0.5
    建议值:0.5、0.55、0.6、0.65
    限制:0.0 < diameter atio < 1.0

输出:

  • CalPlateDescr
    标定板名称说明。
    默认值:“caltab.descr”
    值列表:‘caltab.descr’, ‘caltab_100mm.descr’, ‘caltab_10mm.descr’, ‘caltab_200mm.descr’, ‘caltab_30mm.descr’
    文件扩展名:.descr

  • CalPlatePSFile
    PostScript文件的文件名。
    默认值:“caltab.ps”
    文件扩展名:.ps

描述:

gen_caltab生成带有矩形标记的标准HALCON校准板的描述。此校准板由一个黑色框架包围的白色平面上的XNum乘以YNum黑色圆形标记组成。这些标记被安排在一个具有YNum和XNum等距行和列的矩形网格中。这些行和列之间的距离以米为单位定义参数MarkDist。
标记的直径可由参数diameter设置,并由公式 ==diameter = MarkDist * diameter ==定义。
使用0.01 m的标记和0.5的直径比之间的距离,黑边框的宽度变为8厘米,标记的半径设置为2.5 mm。校准板的坐标系位于所有标记的重心,其z轴指向校准板,其x轴向右,其y轴向下。

校准板CalPlateDescr包含的文件描述,例如:行和列的数量校准板,周围的边框(见find_caltab),三角形方向标记,在z方向上坐标系到平板表面的偏移量, 标定板坐标系中给出的所有标定板的x、y坐标和半径由 t 和 z 表示的方向和偏移量的定义是可选的,可以注释掉。校准盘描述的默认HALCON文件扩展名是“descr”。gen_caltab生成的文件如下所示(注释在行首用’#'标记):

例子:

按以下生成的命令 :

gen_caltab (9, 9, 0.015, 0.5, 'caltab.descr', 'caltab.ps')
  • 1.标定板参数文件 Caltab.descr 可以用记事本打开,内容见下;
  • 2.标定板图像Caltab.ps文件可以用 Photoshop打开,图片见下。

解释:

图像尺寸的计算方式:按上述文件参数为标定板的点阵式 9*9的,每个点之间的间距是
0.015米,原点直径与每个点之间距离的比值为 0.5。最后两个文件时输出,可以通过后面的
文件夹符号来改变存储位置。或者用./’caltab.descr’的方式存在当前目录下。

  • 3.标定板黑边外延到黑边外延的距离计算式如下,所以我们标定板为150mm*150mm:
//标定板原点直径
DiameterRatio*MarkDist=0.015*1000*0.5=7.5 mm   
//本文参数导出的标定板尺寸
(Xnum+1*MarkDist*1000 =9+1*0.015*1000=150 mm   
//但是算上白边的整个宽度为 :
(Xnum+1*MarkDist*1000*(1+0.0201)=150*0.0201=153.015 mm

在这里插入图片描述
标定板参数文件 Caltab.descr 内容如下 :

# Plate Description Version 2
# HALCON Version 13.0 --  Wed Dec 18 16:56:47 2019
# Description of the standard calibration plate
# used for the camera calibration in HALCON
# (generated by gen_caltab)
#
#标记点行列数
标定板宽度、高度
标记点中心距
# 9 rows x 9 columns
# Width, height of calibration plate [meter]: 0.15, 0.15
# Distance between mark centers [meter]: 0.015# Number of marks in y-dimension (rows)
r 9# Number of marks in x-dimension (columns)
c 9Z方向坐标系偏移[](可选)
#   offset of coordinate system in z-dimension [meter] (optional):
z 0
标定板的矩形边框(边缘和黑色边框)
# Rectangular border (rim and black frame) of calibration plate
标定板的边缘
#   rim of the calibration plate (min x, max y, max x, min y) [meter]:
o -0.0765 0.0765 0.0765 -0.0765
黑色边框的外边框
#   outer border of the black frame (min x, max y, max x, min y) [meter]:
i -0.075 0.075 0.075 -0.075 
由两个角点构成的三角形角标记
#   triangular corner mark given by two corner points (x,y, x,y) [meter]
#   (optional):
t -0.075 -0.06 -0.06 -0.075黑框宽度[]
#   width of the black frame [meter]:
w 0.00375标定点:x y半径[]
# calibration marks:  x y radius [meter]在第一行每个标记点的每个坐标值
# calibration marks at y = -0.06 m
-0.06 -0.06 0.00375
-0.045 -0.06 0.00375
-0.03 -0.06 0.00375
-0.015 -0.06 0.00375
0 -0.06 0.00375
0.015 -0.06 0.00375
0.03 -0.06 0.00375
0.045 -0.06 0.00375
0.06 -0.06 0.00375在第二行每个标记点的每个坐标值
# calibration marks at y = -0.045 m
-0.06 -0.045 0.00375
-0.045 -0.045 0.00375
-0.03 -0.045 0.00375
-0.015 -0.045 0.00375
0 -0.045 0.00375
0.015 -0.045 0.00375
0.03 -0.045 0.00375
0.045 -0.045 0.00375
0.06 -0.045 0.00375# calibration marks at y = -0.03 m
-0.06 -0.03 0.00375
-0.045 -0.03 0.00375
-0.03 -0.03 0.00375
-0.015 -0.03 0.00375
0 -0.03 0.00375
0.015 -0.03 0.00375
0.03 -0.03 0.00375
0.045 -0.03 0.00375
0.06 -0.03 0.00375# calibration marks at y = -0.015 m
-0.06 -0.015 0.00375
-0.045 -0.015 0.00375
-0.03 -0.015 0.00375
-0.015 -0.015 0.00375
0 -0.015 0.00375
0.015 -0.015 0.00375
0.03 -0.015 0.00375
0.045 -0.015 0.00375
0.06 -0.015 0.00375# calibration marks at y = 0 m
-0.06 0 0.00375
-0.045 0 0.00375
-0.03 0 0.00375
-0.015 0 0.00375
0 0 0.00375
0.015 0 0.00375
0.03 0 0.00375
0.045 0 0.00375
0.06 0 0.00375# calibration marks at y = 0.015 m
-0.06 0.015 0.00375
-0.045 0.015 0.00375
-0.03 0.015 0.00375
-0.015 0.015 0.00375
0 0.015 0.00375
0.015 0.015 0.00375
0.03 0.015 0.00375
0.045 0.015 0.00375
0.06 0.015 0.00375# calibration marks at y = 0.03 m
-0.06 0.03 0.00375
-0.045 0.03 0.00375
-0.03 0.03 0.00375
-0.015 0.03 0.00375
0 0.03 0.00375
0.015 0.03 0.00375
0.03 0.03 0.00375
0.045 0.03 0.00375
0.06 0.03 0.00375# calibration marks at y = 0.045 m
-0.06 0.045 0.00375
-0.045 0.045 0.00375
-0.03 0.045 0.00375
-0.015 0.045 0.00375
0 0.045 0.00375
0.015 0.045 0.00375
0.03 0.045 0.00375
0.045 0.045 0.00375
0.06 0.045 0.00375# calibration marks at y = 0.06 m
-0.06 0.06 0.00375
-0.045 0.06 0.00375
-0.03 0.06 0.00375
-0.015 0.06 0.00375
0 0.06 0.00375
0.015 0.06 0.00375
0.03 0.06 0.00375
0.045 0.06 0.00375
0.06 0.06 0.00375

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490947.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乘法逆元小结

在求解除法取模问题(a/b)%m时&#xff0c;我们可以转化为(a%(b∗m))/b&#xff0c; 但是如果b很大&#xff0c;则会出现爆精度问题&#xff0c;所以我们避免使用除法直接计算。 可以使用逆元将除法转换为乘法&#xff1a; 假设b存在乘法逆元&#xff0c;即与m互质&#xff0…

国产光刻机的现状究竟如何?

来源&#xff1a;人民网-上海频道随着信息社会的迅速发展&#xff0c;手机、电脑、电视等各种电子设备越来越“迷你”&#xff0c;从之前的“大哥大”到现在仅仅几个硬币厚的时尚手机&#xff0c;从老式的矮胖电视到如今轻薄的液晶电视&#xff0c;都不离开集成电路的发展&…

pytorch自定义卷积核权值参数

pytorch中构建卷积层一般使用nn.Conv2d方法&#xff0c;有些情况下我们需要自定义卷积核的权值weight&#xff0c;而nn.Conv2d中的卷积参数是不允许自定义的&#xff0c;此时可以使用torch.nn.functional.conv2d简称F.conv2d torch.nn.functional.conv2d(input, weight, biasN…

如何使用UR机器人模拟软件URsim

如何使用UR机器人模拟软件URsim 机器人软件适用版本&#xff1a;Polyscope v1.3及以上 适用机器人&#xff1a;UR3、UR5、UR10 由于优傲机器人的系统是基于Linux核心开发的&#xff0c;模拟软体URsim也是在Linux系统下运行&#xff0c;通常大家使用的电脑系统为Windows&#…

C++中派生类隐式调用与显式调用基类的构造函数

通过派生类的构造函数调用基类的构造函数有两种方式&#xff0c;隐式和显式两种。 所谓隐式方式就是在派生类的构造函数中不指定对应的基类的构造函数&#xff0c;这个时候调用的是基类的默认构造函数(即含有默认参数值或不带参数的构造函数)。而所谓显式方式&#xff0c;就是在…

中国团队新型类脑芯片登上《自然》封面

来源&#xff1a;澎湃新闻网从AlphaGo战胜人类顶级围棋选手&#xff0c;到人工智能系统以90%准确率诊断儿科疾病&#xff0c;近年来&#xff0c;人工智能的突破大多从智能的某个领域接近或超过人类智能&#xff0c;距离达到人类水平的人工通用智能&#xff08;AGI&#xff0c;A…

20145324 《Java程序设计》第6周学习总结

20145324 《Java程序设计》第6周学习总结 教材学习内容总结 第十章 1、使用输入串流将数据从来源取出 InputStream 使用输出串流将数据写入目的地 OutStream 2、dump()方法并没有限定来源或目的地真实形式&#xff0c;依赖InputStream、OutStream 3、可以使用dump()从HTTP服务器…

MATLAB Robotic Toolbox 机器人工具箱示例

程序是基于Matlab2016a&#xff0c;工具箱版本为Robotic Toolbox 10.2 参考博客&#xff1a; MATLAB机器人工具箱使用 Matlab Robotic Toolbox V9.10工具箱(三)&#xff1a;轨迹规划 六轴机器人建模方法、正逆解、轨迹规划实例与Matalb Robotic Toolbox 的实现 效果&#xff1a…

人工智能最受欢迎的十大TED演讲

来源&#xff1a;DataCastle数据城堡当我们过于关注机器学习的技术实现时&#xff0c;往往就会忽略技术在未来的应用及其政治后果。本文并没有讨论最适合解决某个问题可以用什么语言或算法&#xff0c;而是从最受欢迎的非营利组织TED中收集了一系列演讲。在这一系列的演讲中&am…

C++编程(一):匈牙利命名法

匈牙利命名法 许多 Windows 程序员都使用“匈牙利标记法”作为变量命名约定。这是为了纪念具有传奇色彩的微软程序员 Charles Simonyi。这种标记法非常简单&#xff0c;其基本原则为&#xff1a; 即变量名&#xff08;标识符&#xff09;以一个或者多个小写字母开始&#xff0…

jQuery基本过滤选择器

1 <% page language"java" import"java.util.*" pageEncoding"utf-8"%>2 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">3 <html>4 <head>5 <!-- jQuery基本过滤选择器 -->6 …

IndexError: tensors used as indices must be long, byte or bool tensors

下面的程序会报错IndexError: tensors used as indices must be long, byte or bool tensors mask torch.Tensor([True,True,False]) a torch.Tensor([3,2,1]) a[mask]0 print(a) 原因是索引要为long, byte 或 bool类型&#xff0c;因此需要将mask转换为bool类型&#xff0…

工业机器人国内外的发展现状

工业机器人国内外的发展现状 工业机器人是集合了机械原理、系统动力学、机构运动学、计算机技术、控制理论、传感和人工智能等多种先进技术于一身的综合性装备[10]。1959年&#xff0c;由享有“机器人之父”美誉的恩格尔﹒伯格先生和德奥尔先生于美国共同发明了第一台工业机器…

知识图谱、深度学习、AutoML,推荐系统与新技术结合将碰撞出怎样的火花?

来源&#xff1a;CSDN App近日&#xff0c;来自意大利米兰理工大学 Maurizio 团队发表的一篇极具批判性的文章火了。这篇文章剑指推荐系统领域的其他数十篇论文&#xff0c;并通过多项试验证明这些论文中基于深度学习的推荐算法大部分都存在不同程度的数据集缺失和源码缺失的问…

团队博客 一 需求分析

团队名字&#xff1a;全都是土豆 团队成员&#xff1a;组长&#xff1a;张哲 成员&#xff1a;冯钰彤、魏利华 博客地址&#xff1a;张哲&#xff1a;http://www.cnblogs.com/zz0906/ 魏利华&#xff1a;http://www.cnblogs.com/a1397240667/ 冯钰彤&#xff1a;http://www.cnb…

RuntimeError: Subtraction, the `-` operator, with a bool tensor is not supported. If you are trying

下面的程序会报错&#xff1a;RuntimeError: Subtraction, the - operator, with a bool tensor is not supported. If you are trying to invert a mask, use the ~ or logical_not() operator instead. mask torch.Tensor([True,True,False]).type(torch.bool) a torch.Te…

VS2015无法打开包括文件corecrt.h 无法打开文件ucrtd.lib

VS2015无法打开包括文件"corecrt.h" 无法打开文件"ucrtd.lib" 在网上是VS2015的一个BUG&#xff0c;如果是选择"从父级或项目默认设置继承"时&#xff0c;在Windows Kits\10\include 和 Windows Kits\10\lib 目录下导入的是10.0.10240.0文件夹&…

面向对象的七大设计原则

总脉络图&#xff1a; 一&#xff1a;单一职责原则(全称&#xff1a;“Single-Responsibility Principle”)又称 单一功能原则 核心&#xff1a;解耦和增强内聚性&#xff08;高内聚&#xff0c;低耦合&#xff09; 说明&#xff1a; 就一个类而言&#xff0c;应该只专注于做一…

人机融合智能的思考

来源&#xff1a;人机与认知实验室【人机智能难于融合的主要原因就在于时空和认知的不一致性&#xff0c;人处理的信息与知识能够变异&#xff0c;其表征的一个事物、事实既是本身同时又是其他事物、事实&#xff0c;一直具有相对性&#xff0c;机器处理的数据标识缺乏这种相对…

工艺篇:常用表面处理

工艺篇&#xff1a;常用表面处理 表面处理定义 表面处理是在基体材料表面上人工形成一层与基体的机械、物理和化学性能不同的表层的工艺方法。表面处理的目的是满足产品的耐蚀性、耐磨性、装饰或其他特种功能要求&#xff0c;表面处理按照机理来分可以分为以下4部分&#xff…