图像处理方法、移动终端及存储介质
技术领域
本申请实施例涉及通信技术领域,尤其涉及一种图像处理方法、移动终端及存储介质。
背景技术
随着拍照技术的不断发展和移动终端的广泛使用,移动终端的拍照功能越来越受到人们的青睐。此外,随着增强现实(Augmented Reality,AR)技术的快速发展,虚拟内容(例如,一个3D模型)可以被加载到现实场景中;在该基础上,发展出了AR拍摄类应用,即可以将3D模型加载至现实环境,而后将现实环境(包括现实人物、动物或物体)和3D模型拍摄下来。
发明内容
本申请实施例提供了一种图像处理方法、移动终端及存储介质,以提供一种图像处理的方式,能够完成虚实结合的图像拍摄,并保证现实环境的明暗度和/或阴影与虚拟模型的明暗度和/或阴影一致,避免图像失真。
第一方面,本申请实施例提供了一种图像处理方法,包括:
响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;具体地,该现实环境画面为当前摄像头捕获的画面。
响应于检测到的第二操作,确定第一虚拟对象;具体地,该第二操作可以包括用户选取拍摄模式的操作以及选取第一虚拟对象的操作;例如,用户可以在预览界面上选取虚实融合拍摄模式,以进入虚实融合拍摄模式;此时,在虚实融合拍摄模式下,预览界面可以显示至少一个候选虚拟对象供用户选择,用户可以在候选虚拟对象中任意选取一个,以确定第一虚拟对象。
获取第一虚拟对象的定位信息,基于定位信息在预览界面中显示第一虚拟对象;具体地,定位信息可以包括第一虚拟对象的尺寸信息、角度信息以及第一虚拟对象在预览界面中的位置信息;其中,定位信息可以是第一虚拟对象默认的位置信息、尺寸信息和角度信息,也可以是用户对第一虚拟对象调整后的位置信息、尺寸信息及角度信息,例如,用户可以对第一虚拟对象进行拖拽、缩放及旋转等调整。
基于定位信息将第一图像与第二图像进行合成,得到第三图像;其中,第一图像包括现实环境画面,第二图像包括与定位信息对应的第二虚拟对象,第二虚拟对象由第一虚拟对象基于环境光信息进行渲染后生成,环境光信息与现实环境画面对应。具体地,第一图像拍摄的是现实环境画面,因此,第一图像仅包含现实场景画面,不包括第二虚拟对象;第二图像拍摄的是第二虚拟对象,因此第二图像不包括现实环境画面,也就是说,第一图像和第二图像是分离的。通过将第一图像和第二图像进行合成(例如,叠加在一起),可以得到第三图像。该第三图像可以是给用户观看的合成图像。在该第三图像中,第二虚拟对象的明暗度和/或阴影与现实环境的明暗度/或阴影保持一致,由此可以提高用户的观看体验。其中,第二虚拟对象可以通过对第一虚拟对象进行明暗度和/或阴影的渲染后得到,明暗度和/或阴影的渲染可以基于环境光信息进行。
其中一种可能的实现方式中,基于定位信息将第一图像与第二图像进行合成,得到第三图像包括:
响应于检测到的第三操作,生成第一图像;具体地,第一图像不包括第二虚拟对象。
基于第一图像获取与第一图像对应的环境光信息;具体地,可以对第一图像进行图像识别,以获得环境光信息;其中,环境光信息可以包括光照角度和光照强度。
基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;具体地,渲染可以包括明暗度和/或阴影渲染。
基于第二虚拟对象生成第二图像;具体地,第二图像不包括现实环境画面。第二图像的生成可以通过闪照或截屏等方式,本申请实施例对此不作限定。
基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,基于定位信息将第一图像与第二图像进行合成,得到第三图像包括:
获取与现实环境画面对应的环境光信息;具体地,可以根据当前摄像头捕获的现实环境画面进行图像识别,以得到对应的环境光信息。
基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象。
响应于检测到的第三操作,生成第一图像及第二图像。
基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,获取第一虚拟对象的定位信息包括:
响应于检测到的第四操作,确定第一虚拟对象在预览界面中的定位信息。
具体地,定位信息可以包括第一虚拟对象的尺寸信息、角度信息以及第一虚拟对象在预览界面中的坐标位置信息。
其中一种可能的实现方式中,定位信息包括第一虚拟对象的默认定位信息。
其中一种可能的实现方式中,响应于检测到的第二操作,确定第一虚拟对象包括:
响应于检测到的第二操作,显示至少一个候选虚拟对象。
响应于检测到的第五操作,在候选虚拟对象中确定第一虚拟对象。
其中一种可能的实现方式中,响应于检测到的第二操作,显示至少一个候选虚拟对象包括:
响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;具体地,环境类型用于识别当前现实环境的主题,例如,环境类型可以包括人物类型、动物类型、家电类型、建筑类型等。
基于环境类型推荐显示候选虚拟对象。具体地,可以基于环境类型在虚拟对象的数据库中进行查询,由此可以推荐显示虚拟对象,避免虚拟对象过多导致的多页显示,提高虚拟对象与现实环境的匹配度,提高用户的体验。
其中一种可能的实现方式中,第二虚拟对象由第一虚拟对象基于环境光信息进行渲染后生成包括:
将第一虚拟对象及环境光信息输入预置渲染模型,使得预置渲染模型对第一虚拟对象的明暗度和/或阴影进行渲染,得到第二虚拟对象,其中,第二虚拟对象包括明暗度和/或阴影。
第二方面,本申请实施例提供一种图像处理装置,包括:
预览模块,用于响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;
选取模块,用于响应于检测到的第二操作,确定第一虚拟对象;
获取模块,用于获取第一虚拟对象的定位信息,基于定位信息在预览界面中显示第一虚拟对象;
合成模块,用于基于定位信息将第一图像与第二图像进行合成,得到第三图像;其中,第一图像包括现实环境画面,第二图像包括与定位信息对应的第二虚拟对象,第二虚拟对象由第一虚拟对象基于环境光信息进行渲染后生成,环境光信息与现实环境画面对应。
其中一种可能的实现方式中,上述合成模块包括:
第一生成单元,用于响应于检测到的第三操作,生成第一图像;
识别单元,用于基于第一图像获取与第一图像对应的环境光信息;
渲染单元,用于基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;
第二生成单元,用于基于第二虚拟对象生成第二图像;
合成单元,用于基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,上述合成模块包括:
获取单元,用于获取与现实环境画面对应的环境光信息;
渲染单元,用于基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;
生成单元,用于响应于检测到的第三操作,生成第一图像及第二图像;
合成单元,用于基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,上述获取模块还用于响应于检测到的第四操作,确定第一虚拟对象在预览界面中的定位信息。
其中一种可能的实现方式中,定位信息包括第一虚拟对象的默认定位信息。
其中一种可能的实现方式中,上述选取模块包括:
显示单元,用于响应于检测到的第二操作,显示至少一个候选虚拟对象;
选取单元,用于响应于检测到的第五操作,在候选虚拟对象中确定第一虚拟对象。
其中一种可能的实现方式中,上述显示单元还用于响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;基于环境类型推荐显示候选虚拟对象。
其中一种可能的实现方式中,上述合成模块还用于将第一虚拟对象及环境光信息输入预置渲染模型,使得预置渲染模型对第一虚拟对象的明暗度和/或阴影进行渲染,得到第二虚拟对象,其中,第二虚拟对象包括明暗度和/或阴影。
第三方面,本申请实施例提供一种移动终端,包括:
存储器,上述存储器用于存储计算机程序代码,上述计算机程序代码包括指令,当上述移动终端从上述存储器中读取上述指令,以使得上述移动终端执行以下步骤:
响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;
响应于检测到的第二操作,确定第一虚拟对象;
获取第一虚拟对象的定位信息,基于定位信息在预览界面中显示第一虚拟对象;
基于定位信息将第一图像与第二图像进行合成,得到第三图像;其中,第一图像包括现实环境画面,第二图像包括与定位信息对应的第二虚拟对象,第二虚拟对象由第一虚拟对象基于环境光信息进行渲染后生成,环境光信息与现实环境画面对应。
其中一种可能的实现方式中,上述指令被上述移动终端执行时,使得上述移动终端执行基于定位信息将第一图像与第二图像进行合成,得到第三图像的步骤包括:
响应于检测到的第三操作,生成第一图像;
基于第一图像获取与第一图像对应的环境光信息;
基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;
基于第二虚拟对象生成第二图像;
基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,上述指令被上述移动终端执行时,使得上述移动终端执行基于定位信息将第一图像与第二图像进行合成,得到第三图像的步骤包括:
获取与现实环境画面对应的环境光信息;
基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;
响应于检测到的第三操作,生成第一图像及第二图像;
基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,上述指令被上述移动终端执行时,使得上述移动终端执行获取第一虚拟对象的定位信息的步骤包括:
响应于检测到的第四操作,确定第一虚拟对象在预览界面中的定位信息。
其中一种可能的实现方式中,定位信息包括第一虚拟对象的默认定位信息。
其中一种可能的实现方式中,上述指令被上述移动终端执行时,使得上述移动终端执行响应于检测到的第二操作,确定第一虚拟对象的步骤包括:
响应于检测到的第二操作,显示至少一个候选虚拟对象;
响应于检测到的第五操作,在候选虚拟对象中确定所述第一虚拟对象。
其中一种可能的实现方式中,上述指令被上述移动终端执行时,使得上述移动终端执行响应于检测到的第二操作,显示至少一个候选虚拟对象的步骤包括:
响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;
基于环境类型推荐显示候选虚拟对象。
其中一种可能的实现方式中,上述指令被上述移动终端执行时,使得上述移动终端执行第二虚拟对象由第一虚拟对象基于环境光信息进行渲染后生成的步骤包括:
将第一虚拟对象及环境光信息输入预置渲染模型,使得预置渲染模型对第一虚拟对象的明暗度和/或阴影进行渲染,得到第二虚拟对象,其中,第二虚拟对象包括明暗度和/或阴影。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序,当上述计算机程序被计算机执行时,用于执行第一方面所述的方法。
在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
附图说明
图1为本申请实施例提供的移动终端的结构示意图;
图2为本申请提供的图像处理方法一个实施例的流程图;
图3A为本申请实施例提供的拍摄模式选取界面示意图;
图3B为本申请实施例提供的候选虚拟对象界面显示示意图;
图3C为本申请实施例提供的虚拟对象选取界面示意图;
图3D为本申请实施例提供的虚拟对象渲染效果示意图;
图4为本申请实施例提供的图像合成示意图;
图5为本申请提供的图像处理方法另一个实施例的流程图;
图6为本申请实施例提供的图像处理装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
目前的移动终端中通常都包含摄像头,通过该摄像头用户可以任意的拍摄图像。随着AR技术的不断发展,人们可以将现实场景和虚拟场景相结合。随着AR技术应用到相机拍摄中,用户可以将现实对象与虚拟对象拍摄在一张图像上。
通常,虚拟对象是一个3D的模型。然而,为了方便用户调用或加载,3D模型都是预先生成的,也就是说,3D模型的各项特征(例如,明暗度)都是预先设定的。此外,3D模型通常是不包含阴影的。而在实际拍摄过程中,现实环境的光源都是不可控的,例如,光源的角度不同,对象在照片中的明暗度是不同的。且通常现实环境的对象在照片中会产生阴影部分,这时,如果一个不带阴影的3D模型和一张带阴影的照片进行合成,由于3D模型的明暗度和阴影与照片中显示对象的明暗度与阴影不一致,会导致合成后的图像会显的失真。
基于上述问题,本申请实施例提出了一种图像处理方法,应用于移动终端,可以保证现实环境的明暗度和/或阴影与虚拟模型的明暗度和/或阴影一致,避免图像失真。移动终端也可以称为终端设备、用户设备(User Equipment,UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。移动终端个人数字处理(Personal Digital Assistant,PDA)设备、具有无线通信功能的手持设备、手持式通信设备、手持式计算设备、本申请实施例对执行该技术方案的移动终端的具体形式不做特殊限制。
如图1所示,为本申请实施例提供的一种移动终端100的结构示意图。移动终端100可以包括摄像模组110、显示屏120、处理器130、I/O子系统140、存储器150及其它输入设备160。其中,摄像模组110用于采集图像,显示屏120用于显示图像及操作界面。
摄像模组110包含有至少一个摄像头111,其中,若摄像模组110仅包含一个摄像头111,则该摄像头111可前置也可后置;若摄像模组110包含多个摄像头111,则该多个摄像头111可以位于移动终端100的同一侧,也可以任意分布在移动终端100的两侧;需要说明的是,若移动终端100的任意一侧有多个摄像头111,则该侧可以有一个主摄像头,当用户启动拍摄时,该移动终端100可以开启该主摄像头,并可以通过该主摄像头获取当前的环境信息,在移动终端100的预览界面中进行显示。在本申请中,摄像头111可以用于获取环境光信息,例如,光照角度和光照强度。摄像头111也可以用于捕获当前的现实环境的画面。
显示屏120可用于显示由用户输入的信息或提供给用户的信息以及终端设备100的各种菜单,还可以接受用户输入。具体的,显示屏120可包括显示面板121,以及触控面板122。其中,显示面板121可以采用液晶显示器(LCD,Liquid Crystal Display)、有机发光二极管(OLED,Organic Light-Emitting Diode)等形式来配置显示面板121。触控面板122,也称为触摸屏、触敏屏等,可收集用户在其上或附近的接触或者非接触操作(比如用户使用手指、触笔等任何适合的物体或附件在触控面板122上或在触控面板122附近的操作,也可以包括体感操作;该操作包括单点控制操作、多点控制操作等操作类型),并根据预先设定的程式驱动相应的连接装置。可选的,触控面板122可包括触摸检测装置和触摸控制器两个部分。其中,触摸检测装置检测用户的触摸方位、姿势,并检测触摸操作带来的信号,将信号传送给触摸控制器;触摸控制器从触摸检测装置上接收触摸信息,并将它转换成处理器能够处理的信息,再送给处理器130,并能接收处理器130发来的命令并加以执行。此外,可以采用电阻式、电容式、红外线以及表面声波等多种类型实现触控面板122,也可以采用未来发展的任何技术实现触控面板122。进一步的,触控面板122可覆盖显示面板121,用户可以根据显示面板121显示的内容(该显示内容包括但不限于,软键盘、虚拟鼠标、虚拟按键、图标等等),在显示面板121上覆盖的触控面板122上或者附近进行操作,触控面板122检测到在其上或附近的操作后,通过I/O子系统140传送给处理器130以确定用户输入,随后,处理器130根据用户输入通过I/O子系统140在显示面板121上提供相应的视觉输出。虽然在图1中,触控面板122与显示面板121是作为两个独立的部件来实现终端设备100的输入和输入功能,但是在某些实施例中,可以将触控面板122与显示面板121集成而实现终端设备100的输入和输出功能。在本申请中,显示屏120可以用于接收用户的输入操作,例如,用户可以在显示屏120上进行点击、滑动以及拖拽等操作。显示屏120还可以显示摄像头111捕获的现实环境的画面。
处理器130是移动终端100的控制中心,利用各种接口和线路连接整个终端设备的各个部分,通过运行或执行存储在存储器150内的软件程序和/或模块,以及调用存储在存储器150内的数据,执行移动终端100的各种功能和处理数据,从而对移动终端100进行整体监控。可选的,处理器130可包括一个或多个处理单元;优选的,处理器130可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器130中。其中,涉及的处理器可以例如包括中央处理器(Central Processing Unit;以下简称:CPU)、数字信号处理器(Digital Singnal Processor;以下简称:DSP)或微控制器,还可包括图形处理器(Graphics Processing Unit;以下简称:GPU)、嵌入式神经网络处理器(Neural-network Process Units;以下简称:NPU)和图像信号处理器(Image SignalProcessing;以下简称:ISP),该处理器还可包括必要的硬件加速器或逻辑处理硬件电路,如特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或一个或多个用于控制本申请技术方案程序执行的集成电路等。在本申请中,处理器130可以用于将现实环境的图像与虚拟对象合成在一张图像上。
I/O子系统140用来控制输入输出的外部设备,可以包括其他设备输入控制器141、显示控制器142。可选的,一个或多个其他输入控制设备控制器141从其他输入设备160接收信号和/或者向其他输入设备160发送信号,其他输入设备160可以包括物理按钮(按压按钮、摇臂按钮等)、拨号盘、滑动开关、操纵杆、点击滚轮、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)。值得说明的是,其他输入控制设备控制器141可以与任一个或者多个上述设备连接。所述I/O子系统140中的显示控制器142从显示屏120接收信号和/或者向显示屏120发送信号。显示屏120检测到用户输入后,显示控制器142将检测到的用户输入转换为与显示在显示屏120上的用户界面对象的交互,即实现人机交互。
存储器150可用于存储软件程序以及模块,处理器130通过运行存储在存储器150的软件程序以及模块,从而执行移动终端100的各种功能应用以及数据处理。存储器150可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据移动终端100的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器150可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。在本申请中,存储器150可以用于存储拍摄的图像和虚拟对象。
其他输入设备160可用于接收输入的数字或字符信息,以及产生与移动终端100的用户设置以及功能控制有关的键信号输入。具体地,其他输入设备160可包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆、光鼠(光鼠是不显示可视输出的触摸敏感表面,或者是由触摸屏形成的触摸敏感表面的延伸)等中的一种或多种。其他输入设备160与I/O子系统140的其他输入设备控制器141相连接,在其他设备输入控制器141的控制下与处理器130进行信号交互。
现结合图2-图5对本申请实施例提供的图像处理方法进行说明,如图2所示为本申请图像处理方法一个实施例的流程图,该方法可以应用于上述移动终端100中,包括:
步骤101,启动摄像头。
具体地,摄像头的启动可以通过运行与摄像头对应的应用程序启动。例如,用户可以在移动终端100的显示界面上操作摄像头应用程序的图标,以开启摄像头。可以理解的是,用户通过图标操作打开摄像头应用程序时,可以是单击、双击或滑动,也可以是其它方式,本申请实施例对此不作限定。
可选地,摄像头的启动也可以在一个应用程序中调用摄像头的应用程序,以启动摄像头。例如,用户在通过聊天应用程序与另一用户进行对话时,可以在聊天应用程序中调用摄像头应用程序,由此可以在聊天应用程序中拍摄照片后向对方发送。
步骤102,摄像头捕获现实环境画面。
具体地,在用户启动该摄像头后,摄像头可以捕获现实环境的画面,将现实环境的画面显示在移动终端100的显示屏120上。示例性的,移动终端100的显示界面可以用于显示如图3A所示的现实环境画面。参考图3A,移动终端100的显示界面300包括拍摄操作区域310、拍摄模式选择区域320及画面预览区域330;其中,拍摄模式选择区域320可以包含多种拍摄模式的候选项321,例如,大光圈、夜景、人像、虚实融合、录像以及专业等模式;拍摄操作区域310包含拍摄按钮311及摄像头切换按钮312;画面预览区域330用于显示摄像头捕获的现实环境的画面,例如,如图3A所示的街道画面。需要注意的是,对于单个摄像头的移动终端100,不具有摄像头切换功能,因此没有摄像头切换按钮312。在移动终端100包含多个摄像头且摄像头位于移动终端100的两侧时,该移动终端100具有摄像头切换功能,可以包含摄像头切换按钮312。
其中,若移动终端100包含多个摄像头,且摄像头位于移动终端100的两侧,通过点击拍摄操作区域310中的摄像头切换按钮312,可以选择当前的摄像头,例如,可以选择前置摄像头还是后置摄像头,若移动终端100只包含一个摄像头,这时无需进行摄像头的切换。若当前的摄像头支持虚实融合拍摄功能,则拍摄模式选择区域320中的候选项321中就会出现多虚实融合选项,否则不出现。
步骤103,响应于检测到的用户用于选取虚实融合拍摄模式的操作,显示候选虚拟对象。
具体地,在如图3A所示的显示界面300上,用户可以选择拍摄模式候选项321,以确定当前的拍摄模式,例如,用户可以点击虚实融合选项,以进入虚实融合拍摄模式,此时,移动终端100显示候选虚拟对象。
现以图3A为例进行说明,当用户通过点击该虚实融合选项321之后,显示界面300中就会弹出虚拟对象候选区域3210,由此可以得到如图3B所示的显示界面400。其中,该虚拟对象可以是一个3D的模型,例如,一个3D的人物,一个3D的动物,或者一个3D的物体,本申请实施例对此不作限定。虚拟对象候选区域3210包括至少一个虚拟对象候选项3211,以供用户对虚拟对象进行选取。
其中,虚拟对象候选项3211可以是与虚拟对象对应的预览图像,可以理解的是,虚拟对象候选项3211也可以是图标或其他显示形式,本申请实施例对此不作限定。示例性的,当用户选取虚拟对象候选项3211后,移动终端100可以加载与选中的预览图像对应的虚拟对象,由此可以将虚拟对象显示在显示界面400中。
虚拟对象可以预先存储在移动终端100的存储器150中,当用户选中虚拟对象后,可以直接在存储器150中调取并进行加载。虚拟对象也可以存储在其他设备中,例如,存储在服务器中,当用户选中虚拟对象后,可以从其他设备上下载用户选中的虚拟对象,并将下载完成的虚拟对象进行加载。
进一步地,在虚拟对象候选区域3210中对虚拟对象候选项3211进行显示时,可以将预先设置的虚拟对象候选项3211进行显示。例如,每次进行虚实融合拍摄时只推送一个预先设置的虚拟对象候选项3211,也就是说,虚拟对象候选区域3210中只有一个预先设置的虚拟对象候选项3211可供用户选取。可以理解的是,也可以预先设置多个虚拟对象候选项3211。例如,在虚拟对象候选区域3210中推送多个预先设置的虚拟对象候选项3211,这时,虚拟对象候选区域3210中有多个虚拟对象候选项3211可供用户选取。其中,一个或多个与预先设置的虚拟对象候选项3211对应的虚拟对象可以预先存储在移动终端100中,也可以预先存储在其他设备中。
可选地,在虚拟对象候选区域3210中对虚拟对象候选项3211进行显示时,还可以根据当前摄像头捕获的现实环境画面对虚拟对象候选项3211进行推送。示例性的,可以预先给虚拟对象候选项3211进行分类,例如,可以是人物类、动物类、家电类或建筑类等,当摄像头捕获到现实环境画面后,移动终端100可以对当前的现实环境画面进行分析,以确定当前的现实环境画面与什么类别相关,例如,该类别可以是人物类、动物类、家电类或建筑类等。当移动终端100确定当前现实环境画面的类别后,可以将当前现实环境画面的类别与虚拟对象候选项3211的类别进行匹配,将匹配的虚拟对象候选项3211进行推送,例如,将与当前现实环境画面类别相关的虚拟对象候选项3211显示在虚拟对象候选区域3210中,以供用户选取。由此可以提高用户在候选虚拟对象中对虚拟对象进行选取的效率,进而提高用户的体验。
步骤104,响应于检测到的用户用于选取虚拟对象的操作,确定第一虚拟对象。
具体地,用户可以在虚拟对象候选区域3210中对虚拟对象候选项3211进行操作,以选取虚拟对象。例如,用户可以在虚拟对象候选区域3210中点击或拖拽虚拟对象候选项3211,以选定虚拟对象。可以理解的是,用户也可以通过其他操作选定虚拟对象,本申请实施例对此不作限定。移动终端100接收到用户选取虚拟对象的操作后,加载与用户选取的虚拟对象候选项3211对应的虚拟对象。其中,若虚拟对象已存储在移动终端100内,则移动终端100可以直接调用该虚拟对象并进行加载,使得该虚拟对象显示在画面预览区域330中;若虚拟对象未存储在移动终端100内,则移动终端100可以根据虚拟对象候选项3211的链接地址下载虚拟对象,例如,该链接地址可以是服务器地址,则可以向服务器发起请求,以获取该虚拟对象。当移动终端100通过下载获取到虚拟对象后,可以对该虚拟对象进行加载,使得该虚拟对象显示在画面预览区域330中。其中,虚拟对象可以包括初始的状态,该初始状态可以包括虚拟对象默认的尺寸信息和默认的角度信息。尺寸信息可以用于标识虚拟对象的大小,例如,该虚拟对象可以通过长宽高等信息来标识尺寸信息。角度信息可以用于标识该虚拟对象的旋转角度,示例性的,该虚拟对象可以通过横向旋转角度和纵向旋转角度来标识角度信息。可以理解的是,在移动终端100对虚拟对象进行加载后,可以基于默认的尺寸信息和默认的角度信息对虚拟对象进行渲染后显示在预览界面中。
现以图3B为例进行说明,参考图3B,虚拟对象候选区域3210中有4个虚拟对象候选项3211,分别是左上角的小车1、右上角的大车、左下角的建筑及右下角的小车2。用户可以通过对左上角小车1的预览图像的操作,选取该小车1,例如,用户可以点击小车1的预览图像,选取小车1,可以理解的是,用户也可以通过其他操作选定虚拟对象,本申请实施例对此不作限定。
步骤105,获取第一虚拟对象的定位信息,基于该定位信息在预览界面中显示第一虚拟对象。
具体地,该定位信息可以包括上述步骤104中虚拟对象的尺寸信息和角度信息,此外,该定位信息还可以包括位置信息。位置信息用于标识虚拟对象在画面预览区域330中的坐标位置,例如,可以以虚拟对象的中心点为坐标位置,由此移动终端100可以记录下虚拟对象的中心点在画面预览区域330中的坐标位置。可以理解的是,画面预览区域330中显示的画面是现实环境画面,因此,成像之后,例如,生成与现实环境画面对应的图像之后,虚拟对象在画面预览区域330中的坐标可以转换为虚拟对象在显示环境画面图像中的坐标。
其中,该定位信息可以是虚拟对象默认的定位信息,例如,以虚拟对象默认的尺寸信息及角度信息,以及以默认的位置显示在画面预览区域330中。也可以以任意的坐标位置在画面预览区域330中对虚拟对象进行显示,例如,随机选取一个坐标位置显示该虚拟对象,本申请实施例对此不作限定。
以图3B为例,移动终端100接收到用户选取第一虚拟对象(例如,小车1)的操作后,获取与用户选取的虚拟对象候选项3211对应的虚拟对象,加载第一虚拟对象,并基于第一虚拟对象默认的定位信息将该第一虚拟对象显示在画面预览区域330中,由此可以得到如图3C所示的显示界面500。其中,若第一虚拟对象已存储在移动终端100内,则移动终端100可以直接调用该第一虚拟对象并进行加载,使得该第一虚拟对象显示在画面预览区域330中;若第一虚拟对象未存储在移动终端100内,则移动终端100可以根据虚拟对象候选项3211的链接地址下载第一虚拟对象,例如,该链接地址可以是服务器地址,则可以向服务器发起请求,以获取该第一虚拟对象。当移动终端100通过下载获取到第一虚拟对象后,可以对该第一虚拟对象进行加载,使得该第一虚拟对象显示在画面预览区域330中。
可选地,用户还可以通过对虚拟对象的操作,来改变虚拟对象在画面预览区域330中的定位信息。例如,用户可以拖拽虚拟对象,以改变虚拟对象在画面预览区域330中的位置信息;用户可以旋转虚拟对象,以改变虚拟对象在画面预览区域330中的角度信息;用户可以对虚拟对象进行缩放,以改变虚拟对象在画面预览区域330中的尺寸信息等。响应于用户改变虚拟对象定位信息的操作,移动终端100可以记录下虚拟对象更新后的定位信息。
步骤106,根据摄像头捕获的现实环境画面获得当前环境光信息。
具体地,当画面预览区域330中显示虚拟对象后,根据摄像头捕获的现实环境画面获得当前环境光信息。其中,环境光信息可以包括光照角度和光照强度,光照角度可以用于表征当前光源照射的方向,光照强度可以用于表征光照的强弱和对象表面积被照明程度的量。
需要说明的是,环境光信息的获取可以基于图像分析的方法,例如,当摄像头捕获现实环境画面后,移动终端100中的处理器130可以调用图像分析方法,由此可以对摄像头捕获的显示环境画面进行分析,进而可以得到环境光信息。示例性的,可以检测出现实环境画面中的最亮点,然后可以根据最亮点估计出光源照射的方向,也就是光照角度;通过最亮点与次亮点之间的亮度差异与距离可以估计出光照强度。图像分析方法属于现有技术,在此不再赘述。
可以理解的是,摄像头会随着移动终端100的移动而移动,因此,摄像头与光源的相对位置会发生变化,由此导致环境光信息会随着移动终端100的移动而改变。摄像头在移动终端100的移动过程中,可以实时地获取环境光信息。例如,当用户移动移动终端100时,摄像头也会随之移动,画面预览区域330中显示的现实环境画面会发生变化,相应地,环境光信息也发生了变化。
步骤107,根据环境光信息对当前画面预览区域中的第一虚拟对象进行渲染,得到第二虚拟对象。
具体地,当第一虚拟对象显示在移动终端100的画面预览区域330中后,移动终端100可以根据当前的环境光信息对第一虚拟对象进行渲染,由此可以得到第二虚拟对象。其中,渲染可以包括对第一虚拟对象更新明暗度和/或阴影,也就是说,第二虚拟对象在第一虚拟对象的基础上对明暗度和/或阴影进行更新。明暗度可以用于表征虚拟对象身上各部位的明暗区分,根据光源的光照角度和光照强度,虚拟对象的各部位会显示对应的明暗度。示例性的,当光源从虚拟对象的头顶照射下来时,则虚拟对象的头部比较亮,脚部则比较暗。阴影用于表征与虚拟对象对应的阴影部分,根据光源的光照角度和光照强度,虚拟对象产生对应的的阴影区域和阴影亮度。示例性的,当光源从虚拟对象的正前方照射过来时,背后会产生阴影。可以理解的是,原始的虚拟对象包含初始的明暗度,该初始的明暗度和初始的光源对应,因此,当获取到当前的环境光信息后,移动终端100可以基于当前的环境光信息对虚拟对象的明暗度进行更新;而原始的虚拟对象是不包含阴影的,因此,当获取到当前的环境光信息后,移动终端100可以基于当前的环境光信息对虚拟对象添加阴影。需要说明的是,阴影的生成是基于当前的环境光信息,然而,对于某些光源,是没有阴影生成的,例如,光源从虚拟对象的头部进行垂直投射,或者在某些阴天条件,环境光不足以生成阴影。
需要说明的是,虚拟对象明暗度的渲染和/或阴影的渲染可以通过预置的渲染模型(例如,现有的3D引擎)实现。示例性的,移动终端100可以调用预置的3D引擎,将环境光信息及待渲染的第一虚拟对象输入预置的3D引擎,由此可以完成对第一虚拟对象的渲染,得到第二虚拟对象,由此可以使得第二虚拟对象与现实环境画面中的对象保持一致,例如,第二虚拟对象的明暗度和现实环境画面中的对象的明暗度保持一致,和/或第二虚拟对象的阴影和现实环境画面中的对象的阴影保持一致。其中,3D引擎属于现有技术,在此不再赘述。
现以图3C为例进行说明,参考图3C,光源照射方向在左上方,现实环境中左上角树木的阴影在树木的右侧,然而虚拟对象(例如,小车1)没有阴影。当移动终端100的处理器130获取到环境光信息后,调用预置的3D引擎对虚拟对象进行渲染,由此可以得到如图3D所示的显示界面600。参考图3D,虚拟对象(例如,小车1)的明暗度发生了变化,与树木的明暗度保持一致;且虚拟对象添加了阴影,与树木的阴影保持一致。
进一步地,在画面预览区域330中用户还可以对虚拟对象进行变换。其中,对虚拟对象进行变换可以包括对虚拟对象进行位置变换、尺寸变换和/或角度变换。例如,用户可以拖动虚拟对象,以改变虚拟对象在画面预览区域330中的坐标位置;和/或用户可以缩放虚拟对象,以改变虚拟对象在画面预览区域330中的尺寸,和/或用户可以对虚拟对象进行旋转,以改变虚拟对象在画面预览区域330中的角度,其中,旋转可以包括水平方向的旋转和垂直方向的旋转,由此可以改变虚拟对象在画面预览区域330中的水平角度和垂直角度。
可以理解的是,当虚拟对象进行变换之后,移动终端100可以对变换后的虚拟对象进行重新渲染。例如,虚拟对象的角度变换之后,虚拟对象的各部位的角度也发生变化,因此,需要进行重新渲染,对虚拟对象的明暗度和/或阴影进行更新。
步骤108,响应于检测到的用户用于拍摄的操作,生成第三图像,其中,第三图像包括与现实环境画面对应的第一图像及与第二虚拟对象对应的第二图像。
具体地,用户可以通过拍摄操作将现实环境的画面拍摄下来,将现实环境的画面与虚拟对象的图像合成在一张图像中。示例性的,用户可以在拍摄操作区域310中按下拍摄按钮311,以实现拍摄功能,由此可以在移动终端100中生成第三图像。其中,第三图像通过第一图像与第二图像合成获得,第一图像可以是当前的现实环境画面,第二图像可以是与第二虚拟对象对应的图像。移动终端100接收到用户的拍摄操作后,生成第一图像及第二图像。接着,移动终端100获取第二图像在第一图像中的坐标位置。可以理解的是,移动终端100获取第二图像在第一图像中的坐标位置的步骤可以与生成第一图像及第二图像的步骤同时执行,也可以在生成第一图像及第二图像的步骤之前执行,本申请实施例对此不作特殊限定。基于上述坐标位置,移动终端100将第一图像与第二图像进行合成,例如,移动终端100可以将第二图像叠加在第一图像上,由此可以得到合成后的第三图像。其中,与第二虚拟对象对应的的第二图像的获取可以通过闪照的方式,也可以通过其他图像截取的方式,本申请实施例对此不作限定。
可以理解的是,图像的合成可以是通过图层合并的方式,例如,可以将第一图像作为第一图层,将第二图像作为第二图层,通过将第二图层叠加在第一图层上,由此可以得到合成后的第三图像。也可以通过其他方式进行图像合成,本申请实施例对此不作特殊限定。
现结合图4进行说明,如图所示,图像710为与摄像头捕获的现实环境画面对应的第一图像,图像720为经过明暗度和/或阴影渲染后得到的第二虚拟对象的平面图像。通过将图像710和图像720进行合成,可以得到图像730,图像730为最终合成的第三图像。其中,图像710中的现实环境画面的明暗度和/或阴影与图像720中第二虚拟对象的明暗度和/或阴影一致。
进一步地,当移动终端100生成第三图像之后,还可以将该第三图像进行显示,并可以将第三图像保存在移动终端100的相册中,以便用户进行浏览。可以理解的是,第三图像也可以存储在云端或服务器中,本申请实施例对此不作限定。
本实施例中,通过移动终端在捕获现实环境画面的过程中实时获取当前的环境光信息,并基于该环境光信息对虚拟对象的明暗度和/或阴影进行实时渲染,由此可以保证渲染后的虚拟对象的明暗度和/或阴影与现实环境的明暗度和/或阴影保持一致,避免由于两者的不一致导致图像失真,进而可以提高用户的观看体验。
如图5所示为本申请图像处理方法另一个实施例的流程图,该方法可以应用于上述移动终端100中,包括:
步骤201,启动摄像头。
具体地,该步骤201与步骤101相同,在此不再赘述。
步骤202,摄像头捕获现实环境画面。
具体地,该步骤202与步骤102相同,在此不再赘述。
步骤203,响应于检测到的用户用于选取虚实融合拍摄模式的操作,显示候选虚拟对象。
具体地,该步骤203与步骤103相同,在此不再赘述。
步骤204,响应于检测到的用户用于选取虚拟对象的操作,确定第一虚拟对象。
具体地,该步骤204与步骤104相同,在此不再赘述。
步骤205,获取第一虚拟对象的定位信息,基于该定位信息在预览界面中显示第一虚拟对象。
具体地,该步骤205与步骤105相同,在此不再赘述。
步骤206,响应于检测到的用户用于拍摄的操作,生成第一图像。
具体地,用户可以通过拍摄操作将现实环境的画面拍摄下来,以得到与现实环境画面对应的第一图像。例如,用户可以在拍摄操作区域310中按下拍摄按钮311。移动终端100收到用户的拍摄操作后,可以生成第一图像,第一图像可以是摄像头捕获的现实场景的画面。
步骤207,根据第一图像获得环境光信息。
具体地,根据第一图像进行图像分析,获得与该第一图像对应的环境光信息。其中,对第一图像进行图像分析可以通过步骤106中的图像分析方法,由此可以得到对应的环境光信息,例如,光照角度和光照强度。
步骤208,根据环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象。
具体地,根据环境光信息对第一虚拟对象进行渲染,例如,可以通过步骤107中调用3D引擎的方式对第一虚拟对象进行渲染,由此可以得到第二虚拟对象。其中,第二虚拟对象是经过明暗度和/或阴影调整后的虚拟对象。由此,可以使得第二虚拟对象的明暗度和/或阴影与现实环境保持一致。
步骤209,获取与第二虚拟对象对应的第二图像,将第二图像与第一图像进行合成,得到第三图像。
具体地,获取第二图像以及第二图像在第一图像中的坐标位置,具体获取的方式可以参考步骤108,在此不再赘述。根据坐标位置将第二图像与第一图像进行合成,由此可以得到第三图像,图像合成的方式可以参考步骤108,在此不再赘述。
本实施例中,通过移动终端在执行拍摄操作,生成与现实环境画面对应的图像后,获取与该现实环境图像对应的环境光信息,并基于该环境光信息对虚拟对象进行一次明暗度和/或阴影的渲染,可以保证虚拟对象的明暗度和/或阴影与现实环境的明暗度和/或阴影一致之外,还可以降低实时渲染导致的资源消耗,避免给移动终端带来过大的负载,由此可以提高移动终端的处理效率。
图6为本申请图像处理装置一个实施例的结构示意图,如图6所示,上述图像处理装置60可以包括:预览模块61、选取模块62、获取模块63及合成模块64;
预览模块61,用于响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;
选取模块62,用于响应于检测到的第二操作,确定第一虚拟对象;
获取模块63,用于获取第一虚拟对象的定位信息,基于定位信息在预览界面中显示第一虚拟对象;
合成模块64,用于基于定位信息将第一图像与第二图像进行合成,得到第三图像;其中,第一图像包括现实环境画面,第二图像包括与定位信息对应的第二虚拟对象,第二虚拟对象由第一虚拟对象基于环境光信息进行渲染后生成,环境光信息与现实环境画面对应。
其中一种可能的实现方式中,上述合成模块64包括:第一生成单元641、识别单元642、渲染单元643、第二生成单元644及合成单元645;
第一生成单元641,用于响应于检测到的第三操作,生成第一图像;
识别单元642,用于基于第一图像获取与第一图像对应的环境光信息;
渲染单元643,用于基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;
第二生成单元644,用于基于第二虚拟对象生成第二图像;
合成单元645,用于基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,上述合成模块64包括:获取单元646、渲染单元647、生成单元648及合成单元649;
获取单元646,用于获取与现实环境画面对应的环境光信息;
渲染单元647,用于基于环境光信息对第一虚拟对象进行渲染,得到第二虚拟对象;
生成单元648,用于响应于检测到的第三操作,生成第一图像及第二图像;
合成单元649,用于基于定位信息将第一图像和第二图像进行合成,得到第三图像。
其中一种可能的实现方式中,上述获取模块63还用于响应于检测到的第四操作,确定第一虚拟对象在预览界面中的定位信息。
其中一种可能的实现方式中,上述定位信息包括第一虚拟对象的默认定位信息。
其中一种可能的实现方式中,上述选取模块62包括:显示单元621及选取单元622;
显示单元621,用于响应于检测到的第二操作,显示至少一个候选虚拟对象;
选取单元622,用于响应于检测到的第五操作,在候选虚拟对象中确定第一虚拟对象。
其中一种可能的实现方式中,上述显示单元621还用于响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;基于环境类型推荐显示候选虚拟对象。
其中一种可能的实现方式中,上述合成模块64还用于将第一虚拟对象及环境光信息输入预置渲染模型,使得预置渲染模型对第一虚拟对象的明暗度和/或阴影进行渲染,得到第二虚拟对象,其中,第二虚拟对象包括明暗度和/或阴影。
图6所示实施例提供的图像处理装置可用于执行本申请图2-图5所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
应理解以上图6所示的图像处理装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,检测模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或,一个或多个微处理器(Digital Singnal Processor;以下简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。再如,这些模块可以集成在一起,以片上系统(System-On-a-Chip;以下简称:SOC)的形式实现。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对移动终端100的结构限定。在本申请另一些实施例中,移动终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
可以理解的是,上述移动终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
本申请实施例可以根据上述方法示例对上述移动终端等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器130执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。