如何从img中删除垂直线条

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

我有一个问题,在下面的图片中找到数字。它是由有时会发生的垂直线引起的,有时则不然。我正在寻找如何从图片中删除这些垂直线的想法。

我已经尝试过轮廓检测,但是当它关​​闭时它选择了行和最接近的数字。我也尝试过形态转换,但它从数字中删除了很多像素。

为了消除短线,我试图查看图像的上半部分并从中检测出发生间隙的位置。在发现间隙之后,我已经将它纵向拉伸,但它再次移除了很多。霍夫变换也没有用。

图片:

image opencv lines feature-detection
2个回答
0
投票

您可以尝试使用OpenCV cvMatchTemplate()中的函数,因为数字是一致的。其他方法是使用Support Vector Machines的库

这也可以在SimpleCV中完成


0
投票

如果你可以用数字的宽度划分图片,你可以使用erosion然后使用dylatation,因为这绝对是最简单的方法。它应该适用于图片:1,2,3,8。您可以尝试以多种比例使用这两种操作,例如2次侵蚀,2次dylatations; 2侵蚀,1 dylatation等

通常用于消除线的滤波器是逻辑滤波器(垂直定位)​​和媒体滤波器。您也可以通过之前的dylatation支持mediane过滤器,因为通常您要擦除的行比您的数字更薄。执行mediane后,您可以再次使用侵蚀。

另一种可能性是使用垂直索贝尔滤波器(在缓冲器中放置效果),然后侵蚀/逻辑/媒体原始图像,并最终合并两者。 Sobel将强调水平边缘,因此在合并之后它将消除侵蚀效果,但仅限于数字。它可以在线条顶端附近的位置留下微小的斑点,但任何低通滤波器都可以轻松擦除。

PS。每当侵蚀,卷积或过滤时,只在垂直对齐的像素中进行,以最大限度地利用更细的线条。

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