Tag: boostgraphics

从8连接的像素列表中提取分段

目前情况 :我试图从图像中提取细分。 感谢openCV的findContours()方法,我现在有一个8连接点的列表,每个轮廓。 但是,这些列表不能直接使用,因为它们包含很多重复项。 问题 : 给定一个可以包含重复的8连接点的列表,从中提取段。 可能的解决scheme : 起初,我使用了openCV的approxPolyDP()方法。 然而,结果是相当糟糕的…这里是放大的轮廓: 这里是approxPolyDP()的结果:( 9段!有些重叠) 但是我想要的更像是: 这很糟糕,因为approxPolyDP()可以在“多个段”中转换“看起来像多个段”的东西。 但是,我所拥有的是一系列倾向于多次迭代的点。 例如,如果我的观点是: 0 1 2 3 4 5 6 7 8 9 然后,点的列表将是0 1 2 3 4 5 6 7 8 7 6 5 4 3 2 1 9 …如果点的数量变大(> 100),那么由approxPolyDP()提取的段是不幸的不重复(即:它们相互重叠,但并不严格平等,所以我不能只是说“删除重复”,而不是像素) 也许,我有一个解决scheme,但它很长(虽然有趣)。 首先,对于所有的8连接列表,我创build一个稀疏matrix (效率),如果像素属于列表,则将matrix值设置为1。 然后,我创build一个graphics ,其中节点对应于像素,以及相邻像素之间的边缘。 这也意味着我添加所有像素之间的缺失边缘 (复杂性小,可能因为稀疏matrix)。 然后我删除所有可能的“方块” (4个相邻节点),这是可能的,因为我已经在研究非常薄的轮廓。 […]