2019年11月20日开发手记
两种运动检测算法的介绍: 帧差法: 帧差法是目前运动目标检测中最常用的算法。帧差法依据的原则是:当视频中存在移动物体的时候,相邻帧(或相邻三帧)之间在灰度上会有差别,求取两帧图像灰度差的绝对值,则静止的物体在差值图像上表现出来全是0,而移动物体特别是移动物体的轮廓处由于存在灰度变化为非0,当绝对值超过一定阈值时,即可判断为运动目标,从而实现目标的检测功能。 二维频域运动目标检测: 通过对动态图像的行列分解, 将三维频域内的运动检测问题转化到两组二维频域内进行, 从而降低了滤波器设计的难度。给出了一种提取主运动能量的自适应滤波算法, 通过剔除背景和噪声的频率成分, 有效地检测出运动目标。 复杂度分析: 针对帧差法进行分析,代码复杂度主要集中在absdiff与findContours部分,其中absdiff的迭代次数为2*500*500=50000次,时间为88.46ms(取两百帧计算平均的时间) 针对二维频域运动目标检测算法,这里有两个代码版本: 针对py-new-fuliye.py,代码的复杂度主要集中在两个部分:傅里叶变换以及遍历,在py-new-fuliye.py中,共使用了两次傅里叶变换与两次遍历,遍历的迭代次数次数为2*50*30=300次,时间为:54.175ms 针对pepoplefft.py(改进版)进行分析,使用了两次傅里叶变换(一次正一次逆),进行了一次嵌套遍历