 核内link:基于队列(queue)进行数据帧交换
 M3核(VPSS/Video)间:IPC ListMP 和 Notify 数据帧的指针直接传递,没有缓存和地址转换,两个M3核共享唯一缓存区
 核间(M3-A8-DSP):此类通信信使包括ListMP,Notify,Shared Region
M3上的缓存操作通过Bios上APIs来实现 
A8上的缓存操作通过SysLink的Apis

• Intra-processor links
     即同一核心内部的link,如采集与降噪之间的帧数据传递,这种内部的link间传递帧数据都是在VPSS M3内部完成,因此采用简单且高效的队列机制实现。
• Inter M3 (Video / VPSS) links
     即M3内部核心之间的link,由于Video和Vpss所在的2个M3核心是同属于一个双核M3处理器,它们的cache是共享的;如降噪模块(VPSS NF)到编码模块(VIDEO Enc)之间传递帧数据,带有Notify的IPC ListMP机制被用来在这2个M3核心之间传递帧信息(FVID2_Frame),该过程中不需要任何cache操作和地址转换。
• Inter processor (M3 to A8 or DSP)
    即处理器内部核心之间,如编码(VideoM3)到BitStream In(HostA8)之间传递帧数据,同样使用带Notify的IPC ListMP机制在2个核心之间传递帧信息(FVID2_Frame),但该过程中需要做cache同步和地址转换操作。

图3.12 IPC Link核间数据交换过程
图上处理器1和处理器2通过将IpcLink 互联实现数据帧核间交换,IpcLink 底层使用多核共享的ListMP 队列。两个子处理器通过IpcFrames Link 交换数据帧的过程如下:
① 运行在处理器1上的IpcFramesOut Link 将视频帧数据缓存区指针放入ListMPOut 队列的尾部。
② 运行在处理器2上的IpcFramesIn Link 从ListMPOut 队列头读取视频帧数据区指针,将该指针交给下一个Link 处理,当下一个Link 处理完这一帧数据并释放对应的缓冲区空间最后返回时,IpcFramesIn 将该视频帧数据缓存区指针放回ListMPIn 的尾部。
③ 运行在处理器1上的IpcFramesOut Link 从ListMPIn 队列的头部读取视频帧数据缓存区(该缓存区要么是初始化是申请的,要么就是上一步释放的)指针,将该视频帧数据缓存区指针交由下一个Link 做数据处理。
IpcFrames Link 会提供一个processLink 以支持DSP 算法Link 以T 型结构加入数据处理链路。在T 型结构中,直到DSP 算法Link 完成数据帧的处理并且返回之后,IpcFrames Link 的才会将数据帧指针交由下一个Link 处理,这样可以保证下一个Link 处理的是经过DSP Link 处理之后的数据帧。

Linux系统和开发板处于同一网段,通过telnet登陆开发板,Linux主机控制器负责调试信息打印,系统NFS文件系统挂载,对开发板的内核移值,包括在linux上编译算法代码生成.out文件直接通过mount 命令挂载然后然后通过copy命令拷贝过去。
开发板是一种“异构多核“系统,包括M3核和DSP核,多核之间的通信已经由TI实现了开源的调用库,了解源码后,线程之间通信,在同核内不需要数据的复制,而只需要传递地址,在异核间则通常需要(两个处理器核通过共享内存,)。我们的任务就是根据多核通信API并移植自己的烟雾识别算法。起初,我们编写了第一条链路,即“采集线程-算法处理线程-显示线程”,涉及两个核,核内线程通信使用信号量实现的队列,且队列里传递的只是视频数据帧的地址。由于我们采集的是高清1080P 60fps的视频数据,在前景提取中,由于核间通信数据量过大,算法线程处理速度过慢,采集线程的速度过快,以至于超过缓冲队列数据的最大缓存,上个线程立马挂掉,整个视频处理失败。
后来,我们自己实现了两个线程,一个数据处理线程,一个存储转发线程,存储转发线程在获得到采集到的视频数据之后,只做两件事,一存储视频数据到队列 二赶快转发下个线程 (小的数据块在内存里的拷贝可以使用memcpy函数,大量的图像块数据则利用EDMA拷贝二维数据, 一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率),此外,由于我们采集的视频视频数据帧格式为YUV422,像素点结构为Y-U-Y-V,我们真正感兴趣的只是一帧二维数组的奇数值,所以我们采用EDMA间隔取值可以间接帮我们做了一步过滤。主线程储存完数据,则马上传递个下个线程。我们的处理线程则一开始阻塞在数据队列上,直到有数据可以读取。
在DM816x 火灾检测系统中,由于存在大量的数据帧的复制,所以需要使用EDMA 资源,框架为方便EDMA 资源的使用提供了ECPY 高性能DMA 函数库,ECPY函数库可以高效地使用DMA 资源实现无CPU 干预的高效内存拷贝。在IRES 资源请求中可以根据IRES_ResourceDescriptor 指定资源类型为具体的EDMA 资源,IRES 请求到DMA 资源逻辑资源后会返回资源操作指针。DMA 资源操作指针是 ECPY 是所有函数库的第一个参数。
XDAIS 算法接口标准  内存资源管理,硬件资源共享
自动为算法实例分配内存
XDAIS 标准分为两个子模块:IALG 和 IRES 接口。这两个接口为定义了算法对内存,和其它硬件资源如DMA,HDVICP等的管理
XSAIS算法标准规定了算法模块命名,变量类型,必须实现的接口定义,以及算法所使用的内存块属性
其中IALG 接口定义算法对象内存请求,内存释放,算法对象初始化等一系列接口。而IRES 接口定义算法对EDMA ,HDVICP,Tiler Memory等通用资源的请求,配置,使用和释放等控制。根据第三章的分析,设计火灾检测对象如图4.8 所示。
视频火灾检测对象需要保存背景图像数据,当前灰度图像数据,背景灰度图像数据,以及背景与当前灰度图像差,也就是运动目标图像。所以定义需要的内存块数目为5,分别存储火灾检测结构体对象,背景图像,当前灰度图像,背景灰度图像,以及运动目标图像。在alloc 接口内部可以对每个内存块属性进行配置,如大小,对齐字节数目,所属空间(IALG_DARAM0,LG_DARAM1,IALG_SARAM0等),内存属性[25]。这里将所有内存所属空间设置为IALG_DARAM0,内存块属性设置为IALG_PERSIST。在initObj 接口内部,根据传入的算法参数设置算法对象相关属性,如将backGround, curGray, backGray, object 指针指向系统为其分配的内存地址也就是memTab.base 地址。

在算法移植时,根据需要,完成了XDAIS 标准接口函数的设计,对于算法内部使用的大量视频数据帧复制函数,使用了McFW 框架内部提供的DMA 快速内存复制函数库,减少了DSP 处理器数据处理负载,提高了算法实时性。
对于YUV422 格式,从数据指针pFrame->addr 中提取灰度分量只需间隔取值即可取得灰度图像。火灾检测算法每隔1s,取5帧数据的均值作为背景图像数据存放在backGround 空间。将当前灰度图像与背景灰度图像绝对值存放在object 空间。提取出所有运动区域小方块,然后对每一个方块计算其结构相似度,小波,以及饱和度衰减。根据统计信息进行火灾判决,如果确定为火灾,将火灾区域标记。

烟雾检测系统要接收多路高清网络视频 (1920*1080p),按照帧率(Frame Per Second ,FPS)30fps,如果没有经过编码,以YUV422格式记录像素点。那么带宽需求为:1920*1080*30*(8*3/2)=746,496,000bps=746Mbps,如果是多路采样视频,那么需要Gbps 以上的带宽。然而如果使用H.264编码,一般的压缩率可以在1/(25~100) 之间,这样就可以将带宽降低到Mbps 级别。通过Live555发送全高清视频,使用VLC 播放RTSP 视频流,可以看出一路全高清视频数据传输率是6000+ kb/s 。

在DM8168系统中,网络视频流的传输具体实现如下:
(1) 创建用于网络传输的数据通道,本文系统支持两路高清的视频采集,在网络传输时也需要创建两个传输通道,创建数据通道的命令是:mkfifo(fileName,0777),该操作是将名为fileName文件创建为有名管道,参数0777保证该管道文件可以被读写访问。
(2) 在DM8168上为RTSP协议创建传输端口,两个管道端口分别设置为8554、8556,为方便接收,为两个视频流设置别名videostream。
(3) 建立和启动RTSP服务器,本文的RTSP服务器代码来自网络开源社区,在DM8168平台下编译为该平台可执行的.out文件,RTSP服务器启动命令:rtsp_server -f fileName -n videostream -p 8554/6 -r 60
(4) 连续发送采集的实时数据,RTSP服务器启动后,DM8168循环获取SYSTEM_HOST_LINK_ID_IPC_BITS_IN_0的数据并写入管道,然后由RTSP服务器通过网络实时发送。

1、 基于VLC的RTSP客户端
VLC多媒体播放器是一个开源的支持H.264解码的播放器,该开源软件能直接从VideoLAN官方网站下载并安装。当DM8168上的RTSP服务器开始发送数据后,启动VLC客户端,并输入网络视频流的地址,本文系统中,RTSP视频流的网络地址为:rtsp://192.168.0.8:8556/avstream和rtsp://192.168.0.8:8554/avstream,建立起客户端与服务器的连接后,客户端就可能实时接收来自服务器的视频流。

DM8168烟雾识别项目总结相关推荐

  1. 史上最简单的人脸识别项目登上GitHub趋势榜

    来源 | GitHub Trending整理 | Freesia译者 | TommyZihao出品 | AI科技大本营(ID: rgznai100) 导读:近日,一个名为 face_recogniti ...

  2. 【项目实践】中英文文字检测与识别项目(CTPN+CRNN+CTC Loss原理讲解)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 OCR--简介 文字识别也是图像领域一 ...

  3. 百度人脸检测与识别项目资源

    百度人脸检测与识别项目资源 https://blog.csdn.net/PaddlePaddle/article/details/104386123?depth_1-utm_source=distri ...

  4. 开源车牌识别项目,OpenALPR

    今天在github上看到了一个开源的车牌识别项目,OpenALPR.github链接 我以前自己在MATLAB上编写了一个简单的车牌识别的程序,使用的是传统模板匹配法.只是有了初步的效果,还有很多需要 ...

  5. 中控指纹采集器开发指纹识别项目(说明)

    历史指纹识别相关开发版本: 指纹识别开发1.0,开发时间:2018-01-04 指纹识别开发2.0,开发时间:2018-01-04 指纹识别开发3.0,开发时间:2020-01-06 可以从时间上看的 ...

  6. 中文电子病例命名实体识别项目

    MedicalNamedEntityRecognition Medical Named Entity Recognition implement using bi-directional lstm a ...

  7. 手写数字识别项目介绍

     #2018-06-28 024709 June Thursday the 26 week, the 179 day SZ 这份文档主要是对项目的总结,应对面试准备的 手写数字识别项目介绍 Ten ...

  8. Android-图像识别项目OpenCV(4):开发思路以及问题

    上一篇文章:Android-图像识别项目OpenCV(3):程序目标以及单独发布 六.开发思路 搭建好环境和做好各种准备功夫,接下来就开始我们的开发之路. 首先,我们先查看一下官方教程文档,看有没有我 ...

  9. 细粒度车型识别项目(基于DenseNet, 数据集Stanfordcars-196,准确率:95.00%)

    细粒度车型识别项目 基于DenseNet, 数据集Stanford cars-196,准确率:95.00% 目前已被 <智能系统学报>录用 知网地址:基于部件关注DenseNet的细粒度车 ...

最新文章

  1. redmine忘记username和password
  2. centos 编译安装mysql
  3. CCF NOI1113 括号匹配
  4. 联想激发青年公益创业彰显“责任”意识
  5. 概述nodejs核心机制
  6. Taro+react开发(48)taro中switchTab
  7. 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
  8. 这个机器人花盆,给你的植物长了脚脚
  9. 高斯过程回归python_scikit-learn中的多输出高斯过程回归
  10. UVA960 Gaussian Primes【数学】
  11. 将图片变换成3d对象
  12. opencv2,3 ,4几个版本的区别及冲突性,使用的时候用头文件注意
  13. 【傻瓜教程】手把手教你安装pip
  14. ftp-cmd常用命令
  15. 申请手册:英国百所大学中文名称及网址
  16. [后缀自动机 模板题 || 字符串Hash] HDU 4622 Reincarnation
  17. KernelBase.dll中有未经处理的异常,求助大神!!!
  18. 冰箱10分钟启动一次_冰箱正常多久启动一次
  19. 苹果手机有护眼模式吗_暗黑模式=护眼模式?其实手机中的这个设置才真正护眼...
  20. 炸薯片和AI生产新闻一样样的!拢共分六步

热门文章

  1. 今天继续去新交房的小区地推
  2. 博森科技-CCG机器人基础名词解释(列表字段)
  3. 机器视觉取代人工视觉不可逆转!
  4. vim的主题(colorscheme)设置
  5. ffmpeg解封、解码实战
  6. FarPoint 表格(居中)自适应显示图片
  7. windows系统的iphone和ipd软件的开发编译环境 - 梦想天空 - ITeye技术网站
  8. 外设驱动库开发笔记54:外设库驱动设计改进的思考
  9. 宝来客:节日送礼年轻人更偏爱珠宝?
  10. 东南大学计算机专业课压分,初试压分怎么办,上岸前辈诚心推荐,这些院校很公正~...