基于安卓系统的摄像头数据处理方法、装置和车载设备与流程

文档序号:18561894发布日期:2019-08-30 23:24阅读:185来源:国知局
基于安卓系统的摄像头数据处理方法、装置和车载设备与流程

本发明涉及图像数据处理技术领域,尤其涉及一种基于安卓系统的摄像头数据处理方法、装置和车载设备。



背景技术:

在目前的车载系统中,车辆大多采用安卓android系统,而安卓系统中的cpu是负责获取摄像头的图像数据并进行处理,然而车载安卓系统中,每增加一个摄像头,cpu就需要多运行一个线程,而开启线程使得cpu处理的数据量很大,占用了过多的cpu,因此,安卓系统采用限制摄像头的个数,也就是说目前的车载安卓系统为防止cpu负载太多,影响性能,无法支持多个摄像头的接入。



技术实现要素:

本发明旨在至少在一定程度上解决相关技术中的技术问题之一。

为此,本发明的第一个目的在于提出一种基于安卓系统的摄像头数据处理方法,通过cpu和gpu协同合作进行图像数据的处理,充分发挥了gpu的并行处理能力,减轻了cpu的负载,实现了多个摄像头的接入。

本发明的第二个目的在于提出一种基于安卓系统的摄像头数据处理装置。

本发明的第三个目的在于提出一种车载设备。

本发明的第四个目的在于提出一种计算机可读存储介质。

为达上述目的,本发明第一方面实施例提出了一种基于安卓系统的摄像头数据处理方法,包括:

获取视窗的界面信息;

当获取到所述界面信息时,创建在中央处理器cpu运行的第一线程,以及根据所述界面信息,创建在图像处理器gpu运行的第二线程;

运行所述第一线程,以从摄像头获取采集到的图像数据,并将所述图像数据传递至所述第二线程;

运行所述第二线程,以根据所述界面信息对所述图像数据进行渲染处理,得到显示在所述视窗的图像。

为达上述目的,本发明第二方面实施例提出了一种基于安卓系统的摄像头数据处理装置,包括:

获取模块,用于获取视窗的界面信息;

创建模块,用于当获取到所述界面信息时,创建在cpu运行的第一线程,以及根据所述界面信息,创建在gpu运行的第二线程;

第一运行模块,用于运行所述第一线程,以从摄像头获取采集到的图像数据,并将所述图像数据传递至所述第一线程;

第二运行模块,用于运行所述第二线程,以根据所述界面信息对所述图像数据进行渲染处理,得到显示在所述视窗的图像。

为达上述目的,本发明第三方面实施例提出了一种车载设备,包括多个摄像头、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器与所述多个摄像头连接,所述处理器执行所述程序时,实现如第一方面所述的基于安卓系统的摄像头数据处理方法。

为了实现上述目的,本发明第四方面实施例提出了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现如第一方面所述的基于安卓系统的摄像头数据处理方法。

本发明实施例所提供的技术方案,可以包含如下的有益效果:

获取视窗的界面信息,当获取到界面信息时,创建在中央处理器cpu运行的第一线程,以及根据界面信息,创建在图像处理器gpu运行的第二线程,运行第一线程,以从摄像头获取采集到的图像数据,并将图像数据传递至第二线程,运行第二线程,以根据界面信息对图像数据进行渲染处理,得到显示在视窗的图像,通过cpu和gpu的协同合作进行图像数据的处理,充分发挥了gpu的并行处理能力,减轻了cpu的负载,实现了多个摄像头的接入。

本发明附加的方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明的实践了解到。

附图说明

本发明上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:

图1为本发明实施例所提供的一种基于安卓系统的摄像头数据处理方法的流程示意图;

图2为本发明实施例提供的一种基于安卓系统的摄像头数据处理装置的结构示意图;

图3为本发明实施例所提供的一种车载设备的结构示意图;以及

图4示出了适于用来实现本申请实施方式的示例性车载设备的框图。

具体实施方式

下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,旨在用于解释本发明,而不能理解为对本发明的限制。

下面参考附图描述本发明实施例的基于安卓系统的摄像头数据处理方法、装置和车载设备。

图1为本发明实施例所提供的一种基于安卓系统的摄像头数据处理方法的流程示意图。

如图1所示,该方法包括以下步骤:

步骤101,获取视窗的界面信息。

本发明实施例中,视窗的个数为1个,是运行在cpu的应用软件创建的,用于多个摄像头的图像显示。

具体地,通过与应用软件之间的接口,例如java的本地接口(javanativeinterface,jin),获取应用软件所创建的视窗的界面信息,具体可以是获取视窗的对象,例如为object对象,对对象进行解析,得到界面信息。其中,界面信息包括视窗的显示位置和显示尺寸,视窗的显示位置和显示尺寸,是由应用软件在创建视窗时确定的,不同的应用软件创建的视窗对应的显示位置和显示尺寸可以是不同的,也可以是相同的。

步骤102,当获取到界面信息时,创建在中央处理器cpu运行的第一线程,以及根据界面信息,创建在图像处理器gpu运行的第二线程。

本发明实施例中,是通过中央处理器cpu和图像处理器gpu协同来处理获取的多个摄像头的图像数据,来实现多个摄像头的接入,具体地,在获取到界面信息时,创建在cpu运行的第一线程,以及根据界面信息创建在gpu运行的第二线程,也就是说通过在cpu中运行的第一线程和在gpu中运行的第二线程来协同处理,充分发挥了gpu的并行处理的能力,在不增加cpu负载的前提下,实现对接入的多个摄像头的图像数据的处理。

步骤103,运行第一线程,以从摄像头获取采集到的图像数据,并将图像数据传递至第二线程。

具体地,运行在cpu中创建的第一线程,其中,第一线程,用于通过与摄像头之间的虚拟通道获取图像数据,其中,虚拟通道与摄像头之间一一对应,通过设置多个虚拟通道以实现并行获取多个摄像头的图像数据,并通过开放图形库opengl接口将图像数据从cpu中复制到gpu,得到存储地址,并将存储地址发送至第二线程,以使第二线程根据存储地址读取图像数据,从而实现在gpu中对图像数据进行处理。

步骤104,运行第二线程,以根据界面信息对图像数据进行渲染处理,得到显示在视窗的图像。

具体地,运行在gpu中创建的第二线程,第二线程,用于根据图像数据进行色域转换和拼接处理后,对处理后的图像数据进行渲染得到处于显示位置且符合显示尺寸的图像,也就是说在gpu中运行的第二线程将获取到的图像数据处理完成后,该数据可以直接用于在显示器上显示,也就是说不需要应用软件获取图像数据再与视窗的界面信息合成显示了,由于应用软件是运行在cpu中的,这样也就避免了cpu复制并处理获取得到的图像数据的过程,降低了cpu的负载,实现了多个摄像头的接入。

本发明实施例的基于安卓系统的摄像头数据处理方法中,获取视窗的界面信息,当获取到界面信息时,创建在中央处理器cpu运行的第一线程,以及根据界面信息,创建在图像处理器gpu运行的第二线程,运行第一线程,以从摄像头获取采集到的图像数据,并将图像数据传递至第二线程,运行第二线程,以根据界面信息对图像数据进行渲染处理,得到显示在视窗的图像,通过cpu和gpu的协同合作进行图像数据的处理,充分发挥了gpu的并行处理能力,减轻了cpu的负载,实现了多个摄像头的接入。

为了清楚说明上一实施例,本实施例以车载设备中根据获取的图像数据进行辅助驾驶场景为例,对上述的基于安卓系统的摄像头数据处理方法进行说明。

本实施例中,司机根据显示的多个摄像头的图像数据可以及时了解驾驶情况,提高行驶的安全性,本实施例中以接入的摄像头为4个为例,进行说明,具体地,通过与应用程序之间的jin接口,获取车载设备中运行的应用程序创建的要显示的视窗的对象,例如,目标object对象,其中,视窗为一个,用于同时显示接入的4个摄像头采集的图像,进而,对获取到的视窗的对象进行解析得到视窗对应的界面信息,界面信息包含了视窗的显示位置和显示尺寸,进而,在获取到界面信息时,创建在cpu中运行的第一线程,以及在gpu中运行的第二线程,运行第一线程,分别通过与4个摄像头之间一一对应的虚拟通道获取对应的图像数据,以实现并行获取4个摄像头的图像数据,并通过开放图形库opengl接口将4个摄像头的图像数据复制到gpu,得到存储地址,并将存储地址发送至gpu中运行的第二线程,运行的第二线程根据存储地址读取4个摄像头的图像数据,并根据获取到的4个摄像头的图像数据进行色域转换,作为一种可能的实现方式,利用着色器shader进行色域转换,例如把yuv422格式的图像数据转化为yuv420格式的图像数据,并根据视窗的界面信息,对色域转换完成后的4个摄像头的图像数据再进行拼接处理,在对4个摄像头的数据进行拼接处理时,作为一种可能的实现方式,可以对要在视窗中显示的4个摄像头的图像,采用4分屏的方式进行拼接,以实现在视窗的显示界面中实现4分屏显示;作为另一种可能的实现方式,也可以根据设置的接入摄像头的主次或优先级,对视窗中的显示区域进行划分,例如,优先级越高,在视窗中对应显示的区域则越大,同理,主摄像头的显示区域则可以大于次摄像头的显示区域,从而实现对要在视窗中显示的4个摄像头的数据进行拼接处理,以便于用户通过视窗进行查看时,可以快速获取得到重要的图像信息。

进一步,对拼接处理后的图像进行渲染,得到处于对应的显示位置且符合显示尺寸的图像,例如,拼接后进行4分屏显示,实现了通过cpu和gpu的协同合作来进行图像处理,通过gpu的并行处理能力,使得在不增加cpu负载的情况下,实现了多个摄像头的接入,以使得驾驶员可以获取得到不同视角的图像,实现了车载设备应用图像的处理,提高了车辆驾驶的安全性。

可选地,本实施例中的cpu和gpu可以是属于同一个处理器的,从而实现了,通过cpu和gpu的协同工作,在不增加硬件成本的情况下,实现多个摄像头的接入。

需要说明的是,应用程序是运行在cpu中的,应用程序创建的视窗的个数越少,cpu需要复制的视窗对应的图像数据则会越少,尤其是在接入的摄像头为高清摄像头的情况下,减低了cpu的负载,因此,本实施例中,视窗的个数为1个。需要理解的是,对视窗的对象进行解析得到的界面信息,还可以用来控制各个摄像头的输出,例如,摄像头的像素为200万像素,在一些应用场景下,可以减小摄像头的像素的输出,例如输出仅为30万像素,以满足实际应用场景的需求,不仅可以实现多个摄像头的接入,还可以控制多个摄像头的输出。

为了实现上述实施例,本发明还提出一种基于安卓系统的摄像头数据处理装置。

图2为本发明实施例提供的一种基于安卓系统的摄像头数据处理装置的结构示意图。

如图2所示,该装置包括:获取模块21、创建模块22、第一运行模块23和第二运行模块24。

获取模块21,用于获取视窗的界面信息。

创建模块22,用于当获取到界面信息时,创建在cpu运行的第一线程,以及根据界面信息,创建在gpu运行的第二线程。

第一运行模块23,用于运行第一线程,以从摄像头获取采集到的图像数据,并将图像数据传递至第二线程。

第二运行模块24,用于运行第二线程,以根据界面信息对图像数据进行渲染处理,得到显示在视窗的图像。

进一步地,在本发明实施例的一种可能的实现方式中,上述第一运行模块23,具体用于:

运行所述第一线程,其中,所述第一线程,用于通过与摄像头之间的虚拟通道获取所述图像数据,通过开放图形库opengl接口将所述图像数据复制到所述gpu,得到存储地址,并将所述存储地址发送至所述第二线程,以使所述第二线程根据所述存储地址读取所述图像数据,其中,所述虚拟通道与所述摄像头之间一一对应。

作为一种可能的实现方式,上述获取模块21,包括:获取单元。

获取单元,用于通过与应用软件之间的接口,获取所述应用软件所创建视窗的界面信息。

作为一种可能的实现方式,获取单元,具体用于:

获取视窗的对象,对所述对象进行解析,得到所述界面信息。

作为一种可能的实现方式,视窗的个数为一个,是运行在所述cpu的应用软件创建的,用于多个摄像头的图像显示。

作为一种可能的实现方式,界面信息包括视窗的显示位置和显示尺寸,上述第二运行模块24,具体用于:

运行所述第二线程,其中,所述第二线程,用于根据所述图像数据进行色域转换和拼接处理后,对处理后的图像数据进行渲染得到处于所述显示位置且符合所述显示尺寸的图像。

需要说明的是,前述对摄像头处理方法实施例的解释说明也适用于该实施例的摄像头处理装置,原理相同,此处不再赘述。

本发明实施例的基于安卓系统的摄像头数据处理装置中,获取视窗的界面信息,当获取到界面信息时,创建在中央处理器cpu运行的第一线程,以及根据界面信息,创建在图像处理器gpu运行的第二线程,运行第一线程,以从摄像头获取采集到的图像数据,并将图像数据传递至第二线程,运行第二线程,以根据界面信息对图像数据进行渲染处理,得到显示在视窗的图像,通过cpu和gpu的协同合作,减轻了cpu的负载,实现了多个摄像头的接入。

基于上述实施例,本发明实施例还提供了一种车载设备,包括多个摄像头、存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器与多个摄像头连接,处理器执行程序时,实现如前述方法实施例所述的基于安卓系统的摄像头数据处理方法。

在上一实施例的基础上,图3为本发明实施例所提供的一种车载设备的结构示意图,如图3所示,车载设备12还包括图像信号处理器26(imagesignalprocessor,isp),处理器27包括中央处理器cpu271和图像处理器gpu272,其中,isp26与多个摄像头25连接,isp26与处理器27之间设置有多个虚拟通道29,其中,虚拟通道29与摄像头25之间一一对应,处理器27中的cpu271通过与isp26之间的虚拟通道获取接入的多个摄像头25的图像数据。

需要说明的是,前述基于安卓系统的摄像头数据处理方法实施例的解释说明,也适用于本实施例的车载设备,原理相同,此处不再赘述。

基于上述实施例,图4示出了适于用来实现本申请实施方式的示例性车载设备的框图。图4显示的车载设备12仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图4所示,车载设备12以通用计算设备的形式表现。车载设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元27,系统存储器28,连接不同系统组件(包括系统存储器28和处理器27)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(industrystandardarchitecture;以下简称:isa)总线,微通道体系结构(microchannelarchitecture;以下简称:mac)总线,增强型isa总线、视频电子标准协会(videoelectronicsstandardsassociation;以下简称:vesa)局域总线以及外围组件互连(peripheralcomponentinterconnection;以下简称:pci)总线。

车载设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被车载设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(randomaccessmemory;以下简称:ram)30和/或高速缓存存储器32。车载设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如:光盘只读存储器(compactdiscreadonlymemory;以下简称:cd-rom)、数字多功能只读光盘(digitalvideodiscreadonlymemory;以下简称:dvd-rom)或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本申请各实施例的功能。

具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本申请所描述的实施例中的功能和/或方法。

车载设备12也可以与一个或多个外部设备14(例如键盘、显示器24、摄像头25等)通信,还可与一个或者多个使得用户能与该车载设备12交互的设备通信,和/或与使得该车载设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,车载设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(localareanetwork;以下简称:lan),广域网(wideareanetwork;以下简称:wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与车载设备12的其它模块通信。应当明白,尽管图中未示出,可以结合车载设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理器27通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现前述实施例中提及的方法。

为了实现上述实施例,本发明还提出一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时,实现如前述方法实施例所述的基于安卓系统的摄像头数据处理方法。

在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。

此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。在本发明的描述中,“多个”的含义是至少两个,例如两个,三个等,除非另有明确具体的限定。

流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现定制逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(ram),只读存储器(rom),可擦除可编辑只读存储器(eprom或闪速存储器),光纤装置,以及便携式光盘只读存储器(cdrom)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。如,如果用硬件来实现和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1