10

概述

消除印刷文本的噪音

待处理图片

处理后

方案

方案一 删除背景

import numpy as np
from PIL import Image
from scipy import signaldef load_image(path):# 将矩阵中的值空值在0-1范围内  归一化return np.asarray(Image.open(path))/255.0def 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<bg-0.1print(mask)save('foreground_mask.png',mask)return np.where(mask,inp,1.0)inp_path = '11.png'out_path = 'out.png'
inp = load_image(inp_path)
out = denoise_image(inp)
save(out_path,out)

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

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

最后的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 - 图片脏文档清洗-python相关推荐

  1. ubuntu中命令打开图片、文档、音乐、视频等

    ubuntu中命令打开图片.文档.音乐.视频等 安装播放软件 sudo apt install libdvdnav4 libdvdread4 gstreamer1.0-plugins-bad gstr ...

  2. 七牛云图片--Java文档

    七牛云图片–Java文档 简介 此 SDK 适用于 Java 7 及以上版本.使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云上.无论您的网络应用是一个网站程序,还 ...

  3. 把图片隐藏起来的html代码,教你把图片、文档、影片等隐藏起来

    每个人都有自己的隐私,有些东西不想给别让看到,或者发现,怎么办,存入电脑,然后[隐藏起来],要用的时候再显示出来. 工具/原料 电脑(台式.笔记本均可) 方法/步骤 1.打开我的电脑(计算机),选择一 ...

  4. 文档化Python代码完全指南(翻译)

    阅读代码比编写代码更多,有良好丰富文档的项目会吸引更多人使用和参与开发贡献.本教程旨在详细阐述如何将 Python 代码实现"文档化",介绍了注释用法.类型提示.文档字符串.在项目 ...

  5. 清理掉Win10“另存为“和“此电脑“里3D对象、视频、图片、文档、下载、音乐、桌面

    新建一个文本文档,复制下列代码 Windows Registry Editor Version 5.00 ;删除Win10[此电脑]{3D对象.视频.图片.文档.下载.音乐.桌面} ; 3D对象 [- ...

  6. Python-docx:读写word文档的Python库

    Python-docx:读写word文档的Python库 1 Python DocX目前是Python OpenXML的一部分,你可以用它打开Word 2007及以后的文档,而用它保存的文档可以在Mi ...

  7. 中如何让图片上下居中_WPS应用技巧—如何使图片在文档中随意移动

    大家好,我们在利用WPS文档或者Word软件进行日常办公时,经常会在文档里添加图片,但是我们时常发现一个问题,那就是我们插入图片之后,图片不能根据我们的要求随意移动,上下左右拉动时都非常的受限制,这是 ...

  8. Windows11 如何删除此电脑里面的 6 个系统图标(视频、图片、文档、下载、音乐、桌面)?

    周末空闲的时候把家里台式机重新装了 Windows11 系统,发现在此电脑里面多了 6 个系统图标:视频.图片.文档.下载.音乐.桌面,这样看着不仅乱还引发了我的强迫症... 那么,该如何将此电脑里面 ...

  9. 下载图片,文档,excel导入导出

    Q1:下载图片,文档 --1:Fileio.html <!DOCTYPE html> <html> <head> <meta charset="UT ...

最新文章

  1. android获取所有的子进程,Android M:如何获取所有进程UID?
  2. android+静态密钥,Android - 更安全地保存静态密钥
  3. FreeSql (二十九)Lambda 表达式
  4. Linux下如何查看tomcat是否启动
  5. 推荐5大开源工具,用于开发Kubernetes项目
  6. 【计算机网络】1.1 计算机网络的基本概念
  7. 白鹭引擎和layabox哪个好用,哪个技术更成熟 ?
  8. ajax异步数据加载
  9. java写入文件编码格式为ansi_java 获取文本文件编码格式
  10. 新版gsp五个附录计算机培训,新版GSP附录5 ——验证管理
  11. vs2017 C#程序打包安装部署之创建Windows安装项目
  12. HTML是什么?HTML简介
  13. ckfinder php,php,ckfinder_ckfinder mac下报错 linux正常,php,ckfinder - phpStudy
  14. 三个灭点来衡量一个立方体
  15. DNS 缓存查看以及清除(转载)
  16. excel根据颜色赋值 Excel填充颜色单元格替换成数字 excel把所有红色变成1
  17. windows配置DNS
  18. gRPC(四)基础:gRPC流
  19. RecyclerView 滑动之后显示数据错乱
  20. AutoCAD .NET 二次开发实例(5) 批量获取多段线所有顶点坐标

热门文章

  1. 数学天才破解世界级难题,23岁被聘为正教授,丘成桐:运气好而已
  2. 华为机试题71-字符串通配符
  3. 11.2 NOIP模拟赛 (morning)
  4. 如何利用Flutter框架开发运行小程序
  5. docker运行报错:Error response from daemon:Container {containerId} is not running
  6. C语言试题115之两个乒乓球队进行比赛,各出三人。甲队为 a,b,c 三人,乙队为 x,y,z 三人。已抽签决定 比赛名单。有人向队员打听比赛的名单。a 说他不和 x 比,c 说他不和 x,z 比,请
  7. mount -t nfs报错bad option; bad option; for several filesystems , you might need a /sbin/mount
  8. 开发人员360杀毒软件的配置
  9. layui单选框verify_layui 实现自动选择radio单选框(checked)的方法
  10. 关于“华为”的大数据分析