QQ登录

只需一步,快速开始

halcon gen_parallels_xld函数介绍

[ 复制链接 ]
gen_parallels_xld(Polygons : Parallels : Len, Dist, Alpha, Merge : )
gen_parallels_xld检查在多边形Polygons 中传递的XLD多边形的并行性。
得到的结果保存于Parallels
如果参数Merge被设置为“true”,相邻的并行多边形将以单个并行关系返回。
否则,每对平行线段返回一个并行关系。

只考虑长度超过Len的多边形的线段。
两个多边形线段是否平行取决于允许的最大角度差Alpha(弧度单位)。
此外,两段在角平分线上的投影必须重叠。
最后,将角平分线上的重叠部分重新投影到两段上。
如果重投影的最大距离小于Dist,则段存储到Parallels
对比mod_parallels_xld,为每对并行计算一个质量因子作为一个副作用
它基于归一化角差和重叠的归一化长度,公式:
2019-05-18_191909.jpg
ba为多边形段的角度差,overlap为重叠长度,len1,len2为多边形段长度,
q生成的品质因素,质量因子是并行度的度量,值越大越平行。
最后,将单个多边形中包含的所有平行多边形段的质量因子相加,
并对其重叠区域的长度进行加权。
注意,您可以使用info_parallels_xld查询质量因子的范围。




例程
*读取一张图
read_image (Image, 'metal-parts/metal-parts-01')
*阈值分割
threshold (Image, Region, 100, 255)
*提取区域边缘
boundary (Region, RegionBorder, 'inner')
*开运算,扩大区域
dilation_circle (RegionBorder, RegionDilation, 1.5)
*提取区域对应图像
reduce_domain (Image, RegionDilation, ImageReduced)
*提取图像XLD轮廓
edges_sub_pix (ImageReduced, Edges, 'lanser2', 0.5, 40, 90)
*轮廓分割成线和圆
segment_contours_xld (Edges, ContoursSplit, 'lines_circles', 6, 4, 4)
*生成多边形xld
gen_polygons_xld (ContoursSplit, Polygons, 'ramer', 2)
*提取平行线
gen_parallels_xld (Polygons, Parallels, 30, 30, 0.15, 'false')
*单步执行查看图形对象
count_obj (Parallels, Number)
for i:= 1 to Number by 1
    select_obj (Parallels, ObjectSelected, i)
endfor



  

halcon从自学到接项目视频教程,另外再赠送全网最全资源  

  

欢迎围观我录制的一套halcon自学视频教程(进入)


回复

使用道具 举报

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