Kaggle - 图片脏文档清洗-python

10

 

概述

      消除印刷文本的噪音

     

Kaggle - 图片脏文档清洗-python_第1张图片 待处理图片

 

Kaggle - 图片脏文档清洗-python_第2张图片 处理后

方案

 

方案一 删除背景

import numpy as np
from PIL import Image
from scipy import signal


def load_image(path):
    # 将矩阵中的值空值在0-1范围内  归一化
    return np.asarray(Image.open(path))/255.0


def save(path,img):
    tmp = np.asarray(img*255.0,dtype=np.uint8)
    Image.fromarray(tmp).save(path)


def denoise_image(inp):
    # 滤波函数  11 是核大小
    bg = signal.medfilt2d(inp,11)
    save('background.png',bg)
    mask = inp

        load_image()在读入图片数据时进行归一化操作,核心方法是 denoise_image() 使用kernel为11的低通滤波器将图片模糊处理降低字体的特征从而得到一个背景图片。

       输出mask、inp、bg的值后可以发现在0-1范围中,越接近0颜色越黑。因此bg中的向量值大多会比inp上的值大,inp中白色部分接近1,黑色部分接近0.因此mask = inp语句将会得到值只为1 or 0 的二值化矩阵

Kaggle - 图片脏文档清洗-python_第3张图片

最后的np.where(mask,inp,1.0) 如果mask是背景部分(False)返回1 如果是字体部分(True) 则输入inp中对应的字体部分值。

 

方案二 自动编码

 

方案三 通过阈值处理

     这个就简单了找一个阈值例如100  100 以上看作无字部分 全部改为255  100一下 当作有字部分 全部改为110

涉及知识点

scipy

     Scipy和numpy协同工作,可以处理插值、积分、优化、图像处理、常微分方程数值的求解、信号处理等问题。用于有效计算Numpy矩阵的计算。Kaggle - 图片脏文档清清洗  。  scipy官方文档

scipy.signal.medfilt(volume,kernel_size = None )

中值过滤二维数组。

使用kernel_size给出的本地窗口大小将中值滤波器应用于输入数组(必须为奇数)。

参数:

输入 : array_like

二维输入数组。

kernel_size : array_like,可选

标量或长度为2的列表,给出每个维度中的中值过滤器窗口的大小。kernel_size的元素 应该是奇数。如果kernel_size是标量,则此标量将用作每个维度的大小。默认值是大小(3,3)的内核。

返回:

 : ndarray

与包含中值滤波结果的输入大小相同的数组。

PIL

    PIL是python的一个图像库

    在python3上 使用pip install plilow 进行安装

Numpy

np.Where

numpy.where(condition[, xy])

Return elements chosen from x or y depending on condition.

Note

When only condition is provided, this function is a shorthand for np.asarray(condition).nonzero(). Using nonzero directly should be preferred, as it behaves correctly for subclasses. The rest of this documentation covers only the case where all three arguments are provided.

Parameters:

condition : array_like, bool

Where True, yield x, otherwise yield y.

x, y : array_like

Values from which to choose. xy and condition need to be broadcastable to some shape.

Returns:

out : ndarray

An array with elements from x where condition is True, and elements from y elsewhere.

example: np.where(condition,x,y)   

condition满足返回x否则返回y

 

你可能感兴趣的:(kaggle)