共计 2355 个字符,预计需要花费 6 分钟才能阅读完成。
1. 背景与痛点
低光图像增强是计算机视觉中的基础任务,直接影响夜间监控、自动驾驶和医学影像等应用效果。但当前主流数据集存在三个明显缺陷:

- 分辨率不足 :多数数据集仅提供 1080p 图像,难以满足 4K 应用需求
- 配对不精确 :低光 / 正常光图像存在拍摄时间差导致的内容偏移
- 场景单一 :集中于室内场景,缺乏复杂光照条件(如混合光源、动态范围变化)
MIT-Adobe FiveK 等传统数据集采用人工调色生成参考图像,与真实光学成像存在差距。2022 年 CVPR 论文《Seeing in the Dark》指出,数据质量差异可使 PSNR 指标波动达 5dB 以上。
2. 数据采集方案
硬件设备选型
- 相机 :Sony A7R IV(6100 万像素)搭配三脚架,开启 RAW 格式捕获
- 光照控制 :
- 使用 Godox SL200W LED 灯模拟自然光衰减
- 配备 Sekonic L-858D 测光表量化照度(单位:lux)
- 暗箱环境基础照度控制在 0.5-5lux 区间
同步拍摄方案
- 固定相机位置后拍摄正常光图像(ISO100, 1/60s)
- 保持相同焦距,仅调整以下参数拍摄低光版本:
- ISO 提升至 1600-6400
- 快门速度降至 1 /10-1/2s
- 关闭所有辅助光源
场景设计
建议包含以下 6 类场景(各 200 组图像对):
- 室内人造光(白炽灯 /LED)
- 室外月光环境
- 混合光源(如霓虹灯 + 自然光)
- 动态物体(行人 / 车辆)
- 高反射表面(玻璃 / 金属)
- 极低光(<1lux)
3. 数据处理流程
图像对齐
使用 SIFT 特征匹配实现亚像素级对齐(Python 示例):
import cv2
import numpy as np
def align_images(low_light, normal):
# 初始化 SIFT 检测器
sift = cv2.SIFT_create()
# 检测关键点和描述符
kp1, des1 = sift.detectAndCompute(low_light, None)
kp2, des2 = sift.detectAndCompute(normal, None)
# FLANN 匹配器
FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)
flann = cv2.FlannBasedMatcher(index_params, search_params)
matches = flann.knnMatch(des1, des2, k=2)
# Lowe's 比率测试
good = []
for m,n in matches:
if m.distance < 0.7*n.distance:
good.append(m)
# 单应性变换
if len(good) > 10:
src_pts = np.float32([kp1[m.queryIdx].pt for m in good]).reshape(-1,1,2)
dst_pts = np.float32([kp2[m.trainIdx].pt for m in good]).reshape(-1,1,2)
M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
aligned = cv2.warpPerspective(low_light, M, (normal.shape[1], normal.shape[0]))
return aligned
else:
raise ValueError("Insufficient matching points")
噪声处理
基于 2021 年 TIP 论文《Noise Flow》的方法:
- 使用噪声模型:$\sigma = \sqrt{\alpha \cdot I + \beta}$
- 在 HSV 空间分别处理亮度 / 色度噪声
- 采用 BM3D 算法进行非局部去噪
数据增强
- 物理模拟增强 :
- 模拟镜头炫光(使用 OpenCV 的 addWeighted)
- 添加大气散射效果(基于深度图)
- 数字增强 :
- 随机 Gamma 校正(0.5-2.0 范围)
- 泊松噪声注入
4. 标注规范
定义三级质量标准:
| 等级 | 要求 | 示例指标 |
|---|---|---|
| A | 完美对齐 | SSIM>0.95 |
| B | 轻微偏移 | 0.85<SSIM≤0.95 |
| C | 存在运动模糊 | SSIM≤0.85 |
同时标注以下元数据(JSON 格式):
{
"exif": {
"ISO": 6400,
"shutter_speed": "1/4s",
"aperture": "f/2.8"
},
"lighting": {
"type": "mixed",
"lux": 2.3
}
}
5. 模型训练验证
以 Zero-DCE 为例的对比实验:
| 数据集 | PSNR↑ | SSIM↑ | NIQE↓ |
|---|---|---|---|
| LOL | 18.76 | 0.712 | 5.32 |
| 本数据集 | 21.43 | 0.831 | 3.87 |
训练关键参数:
loss:
- spatial_consistency: weight=0.5
- exposure_control: weight=1.2
- color_constancy: weight=0.8
optimizer: AdamW(lr=3e-4)
batch_size: 8 (4K 裁剪为 512x512)
6. 避坑指南
常见问题解决方案
- 运动模糊 :
- 使用高速同步闪光灯(1/8000s 以上)
-
采用 Burst 模式连拍后选择最清晰帧
-
色彩偏移 :
- 拍摄前用 X -Rite ColorChecker 校准
-
在 RAW 处理阶段锁定白平衡
-
对齐失败 :
- 增加 SIFT 特征点检测阈值
-
改用 SuperPoint+SuperGlue 组合
-
存储问题 :
- 推荐 ProGrade Digital 650GB CFexpress 卡
- 实时备份到 NAS(RAID5 配置)
结语
构建高质量的 4K 低光数据集需要严谨的硬件配置和细致的流程控制。通过本文介绍的方法,我们成功构建了包含 10,000 组图像对的基准数据集,在多个 SOTA 模型上验证了其有效性。未来计划扩展至 HDR 和事件相机数据采集,进一步提升动态范围表现。
正文完
发表至: 未分类
近三天内
