图片去噪的一种思路与方法(用途:识别验证码等),接很久之前的找茬的那篇博客

这篇博客介绍了一种简单的图片去噪方法,适用于验证码识别。通过将图片分割成小矩形,对每个矩形内的白色像素点计数,若超过预设阈值则保留,否则置为黑色。博主分享了使用PIL库的im.load方法进行像素处理的思路,并提到二值化处理对提高去噪效果的重要性。

本人自己用的简单暴力的去噪思路:

  把图片分成众多小矩形,每一个小矩形进行判断白点(图片已经二值化处理),如果该矩形内的白点大于一个值(这个值可以根据你取得矩形的大小进行酌情处理)。小于这个值则这一块的值变成0(黑色)。

过程:

我有如下部分代码

.... # 图片已经打开,保存在img变量里面

pixel = img.load()
print(pixel[x,y]) # 打印出坐标为(x,y)的像素值

利用PIL库的im.load方法(im.load方法算是PIL库里面处理像素问题比较快的),可以得到一个图片每个像素的像素值,实质上是一个二维队列(就像C语言里面的二维数组),注意:如果你将图片二值化(图片convert(‘1’),)或者convert(‘1’),就只会显示一个数字。例如:

img2 = img.convert('L')
pixel2 = img2.load()
print(pixel2[x,y]) # 显示一个数字,该数字位于0~255之间,每个像素用8bit表示
# 如果前面是img2 = img.convert('1')二值化后,结果只可能是0(黑),或者255(白0

在RGB模式或者RGBA模式下,打印一个像素的值,结果会显示一个元祖,形式为(R值,G值,B值)或者(R值,G值,B值,A值)。


以上大概介绍了一下load之后获得了一个二维列表,接下来开始进行去噪处理:

本人的思路是,先图片二值化,利用2个for循环遍历整个图片大小的像素值,将图片切成一个个小矩形,判断每个矩形内白点,然后设定一个值(这个值根据你切的大小以及像素多少自己定义个数字就可以了),矩形是越小越好,越小虽然会增加计算机的计算时间,但可以使图片去噪效率更高。

我这里上了我那次辅助的去噪代码(部分)
图片是480*360分

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值