1

首先,我自己学习了几个星期的图像处理、NN、dll,所以我真的很陌生,离专业人士还很远。n 对不起我的英语不好。

有我的绘图的图像或照片,我想获取对象/形状(黑点)的坐标 n 它周围的数字,数字表示点的序号。

图片

如何得到它?如何检测点?点的形状识别?数字的数字手写识别?然后分割得到位置?还是使用模板匹配?但是由于手绘,每个点都有一些不同的形状。使用神经网络?在 NN 中,神经元通常包含识别字符的每个像素,对吧?我可以使用每个神经元包含的字符或绘图点的图片来识别我的整个图片吗?

我很新,所以我真的需要你的建议,如果我错了,请纠正我!请告诉我我必须学习什么,我必须做什么,我必须使用什么。非常感谢。:'D

4

1 回答 1

2

这是一个难以通过快速解决方案解决的难题。

这是我将如何处理它:

  1. 拍一张更好的照片。您的图像非常嘈杂,并且是在低光和高 ISO 下拍摄的。使用更好的相机和更好的照明条件,这样您就可以使背景尽可能白,而圆点尽可能黑。尝试最大化对比度。
  2. 对图像设置阈值,使所有背景为白色,点和数字为黑色。也许您可以应用一些腐蚀和/或膨胀来帮助将暗边连接在一起。
  3. 以某种方式检测矩形并将您的工作区域设置在矩形内(裁剪图像的其余部分,以便留下矩形内的区域)。您可以通过检测图像中的轮廓来做到这一点,然后面积最大的轮廓是矩形(因为它是图像中最大的对象)。当然,这不是唯一的方法。看到这个:OpenCV找到轮廓
  4. 一旦你只剩下点、圆圈和数字,你就需要找到一种方法来检测它们并区分它们。您可以再次找到所有轮廓(或者您可能已经从上一步中找到了所有轮廓)。您需要找出一种方法来查看某个轮廓是圆形、实心圆(点)还是数字。这是它自己的问题。也许您可以计算轮廓边界框中的白色/黑色像素。点比圆圈和数字有更多的黑色像素。您还需要对与点连接的数字做一些事情(例如图像中的数字 5)
  5. 一旦您知道什么是点、圆圈或数字,您就可以使用 OCR 库(Tesseract 或任何其他 OCR 库)来尝试识别数字。您还可以使用神经网络库(可能使用MNIST 数据集进行训练)来识别数字。一个好的方法是类似于LeNet-5的卷积神经网络。

如您所见,这是一个需要许多不同步骤来解决的问题,并且涉及到许多不同的组件。我建议的步骤可能不是最好的,但通过一些工作我认为可以解决。

于 2013-03-23T09:07:00.500 回答