具体实施方式
下面,将参考附图详细地描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。
应注意到:除非另外具体说明,否则在这些实施例中阐述的部件和步骤的相对布置、数字表达式和数值不限制本公开的范围。
本领域技术人员可以理解,本公开实施例中的“第一”、“第二”等术语仅用于区别不同步骤、设备或模块等,既不代表任何特定技术含义,也不表示它们之间的必然逻辑顺序。
还应理解,在本公开实施例中,“多个”可以指两个或两个以上,“至少一个”可以指一个、两个或两个以上。
还应理解,对于本公开实施例中提及的任一部件、数据或结构,在没有明确限定或者在前后文给出相反启示的情况下,一般可以理解为一个或多个。
另外,本公开中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本公开中字符“/”,一般表示前后关联对象是一种“或”的关系。
还应理解,本公开对各个实施例的描述着重强调各个实施例之间的不同之处,其相同或相似之处可以相互参考,为了简洁,不再一一赘述。
同时,应当明白,为了便于描述,附图中所示出的各个部分的尺寸并不是按照实际的比例关系绘制的。
以下对至少一个示例性实施例的描述实际上仅仅是说明性的,决不作为对本公开及其应用或使用的任何限制。
对于相关领域普通技术人员已知的技术、方法和设备可能不作详细讨论,但在适当情况下,所述技术、方法和设备应当被视为说明书的一部分。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步讨论。
本公开实施例可以应用于终端设备、计算机***、服务器等电子设备,其可与众多其它通用或专用计算***环境或配置一起操作。适于与终端设备、计算机***、服务器等电子设备一起使用的众所周知的终端设备、计算***、环境和/或配置的例子包括但不限于:个人计算机***、服务器计算机***、瘦客户机、厚客户机、手持或膝上设备、基于微处理器的***、机顶盒、可编程消费电子产品、网络个人电脑、小型计算机***、大型计算机***和包括上述任何***的分布式云计算技术环境,等等。
终端设备、计算机***、服务器等电子设备可以在由计算机***执行的计算机***可执行指令(诸如程序模块)的一般语境下描述。通常,程序模块可以包括例程、程序、目标程序、组件、逻辑、数据结构等等,它们执行特定的任务或者实现特定的抽象数据类型。计算机***/服务器可以在分布式云计算环境中实施,分布式云计算环境中,任务是由通过通信网络链接的远程处理设备执行的。在分布式云计算环境中,程序模块可以位于包括存储设备的本地或远程计算***存储介质上。
申请概述
目前的全景图拍摄方法,虽然能够提示用户设备的姿态,但不足以来约束设备的位置。所以在拍摄全景图时,当设备平移的距离过大时,会造成拍摄的全景图不完整、图像产生畸变等问题。
示例性***
图1示出了可以应用本公开的实施例的拍摄设备位置提示方法或拍摄设备位置提示装置的示例性***架构100。
如图1所示,***架构100可以包括终端设备101,网络102和服务器103。网络102用于在终端设备101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备101通过网络102与服务器103交互,以接收或发送消息等。终端设备101上可以安装有各种通讯客户端应用,例如拍摄类应用、网页浏览器应用、购物类应用、即时通信工具等。
终端设备101可以是各种电子设备,包括但不限于诸如移动电话、数码相机、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)等等的移动终端。终端设备上可以包括相机,或与相机通信连接。
服务器103可以是提供各种服务的服务器,例如接收终端设备101执行的程序提供支持的后台服务器。后台服务器可以接收终端设备101发送的图像帧,基于图像帧,生成诸如第一提示信息等,并将生成的信息反馈给终端设备101。
需要说明的是,本公开的实施例所提供的拍摄设备位置提示方法可以由终端设备101执行,也可以由服务器103执行,相应地,拍摄设备位置提示装置可以设置于终端设备101中,也可以设置于服务器103中。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。在不需要远程通信的情况下,通常,上述***架构可以不包括网络和服务器。
示例性方法
图2是本公开一示例性实施例提供的拍摄设备位置提示方法的流程示意图。本实施例可应用在电子设备(如图1所示的终端设备101或服务器103)上,如图2所示,该方法包括如下步骤:
步骤201,基于拍摄设备拍摄的图像,建立坐标系,并确定拍摄原点。
在本实施例中,电子设备可以基于拍摄设备拍摄的图像,建立坐标系,并确定拍摄原点。其中,拍摄设备可以是上述电子设备本身,例如手机、平板电脑等,也可以是与上述电子设备通信连接的设备,例如具有通信功能的数码相机。具体地,电子设备可以实时获得当前拍摄的图像帧对应的位姿矩阵(通常为4×4矩阵)。利用位姿矩阵,可以实时确定拍摄设备的位置。拍摄原点可以是在上述坐标系中的点。例如拍摄设备当前的位置可以为拍摄原点,或者用户手动选择的点可以设置为拍摄原点。
通常,在一些增强现实应用程序的软件平台(例如IOS***中的ARKit,安卓***中的ARCore)中,可以使用其提供的API(Application Programming Interface,应用程序接口),对虚拟的三维空间进行各种处理。作为示例,在ARKit平台中,基于session回调,获得当前帧对应的位姿矩阵,可以从位姿矩阵中的最后一列解读出x,y,z信息,通过这个信息,可以实时确定相机的位置和姿态角。
在一些可选的实现方式中,上述步骤201可以如下执行:
响应于在拍摄设备上开启增强现实功能,基于拍摄设备拍摄的图像,建立坐标系,并在坐标系中将拍摄设备的当前位置作为拍摄原点。作为示例,当在拍摄设备上开启ARKit时,即将拍摄设备的当前位置作为拍摄原点。本实现方式有助于使用户灵活地选择拍摄全景图的位置,提高拍摄全景图的质量。
步骤202,基于拍摄原点,在坐标系中,建立预设半径的虚拟球体区域。
在本实施例中,电子设备可以基于拍摄原点,在坐标系中,建立预设半径(例如15厘米)的虚拟球体区域。例如,可以将拍摄原点作为球心,建立虚拟球体区域。也可以按照用户手动选择选择的点作为球心,建立虚拟球体区域。
通常,在ARKit平台中,可以在屏幕上显示的虚拟三维空间中,设置各种信息,包括但不限于图形、文字等。电子设备可以利用ARKit平台提供的功能,建立虚拟球体区域,该虚拟球体区域通常只渲染外层。
步骤203,确定拍摄设备当前的位置。
在本实施例中,电子设备可以确定拍摄设备当前的位置。具体地,电子设备可以利用上述步骤201中描述的方法,实时确定拍摄设备当前的位置。
步骤204,响应于确定位置处于虚拟球体区域外,输出第一提示信息。
在本实施例中,电子设备可以响应于确定位置处于虚拟球体区域外,输出第一提示信息。其中,第一提示信息用于提示用户当前拍摄设备移出了虚拟球体区域,并提示用户应该移动拍摄设备至虚拟球体区域内,从而可以将拍摄设备限制在三维空间中的某个区域内。在拍摄全景图等需要限制拍摄设备的移动距离的场景中,可以使用户及时调整拍摄设备的位置,避免拍摄设备移动的距离过大造成拍摄质量下降。
第一提示信息可以包括但不限于以下至少一种形式的信息:文字、图像、声音等。例如,第一提示信息可以为文字“设备已出界,请移动至界内”。
在一些可选的实现方式中,电子设备还可以执行如下步骤:
首先,在拍摄设备拍摄全景图期间,确定拍摄设备当前的位置是否处于虚拟球体区域内,并确定拍摄设备的姿态。其中,姿态可以由姿态角表征,姿态角可以包括俯仰角(pitch)、偏航角(yaw)、滚转角(roll)。
电子设备可以利用传感器采集的信息确定拍摄设备的姿态。例如,通过传感器接口CMMotionManager,获取到拍摄设备当前的x,y,z三轴的加速度以及重力在拍摄设备三方向上的分量,从而计算出拍摄设备的姿态角。电子设备也可以利用上述位姿矩阵,确定姿态角。
然后,响应于确定上述位置处于所述虚拟球体区域内,且姿态不符合预设条件,输出第二提示信息。其中,第二提示信息用于提示用户当前拍摄设备的姿态偏置过大,并提示用户调整拍摄设备的姿态,使全景图的拍摄过程最优。第二提示信息可以包括但不限于以下至少一种形式的信息:文字、图像、声音等。例如,第二提示信息可以为文字“请保持设备水平”。
上述预设条件可以是用于限制拍摄设备的姿态的条件。例如,预设条件可以是拍摄设备的俯仰角的偏转角度大于或等于预设角度阈值。如图3所示,俯仰角为以竖直平面为基准,拍摄设备绕X轴旋转的角度,当用户在拍摄全景图时,拍摄设备绕Y轴旋转,拍摄过程中,当俯仰角超过预设角度阈值时,输出第二提示信息以提示用户将拍摄设备的姿态调整至最佳。本实现方式可以与上述步骤204相结合,使拍摄设备在拍摄全景图时,处于虚拟球体区域内,且保持一定的姿态,从而有助于得到高质量的全景图。
在一些可选的实现方式中,电子设备还可以响应于确定拍摄设备当前的位置处于虚拟球体区域外,在拍摄设备的屏幕上显示虚拟球体区域(例如显示黑色的球体区域)。如图4所示,可以在屏幕上显示如标号401所示的黑色球体区域。通过显示虚拟球体区域,可以使用户在屏幕上看到虚拟球体区域的位置,有助于提示用户将拍摄设备移动到虚拟球体区域内,从而有助于使拍摄设备限制到一定的区域内,提高拍摄全景图的质量。
在一些可选的实现方式中,电子设备还可以响应于确定拍摄设备当前的位置处于虚拟球体区域内,在拍摄设备的屏幕上隐藏虚拟球体区域。通过隐藏虚拟球体区域,可以在拍摄设备处于虚拟球体区域内进行拍摄时,对拍摄对象进行正常拍摄,不显示球体区域。
在一些可选的实现方式中,响应于接收到用于调整虚拟球体区域的半径的信号,将虚拟球体区域的半径调整至目标半径。其中,上述信号可以是用户手动操作产生的信号,也可以是电子设备根据拍摄场景自动调整半径而发出的信号。作为示例,用户可以通过使用触摸、按键等操作,手动调整虚拟球体区域的半径,从而可以更灵活地调整限制拍摄设备的区域的大小,以适应各种拍摄场景。再例如,电子设备可以利用现有的目标检测方法,自动识别拍摄的场景,当识别到当前在对厨房、卧室等较狭小的空间拍摄全景图时,可以减小虚拟球体区域的半径,当拍摄商场、体育场等宽阔的场景时,可以增大虚拟球体区域的半径。
本实现方式通过调整球体区域的半径,可以实现灵活地调整限制拍摄设备的区域的大小,从而有助于更好地对各种场景进行拍摄。
本公开的上述实施例提供的方法,通过在拍摄设备的拍摄原点建立虚拟球体区域,当拍摄设备离开虚拟球体区域时,输出提示信息,以提示用户将拍摄设备移动至虚拟球体区域内,从而可以有效地提示用户将拍摄设备限制在一定的空间范围内,有助于在拍摄全景图时避免拍摄设备平移较远的距离而造成拍摄质量下降。
示例性装置
图5是本公开一示例性实施例提供的拍摄设备位置提示装置的结构示意图。本实施例可应用在电子设备上,如图5所示,拍摄设备位置提示装置包括:第一建立模块501,用于基于拍摄设备拍摄的图像,建立坐标系,并确定拍摄原点;第二建立模块502,用于基于拍摄原点,在坐标系中,建立预设半径的虚拟球体区域;第一确定模块503,用于确定拍摄设备当前的位置;第一输出模块504,用于响应于确定位置处于虚拟球体区域外,输出第一提示信息。
在本实施例中,第一建立模块501可以基于拍摄设备拍摄的图像,建立坐标系,并确定拍摄原点。其中,拍摄设备可以是上述装置本身,例如手机、平板电脑等,也可以是与上述第一建立模块501通信连接的设备,例如具有通信功能的数码相机。具体地,第一建立模块501可以实时获得当前拍摄的图像帧对应的位姿矩阵(通常为4×4矩阵)。利用位姿矩阵,可以实时确定拍摄设备的位置。拍摄原点可以是在上述坐标系中的点。例如拍摄设备当前的位置可以为拍摄原点,或者用户手动选择的点可以设置为拍摄原点。
通常,在一些增强现实应用程序的软件平台(例如IOS***中的ARKit,安卓***中的ARCore)中,可以使用其提供的API(Application Programming Interface,应用程序接口),对虚拟的三维空间进行各种处理。作为示例,在ARKit平台中,基于session回调,获得当前帧对应的位姿矩阵,可以从位姿矩阵中的最后一列解读出x,y,z信息,通过这个信息,可以实时确定相机的位置和姿态角。
在本实施例中,第二建立模块502可以基于拍摄原点,在坐标系中,建立预设半径(例如15厘米)的虚拟球体区域。例如,可以将拍摄原点作为球心,建立虚拟球体区域。也可以按照用户手动选择选择的点作为球心,建立虚拟球体区域。
通常,在ARKit平台中,可以在屏幕上显示的虚拟三维空间中,设置各种信息,包括但不限于图形、文字等。第二建立模块502可以利用ARKit平台提供的功能,建立虚拟球体区域,该虚拟球体区域通常只渲染外层。
在本实施例中,第一确定模块503可以确定拍摄设备当前的位置。具体地,第一确定模块503可以利用上述第一建立模块501中描述的方法,实时确定拍摄设备当前的位置。
在本实施例中,第一输出模块504可以响应于确定位置处于虚拟球体区域外,输出第一提示信息。其中,第一提示信息用于提示用户当前拍摄设备移出了虚拟球体区域,并提示用户应该移动拍摄设备至虚拟球体区域内,从而可以将拍摄设备限制在三维空间中的某个区域内。在拍摄全景图等需要限制拍摄设备的移动距离的场景中,可以使用户及时调整拍摄设备的位置,避免拍摄设备移动的距离过大造成拍摄质量下降。
第一提示信息可以包括但不限于以下至少一种形式的信息:文字、图像、声音等。例如,第一提示信息可以为文字“设备已出界,请移动至界内”。
参照图6,图6是本公开另一示例性实施例提供的拍摄设备位置提示装置的结构示意图。
在一些可选的实现方式中,该装置还可以包括:第二确定模块505,用于在拍摄设备拍摄全景图期间,确定拍摄设备的位置是否处于所述虚拟球体区域内,并确定拍摄设备的姿态;第二输出模块506,用于响应于确定上述位置处于所述虚拟球体区域内,且姿态不符合预设条件,输出第二提示信息。
在一些可选的实现方式中,该装置还可以包括:显示模块507,用于响应于确定位置处于虚拟球体区域外,在拍摄设备的屏幕上显示虚拟球体区域。
在一些可选的实现方式中,装置还可以包括:隐藏模块508,用于响应于确定位置处于虚拟球体区域内,在拍摄设备的屏幕上隐藏虚拟球体区域。
在一些可选的实现方式中,该装置还可以包括:调整模块509,用于响应于接收到用于调整虚拟球体区域的半径的信号,将虚拟球体区域的半径调整至目标半径。
在一些可选的实现方式中,第一建立模块501可以进一步用于:响应于在拍摄设备上开启增强现实功能,基于拍摄设备拍摄的图像,建立坐标系,并在坐标系中将拍摄设备的当前位置作为拍摄原点。
本公开上述实施例提供的拍摄设备位置提示装置,通过在拍摄设备的拍摄原点建立虚拟球体区域,当拍摄设备离开虚拟球体区域时,输出提示信息,以提示用户将拍摄设备移动至虚拟球体区域内,从而可以有效地提示用户将拍摄设备限制在一定的空间范围内,有助于在拍摄全景图时避免拍摄设备平移较远的距离而造成拍摄质量下降。
示例性电子设备
下面,参考图7来描述根据本公开实施例的电子设备。该电子设备可以是如图1所示的终端设备101和服务器103中的任一个或两者、或与它们独立的单机设备,该单机设备可以与终端设备101和服务器103进行通信,以从它们接收所采集到的输入信号。
图7图示了根据本公开实施例的电子设备的框图。
如图7所示,电子设备700包括一个或多个处理器701和存储器702。
处理器701可以是中央处理单元(CPU)或者具有数据处理能力和/或指令执行能力的其他形式的处理单元,并且可以控制电子设备700中的其他组件以执行期望的功能。
存储器702可以包括一个或多个计算机程序产品,计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。在计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器701可以运行程序指令,以实现上文的本公开的各个实施例的拍摄设备位置提示方法以及/或者其他期望的功能。在计算机可读存储介质中还可以存储诸如拍摄设备拍摄的图像等各种内容。
在一个示例中,电子设备700还可以包括:输入装置703和输出装置704,这些组件通过总线***和/或其他形式的连接机构(未示出)互连。
例如,在该电子设备是终端设备101或服务器103时,该输入装置703可以是相机、鼠标、键盘等设备,用于输入图像。在该电子设备是单机设备时,该输入装置703可以是通信网络连接器,用于从终端设备101和服务器103接收所输入的图像。
该输出装置704可以向外部输出各种信息,包括第一提示信息等。该输出设备704可以包括例如显示器、扬声器、打印机、以及通信网络及其所连接的远程输出设备等等。
当然,为了简化,图7中仅示出了该电子设备700中与本公开有关的组件中的一些,省略了诸如总线、输入/输出接口等等的组件。除此之外,根据具体应用情况,电子设备700还可以包括任何其他适当的组件。
示例性计算机程序产品和计算机可读存储介质
除了上述方法和设备以外,本公开的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的拍摄设备位置提示方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本公开的实施例还可以是计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本公开各种实施例的拍摄设备位置提示方法中的步骤。
所述计算机可读存储介质可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以包括但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
以上结合具体实施例描述了本公开的基本原理,但是,需要指出的是,在本公开中提及的优点、优势、效果等仅是示例而非限制,不能认为这些优点、优势、效果等是本公开的各个实施例必须具备的。另外,上述公开的具体细节仅是为了示例的作用和便于理解的作用,而非限制,上述细节并不限制本公开为必须采用上述具体的细节来实现。
本说明书中各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似的部分相互参见即可。对于***实施例而言,由于其与方法实施例基本对应,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本公开中涉及的器件、装置、设备、***的方框图仅作为例示性的例子并且不意图要求或暗示必须按照方框图示出的方式进行连接、布置、配置。如本领域技术人员将认识到的,可以按任意方式连接、布置、配置这些器件、装置、设备、***。诸如“包括”、“包含”、“具有”等等的词语是开放性词汇,指“包括但不限于”,且可与其互换使用。这里所使用的词汇“或”和“和”指词汇“和/或”,且可与其互换使用,除非上下文明确指示不是如此。这里所使用的词汇“诸如”指词组“诸如但不限于”,且可与其互换使用。
可能以许多方式来实现本公开的方法和装置。例如,可通过软件、硬件、固件或者软件、硬件、固件的任何组合来实现本公开的方法和装置。用于所述方法的步骤的上述顺序仅是为了进行说明,本公开的方法的步骤不限于以上具体描述的顺序,除非以其它方式特别说明。此外,在一些实施例中,还可将本公开实施为记录在记录介质中的程序,这些程序包括用于实现根据本公开的方法的机器可读指令。因而,本公开还覆盖存储用于执行根据本公开的方法的程序的记录介质。
还需要指出的是,在本公开的装置、设备和方法中,各部件或各步骤是可以分解和/或重新组合的。这些分解和/或重新组合应视为本公开的等效方案。
提供所公开的方面的以上描述以使本领域的任何技术人员能够做出或者使用本公开。对这些方面的各种修改对于本领域技术人员而言是非常显而易见的,并且在此定义的一般原理可以应用于其他方面而不脱离本公开的范围。因此,本公开不意图被限制到在此示出的方面,而是按照与在此公开的原理和新颖的特征一致的最宽范围。
为了例示和描述的目的已经给出了以上描述。此外,此描述不意图将本公开的实施例限制到在此公开的形式。尽管以上已经讨论了多个示例方面和实施例,但是本领域技术人员将认识到其某些变型、修改、改变、添加和子组合。