halcon轮廓算法之合并的理解

    
**********************************************轮廓合并:两轮廓之间连起来***********************************************************************************************************

gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
gen_contour_polygon_xld (SecondContour1, [1000,500], [500,1001])
gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])


concat_obj (FirstContour, SecondContour1, ConcatContour)
concat_obj(ConcatContour, SecondContour, ConcatContour)
concat_obj(ConcatContour, SecondContour2, ConcatContour)
*返回轮廓的长度
distance_cc(ConcatContour, ConcatContour, 'point_to_segment', DistanceMin, DistanceMax)
*返回轮廓方向,起始点在终点下方时 :Phi>0
orientation_points_xld(ConcatContour, Phi)

*****************************union_straight_contours_xld**************************************************
*****************************合并具有相似方向的相邻直线轮廓
*计算XLD轮廓的回归线参数,并返回定义属性的轮廓
regress_contours_xld (ConcatContour, RegressContours, 'drop', 1)
*如果要避免平行轮廓合并的情况,则必须选择Mode=“noparallel”,否则Mode=“paralletoo”即可。
*对于Mode=“every”,轮廓将无条件合并。在这种情况下,所有其他参数都没有影响。
union_straight_contours_xld(RegressContours, UnionContours5, 5, rad(1), 50, 'every', 'maximum')


*((两线D)/MaxD:500)*Per:100+((两线方向差)/rad(1))(100-Per:100)<=100即可
*Per=100时 无论方向差多少都会合并,只受MaxDist(距离)限制
union_straight_contours_xld (RegressContours, UnionContours, 500, rad(1), 100, 'paralleltoo', 'maximum')
*((两线D)/MaxD:1)*Per:0+((两线方向差)/rad(1))(100-Per:0)<=100即可
*Per=0时 无论距离差多少都会合并,只受MaxDiff(方向)限制
union_straight_contours_xld (RegressContours, UnionContours1, 1, rad(1), 0, 'paralleltoo', 'maximum')
*返回合并轮廓一般是连接两轮廓的最近两端点
******************************************************************************************
gen_empty_obj(ConcatContour)
**************************************union_collinear_contours_xld*************************************************
*************************************合并位于同一条直线上的轮廓
*生成轮廓的区别
* gen_contour_region_xld()
* gen_contours_skeleton_xld()

gen_contour_polygon_xld (FirstContour, [1100,1100], [1,100])
gen_contour_polygon_xld (SecondContour, [1000,1000], [200,1000])
gen_contour_polygon_xld (SecondContour1, [1000,1000], [1,100])
* gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
* gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])


concat_obj (FirstContour, SecondContour, ConcatContour)
* concat_obj(ConcatContour, SecondContour1, ConcatContour)
* concat_obj(ConcatContour, SecondContour2, ConcatContour)

* 
MaxDAbs:=110    //两直线法线之间的最短距离D   <MaxDAbs
MaxDRel:=1     //D/轮廓回归线长度L   <MaxDRel
MaxShift:=101     //两直线的平行距离S  <MaxShift
MaxAng:=0.1     //轮廓的角度差A     <MaxAng
Mode:='attr_keep'  //所有属性都复制到输出轮廓。'attr_forget' :输出轮廓将不包含任何属性。
union_collinear_contours_xld(ConcatContour, UnionContours2, MaxDAbs, MaxDRel,\
                             MaxShift, MaxAng, 'attr_keep')
*查看轮廓属性
query_contour_attribs_xld(UnionContours2, Attribs)
********************************************************************************************
gen_empty_obj(ConcatContour)
****************************union_straight_contours_histo_xld*********************************
***************************合并到给定线   有相似距离的  相邻直线轮廓
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
gen_contour_polygon_xld (SecondContour1, [1000,500], [500,1001])
gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])


concat_obj (FirstContour, SecondContour, ConcatContour)
* concat_obj(ConcatContour, SecondContour1, ConcatContour)
concat_obj(ConcatContour, SecondContour2, ConcatContour)
*计算XLD轮廓的回归线参数,并返回定义属性的轮廓
regress_contours_xld (ConcatContour, RegressContours, 'drop', 1)
*Rsta
*Csta
*Rend
*Cend
*最大距离
*两个最小值之间的最大宽度。
*平滑大小

union_straight_contours_histo_xld(RegressContours, UnionContours3, SelectedContours, 500, 1, 1000, 1, 1, 1, 1, HistoValues)

******************************搞不懂*******************************************
gen_empty_obj(ConcatContour)
*****************************************union_adjacent_contours_xld**********************************
**************************************合并端点靠近轮廓连接在一起的轮廓
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
* gen_contour_polygon_xld (SecondContour1, [1000,500], [500,1001])
gen_contour_polygon_xld (SecondContour2, [1000,500], [3000,3000])
* gen_contour_polygon_xld (SecondContour1, [500,1000], [500,1001])
* gen_contour_polygon_xld (SecondContour1, [1000,1000], [1000,500])


concat_obj (FirstContour, SecondContour, ConcatContour)
* concat_obj(ConcatContour, SecondContour1, ConcatContour)
concat_obj(ConcatContour, SecondContour2, ConcatContour)
MaxDAbs:=2020    //两直线法线之间的最短距离D   <MaxDAbs
MaxDRel:=10     //D/轮廓回归线长度L   <MaxDRel
Mode:='attr_keep'  //所有属性都复制到输出轮廓。'attr_forget' :输出轮廓将不包含任何属性。
union_adjacent_contours_xld(ConcatContour, UnionContours4, 2020, 10, 'attr_keep')
****************************************************************************************************************
gen_empty_obj(ConcatContour)
********************************union2_closed_contours_xld**********
**********************************计算闭合轮廓的并集******************
gen_contour_polygon_xld (FirstContour, [500,1000], [1,1])
gen_contour_polygon_xld (SecondContour, [1000,500], [2000,2000])
close_contours_xld(SecondContour, SecondContour)
close_contours_xld(FirstContour, FirstContour)
gen_polygons_xld(FirstContour, Polygons, 'ramer', 2)
gen_polygons_xld(SecondContour, Polygons1, 'ramer', 2)
union2_closed_polygons_xld(Polygons, Polygons1, PolygonsUnion)
union2_closed_contours_xld(FirstContour, SecondContour, ContoursUnion)

************************************************************************************

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值