今天来给大家分享下怎么做图片的噪声去除。平时其实大家上网都能遇到这样的场景,就是输入讨厌验证码,怎么都输不对。验证码现在可以说是千奇百怪、分外妖娆,为啥要做成这样呢?就是因为对于这类图片的识别技术实在是太强了,弱一点的特征的验证码很容易被算法破解。今天给大家分享一个小tips,就是如何用一个最简单的算法解决图片噪音的问题,这也是图片OCR识别的第一步。
首先看下我们要处理的图片:
这张图是一个典型的验证码图片,里面有“KDQU”四个字母,也有后方很多的灰色线条干扰。首先思考一下,当我们的眼睛看到这张图的时候,你的大脑是如何对这几个字母进行识别的。过程大致是这样的:
ok~基于这样的理论,我们来构建上述步骤2的去噪原理,首先可以获取整个图片的色素平均值,假设是V,色素值越大表示颜色越深,越小表示颜色越浅。然后遍历整个图片每一个色素点,当色素值>n,那么就把这个点画成黑色点,当色素点<n,就把这个点画成白色。代码放在这里:< p="">
#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
from PIL import Image
# 二值化处理
def two_value():
# 打开文件夹中的图片
image=Image.open('1.png')
# 灰度图
lim=image.convert('L')
# 灰度阈值设为165,低于这个值的点全部填白色
threshold=165
table=[]
for j in range(256):
if j<threshold: < p="">
table.append(0)
else:
table.append(1)
bim=lim.point(table,'1')
bim.save('2.png')
two_value()
感兴趣的同学可以玩一玩,效果的话如下图: