仿照扫描全能王python程序实现
由于某些原因,我得到一批文件,其大部分为扫描件,但再扫面件其中混杂了部分的拍照文件,因此萌生了使用python变成使拍照图片文字清晰,背景统一,即实现类似扫描文件的效果
本文最终原理参考->https://www.wandouip.com/t5i70153/
最终选择算法介绍
主要思想有二
1、高斯滤波对原图像进行处理,然后讲两张图利用图像除法,得到一张新图
2、对新图进行图像增强技术
下面介绍高斯滤波及矩阵除法操作
高斯滤波可以得到光照图像,记原图为A,经大核高斯滤波处理之后的图像为B,则目标图像L=A/B
使用python及相关库代码操作如下
def gauss_division(image):
'''高斯滤波,图像除法
image cv2'''
src1 = image.astype(np.float32)
gauss = gaussian_filter(image, sigma=101)
gauss1 = gauss.astype(np.float32)
dst1 = (src1 / gauss1) * 255
return dst1
得到图像对比如下 原图:
经高斯滤波及矩阵除法处理后
经算法处理后的图像已经与扫描件非常相似,但黑白对比度不够明显,因此我们在此基础上对图像做图像增强处理
def image_enhancement(image):
'''图像增强,增强对比度和亮度
image PIL'''
# 对比度增强
enh_con = ImageEnhance.Contrast(image)
# contrast = 5
image_contrasted = enh_con.enhance(10)
# 亮度增强
enh_bri = ImageEnhance.Brightness(image_contrasted)
image_contrasted1 = cv2.cvtColor(np.asarray(image_contrasted), cv2.COLOR_RGB2BGR) # PIL转cv2
clear = getImageVar(image_contrasted1)
# print(clear)
brightness = max(round(clear / 2000, 1), 1)
# print(brightness)
image_brightened = enh_bri.enhance(brightness)
return image_brightened
处理后的图片如下
与上图相比,经图像增强的图片明显更加清晰,呈现效果有明显变化。
以上即为本算法主要思路