halcon知识:select_shape究竟怎么用(1)?

说明

select_shape是halcon的强大算子,需要重点研究,本例按照Features=’area’,对Operation进行说明,但是更多的案例将在一个更大的文档中说明。

一、 测试select_shape,如下图(单通道图)

halcon知识:select_shape究竟怎么用(1)?

1.1 语法结构

select_shape(Regions : SelectedRegions : Features, Operation, Min, Max : )

输入图标:Regions区域元组

输出图标:SelectedRegions 区域元组

输入控制:

  • Features:1)有很多,后面讨论;2) 也可按照元组调用

select_shape (ConnectedRegions, SelectedRegions, [‘area’,’anisometry’], ‘and’, [200,1], [1200,2])

  • Operation:也是一个看点’and’和’or’,在下面案例说明。

1.2 区域Operation选取

select_shape语句中Operation不可忽略,其取值在【’or’ 和’and’】上,究竟有啥作用?针对不同的检测问题,选择or或and是一个巧妙的构思,如下例子:

read_image (Image, ‘d:/images/dockergray.jpg’)
get_image_size(Image, Width, Height)
dev_open_window(0, 0, Width, Height, ‘black’, WindowHandle )
disp_image(Image,WindowHandle)
threshold (Image, Region, 48, 200)
connection (Region, ConnectedRegions)
select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘or’, 1800, 9999999)

得到SelectedRegions

halcon知识:select_shape究竟怎么用(1)?

如将 select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘or’, 1800, 9999999)

改成 select_shape (ConnectedRegions, SelectedRegions, ‘area’,’and’, 1800, 9999999)

SelectedRegions得不到任何内容,why?

1.3 用另一个图再试试!

halcon知识:select_shape究竟怎么用(1)?

select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘or’, 1800, 9999999)

halcon知识:select_shape究竟怎么用(1)?

用select_shape (ConnectedRegions, SelectedRegions, ‘area’, ‘and’, 1800, 9999999)

halcon知识:select_shape究竟怎么用(1)?

二、结论

在用select_shape算子的时候,

1)如果你预先要同时检测多个面积为【1800, 9999999】的目标,则在 select_shape语句中用’and’。 检测结果如果没有多个, SelectedRegions为空。(要么取出两个以上,不够两个就什么都不取—-以标明有错!)这种用法针对问题:

比如用select_shape识别图中药丸够不够15个就用’and’是合适的。

halcon知识:select_shape究竟怎么用(1)?

2) 如果你预先不知道能有几个面积为【1800, 9999999】的区域,用 select_shape时取’or’ 合适,如果有多个就取多个,有一个就取一个。(or —有几个满足的区域,就取几个!)

针对问题: 比如用select_shape识别木材上裂纹是否有大的裂纹,裂纹够大,就报警,就用’or’是合适的。

halcon知识:select_shape究竟怎么用(1)?

三、关于Features的选择

  • 该选择很多,一般来说,我们很想看看当前图像中的对象,到底有怎样的属性值,办法是用region_features(rig_Regions, ‘width’, Values)。其它属性就用队形名称替代’width’,注意Values是对应的属性值元组。

‘area’: 物体面积

‘row’: 中心的行索引

‘column’: 中心的列索引

‘width’: 区域宽度

‘height’: 区域高度

‘row1’: 左上角的行索引

‘column1’: 左上角的列索引

‘row2’: 右下角的行索引

‘column2’:右下角的列索引

‘circularity’:圆度(见圆度)

‘compactness’:紧凑性(见紧凑性)

‘contlength’:轮廓的总长度(参见操作符 contlength)

“convexity”:凸度(见凸度)

‘rectangularity’:矩形度(见矩形度)

‘ra’:等效椭圆的主半径(参见 elliptic_axis)

‘rb’:等效椭圆的次半径(参见 elliptic_axis)

‘phi’:等效椭圆的方向(参见 elliptic_axis)

‘anisometry:等轴测图(见偏心率)

‘bulkiness:’ 体积大(见操作员偏心)

‘struct_factor’:结构系数(见操作员偏心)

“outer_radius”:最小周围圆的半径(见smallest_circle)

‘inner_radius’:最大内圆的半径(见inner_circle)

‘inner_width’:适合该区域的最大轴平行矩形的宽度(请参阅inner_rectangle1)

‘inner_height’:适合该区域的最大轴平行矩形的高度(请参阅inner_rectangle1)

‘dist_mean’:从区域边界到中心的平均距离(参见算子圆度)

‘dist_deviation:’区域边界到中心的距离的偏差(参见算子圆度)

“roundness”:圆度(参见算子圆度)

‘num_sides’:多边形边数(参见算子圆度)

‘connect_num’:连接组件的数量(请参阅运算符 connect_and_holes)

‘holes_num’:孔数(见操作符connect_and_holes)

‘area_holes’:物体孔的面积(见operator area_holes)

‘max_diameter’:区域的最大直径(参见操作符diameter_region)

‘orientation’:区域的方向(见操作员orientation_region)

‘euler_number’:欧拉数(见运算符 euler_number)

‘rect2_phi’:最小周围矩形的方向(请参阅运算符smallest_rectangle2)

‘rect2_len1’:最小周围矩形长度的一半(请参阅运算符smallest_rectangle2)

‘rect2_len2’:最小周围矩形宽度的一半(请参阅运算符smallest_rectangle2)

‘moments _m11’:区域的几何矩(见算子 moment_region_2nd)

‘moments _m20’:区域的几何矩(见算子 moment_region_2nd)

‘moments _m02’:区域的几何矩(见算子 moment_region_2nd)

‘moments _ia’:区域的几何矩(见算子 moment_region_2nd)

‘moments _ib’:区域的几何矩(见算子 moment_region_2nd)

‘moments_m11_invar’:区域的几何矩(见算子 moment_region_2nd_invar)

‘moments_m20_invar’:区域的几何矩(见算子 moment_region_2nd_invar)

‘moments_m02_invar’:区域的几何矩(见算子 moment_region_2nd_invar)

‘moments _phi1’:区域的几何矩(参见算子 moment_region_2nd_rel_invar)

‘moments _phi2’:区域的几何矩(参见算子 moment_region_2nd_rel_invar)

‘moments _m21’:区域的几何矩(见算子 moment_region_3rd)

‘moments _m12’:区域的几何矩(见算子 moment_region_3rd)

‘moments _m03’:区域的几何矩(见算子 moment_region_3rd)

‘moments _m30’:区域的几何矩(见算子 moment_region_3rd)

‘moments_m21_invar’:区域的几何矩(见算子 moment_region_3rd_invar)

‘moments_m12_invar’:区域的几何矩(见算子 moment_region_3rd_invar)

‘moments_m03_invar’:区域的几何矩(见算子 moment_region_3rd_invar)

‘moments_m30_invar’:区域的几何矩(见算子 moment_region_3rd_invar)

‘moments _i1’:区域的几何矩(参见算子 moment_region_central)

‘moments _i2’:区域的几何矩(参见算子 moment_region_central)

‘moments _i3’:区域的几何矩(参见算子 moment_region_central)

‘moments _i4’:区域的几何矩(参见算子 moment_region_central)

‘moments _psi1’:区域的几何矩(参见算子 moment_region_central_invar)

‘moments _psi2’:区域的几何矩(参见算子 moment_region_central_invar)

‘moments _psi3’:区域的几何矩(参见算子 moment_region_central_invar)

‘moments _psi4’:区域的几何矩(参见算子 moment_region_central_invar)

Original: https://blog.csdn.net/gongdiwudu/article/details/122041015
Author: 无水先生
Title: halcon知识:select_shape究竟怎么用(1)?

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/519418/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球