文章从python和opencv中的报纸图像中提取

时间:2015-10-23 09:47:28

标签: python opencv

first image: this is the image I tried Run length smoothing algorithm horizontal and vertical with some pixel value depends on the dimension of the image

second image: Another image to extract article by increasing the pixel value but merging with other articles

我尝试从报纸图像中提取文章,但标题是用rlsa算法在第一张图像中水平和垂直分隔某些像素值。如果我尝试使用更多像素值,则会合并第二张图片中的文章。任何人都可以建议在python和opencv中将文章与图像分开的最佳方法吗?

此循环用于图像

上的游程长度平滑算法水平
    for i in range(1,a):
        c = 1
        for j in range(1, b):
            if im_bw[i, j] == 0:
                if (j-c) <= 10:
                    im_bw[i, c:j] = 0

                c = j


        if (b - c) <= 10:
            im_bw[i, c:b] = 0

此循环用于图像

上的游程长度平滑算法垂直
    for i in range(1, b):
        c = 1
        for j in range(1, a):
            if im_bw[j, i] == 0:
                if (j-c) <= 9:
                    im_bw[c:j, i] = 0

                c = j


        if (b - c) <= 9:
            im_bw[c:b, i] = 0

a是行数 b是二进制图像的列数

算法如何处理二进制图像和红色标记显示文章的合并

1 个答案:

答案 0 :(得分:1)

我有一种方法可以处理大多数图像。

  1. 使用PIL / Opencv对彩色/灰度图像进行二进制转换。
  2. 将图像中的图片作为轮廓移除,与 图片中所有轮廓的平均面积。
  3. 使用 canny 边缘过滤器和 houghlines
  4. 删除线
  5. 在此二进制图像上使用 RLSA (行程长度平滑算法)。可以在此存储库https://github.com/Vasistareddy/python-rlsa
  6. 中找到此 RLSA 的描述和代码。

删除行会有所帮助,因为某些电子纸会将行保留为文章分隔符。 通过对图像进行更多处理,我们可以获得更好的结果。在执行上述步骤后,可以在图像上剩下的轮廓上实现平均宽度,平均高度,平均面积等启发式方法。

谈到上述问题,文章始终带有白色背景。没有白色背景的显然是“广告”或“图片”或“杂项”。 从上述4个步骤中删除图片可以清除,即可解决此问题。

PS:选择 RLSA 水平和垂直的值始终是个谜。由于文章的差异因版本而异。