【问题标题】:search for shapes in BMP image file在 BMP 图像文件中搜索形状
【发布时间】:2013-01-03 03:51:07
【问题描述】:

我有一个图像处理问题,使用 C#。

假设我有一些 BMP 格式的示意图,图表包含相互连接的组件形状。

我写了一个简单的程序来检测图表中的正方形作为一个组件,并记录它的位置。但是,下一个级别是检测更复杂的形状,例如连接在一起的几条弧线。请注意,这些形状在图像中可以是不同的大小。有谁知道这样做的好方法吗?无需下载任何库(这是我现在的限制)。

检测到形状后,我还需要记录哪个形状连接到哪个形状,以便稍后重新绘制它们。我有一周的时间来做这件事,所以非常感谢你的帮助!!

我正在使用 C#。

【问题讨论】:

  • 您的形状在图像中旋转了吗?它们是按比例缩放的吗?
  • 我建议你解除限制,看看 OpenCV 或其他类似的库。对于我的计算机科学学位,我上了一门计算机视觉课程,即使在整个课程之后,一个人也没有足够的知识来编写你所要求的内容。将算法留给科学/研究人员,专注于创建应用程序。
  • 你有一周的时间来做这件事吗?这是作业吗?
  • 感谢 cmets,我不使用 EmguCV 或 OpenCV 的原因是我需要下载他们的库,我暂时只能这样做。我写了一个算法来检测图像中的正方形并在 1 天的时间内成功找到它,所以我认为那里的人可能知道很多寻找形状的好方法,并且可以帮助我,因为我没有太多时间使这项工作。我还是个学生。
  • 形状可以旋转 90 或 45 度,仅此而已。它们在多张图片中可以有不同的尺寸,但在同一张图片中,它们的尺寸大致相同。

标签: c# image-processing


【解决方案1】:

看看this paper。我对他们方法的理解:

  • 检测边缘
  • 通过寻找垂直边缘来检测角落
  • 通过查找角组来检测多边形
  • 使用霍夫变换检测圆

这是一个相当困难的研究问题。即使使用像 OpenCV 这样功能强大的计算机视觉库,在 1 周内实施有效的解决方案也是一项艰巨的任务。

【讨论】:

  • 非常感谢 misha,我认为您提供的纸张与我想要的非常相似,只是图像中的形状更整洁,因为它们首先是机器图纸。我想我可以跳过平滑步骤,我不确定你做了什么分割步骤。我对寻找弧线、线条、箭头等形状更感兴趣。我在使用过滤器时有点犹豫,因为机器运行所有算法需要时间,而且我可能没有时间编写自己的霍夫变换?但我将尝试使用圆公式找到弧并查看。
【解决方案2】:

你看过使用EmguCV吗?它是 OpenCV 的开源 C# 包装器。它还有一个您可能感兴趣的shape detection sample

【讨论】:

  • 谢谢mevatron,我在发布这个问题之前确实看到了这个,假设我想使用这个,但我需要下载EmguCV库对吗?这是我现在的限制,我不能使用他们的图书馆。是的,我知道这很糟糕,但我只需要自己想出好的方法来找到这些形状。
【解决方案3】:

为了回答我的一篇旧帖子,我在 2 周内完成了我需要做的事情,效果很好。实际上,我最终对不同的形状使用了不同的算法。这些算法有点自创,但我想说的一个好方法是获取直方图然后在不同轴上使用投影有很大帮助。

【讨论】:

    猜你喜欢
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 2012-10-06
    • 2021-12-06
    • 1970-01-01
    • 2019-10-18
    相关资源
    最近更新 更多