检测图像中的手绘电路元件,检测文本,构建连接树

问题描述 投票:0回答:2

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

我的程序的输入将是常规图片(智能手机等),最终的输出应该是电路中所有可能值的模拟(此处未涵盖/要求)

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

我已经有一个预训练的神经网络来检测它是什么类型的组件。我遇到的困难是,如何获得组件周围的边界框,以便我可以使用神经网络对它们进行分类?我尝试了几种使用 OpenCV 进行轮廓和对象检测的方法(例如

FindContours
ConnectedComponentsWithStats
),但我似乎无法让它仅检测组件,而不是组件之间的文本或连接线。

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

鉴于此输入图像(为了可读性而不是手绘)

我想知道:

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

基本上 这些边界框

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

此外,我想提取最接近任何组件的文本,以便我可以读取每个组件的值。我已经在

tesseract-ocr
的帮助下成功进行了 OCR,所以如果我可以在文本周围找到边界框,我就可以轻松读取这些值。

像这样

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

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

opencv image-processing object-detection
2个回答
0
投票

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

您需要检测几个电子符号。对符号进行分类的现代方法是使用神经网络。要训练此模型,您需要创建手绘电子符号的数据集。电子符号的分类类似于手写数字分类

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

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

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


0
投票

[在此处输入图像描述][1]

[1]: https://i.sstatic.net/vtjBIyo7.jpg这张图用的是哪个ic

© www.soinside.com 2019 - 2024. All rights reserved.