使用Python Pillow模块匹配图像亮度分布遇问题求助
问题:Pillow调整图像色彩指标后未达到预期目标
我需要匹配两个各含50张图片的文件夹的色彩分布(包含饱和度、亮度、对比度、色调四个维度),执行流程如下:
- 计算每张图像的四个色彩指标值
- 按每个指标分别对两个文件夹内的图像排序
- 针对每个维度,将两个文件夹中排名对应的图像配对(例:A文件夹亮度第50的图与B文件夹亮度第50的图配对)
- 取配对图像对应指标的中点值作为该图像的调整目标
- 调用Pillow的
enhance模块,用「目标指标值/当前图像指标值」作为调整因子修改图像
目前中点值计算完全正常,但调整后重新检测指标,发现两个文件夹的分布没有重合,且单张图像的指标也没达到预设的中点值。不知道是代码逻辑有bug,还是Pillow的enhance模块本身的特性导致了这个问题,附上相关函数代码求助:
# 计算图像色彩指标的函数 def get_image_metrics(image): # 这里是我的指标计算逻辑,比如提取HSV通道统计亮度、饱和度,计算对比度等 metrics = { 'brightness': ..., 'saturation': ..., 'contrast': ..., 'hue': ... } return metrics # 调整图像的函数 def adjust_image(image, target_metrics, current_metrics): # 亮度调整 brightness_enhancer = ImageEnhance.Brightness(image) image = brightness_enhancer.enhance(target_metrics['brightness'] / current_metrics['brightness']) # 饱和度调整 saturation_enhancer = ImageEnhance.Color(image) image = saturation_enhancer.enhance(target_metrics['saturation'] / current_metrics['saturation']) # 对比度调整 contrast_enhancer = ImageEnhance.Contrast(image) image = contrast_enhancer.enhance(target_metrics['contrast'] / current_metrics['contrast']) # 色调调整(注:Pillow没有直接的色调增强器,这里是我实现的逻辑) # ... 我的色调调整代码 return image
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

