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