zoukankan      html  css  js  c++  java
  • 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(改进版)进行分析,使用了两次傅里叶变换(一次正一次逆),进行了一次嵌套遍历,遍历次数为:50*10=500次,时间为:  ms

     

    针对pepoplefft.py进行优化调参:

    搜寻噪点:

    要找到噪点,就要知道经傅里叶高通滤波变换后,剩余的边缘部分在数组中的表现规律,采用numpy绘图表示出来:

     

    经过阈值去噪后,效果如图:

     

    在随后的视频测试中发现其面对复杂环境表现仍不理想,此时考虑选择绘制多个矩形来框选标记多个候选目标,暂时不考虑使用其他的滤波进行去噪,原因为1、会占用原本就不多的处理时间,2、不认为在经过高通滤波后还未被滤掉的噪点会被其他滤波函数滤掉,目标被滤掉的可能性反而更大。

  • 相关阅读:
    传入采购订单项目建交货单
    20190615 NACE关于采购订单的输出类型
    参照UB单创建DN并过账
    【S/4系列专栏】关于S/4你想知道的问题与答案
    数据结构(1)栈的自定义实现
    iOS开发之Todo List for Swift项目
    算法手记(2)Dijkstra双栈算术表达式求值算法
    HttpWebRequst中https的验证处理问题
    温故知新系列
    windows phone开发-windows azure mobile service使用入门
  • 原文地址:https://www.cnblogs.com/lvfengkun/p/11901359.html
Copyright © 2011-2022 走看看