背景:
使用模型标注两张识别对象时,由于模型识别精确度不高,两张几乎相同的图片(不同天气拍的同一地点),识别出的目标不同,重新训练模型需要大量时间精力,所以通过调整两张图片来提高识别精度
思路:
通过调整使两张图片的亮度、对比度、色彩丰富度、清晰度、饱和度一致
代码:
from PIL import Image, ImageStat, ImageEnhance
import colorsys
from PIL import Image, ImageFilter
import numpy as np
def calculate_brightness(image):
"""计算图片的平均亮度"""
stat = ImageStat.Stat(image.convert('L')) # 'L' 表示转换为灰度
return stat.mean[0]
def calculate_contrast(image):
"""计算图片的对比度,这里使用标准差作为对比度的一个简易度量"""
stat = ImageStat.Stat(image.convert('L'))
return stat.stddev[0]
def calculate_colorfulness(image):
"""计算图像的色彩丰富度"""
# 转换为 HSV 色彩模式
hsv_image = image.convert('HSV')
# 计算颜色标准差
stat = ImageStat.Stat(hsv_image)
return stat.stddev[1] + stat.stddev[2]
def calculate_sharpness(image):
"""计算图像的清晰度"""
# 使用Prewitt算子进行边缘检测
edges = image.filter(ImageFilter.FIND_EDGES)
# 将图像转换为灰度图
gray_image = edges.convert('L