QQ登录

只需一步,快速开始

1.3 halcon 使用测量助手测量鱼条间距

[ 复制链接 ]
帖子采用测量助手进指定图像 中的目标物体进行测量,这里暂时不进行标定 ,
也就是测量计算所得的单位 是像素,并不进行转换为实际物理单位。
要进行测量的图片在磁盘路径C:\Users\Public\Documents\MVTec\HALCON-17.12-Progress\examples\images\food\fish_sticks_raw_01.png

1.加载图像:
测量助手窗口打开,输入 选项卡选中,图像文件复选框选中,其右则按钮点击,加载上面的图像。

2.实现测量:
点击工具栏上绘制 线按钮,也就是工具栏从左往右第七个按钮。
这里我们使用直线测量,然后在图像 中进行直线区域 绘制,也就是我们想测量哪条直线上的边缘距离 ,这里水平绘制,
和图像 中四个长方形物体边缘垂直,从而自动 检测 出这条直线上 的边缘。然后你可以在边缘这个选项卡中进行测量参数 的设置。
绘制 时起点 和终点可以使用 鼠标 左键点击确定,起点与终点确定后,点击 鼠标 右键确定 并开始 测量,这样就可以在结果选项卡中
看到测量数据 了。
我们在边缘选项卡中进行最小边缘同谋 ,高斯平滑系数,ROI宽,插值方法设置,从而筛选出想要的边缘。
这个过程 其实助手 内部 根据 设置的参数 ,做了剖面 线投影,相应灰度值 计算,距离 度量,我们最小的边缘同谋 用的是60,
平滑系数 是1,ROI宽度为10,插值方法采用近邻插值,同时检测 的是下负所有连线,位置也是设置了所有位置。
区域 颜色 和边缘颜色 分别 是蓝色和绿色 ,边缘长为30,线宽为6,同时勾选 上将边缘组成边缘对,
也就是相信正负边缘为一组进行距离 度量。
2019-03-19_115435.jpg

3.显示结果:
点击 结果选项卡,可以看到测量的结果,这里选择位置,幅度,距离,边缘对宽度进行测量显示。
在边缘数据 中可以看到测量结果,
Row1st,Column1st,表示 的是边缘对的前面 点进行行列坐标,以图像 窗口左上角为原点。
Row2nd,Column2nd,表示 的是边缘对后面的点的行列坐标。
幅度是盲点的灰度值 。如果 是亮边缘则是正幅度值,如果 是暗边缘则是负幅度值 。
距离则表示相信两个边缘对的距离 。
宽则表示 第个边缘对的距离 宽度,也就是图中每个长方形物体的宽度,单位 像素。
2019-03-19_120512.jpg

4 插入代码:
点击代码 生成选项卡,然后点击插入代码,就可以把我们刚才 设置的测量参数 及测量结果自动 生成代码 显示在程序 窗口内。
生成的代码 所用的关键函数 其实就是gen_measure_rectangle2和measure_pairs,测量结果都在measure_pairs的参数 中,
具体 用法 含义将在后续帖子的具体 实例 中给予阐述。
自动生成的代码及注释如下:
  1. * Measure 05: Code generated by Measure 05
  2. * Measure 05: Prepare measurement
  3. AmplitudeThreshold := 60
  4. RoiWidthLen2 := 5
  5. *设置图像缩放是用整形算法还是符点算法。
  6. set_system ('int_zooming', 'true')
  7. * Measure 05: Coordinates for line Measure 05 [1]
  8. LineRowStart_Measure_05_1 := 246.54
  9. LineColumnStart_Measure_05_1 := 22.1133
  10. LineRowEnd_Measure_05_1 := 231.18
  11. LineColumnEnd_Measure_05_1 := 587.02
  12. * Measure 05: Convert coordinates to rectangle2 type
  13. TmpCtrl_Row := 0.5*(LineRowStart_Measure_05_1+LineRowEnd_Measure_05_1)
  14. TmpCtrl_Column := 0.5*(LineColumnStart_Measure_05_1+LineColumnEnd_Measure_05_1)
  15. TmpCtrl_Dr := LineRowStart_Measure_05_1-LineRowEnd_Measure_05_1
  16. TmpCtrl_Dc := LineColumnEnd_Measure_05_1-LineColumnStart_Measure_05_1
  17. TmpCtrl_Phi := atan2(TmpCtrl_Dr, TmpCtrl_Dc)
  18. TmpCtrl_Len1 := 0.5*sqrt(TmpCtrl_Dr*TmpCtrl_Dr + TmpCtrl_Dc*TmpCtrl_Dc)
  19. TmpCtrl_Len2 := RoiWidthLen2
  20. * Measure 05: Create measure for line Measure 05 [1]
  21. * Measure 05: Attention: This assumes all images have the same size!
  22. *生成测量用矩形
  23. gen_measure_rectangle2 (TmpCtrl_Row, TmpCtrl_Column, TmpCtrl_Phi, TmpCtrl_Len1, TmpCtrl_Len2, 640, 512, 'nearest_neighbor', MsrHandle_Measure_05_1)
  24. * Measure 05: ***************************************************************
  25. * Measure 05: * The code which follows is to be executed once / measurement *
  26. * Measure 05: ***************************************************************
  27. * Measure 05: Load image
  28. *从磁盘测试要测量图像
  29. read_image (Image, 'C:/Users/Public/Documents/MVTec/HALCON-17.12-Progress/examples/images/food/fish_sticks_raw_01.png')
  30. * Measure 05: Execute measurements
  31. *在图片中指定的测量矩形范围内测量距离等数据
  32. measure_pairs (Image, MsrHandle_Measure_05_1, 1, AmplitudeThreshold, 'all', 'all', Row1_Measure_05_1, Column1_Measure_05_1, Amplitude1_Measure_05_1, Row2_Measure_05_1, Column2_Measure_05_1, Amplitude2_Measure_05_1, Width_Measure_05_1, Distance_Measure_05_1)
  33. * Measure 05: Do something with the results
  34. * Measure 05: Clear measure when done
  35. close_measure (MsrHandle_Measure_05_1)
复制代码


回复

使用道具 举报

快速回复 返回列表 客服中心 搜索