数字电视图像层静帧和黑场报警的判断算法
2014-07-02李瑞民
李瑞民,董 亮
(1.上海风格信息技术股份有限公司,上海201804;2.上海市文化广播影视监测中心,上海200002)
数字电视图像层静帧和黑场报警的判断算法
李瑞民1,董 亮2
(1.上海风格信息技术股份有限公司,上海201804;2.上海市文化广播影视监测中心,上海200002)
在数字电视的安全播出中,图像层的监测是关键,也是最直观的一步,所以图像层监控算法就显得尤为重要。针对这一问题,从当前数字电视中的黑场、静帧这两个最常见报警方式入手,通过对当前主流算法及这两种报警本身的特点进行分析,找出一组高效可行的算法,并通过程序进行验证。
图像层;黑场;静帧;无声;码流;报警
1 图像层静帧和黑场报警
当前的数字电视中,对节目信号的监控是整个播出链路中最重要的一个环节。如果仅从概念上来看,与数字信号相关的报警可以分为物理层报警、码流层报警和图像层报警,其中的物理层报警主要是物理链路(有线网络的网线,无线网络的射频、微波)是否正常;码流层报警则是节目流是否存在无法同步、码流不能满足正常播出要求等问题;而图像层则是当前所播的图像是不是电视台计划要播放的图像内容。对前两层的故障监控都可以通过巡检制度等制度和协议分析等技术手段进行排查,而对于图像层的故障,其原因多样,有些带有明显的主观性,因而判断相对复杂,然而图像层又是与电视观众距离最近,观众有最直接切身感受,因而图像层的故障监控自然是重中之重。
首先,这里的“图像”是广义的图像,既包括有视频画面,也包括有电视伴音、字幕、台标、时钟等画面辅助内容。通常情况下,电视台对“图像层”的监控主要分为三大报警,分别是:黑场(Black Screen)、静帧(Frame Freeze)、无声(Sound Loss)。黑场就是屏幕上主要画面区域呈现黑色,这意味着信号断了;静帧,即画面静止不动,这意味着信号断了或编码器坏了;无声即声音信号没有电平值或声音低于正常收听的阈值,这意味着编码器坏了。
理想环境下的报警分析并不难。如黑场就是判断整个屏幕所有像素的RGB信息全为0;而静帧就是判断相邻两帧的同一位置像素值是否完全相等;无声就是读到的声音值为最小值。但结合数字电视现实的使用环境,不难发现这些判断并没有想象中那么简单,需要同时考虑的因素有:
1)编解码器的影响。大部分视频的压缩算法都是失真压缩算法,这会导致对于某一颜色的解码再解码,在色差或亮度上做一些小的调整。例如黑场不再是RGB上的全0,而是所有像素都非常接近于黑色;静帧也不是相邻两帧或多帧之间的完全相等,而是所有帧都近似相等。
2)正中电视节目区之外的元素的影响。如频道的台标、当前时间、当前节目名称、滚动新闻和广告提示,有时节目黑场了,但这些周边元素仍然存在。
3)节目场景的影响。如电视节目在在播出“通知”的时候,整个屏幕内容会暂停几秒不做任何改变。人们的说话本身就有停顿,有时会导致数秒的无声效果。
2 算法设计
分析“黑场、静帧、无声”这三个报警,无声的判断相对简单,只需要判断声音电平值小于某个阈值即可,所以无声的判断不再详述,下面着重介绍对黑场、静帧的算法判断。
目前,对于数字电视中图像层报警的分析还不多,所以还没有成熟的、公认的算法,对一些已具备该功能的设备来说,其算法也尚属未公开阶段。所以对算法的分析以及算法间的对比,主要还是集中在与模式识别算法的对比上。
2.1 常规算法的不足
模式识别本身的研究已有很多,但分析这些通用算法也能发现其中的一些不足,这些不足不一定是算法本身的问题,更多的是这些算法没有考虑数字电影、数字电视图像本身的特殊性。而这些正是本报警算法的关键,所以值得详细讨论。
要保证数字电视节目的流畅播放,1 s要播放25 f画面,这意味着每一帧画面数据的接收、解码、播放、报警判断的总时间必须在40 ms以内完成。其中的接收、解码、播放时间相对固定,因而报警算法的效率尤为重要。体现在算法上,很多模式识别算法需要对全屏所有数据进行分析后才能得出结论。如果能在算法处理中,只对部分数据进行分析就能判断出结果,无疑会提高效率,增加时效性。
从时间上进行分析,在广电行业的节目播出中,节目异常通常是较小概率事件,更多的状况是节目播出正常。根据哈夫曼(David Huffman)编码的理论,如果算法能快速地识别出当前节目是正常播出,则可以迅速退出报警判断,并给出正确的结论,从而提高整体效率。很多模式识别算法,为了考虑图像的通用性,容易把一个图像各像素视作等概率随机分布,因而大多是按行优先或按列优先,图像从左上角坐标向右下角坐标依次线性处理。然而视频节目本身,除非导演的特殊需要,否则常常会把最想展示,最需要引起观众注意的细节放在屏幕的正中间或四周。比如新闻播报类的节目,有时除了播音员的嘴部在动,其余位置都没有动,而这时播音员的嘴部又处于屏幕正中间,因此如果每次算法都从左上角向右下角依次扫描,则每帧画面需要查找全屏的一半,才发现屏幕变化的位置。如果能结合节目特点,无疑也能提高算法效率。
从技术上进行分析,当前数字电视码流中,最常用的是MPEG-2格式[1],该格式对图像处理的算法是DCT算法(Discrete Cosine Transform)[2],该算法结合图像的相关性而把图像分成若干矩形块,并对每一块进行统一分析以进一步提高图像的相关性。而在图像监控中,图像层报警算法所要查找的正是图像中的“不相关性”,所以这种分块算法反而会降低识别效果,因此良好的报警查找算法应避免使用DCT算法中既定的分块结果,而是尽量寻找相关性越弱的块,这样算法就越能尽快判断出结果。
2.2 算法设计
综合以上各点,需要按如下原则进行算法设计。
首先,由用户定制一个黑场和静帧的判断区域,这样可以避开台标、时钟等元素。该区域的设定,一种办法是采用掩码矩阵算法,即事先制作一个与当前分辨率一样的矩阵,矩阵中每个变量的值都是布尔型(BOOL),在实施判断的时候,如果该值为TRUE,则参与判断,否则不参与判断。另一种办法是整个屏幕的范围内,定制多个互不重叠的矩阵区域,所有判断则都在这些矩阵中间。当然,最简单、最实用的办法是只在屏幕中心区域向四周扩展,最终定制一个尽可能大的一个区域。
其次,为了使算法简单,可以将所选的判断区域再等分成若干小的区域块,将每个区域块看作为一个大的“像素”进行整体判断。根据图像中两个像素离得越近,则两个像素相似的概率越大的图像像素相关性原理分析,DCT算法中的每个区域块像素分辨率为16×16[3],而报警的判断正是要打破这种相关性,因而可以有意避开该划分方式,改为其他的方式,如24×24。
第三,在各判断算法中,都由判断区域的中心,分别向上、下、左、右4个方向扩展开的顺序进行判断,而不是由左上角,向右下角的顺序进行判断。如前所述,这是基于电视节目中最关键的节目内容通常在屏幕正中心,这也正是减少整体判断时间的关键。
第四,增加特定区域的优先判断。即使上述算法已由中心区域向四周进行扩展,仍然是连续进行判断的。同样,根据上述图像像素相关性原理,如果能大跨度地跳跃像素间的距离,则可以更大程度上避免图像像素的相关性。因此,一个可行的办法是在进行上述算法之前,可以先在判断区域的4个角和正中心区域先采集若干个区域块,首先进行判断。如果区域块中数据不是黑场或静帧,则整屏也不是黑场或静帧。
根据以上各点,本文算法流程图如图1所示。
图1 算法流程图
3 算法测试和验证
为了验证上面算法的可行性和效率,通过Microsoft Visual C++2005 SP2编写一个监测算法,该算法使用FFmpeg做基本流的解码工作,然后在每一帧中分别做3种报警的监测。
FFmpeg是一组跨平台的视频和音频流SDK,提供了录制、转换以及流化音视频的完整解决方案,该SDK开源免费的,但使用其源代码的人或组织必须将使用该SDK的系统同样开源和免费。利用这套SDK可以接通过网络传来的TS(Transport Stream)流,并通过合适的解码器进行解码,并生成屏幕像素数据矩阵,利用数据矩阵就可以对屏幕数据进行算法分析。
3.1 理论分析
假设当前的电视节目是一个分辨率为800×592的标清节目[4],为了说明方便,将其转换为16×16区域块组成,则“分辨率”变成了50×37。在模式识别的方式下,由于要判断所有的数据块,所以每帧要判断50×37=1 850个数据块。而在上述算法的情况下,如果当前没有黑场、静帧报警,假设80%的画面变化区域在屏幕正中心和4个角的区域(共5个块),20%的画面位于其余区域,则每帧要判断0.8×5+0.2×(5+50×37)=375个数据块。在区域块比较的数量上,其效率提高了(1 850-375)/375≈393%。
假设当前的电视节目是一个分辨率为1 920×1 072的高清节目,利用同样的方式可以将整个图像区域分为120×67的区域块矩阵,则每帧要判断120×67=8 040个数据块。同样假设,则该算法要比较的区域块数为1 613个数据块,最终区域块比较的效率提高为398%。
3.2 测试效果
根据上述算法使用FFmpeg读取TS流,通过avcodec_open函数打开解码器,并进行解码。之后每调用一次av_read_frame函数,都可以收到一个完整的音频帧或视频帧像素矩阵,设定屏幕正中4/5的区域为报警判断区域。无论是黑场,还是静帧,像素的偏差为5%以内的视为“近似相等”。全屏所有区域块的数据必须全部“近似相等”,并持续500 ms,才认为报警的发生。所不同的是黑场的比较值是0,而静帧的比较是相邻的两帧图像。
值得一提的是,在图1所示的流程图中,结合上文分析,算法采用了5个特定区域优先比的机制,电视节目大概率下都是正常的节目,而每个节目场景中,正中间及4个角的变化概率大于其他位置,所以算法可以快速地判断出正常播出时不是黑场,也不是静帧,从而大幅度减少了比较量,减少了CPU和内存资源,提高了效率。
当发生静帧时,程序判断正中间和4个角区域块是相等的,进而判断其他位置的数据块也是相等的,并且这种状态持续了半秒钟以上,所以发出静帧报警,并且随着报警时间的增长,静帧时长也在累计。图2是当静帧报警累计到3分38秒时的故障实例图。
图2 软件实测实例图(截图)
4 小结
通过对电视台信号监控中的5大类主要报警的介绍,在分析了各类报警的特征及应用限制之后,结合现有各算法中的一些不足,针对各个报警的各种具体应用,用,制作了针对性很强的算法,并通过程序验证了该算法的正确性和可靠性。通过测试证明,算法是可行的,效率可以满足正常播出中监控系统的需要。相信通过对算法的研究,为电视信号监控“消灭漏报,减少误报”做出贡献。
[1]王子微,杨盈昀.浅析超高清数字电视视频压缩编码技术[J].电视技术,2013,37(13):1-3.
[2]惠新标,郑志航.数字电视技术基础[M].北京:电子工业出版社,2009.
[3]侯宏花.数字图像处理与分析[M].北京:北京理工大学出版社,2011.
[4]蔡晓霞,崔岩松,邓中亮,等.下一代视频编码标准关键技术[J].电视技术,2012,36(2):80-84.
Black Screen and Freeze Alarm Algorithm in Digital Television Image-layer
LIRuimin1,DONG Liang2
(1.Shanghai Figure Information Technology Co.Ltd.,Shanghai201804,China; 2.Shanghai Culture Broadcasting Inspection Center,Shanghai200002,China)
In secure broadcasting digital TV,monitor of image-layer is the key,and it is also themost intuitive one step,so the image layermonitoring algorithm is particularly important.From the current common black screen,freeze frame of these two kinds of common alarm method,his paper,based on the currentmainstream algorithm and the two alarm the characteristics of analysis,so as to find out a set of feasible and efficient algorithm,and was verified by program.
image-layer;black screen;freeze;sound lose;code stream;alarm.
TN919.83
A
�� 雯
2013-05-02
【本文献信息】李瑞民,董亮.数字电视图像层静帧和黑场报警的判断算法[J].电视技术,2014,38(23).
上海市广播电视技术监测中心项目
李瑞民(1973— ),博士,高级工程师,主要从事广电领域内的计算机安全技术、网络设备与信号监控等领域的研究与应用;
董 亮(1980— ),本科,工程师,主要从事广播电视、网络视听、网络文化等领域的监测研究与应用。