一、MD(移动侦测):
移动侦测是检测正在视频编码的图像是否发生亮度变化以及相应的运动向量。移动侦测通道就是视频编码通道,最大支持运动侦测路数与编码路数相同。
Hi3520/Hi3515 提供的移动侦测功能以宏块为最小单位,计算指定图像的宏块在指定图像间隔内的亮度变化和运动向量。如需要获取移动侦测的结果,则启用某一视频编码通道的移动侦测功能。移动侦测的结果包括宏块SAD、宏块运动向量 MV、宏块报警信息、宏块报警像素的个数。
MD(MoveDetect)模块支持 H.264编码和 MJPEG编码时进行移动侦测,针对同一 VI通道的主次码流,二者只能有一个作 MD。
实际工作中,主要获取宏块报警信息,宏块报警信息为侦测某个宏块(16*16以像素为单位)的结果:要么1,要么0,如果1的累加值超过阈值,就报警,当然这是相对简单的,如果想复杂点,比如同时可以通过相对静像的测试,判断出距离内报警信息等,是需要相对比较复杂的算法的,待续……
另一种方式:使用视频芯片CX25828实现移动侦测:http://blog.csdn.net/huangminqiang201209/article/details/8292060
二、侦测方法:
时间差分(又称相邻帧差)方法(Temporal Difference )是在连续的图像序列中两个或三个相邻帧间采用基于像素的时间差分并且阈值化来提取出图像中的运动区域。时间差分运动检测方法对于动态环境具有较强的自适应性,但一般不能完全提取出所有相关的特征。
同时也还有背景减除法,即以一张图像为参考,是属于静态的,如果与参考不同,并符合报警阈值,则报警。还有光流法等
三、侦测的实现:
1.信号输入处理模块:标准模拟视频信号(CVBS彩色或黑白)是亮度信号和色度信号通过频普间置叠加在一起,需经过A/D芯片(如科胜讯CX25828)的解码,将模拟信号转成数字信号,产生标准的ITU 656YUV格式的数字信号以帧为单位送到编码卡上的DSP和内存中。
2.CP(Image Coprocessor图象协处理器)处理模块:YUV数据在DSP中加上OSD(字符时间叠加)和LOGO(位图)等,复合后通过PCI总线送到显存中,供视频实时预览用,还将复合后的数据送到编码卡的内存中,供编码使用。
3.ENCODER(编码)模块:将编码卡内存中的YUV数据送到MPEG4/H264编码器中,产生压缩好的码流,送到主机内存中,供录像或网络传输使用。
4.MOTIONDETECT处理模块:对编码卡内存中的以帧为单位YUV数据进行处理。(移动侦测)。
三、重要概念
MD图像与MD参考图像
比较 MD图像与MD参考图像,来进行移动侦测。两者均可以随时间而不断更新。
MD间隔
MD图像与MD参考图像之间的间隔,单位为帧。通俗地讲,就是几帧做一次MD。
MD数据
也称 MD结果。
Hi3520/Hi3515 可以输出四种 MD数据:宏块 SAD,宏块MV,宏块报警信息,宏块报警像素个数。
每一种MD数据是否输出,均可以通过开关进行控制。
SDK仅提供 MD数据,而不进行 MD判决。客户可根据不同的应用选择合适的MD数据进行MD判决,推荐使用宏块SAD作为 MD判决依据。
宏块
将图像划分为16*16(以像素为单位)大小的块,每一块称为一个宏块。
宏块SAD
当前帧与参考帧相应宏块之间的亮度绝对差之和。
SAD(Sum ofAbsolute Difference):绝对差之和。
宏块SAD越大,说明两帧对应宏块间的差别越大。
宏块MV
参考帧至当前帧的各帧中相应宏块的运动向量的累加值,表示该宏块运动的方向。不推荐MV作为移动侦测的判断依据。
MV(MotionVector)运动向量。
宏块报警信息
宏块是否报警。
在去光照效应不打开的情况下,MD模块通过比较宏块 SAD与用户设置的 SAD报警阈值决定是否报警。
在去光照效应打开的情况下,MD模块通过宏块 SAD,用户设置的SAD报警阈值,结合用户设置的像素报警阈值、像素报警个数阈值,通过一定去光照效应运算后得到的结果。
Hi3520/Hi3515 芯片暂不支持去光照效应。
只有设定宏块报警 SAD阈值且启用宏块报警信息输出时,才会输出该信息。//故与stMdAttr.u16MBALSADTh= 1000;//宏块SAD的阈值为1000相关
宏块报警像素个数
宏块中报警的像素总数。
MD模块通过比较像素亮度差(当前帧和参考帧之间)与用户设置的像素报警阈值决定像素是否报警。
只有设定宏块报警像素阈值且启用宏块报警像素个数输出时,才会输出该数据。//故与stMdAttr.u8MBPelALTh= 20;//像素报警阈值为20相关
四、相关结构
1.定义运动侦测属性结构体:
typedef structhiMD_CHN_ATTR_S
{
MD_MB_MODE_SstMBMode; //宏块模式
MD_SADBITS_EenSADBits; //SAD输出精度
MD_DLIGHT_S stDlight; //去光照效应属性
HI_U8 u8MBPelALTh;