如何识别形状轮廓中的关节?

Posted

技术标签:

【中文标题】如何识别形状轮廓中的关节?【英文标题】:How to identify joints in the profile of a shape? 【发布时间】:2021-08-21 22:08:50 【问题描述】:

我正在开发一个系统来自动获取组件的 2D 轮廓并将它们组装成 3D 形状。

想象一下这些片段:

你想做这个形状:

我将突出显示其中一个组件以显示它们如何组合在一起。

我愿意接受有关如何执行此操作的任何建议,但我正在尝试的当前方法首先通过查看 2D 轮廓找到可能组合在一起的关节。

如何从折线轮廓中识别“标签”?

同样的技术也应该适用于这样的程序集:

【问题讨论】:

【参考方案1】:

见How to compare two shapes?

所以你基本上试图在以极坐标增量格式(转角,线长)编码的折线中找到“相同”序列,然后检查匹配序列的相对位置是否在两种形状中相同......

请注意,锁在连接的形状之间可能有一些间隙,以确保可以组装......在相同的情况下,间隙可能甚至是负数(重叠)取决于材料和功能,因此您需要比较序列并留出一些余量...

此外,我会将每个形状分成其侧面以加快过程,因为锁很可能不会交叉侧面...

【讨论】:

【参考方案2】:

您可以为标签定义“代码”。例如: 3,C,5,C,3 表示:三个单位长度,然后逆时针转动 90º,然后 5 个单位长度,然后逆时针转动 90º,然后 3 个单位长度。

当然可以使用比C更多的标识符,用于不同的角度等等。

另一部分中的标签与第一部分的标签具有相同(或非常相似)3,C,5,C,3 代码 因此,在两部分中找到相同的代码可能是合适的。检查两个部分中的相邻代码是否也适合,您就完成了。

请注意,碎片可以旋转。这种情况不会改变代码,但可能会改变相邻代码的顺序。

【讨论】:

以上是关于如何识别形状轮廓中的关节?的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV中几何形状识别与测量

OpenCV中几何形状识别与测量

OpenCV中几何形状识别与测量

书法字识别基于matlab余弦形状相似度书法字识别含Matlab源码 1356期

书法字识别基于matlab余弦形状相似度书法字识别含Matlab源码 1356期

教你如何使用 OpenCV检测图像中的轮廓