使用opencv去除噪声像素

Kou*_*tav 5 c opencv noise-reduction

我试图使用openCV从输入图像中检测文本.为此,我需要从图像中删除噪声成分.正在使用的标准是,如果某个组件的像素数小于15 am,则消除该特定组件.

例如,假设下面给出的图像作为函数的i/p提供: 输入图像1

输入图像2

可以看出,这两个图像都包含许多不需要的噪声像素,特别是第一个.

因此,如果任何人都可以提出实现它的可行方法,那将非常感激.

fra*_*xel 2

好吧,抱歉,但这不在c并且它没有使用opencv,但是我确信标签必须可以在opencv,只是我还没有使用它......所以这可能会有所帮助......基本上这个想法是:

  1. 查找并标记图像中所有单独的斑点
  2. 删除所有超出特定限制(大小、形状)的斑点

python在这里,我在using中实现了这一点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)
Run Code Online (Sandbox Code Playgroud)

结果:

在此输入图像描述 在此输入图像描述