我正在使用MATLAB在视频中执行特征检测。视频的不同部分的光照条件会有所不同,导致某些部分在将RGB图像转换为二进制图像时被忽略。
视频特定部分的光照条件也会随着视频的变化而变化。
您能否在MATLAB中建议最佳方法来平衡帧和视频的光照?
答案 0 :(得分:7)
您有两种选择,具体取决于您要检测的功能以及您要对视频执行的操作。
1)很容易做到:将图像转换为colourspace,在单独的通道中分隔出照明,例如:HSV(忽略V通道)Lab(忽略L)YUV(忽略Y)并在剩余的两个通道上执行特征检测。其中HSV是最好的(如评论中Yves Daoust所述)YUV和Lab在UV / ab通道中留下一些照明信息。根据我的经验,最后两个也取决于你的情况,但HSV是最好的。
2)更难。我首先将图像转换为HSV。然后你只对V通道进行修复:
无论您选择哪种方法,我都建议您专注于您想要做的事情(即检测功能),并选择满足您需求的中间步骤。快速尝试一下,看看这有助于您的功能检测,
答案 1 :(得分:5)
这不是一个微不足道的task,但有许多方法可以尝试克服它。我建议您先从实施retinex算法开始,或使用其他人的实现:http://www.cs.sfu.ca/~colour/publications/IST-2000/。
基本思想是亮度(观察图像强度)=照明(入射光)x反射率(反射百分比):
L(x,y) = I(x,y) x R(x,y)
你对R部分感兴趣。
要处理每帧的彩色图像,请先移至hsv色彩空间,然后在v(值)部分操作retinex。
希望这是有道理的。
答案 2 :(得分:5)
除了通过Retinex或高通滤波处理的各个图像的照明不均匀性外,您还可以考虑视频中的自动增益校正。
想法是通过对颜色分量应用线性变换来标准化图像强度,使得所有三个通道组合的平均和标准偏差变为预定值(平均值 - > 128,标准偏差 - > ; 64)。
直方图均衡将具有类似的“标准化”强度水平的效果。
不幸的是,大的场景变化会影响这个过程,使得背景的强度不会像你期望的那样保持不变。