栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

OpenCV 验证码图像增强处理 一、滤波增强

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV 验证码图像增强处理 一、滤波增强

前言

图像增强是对图像进行处理,使其比原始图像更适合于特定的应用,它需要与实际应用相结合。对于图像的某些特征如边缘、轮廓、对比度等,图像增强是进行强调或锐化,以便于显示、观察或进一步分析与处理。图像增强的方法是因应用不同而不同的。

有的小伙伴想通过增强验证码图像的方式来识别验证码,或者已经有了识别方式,但是识别不太准确,也有小伙伴想通过深度学习的方式去更好的训练模型,不管怎么样,最终都是为了识别结果,所以,这里讲一下,具体的增强方式,如何去增强,能更好的帮助你识别出结果。

注意:理论上,我们利用基本的图像处理方式,只能解决干扰程度没有那么复杂的验证码图形,如果干扰程度太强,即便你如何使用搭配增强方式也没有任何作用,即使使用深度学习的方式进行识别,也很难去提高你的准确度

注意:有些图像增强的方式,其实是在削减图像质量来达到一定目的,如果削减图像特征太多的话,反而导致图像特征不明显,导致无法识别出验证码,我会详细介绍每种图像增强对于验证码识别的利与弊

接下来为正题,通常图像滤波也是图像模糊的一种形式,是为了减少图像噪音的操作,根据滤波核和运算方式的不同,滤波处理分为线性滤波和非线性滤波,对于需要增强图像内部分特征的情况,肯定是使用非线性滤波更好,通过加强局部特征的方式,可以使验证码识别更为明显,因为本质上是一种图像模糊,所以滤波也存在一定的弊端,会使得本应识别到的图像特征变得更为模糊。如果对于现有滤波还达不到效果的,甚至可以自己自定义滤波器

线性滤波:方框滤波、均值滤波、高斯滤波。
非线性滤波:中指滤波、双边滤波、(?自定义滤波?)

1、方框滤波

方框滤波的滤波器中的所有元素值均相同,滤波器图像如下:


在python中,opencv提供了方框滤波函数如下:

cv2.boxFilter(src, ddepth, ksize, dst=None, anchor=None, normalize=None, borderType=None)

参数说明:
src: 输入图像(ndarray格式)
ddepth: 处理结果图像的图像深度,一般使用-1表示与原始图像使用相同的图像深度
ksize:滤波器的核尺寸大小
dst:返回图像(ndarray格式)
anchor:锚点
normalize:是否需要归一化处理
borderType:边界模式

方框滤波通过削减椒盐噪声的优势,可以快速清除一些验证码图像的干扰点,如果椒盐噪声多的话,可以使用此函数,同时,
如果进行过多的方框滤波进去过滤的话,也会使得图像模糊,削减过多的特征

案例:

img = cv2.imread(r"a.png")
showimg(img)
box_img = cv2.boxFilter(img, -1, (3, 3))
showimg(box_img)
box_img = cv2.boxFilter(img, -1, (5, 5))
showimg(box_img)

原图

3x3 滤波核效果图

5x5 滤波核效果图

2、均值滤波

均值滤波与方框滤波类似,均值滤波是指任意一点的像素值,都是周围N*M个像素值的均值,如下图,将左边的滤波器提取出1/25即为方框滤波,均值滤波与方框滤波的区别在于,均值滤波必须归一化处理,而方框滤波没有该限制,均值率输出图像的深度与输入图像的深度一致

在python中,opencv提供了均值滤波函数如下:

cv2.blur(src, ksize, dst=None, anchor=None, borderType=None)

参数说明:
src: 输入图像(ndarray格式)
ksize:滤波器的核尺寸大小
dst:返回图像(ndarray格式)
anchor:锚点
borderType:边界模式

案例:

img = cv2.imread(r"a.png")
showimg(img)
box_img = cv2.blur(img, (3,3))
showimg(box_img)
box_img = cv2.blur(img, (5,5))
showimg(box_img)

原图

3x3 滤波核效果图

5x5 滤波核效果图

3、高斯滤波

相比均值滤波和方框滤波,高斯滤波对边缘特征有更好的保留,理论上,能够更好的减弱噪声并保留小信号,高斯滤波在进行邻域平均后,对每个元素添加了权重,滤波核展示如下:

在python中,opencv提供了高斯滤波函数如下:

cv2.GaussianBlur(src, ksize, sigmaX, dst=None, sigmaY=None, borderType=None)

参数说明:
src: 输入图像(ndarray格式)
ksize:滤波器的核尺寸大小
sigmaX: 高斯核在X方向上的Sigma值
dst:返回图像(ndarray格式)
sigmaY: 高斯核在Y方向上的Sigma值
borderType:边界模式

案例:

img = cv2.imread(r"a.png")
showimg(img)
box_img = cv2.GaussianBlur(img, (3, 3), 0.8, dst=None, sigmaY=None, borderType=None)
showimg(box_img)
box_img = cv2.GaussianBlur(img, (5, 5), 0.8, dst=None, sigmaY=None, borderType=None)
showimg(box_img)

原图

3x3 滤波核效果图

5x5 滤波核效果图

4、双边滤波

双边滤波对于图像边缘特征的保留更为明显,在相邻的元素色彩上,将给予更大的权值,在较大的元素色彩差异上,将给予更小的权值,在python中,opencv提供了双边滤波函数如下:

cv2.bilateralFilter(src, d, sigmaColor, sigmaSpace, dst=None, borderType=None)

参数说明:
src: 输入图像(ndarray格式)
d:滤波过程中相邻元素的直径范围
sigmaColor: 颜色空间滤波器的sigma值
sigmaSpace: 坐标空间滤波器的sigma值
dst:返回图像(ndarray格式)
borderType:边界模式

案例:

img = cv2.imread(r"a.png")
showimg(img)
box_img = cv2.bilateralFilter(img, 0, 50, 50)
showimg(box_img)
box_img = cv2.bilateralFilter(img, 0, 150, 150)
showimg(box_img)
box_img = cv2.bilateralFilter(img, 10, 150, 150)
showimg(box_img)

原图

sigmaColor=50, sigmaSpace=50

sigmaColor=150, sigmaSpace=150

d=10, sigmaColor=150, sigmaSpace=150

5、中值滤波

顾名思义,将每个元素替换为核领域范围内的中值,一般情况下,用来消除图像中的异常值,在python中,opencv提供了中值滤波函数如下:

cv2.medianBlur(src, ksize, dst=None)

参数说明:
src: 输入图像(ndarray格式)
ksize: 滤波器的尺寸
dst:返回图像(ndarray格式)

案例:

img = cv2.imread(r"a.png")
showimg(img)
box_img = cv2.medianBlur(img, 3)
showimg(box_img)
box_img = cv2.medianBlur(img, 5)
showimg(box_img)

原图

3x3 滤波核效果图

5x5 滤波核效果图

6、自定义滤波

自定义滤波需要自己实现滤波器的参数,不同的滤波器搭配也能实现出不错的效果在python中,opencv提供了自定义滤波函数如下:

cv2.filter2D(src, ddepth, kernel, dst=None, anchor=None, delta=None, borderType=None)

参数说明:
src: 输入图像(ndarray格式)
ddepth:图像的深度
kernel: 自定义的滤波器
dst:返回图像(ndarray格式)
anchor:锚点,默认(-1,-1)即核中心
delta:偏置
borderType:边界模式

案例:

img = cv2.imread(r"a.png")
kernel = np.array((
        [0.0625, 0.125, 0.0625],
        [0.125, 0.25, 0.125],
        [0.0625, 0.125, 0.0625]), dtype = np.float32)
showimg(img)
box_img = cv2.filter2D(img, -1, kernel)
showimg(box_img)

原图

效果图

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/958106.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号