一种基于YUV颜色空间自适应阴影消除算法
moboyou 2025-05-08 13:28 22 浏览
王珦磊1,唐加山2
(1. 南京邮电大学 通信与信息工程学院,江苏 南京 210003;2. 南京邮电大学 理学院,江苏 南京 210003)
摘要:针对视频内容分析中的物体检测问题,提出一种新的基于YUV颜色空间的阴影消除方法,相比其他基于YUV颜色空间阴影检测方法,该方法为提高检测精度,使用自适应的动态门限。首先,在RGB颜色空间中使用背景差,得到仅包含目标物体及其阴影的图像。然后在YUV颜色空间中对此图像的色度进行统计分析,搜索出色度变化缓慢的区间,再针对每个色度区间确定对应的亮度区间,获得估计门限。最后,利用以上门限检测并消除阴影。实验结果表明,该方法对不同光照情况下的物体阴影都有很好的消除效果。
0引言
在计算机视觉中,检测运动物体是非常重要的一个部分。运动物体的检测一般步骤如下:先从视频帧中鉴定出前景像素,再由前景像素提取出运动物体[1]。然而,运动物体的投影会使检测算法难以实现,导致前景物体形状和颜色的失真,对运动物体的提取造成干扰。因此,动态物体检测中很重要的一个环节是阴影消除。
阴影检测算法一直被广泛研究,如:基于纹理分析的检测方法[23],使用亮度来判断可能的阴影区域,再结合纹理特征将阴影分割出来;基于物理特征的检测方法[4],先对阴影像素进行建模,再用这个模型从预选区域中检测阴影;基于几何的检测方法[5],根据光源、物体形状、地面来预测阴影的大小、形状和方向;基于色彩空间的检测方法[6],选取一个新的色彩空间,与RGB色彩空间相比,它的亮度和色度间区别更明显。
本文使用基于YUV色彩空间的阴影检测方法,同时阴影检测门限的阈值是根据前景像素的统计结果估计的,因此算法对不同光照情况下的物体阴影检测都有很好的鲁棒性。
1候选区域
候选区域是指图像中包含目标物体及其阴影的部分,一般通过背景差分来获得。步骤如下:先将前景图像和背景图像的RGB分量进行差分,再将差分后的彩色图像转换成灰度图像,针对此灰度图像,设置平均灰度值为阈值,按照该阈值进行划分,大于该阈值的为候选区域,小于阈值的视为背景。再多次进行膨胀、腐蚀操作,消除候选区域中的干扰噪点,具体操作详见文献[7]。
2基于YUV色彩空间的阴影模型
YUV色彩空间和RGB色彩空间关系如下[8]:
在YUV色彩空间中,像素点的亮度分量y和色度分量u、v相互独立。投射阴影区域在YUV色彩空间有如下特征[9]:
(1)投射阴影区域中像素的亮度低于背景像素和物体区域像素的亮度。
(2)投射阴影区域中像素的色度与背景像素色度相比几乎相等。
根据以上结论,确定阴影像素的算法如下:
针对每个候选区域的像素,将符合如下式(1)条件的像素点判断为阴影像素点,其中yF和yB分别指前景和背景的y分量,vF和vB分别指前景和背景的v分量,yMin、yMax、vMin、vMax分别指对应的上下限门限值。
下文将对阈值估计给出详细步骤。
3阈值分析
3.1阴影区域特征分析
为研究阈值与候选区域的统计关系,选取如图1所示
图1输入图像及其预处理的前景图像图1(a)和背景图像图1(b)。先进行背景差分,获得候选区域的前景图像图1(c)和背景图像图1(d),对阴影进行手动划分得到阴影区域的前景图像图1(e)和背景图像图1(f)。
将前景图像(e)中每个像素点的亮度yF和色度vF,与背景图像(f)中的亮度yB和色度vB进行差分,得到差值Δy、Δv。亮度差和色度差分布如图2(a),其中横轴是Δy,纵轴是Δv。忽略干扰噪点,对密集区域进行分析,密集区域图2(b)显示像素点的亮度差Δv分布不均匀,集中在若干个中值上,并且不同的中值对应色度差Δy分布范围也不相同。因此可以将阴影区域的Δy-Δv分布看作是若干个分布块的集合,如图2(c)。
3.2根据候选区域确定阈值
本节将通过候选区域的统计特性估计出上文中每个分布块的阈值。
3.2.1确定色度差Δv的阈值
将候选区域前景图像图1(c)和背景图像图1(d)的色度分量v相差,差值Δv进行排序,得到图3(a),图3(b)标出了其中的平缓部分。对比阴影区域分布图2(c)和图3(b),被标注的区域在纵轴上的范围近似一致,图3(b)上的平缓部分表明在该范围上有大量像素点Δv分布趋于一致,符合阴影区域的特征。
3.2.2确定亮度差Δy的阈值
针对图3(b)中每个平缓区域,从候选区域中搜索对应像素点,获取每个像素点亮度差Δy,再进行排序,图4(a)是候选区域中符合条件Δv∈[4.731 7, 5.288 6]的像素点的Δy排序后的分布图,标出平缓区域如图4(b),对比阴影区域分布图2(c),平缓区域的Δy区间与阴影像素图4候选区域亮度差分布的区间相吻合。
3.3验证特征普遍性
为验证以上特征的普遍性,使用另一组实验图像进行图6自适应阴影消除算法流程图阈值分析,输入图像如图5,图5(a)是前景图像,图5(b)是背景图像,图5(c)表示候选区域,图5(d)是阴影区域的Δy-Δv分布图。分析候选区域,结果如下:图5(e)是候选区域Δv排序后的分布图,该分布图平缓区域与图5(d)中的密集区域非常吻合。将候选区域中符合条件Δv∈[-0.325,0.430]的像素点的Δy值进行排序,得到图5(f),图5(f)平缓区域的Δy范围是[0,30.82],也与阴影分布图5(d)相吻合。
4自适应阴影消除算法
根据上节的分析结果,设计算法如下:先获得候选区域,算法步骤见第1节,然后将候选区域的前景图像和背景图像从RGB色彩空间转换到YUV色彩空间,再做背景差,获得亮度差矩阵ΔY和色度差矩阵ΔV。
阴影区域的色度差Δv一般在[0,10]范围内,取[-5,20]作为考察范围,实际试验中,超出该范围的阴影点很少,可以忽略。对候选区域内所有属于[-5,20]区间的色度差Δv排序,搜索出其中变化较小的区域,本文算法使用条件(2)进行判断,Δv(i)是排序后第i个色度差Δv,N是符合条件Δv∈[-5,20]的像素点个数,a和b是常数,通过多次取值调试后确定a=0.001,b=0.003 5。
Δv(i)-Δv(i-a×N)<b×(Δv(N)-Δv(1))(2)
针对每一个Δv区间,从候选区域中搜索出符合条件的像素点,再对这些像素点的亮度差Δy进行排序,与获取Δv区间类似,搜索出所有变化较小的区域,每个Δv区间可能会对应多个Δy区间。将所有搜索出的Δy-Δv区间作为估计门限。
依据上文得到的估计门限进行阴影检测,实现多阈值的阴影消除。图6为算法流程图。
5实验结果和分析
实验用的部分数据来自图像处理数据库,还有一部分是在实验室中拍摄得到的。算法是在微软Windows平台下,使用matlab编写的。以下图7是使用本文算法的输出结果。
6结论
本文采用一种基于YUV颜色空间的自适应阴影消除算法,该算法对阴影的门限进行动态估计。实验结果表明,该算法对不同光照情况下的图像都能有效地检测和消除阴影,具有良好的鲁棒性。
参考文献
[1] 刘国栋,范九伦.彩色视频运动目标
自适应在线聚类提取算法[J].电子技术应用,2014,40(5):132135.
[2] LEONE A, DISTANTE C. Shadow detection for moving objects based on texture analysis[J]. Pattern Recognit, 2007, 40, (4): 12221233.
[3] 朱敏琛,王伟智.融合线性特征的局部纹理运动车辆阴影检测[J].微型机与应用,2013,32(14):4446,50.
[4] NADIMI S, BHANU B. Physical models for moving shadow and object detection in video[J]. IEEE Trans. Pattern Anal. Mach. Intell, 2004, 26,(8): 10791087.
[5] ZHANG W, FANG X Z, XU Y. Detection of moving cast shadows using image orthogonal transform[C]. In Proc. IEEE Int. Conf. Pattern Recognition, 2006:626629.
[6] CHEN C T, SU C Y, KAO W C. An enhanced segmentation on visionbased shadow removal for vehicle detection[J]. Int. Conf. Green Circuits and Systems, 2010: 679682. [7] 邓亚丽,毋立芳,李云腾. 一种有效的图像阴影自动去除算法[J]. 信号处理, 2011(11): 17241728.
[8] ENNEHAR B C, BRAHIM O, HICHAN T. An appropriate color space to improve human skin detection[J]. INFOCOMP Journal of Computer Science, 2011, 10(1): 1827.
[9] FUNG G S K, YUNG N H C, PANG G K H, et al. Towards detection of moving cast shadows for visual traffic surveillance[C]. Systems, Man, and Cybernetics, 2001 IEEE International Conference, 2001:25052510.
相关推荐
- 【开源推荐】给大家推荐个基于ChatGPT的PHP开发库 openai-php-api
-
有了这个库大家就可以愉快的使用PHP对接chatGPT的官方接口了,至于对接了官方接口想要做什么就看你自己的啦环境要求PHP7.4或以上composer1.6.5以上支持框架Laravel、Sym...
- PHP使用Phar打包控制台程序
-
1.介绍1.1介绍php脚本有着非常强大的库支持,可以轻松做出特别强大的程序。php不仅仅可以搭建各种各样的网站系统、平台系统,还可以开发基于控制台运行的程序。不过使用php开发的控制台程序在使用...
- PHP实现URL编码、Base64编码、MD5编码的方法
-
1.介绍1.1介绍今天开始福哥要给大家讲解关于字符编码的知识,所谓字符编码就是将一个字符串或者是一个二进制字节数组里面的每一个字符根据一定的规则替换成一个或者多个其他字符的过程。字符编码的意义有很...
- 雷卯针对易百纳海思Hi3521D开发板防雷防静电方案
-
一、应用场景1、医疗电子2、安防监控3、数字标牌4、视频广告5、环境监测二、功能概述1CPU:ARMCortexA7双核@Max.1.3GHz2H.265/H.264&JPEG多码流编...
- 不折腾无人生-安卓盒子安装Linux系统armbian纪实
-
不折腾无人生-安卓盒子安装Linux系统armbian纪实小编的x96max+(晶晨Amlogics905x3)安卓盒子已安装二个系统,原装安卓9.0和tf卡上的CoreELEC9.2.3,可玩性...
- 全网最简单的玩客云刷casaos方法及后续使用心得
-
本内容来源于@什么值得买APP,观点仅代表作者本人|作者:不鸣de前几天在站内看见很多值友分享了玩客云刷casaos,被简洁的操作界面种草,于是我将之前刷了powersee大神网页导航版armbia...
- 最新评测:英特尔旗舰 Alder Lake 处理器击败苹果M1 Max
-
据国外媒体tomshardware报道,英特尔最新的酷睿i9-12900HK处理器刚刚赢得了移动x86与Arm的性能大战,但这是有代价的。这款移动14核AlderLake芯片在多个工作负...
- 创维酷开Max系列电视开启ADB并安装第三方应用教程
-
前言创维酷开系列智能电视采用的是相对封闭的系统,虽然设置中提供了安装未知应用的选项,但由于电视安装位置的限制,往往难以直接使用USB接口安装应用。本文将详细介绍如何通过ADB方式在创维酷开Max系列电...
- 苹果 Mac Studio,再次刷新我们对个人电脑的认知
-
由两块M1Max组成的M1Ultra,成为了M1系列的最后一块拼图,并完成了整个M1SoC宇宙。这就好像《复仇者联盟4:终局之战》对于漫威第一阶段,十几年勤恳的布局,最终达到顶峰...
- 「必买」盘点2021年男人们的败家清单,越“败”越香
-
心里总想买点啥?看看《必买》,全网最有料的场景种草指南。草原割不尽,春风吹又生。在过去的2021年,不断被各种数码产品种草,一直在买买买,剁手不停。大部分产品都经过详细的对比做足了功课,也有部分是一时...
- Opus音频编解码在arm上的移植
-
一、简介现在有个需求,在局域网内实现实时语音,传输层协议使用UDP协议,如果直接使用ALSA进行录制音频流并发送到另一端进行播放,音质会非常差,而且断断续续,原因如下:采样频率:fm=44.1K...
- N ARM MINI空气减震系统臂体安装指南及应用说明
-
距离MOVMAX移动大师NARMMINI发布已经过去一段时间了,不少收到NARMMINI的小伙伴也已经迅速将产品投入到自己的车拍工作中去了。而在实际工作过程中我们也收到了用户的部分疑问和反馈:...
- 搜索引擎中的性能怪兽,Elasticsearch挑战者之Manticore Search
-
ManticoreSearch简介ManticoreSearch是一个使用C++开发的高性能搜索引擎,创建于2017年,其前身是SphinxSearch。ManticoreSe...
- 10个运维拿来就用的 Shell 脚本,用了才知道有多爽
-
1、监控MySQL主从同步状态是否异常脚本#!/bin/bashHOST=localhostUSER=rootPASSWD=123.comIO_SQL_STATUS=$(mysql-h$...
- PHP7.0.0正式版开放下载:速度大提升
-
IT之家讯PHP发布经理AnatolBelski在GitHub发布了PHP7.0.0正式版,该版本在速度提升上面有非常大的进步,比5.6版本提速两倍,已经接近Facebook开发的PHP执行引擎...
- 一周热门
- 最近发表
- 标签列表
-
- curseforge官网网址 (16)
- 外键约束 oracle (36)
- oracle的row number (32)
- 唯一索引 oracle (34)
- oracle in 表变量 (28)
- oracle导出dmp导出 (28)
- oracle两个表 (20)
- oracle 数据库 字符集 (20)
- oracle安装补丁 (19)
- matlab化简多项式 (20)
- 多线程的创建方式 (29)
- 多线程 python (30)
- java多线程并发处理 (32)
- 宏程序代码一览表 (35)
- c++需要学多久 (25)
- c语言编程小知识大全 (17)
- css class选择器用法 (25)
- css样式引入 (30)
- html5和css3新特性 (19)
- css教程文字移动 (33)
- php简单源码 (36)
- php个人中心源码 (25)
- 网站管理平台php源码 (19)
- php小说爬取源码 (23)
- github好玩的php项目 (18)