如何使图像亮度均匀(使用Python/PIL)

如何使图像亮度均匀(使用Python/PIL),python,image,image-processing,python-imaging-library,brightness,Python,Image,Image Processing,Python Imaging Library,Brightness,我想拍摄一张拍摄过的文档的图像,让它看起来像是扫描过的。因为扫描仪会在整个文档上放置一个恒定的光源,所以我想在文档的照片上实现这种效果。理想的效果是去除任何阴影或弱光区域(或至少使其不那么明显),使整个照片相当明亮 我的第一个想法是找到目标图像中最亮的部分,然后它们使整个图像变得更亮。假设这是正确的算法,我将如何在PIL中实现它?有获取亮度的方法吗?等等 (这是后续操作。)作为第一次尝试,尝试对图像进行阈值化。深色区域变黑,浅色区域变白。我没有使用PIL,但我想有任何简单的方法可以做到。尝试使用

我想拍摄一张拍摄过的文档的图像,让它看起来像是扫描过的。因为扫描仪会在整个文档上放置一个恒定的光源,所以我想在文档的照片上实现这种效果。理想的效果是去除任何阴影或弱光区域(或至少使其不那么明显),使整个照片相当明亮

我的第一个想法是找到目标图像中最亮的部分,然后它们使整个图像变得更亮。假设这是正确的算法,我将如何在PIL中实现它?有获取亮度的方法吗?等等


(这是后续操作。)

作为第一次尝试,尝试对图像进行阈值化。深色区域变黑,浅色区域变白。我没有使用PIL,但我想有任何简单的方法可以做到。

尝试使用带有两个图像副本的ImageChops.screen(image1,image2)。如果不满意,请尝试ImageChops模块中的其他一些功能


此外,您可能需要先将其转换为灰度:ImageOps.grayscale(image)

首先在图像编辑程序中手动尝试,如GIMP。我想你需要的是调整亮度和对比度。

什么类型的图像?如果它被认为是理想的纯黑色和白色,就像文本页面一样,那么你的原始数据可能是一个灰度梯度,有不同级别的不完全黑色的字母。根据常数设置阈值可能会产生良好的效果,但如果照明过于不均匀或镜头眩光干扰,则不会产生这种效果。根据平滑后的图像自身设置阈值。使用PIL_usm.gblur(图像,半径)对其进行平滑处理,其中半径(以像素为单位)约为10、20或与字母元素宽度相当的某个值。旧笔记中的快速破解代码仅供说明:

import Image
import PIL_usm
# see http://www.cazabon.com/pyCMS/PIL_usm.html for PIL_usm

img = Image.open(...)
sm = PIL_usm(img, 10)
thr = Image.ImageChops.subtract(img,sm, .001, 128)  
# or whatever works 4u...

OTOH,如果这些文件有照片或其他非双层图形,你需要更聪明

不,这不仅仅是因为较暗的区域应该比已经明亮的区域获得更高的亮度。你能添加你的示例图像吗?