Python 基于像素密度的图像分割

Python 基于像素密度的图像分割,python,opencv,image-segmentation,Python,Opencv,Image Segmentation,我需要一些帮助来开发一些代码,将二进制图像分割成特定像素密度的组件。我一直在做一些OpenCV算法的研究,但在开发自己的算法之前,我想问问周围的人,以确保它还没有完成 例如,在这张图片中,我有代码将其作为二进制图像导入。但是,是否有方法从直线分割对象中的对象?我需要分割节点(角)和对象(本例中的圆)。但是,对象不一定必须是形状 我认为解决方案是使用像素密度。大部分图片将由线条组成,对象的像素密度比线条的像素密度大。有没有办法把它分割出来 下面是该任务的工作示例 原始图片: 分割节点(多条线的交

我需要一些帮助来开发一些代码,将二进制图像分割成特定像素密度的组件。我一直在做一些OpenCV算法的研究,但在开发自己的算法之前,我想问问周围的人,以确保它还没有完成

例如,在这张图片中,我有代码将其作为二进制图像导入。但是,是否有方法从直线分割对象中的对象?我需要分割节点(角)和对象(本例中的圆)。但是,对象不一定必须是形状

我认为解决方案是使用像素密度。大部分图片将由线条组成,对象的像素密度比线条的像素密度大。有没有办法把它分割出来

下面是该任务的工作示例

原始图片:

分割节点(多条线的交点)和元件(如图中的电阻或电压源等电子元件)后生成的图像


如果我理解正确,您希望检测图像中的线条和圆圈,对吗

如果是这种情况,请查看和。

OpenCV有一些能够将轮廓置于层次结构中的工具。这可能就是你要找的。如果没有,请添加有关预期输出的更多信息

您可以使用快速计算矩形区域中黑色像素的密度。然后,可以使用不同比例的移动窗口来检测高密度区域。这将非常类似于人脸检测的工作原理,但只使用一个超级简单的功能


在计算积分图像之前,使用类似的方法使所有边缘变窄可能是有益的,以使结果对宽线不敏感。

我不想只检测线和圆之间的边缘。我想在一个分割算法中将图像分割成角点和圆的子图像。我会修正这个问题来更好地描述我想要的。但是如果你检测到这个圆,那么你就可以从中生成一个子图像,不是吗?同样的角落…我不认为这是我正在寻找的。请再看看我的问题。我编辑了它,并给出了一个我想要的更好的例子。有没有办法避免移动窗口只检测一半的电压源?我感觉它会在图像周围移动,并在正符号中检测到高像素密度,并将其视为整个组件。如何避免这种情况?当检测到的区域在不同的比例下重叠时,最好使用较大的比例。为什么不使用矩形作为基础?我的意思是,检测它,然后搜索移动到它上面的特征。您只需要预先假定所有电路(和子电路)都绘制为矩形。即使电路很复杂,你也可以通过检测所有的矩形并搜索它们来解决。矩形检测=skaletonize+线条检测+查找拐角我想我可以做到,我会试试的。