union_collinear_contours_xld原型union _ col linear _ contours _ xld (contours 3360 union contours 3360 maxdistabs,maxaxax )
功能合并近似的共线轮廓
参数列表contours(input_object ) :输入XLD配置文件
unioncontours(output_object ) :合并后输出配置文件
maxdistabs(input_control ) :沿参照轮廓的回归直线测量两个轮廓之间的最大间隙长度(间隙在参照轮廓特征线上的投影)。
maxdistrel(input_control ) (基准轮廓拟合直线上的间隙投影长度与基准轮廓长度之比的上限(稍后详细描述) )。
maxshift(input_control ) :第二个轮廓与参照轮廓重合的直线的最大距离
Maxangle(input_control )两个轮廓与直线拟合的角度(0.0maxangle0.78539816339 (45度) ) ) ) ) ) ) ) ) )
mode(input_control ) :定义配置文件属性的处理模式,即是否保留或放弃配置文件属性
详细求解该算子的目的是综合近似共线(几乎在一条直线上)的轮廓。 合并的轮廓由每个轮廓的轮廓点相关联组成,并与未合并的轮廓一起输出。
MaxDistAbs、MaxDistRel、MaxShift和MaxAngle这四个参数控制轮廓共线的条件,而Mode控制输入轮廓属性的处理方式。
基本上,前三个参数“MaxDistAbs、MaxDistRel和MaxShift”取决于要合并的每对配置文件的顺序。 也就是说,对于将两个配置文件中的哪一个作为参考配置文件连接另一个配置文件,参数值的设置因选择而异。 为了避免这种依赖性,在运行期间将两个配置文件分别计算为参照配置文件的参数值,并根据最小结果值选择参照配置文件的顺序。 确定将哪些配置文件作为参考配置文件。 请注意,在下图中,为了便于说明,将左侧轮廓作为参照轮廓。
MaxDistAbs参数决定两个轮廓的绝对距离上限。 两个轮廓之间的距离是沿基准轮廓的拟合直线测量的。 因此,该距离是将两条轮廓直线的间隙投影到基准轮廓拟合直线上的长度。 也就是说,是下图的a。 如果a=MaxDistAbs,则满足条件。
MaxDistRel参数决定两个轮廓的相对距离上限。 相对距离通过绝对距离a除以参照轮廓的长度来计算。
参数MaxShift确定第二个轮廓距离的参照轮廓拟合直线的最大距离上限。 此距离是用垂直于参考轮廓的拟合直线测量的。
参数MaxAngle确定两个轮廓的拟合直线之间的角度上限
参数Mode控制配置文件有无属性名称。 如果选择“attr_keep”,则输出配置文件具有属性名称;如果选择“attr_forget”,则输出配置文件不具有属性名称。
例如选择“attr_keep”
例如,选择“attr _ forget”,如果不需要每个轮廓的属性,则选择“attr _ forget”可以提高处理性能。
由于图像的对比度差,应用提取出的线条或边界不连续的情况,运算符union_collinear_contours_xld不仅连接不连续的线条的间隙,而且结合共线性边界和由轮廓节点分割的线段这个算子的应用意义是将近似共线轮廓合并到你想要的边界上。
这将通过以下介绍的示例来说明。
下图左侧是一组要连接的输入轮廓,矩形每边的轮廓大致共线。 右边显示了处理运算符的结果。 共线轮廓已合并。 仔细看,矩形的四条边的轮廓分别合并,但各条边的轮廓没有合并。 因此,运算子会假设只合并近似共线的轮廓。 也就是说,如果两个轮廓的拟合直线之间的角度=45度,则无论如何设定参数,此运算符都不会合并这两个轮廓。
举个例子
代码gen _ contour _ polygon _ xld (first contour,[ 500,1000 ],[ 1,1 ] ) )
gen _ contour _ polygon _ xld (second contour,[ 1001,1500 ],[ 2,501 ] ) )。
concat_obj(firstcontour,SecondContour,ConcatContour ) )。
union _ col linear _ contours _ xld (concat contour,union contours 1,1,0.002,500,rad(45 )‘attr _ keep’)