Halcon视觉之家 - 51Halcon专注于机器视觉技术

 找回密码
 会员注册

QQ登录

只需一步,快速开始

扫一扫,微信登录

查看: 1335|回复: 2

Halcon标定之后如何实现测量?

[复制链接]
  • TA的每日心情

    2020-8-7 14:06
  • 签到天数: 6 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    4

    主题

    12

    帖子

    29

    积分

    Rank: 1

    积分
    29
    发表于 2020-11-17 09:41:56 | 显示全部楼层 |阅读模式

    51Halcon诚邀您的加入,专注于机器视觉开发与应用技术,我们一直都在努力!

    您需要 登录 才可以下载或查看,没有帐号?会员注册

    x
    求助问题       1.Halcon在完成标定后,如何测量环形零件(轴承密封圈)的外直径和内直径?测量圆的卡尺命令在这里可以用吗?有没有类似的链接
          我的步骤是:用亚像素算子得到圆形图像的边缘;Edges边缘转换为xld;xld转换成点的坐标;用【image_points_to_world_plane】把最上、最下、最左、最右的点转换到世界坐标系下的(x,y)坐标,利用两点间的距离公式求出最上点到最下点的距离D1、最左点到最右点的距离D2,D1和D2可以作为想要测量的直径,但这种方法实在是有点“笨”。
          2.硬件:迈德威视黑白相机,分辨率为630万(3088×2064)
           目标精度0.01mm
           具体测量内容:利用亚像素方法测量轴承密封圈内直径和外直径的平均值、最大值、最小值。
    之前咨询过一位蔡司三坐标测量仪的测量员,圆形零件的尺寸测量一般是基于点的拟合,利用亚像素方法得到圆形零件边缘的轮廓点,比如可以得到500个点,对这些点进行最小二乘拟合,得到的就是平均直径;对这些点进行最小外接拟合,得到的就是“最大直径”;对这些点进行最大外切拟合,得到的就是“最小直径”。
          3.我希望在亚像素测量方法上有所创新(在已有的方法上进行一点点改进也算是创新),现在的亚像素方法主要有三种:插值法(多项式插值、三次样条插值、最邻近插值);拟合法(最小二乘拟合等);矩方法(灰度矩方法、Zernike矩方法、灰度矩方法)。
           4.能够基于C++或C#开发出一款简易的测量软件,仅仅用于测量密封圈(密封圈的型号有很多)。这款软件可以安装在别的计算机上,连接工业相机,标定之后就可以测量。




    *标定之后获得的相机的内外参数
    CameraParameters := ['area_scan_division',0.0168107,-1.898,2.39981e-006,2.4e-006,1515.93,1018.5,3088,2064]
    CameraPose := [-0.00419203,0.00225051,0.31692,359.248,359.479,88.9519,0]







    edges_sub_pix (Image, Edges, 'canny', 1, 60, 100)
    *选取两条最长的轮廓,目的是删除可能带来干扰的轮廓
    select_contours_xld (Edges, SelectedContours1, 'contour_length', 800, 9000,800,12000)
    count_obj (SelectedContours1, Number)


    *找到外圆(内圆)的亚像素轮廓
    select_obj (SelectedContours1, ObjectSelected1, 1)
    dev_display (ObjectSelected1)
    *内(外)轮廓转换成点,得到点的坐标
    get_contour_xld (ObjectSelected1, Row1, Col1)
    tuple_max (Row1, Upper1)
    tuple_min (Row1, Lower1)
    tuple_max (Col1, Right)
    tuple_min (Col1, Left)
    *最高点世界坐标
    image_points_to_world_plane (CameraParameters, CameraPose, (Upper1+Lower1)/2, Left, 'mm', X1, Y1)
    *最低点世界坐标
    image_points_to_world_plane (CameraParameters, CameraPose, (Upper1+Lower1)/2, Right, 'mm', X2, Y2)
    *竖向直径=最高点和最低点的欧氏距离
    Diameter1 := sqrt((X2-X1)*(X2-X1)+(Y2-Y1)*(Y2-Y1))
    *最左点世界坐标
    image_points_to_world_plane (CameraParameters, CameraPose, Upper1, (Right+Left)/2, 'mm', X3, Y3)
    *最右点世界坐标
    image_points_to_world_plane (CameraParameters, CameraPose, Lower1, (Right+Left)/2, 'mm', X4, Y4)
    *横向直径=最左点和最右点的欧氏距离
    Diameter2 := sqrt((X4-X3)*(X4-X3)+(Y4-Y3)*(Y4-Y3))


    待测零件图像

    待测零件图像
  • TA的每日心情
    奋斗
    2021-8-11 16:46
  • 签到天数: 24 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    30

    帖子

    54

    积分

    Rank: 1

    积分
    54
    发表于 2020-11-20 17:36:06 | 显示全部楼层
    我看你相机的畸变系数很小,图像转换为世界坐标后,应该是用你的相机的像素距离进行转换,你这样得出的不是零件的真实值,相机的像素距离是有算法进行算出来的。图像读取后一般要进行畸变校正。
  • TA的每日心情
    奋斗
    2021-8-11 16:46
  • 签到天数: 24 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    0

    主题

    30

    帖子

    54

    积分

    Rank: 1

    积分
    54
    发表于 2020-11-20 17:39:56 | 显示全部楼层
    把标定板的参数发出来,我进行计算看是否是你要的结果!!
    您需要登录后才可以回帖 登录 | 会员注册

    本版积分规则

    视觉培训招生

    建议您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流浏览器浏览本网站

    51Halcon会员技术交流会员技术交流 | 51Halcon官方客服咨询官方客服咨询 | Halcon切换助手使用反馈切换助手使用

    算子查询| 申请友链| 小黑屋| 手机版| Archiver|

    © 2015-2021 51Halcon机器视觉  X3.4  粤ICP备15095995号 粤公网安备44030602000670号

    快速回复 返回顶部 返回列表