【问题标题】:How to get position (x,y) and number of particular objects or shape in a handdrawing image?如何获取手绘图像中特定对象或形状的位置(x,y)和数量?
【发布时间】:2013-03-23 08:11:33
【问题描述】:

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

有我画的图片或照片,我想得到物体/形状(黑点)的坐标n它周围的数字,数字表示点的序号。

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

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

【问题讨论】:

    标签: image-processing computer-vision neural-network object-detection handwriting


    【解决方案1】:

    这是一个难以快速解决的难题。

    以下是我的处理方法:

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

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

    【讨论】:

    • 非常感谢 :) 那张照片只是一个例子。原件是手绘的纸质地图,然后扫描成总部图像。这意味着图像将包含街道、路段和其他通常在地图上的符号。我试过阈值,图像变得更清晰,但点变得更细(比如从圆形变成椭圆形或不完美的圆形)。也许这不是你说的问题,我们看到点的黑色像素比圆圈多。
    • @lulu 不客气。如果您觉得我已经回答了您的问题,您应该将其标记为已接受的答案。 Read here why you should do it
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多