您的位置:首页 > 其它

将用于视频运动检测的单高斯背景建模算法移植于YUV颜色空间

2012-04-10 16:28 295 查看

1. 移植的原因

使用RGB颜色空间时,由于R、G、B三个通道相互独立,且3个通道具有相同的像素深度和显示分辨率,需要更多的存储空间。并且任何色彩变动都要求重新读取所有3个分量值进行计算和存储,使得在嵌入式开发平台上使用高斯算法对背景建模并且检测前景显得有些力不从心。而使用YUV颜色空间的好处是,由于人眼对于U、V分量的变化不是很敏感,因此可以在图像数据的存储时,使用YUV4:2:0(或者4:0:2等等)的格式,减少一定的存储数据量。这样在处理视频帧的过程中,就大大减少了读写内存所耗费的时间,算法的处理速度可以得到较大的提升。

2. 移植带来的问题

在算法移植之初,由于对于问题思考的不够深入,认为要将单高斯背景建模算法移植到YUV颜色空间中,只要将原算法中的R、G、B三个分量一一对应为Y、U、V三个分量即可。但事实证明,并不是这么简单。实验发现,当读入一定数量的背景帧,使得模型参数训练基本完成时,一旦读入一帧前景帧,大面积的像素点被判断为了前景像素(基本整幅画面),这使得算法完全丧失了前景检测的能力。对移植后的算法进行分析发现,原算法中在读入前景帧后,是对每个点的R、G、B三个通道的值分别进行判断,以R通道为例:

if( (r-mean_r)*(r-mean_r) > variance_r*thresh )
flag_r=true;
G、B通道的判断结果分别为flag_g和flag_b。

该点最终是否被判断为前景点,取决于(flag_r || flag_g || flag_b ) 的值。

而当算法移植至YUV颜色空间中时,如果简单的套用判断,则变为(flag_y || flag_u || flag_v ),此时,就会出现问题。

问题在于,Y和UV的变化对于视觉上的差异的贡献是不均等的,不像RGB颜色空间中,R、G、B三个通道值的变化对于图像外观的变化贡献度相同。通俗的说就是,如果X1和x2两个点的Y值相同,而U或V分量相差了10,但是这两个点视觉上不容易看出有什么区别;而如果x1和x2的UV值相同,Y值相差了5,那它们在显示时也许就会很明显一个亮一个暗。

说这些的目的在于说明,UV通道值的变化也许在视觉上本不应该使得该点变为前景点,但是由于判断时U、V通道对最终判断结果的影响力被错误的放大为与Y通道相同,导致该点也被判为前景点。这也就解释了为什么在读入第一帧前景帧的时候,会有很大面积的像素被误判为前景。

3. 问题的解决办法

在Google学术搜索输入“YUV 单高斯背景建模”,搜索到第一篇文献。

完整文献可以下载查看,这里仅说明最核心的部分,即在YUV颜色空间中,前景检测使用的判断规则。规则如图,

首先,对于U、V两个通道的判断:



对于Y通道的判断:



最后,将二者综合:



其中,Tuv和Ty是两个阈值,可以根据情况而定。

4. 小结

按照这种方法对YUV颜色空间的单高斯背景建模算法进行改进后,不但可以保留YUV颜色空间的优点,也使得对前景的判断更加准确,达到了一举两得的效果。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: