我进行了一些图像处理,使我可以提取包含较厚片段的二进制图像,而且我面临着这些片段可能彼此交叉的问题。因此,我需要找到一种有效的方法来分离它们,我将不得不在C ++中实现此方法,因此任何基于OpenCV的方法都会有所帮助。这是一个示例输入图像,两个“斑点”都需要分为3个不同的部分。
[到目前为止,我已经尝试了2个想法,但我都坚持了这两个想法,这就是为什么我在这里问这个明显简单的问题是否有任何“最先进的”解决方案。
我的第一个想法是计算斑点的骨架,找到相交点。这部分很简单。然后,我计划从端点开始,遍历线段,直到到达一个交叉点并“穿过交叉点”。如果查看底部斑点,则即使预期为“ T”形,骨架也可以产生怪异的“ Y”形,从而无法决定如何穿越相交。
第二个想法是计算距离变换,然后计算渐变方向,然后我仍然需要一种方法来合并方向相似的像素,并处理端点/交叉点。