5
我想从使用openCV的输入图像中检测文本。 为此,我需要从图像中去除噪音成分。我正在使用的标准是,如果某个组件的像素数小于15,那么将消除该特定组件。使用opencv去除噪声像素
例如假定以下给出的图像被设置为I/P的函数:
正如可以看到两个图像中含有大量的不想要的噪声像素的,特别是第一一。
所以,如果任何人都可以提出一个可行的方法来实现它,它将不胜感激。
我想从使用openCV的输入图像中检测文本。 为此,我需要从图像中去除噪音成分。我正在使用的标准是,如果某个组件的像素数小于15,那么将消除该特定组件。使用opencv去除噪声像素
例如假定以下给出的图像被设置为I/P的函数:
正如可以看到两个图像中含有大量的不想要的噪声像素的,特别是第一一。
所以,如果任何人都可以提出一个可行的方法来实现它,它将不胜感激。
好吧,抱歉,这不是c
和不使用opencv
,但是我敢肯定,标签必须在opencv
是可能的,只是我还没有使用它...所以这可能帮助...基本思路是:
这里所有的斑点我实现这python
我们scipy
,但只是为了尺寸(不是形状,虽然这很容易,并且会摆脱下面第一张图中的细长线)。为了达到这个目的,我们必须知道字母大小的可接受范围 - 然而,通过查看平均斑点大小,您可以确定这一点。您仍然可能得到字母大小的误报 - 但可以通过观察它们来删除它们落在某个集中的斑点区域之外(因为文本空间上是规则的)......最小句子长度可能是一个强大的约束。
总之,代码:
import scipy
from scipy import ndimage
im = scipy.misc.imread('learning2.png',flatten=1)
#threshold image, so its binary, then invert (`label` needs this):
im[im>100]=255
im[im<=100]=0
im = 255 - im
#label the image:
blobs, number_of_blobs = ndimage.label(im)
#remove all labelled blobs that are outside of our size constraints:
for i in xrange(number_of_blobs):
if blobs[blobs==i].size < 40 or blobs[blobs==i].size>150:
im[blobs==i] = 0
scipy.misc.imsave('out.png', im)
结果:
文本也像噪音。请参阅第一张图像中的“从数据中学习”。 –
是的,我知道。 “从数据中学习”实际上并不需要。它只是外部边框颜色。在后期阶段,可以获得纯色填充“从数据中学习”。所以暂时,这段特定的文字也可以被视为噪音。事实上,第一张照片或多或少都需要消除。在第二种情况下,横向“从数据中学习”很有用,并且符合我们的要求。 – Koustav
侵蚀或扩张,开放,关闭?你有没有试过这些? –