我有一个问题是在下面附上的图片中找到数字。它是由有时会发生的垂直线引起的,有时则不是。我正在寻找如何从图片中删除这些垂直线条的想法。
我已经尝试过轮廓检测,但是当它关闭时它选择了行和最接近的数字。我也尝试过形态转换,但它从数字中删除了很多像素。
为了消除短线,我试图查看图像的上半部分并从中检测出发生间隙的位置。在发现间隙之后,我已将其垂直拉伸,但又将其移除。霍夫变换也没有用。
图片:
答案 0 :(得分:0)
您可以尝试使用OpenCV cvMatchTemplate()
中的功能,因为数字是一致的。其他方法是使用Support Vector Machines
这也可以在SimpleCV
中完成答案 1 :(得分:0)
如果你可以用数字宽度划分图片,你可以使用erosion然后使用dylatation,因为这绝对是最简单的方法。它应该适用于图片:1,2,3,8。您可以尝试以多种比例使用这两种操作,例如2次侵蚀,2次dylatations; 2侵蚀,1 dylatation等。
通常用于消除线的滤波器是逻辑滤波器(垂直定位)和媒体滤波器。您也可以通过之前的dylatation支持mediane过滤器,因为通常您要擦除的行比您的数字更薄。执行mediane后,您可以再次使用侵蚀。
另一种可能性是使用垂直索贝尔滤波器(在缓冲器中放置效果),然后侵蚀/逻辑/媒体原始图片,并最终合并两者。 Sobel将强调水平边缘,因此在合并之后它将消除侵蚀效果,但仅限于数字。它可以在线条顶端附近的位置留下微小的斑点,但任何低通滤镜都可以轻松擦除。
聚苯乙烯。每当侵蚀,卷积或过滤时,只在垂直对齐的像素中进行,以最大限度地利用更细的线条。