我想知道,为了数字化绘制的电路并最终对其进行仿真,应该如何处理电路图的手绘图像。
我程序的输入将是一张普通图片(智能手机等),而最终的输出应是电路中所有可能值的仿真(此处未覆盖/必填)
基本上,我只需要检测具有固定连接数(2个连接,例如R,L,C,二极管)的电气元件以及连接它们的线路即可。
我已经有了一个预训练的神经网络,用于检测它是哪种类型的组件。我苦苦挣扎的部分是,如何获得组件周围的边界框,以便可以使用NN对它们进行分类?我尝试了几种使用轮廓的方法以及使用OpenCV进行对象检测的方法(例如FindContours
,ConnectedComponentsWithStats
),但我似乎无法使它仅检测组件,而不能检测文本或组件之间的连接线。 / p>
基本上我想要的是以下内容:
为此 Input Image (not hand-drawn for sake of readability)
我想知道:
这用于提取组件并将其与我已经拥有的模型进行分类。
此外,我想提取最接近任何组件的Text,以便我可以读取每个组件的值。我已经在tesseract-ocr
的帮助下完成了OCR,因此,如果我可以在文本周围找到边框,则可以轻松读取这些值。
但是我最苦恼的部分是找出哪个组件与另一个组件相连,我不确定该如何处理。很难找到一些解决我的问题的方法,并且不确定我应该如何概括地描述这个问题。但是总的来说,我需要足够的信息来使用Matrix-Simulations(基本DC分析)对电路进行仿真。
我没有明确要求代码,我需要一般指导来解决此问题。甚至可能链接到研究类似问题的研究论文。
答案 0 :(得分:0)
“每个问题都只是远离被删除的好数据集” source.
您需要检测几个electronic symbols。对符号进行分类的现代方法是使用神经网络。要训练此模型,您将需要创建手绘电子符号的数据集。电子符号的分类将类似于handwritten digit classification。
在可以通过神经网络模型对符号进行分类之前,必须对图像进行分割。需要识别单个组件(二极管,电容器,电阻器等),并用边框标明。
此任务的复杂性取决于源图像的质量。使用扫描仪(而不是相机)创建的图像将更易于使用。
可以使用OpenCV和Python完成此任务。这是子任务的细分: