当前位置: 首页 > news >正文

【2021集创赛】Arm杯一等奖作品—基于 Cortex-M3 内核 SOC 的动目标检测与跟踪系统

本作品介绍参与极术社区的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~

团队介绍

参赛单位:北京理工大学
队伍名称:飞虎队
指导老师:李彬
参赛杯赛:Arm杯
参赛人员:余裕鑫 胡涵谦 刘鹏昀
获奖情况:全国总决赛一等奖,华北赛区一等奖

1.项目简介

视频目标跟踪是计算机视觉领域的重要热点研究方向之一,它在军事领域和民用领域都具有较高的实用价值,如成像制导、智能交通、智能监控、人机交互、医学诊断等方向,但多数相关算法计算量较大,导致实时性较差,所以实时实现目标的检测与跟踪已成为重点研究方向之一。

本系统基于Xilinx Artix XC7A100T平台,在其基础上搭载Cortex-M3内核,AMBA总线,总线上外挂GPIO,LCD,OV5640,DDR3和HDMI等外设模块,基于混合高斯建模及Meanshift等相关算法,实现了对摄像头输入图像的动目标检测与实时跟踪功能,高效运行智能算法,使系统具备了无人实时运行,高效智能化处理任务的能力。

2.系统运行流程介绍

a.系统上电后,对系统的各项外设进行初始化。如配置OV5640摄像头的图像尺寸,曝光时间等各项参数。
b.当系统的检测与跟踪功能关闭时,图像信号通过DDR缓存后,通过HDMI实时显示,可作为一般性的监控功能使用。
c.当系统的检测与跟踪功能打开时,系统会在DDR缓存完两帧图像后,在1ms左右的时间内检测出其中的动目标的位置与大小,而后通过跟踪模块,在不影响图像在HDMI显示的基础上,实时跟踪目标所在的位置,采用红色方框的方式在HDMI实时标记目标所在位置,并通过LCD屏幕实时显示目标所在的位置。
d.同时,系统还配备了正常工作指示信号灯,通过LED定时闪烁的机制实时反馈系统运行状态。

3.系统架构

3.1架构简介

本系统的架构如下图3.1所示。处理器内核采用比赛官方指定的Cortex-M3评估版内核。系统总线采用AMBA总线,总线层数为两层,第一层AHB总线,用于对系统空间进行一个总体的划分;第二层包括一个AHB总线和APB总线,其中AHB用于挂载速度较快的外设,例如OV5640,HDMI等,第二层总线APB由转接模块连接到AHB,用于挂载速度较慢的外设,如Timer,GPIO等。
在这里插入图片描述

 图3.1 整体系统架构图

由OV5640中得到的RGB图像信号是系统处理的主要数据信号,该信号在系统中的流通情况如下图3.2所示,根据下图易知,本系统采用的是通道加速器的形式实现了目标的检测和跟踪功能,其优点的简单易实现,对新手比较友好,同时可以大大加快系统开发效率,缺点是模块的通用性查,针对不同的系统,需要对模块进行大量的修改,通用性较差。针对以上问题,后续将采用加速器IP的形式,提高加速器的通用性。
在这里插入图片描述

图3.2 系统数据流简图

3.2软硬件功能划分

为了充分发挥FPGA的实时性优势,本作品的大部分功能模块在FPGA端实现,如OV5640相关驱动模块、HDMI显示模块、DDR3模块以及加速器模块;ARM端为每个需要触发控制的外设配置一个c和h头文件,用于相关参数的配置,以及对应中断事件的唤醒,如在OV5640模块中,我们通过软件端设置摄像头的图像尺寸,最大曝光帧率等参数。

4.外设挂载

4.1 GPIO外设

本系统在APB总线上挂接GPIO外设,可实时观察系统运行情况,并可通过相应按键进行系统的动态调试。

4.2 LCD外设

本系统采用在APB总线上挂接LCD外设,系统外接LCD外设主要用于实时显示运动目标物体的具体位置,LCD屏幕实时显示的参数共有四个,目标物体左上角的x,y坐标以及目标物体的宽和高。

4.3 OV5640摄像头外设

本设计采用OmniVision公司的OV5640型摄像头。如图4.1为摄像头模块详细框图。
在这里插入图片描述

图4.1 摄像头模块
摄像头模块在成功将一帧图像写入DDR内后向Cortex-M3处理器及加速器模块发送发送帧传输完成中断信号,将Cortex-M3处理器及加速器模块从待机状态唤醒。前两帧图像存储完成后Cortex-M3处理器将图像采集模块暂时关闭,加速器模块开始运行目标检测单元。得到检测结果后Cortex-M3处理器再向图像采集模块发出采集新图像的请求,并开启加速器模块中的目标跟踪单元,执行目标跟踪。

4.4 DDR3存储外设

由于DDR3时序十分复杂,若直接编写DDR3的控制代码,工作量十分大,且性能难以保证,因此我们Xilinx公司提供的MIG IP核来实现DDR的读写。
本设计DDR控制模块框图如图4.2。
在这里插入图片描述

图 4.2 DDR控制模块
如框图所示,DDR读写单元负责与MIG模块进行命令和地址的交互,根据FIFO调度单元中FIFO的剩余数量来切换DDR3的读写命令和地址;FIFO调度单元负责对输入和输出的数据进行时钟域的切换和位宽的转换。

4.5 HDMI显示外设

本系统采用HDMI接口,模块架构如图4.5所示。
图像数据通过DDR输送到HDMI后,先经过视频驱动模块,生成对应图像分辨率的场同步,行同步信号,去除行前后沿,场前后沿,得到需要显示的图像数据;而后将图像数据经过DVI直流平衡编码;再使用五倍的时钟,将图像数据串并转换,最终得到10倍像素速率的串行数据;最后再进行TMDS差分输出,得到显示信号。
在这里插入图片描述

图4.5 HDMI驱动模块

5.加速器设计

如图5.1,我们团队加速器模块由目标检测单元及目标跟踪单元构成,目标检测单元采用混合高斯建模算法,目标跟踪单元采用MeanShift算法。
在这里插入图片描述

图5.1 加速器整体框架
当摄像头完成前两帧数据采集后开启目标检测单元,加速器模块与DDR交换数据并计算相关参数,检测完成后将目标进行框选,开始运行目标跟踪算法。

5.1 混合高斯建模算法

我们团队采用混合高斯背景建模的方法获得背景,以抑制上述环境中噪声对背景消除法的影响,并弥补帧差法的不足。混合高斯背景建模算法假设各个像素点各自完全独立,独立像素点的值的变化在时间上面基本符合高斯分布,利用各像素点值的概率分布,判断其是否属于背景像素点。详细框图如图5.2。

首先初始化预先定义的两个高斯模型,对高斯模型中的参数(像素高斯均值(mean)、方差(sd)、权重(w)、像素与高斯均值的绝对距离(udiff)及匹配标志(match))进行初始化,并求出将要用到的参数。其次,对于每一帧中的每一个像素进行处理,计算其是否匹配某个模型,若匹配,则将其归入该模型中,并对该模型根据新的像素值进行新,若不匹配,则以该像素建立一个高斯模型,初始化参数,代替原有模型中最不可能的模型。最后选择前面几个最有可能的模型作为背景模型,进行腐蚀及膨胀等形态学滤波后提取目标。
在这里插入图片描述

图5.2 检测单元详细框架

5.2 Meanshift目标跟踪算法

运用传统的MeanShift 算法进行目标跟踪。首先是对目标跟踪的初始化,可通过目标检测方法得到需要跟踪的初始目标的外接矩形框,也可以通过鼠标手工选取的方式。本系统中使用的初始目标的矩形的位置及大小根据检测加速器检测得到。然后计算权值矩阵加权下的搜索窗口的直方图分布,用同样的方法计算第N帧对应窗口的直方图分布;以两个目标模板分布的相似性最大为原则,使搜索窗口沿密度增加最大的方向移动,得到目标的真实位置。

MeanShit算法跟踪步骤如下:
1. 计算目标模板的概率密度 ,目标被估计位置 与核窗宽h;
2. 用 初始化当前帧的目标位置,计算候选目标模板 ;
3. 计算当前窗口内各点的权重值;
4. 计算目标的新位置。
经研究,使用YUV像素格式中的Y,即图像亮度来计算图像概率密度 可以得到较好的结果,即系统中在对图像目标进行跟踪时所采用的是RGB转YUV后的数据。
在这里插入图片描述

图5.3 跟踪单元状态转换示意图

6.模块及系统仿真

6.1检测模块仿真

混合高斯建模状态机共由11个状态完成,由于状态较多,且100MHZ时钟下在状态跳转时可能会出现状态跳转错误的情况,为避免此类事件发生,状态参数采用格雷码形式,状态编码如下:IDLE(4’b0000),W_INIT(4’b0001),SD_INIT (4’b0011),UDIFF_MEAN (4’b0010),U_M_2(4’b0110),P_UPDATE(4’b0111),P_UP_2(4’b0101),MODEL_UP(4’b0100),FRAME_JUG(4’b1100),PIXEL_TF (4’b1101)以及M_DONE(4’b1111)。状态机仿真如图6.1所示。
在这里插入图片描述
图6.1 混合高斯建模算法状态机跳转仿真
处理完成标志仿真结果如图6.2所示。
在这里插入图片描述

图6.2 处理完成标志信号仿真结果

6.2 跟踪模块仿真

通过Modelsim仿真后将系统跟踪数据导出,由Matlab采集相应数据画图,如图6.3所示。

在这里插入图片描述
图6.3 Modelsim仿真结果

7.系统整体测试结果

系统整体测试效果如视频所示,可以看到,系统效果较好,另也有较为复杂背景下的演示,欢迎感兴趣的同学与我们交流。

8.参赛体会

通过本次比赛我们对基于ARM Cortex-M3内核的SOC设计有了一定的认识并基本掌握相关设计流程,进一步提高了自己的专业知识水平,同时也感受到了大赛紧张的气氛,很荣幸可以与全国各地200余所高校参赛队伍共同努力。
通过比赛期间的宣讲,我们也更加了解到国内集成电路行业的发展现状。非常感谢赛事组委会的老师和工作人员在本次大赛中的辛苦付出!

作品内容来源于飞虎队,非开源,转载请标明出处。
欢迎大家参加极术社区组织的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~活动,10月1日截止~

相关文章:

【2021集创赛】Arm杯一等奖作品—基于 Cortex-M3 内核 SOC 的动目标检测与跟踪系统

本作品介绍参与极术社区的有奖征集|秀出你的集创赛作品风采,免费电子产品等你拿~ 团队介绍 参赛单位:北京理工大学 队伍名称:飞虎队 指导老师:李彬 参赛杯赛:Arm杯 参赛人员:余裕鑫 胡涵谦 刘鹏昀 获奖情况&#xff1…...

无线WiFi安全渗透与攻防(一) 无线安全环境搭建以及密码生成

无线WiFi安全渗透与攻防 一. 无线安全环境搭建1.802.11标准(1).概念(2). 802.11标准和补充2.WiFi标准3.无线接入点AP(Access Point)1.概念2.AP的分类(1).胖AP(2).瘦AP(3).用途的区别4.客户端 STA5.无线局域网AP术语介绍6.无线网卡的工作模式(1).Managed Mode(2).…...

Windows 11 设置 wsl-ubuntu 使用桥接网络

Windows 11 设置 wsl-ubuntu 使用桥接网络 0. 背景1. Windows 11 下启用 Hyper-V2. 使用 Hyper-V 虚拟交换机管理器创建虚拟网络3. 创建 .wslconfig 文件4. 配置 wsl.conf 文件5. 配置 wsl-network.conf 文件6. 创建 00-wsl2.yaml7. 安装 net-tools 和 openssh-server 0. 背景 …...

Java排序算法之归并排序

图解 归并排序是一种效率比较高的分治排序算法,主要分为两个步骤,分别为“分”和“并”。 分:将序列不断二分,直到每个子序列只有一个元素为止。 并:将相邻两个子序列进行合并,合并时比较两个子序列的元素…...

【Phoenix】请求的生命周期

本文的目的是讨论Phoenix请求的生命周期。我们实战添加两个新的页面,并讨论整个过程是如何串起来的。 让我们从添加第一个新页面开始。 添加一个新页面 web应用通常通过将HTTP方法和路径映射到应用的某个函数来处理请求。Phoenix通过路由器来实现这个匹配。例如将…...

Ps:利用 AI 技术创建人像皮肤图层蒙版

Photoshop 并没有提供专门选择人像皮肤的工具或命令(色彩范围中的肤色选择非常不精准),但较新版的 Camera Raw 滤镜则提供了基于 AI 技术的选择人物并创建面部和身体皮肤蒙版的功能。 如果能将 Camera Raw 滤镜中创建的 AI 皮肤蒙版转换成 Ps…...

内存泄漏、new、delete

1. 内存泄漏 内存泄漏&#xff1a;指针被销毁&#xff0c;指针指向的空间依旧存在 2. new过程 与内存分配、构造函数有关 1&#xff09;分配空间&#xff1a;void* mem operator new( sizeof( ) )&#xff0c;内部调用malloc 2&#xff09;static_cast<目标类型>(mem) …...

php在线审稿系统mysql数据库web结构layUI布局apache计算机软件工程网页wamp

一、源码特点 php在线审稿系统是一套完善的web设计系统mysql数据库 &#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 php在线审稿系统 代码 https://download.csdn.net/download/qq_41221322/885…...

【华为HCIP | 华为数通工程师】ISIS 高频题(1)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…...

Netty+SpringBoot 打造一个 TCP 长连接通讯方案

项目背景 最近公司某物联网项目需要使用socket长连接进行消息通讯&#xff0c;捣鼓了一版代码上线&#xff0c;结果BUG不断&#xff0c;本猿寝食难安&#xff0c;于是求助度娘&#xff0c;数日未眠项目终于平稳运行了&#xff0c;本着开源共享的精神&#xff0c;本猿把项目代码…...

2023.11.15 每日一题(AI自生成应用)【C++】【Python】【Java】【Go】 动态路径分析

目录 一、题目 二、解决方法 三、改进 一、题目 背景&#xff1a; 在一个城市中&#xff0c;有数个交通节点&#xff0c;每个节点间有双向道路相连。每条道路具有一个初始权重&#xff0c;代表通行该路段的成本&#xff08;例如时间、费用等&#xff09;。随着时间的变化&am…...

【libGDX】初识libGDX

1 前言 libGDX 是一个开源且跨平台的 Java 游戏开发框架&#xff0c;于 2010 年 3 月 11 日推出 0.1 版本&#xff0c;它通过 OpenGL ES 2.0/3.0 渲染图像&#xff0c;支持 Windows、Linux、macOS、Android、iOS、Web 等平台&#xff0c;提供了统一的 API&#xff0c;用户只需要…...

VIVADO+FPGA调试记录

vivadoFPGA调试记录 vitis编译vivado导出的硬件平台&#xff0c;提示xxxx.h file cant find vitis编译vivado导出的硬件平台&#xff0c;提示’xxxx.h file cant find’ 此硬件平台中&#xff0c;包含有AXI接口类型的ip。在vitis编译硬件平台时&#xff0c;经常会报错&#xf…...

Android——Gradle插件gradle-wrapper.properties

一、Android Studio版本&#xff0c;Android Gradle插件版本&#xff0c;Gradle版本 Android Studio 通过Android Gradle插件 使用 Gradle来构建代码&#xff1b; Android Studio每次升级后&#xff0c; Android Gradle 插件自动更新&#xff0c;对应的Gradle版本也会变动&…...

iOS应用加固方案解析:ipa加固安全技术全面评测

在移动应用开发领域&#xff0c;iOS应用的安全性一直备受关注。ipaguard作为一款专业的iOS应用加固方案&#xff0c;采用混淆加密技术&#xff0c;旨在保护应用免受破解、逆向和篡改等风险。本文将深入探讨ipaguard的产品功能、安全技术及其在iOS应用加固领域中的核心优势和特色…...

过滤器模式 rust和java的实现

文章目录 过滤器模式实现 过滤器模式实现javarustjavarust rust代码仓库 过滤器模式 过滤器模式&#xff08;Filter Pattern&#xff09;或标准模式&#xff08;Criteria Pattern&#xff09;是一种设计模式&#xff0c;这种模式允许开发人员使用不同的标准来过滤一组对象&…...

Feature Pyramid Networks for Object Detection(2017.4)

文章目录 Abstract1. Introduction3. Feature Pyramid NetworksBottom-up pathwayTop-down pathway and lateral connections 7. Conclusion FPN Abstract 特征金字塔是识别系统中检测不同尺度物体的基本组成部分。但最近的深度学习对象检测器避免了金字塔表示&#xff0c;部分…...

Python3基础模块 random

Python3基础模块 random import random #作用&#xff1a;生成随机数使用dir(module)查看模块内容 >>> import random >>> dir(random) [BPF, LOG4, NV_MAGICCONST, RECIP_BPF, Random, SG_MAGICCONST, SystemRandom, TWOPI, _BuiltinMethodType, _MethodT…...

ubuntu安装pgsql16

ubuntu安装postgresSQL 官网地址&#xff1a; https://www.postgresql.org/download/ 1.安装 # 添加源 sudo sh -c echo "deb https://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list # 安装数字签名 w…...

数据管理70个名词解析

数据标准化70个名词解析 1、数据 是指任何以电子或者其他方式对信息的记录。在计算机科学技术中&#xff0c;“数据”是客观事物的符号表示&#xff0c;指所有可被输入到计算机中并可被计算机程序处理的符号的总称;在管理科学技术中&#xff0c;“数据”是描述事件或事物的属性…...

线性代数本质系列(二)矩阵乘法与复合线性变换,行列式,三维空间线性变换

本系列文章将从下面不同角度解析线性代数的本质&#xff0c;本文是本系列第二篇 向量究竟是什么&#xff1f; 向量的线性组合&#xff0c;基与线性相关 矩阵与线性相关 矩阵乘法与复合线性变换 三维空间中的线性变换 行列式 逆矩阵&#xff0c;列空间&#xff0c;秩与零空间 克…...

Linux-CentOS重要模块

软件包管理器&#xff1a;CentOS使用Yum&#xff08;Yellowdog Updater, Modified&#xff09;作为其包管理器。Yum提供了一种方便的方式来安装、更新和删除软件包&#xff0c;并自动解决依赖关系。 RPM&#xff1a;RPM&#xff08;RPM Package Manager&#xff09;是CentOS中…...

posix定时器的使用

POSIX定时器是基于POSIX标准定义的一组函数&#xff0c;用于实现在Linux系统中创建和管理定时器。POSIX定时器提供了一种相对较高的精度&#xff0c;可用于实现毫秒级别的定时功能。 POSIX定时器的主要函数包括&#xff1a; timer_create()&#xff1a;用于创建一个定时器对象…...

安科瑞煤矿电力监控系统的研究与应用

摘要&#xff1a;作为一个巨大的能源消耗国家&#xff0c;我国每年对煤炭的市场需求巨大。煤炭作为我国点力气和供暖企业的重要原材料&#xff0c;煤矿的开采过程存在着难以消除的风险&#xff0c;我国的煤炭安全问题长期困扰着相关企业和监督部门&#xff0c;也受到社会的广泛…...

高教社杯数模竞赛特辑论文篇-2023年A题:基于机理分析法的定日镜场优化设计模型(附获奖论文及MATLAB代码实现)

目录 摘要 一、 问题重述 1 . 1 问题背景 1 . 2 问题要求 二、 问题分析...

缩点+图论路径网络流:1114T4

http://cplusoj.com/d/senior/p/SS231114D 重新梳理一下题目 我们先建图 x → y x\to y x→y&#xff0c;然后对点分类&#xff1a;原串出现点&#xff0c;原串未出现点。 假如我们对一个原串出现点进行了操作&#xff0c;那么它剩余所有出边我们立刻去操作必然没有影响。所…...

Go语言fyne开发桌面应用程序-环境安装

环境安装 参考https://developer.fyne.io/started/#prerequisites网站 之前的文章介绍了如何安装GO语言这里不在叙述 msys2 首先安装msys2&#xff0c;https://www.msys2.org/ 开始菜单打开MSYS2 执行 $ pacman -Syu$ pacman -S git mingw-w64-x86_64-toolchain注意&#…...

JavaWeb——CSS3的使用

目录 1. CSS概述 2. CSS引入方式 3. CSS颜色显示 4. CSS选择器 4.1. 元素&#xff08;标签&#xff09;选择器 4.2. id选择器 4.3. 类选择器 4.4. 三者优先级 5. 盒子模型 1. CSS概述 CSS&#xff0c;全称为“Cascading Style Sheets”&#xff0c;中文译为“层叠样式…...

AR导览小程序开发方案

一、背景介绍 随着科技的不断发展&#xff0c;虚拟现实&#xff08;VR&#xff09;和增强现实&#xff08;AR&#xff09;技术逐渐被应用于各个领域。其中&#xff0c;AR导览小程序作为一种新兴的导览方式&#xff0c;以其独特的视觉体验和互动性受到了广泛的关注。AR导览小程…...

继承、多态

复习 需求&#xff1a; 编写一个抽象类&#xff1a;职员Employee,其中定义showSalary(int s)抽象方法&#xff1b;编写Employee的子类&#xff0c;分别是销售员Sales和经理Manager,分别在子类中实现对父类抽象方法的重写&#xff0c;并编写测试类Test查看输出结果 package cn.…...