如何降低NumPy数组形式图像数据集的对比度?
使用Albumentations降低数据集对比度的方法
Albumentations中的RandomBrightnessContrast变换可以满足固定降低对比度的需求,默认它是随机调整参数,但我们可以通过设置固定值,让整个数据集统一应用对比度降低操作。
具体实现步骤
导入依赖库
import numpy as np import albumentations as A定义固定对比度降低的变换管道
通过设置contrast_limit为负数来降低对比度(取值范围[-1,1],负数对应降低,正数对应增强),同时关闭亮度调整、设置p=1.0确保每个样本都被处理:# 示例:降低50%对比度,可根据实验需求调整contrast_limit的数值 transform = A.Compose([ A.RandomBrightnessContrast(brightness_limit=0, contrast_limit=-0.5, p=1.0) ])批量处理数据集
遍历每个样本应用变换,注意Albumentations默认处理HWC格式的图像(你的数据(28,28,1)正好符合该格式):# 假设X是你处理后的原始数据集,形状为(-1,28,28,1) X_low_contrast = [] for img in X: # 若数据是归一化后的float类型(0-1),需先转成uint8(0-255)适配Albumentations # 转换代码:img_uint8 = (img * 255).astype(np.uint8) result = transform(image=img) X_low_contrast.append(result['image']) X_low_contrast = np.array(X_low_contrast)
关键注意事项
- 数据类型适配:Albumentations多数变换默认要求输入为
uint8类型(像素值0-255),如果你的数据是归一化后的float32(0-1),需要先转换类型,处理后可再转回原类型:# float32(0-1)转uint8(0-255) img_uint8 = (img * 255).astype(np.uint8) result = transform(image=img_uint8) # 转回float32(0-1) img_low_contrast = result['image'].astype(np.float32) / 255.0 - 对比度幅度调整:
contrast_limit的数值可按需修改,比如-0.3对应降低30%对比度,-0.7对应降低70%对比度。
内容的提问来源于stack exchange,提问作者MRSinal
相关产品推荐
相关产品推荐

