下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI、VDEC、VPSS、VGS、VO、NNIE,其中涉及的内容,大家可以参考之前我写的博客:

Hi3559AV100的VI细节处理说明:

https://www.cnblogs.com/iFrank/p/14374658.html

基于Hi3559AV100的视频采集(VDEC-VPSS-VO)整体框图设计

https://www.cnblogs.com/iFrank/p/14370575.html

基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍:

https://www.cnblogs.com/iFrank/p/14465306.html

基于Hi3559AV100的SVP(NNIE)开发整体流程 :

https://www.cnblogs.com/iFrank/p/14377668.html

  首先给出整体的RFCN流程图解,整个RFCN分为3个step,具体如下所示:

  在分析RFCN数据流之前,首先了解一下基于Hi3559AV100的NNIE模型,在搭建好SDK等环境后,配置好对应的硬件,在HiLinux上进行测试,具体如下:

 1 ~ # ./sample_nnie_main
2 Usage : ./sample_nnie_main <index>
3 index:
4 0) RFCN(VI->VPSS->NNIE->VGS->VO).
5 1) Segnet(Read File).
6 2) FasterRcnnAlexnet(Read File).
7 3) FasterRcnnDoubleRoiPooling(Read File).
8 4) Cnn(Read File).
9 5) SSD(Read File).
10 6) Yolov1(Read File).
11 7) Yolov2(Read File).
12 8) Yolov3(Read File)
13 9) LSTM(Read File)
14 a) Pvanet(Read File).\n")

  从中看可以看到RFCN的整个过程VI->VPSS->NNIE->VGS->VO,VI模块绑定了VPSS模块,VI从摄像头输入一路视频,经VPSS分解为两路,(具体见SAMPLE_SVP_NNIE_Rfcn中step 3-线程创建函数SAMPLE_SVP_NNIE_Rfcn_ViToVo),通过如下函数:

 1   HI_MPI_VPSS_GetChnFrame(  //用户从通道获取一帧处理完成的图像。
2
3           s32VpssGrp,
4
5           as32VpssChn[1],
6
7           &stExtFrmInfo,
8
9           s32MilliSec);
10   HI_MPI_VPSS_GetChnFrame( //用户从通道获取一帧处理完成的图像。
11
12           s32VpssGrp,
13
14           as32VpssChn[0],
15
16           &stBaseFrmInfo,
17
18           s32MilliSec);

(设置两路VPSS通道如帧图片大小等等参数见SAMPLE_COMM_IVE_StartVpss函数)

  一路stBaseFrmInfo保持原来的1080P分辨率(这个需要看MIPI接口的相机型号来,如:见SAMPLE_COMM_IVE_StartViVpssVencVo函数:

case SONY_IMX277_SLVS_2M_240FPS_12BIT:

*penSize = PIC_1080P;

);

  一路stExtFrmInfo转为PIC_CIF(352x288)分辨率(追溯到最初的赋值语句:在SAMPLE_SVP_NNIE_Rfcn函数中:PIC_SIZE_E enSize = PIC_CIF;

经过如下得到VPSS通道对应的图片大小:

 1 SAMPLE_COMM_IVE_StartViVpssVencVo
2
3 aenSize[1] = *penExtPicSize;
4
5 SAMPLE_COMM_IVE_VbInit(aenSize,astSize,VPSS_CHN_NUM);
6
7 SAMPLE_COMM_SYS_GetPicSize(paenSize[i], &pastSize[i])
8
9 SAMPLE_COMM_SYS_GetPicSize
10
11 {
12
13 switch (enPicSize)
14
15 {
16
17 case PIC_CIF: /* 352 * 288 */
18 pstSize->u32Width = 352;
19 pstSize->u32Height = 288; break;......
20
21 }
22
23 }

  之后到SAMPLE_SVP_NNIE_Rfcn_Proc函数,具体如下:

 1 s32Ret = SAMPLE_SVP_NNIE_Rfcn_Proc(
2
3      pstParam,
4
5 pstSwParam,
6
7 &stExtFrmInfo,
8
9 stBaseFrmInfo.stVFrame.u32Width,
10
11 stBaseFrmInfo.stVFrame.u32Height);

  随后进入加框函数:(即进入VGS视频图形子系统)

1 //Draw rect
2
3 s32Ret = SAMPLE_COMM_SVP_NNIE_FillRect(
4
5 &stBaseFrmInfo, //*pstFrmInfo
6
7 &(pstSwParam->stRect), // *pstRect
8
9 0x0000FF00); //u32color

  用到了两个VGS重要参数定义:

  VGS_TASK_ATTR_S stVgsTask;  //定义 VGS task 的属性

  VGS_ADD_COVER_S stVgsAddCover; //定义 VGS 上 COVER 的配置

  下面为定义图像属性和输出图像属性:

1 memcpy(  &stVgsTask.stImgIn,
2 pstFrmInfo,
3 sizeof(VIDEO_FRAME_INFO_S));
4
5 memcpy( &stVgsTask.stImgOut,
6 pstFrmInfo,          
7 sizeof(VIDEO_FRAME_INFO_S));

  随后定义 VGS 上 COVER 的配置,设置COVER参数,如颜色设置为0x0000FF00(绿色,这个与之前Hi3519 RFCN运行一致,加绿色的框)

通过memcpy定义任意四边形 COVER 四个坐标点:

1 memcpy(  stVgsAddCover.stQuadRangle.stPoint,
2
3 pstRect->astRect[i][j].astPoint, //(pstSwParam->stRect)
4
5 sizeof(pstRect->astRect[i][j].astPoint));

  VGS 支持对一幅图像进行遮挡操作,遮挡区域形状可以是矩形或者任意四边形, 遮挡区域颜色为纯色,支持批量打 COVER。 而在Draw rect函数中,没有对stBaseFrmInfo数据直接操作,目前认知VGS做COVER任务提交job时,直接将COVER数据送入至VO,随后加上stBaseFrmInfo的数据:

 1 //将视频图像送入指定输出通道显示。
2
3 s32Ret = HI_MPI_VO_SendFrame(
4
5 voLayer,
6
7 voChn,
8
9 &stBaseFrmInfo,
10
11 s32MilliSec);

  整体的数据流处理流程如下:

基于Hi3559AV100 RFCN实现细节解析-(2)RFCN数据流分析的更多相关文章

  1. 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析一 :

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: Hi3559AV100的 ...

  2. 基于Hi3559AV100 RFCN实现细节解析-(3)系统输入VI分析(HiISP)二 :

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,整个过程涉及到VI.VDEC.VPSS.VGS.VO.NNIE,其中涉及的内容,大家可以参考之前我写的博客: 基于Hi3559AV10 ...

  3. 基于Hi3559AV100 RFCN实现细节解析-(1)VGS初介绍

    下面随笔系列将对Hi3559AV100 RFCN实现细节进行解析,因为RFCN用到了VGS加框,因此本篇随笔将给出VGS视频图像子系统的具体说明,便于后面RFCN的细节实现说明. VGS 是视频图形子 ...

  4. Hi3559AV100 NNIE开发(2)-RFCN(.wk)LoadModel及NNIE Init函数运行过程分析

    之后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3559AV100 NNIE开发(2)-RFCN(.wk)LoadModel及NNIE Init函数运行过程分析,通过对LoadModel函数及 ...

  5. Hi3559AV100 NNIE开发(6)RFCN中NNIE实现关键线程函数->SAMPLE_SVP_NNIE_Rfcn_ViToVo()进行数据流分析

    前面随笔给出了NNIE开发的基本知识,下面几篇随笔将着重于Mobilefacenet NNIE开发,实现mobilefacenet.wk的chip版本,并在Hi3559AV100上实现mobilefa ...

  6. 基于底层的 XML 的解析方式详解

    在上一篇博客中,我们介绍了什么是 XML ,http://www.cnblogs.com/ysocean/p/6901008.html,那么这一篇博客我们介绍如何来解析 XML . 部分文档引用:ht ...

  7. Spring源码学习笔记之基于ClassPathXmlApplicationContext进行bean标签解析

    bean 标签在spring的配置文件中, 是非常重要的一个标签, 即便现在boot项目比较流行, 但是还是有必要理解bean标签的解析流程,有助于我们进行 基于注解配置, 也知道各个标签的作用,以及 ...

  8. canal 基于Mysql数据库增量日志解析

    canal 基于Mysql数据库增量日志解析  1.前言  最近太多事情 工作的事情,以及终身大事等等 耽误更新,由于最近做项目需要同步监听 未来电视 mysql的变更了解到公司会用canal做增量监 ...

  9. 基于Hi3559AV100的视频采集(VDEC-VPSS-VO)整体框图设计

    下面给出基于Hi3559AV100的视频采集整体设计,具体设计将在后续给出: 图形采集端整体设计 Hi3559AV100软件程序按结构划分可分为4层,第一层是硬件驱动层,第二层是操作系统层,第三层是媒 ...

随机推荐

  1. Codeforces Round #659 (Div. 2) A. Common Prefixes

    题目链接:https://codeforces.com/contest/1384/problem/A 题意 构造 $n+1$ 个字符串,使得 $n$ 对相邻字符串的相同前缀长度对应于数组 $a$ . ...

  2. HDU 6880 Permutation Counting dp

    题意: 给你一个n和一个长度为n-1的由0/1构成的b序列 你需要从[1,n]中构造出来一个满足b序列的序列 我们设使用[1,n]构成的序列为a,那么如果ai>ai+1,那么bi=1,否则bi= ...

  3. poj2778 DNA Sequence(AC自动机+矩阵快速幂)

    Description It's well known that DNA Sequence is a sequence only contains A, C, T and G, and it's ve ...

  4. WPF 无法对元素“TextBox”设置 Name 特性值“TB2”

    错误信息 无法对元素"TextBox"设置 Name 特性值"TB2"."TextBox"在元素"UserControl1&quo ...

  5. OpenStack Train版-4.安装placement放置服务

    安装placement放置服务 创建placement数据库 mysql -uroot CREATE DATABASE placement; GRANT ALL PRIVILEGES ON place ...

  6. 注意力(Attention)与Seq2Seq的区别

    什么是注意力(Attention)? 注意力机制可看作模糊记忆的一种形式.记忆由模型的隐藏状态组成,模型选择从记忆中检索内容.深入了解注意力之前,先简要回顾Seq2Seq模型.传统的机器翻译主要基于S ...

  7. Linux 网络协议栈开发基础篇—— 网桥br0

    一.桥接的概念 简单来说,桥接就是把一台机器上的若干个网络接口"连接"起来.其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去.以使得网口之间的报文能够互相转发. 交换机 ...

  8. HDU 3949 XOR (线性基第k小)题解

    题意: 给出\(n\)个数,求出子集异或第\(k\)小的值,不存在输出-1. 思路: 先用线性基存所有的子集,然后对线性基每一位进行消元,保证只有\(d[i]\)的\(i\)位存在1,那么这样变成了一 ...

  9. 攻防世界ctf bug

    bug 考查: 逻辑漏洞.文件内容检测绕过 ,文件头是位于文件开头的一段承担一定任务的数据,一般开头标记文件类型,如gif的gif89a,或gif87a, png的x89PNG\x0d\x0a,等等 ...

  10. CDN maxcdn for speed up

    https://www.maxcdn.com/ The Next Generation CDN.Plug into a whole new level of speed.From: https://w ...