【问题标题】:Detect hand-drawn circuit components in image, detect text, build connection tree检测图像中的手绘电路元件,检测文本,建立连接树
【发布时间】:2019-03-05 04:55:40
【问题描述】:

我想知道,我应该如何处理电路图的手绘图像,以便将绘制的电路数字化并最终对其进行仿真。

我的程序的输入将是一张普通图片(智能手机等),完成的输出应该是电路中所有可能值的模拟(此处未涵盖/不需要)

基本上,我只需要检测具有固定数量连接(2 个连接,例如 R、L、C、二极管)的电气元件和连接它们的线路。

我已经有一个预训练的神经网络来检测它是哪种类型的组件。我挣扎的部分是,我如何在组件周围获得边界框,以便我可以用我的 NN 对它们进行分类?我尝试了几种使用 OpenCV 的轮廓和对象检测的方法(例如FindContoursConnectedComponentsWithStats),但我似乎无法让它仅检测组件,而不是组件之间的文本或连接线。

基本上我想要的是以下内容:

鉴于此 Input Image (not hand-drawn for sake of readability)

我想知道:

  • 有多少个组件?
  • 组件的边界框在哪里?

基本上These bounding boxes

这用于提取组件并使用我已有的模型对它们进行分类。

此外,我想提取最接近任何组件的文本,以便我可以读取每个组件的值。我已经在tesseract-ocr 的帮助下完成了 OCR,所以如果我可以在文本周围设置边界框,我可以轻松读取这些值。

Like this

但是我最挣扎的部分是找出哪个组件与哪个其他组件相关联,我不确定我应该如何处理这个问题。真的很难找到用谷歌搜索我的问题的东西,而且不确定我应该如何描述这个问题。但总的来说,我需要足够的信息才能使用矩阵模拟(基本直流分析)来模拟电路。

我没有明确要求代码,我需要一般指导来解决这个问题。或者甚至可能是针对类似问题的研究论文的链接。

【问题讨论】:

  • 嗨,我也在做同样的事情,偶然发现了你描述的同样的问题。你能解决边界矩形问题吗?我目前正在做一个有点蹩脚的滑动窗口方法。

标签: opencv image-processing object-detection


【解决方案1】:

“每个问题都只是一个远离被拆除的好数据集”source.

您需要检测多个electronic symbols。对符号进行分类的现代方法是使用神经网络。要训​​练此模型,您需要创建一个手绘电子符号数据集。电子符号的分类类似于handwritten digit classification

在通过神经网络模型对符号进行分类之前,必须对图像进行分割。需要识别各个组件(二极管、电容器、电阻器等),并用边界框标记。

此任务的复杂性取决于源图像的质量。使用扫描仪(而不是相机)创建的图像将更容易处理。

这个任务可以用 OpenCV 和 Python 来完成。这是子任务的细分:

【讨论】:

    猜你喜欢
    • 2017-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-28
    • 2011-02-05
    • 2011-12-08
    • 2012-04-03
    • 1970-01-01
    相关资源
    最近更新 更多