发明内容
本申请实施例提供了一种图像处理方法、移动终端及存储介质,以提供一种图像处理的方式,能够完成虚实结合的图像拍摄,并可以在拍摄后的图像上对虚拟图像进行编辑,以及避免编辑后的图像失真。
第一方面,本申请实施例提供了一种图像处理方法,包括:
响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;具体地,第一操作可以包括用户开启摄像头的操作,也可以包括在一个应用程序中调用摄像头的操作,由此可以显示预览界面。
响应于检测到的第二操作,确定虚拟对象;具体地,该第二操作可以包括用户选取拍摄模式的操作以及选取虚拟对象的操作;例如,用户可以在预览界面上选取虚实融合拍摄模式,以进入虚实融合拍摄模式;此时,在虚实融合拍摄模式下,预览界面可以显示至少一个候选虚拟对象供用户选择,用户可以在候选虚拟对象中任意选取一个,以确定虚拟对象。
获取虚拟对象的第一定位信息,基于第一定位信息在预览界面中显示虚拟对象;具体地,第一定位信息可以包括虚拟对象的尺寸信息、角度信息以及虚拟对象在预览界面中的位置信息;其中,第一定位信息可以是默认的位置信息、尺寸信息和角度信息,也可以是用户对虚拟对象调整后的位置信息、尺寸信息及角度信息,例如,用户可以对虚拟对象进行拖拽、缩放及旋转等调整。
响应于检测到的第三操作,生成第一图像及第二图像,其中,第一图像包括现实环境画面,第二图像包括与第一定位信息对应的虚拟对象;具体地,第一图像可以与现实环境画面对应,因此不包含虚拟对象;第二图像可以与第一定位信息对应的虚拟对象对应,因此,第二图像不包含现实环境画面。
基于第一定位信息将第一图像及第二图像进行合成,生成第三图像,并显示第三图像,其中,第三图像与第一图像及虚拟对象关联;具体地,该第三图像可以是第一图像与第二图像的合成图像,例如,可以将第二图像叠加在第一图像上,由此可以得到第三图像。此外,第三图像的文件还可以与第一图像的文件及虚拟对象的文件进行关联,由此可以在用户对第三图像进行编辑的时候调用第一图像及虚拟对象。
其中一种可能的实现方式中,响应于检测到的第二操作,确定虚拟对象包括:
响应于检测到的第二操作,显示至少一个候选虚拟对象;
响应于检测到的第四操作,在候选虚拟对象中确定虚拟对象。
其中一种可能的实现方式中,响应于检测到的第二操作,显示至少一个候选虚拟对象包括:
响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;具体地,环境类型用于识别当前现实环境的主题,例如,环境类型可以包括人物类型、动物类型、家电类型、建筑类型等。
基于环境类型推荐显示候选虚拟对象,具体地,可以基于环境类型在虚拟对象的数据库中进行查询,由此可以推荐显示虚拟对象,避免虚拟对象过多导致的多页显示,提高虚拟对象与现实环境的匹配度,提高用户的体验。
其中一种可能的实现方式中,获取虚拟对象的第一定位信息包括:
响应于检测到的第五操作,确定虚拟对象在预览界面中的第一定位信息。具体地,该第五操作可以包括对虚拟对象进行拖拽、缩放和/或旋转等操作。
其中一种可能的实现方式中,第一定位信息包括虚拟对象的默认定位信息。
其中一种可能的实现方式中,第三图像与所述第一定位信息进行关联。具体地,该定位信息可以是默认的定位信息,也可以是用户对虚拟对象调整后的定位信息。
其中一种可能的实现方式中,显示所述第三图像之后,还包括:
响应于检测到的第六操作,分别调用与第三图像关联的第一图像及虚拟对象;
基于第一定位信息,将虚拟对象显示在第一图像中,使得用户对虚拟对象进行编辑。
其中一种可能的实现方式中,将虚拟对象显示在所述第一图像中之后,还包括:
响应于检测到的第七操作,确定虚拟对象在第一图像中的第二定位信息;
基于第二定位信息将第一图像与第四图像进行合成,生成第五图像,并显示第五图像;其中,第四图像包括与第二定位信息对应的虚拟对象,第五图像与第一图像及所述虚拟对象关联。;
其中一种可能的实现方式中,显示第五图像之后,还包括:
将第五图像覆盖第三图像后进行存储。
第二方面,本申请实施例提供一种图像处理装置,包括:
预览模块,用于响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;
选取模块,用于响应于检测到的第二操作,确定虚拟对象;
获取模块,用于获取虚拟对象的第一定位信息,基于第一定位信息在预览界面中显示虚拟对象;
拍摄模块,用于响应于检测到的第三操作,生成第一图像及第二图像,其中,第一图像包括现实环境画面,第二图像包括与第一定位信息对应的虚拟对象;
第一合成模块,用于基于第一定位信息将第一图像及第二图像进行合成,生成第三图像,并显示第三图像,其中,第三图像与第一图像及虚拟对象关联。
其中一种可能的实现方式中,上述选取模块包括:
显示子模块,用于响应于检测到的第二操作,显示至少一个候选虚拟对象;
选取子模块,用于响应于检测到的第四操作,在候选虚拟对象中确定虚拟对象。
其中一种可能的实现方式中,上述显示子模块包括:
识别单元,用于响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;
推荐单元,用于基于环境类型推荐显示候选虚拟对象。
其中一种可能的实现方式中,上述获取模块还用于响应于检测到的第五操作,确定虚拟对象在预览界面中的第一定位信息。
其中一种可能的实现方式中,第一定位信息包括虚拟对象的默认定位信息。
其中一种可能的实现方式中,第三图像与第一定位信息进行关联。
其中一种可能的实现方式中,上述装置还包括:
调用模块,用于响应于检测到的第六操作,分别调用与第三图像关联的第一图像及虚拟对象;
编辑模块,用于基于第一定位信息,将虚拟对象显示在第一图像中,使得用户对虚拟对象进行编辑。
其中一种可能的实现方式中,上述装置还包括:
更新模块,用于响应于检测到的第七操作,确定虚拟对象在第一图像中的第二定位信息;
第二合成模块,用于基于第二定位信息将第一图像与第四图像进行合成,生成第五图像,并显示第五图像;其中,第四图像包括与第二定位信息对应的虚拟对象,第五图像与第一图像及虚拟对象关联。
其中一种可能的实现方式中,上述装置还包括:
存储模块,用于将第五图像覆盖第三图像后进行存储。
第三方面,本申请实施例提供一种移动终端,包括:
存储器,上述存储器用于存储计算机程序代码,上述计算机程序代码包括指令,当上述移动终端从上述存储器中读取上述指令,以使得上述移动终端执行如第一方面所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行如第一方面所述的方法。
第五方面,本申请实施例提供一种计算机程序,当上述计算机程序被计算机执行时,用于执行第一方面所述的方法。
在一种可能的设计中,第五方面中的程序可以全部或者部分存储在与处理器封装在一起的存储介质上,也可以部分或者全部存储在不与处理器封装在一起的存储器上。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。其中,在本申请实施例的描述中,除非另有说明,“/”表示或的意思,例如,A/B可以表示A或B;本文中的“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本申请实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
目前的移动终端中通常都包含摄像头,通过该摄像头用户可以拍摄图像。随着AR技术的不断发展,人们可以将现实场景和虚拟场景相结合。此外,随着AR技术应用到相机拍摄中,用户还可以将现实场景与虚拟场景拍摄在一张图像上,例如,可以将现实人物和虚拟人物拍摄在一张图像上。
然而,在用户完成AR拍摄后,得到的图像是一张现实场景中的目标对象(简称现实对象)和虚拟场景中的目标对象(简称虚拟对象)位置关系固定的合成图像,如果要对该合成图像进行后期编辑,例如,如果要对合成图像中的虚拟对象进行缩放,那么只能对合成图像进行缩放,由此导致现实对象也要同比例缩放,无法满足仅对虚拟对象进行缩放的要求。且在缩放的过程中,该合成图像也会失真。此外,由于虚拟对象在合成图像中的位置信息是固定的,因此,后期编辑无法实现对该虚拟对象的旋转及位置调整;虽然图像编辑软件可以通过抠图等方式对虚拟对象进行位置调整,但是原虚拟对象移动后的区域需要进行信息填充或者进行留白、模糊化处理,由此会造成图像失真;如果对虚拟对象进行旋转,由于合成图像中缺少虚拟对象的侧面信息,因此图像编辑软件也无法实现对虚拟对象的旋转。
基于上述问题,本申请实施例提出了一种图像处理方法,应用于移动终端,能够完成虚实结合的图像拍摄,并可以在拍摄后的图像上对虚拟图像进行编辑,以及避免编辑后的图像失真。
移动终端也可以称为终端设备、用户设备(User Equipment,UE)、接入终端、用户单元、用户站、移动站、移动台、远方站、远程终端、移动设备、用户终端、终端、无线通信设备、用户代理或用户装置。移动终端可以是蜂窝电话、无绳电话、个人数字处理(PersonalDigital 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可以用于捕获当前的现实环境的画面。
显示屏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中。在本申请中,处理器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-图8对本申请实施例提供的图像处理方法进行说明,如图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,响应于检测到的用户用于选取虚实融合拍摄的操作,显示候选虚拟对象。
具体地,用户可以在移动终端100的显示界面上进行操作,以选取虚实融合的拍摄模式。例如,用户可以点击虚实融合选项,以进入虚实融合拍摄模式。响应于用户选取虚实融合拍摄模式的操作,移动终端100进入虚实融合拍摄模式,并显示候选虚拟对象。
现以图3A为例进行说明,当用户通过点击该虚实融合选项321之后,显示界面300中可以弹出虚拟对象候选区域3210,由此可以得到如图3B所示的显示界面400。其中,该虚拟对象可以是一个3D的模型,例如,一个3D的虚拟人物,一个3D的虚拟动物,或者一个3D的虚拟物体,本申请实施例对此不作限定。虚拟对象候选区域3210包括至少一个虚拟对象候选项3211,以供用户对虚拟对象进行选取。
其中,虚拟对象候选项3211可以是与虚拟对象对应的预览图像,可以理解的是,虚拟对象候选项3211也可以是图标或其他显示形式,本申请实施例对此不作限定。
进一步地,在虚拟对象候选区域3210中对虚拟对象候选项3211进行显示时,可以将预先设置的虚拟对象候选项3211进行显示。例如,每次进行虚实融合拍摄时只推送一个预先设置的虚拟对象候选项3211,也就是说,虚拟对象候选区域3210中只有一个预先设置的虚拟对象候选项3211可供用户选取。可以理解的是,也可以预先设置多个虚拟对象候选项3211。例如,在虚拟对象候选区域3210中推送多个预先设置的虚拟对象候选项3211,这时,虚拟对象候选区域3210中有多个虚拟对象候选项3211可供用户选取。其中,一个或多个与预先设置的虚拟对象候选项3211对应的虚拟对象可以预先存储在移动终端100中,也可以预先存储在其他设备中。
可选地,在虚拟对象候选区域3210中对虚拟对象候选项3211进行显示时,还可以根据当前摄像头捕获的现实环境画面对虚拟对象候选项3211进行推送。示例性的,可以预先给虚拟对象候选项3211进行分类,例如,可以是人物类、动物类、家电类或建筑类等,当摄像头捕获到现实环境画面后,移动终端100可以对当前的现实环境画面进行分析,以确定当前的现实环境画面与什么类别相关,例如,该类别可以是人物类、动物类、家电类或建筑类等。当移动终端100确定当前现实环境画面的类别后,可以将当前现实环境画面的类别与虚拟对象候选项3211的类别进行匹配,将匹配的虚拟对象候选项3211进行推送,例如,将与当前现实环境画面类别相关的虚拟对象候选项3211显示在虚拟对象候选区域3210中,以供用户选取。由此可以提高用户在候选虚拟对象中对虚拟对象进行选取的效率,进而提高用户的体验。
步骤104,响应于检测到的用户用于选取虚拟对象的操作,确定虚拟对象。
具体地,用户可以在候选虚拟对象中进行操作,以选取一个虚拟对象。例如,用户可以点击一个候选虚拟对象的图标,来选取虚拟对象。响应于用户选取虚拟对象的操作,移动终端100可以加载该虚拟对象,将该虚拟对象显示在画面预览区域330中。其中,虚拟对象可以包括初始的状态,该初始状态可以包括虚拟对象默认的尺寸信息和默认的角度信息。尺寸信息可以用于标识虚拟对象的大小,例如,该虚拟对象可以通过长宽高等信息来标识尺寸信息。角度信息可以用于标识该虚拟对象的旋转角度,示例性的,该虚拟对象可以通过横向旋转角度和纵向旋转角度来标识角度信息。可以理解的是,在移动终端100对虚拟对象进行加载后,可以基于默认的尺寸信息和默认的角度信息对虚拟对象进行渲染后显示在预览界面中。
其中,虚拟对象可以预先存储在移动终端100的存储器150中,当用户选中虚拟对象后,可以直接在存储器150中调取并进行加载。虚拟对象也可以存储在其他设备中,例如,存储在服务器中,当用户选中虚拟对象后,可以从其他设备上下载用户选中的虚拟对象,并将下载完成的虚拟对象进行加载。
现以图3B为例进行说明,用户可以在虚拟对象候选区域3210中对虚拟对象候选项3211进行操作,以选取虚拟对象。其中,虚拟对象候选区域3210中有4个虚拟对象候选项3211,分别是左上角的小车1、右上角的大车、左下角的建筑及右下角的小车2。例如,用户可以通过点击左上角小车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可以记录下虚拟对象更新后的定位信息。
可以理解的是,当用户对虚拟对象进行尺寸和角度的调整后,移动终端100还可以根据调整后的尺寸信息和角度信息进行重新渲染,由此可以将重渲染后的虚拟对象显示在预览界面中。
以图3C为例,当用户对虚拟对象3211(例如,小车1)进行水平角度的旋转及位置移动后,可以得到图4所示的显示界面600。参考图4,小车1经过水平角度旋转及位置移动后,从左侧移动到了右侧,且水平角度发生了变化,例如,小车1的车头原来是朝左下角方向,经过水平角度旋转后,车头是朝右下角方向。其中,用户对该虚拟对象进行操作的过程中,可以通过手指在移动终端的触摸屏上进行操作,也可以在移动终端的显示屏上通过功能键实现虚拟对象的移动和旋转,本申请实施例对此不作限定。
步骤106,响应于检测到的用于拍摄的操作,生成与现实环境对应的第一图像。
具体地,用户可以通过拍摄操作将现实环境的画面拍摄下来,以便移动终端100可以将现实环境的画面与虚拟对象合成在一张图像中。示例性的,用户可以在拍摄操作区域310中按下拍摄按钮311,以实现拍摄功能,由此可以使得移动终端100中生成第一图像。响应于用户的拍摄操作,移动终端100可以生成第一图像。其中,第一图像只包含现实场景画面,不包括虚拟对象。
步骤107,获取与虚拟对象对应的的第二图像。
具体地,与虚拟对象对应的第二图像可以基于虚拟对象的第一定位信息获得。例如,移动终端100可以基于虚拟对象的第一定位信息中的尺寸信息和角度信息对虚拟对象进行成像,获得与虚拟对象对应的第二图像。可以理解的是,第二图像不包含现实场景画面。其中,与虚拟对象对应的的第二图像的获取可以通过闪照的方式,也可以通过其他图像截取的方式,本申请实施例对此不作限定。
步骤108,基于第一定位信息将第一图像与第二图像进行合成,得到合成后的第三图像。
具体地,移动终端100可以根据第一定位信息中的位置信息将第一图像与第二图像进行合成,得到合成后的第三图像。例如,移动终端100可以根据位置信息将第二图像叠加在第一图像上,得到合成后的第三图像。
可以理解的是,图像的合成可以是通过图层合并的方式,例如,可以将第一图像作为第一图层,将第二图像作为第二图层,通过将第二图层叠加在第一图层上,由此可以得到合成后的第三图像。也可以通过其他方式进行图像合成,本申请实施例对此不作特殊限定。
现结合图5进行说明,如图5所示,图像510为通过移动终端的摄像头拍摄的第一图像(例如,现实场景图像);图像520为与虚拟对象对应的第二图像。通过图像510和图像520的合成,可以得到合成图像530。例如,可以将图像520叠加在图像510上。其中,图像520在图像510中的位置可以根据位置信息确定。
步骤109,显示第三图像,将第三图像与第一图像及虚拟对象进行关联存储。
具体地,移动终端100还可以将第三图像进行显示,以及将第三图像进行存储。例如,将第三图像存储在移动终端100的相册中,以便用户进行浏览或编辑;或者将第三图像存储在云端或者服务器中,本申请实施例对此不作特殊限定。移动终端100还可以将第三图像与第一图像及虚拟对象进行关联存储。示例性的,移动终端100可以将第一图像、第三图像及虚拟对象都进行存储,并可以将第三图像与第一图像及虚拟对象进行关联。其中,第三图像的数据存储格式可以是JPEG格式。由此可以使得用户对第三图像进行浏览时,可以查看JPEG格式的第三图像,用户在对第三图像进行编辑时,可以调用与第三图像关联的第一图像和虚拟对象,并对虚拟对象进行编辑(例如,调整虚拟对象的位置、尺寸和角度),以完成对第三图像的编辑。可以理解的是,第三图像与第一图像及虚拟对象的关联关系可以和第三图像一起存储在本地数据库中,也可以存储在云端或服务器中,本申请实施例对此不作特殊限定。
优选地,为了避免被移动终端100中的相册读取而影响***效率,第一图像可以不存储在移动终端100的相册中(例如,可以存储在移动终端100的***文件或其他文件中)。此外,第一图像的数据格式也可以不限定,例如,可以不限定该第一图像是JPEG、BMP或其他图像格式。其中,存储的目录可以是与拍摄应用程序相同的目录,也可以是不同的目录,本申请实施例对此不作限定。
如图6所示为第三图像在移动终端100中的数据存储形式。其中,第三图像可以是图像格式,第一图像可以是图像格式,虚拟对象可以是3D工程文件格式,第三图像与第一图像和虚拟对象进行关联,也就是说,当用户对第三图像进行编辑时,可以调用与第三图像关联的第一图像和虚拟对象。
可选地,第三图像还可以与第一定位信息进行关联。通过将第三图像与第一定位信息进行关联,可以在用户对第三图像编辑时,获取虚拟对象在第三图像中的尺寸信息、位置信息和角度信息,由此可以使得用户在对第三图像进行编辑时,可以基于该第一定位信息将调用的虚拟对象显示在第一图像中,提高用户的操作体验。
步骤110,响应于检测到的用于对第三图像进行编辑的操作,调用与第三图像关联的第一图像及虚拟对象。
具体地,用户可以对存储在移动终端100中的第三图像进行编辑。例如,用户可以双击第三图像,以启动对第三图像的编辑。响应于用户对第三图像的编辑操作,移动终端100显示第三图像的编辑画面,调用与第三图像关联的第一图像及虚拟对象,也就是说,此时,第一图像和虚拟对象处于分离状态,用户可以在第一图像上对虚拟对象进行编辑。例如,移动终端100在第一图像上可以基于存储的第一定位信息显示虚拟对象,例如,移动终端100可以基于存储的尺寸信息和角度对虚拟对象进行渲染,接着基于存储的位置信息将渲染后的虚拟对象显示在第一图像上,以便用户可以在第一图像上对虚拟对象进行编辑。
可选地,移动终端100在显示虚拟对象前,还可以检测与第三图像关联的第一定位信息。
若不存在与第三图像关联的第一定位信息,也就是说,没有预先存储与虚拟对象对应的第一定位信息,则移动终端100可以获取虚拟对象的初始状态,例如,可以是虚拟对象默认的尺寸和默认的角度。此外,虚拟对象在第一图像中的坐标位置可以是任意的位置,也可以是默认的位置,本申请实施例对此不作限定。
步骤111,响应于检测到的用于对虚拟对象进行编辑的操作,确定虚拟对象的第二定位信息,根据第二定位信息将第一图像与第四图像进行合成,得到第五图像,其中,第四图像包括虚拟图像。
具体地,用户还可以对虚拟对象进行编辑操作。例如,用户可以拖拽、缩放虚拟对象,或者变换虚拟对象的角度,以对虚拟对象进行编辑。响应于用户对虚拟对象的编辑操作,移动终端100确定虚拟对象的第二定位信息。例如,移动终端100可以获取用户对虚拟对象编辑后的定位信息(例如,编辑后的位置信息、尺寸信息和/或角度信息),以获得第二定位信息。接着,参考步骤108中的图像合成步骤,移动终端100可以基于编辑后的尺寸信息和/或角度信息对虚拟对象进行渲染,并生成与虚拟对象对应的图像;然后,基于第二定位信息中的位置信息将第一图像与虚拟对象的图像(例如,第四图像)进行合成,由此可以得到第五图像,其中,第四图像包括与第二定位信息对应的虚拟对象,也就是说,第四图像是基于第二定位信息对虚拟对象进行成像得到的图像,第五图像是第一图像与第四图像合成的图像。
现结合图7和8进行说明,当用户对第三图像进行编辑时,例如,用户打开移动终端100的相册准备对第三图像进行编辑时,可以得到图7所示的显示画面700。该显示画面700可以包括功能区域710及显示区域720。其中,功能区域710用于提供功能选项供用户选取,功能区域710可以包括功能选项711(例如,编辑选项)。显示区域720用于显示第三图像,在显示区域720中无法对第三图像中的虚拟对象进行编辑。当用户点击功能选项711中的编辑选项后,可以得到图8所示的显示画面800。该显示画面800可以包括第一图像810及虚拟对象820,可以理解的是,在显示画面800中,第一图像810与虚拟对象820处于分离状态,也就是说,用户可以单独对虚拟对象820进行编辑,例如,对虚拟对象820进行拖拽、缩放和/或角度变换等。当用户完成对虚拟对象820的编辑后,更新虚拟对象的定位信息,得到第二定位信息,并基于第二定位信息对虚拟对象进行成像,由此可以得到第四图像,移动终端100将第一图像与第四图像进行合成,由此可以得到第五图像。其中,用户对该虚拟对象820进行编辑的过程中,可以通过手指在移动终端100的显示屏上进行操作,也可以在移动终端100的显示屏上通过功能键实现对虚拟对象820的编辑,本申请实施例对此不作限定。
进一步地,当移动终端100生成第五图像后,该第五图像可以和第一图像及虚拟对象进行关联,并进行存储,存储的形式可以如图6所示;第五图像还可以和虚拟对象编辑后的第二定位信息进行关联。其中,在对第五图像进行存储的过程中,该第五图像可以在相册或服务器中覆盖第三图像,该第五图像也可以和第三图像同时存在相册或服务器中,本申请实施例对此不作限定。
本实施例中,通过在对现实环境图像和虚拟对象进行图像合成时,将合成图像与现实环境图像和虚拟对象进行关联存储,由此可以使得用户在对合成图像进行后期编辑时,可以调用与合成图像关联的虚拟对象,并使得用户可以对虚拟对象进行单独编辑,避免对合成图像进行编辑造成的图像失真,提高用户的体验。
图9为本申请图像处理装置一个实施例的结构示意图,如图9所示,上述图像处理装置90可以包括:预览模块91、选取模块92、获取模块93、拍摄模块94及第一合成模块95;
预览模块91,用于响应于检测到的第一操作,显示预览界面;其中,预览界面包括现实环境画面;
选取模块92,用于响应于检测到的第二操作,确定虚拟对象;
获取模块93,用于获取虚拟对象的第一定位信息,基于第一定位信息在预览界面中显示虚拟对象;
拍摄模块94,用于响应于检测到的第三操作,生成第一图像及第二图像,其中,第一图像包括现实环境画面,第二图像包括与第一定位信息对应的虚拟对象;
第一合成模块95,用于基于第一定位信息将第一图像及第二图像进行合成,生成第三图像,并显示第三图像,其中,第三图像与第一图像及虚拟对象关联。
其中一种可能的实现方式中,上述选取模块92包括:显示子模块921及选取子模块922;
显示子模块921,用于响应于检测到的第二操作,显示至少一个候选虚拟对象;
选取子模块922,用于响应于检测到的第四操作,在候选虚拟对象中确定虚拟对象。
其中一种可能的实现方式中,上述显示子模块921包括:识别单元9211及推荐单元9212;
识别单元9211,用于响应于检测到的第二操作,对预览界面中现实环境的类型进行识别,得到环境类型;
推荐单元9212,用于基于环境类型推荐显示候选虚拟对象。
其中一种可能的实现方式中,上述获取模块93还用于响应于检测到的第五操作,确定虚拟对象在预览界面中的第一定位信息。
其中一种可能的实现方式中,第一定位信息包括虚拟对象的默认定位信息。
其中一种可能的实现方式中,第三图像与第一定位信息进行关联。
其中一种可能的实现方式中,上述装置90还包括:调用模块96及编辑模块97;
调用模块96,用于响应于检测到的第六操作,分别调用与第三图像关联的第一图像及虚拟对象;
编辑模块97,用于基于第一定位信息,将虚拟对象显示在第一图像中,使得用户对虚拟对象进行编辑。
其中一种可能的实现方式中,上述装置90还包括:更新模块98及第二合成模块99;
更新模块98,用于响应于检测到的第七操作,确定虚拟对象在第一图像中的第二定位信息;
第二合成模块99,用于基于第二定位信息将第一图像与第四图像进行合成,生成第五图像,并显示第五图像;其中,第四图像包括与第二定位信息对应的虚拟对象,第五图像与第一图像及虚拟对象关联。
其中一种可能的实现方式中,上述装置90还包括:存储模块9A;
存储模块9A,用于将第五图像覆盖第三图像后进行存储。
图9所示实施例提供的图像处理装置可用于执行本申请图2-图8所示方法实施例的技术方案,其实现原理和技术效果可以进一步参考方法实施例中的相关描述。
应理解以上图9所示的图像处理装置的各个模块的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且这些模块可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分模块以软件通过处理元件调用的形式实现,部分模块通过硬件的形式实现。例如,检测模块可以为单独设立的处理元件,也可以集成在电子设备的某一个芯片中实现。其它模块的实现与之类似。此外这些模块全部或部分可以集成在一起,也可以独立实现。在实现过程中,上述方法的各步骤或以上各个模块可以通过处理器元件中的硬件的集成逻辑电路或者软件形式的指令完成。
例如,以上这些模块可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit;以下简称:ASIC),或,一个或多个微处理器(Digital Singnal Processor;以下简称:DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array;以下简称:FPGA)等。再如,这些模块可以集成在一起,以片上***(System-On-a-Chip;以下简称:SOC)的形式实现。
可以理解的是,本发明实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对移动终端100的结构限定。在本申请另一些实施例中,移动终端100也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
可以理解的是,上述移动终端为了实现上述功能,其包含了执行各个功能相应的硬件结构和/或软件模块。本领域技术人员应该很容易意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,本申请实施例能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
本申请实施例可以根据上述方法示例对上述移动终端等进行功能模块的划分,例如,可以对应各个功能划分各个功能模块,也可以将两个或两个以上的功能集成在一个处理模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。需要说明的是,本发明实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的***,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请实施例各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器130执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:快闪存储器、移动硬盘、只读存储器、随机存取存储器、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何在本申请揭露的技术范围内的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。