Halcon 算子 segment_contours_xld

 

作用:将XLD轮廓分割成线段和圆弧或椭圆弧;

 

参数翻译:输入轮廓、输出轮廓、分割采用的模式、用于平滑轮廓的点数、轮廓线和近似线之间的最大距离(第一次迭代)、轮廓线和近似线之间的最大距离(第二次迭代)

描述:segment_contours_xld在分割时,

           如果Mode='lines'则将输入轮廓分割成线条,

           如果Mode='lines_circles'则将其分割成线条和圆弧,

           如果Mode='lines_ellipses'则将其分割成线条和椭圆弧;

          (1)、segment_contours_xld首先通过折线来逼近输入的轮廓,这样,在弯曲的地方轮廓就会被过度的分割,如果用圆弧可以更好地逼近轮廓,则用圆弧或椭圆弧分别代替相邻的线段。如果SmoothCont设置为> 0,则首先对输入的轮廓进行平滑,这是必要的,因为平滑抑制了轮廓上的异常值,所以一方面可以防止在分割特别短的线的时后带来的异常,另一方面,在使用圆或椭圆分割时,可以实现更稳健的分割;

          (2)、最初的折线逼近是使用Ramer算法通过MaxLineDist1的最大距离来完成的,在此之后,圆形或椭圆形的弧被匹配到相邻的线段中,如果所产生的弧线到轮廓线的最大距离小于两条线段的最大距离,两个线段被替换为圆弧,迭代此过程,直到不再发生更改;

          (3)、在此之后,仍然由线段逼近的轮廓部分再次用最大距离MaxLineDist2的多边形逼近进行分割,并且新创建的线段在可能的情况下合并为圆形或椭圆弧。显然,这只会在MaxLineDist2 < MaxLineDist1时更改输出,这种两步方法比使用MaxLineDist2的一步方法更有效,由于在第一步中生成的线段较少,因此必须较少地进行圆或椭圆拟合。因此,使用长圆弧逼近部分输入轮廓会更高效;之后,再用短圆弧去逼近输入的轮廓,最后再细化使用过长圆弧逼近的轮廓的末端;

          (4)、所述所得轮廓长度至少为3像素,并且包含所述输入轮廓的至少6个连续点;所有输入的长度小于3像素或少于6个轮廓点的轮廓线将被复制到输出轮廓线,不做任何修改。

 

参数设置注意事项:

SmoothCont (input_control)   

(1)、不能等于0;

(2)、最好大于等于3并且是奇数;

(3)、建议值是5;

 

MaxLineDist1 (input_control)    MaxLineDist2 (input_control)  

(1)、需要大于等于0.0;

 

 

 

 

 

  • 7
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无锡伶俐科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值