在Python中使用PIL进行亮度均衡

时间:2019-03-19 11:28:25

标签: python-3.x python-imaging-library

我试图均衡亮度的文件夹中有多个灰度图像。必须将增强功能应用于所有图像,但第一个图像将是我们的参考图像。此外,更改仅发生在图像的亮度中,而不发生对比度,因为我想保留所有其他细节。这意味着直方图只会发生简单的移动,而不会变宽。我试图使用PIL模块来计算平均亮度。此方法可能更快,因为我无需进行numpy数组转换即可完成此操作。

代码:

with open("Img_Locations.txt") as file: # Assume the file locations in a text file
    img_files = file.read().splitlines()
file.close()

self.images = [[] for x in range(len(img_files))]
for i in range(len(img_files)):
    images[i] = Image.open(img_files[i])

    im = images[i].convert('L')
    stat = ImageStat.Stat(im)
    ref_pil_original = int(stat.mean[0])

    enhancer = ImageEnhance.Brightness(im)
    enhanced_im = enhancer.enhance(1.5)
    stat2 = ImageStat.Stat(enhanced_im)
    ref_pil_bright = int(stat2.mean[0])

    print(ref_pil_original, ref_pil_bright)    

此处的示例输出是:

114  170
129  192
122  183

所以问题是,为什么将亮度增强应用于相同的1.5倍系数时,我对每个图像产生不同的差异(基本上,该系数如何影响我的图像像素)?如果是这种情况,以恒定因子调整图像亮度以确保最终平均值具有相同平均值的最快方法是什么?

python -- measuring pixel brightness在此按像素读取PIL图像。那么这是否意味着我将必须逐像素扫描图像以完成要求?我想知道是否确实是这样做的方法,因为已经存在功能。不幸的是,我只知道用于图像分析的PIL和OpenCV,因此,我读取的图像的格式仅限于它们两者。

0 个答案:

没有答案