我需要一些帮助来开发一些代码,将二进制图像分割成某个像素密度的分量。我一直在做OpenCV算法的一些研究,但在开发我自己的算法之前,我想问一下,确保它还没有完成。
例如,在这张图片中,我有代码将其作为二进制图像导入。但是,有没有办法从线条中分割对象中的对象?我需要分割节点(角落)和对象(在这种情况下是圆圈)。然而,对象不一定必须是形状。
我认为解决方案是使用像素密度。大多数图片将由线条组成,并且对象的像素密度大于线条的像素密度。有没有办法将其分割出来?
以下是该任务的一个工作示例。
原始图片:
节点分割后产生的图像(多条线的交叉点)和组件(图中电阻器或电压源等电子元件)
答案 0 :(得分:3)
您可以使用integral image快速计算矩形区域中黑色像素的密度。然后可以用不同比例的移动窗口执行高密度区域的检测。这与面部检测的工作方式非常相似,但只使用一个超简单的功能。
在计算积分图像之前,使所有边缘变得像skeletonizing一样缩小可能是有益的,以使结果对宽线不敏感。
答案 1 :(得分:1)
如果我理解正确,你想要检测图像中的线条和圆圈,对吗?
如果是这种情况,请查看Hough line transform和Hough circle transform。
答案 2 :(得分:1)
OpenCV有一些functionality for finding contours能够将轮廓放在层次结构中。它可能就是你要找的东西。如果没有,请添加一些有关预期输出的信息!