一种图像读取方法、装置及虚拟现实设备与流程

文档序号:14489331阅读:134来源:国知局
一种图像读取方法、装置及虚拟现实设备与流程

本发明涉及双目摄像头的图像读取技术领域,更具体地,本发明涉及一种图像读取方法、装置及虚拟现实设备。



背景技术:

虚拟现实(virtualreality,简称vr)是近年来出现的高新技术。虚拟现实技术将是支撑一个定性和定量相结合,感性认识和理性认识相结合的综合集成多维信息空间的关键技术。随着网络的速度的提升,基于虚拟现实技术的一个互联网时代正悄然走来,它将极大地改变人们的生产和生活方式。

现有的虚拟现实设备为了体感交互更多样化,会使用双摄像头模拟双眼的空间定位方法,确定手柄或者是头戴显示器上设置的发光器件在三维空间中的位置信息。虚拟现实设备每次通过双摄像头采集到左右两张图像(左右两个摄像头各采集一张),同一时刻获取到的两个图像为一组,应用程序需要成组获取图像来确定发光器件的位置。

应用层的空间定位算法使用两个摄像头采集到的图像进行计算时,需要做左右两个图像据的同步。如果上报过程中出现丢帧导致左右两个图像频率不一致,应用层在做空间定位时会出现差错。



技术实现要素:

本发明的一个目的是提供一种能够保证两个摄像头采集的图像同步上传的新的技术方案。

根据本发明的第一方面,提供了一种图像读取方法,包括:

将第一摄像头采集的第一左侧图像、及第二摄像头采集的第一右侧图像均存放在第一缓冲区内;

判断所述第一缓冲区内是否存储有同步的第一左侧图像和第一右侧图像,如是,则:

读取所述第一缓冲区内存储的图像;

将所述第一摄像头采集的第二左侧图像、及所述第二摄像头采集的第二右侧图像存放在第二缓冲区内;

判断所述第二缓冲区内是否存储有同步的第二左侧图像和第二右侧图像,如是,则:

读取所述第二缓冲区内存储的图像。

可选的是,所述判断所述第一缓冲区内是否存储有同步的第一左侧图像和第一右侧图像的步骤包括:

判断所述第一左侧图像和所述第一右侧图像的采集时刻之间的时间差是否小于预先设定的第一阈值,如是,则判定所述第一左侧图像和所述第一右侧图像同步。

可选的是,所述判断所述第二缓冲区内是否存储有同步的第二左侧图像和第二右侧图像的步骤包括:

判断所述第二左侧图像和所述第二右侧图像的采集时刻之间的时间差是否小于预先设定的第二阈值,如是,则判定所述第二左侧图像和所述第二右侧图像同步。

可选的是,所述图像读取方法还包括:

所述读取所述第一缓冲区内存储的图像之前还包括:删除所述第一缓冲区内不同步的第一左侧图像和第一右侧图像;

所述读取所述第二缓冲区内存储的图像之前还包括:删除所述第二缓冲区内不同步的第二左侧图像和第二右侧图像。

根据本发明的第二方面,提供了一种图像读取装置,包括:

第一存放模块,用于将第一摄像头采集的第一左侧图像、及第二摄像头采集的第一右侧图像均存放在第一缓冲区内;

第一判断模块,用于判断所述第一缓冲区内是否存储有同步的第一左侧图像和第一右侧图像;

第一读取模块,用于在所述第一判断模块的判断结果为是的情况下,读取所述第一缓冲区内存储的图像;

第二存放模块,用于将所述第一摄像头采集的第二左侧图像、及所述第二摄像头采集的第二右侧图像存放在第二缓冲区内;

第二判断模块,用于判断所述第二缓冲区内是否存储有同步的第二左侧图像和第二右侧图像;以及,

第二读取模块,用于在所述第二判断模块的判断结果为是的情况下,读取所述第二缓冲区内存储的图像。

可选的是,所述第一判断模块还用于:

判断所述第一左侧图像和所述第一右侧图像的采集时刻之间的时间差是否小于预先设定的阈值,如是,则判定所述第一左侧图像和所述第一右侧图像同步。

可选的是,所述第二判断模块还用于:

判断所述第二左侧图像和所述第二右侧图像的采集时刻之间的时间差是否小于预先设定的第二阈值,如是,则判定所述第二左侧图像和所述第二右侧图像同步。

可选的是,所述图像读取装置还包括:

第一删除模块,用于删除所述第一缓冲区内不同步的第一左侧图像和第一右侧图像;

第二删除模块,用于删除所述第二缓冲区内不同步的第二左侧图像和第二右侧图像。

根据本发明的第三方面,提供了一种虚拟现实设备,包括根据本发明第二方面所述的图像读取装置。

根据本发明的第四方面,提供了一种虚拟现实设备,包括存储器和处理器,所述存储器用于存储指令,所述指令用于控制所述处理器进行操作以执行根据本发明第一方面所述的图像读取方法。

本发明的一个有益效果在于,通过本发明的图像读取方法,就可以保证应用程序读取的每一对图像都是同步采集的,避免出现由于图像不同步导致的定位错误的问题。而且,缓冲区内每存储一对同步的左侧图像和右侧图像,就会读取这一对图像,可以使得缓冲区内存储的图像较少,可以减小图像的存储与读取之间的时间延迟。

通过以下参照附图对本发明的示例性实施例的详细描述,本发明的其它特征及其优点将会变得清楚。

附图说明

被结合在说明书中并构成说明书的一部分的附图示出了本发明的实施例,并且连同其说明一起用于解释本发明的原理。

图1为根据本发明一种图像读取方法的一种实施方式的流程图;

图2为根据本发明一种图像读取装置的一种实施结构的方框原理图;

图3为根据本发明一种图像读取装置的另一种实施结构的方框原理图;

图4为根据本发明一种虚拟现实设备的一种实施结果的方框原理图。

具体实施方式

现在将参照附图来详细描述本发明的各种示例性实施例。应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本发明的范围。

以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本发明及其应用或使用的任何限制。

对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。

在这里示出和讨论的所有例子中,任何具体值应被解释为仅仅是示例性的,而不是作为限制。因此,示例性实施例的其它例子可以具有不同的值。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。

本发明的实施例中涉及的虚拟现实设备包括两个摄像头,这两个摄像头在使用过程中,如果用户正对这两个摄像头,那么,这两个摄像头相对于用户分别设置在左侧和右侧,设置在左侧的为左摄像头,左摄像头采集的图像为左侧图像;设置在右侧的为右摄像头,右摄像头采集的图像为右侧图像。

图1为根据本发明一种图像读取方法的一种实施方式的流程图。

根据图1所示,该图像读取方法包括以下步骤:

步骤s110,将第一摄像头采集的第一左侧图像、及第二摄像头采集的第一右侧图像均存放在第一缓冲区内。

其中,第一摄像头为采集左侧图像的摄像头,第二摄像头为采集右侧图像的摄像头,第一左侧图像和第一右侧图像是存放在第一缓冲区内的左侧图像和右侧图像。第一缓冲区可以是在虚拟现实设备的内存中建立的用于存放图像数据的存储空间。

具体的,将第一左侧图像和第一右侧图像存放在第一缓冲区内的步骤是在hal层(硬件抽象层)中执行的,hal层中第一左侧图像和第一右侧图像的获取方式是以回调函数的形式从驱动层中获取的。

步骤s120,判断第一缓冲区内是否存储有同步的第一左侧图像和第一右侧图像,如是,则执行步骤s130,如否,则继续执行步骤s110。

具体的,在第一缓冲区内每存放一张第一图像(可以是第一左侧图像或者第一右侧图像),就执行一次步骤s120,以保证第一缓冲区内至多存放一对同步的第一左侧图像和第一右侧图像。

进一步地,执行步骤s120的具体方法可以是判断第一左侧图像的采集时刻和第一右侧图像的采集时刻之间的时间差是否小于预先设定的阈值,如是,则判定第一左侧图像和第一右侧图像同步。

步骤s130,读取第一缓冲区内存储的图像。

具体的,是应用程序读取第一缓冲区内存储的一对第一图像,包括一张第一左侧图像和一张第一右侧图像,并根据读取的第一左侧图像和第一右侧图像进行发光器件的空间定位。

步骤s140,将第一摄像头采集的第二左侧图像、及第二摄像头采集的第二右侧图像均存放在第二缓冲区内。

其中,第二左侧图像和第二右侧图像为存放在第二缓冲区域内的左侧图像和右侧图像。步骤s130也是在hal层中执行的,hal层中第二图像(包括第二左侧图像和第二右侧图像)的获取方式与第一图像(包括第一左侧图像和第一右侧图像)的获取方式相同。第二缓冲区可以是在虚拟现实设备的内存中建立的用于存放图像数据的存储空间。

步骤s150,判断第二缓冲区内是否存储有同步的第二左侧图像和第二右侧图像,如是,则执行步骤s160,如否,则继续执行步骤s140。

在第二缓冲区内每存放一张第二图像(可以是第二左侧图像或者第二右侧图像),就执行一次步骤s150,以保证第二缓冲区内至多存放一对同步的第二左侧图像和第二右侧图像。这样,还可以进一步节省内存空间。

执行步骤s150的具体方法可以是判断第二左侧图像的采集时刻和第二右侧图像的采集时刻之间的时间差是否小于预先设定的阈值,如是,则判定第二左侧图像和第二右侧图像同步。

步骤s160,读取第二缓冲区内存储的图像。

具体的,是应用程序读取第二缓冲区内存储的一对第二图像,包括一张第二左侧图像和一张第二右侧图像,并根据读取的第一左侧图像和第一右侧图像进行发光器件的空间定位。

由于在执行完步骤s130之后,应用程序读取的是第一缓冲区域内的第一图像,那么,为了保证应用程序下次读取的图像为同步的左侧图像和右侧图像,可以是将未同步的第二左侧图像和第二右侧图像存放在第二缓冲区内。待第二缓冲区内存放有同步的第二左侧图像和第二右侧图像时,再读取第二缓冲区内的图像。

这样,通过本发明的图像读取方法,就可以保证应用程序读取的每一对图像都是同步采集的,避免出现由于图像不同步导致的定位错误的问题。而且,缓冲区内每存储一对同步的左侧图像和右侧图像,就会读取这一对图像,可以使得缓冲区内存储的图像较少,可以减小图像的存储与读取之间的时间延迟。

在本发明的一个具体实施例中,缓冲区内存放的左侧图像可以有一张或者多张,存放的右侧图像也可以有一张或者多张。hal层是使用两个线程分别获取左侧图像和右侧图像的,而且,要将两个摄像头同时采集的左侧图像和右侧图像在hal层进行同步。但是,对于同时采集的左侧图像和右侧图像,可能会由于设备性能等问题导致存在存放至缓冲区内的时刻不同,或者出现左侧图像或者右侧图像未成功存放至缓冲区内的问题,如果读取的左侧图像和右侧图像不同步,在根据左侧图像和右侧图像确定发光器件位置时会出现差错。本发明的实施例中提到的左侧图像包括第一左侧图像和第二左侧图像,右侧图像包括第一右侧图像和第二右侧图像,缓冲区包括第一缓冲区和第二缓冲区。

在此基础上,在执行步骤s130之前还可以删除第一缓冲区内不同步的第一左侧图像和第一右侧图像。在执行步骤s160之前还可以删除第二缓冲区内不同步的第二左侧图像和第二右侧图像。

例如,第一摄像头在第一时刻采集了第一左侧图像1,第二摄像头在第一时刻采集了第一右侧图像1,但是,如果第一左侧图像1存放在了第一缓冲区内,而第一右侧图像1丢失未能存放至第一缓冲区内,将会再将第一摄像头在第二时刻采集的第一左侧图像2、及第二摄像头在第二时刻采集了第一右侧图像2存放至第一缓冲区内,可以判断出第一左侧图像2的采集时刻与第一右侧图像2的采集时刻相同,或者第一左侧图像2的采集时刻与第一右侧图像2的采集时刻之间的时间差小于阈值,那么,则可以判定第一左侧图像2与第一右侧图像2同步,那么,则在第一缓冲区内删除第一左侧图像1,并执行步骤s120。

再例如,第一摄像头在第三时刻采集了第二左侧图像3,第二摄像头在第三时刻采集了第二右侧图像3,但是,如果第二左侧图像3存放在了第二缓冲区内,而第二右侧图像3丢失未能存放至第二缓冲区内,将会再将第二摄像头在第四时刻采集的第二左侧图像4、及第四摄像头在第四时刻采集的第二右侧图像4存放至第二缓冲区内,可以判断出第二左侧图像4的采集时刻与第二右侧图像4的采集时刻相同,或者第二左侧图像4的采集时刻与第二右侧图像4的采集时刻之间的时间差小于阈值,那么,则可以判定第二左侧图像4与第二右侧图像4同步,那么,则在第二缓冲区内删除第二左侧图像3,并执行步骤s140。

在本发明的一个具体实施例中,摄像头架构mmcamera位于hal层,是高通平台的摄像头架构,本实施例的图像读取方法在hal层对左侧图像数据和右侧图像数据进行同步。摄像头架构mmcamera从驱动接收左侧图像和右侧图像的线程是生产者producter,向缓冲区buffer写数据,即将左侧图像和右侧图像存放在缓冲区内。摄像头架构mmcamera向上层上报左侧图像和右侧图像的线程是消费者consumer,从缓冲区buffer读数据,即读取缓冲区的图像。

具体的,在生产者producter指向第一缓冲区buffer1,消费者consumer指向空的情况下,如果生产者线程接收到同步的左侧图像和右侧图像,调整生产者producter指向第二缓冲区buffer2,调整消费者consumer指向第一缓冲区buffer1,通知消费者线程。消费者线程上报consumer指向的数据,之后消费者consumer置空。

与上述图像读取方法相对应的,本发明还提供了一种图像读取装置。图2为根据本发明一种图像读取装置的一种实施结构的方框原理图。

根据图2所示,该图像读取装置包括第一存放模块210、第一判断模块220、第一读取模块230、第二存放模块240、第二判断模块250和第二读取模块260。

上述第一存放模块210用于将第一摄像头采集的第一左侧图像、及第二摄像头采集的第一右侧图像均存放在第一缓冲区内。

上述第一判断模块220用于判断第一缓冲区内是否存储有同步的第一左侧图像和第一右侧图像。

上述第一读取模块230用于在第一判断模块220的判断结果为是的情况下,读取第一缓冲区内存储的图像。

上述第二存放模块240用于将第一摄像头采集的第二左侧图像、及第二摄像头采集的第二右侧图像存放在第二缓冲区内。

上述第二判断模块250用于判断第二缓冲区内是否存储有同步的第二左侧图像和第二右侧图像。

上述第二读取模块260用于在第二判断模块250的判断结果为是的情况下,读取第二缓冲区内存储的图像。

进一步地,第一判断模块220还用于判断第一左侧图像和第一右侧图像的采集时刻之间的时间差是否小于预先设定的阈值,如是,则判定第一左侧图像和第一右侧图像同步。第二判断模块250还用于判断第二左侧图像和第二右侧图像的采集时刻之间的时间差是否小于预先设定的阈值,如是,则判定第二左侧图像和第二右侧图像同步。

在此基础上,如图3所示,该图像读取装置还包括第一删除模块310和第二删除模块320,该第一删除模块310用于删除第一缓冲区内不同步的第一左侧图像和第一右侧图像;该第二删除模块320用于删除第二缓冲区内不同步的第二左侧图像和第二右侧图像。

本发明还提供了一种虚拟现实设备,根据一方面,该虚拟现实设备包括本发明的图像读取装置。

图4为根据本发明另一方面的该虚拟现实设备的实施结构的方框原理图。

根据图4所示,该虚拟现实设备400包括存储器401和处理器402,该存储器401用于存储指令,该指令用于控制处理器402进行操作以执行上述图像读取方法。

该处理器例如可以是中央处理器cpu、微处理器mcu等。该存储器例如包括rom(只读存储器)、ram(随机存取存储器)、诸如硬盘的非易失性存储器等。

除此之外,根据图4所示,该虚拟现实设备400还可以包括接口装置403、输入装置404、显示装置405、通信装置406、第一摄像头407、第二摄像头408等等。尽管在图4中示出了多个装置,但是,本发明投影设备可以仅涉及其中的部分装置,例如,处理器401、存储器402第一摄像头407和第二摄像头408等。

上述通信装置406例如能够进行有有线或无线通信。

上述接口装置403例如包括usb接口。

上述输入装置404例如可以包括触摸屏、按键等。

上述显示装置405例如是液晶显示屏、触摸显示屏等。

上述各实施例主要重点描述与其他实施例的不同之处,但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分相互参见即可,每个实施例重点说明的都是与其他实施例的不同之处,但本领域技术人员应当清楚的是,上述各实施例可以根据需要单独使用或者相互结合使用。另外,对于装置实施例而言,由于其是与方法实施例相对应,所以描述得比较简单,相关之处参见方法实施例的对应部分的说明即可。以上所描述的系统实施例仅仅是示意性的,其中作为分离部件说明的模块可以是或者也可以不是物理上分开的。

本发明可以是装置、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及常规的过程式编程语言—诸如“c”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。对于本领域技术人员来说公知的是,通过硬件方式实现、通过软件方式实现以及通过软件和硬件结合的方式实现都是等价的。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。本发明的范围由所附权利要求来限定。

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