我正在使用 MATLAB 在视频中执行特征检测。视频不同部分的光照条件不同,导致在将 RGB 图像转换为二进制图像时,某些部分会被忽略。
视频特定部分的照明条件也会随着视频的播放而变化。
您能否建议在 MATLAB 中平衡帧和视频的照明的最佳方法?
我正在使用 MATLAB 在视频中执行特征检测。视频不同部分的光照条件不同,导致在将 RGB 图像转换为二进制图像时,某些部分会被忽略。
视频特定部分的照明条件也会随着视频的播放而变化。
您能否建议在 MATLAB 中平衡帧和视频的照明的最佳方法?
您有两种选择,具体取决于您想要检测的功能以及您想要对视频执行的操作。
1) 很容易做到:将图像转换为在单独通道中分离照明的色彩空间,例如:HSV(忽略 V 通道)Lab(忽略 L)YUV(忽略 Y)并在两者上执行特征检测剩余频道。在这些 HSV 中是最好的(正如 Yves Daoust 在评论中指出的那样)YUV 和 Lab 在 UV / ab 通道中留下了一些照明信息。根据我的经验,最后两个也取决于您的情况,但 HSV 是最好的。
2)更难。我首先将图像转换为 HSV。然后你只对 V 通道进行修复:
无论您选择哪种方法,我都建议您专注于您想要做的事情(即检测特征)并选择中间步骤,例如足以满足您需求的步骤。这么快就尝试一下,看看这对你的特征检测有什么帮助,
除了通过 Retinex 或高通滤波解决的单个图像的照明不均匀性之外,您还可以考虑视频中的自动增益校正。
这个想法是通过对颜色分量应用线性变换来归一化图像强度,这样所有三个通道的平均值和标准偏差组合成为预定义值(平均值 -> 128,标准偏差 -> 64)。
直方图均衡将具有“标准化”强度级别的类似效果。
不幸的是,大的场景变化会影响这个过程,以至于背景的强度不会像你期望的那样保持不变。