海思Hi3516--移动侦测原理与理解

计算方法与原理:

采用四连通

一 . 运动二值图

  1. 通过帧差法或者背景法、以及设定的阈值选出一个二值图像
  2. 每个框表示一个宏块
  3. 0表示无运动
  4. 1表示有运动

二. 四连通与八连通

    1. 四连通指的是上下左右四个点,如下图中红色区域为连通区,绿色也是连通区,但是两个连通区不属于同一个。

  2. 八连通中的是上下左右,左上,左下,右上,右下八个点,图中两个红色区域为一个连通区。

计算:

  1. 剔除面积较小的块(噪点引起)
  2.  计算剩下的块面积占整帧面积的百分比,判断是否发生移动侦测
  3. 实现:

for(i = 0; i < pstCCBLOB->u8RegionNum; i++)  // i < 总的连通区域个数

for (k = 0; k < pstCur->u16Height; k += bound_value_y) // 找出连通区域所属的块

for (m = 0; m < pstCur->u16Width; m += bound_value_x)
判断两个矩形是否有重叠区域

计算重叠区域面积

每个块运动的面积per_block_area[index] += area.

g_md_args->precent[i] = (per_block_area[i]*10000) / per_block_sum_area; //每个块所占 该块面积的比例

 for (i = 0; i < strlen(g_md->cur_cfg.configStr); i++) 

  {

        if (g_md->cur_cfg.configStr[i] == '1')

        {

            precent += g_md->precent[i];

            count++;

        }

    } //根据imcs / NVR 标记的块 进行叠加 标记的块为1

 if (precent >= ((100 - g_md->cur_cfg.md_sensitivity) * 100 * DOWN_SCALE))

g_md->md_flag = MOT_HAPPEN; //有移动

 

初始化过程:

 

1. enc_sal_md_init()

  g_md_args->fps = cap->vi.fps;

  g_md_args->bind_phy_chn = cap->md.bindPhyChn;

  g_md_args->width = cap->md.width;

  g_md_args->height = cap->md.height;

  g_md_args->block_h = block_h;

  g_md_args->block_v = block_v;

 

2. md_enable_chn()

  stChnAttr.s32SrcFrameRate = g_md_args->fps;

  stChnAttr.s32DstFrameRate = (g_md_args->fps > 5) ? 5 : g_md_args->fps;

  stVpssChnMode.enChnMode     = VPSS_CHN_MODE_USER;

  stVpssChnMode.bDouble       = HI_FALSE;

  stVpssChnMode.enPixelFormat = PIXEL_FORMAT_YUV_SEMIPLANAR_420;

  stVpssChnMode.u32Width      = g_md_args->width;

  stVpssChnMode.u32Height     = g_md_args->height;

  stVpssChnMode.enCompressMode = COMPRESS_MODE_NONE;

  HI_MPI_VPSS_SetChnAttr();

3. md_alloc_mem() 

  md_create_image

  md_create_image //申请存放待处理图像缓冲区

  md_create_memInfo //申请存放处理的结果数据

4. HI_IVS_MD_Init

5. md_start

    stMdAttr.enAlgMode = MD_ALG_MODE_BG; //背景帧

    stMdAttr.enSadMode = IVE_SAD_MODE_MB_4X4;

    stMdAttr.enSadOutCtrl = IVE_SAD_OUT_CTRL_THRESH;

    stMdAttr.u16SadThr = 128; //阈值SAD

    stMdAttr.u16Width = g_md_args->width;

    stMdAttr.u16Height = g_md_args->height;

    stMdAttr.stAddCtrl.u0q16X = 32768; //加权系数

    stMdAttr.stAddCtrl.u0q16Y = 32768;

    stMdAttr.stCclCtrl.u16InitAreaThr = 4; //初始化连通区域面积fa

    stMdAttr.stCclCtrl.u16Step = 4; //步伐

    stMdAttr.stCclCtrl.enMode = IVE_CCL_MODE_8C;  //8联通

    pstMdAttr->u16SadThr  = 传参

    pstMdAttr->stCclCtrl.u16InitAreaThr = 传参

    HI_IVS_MD_CreateChn

 

6. md_proc

  HI_MPI_VPSS_GetChnFrame

  HI_MPI_VPSS_GetChnFrame //获取两帧图像信息 进行对比

  HI_MPI_IVE_DMA

  HI_IVS_MD_Process

  md_calc_block //连通区域的面积对比

  tp_md_calc() //对比所选的块,上报警告

  tp_md_check_end()//对比所选的块,上报警告

 

  • 1
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
海思hi3516dv300硬件设计用户指南是一本针对海思公司推出的hi3516dv300芯片的硬件设计的指导手册。该手册的目的是帮助用户了解hi3516dv300芯片的硬件设计要求和规范,并提供相关的设计指导和建议。 hi3516dv300芯片是一款高性能、低功耗的视频处理芯片,主要应用于视频监控、智能交通和安防等领域。硬件设计是确保芯片正常工作和发挥最佳性能的基础,因此对于使用hi3516dv300芯片的设计人员来说,掌握硬件设计指南是非常重要的。 在这本指南中,首先介绍了hi3516dv300芯片的主要特性和功能,包括处理能力、视频编解码、音频处理等。然后详细讲解了芯片的外部接口和引脚分配,包括视频输入、输出接口、音频接口、以太网接口等。同时,还对时钟、电源、存储器和外设等方面的设计进行了说明和建议。 此外,指南中还提供了关于PCB设计的一些建议,包括地域分布、信号电源分离、阻抗匹配、电磁兼容性等方面,帮助设计人员提高设计质量和可靠性。 总之,海思hi3516dv300硬件设计用户指南是一本重要的参考资料,它提供了关于hi3516dv300芯片硬件设计方面的详尽说明和建议,对于希望使用该芯片进行设计的用户来说是不可或缺的。通过认真阅读和遵循指南中的规范和要求,设计人员可以更好地实现hi3516dv300芯片的应用,提高产品的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值