| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 基于嵌入式图像处理平台的实时多目标识别算法 -> 正文阅读 |
|
[人工智能]基于嵌入式图像处理平台的实时多目标识别算法 |
基于嵌入式图像处理平台的实时多目标识别算法 人工智能技术与咨询 昨天 本文来自《科学技术与工程》,作者?王旭辉等 摘 要?提出了一种适用于空间观测任务的实时多目标识别算法,它基于DSP和FPGA组合的图像处理硬件平台,运用散点聚类、轨迹跟踪、特征提取技术快速识别目标。对算法的功能需求、数据流向、运算流程和处理结果,进行了详细阐述。实践结果表明,该识别算法具有很强的实用性。 关键词?多目标 运动轨迹 实时滤波 嵌入式平台 1 功能需求 空间观测对象复杂多变,且真、伪两种目标在尺寸、亮度、形态方面既有区别又十分相似,观测的背景也起伏多变。算法针对的工况如下:零散目标数量多(K级),但个体像素少(<100 pix);真目标形态有变化但不规则,与伪目标形态经常一致;真目标在亮度方面忽明忽暗有起伏,而伪目标单体灰度起伏小,但群体表现则灰度有高有低;但两者速度和方向有差异。 由于图像处理需进行全幅传输、存储和计算,时间消耗大,而用户对算法实时性要求高,因此必须充分利用图像传输时间,并避免耗时过多的运算,借鉴国外空间宽视场相机[1]的图像处理方案,对图像流做一次数据量降级处理,从M级降低到K级,且边传输边流水线式处理;避免了集中处理造成的时间延迟,降低了错误信息汇报的风险。 2 整体架构 硬件平台由DSP处理器+FPGA及其外围器件组成的高速运算电路共同实现[2],它为软件编程、各类数据流控制及复杂对象的识别算法提供基础保证。多目标识别算法在物理空间运行上分成两部分:图像预处理算法(FPGA)和轨迹识别算法(DSP),与嵌入式图像处理硬件构成一个完整的图像处理系统共同完成空间观测任务,识别算法主要负责对空间监测图像的分析和判读,重点是滤除背景,对潜在目标进行分类、识别后、剔除伪目标,存储、记录真实目标并将其报告给相关系统。其识别的过程可分为五个步骤:帧内空间滤波、帧内阈值分割、帧内散点聚类、帧间轨迹编排和帧间目标判定。 软件结构如图1所示。 图1 多目标识别算法的软件结构和分配布局示意图 3 算法步骤3.1 图像预处理 该算法依托FPGA实现,对每帧原始图像进行流水线式“高通滤波”和“阈值分割”,处理后的次级图像存到外部“FIFO”中。图像预处理的依据源于“空间图像是低频背景与高频奇异点的综合结果”[3],因此部分借鉴彭嘉雄先生的高通滤波器模板,对图像做类似卷积计算,记矩阵h,维数5×5,处理公式如下 式中f(i,j)为输入图像,G(i,j)为卷积后的结果,threshold即阈值,阈值的选取有两种方式:一种是人工干预,从DSP端通信口输入;另一种是自适应调整,以图像均值为基础,综合工程经验的“可识别信噪比”倍率。 3.2 聚类 预处理后的次级图像,由DSP处理器从FIFO中取走做进一步处理——“聚类”,即根据次级图像提供的零散点位置、灰度信息,经过连通和聚合,初步收集单帧内的目标综合特征,为下一步多帧多目标识别奠定基础。该聚类算法中“段表”的意义是记录水平维信息,而“邻接表”的意义则反映竖直维信息;经过两次循环遍历,可以对V型、Ф型和λ型等主流形态目标进行稳定的形心跟踪,且具有执行速度块、节省存储空间等优点,算法流程如图2所示。 3.3 轨迹编排 聚类后获得的潜目标信息存储在SDRAM中,由于伪目标和真目标在几何特征上的差异尚不足以判断目标真伪,还需要根据多帧积累后的运动轨迹和速度差异,去“伪”存“真”。这一过程也由DSP实现。“轨迹编排”完成“轨迹矩阵初始化”、“轨迹新建”、“轨迹更新”和“轨迹删除”四项主要功能。进入目标搜索模式后的首帧先进行“轨迹矩阵初始化”:初始化的内容分两步先完成矩阵内全部变量清零,然后根据最新单帧潜目标信息组(及前面聚类成果)里的数据构建初始轨迹矩阵;从第二帧开始,即当“初始轨迹矩阵”成型后,逐帧根据潜目标和已分类目标的特征,或更新、或新建、或删除轨迹,不断更新轨迹矩阵中的轨迹条数、轨迹长度、轨迹生命值等变量。改动轨迹管理矩阵的条件见表1。 表1 轨迹新建、更新及删除条件 图2 散点聚类功能的处理流程图 其中轨迹管理器采用的是结构体和数组的结合,单条轨迹长度限定为固定值,在充满轨迹长度数组极限前,轨迹点数不断递增;充满轨迹长度数组后用最新点替代最旧点,本文采用这种封闭式的数据结构,是出于可靠性的考虑,避免使用开放式指针及链表可能带来的“溢出泄漏”风险。针对空间目标特性的不连续情况,将轨迹的生命值区分为“活跃态”、“休眠态”和“终结态”;这三种状态分别对应的判定条件为:不断更新,间歇更新和永不更新。图像中出现的噪点因其出现的偶然和随机性,仅存在于“休眠态”,数帧之后因不再更新,最终会转入“终结态”;而新出现的潜目标,在经历连续更新“额定门限帧数”后,由“休眠态”转入“活跃态”。由于本任务帧频较高及视场张角较大的特点,帧与帧时间间隔内目标移动的范围较小,可以用“相邻原则”来更新标号。完整的“轨迹编排”流程如图3所示。 3.4 统计分析 图3 轨迹编排功能的处理流程图 对“轨迹管理器”中处于“活跃态”的轨迹按“轨迹条数”进行两次遍历,分别统计速度和方向,进而更新置信度,然后根据置信度最值确认真实目标(这里选取速度和方向做特征量的原因是真、伪目标在灰度特征上的差异不显著)。在实际工程使用中,为降低虚警率,置信度在不满足“轨迹长度累计总量门限”时,暂不对外告警;在置信度配置方面,由于系统安装平台的晃动对“方向”有贡献,因此在置信度设置时,速度的权重高于方向。具体流程如图4所示。 4 测试结果 图4 轨迹统计功能的处理流程图 对该算法的验证在地面模拟时,以光学模拟为主,背景主要包含两种光源的起伏,并随机添加针状噪声,真、伪目标源在9 000帧里面累计数量按100颗仿真,单帧内最多按32颗计算。伪目标的空间分布和亮度幅值以亮星星表为依据。图5列出的是对9 000帧中的某一帧图像做预处理后的效果,初步验证了FPGA中图像预处理算法对背景的剔除功能。 对轨迹识别算法的考核是假设真目标做水平方向往复运动,伪目标做垂直方向运动,在仿真时,为模拟真实情况,对安装平台做正弦方式晃动。图6列出了轨迹管理矩阵中9 000帧的全部历史记录。其中蓝色的为真目标轨迹,结果表明轨迹算法能对运动有差异的真伪目标做出正确判断,保持在测试过程中,近99.4%的时间内稳定汇报真实目标信息。 5 结论 提供的算法充分考虑了工程实际情况和多目标实时识别的特点,结合嵌入式硬件处理平台已经参与并完成对地面模拟目标和空间真实目标的验证,为空间观测领域的图像处理和识别提供了一种具有实用价值的嵌入式开发系统。 图5 图像预处理后的效果 图6 多目标识别过程中的轨迹图(尺寸5×5;目标数量100;累计9 000帧;含平台抖动) |
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 6:26:32- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |