首页 > 其他分享 >Halcon 生成标定板

Halcon 生成标定板

时间:2022-09-24 21:24:37浏览次数:52  
标签:10 Rows 圆点 xld 标定 生成 Cols Halcon

Halcon生成标定板:

gen_caltab(7, 7, 0.0125, 0.5, 'caltab.descr', 'caltab.ps')

XNum:X轴圆点数量
YNum:Y轴圆点数量
MarkDist:圆点间距,单位为米
DiameterRatio:圆点直径与间距的比率
CalPlateDescr:标定板描述文件
CalPlatePSFile:标定板PostScript图案,可以用PhotoShop打开。

Halcon12开始,可以使用新版蜂窝标定板,生成代码:

create_caltab(27, 31, 0.00258065, [13,6,6,20,20], [15,6,24,6,24], 'light_on_dark', 'calplate.cpd', 'calplate.ps')

NumRows:圆点行数
MarksPerRow:每行圆点数
Diameter:圆点直径,单位为米
FinderRow:所有寻位标志的行号
FinderColumn:所有寻位标志的列号
Polarity:背景色,黑或白

新版蜂窝标定板的行列数可以任意设置,圆心距为圆点直径的2倍,寻位标志不能多于5个
标定板的精度建议比检测精度高5-10倍,以下是不同标定板制作工艺的大致精度:
(1)菲林印制,精度大致能做到0.05mm - 0.1mm,菲林就是电影底片,厚度一般为0.18mm,白色部分透明,需要用玻璃板压平;
(2)氧化铝标定板,精度一般为0.01 - 0.001mm,用玻璃或陶瓷做基板,白色部分不透明,表面漫反射;
(3)玻璃标定板,精度能做到0.001mm,图案用光刻工艺加工,表面平整度很高,白色部分透明,黑色部分反光,可以用背光。
标定板的尺寸选择:
老版标定板图案尺寸为视场的1/2到3/4,新版蜂窝标定板需要视场覆盖1/3到2/3图案区域,必须拍到至少1个寻位点
圆点直径所占像素要大于50个,例如相机分辨率1280x960pix,视场大小40x30mm,则圆点直径大概1.5mm。

Halcon标定相机外参也可使用棋盘格标定板,下面为代码:

dev_update_off()
read_image(Image, 'chessboard.png')
gen_rectangle1 (ROI, 108.076, 86.0433, 406.842, 505.387)
reduce_domain(Image, ROI, ImageReduced)
dev_display(Image)
* 1通过Harris方法提取角点
points_harris(ImageReduced, 0.7, 4, 0.08, 1000, Rows, Cols)
gen_cross_contour_xld(Corners, Rows, Cols, 6, 0)
dev_set_color('red')
dev_display(Corners)
stop()
* 2通过边缘拟合直线交叉点的方式提取角点
edges_sub_pix (ImageReduced, Edges, 'canny', 1, 20, 40)
segment_contours_xld(Edges, ContoursSplit, 'lines_circles', 5, 4, 2)
select_contours_xld(ContoursSplit, SelectedContours, 'contour_length', 10, 200, 0, 0)
select_contours_xld(SelectedContours, HorizontalContours, 'direction', rad(-10), rad(10), 0, 0)
union_adjacent_contours_xld(HorizontalContours, HorizontalContours, 10, 1, 'attr_keep')
select_contours_xld(SelectedContours, VerticalContours, 'direction', rad(80), rad(100), 0, 0)
union_adjacent_contours_xld(VerticalContours, VerticalContours, 10, 1, 'attr_keep')
fit_line_contour_xld(HorizontalContours, 'tukey', -1, 0, 5, 2, RowBegin1, ColBegin1, RowEnd1, ColEnd1, Nr1, Nc1, Dist1)
fit_line_contour_xld(VerticalContours, 'tukey', -1, 0, 5, 2, RowBegin2, ColBegin2, RowEnd2, ColEnd2, Nr2, Nc2, Dist2)
Rows := []
Cols := []
for I := 0 to |RowBegin1| - 1 by 1
    for J := 0 to |RowBegin2| - 1 by 1
        intersection_lines(RowBegin1[I], ColBegin1[I], RowEnd1[I], ColEnd1[I], RowBegin2[J], ColBegin2[J], RowEnd2[J], ColEnd2[J], Row, Col, IsOverlapping)
        Rows := [Rows, Row]
        Cols := [Cols, Col]
    endfor
endfor
gen_cross_contour_xld(Corners, Rows, Cols, 6, 0)
dev_set_color('green')
dev_display(Corners)
stop()
* 拟合棋盘格平面位姿
WorldX := []
WorldY := []
WorldZ := []
for X := 0 to 10 by 1
    for Y := 0 to 7 by 1
        WorldX := [WorldX, X * 10]
        WorldY := [WorldY, Y * 10]
        WorldZ := [WorldZ, 0]
    endfor
endfor
read_cam_par ('cam_param.cal', CameraParam)
vector_to_pose(WorldX, WorldY, WorldZ, Rows, Cols, CameraParam, 'iterative', 'error', Pose, Quality)

这里用两种方法提取棋盘格的角点,如果镜头畸变较大的情况下,Harris方法精度更高。

标签:10,Rows,圆点,xld,标定,生成,Cols,Halcon
From: https://www.cnblogs.com/lgyup/p/16726628.html

相关文章

  • #Lua:Lua调用C++生成的DLL库
    Lua调用C++生成的DLL库本文参考了某大佬的博客,写得十分详细,推荐!!!需求:在之前的求解器中添加了Lua库,使得程序可以在Lua脚本中实现自定义函数功能,考虑到未来可能需要与......
  • TypeScript Array数组 生成两个数组的交集,并且在数组中进行删除操作
    TypeScriptArray数组 生成两个数组的交集,并且在数组中进行删除操作 /***@methodcutArr删除数组1中,与数组2重复的数据*Arr([1,2,3,5],[2,3,4])=>[1,5......
  • 生成验证码
    //生成六位验证码(数字、字母)packagettext;importjava.util.Random;importjava.util.Scanner;publicclasslianxi{ staticScannerin=newScanner(System.in......
  • (二)JPA 连接工厂、主键生成策略、DDL自动更新
    (一)JPA的快速入门2、JPA连接工厂通过之前的代码实现已经清楚的发现了整个的JPA实现步骤,但是这个步骤似乎有一些繁琐了,毕竟最终所关心的一定是EntityManager对象实例,而......
  • 【问题记录】Ant Design的Select标签检验不通过不生成tag
    问题:tags模式下如何检验输入数据,如果检验不通过不生成tag解决办法:在onChange事件中检验即可。tags模式<Selectmode="tags"placeholder="Pleaseselect"......
  • 如何生成随机数
    对于如何生成随机数一般有以下几个方法1.直接调用Math.random()函数 intx=(int)(Math.random()*6)——生成0-5的随机数importjavax.swing.JOptionPane;publiccla......
  • net core 使用 Npoi 生成 Word文档
    需求:按数据层级生成WORD文件,要有目录,目录里要有真实的页码,附件内容用表格显示,大标题 做为封面当独显示一页,PDF内容大标题,目录(里有对应的页码)正文 里有表格重点:NPOI......
  • PS插件:复古工笔画风PS插件,一键生成古风写真!
    工笔就是细致工整又写实。亦称“细笔”,相当于书法中的正楷书法。与”写意”对称。中国画技法名。属于工整细致一类密体的画法。用细致的笔法制作,工笔画着重线条美,一丝不苟......
  • vue3源码学习12-编译three-生成代码
    之前两节看了模板生成AST和AST内部转化,这一节看最后的生成代码,编译配置是mode为module,prefixIdentifiers开启,hoistStatic开启,其他配置均不开启,先看示例:源代码:<divclass=......
  • JS逆向实战7-- 某省在线审批网站params 随机生成
    参数分析我们首先通过抓包发现这个就是我们所需要的数据然后我们通过fidder发起请求结果:通过我们反复测试发现这个params的参数是每次请求中都会变化的断点查......