本发明属于目标跟踪技术领域,具体涉及一种基于cortex系列多核处理器的目标跟踪系统实现方法。
背景技术:
视频目标跟踪是当今计算机视觉领域的前沿研究课题,广泛应用于智能交通、安防监控、军事应用、人机交互等众多领域。为此,嵌入式视频图像处理系统的实现也将成为研究人员关注的焦点,具有重要的学术意义和实用价值。
在运动目标跟踪方面,现有的跟踪方法主要分为五类:区域跟踪、边缘跟踪、特征跟踪、模型跟踪,以及混合跟踪。经典算法主要包括光流法、均值漂移、粒子滤波、特征点跟踪等。光流法需要附加假设模型来模拟运动场,且复杂耗时;均值漂移算法跟踪目标的颜色纹理和活动轮廓,无法准确跟踪颜色纹理单调或小尺寸的目标;粒子滤波适用于非线性跟踪,但是计算量大,容易陷入粒子匮乏和缺少多样性的问题;目前,结合特征点匹配和卡尔曼滤波的目标跟踪算法,可以有效解决实时性问题、遮挡问题、尺度变化问题,其综合性能较为优异。
现有较为成熟的算法移植硬件系统大致有两种:(1)基于fpga软核实现嵌入式的操作平台,如专利(一种基于fpga的背景差分法目标检测跟踪系统,201220109294.8)。该系统充分利用fpga现有的niosii技术,实现fpga内部嵌入式软核操作系统,以操作系统为依托完成算法移植,此种设计针对于并行算法有较好的实现效果。(2)基于dsp高性能信号处理器的算法实现,如专利(一种基于dsp的目标检测跟踪方法以及数字图像处理系统,201010121006.6)。利用dsp的高速处理性能以及内部集成的多个总线和硬件乘法器,可以快速处理算法运行过程中的累加和累乘,提高算法运行速度。
上述硬件系统实现尽管具有较好的算法移植效果,但依然存在一些不足。基于fpga软核实现的嵌入式操作平台,具有独特的并行执行能力,但是其并行接口的实现仍然是一个很大的技术难题;研究人员一直未能解决将串行算法快速转换成并行算法,尤其是当某些算法必须按照串行流程执行时,缺点显得更为突出;此外,基于fpga软核实现的嵌入式操作平台中软核本身存在执行速度慢的技术缺点,是该方法实现的另一个弊端。基于dsp的硬件实现在系统的管理和外部接口的处理上存在一定的不足:高速运行的dsp具有复杂的结构和多个独立的运行总线,难以提升系统主频,无法兼顾整个系统外设的运行管理,从而使得dsp在系统集成管理上存在一定的缺陷。
技术实现要素:
为了解决现有技术中目标跟踪实现的基于fpga软核实现的嵌入式操作平台中软核执行速度慢的技术缺点,以及基于dsp的硬件实现在系统的管理和外部接口的处理上的不足,本发明提供了一种依托于pandaboard(熊猫板)cortex系列多核处理器的目标跟踪系统实现方法。本发明要解决的技术问题通过以下技术方案实现:
一种基于cortex系列多核处理器的目标跟踪系统实现方法,包括以下步骤:
步骤1,获取视频,对视频进行离散化处理以及文件压缩处理;
步骤2,在windows平台上安装配置vs2010和opencv库,编程实现基于surf配准和kalman预测的目标跟踪算法;
步骤3,将pc端windows操作系统下的c程序移植到linux操作系统上,完成跨操作系统的程序移植;
步骤4,搭建所述目标跟踪算法实现的嵌入式系统基础平台;
步骤5,采用直接在主控板上编译、运行的方法,实现pc端所述目标跟踪算法的跨硬件平台的移植;
步骤6,优化gpu和cpu内存,合理分配任务,实现主控板熊猫板内部的arm核和dsp核的协同工作,保证目标跟踪的实时性。
进一步地,所述步骤2中目标跟踪算法的步骤为:
步骤一,手动选择目标模板并提取surf特征点集合;
步骤二,结合卡尔曼滤波预测目标的中心位置;
步骤三,在预测的目标的中心位置,确定目标搜索区域;
步骤四,在目标搜索区域内进行特征点配准;
步骤五,自适应地根据匹配点的尺度关系更新目标搜索区域,对目标进行持续跟踪;
步骤六,当匹配点数过少时,对整帧图像进行surf特征点配准,实现目标短暂或全遮挡后的再次跟踪;
步骤七,若连续多帧的配点数均小于阈值,则目标跟踪失败,对目标跟踪进行修正;修正后若配点数大于阈值,则重复步骤五;若修正后若配点数小于阈值,则重复步骤六。
进一步地,所述目标跟踪算法的具体实现步骤为:
步骤2a、人工选择运动目标作为模板,提取surf特征点集合(x0i,y0i),记录模板尺寸为
步骤2b、利用卡尔曼滤波器对目标模板的中心位置进行预测,其状态方程为:
其中:
步骤2c、在预测的中心位置周围,确定第k帧的目标搜索区域为
步骤2d、在目标搜索区域内,与目标模板的surf特征点进行匹配,获得n个配准特征点(xki,yki);
步骤2e、若匹配点数n大于阈值,则配准成功,确定第k帧的匹配目标相对于目标模板的尺度系数λ;确定匹配目标区域的尺寸
步骤2f、若n小于阈值,则第k帧目标跟踪失败,进行如下修正:将第k帧的卡尔曼预测目标中心位置
步骤2g、若连续多帧的n均小于阈值,则目标跟踪失败,进行如下修正:将目标搜索区域取为整幅图像,与目标模板的surf特征点进行匹配,若匹配点数n大于阈值,则重复步骤2e;若n小于阈值,则重复步骤2f。
进一步地,所述步骤3具体包括如下步骤:
步骤3a、在pc端使用u盘启动安装linux操作系统,在linux操作系统上安装gcc编译器和linux版本的opencv库,调试通过;
步骤3b、将windows中的程序通过磁盘共享复制到linux操作系统,针对于两者中c和开源库的不同,修改相应的函数,将程序修改为linux版本;
步骤3c、在编写makefile编译链接脚本的时候,运用gcc-c$<`pkg-configopencv--libs--cflagsopencv`实现linux系统中opencv库的链接,运用脚本编译整个工程,运行可执行文件观察实验效果。
进一步地,所述步骤4具体包括如下步骤:
步骤4a、准备好硬件设备,包括熊猫板、电源适配器、usb鼠标和键盘、hdmi转接线、vga信号传输线和液晶显示屏、较大容量sd卡和u盘;
步骤4b、裁剪linux操作系统,在pc端创建虚拟机,在linux开源社区下载好完整的内核镜像,利用samba服务器共享放到pc端虚拟机上;
步骤4c、进入内核目录,启动选择操作界面,手动勾选实现linux操作系统的裁剪任务;
步骤4d、编译链接,生成新的镜像文件;通过samba服务器共享到windows操作系统,利用读卡器插入sd卡,配合windows操作系统的平台软件win32diskimager,快速制作sd卡系统启动装置,完成软件系统准备;
步骤4e、给熊猫板上电,启动sd卡中的linux操作系统,插入互联网端口,测试网络通断,为后期gcc工具的安装和opencv库的在线更新,提供网络支撑;
步骤4f、利用linux的磁盘管理方法,对磁盘的存储进行移动规划,将磁盘第二分区的大量空闲区域经过处理后划分给主分区,实现sd卡内部系统中/home存储空间扩容,为后期开源库的安装、工程文件的转移、视频序列的存放做好容量准备。
进一步地,所述步骤5具体包括如下步骤:
步骤5a、连接网线端口,在板载linux系统上在线安装gcc编译工具和opencv库,进行功能测试,保证开源库的正确安装;
步骤5b、将pc端编译好的目标跟踪算法工程文件、视频序列和makefile编译链接脚本拷贝到u盘;
步骤5c、将u盘插入板载usb接口,使用mount-tvfat/dev/sdb/mnt/udisk/命令挂载u盘,并将u盘中文件拷贝到板载系统中的用户目录下面;
步骤5d、根据程序位置存放相应的视频序列,通过命令终端回到工程资源文件夹下面,执行make指令,生成可执行文件match;
步骤5e、使用./match,运行可执行文件,观察算法的运行效果。
进一步地,所述步骤6具体包括如下步骤:
步骤6a、在命令行输入config命令启动配置界面,选择memory_split选项,回车进行gpu和cpu的内存重新分配,给gpu分配较大内存,保障算法的快速处理,从而实现运动目标的实时跟踪;
步骤6b、合理调度任务,实现熊猫板内部的arm内核和dsp核的协同工作,实现对应任务的高效运行。在外部ram空间中,将arm核分配到低端地址,将dsp核分配到高端地址,中间预留数据交互的空间;
步骤6c、在程序分配的时候,在arm核中实现精简的api接口和对应的库;在dsp核的算法调用层,提供dsp算法接口封装规范,使得所有的算法经过简单的配置就可以编译到dsp的可执行程序中;
步骤6d、应用程序通过codecengine的api接口来下载dsp代码,调用dsp端的封装好的算法,以及进行arm核和dsp核的通信。
与现有技术相比,本发明的有益效果:
1.本发明的方法依托于高性能的pandaboard(熊猫板)cortex系列多核处理器,通过步骤6合理分配内部双cortex-a9核,dsp核以及双cortex-m3的协处理器,保证了目标跟踪算法的流畅运行;
2.本发明中的方法步骤2结合特征点匹配和卡尔曼滤波的目标跟踪算法,对目标尺度变化、旋转、局部遮挡和短暂全遮挡具有很好的适应性,实现实时稳定的锁定目标跟踪,保证了目标跟踪系统可以在复杂运动背景下,能够实时准确跟踪运动目标,而且对目标尺度变化、旋转、局部遮挡和短暂全遮挡具有很好的适应性;同时,与现有技术中的目标跟踪算法又有所区别,本发明采用的目标跟踪算法,配合本发明的目的,更强调速度和独立性系统的实现;
3.本发明的方法步骤5采用直接在主控板上编译、运行的方法,实现pc端所述目标跟踪算法的跨硬件平台的移植,区别于现有技术中在pc端进行编译、运行开源库,在主控板上可直接实现图像算法与开源库的链接,更有利于目标跟踪系统的实现;
4.本发明的方法搭建的目标跟踪系统,是将目标跟踪算法在独立的单板器件上运行,打破了传统的图像算法对pc端的依赖,实现了嵌入式的图像处理,使得算法具有更好的灵活性和拓展性;为后续应用于无人机跟踪平台,提供了更加方便灵活的接口;解决了目标跟踪实现的基于fpga软核实现的嵌入式操作平台中软核执行速度慢的技术缺点,以及基于dsp的硬件实现在系统的管理和外部接口的处理上的不足的问题。
附图说明
图1是本发明的整个系统实现的流程图;
图2是本发明的目标跟踪算法的流程图;
图3是本发明采用的熊猫板的结构示意图;
图4是本发明的硬件系统的结构示意图;
图5是本发明的目标跟踪算法实验结果图。
具体实施方式
下面结合具体实施例对本发明做进一步详细的描述,但本发明的实施方式不限于此。
参照图1,本发明的整体系统流程的具体步骤如下:
步骤1,获取视频序列素材;
本系统利用parrot无人机获取实验需要的视频素材,便于扩展系统应用于基于无人机等实时目标跟踪系统。
步骤1a、在android手机或者ios手机上安装操作无人机的app软件(官方的ar.freeflight),手机保证足量的存储空间(2g为宜),为存储视频做准备;
步骤1b、启动无人机,通过手机操控无人机的飞行,调整其飞行姿态,利用无人机自带的拍摄功能,获取地面运动目标的视频;
步骤1c、利用matlab工具对视频进行离散处理,获取逐帧图像。
步骤2,利用c语言结合opencv库,对目标跟踪算法进行windows平台上的编程实现;
参照图2,目标跟踪算法的步骤为:
步骤一,手动选择目标模板并提取surf特征点集合;
步骤二,结合卡尔曼滤波预测目标的中心位置;
步骤三,在预测的目标的中心位置,确定目标搜索区域;
步骤四,在目标搜索区域内进行特征点配准;
步骤五,自适应地根据匹配点的尺度关系更新目标搜索区域,对目标进行持续跟踪;
步骤六,当匹配点数过少时,对整帧图像进行surf特征点配准,实现目标短暂或全遮挡后的再次跟踪;
步骤七,若连续多帧的配点数均小于阈值,则目标跟踪失败,对目标跟踪进行修正;修正后若配点数大于阈值,则重复步骤五;若修正后若配点数小于阈值,则重复步骤六。
具体实现步骤为:
步骤2a、人工选择运动目标作为模板,提取surf特征点集合(x0i,y0i),记录模板尺寸为
步骤2b、利用卡尔曼滤波器对目标模板的中心位置进行预测,其状态方程为:
其中:
步骤2c、在预测的中心位置周围,确定第k帧的目标搜索区域为
字步骤2d、在目标搜索区域内,与目标模板的surf特征点进行匹配,获得n个配准特征点(xki,yki);
步骤2e、若匹配点数n大于阈值,则配准成功,确定第k帧的匹配目标相对于目标模板的尺度系数λ;确定匹配目标区域的尺寸
步骤2f、若n小于阈值,则第k帧目标跟踪失败,进行如下修正:将第k帧的卡尔曼预测目标中心位置
步骤2g、若连续多帧的n均小于阈值,则目标跟踪失败,进行如下修正:将目标搜索区域取为整幅图像,与目标模板的surf特征点进行匹配,若匹配点数n大于阈值,则重复步骤2e;若n小于阈值,则重复步骤2f。
步骤3,pc端平台上算法的跨操作系统移植;
步骤3a、在pc端使用u盘启动安装linux操作系统,在linux操作系统上安装gcc编译器和linux版本的opencv库,调试通过;
步骤3b、将windows中的程序通过磁盘共享复制到linux操作系统,针对于两者中c和开源库的不同,修改相应的函数,将程序修改为linux版本;
步骤3c、在编写makefile编译链接脚本的时候,运用gcc-c$<`pkg-configopencv--libs--cflagsopencv`实现linux系统中opencv库的链接,运用脚本编译整个工程,运行可执行文件观察实验效果;
步骤4,上述目标跟踪算法实现的嵌入式系统基础平台的搭建;
参照图3,本系统使用熊猫板的部分外设,主要包括德州仪器的主控芯片omap4430处理器和外部接口如供电电路、晶振复位电路、usb接口、有线网卡、hdmi和vga接口、sd卡接口、指示灯led等,完成本系统的硬件准备。
步骤4a、如图4所示,准备好硬件设备,包括熊猫板、电源适配器(使用5v/2a)、usb鼠标和键盘、hdmi转接线、vga信号传输线和液晶显示屏、较大容量sd卡和u盘(此处选择8g内存卡);
步骤4b、裁剪linux操作系统,在pc端创建虚拟机(选用linux版本为fedora14),在linux开源社区下载好完整的内核镜像,利用samba服务器共享放到pc端虚拟机上;
步骤4c、进入内核目录,启动选择操作界面,手动勾选实现linux(确保高效精简内核)操作系统的裁剪任务;
步骤4d、编译链接,生成新的镜像文件;通过samba服务器共享到windows操作系统,利用读卡器插入sd卡,配合windows操作系统的平台软件win32diskimager,快速制作sd卡系统启动装置,完成软件系统准备;
步骤4e、给熊猫板上电,启动sd卡中的linux操作系统,插入互联网端口,测试网络通断,为后期gcc工具的安装和opencv库的在线更新,提供网络支撑;
步骤4f、利用linux的磁盘管理方法,对磁盘的存储进行移动规划,将磁盘第二分区的大量空闲区域经过处理后划分给主分区,实现sd卡内部系统中/home存储空间扩容,为后期开源库的安装、工程文件的转移、视频序列的存放做好容量准备;
步骤5,采用直接在主控板上编译、运行的方法,实现pc端算法的跨硬件平台的移植实现;
步骤5a、连接网线端口,在板载linux系统上在线安装gcc编译工具和opencv库,进行功能测试,保证开源库的正确安装;
步骤5b、将pc端编译好的目标跟踪算法工程文件、视频序列和makefile编译链接脚本拷贝到u盘;
步骤5c、将u盘插入板载usb接口,使用mount-tvfat/dev/sdb/mnt/udisk/命令挂载u盘,并将u盘中文件拷贝到板载系统中的用户目录下面;
步骤5d、根据程序位置存放相应的视频序列,通过命令终端回到工程资源文件夹下面,执行make指令,生成可执行文件match;
步骤5e、使用./match,运行可执行文件,观察算法的运行效果。
步骤6,任务优化,合理分配工作,提高算法运行的实时性;
步骤6a、在命令行输入config命令启动配置界面,选择memory_split选项,回车进行gpu和cpu的内存重新分配,给gpu分配较大内存,保障算法的快速处理,从而实现运动目标的实时跟踪;
步骤6b、合理调度任务,实现熊猫板内部的arm内核和dsp核的协同工作,实现对应任务的高效运行。在外部ram空间中,将arm核分配到低端地址,将dsp核分配到高端地址,中间预留数据交互的空间;
步骤6c、在程序分配的时候,在arm核中实现精简的api接口和对应的库;在dsp核的算法调用层,提供dsp算法接口封装规范,使得所有的算法经过简单的配置就可以编译到dsp的可执行程序中;
步骤6d、应用程序通过codecengine的api接口来下载dsp代码,调用dsp端的封装好的算法,以及进行arm核和dsp核的通信。
本发明的效果可通过以下检测实验进行说明。
图5是本发明的目标跟踪算法实验结果,目标的位置用矩形框框出,可以看出,本发明可以准确预测遮挡目标可能出现的区域;当目标再次出现可再次准确跟踪到目标。从图5可以看出,本发明对目标尺度变化、旋转、局部遮挡和短暂全遮挡具有很好的适应性,能实现实时稳定的锁定目标跟踪。
在本发明的方法搭建的系统样机工作时,在熊猫板的控制下,利用外设人机交互设备,完成了目标跟踪算法的硬件实现,跟踪性能保持一致,运行速率获得很大提升。测试发现,在熊猫板主频1.3ghz,内存1gb的情况下,本发明的目标跟踪算法对400*300像素的视频序列能达到更好的实时目标跟踪处理。
本发明的方法依托于高性能的pandaboard(熊猫板)cortex系列多核处理器,通过步骤6合理分配内部双cortex-a9核,dsp核以及双cortex-m3的协处理器,保证了目标跟踪算法的流畅运行;本发明中的方法步骤2结合特征点匹配和卡尔曼滤波的目标跟踪算法,对目标尺度变化、旋转、局部遮挡和短暂全遮挡具有很好的适应性,实现实时稳定的锁定目标跟踪,保证了目标跟踪系统可以在复杂运动背景下,能够实时准确跟踪运动目标,而且对目标尺度变化、旋转、局部遮挡和短暂全遮挡具有很好的适应性;同时,与现有技术中的目标跟踪算法又有所区别,本发明采用的目标跟踪算法,配合本发明的目的,更强调速度和独立性系统的实现;本发明的方法步骤5采用直接在主控板上编译、运行的方法,实现pc端所述目标跟踪算法的跨硬件平台的移植,区别于现有技术中在pc端进行编译、运行开源库,在主控板上可直接实现图像算法与开源库的链接,更有利于目标跟踪系统的实现。
另外,本发明的方法搭建的目标跟踪系统,是将目标跟踪算法在独立的单板器件上运行,打破了传统的图像算法对pc端的依赖,实现了嵌入式的图像处理,使得算法具有更好的灵活性和拓展性;为后续应用于无人机跟踪平台,提供了更加方便灵活的接口;解决了目标跟踪实现的基于fpga软核实现的嵌入式操作平台中软核执行速度慢的技术缺点,以及基于dsp的硬件实现在系统的管理和外部接口的处理上的不足的问题。
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。