union_cocircular_contours_xld合并属于同一圆的所有轮廓。
结果得到同一圆上相互连接的轮廓,保存于UnionContours。
该算法首先对每个轮廓进行拟合,
然后通过圆弧上的半径、圆心和间隙对拟合结果进行检验。
轮廓列表按半径递增顺序处理。
没有圆可拟合的轮廓线可选择在第二遍中合并。
阈值参数用于定义轮廓是否属于同一圆。
要合并两个轮廓线,必须同时满足所有阈值。
MergeSmallContours
如果参数 MergeSmallContours 被设置为“true”,那么没有拟合圆的等值线也会被合并。
要匹配一个小轮廓,轮廓的每一点到圆心的距离与半径的差不超过MaxRadiusDiff。
轮廓线上两个相邻点与圆切线的夹角必须在MaxTangentAngle之内。
此外,要合并两个轮廓线,必须满足MaxDist的条件。
Iterations
轮廓线的合并产生了新的圆参数。
因此,迭代可以导致进一步的合并。
参数Iterations 控制迭代的数量。
很少需要两个以上的迭代。
对于两个轮廓线的每一次可能的合并,
通过对不同阈值对应的距离求和计算成本。
为了便于比较,将距离按阈值缩放到0.0到1.0之间。
如果两个或多个轮廓起点与另一个轮廓的同一端点匹配,
则合并成本较低的轮廓。
您应该确保输入轮廓可以用直线和圆弧来逼近,
例如使用split_contours_xld对它们进行预处理。