本发明主要涉及视频图像质量诊断领域,特别涉及一种视频图像中的条纹异常检测方法,适用于水平干扰条纹的检测。
背景技术:
随着视频监控的日益普及,视频监控中出现的异常情况也呈现井喷式增长。视频横纹干扰正是诸多异常中的一种,当视频图像存在大量横纹干扰时,会严重影响视频的使用效果。那么及时发现故障就显得尤为重要。原本靠人力去逐一查看视频是否存在异常的方式,对于少量视频尚且可行;但有大量摄像头时,显然已不能满足这种需求;并且人力的成本越来越高,不便于系统化管理。
当前采用非人工的方式针对图像条纹检测的方法有:熊培杰等在专利《图像条纹检测方法及装置》(专利号:201310247599.4)中提出的通过在接收到图像条纹检测任务时,解析图像条纹检测任务的任务消息以确定图像的检测区域;获取待检测的视频数据;循环执行“读取获取的所述视频数据中的一帧图像,检测所述一帧图像在所述检测区域中的条纹,并记录所述一帧图像对应的检测结果”,直至检测了预设帧数量的帧图像;统计分析记录的各帧图像对应的检测结果,以确定所述检测区域的图像条纹检测结果的检测方法;以及周康在专利《图像中条纹干扰的检测方法和装置》(专利号:201310432482.3)中提出的获取需要进行检测的多个连续图像中的每个像素的属性值;对于每个像素,根据多个连续图像中该像素的属性值确定该像素的变化值,其中,该像素的变化值用于表示在多个连续图像中该像素的属性变化情况;对由各个像素的变化值组成的图像进行条纹干扰检测的检测方法。
本发明提出了首先做差帧处理消除固定背景影响,并进行腐蚀去噪处理消除细小噪声影响,再通过Sobel水平算子锐化处理,最后对处理图像进行行投影并对投影数据计算方差做比得到比值,从而判断是否存在横条纹的检测方法。该方法能检测出由于条纹异常导致背景图像扭曲的图像条纹。对横条纹没有周期性要求,有较好的适应性。
技术实现要素:
本发明旨在解决监控视频中存在的水平干扰条纹的条纹检测问题。提供一种视频图像中的条纹异常检测方法。本发明根据横纹存在时,利用视频前后帧的差帧去除背景噪声,再通过腐蚀去除非条纹噪声影响并突显条纹特征;最后进行行投影并计算对比方差值,计算投影数据方差判断是否存在横纹。
本发明的技术方案步骤如下:
步骤1:获得目标视频,提取视频的图像宽与高;
步骤2:提取视频序列中的图像,并将图像的存储格式由多通道转化为单通道的灰度图像存储格式;
步骤3:将步骤2的灰度格式图像序列依次做前后帧的差帧处理,得到差值图像序列;
步骤4:将步骤3差值图像序列进行形态学中腐蚀去噪处理,以突显图像横条纹特征;
步骤5:将步骤4的去噪图像序列以及步骤3的差值图像序列进行Sobel算子锐化处理,得到处理后的两组图像序列;
步骤6:将步骤5处理的两组图像序列分别进行行投影,得到两组投影数据;
步骤7:对两组投影数据进行方差计算,通过去噪处理得到投影数据和未去噪处理得到投影数据的方差比,判断是否存在横纹;其中方差比的阈值通过统计的方法得出。
在步骤4中,腐蚀处理的原理如下:
腐蚀定义为:
表示B对A的腐蚀是一个用z平移的B包含在A中所有的点Z的集合;其中A、B为两个集合;结构元B采用半径为3像素、高为3像素的椭圆进行腐蚀处理。
在步骤5中,Sobel算子采用水平算子可检测横条纹、采用Sobel垂直算子可检测纵向条纹;公式分别为:
其中zi,i=1,…,9为目标点x上一行与下一行最邻近3像素点的灰度值;gx和gy表示sobel算子处理后得到x像素灰度值。
在步骤6中,投影公式为:
或
其中data(j)、data(i)分别为行、列投影对应元素值;I(i,j)为对应图像的像素灰度值。
步骤6中,方差比的计算公式为:
其中T为方差比,V1为未经过腐蚀去噪处理的投影数据的方差,V0为经过腐蚀去噪处理的投影数据方差。
步骤7采用的判别方式是方差的比值;将比值T与预先统计好得出的阈值T0比较大小;当T<T0时,则判定该帧存在横条纹,否则不存在;当存在连续几帧存在横条纹时,则判定为视频存在横纹。
本发明得到有益结果:
本发明针对监控视频横条纹异常情况问题,提出了首先通过差帧去除固定背景影响,从而达到突显横纹与局部噪声目的;并通过腐蚀处理去除局部小噪声的方式,进一步显化突出横纹特征。再次通过样本统计的方式得出横纹检测判断值。最终达到检测横纹的方法。本发明基于真实场景样本数据进行统计确定判断阈值,条纹检测更加可靠,实时性好。同时本方法也适用于竖向条纹的检测。
附图说明
图1总体实现框架流程图;
图2判断阈值统计流程图;
图3腐蚀去噪处理对比图;
图4 Sobel水平算子处理对比图;
图5行投影数据图;
图6不存在横条纹图像行投影对比图.
具体实施方式
下面结合附图对本发明的具体实施方案做进一步更详细的叙述。
对附图1做如下具体说明:
步骤1:提取检测视频或视频流的属性,判断视频是否为单通道灰度图像帧序列,若不是单通道灰度帧序列,将视频帧转化为单通道灰度图像格式,并提取视频帧的宽度与高度分别记为M、N。
步骤2:将灰度化的帧序列做前后帧做差处理,得到差帧图像记为frame_diff
步骤3:对差帧图像frame_diff进行去噪处理,以突显横条纹特征便于进一步处理。得到去噪图像记为frame_diff_erode,其中去噪采用图像形态学中的腐蚀原理。处理结果见附图3。
腐蚀原理具体如下
腐蚀定义为:
表示B对A的腐蚀是一个用z平移的B包含在A中所有的点Z的集合。其中A、B为两个集合。本案例中结构元B采用半径为3像素、高为3像素的椭圆进行腐蚀处理。
步骤4:对腐蚀去噪图像frame_diff以及frame_diff_erode进行sobel锐化处理分别得到处理后图像记为frame_diff_sobel与frame_diff_erode_sobel。处理结果见附图4。
其中sobel水平锐化处理具体原理如下:
其中zi,i=1,…,9为目标点x上一行与下一行最邻近3像素点的灰度值。gx表示sobel算子处理后得到x像素灰度值。
步骤5:对图像frame_diff_sobel与图frame_diff_erode_sobel像素灰度进行行投影,即将大小为M*N像素值矩阵的每一行累加起来得到大小为1*N数据矩阵。投影得到数据矩阵分别记为data0、data1。投影数据结果见附图5。
公式为:
其中data[j]为数据矩阵的第j个元素,I(i,j)为投影矩阵相应坐标为(i,j)的像素值
步骤6:对步骤5得出的数据矩data0与data1计算其方差,分别记为Var0、Var1。
步骤7:步骤6得出的未去噪处理的方差数据与进行去噪处理的的方差数据做比,得到比值,记为T=Var0/Var1。
步骤8:将步骤7得出的比值T与预先统计好得出的阈值T0比较大小。由于存在横条纹图像处理后的方差比会比较小,而不存在横条纹图像处理后方差比会比较大;统计发现二者处在不同的量级上,从而统计出判断阈值T0。基于这样的结论,那么当T<T0时,则判定该帧存在横条纹,否则不存在。当存在连续几帧存在横条纹时,则判定为视频存在横纹。其中不存在横纹样本进行前五步骤处理,处理结果见图6。
对附图2进行具体说明:
步骤1:将事先收集多组固定场景下存在横条纹的样本视频与不存在横条纹的视频样本用于统计计算。样本分组多次重复附图1的具体说明的前七个步骤,得出两组统计数据。一组为存在横条纹的方差比值数据组data_T0,另一组为不存在横条纹的方差比值数据组data_T1.求出两组数据的均值分别为average_T0、average_T1。在二者中间取一可靠值T0作为统计阈值,带入进行检验。