【问题标题】:Image Segmentation based on Pixel Density基于像素密度的图像分割
【发布时间】:2014-01-16 12:23:24
【问题描述】:

我需要一些帮助来开发一些将二进制图像分割成特定像素密度的组件的代码。我一直在对 OpenCV 算法进行一些研究,但在开发自己的算法之前,我想四处打听以确保它尚未完成。

例如,在这张图片中,我有将其作为二进制图像导入的代码。但是,有没有办法从线条中分割对象中的对象?我需要分割节点(角)和对象(在这种情况下是圆圈)。然而,对象不一定必须是形状。

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

以下是该任务的工作示例。

原图:

节点分割后的结果图像(多条线的交叉点)和组件(图中的电阻器或电压源等电子组件)

【问题讨论】:

  • 为什么不用矩形作为基础呢?我的意思是,检测它,然后搜索移动到它上面的特征。您只需要预先假设所有电路(和子电路)都绘制成矩形。即使电路很复杂,你也可以通过检测所有矩形并搜索它们来解决。
  • 矩形检测 = skaletonize + 线检测 + 找角
  • 我想我能做到,我会试试的。

标签: python opencv image-segmentation


【解决方案1】:

如果我理解正确,您想检测图像中的线条和圆圈,对吧?

如果是这种情况,请查看Hough line transformHough circle transform

【讨论】:

  • 我不仅想检测线和圆之间。我想在一种分割算法中将图像分解为角和圆的子图像。我会解决这个问题以更好地描述我想要什么。
  • 但是如果你检测到圆圈,那么你可以用它制作一个子图像,不是吗?角落也一样...
【解决方案2】:

OpenCV 有一些functionality for finding contours 能够将轮廓置于层次结构中。这可能是您正在寻找的。如果没有,请添加更多关于您的预期输出的信息!

【讨论】:

  • 我认为这不是我想要的。请再次查看我的问题。我对其进行了编辑,并提供了一个更好的示例来说明我想要的内容。
【解决方案3】:

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

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

【讨论】:

  • 有没有办法避免移动窗口只检测到一半的电压源?我觉得它会在图像中移动并仅在加号中检测到高像素密度,并将其视为整个组件。我怎样才能避免这种情况?
  • 当您在不同尺度下检测到重叠区域时,可以首选较大的尺度。
猜你喜欢
  • 2013-09-29
  • 1970-01-01
  • 2017-08-05
  • 2015-09-30
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多