QT+OpenCv实现在410c开发板上实现视频目标追踪预研——目标跟踪算法选择

17 篇文章 0 订阅
5 篇文章 0 订阅
    
      目标跟踪算法作为一种有着非常广泛的应用的算法,在航空航天、智能交通、智能设备等领域有着非常广泛的应用。本系列博客将教大家在410c开发板上基于linux操作系统环境,采用QT+Opencv来实现视频目标跟踪,本文将首先向大家介绍常用的粒子滤波视频目标跟踪算法,对其原理进行简单的分析,为后续进一步选择和应用算法实现目标跟踪提供基础。
  一、机器视觉及相关理论及OpenCv
       机器视觉是人工智能领域正在快速发展的一个重要分支,其目标重要是通过机器来代替人眼来进行检测和判断,如下图1所示,是一个典型的机器视觉系统的构造图,包括镜头、摄像机、图像采集卡、计算机系统、输入输出设备、控制机构等模块,待测目标通过镜头处理后的影像传输给摄像机,摄像机捕获待检测目标的图像后将其转换为店信号输入到图像采集卡进行初步的处理,最后输入到计算机中,计算机对其进行分析和处理并将结果送入到控制机构对设备进行控制,实现智能化的控制和处理。

图1 机器视觉原理
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类 构成 ,同时提供了Python、Ruby、MATLAB等语言的接口,实现了 图像处理 和计算机视觉方面的很多通用算法,基于OpenCv可以方便的实现各种机器视觉的图形算法处理,起提供了各种应用于机器视觉处理的图形处理运算算法,具有非常高的速度和效率,是当前机器视相关产品开发和理论研究的重要工具。
二、粒子滤波视频目标跟踪算法
视频目标跟踪是机器视觉处理的一个重要环节,如何快速的实现对视频目标的各种和各种目标轨迹的识别成为了当前视频处理研究领域的热点,粒子滤波视频目标跟踪算法作为目前常用的一种高性能的目标跟踪算法,已经被广泛的应用到各种视频目标跟踪处理中,该算法是利用了一种从带噪声的数据中估计出粒子运动状态的技术,在状态空间中通过传播大量的具有一定权限的离散的随机变量来近似概率分布并进行递归计算,最终实现对目标运动状态的预测,粒子滤波这一概念也是得于这种随机变量的分布就类似于实物中的粒子分布而来,如下图2所示,是一种典型的基于粒子滤波算法实现的视频目标跟踪。

图1 基于粒子滤波算法实现的视频目标跟踪
下图2是一种经典的粒子滤波算法的实现原理:
图2 粒子滤波算法实现原理及流程
在粒子滤波算法的实现过程中,其核心就是 基于贝叶斯抽样估计的序列重要性采样原理进行设计,其摆脱了传统的解决非线性系统状态估计中所用的近似线性化以及随机量必须满足高斯分布的制约,极大地提升了对非线性系统状态估计的性能。
三、高通410c开发板核心资源及性能
DragonBoard 410c平台, 使用的 APQ8016处理器是一款基于64位四核ARM Cortex-A53 MPcore哈佛 架构 超线程核心,同时支持LP-DDR2/LP-DDR3 SDRAM接口, Hexagon QDSP6, 13.5MP 摄像头输入支持, Adreno 306 GPU, 1080P视频解码/编码, 基于GLONASS的gpsOneGen 8c, 蓝牙4.1, OpenGL ES 3.0, DirectX,OpenCL,渲染脚本计算,FlexRender支持。其板载主要硬件结构如下图3所示。

图3 410c板载硬件结构
按照图上所示,其对应的编号的模块信息如下:

  四、算法选择
在对粒子滤波算法的基本原理的分析基础上,在粒子滤波过程中,其计算量最大的就是预测中的采样处理需要耗费大量的CPU计算处理资源,而通常从一副800万像素的图片的处理来看,其理论的处理像素点为800万个,但是在实际的处理过程中,其大部分的像素点在粒子滤波的过程中被舍弃,根据最优贝叶斯估计的眼里,只会处理部分的随机状态量,并且采样数也可以根据需要进行设置,在操作系统的支持下,其预计其处理每帧的最大用时在30ms左右,可以很好的满足处理过程中可以很好的满足人眼的极限值24帧的处理速度,并且较为流畅,因此后续选择粒子滤波算法来实现目标追踪的核心理论上可以满足视频目标跟踪的处理要求。
后续的本博客的第二个部分《QT+OpenCv实现在410c开发板上实现视频目标追踪预研——(二)粒子滤波算法测试》将在此基础上,进一步在上位机平台上搭建粒子滤波视频目标跟踪系统对粒子滤波算法性能进行测试,进一步验证其在DragonBoard 410c平台上实现的可行性。
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现QtOpenCV中录制实时视频,你可以使用以下步骤: 1. 首先,你需要创建一个Qt的窗口类,例如Widget类,该类继承自QWidget,并在头文件中包含必要的头文件和命名空间。在该类中,你可以定义一些私有变量和槽函数,用于控制视频的打开、关闭和帧读取等操作。 2. 在Widget类中,你可以使用VideoCapture类来打开摄像头并读取视频帧。你可以在槽函数中调用VideoCapture的open函数来打开摄像头,并使用read函数读取每一帧。你还可以使用VideoWriter类来创建一个视频写入器,用于将帧写入视频文件。 3. 为了实现实时录制,你可以使用一个定时器来定时读取视频帧并将其写入视频文件。你可以在Widget类中创建一个QTimer对象,并在槽函数中设置定时器的时间间隔。在定时器的槽函数中,你可以调用VideoCapture的read函数读取帧,并使用VideoWriter的write函数将帧写入视频文件。 4. 如果你想要在录制视频时进行目标跟踪,你可以在Widget类中添加一个复选框,并在复选框的槽函数中设置一个标志位来表示是否进行目标跟踪。在读取每一帧后,你可以使用OpenCV目标跟踪算法来检测和跟踪目标。 5. 最后,你可以在Qt的主函数中创建一个Widget对象,并调用show函数显示窗口。你还可以使用Qt的事件循环来处理用户的交互操作。 这是一个简单的示例代码,用于演示如何在QtOpenCV实现实时视频录制。你可以根据自己的需求进行修改和扩展。 引用\[1\]中的recordscreen.h文件和引用\[2\]中的widget.h文件提供了一些关于录制视频和显示视频的类和函数的定义。引用\[3\]中的screenthread.h文件提供了一个用于在线程中运行录制视频的类的定义。你可以根据需要使用这些类和函数来实现你的录制视频功能。 #### 引用[.reference_title] - *1* *3* [QT + OPENCV实现录屏功能](https://blog.csdn.net/u013693952/article/details/103871763)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [[视觉实战案例]Qt+OpenCV实现USB摄像头监测移动物体并录制视频功能(帧差法)](https://blog.csdn.net/fengyaowuhui/article/details/124656844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值