一种图像处理方法及电子设备
文献发布时间:2024-04-18 19:48:15
技术领域
本公开涉及终端技术领域,尤其涉及一种图像处理方法及电子设备。
背景技术
目前,在使用手机等电子设备进行图像拍摄时,均会应用到手机的预览功能和拍摄功能。其中,预览功能用于实时展示预览图像。拍摄功能用于捕获目标角度的拍摄对象,以得到拍摄图像。
相关技术中,预览功能和拍摄功能无法同时在电子设备中启动。在调用拍摄功能进行拍摄的过程中,预览功能处于关闭状态。此时,手机无法实时为用户展示预览图像。若拍摄功能设置拍摄时间较长,则预览图像将在拍摄时长内保持不变。这样,会使用户感受到明显的卡顿,从而降低用户的使用体验。
发明内容
本公开提供一种图像处理方法及电子设备,可在拍摄时为用户实时展示待显示预览图像,避免卡顿现象的出现,提高预览图像输出的流畅度和用户的使用体验。
为达到上述目的,本公开采用如下技术方案:
第一方面,本公开提供一种图像处理方法,包括:电子设备检测到用户的拍摄操作(例如,图像的拍摄操作);响应于拍摄操作,电子设备的第一应用(例如,相机应用程序)向电子设备的摄像头发送拍摄指令,拍摄指令包括拍摄请求、预览请求、多张出帧图像的出帧顺序以及每张出帧图像的帧类型;多张出帧图像的帧类型包括第一帧类型(例如,正常曝光帧)和第二帧类型,第一帧类型和第二帧类型不同;例如,第一帧类型为正常曝光帧,第二帧类型为非正常曝光帧(即长曝光帧和短曝光帧)。响应于拍摄请求,电子设备的摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型获取多张出帧图像;响应于预览请求,电子设备的图像前端处理引擎IFE基于多张出帧图像,得到待显示预览图像,并向第一应用发送待显示预览图像;待显示预览图像的帧类型为第一帧类型;第一应用接收并显示待显示预览图像。
基于第一方面的图像处理方法,电子设备设置在用户触发拍摄操作时,相机应用程序下发拍摄指令,该拍摄指令中包含预览请求,该预览请求能够使电子设备在拍摄阶段,输出待显示预览图像,并将待显示预览图像显示在相机应用程序中。所以,在拍摄阶段,电子设备可以根据预览请求持续输出待显示预览图像,且显示该待显示预览图像。因此,利用该图像处理方法能够避免图像拍摄过程中出现的卡顿现象,从而提高了预览图像输出的流畅度和用户的使用体验。
结合第一方面,另一种可能的实现方式中,基于多张出帧图像,得到待显示预览图像,包括:从摄像头获取多张出帧图像,并确定多张出帧图像的帧类型;IFE基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,并向电子设备发送第一出帧图像;第一出帧图像的帧类型为第一帧类型;电子设备基于第一出帧图像生成待显示预览图像。
基于该可能的实现方式,IFE可以先确定摄像头获取的多张出帧图像的帧类型,以基于帧类型,筛选出第一出帧图像,然后根据第一出帧图像,得到能够在相机应用程序的预览区域显示的待显示预览图像,进而避免相机应用程序的卡顿现象,提高预览图像输出的流畅性。
结合第一方面,另一种可能的实现方式中,确定多张出帧图像的帧类型,包括:按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,确定多张出帧图像中每张出帧图像的帧类型。基于该可能的实现方式,IFE通过拍摄指令中的多张出帧图像的出帧顺序以及每张出帧图像的帧类型,可以确定出每张出帧图像的帧类型。进而可以根据确定出的帧类型,在多张出帧图像中快速筛选出符合显示要求的出帧图像。
结合第一方面,另一种可能的实现方式中,基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,包括:基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;对多张出帧图像进行图像处理,得到处理后的多张出帧图像,处理后的多张出帧图像包括第二出帧图像对应的第一出帧图像。也就是说,本方案可以先基于多张出帧图像的帧类型,得出符合显示要求的帧类型(即第一帧类型)对应的第二出帧图像;然后在处理后的多张出帧图像,筛选出第二出帧图像对应的第一出帧图像。这样,能够快速的得到符合显示要求的出帧图像。
结合第一方面,另一种可能的实现方式中,基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,包括:对多张出帧图像进行图像处理,得到处理后的多张出帧图像;创建多张出帧图像和处理后的多张出帧图像的对应关系;基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;基于对应关系,在处理后的多张出帧图像中,确定第二出帧图像对应的第一出帧图像。提供另一种确定第一出帧图像的方法,在该方式中第一出帧图像是基于多张出帧图像的帧类型和多张出帧图像和处理后的多张出帧图像的对应关系(该对应关系为多张出帧图像和处理后的多张出帧图像的对应关系)确定出的。
结合第一方面,另一种可能的实现方式中,向电子设备发送第一出帧图像,包括:激活预览端口;利用预览端口将第一出帧图像发送至电子设备。基于该可能的实现方式,通过设置预览端口来向电子设备发送第一出帧图像。不仅实现简单,且能快速达到发出第一出帧图像的目的。
结合第一方面,另一种可能的实现方式中,激活预览端口,包括:将预览端口对应的依赖设置为第一状态,第一状态用于指示预览端口处于激活状态。提供一种快速激活预览端口的方法。
结合第一方面,另一种可能的实现方式中,方法还包括:电子设备对多张出帧图像进行图像处理和融合处理,得到拍摄图像;电子设备向第一应用发送拍摄图像;第一应用接收并显示拍摄图像。基于该可能的实现方式,在拍摄过程中,能够同时启动预览功能和拍摄功能,不仅可以显示预览图像,也能顺利的获取并显示拍摄图像。
第二方面,本公开实施例提供一种图像处理装置,该图像处理装置可以应用于电子设备,用于实现上述第一方面中的方法。该图像处理装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块,例如,检测模块、发送模块、获取模块和处理模块和显示模块等。
其中,检测模块,被配置为电子设备检测到用户的拍摄操作;发送模块,被配置为响应于拍摄操作,电子设备的第一应用向电子设备的摄像头发送拍摄指令,拍摄指令包括拍摄请求、预览请求、多张出帧图像的出帧顺序以及每张出帧图像的帧类型;多张出帧图像的帧类型包括第一帧类型和第二帧类型,第一帧类型和第二帧类型不同;获取模块,被配置为响应于拍摄请求,电子设备的摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型获取多张出帧图像;处理模块,被配置为响应于预览请求,电子设备的图像前端处理引擎IFE基于多张出帧图像,得到待显示预览图像,并向第一应用发送待显示预览图像;待显示预览图像的帧类型为第一帧类型;显示模块,被配置为第一应用接收并显示待显示预览图像。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为从摄像头获取多张出帧图像,并确定多张出帧图像的帧类型;IFE基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,并向电子设备发送第一出帧图像;第一出帧图像的帧类型为第一帧类型;电子设备基于第一出帧图像生成待显示预览图像。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,确定多张出帧图像中每张出帧图像的帧类型。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;对多张出帧图像进行图像处理,得到处理后的多张出帧图像,处理后的多张出帧图像包括第二出帧图像对应的第一出帧图像。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为对多张出帧图像进行图像处理,得到处理后的多张出帧图像;创建多张出帧图像和处理后的多张出帧图像的对应关系;基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;基于对应关系,在处理后的多张出帧图像中,确定第二出帧图像对应的第一出帧图像。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为激活预览端口;利用预览端口将第一出帧图像发送至电子设备。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为将预览端口对应的依赖设置为第一状态,第一状态用于指示预览端口处于激活状态。
结合第二方面,在一种可能的实现方式中,处理模块,还被配置为对多张出帧图像进行图像处理和融合处理,得到拍摄图像;发送模块,还被配置为电子设备向第一应用发送拍摄图像;显示模块,还被配置为第一应用接收并显示拍摄图像。
第三方面,本公开提供一种电子设备,包括:存储器、显示屏和一个或多个处理器;存储器、显示屏与处理器耦合。其中,存储器用于存储计算机程序代码,计算机程序代码包括计算机指令;当电子设备运行时,该处理器用于执行该存储器存储的一个或多个计算机指令,以使电子设备执行如上述第一方面中任一项的图像处理方法。
第四方面,本公开提供一种计算机存储介质,包括计算机指令,当计算机指令在电子设备上运行时,使得电子设备执行如第一方面中任一项的图像处理方法。
第五方面,本公开提供一种计算机程序产品,当计算机程序产品在电子设备上运行时,使得电子设备执行如第一方面中任一项的图像处理方法。
第六方面,提供了一种装置(例如,该装置可以是芯片系统),该装置包括处理器,用于支持第一设备实现上述第一方面中所涉及的功能。在一种可能的设计中,该装置还包括存储器,该存储器,用于保存第一设备必要的程序指令和数据。该装置是芯片系统时,可以由芯片构成,也可以包含芯片和其他分立器件。
应当理解的是,上述第二方面至第六方面的有益效果可以参见上述第一方面中的相关描述,在此不再赘述。
附图说明
图1为相关技术中图像拍摄的应用场景的显示示意图。
图2为相关技术中图像拍摄过程对应的出帧示意图。
图3为相关技术中图像拍摄过程涉及的拍摄原理示意图。
图4为本公开实施例提供的一种电子设备的硬件结构示意图。
图5为本公开实施例提供的一种电子设备中软件结构框图。
图6为本公开实施例提供的一种图像处理方法的流程示意图一。
图7为本公开实施例提供的一种图像处理方法的应用场景的显示示意图一。
图8为本公开实施例提供的一种图像处理方法涉及的拍摄原理示意图。
图9为本公开实施例提供的一种图像处理方法对应的出帧示意图。
图10为本公开实施例提供的一种图像处理方法的应用场景的显示示意图二。
图11为本公开实施例提供的一种图像处理方法的流程示意图二。
图12为本公开实施例提供的一种图像处理装置的结构示意图。
具体实施方式
以下,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。在本实施例的描述中,除非另有说明,“多个”的含义是两个或两个以上。
目前,手机等电子设备中均设置有图像拍摄功能。以手机为例,如图1中的(a)所示,在检测到用户启动相机应用程序后,手机可调用相机应用程序打开摄像头,并且显示相机应用程序的第一相机界面100。第一相机界面100中包括区域101、区域102和区域103。其中,区域101(又称预览区域)占据相机应用程序的大部分区域,主要用于显示预览图像。该预览图像为图像拍摄的预览阶段生成的图像,预览图像会随着用户的移动而发生变化。区域102固定在区域101下方,主要用于显示相机应用程序的多种拍摄模式,例如:全景模式、视频模式、照片模式和人像模式等等。区域103固定在区域102下方,主要用于显示多个功能选项,例如:“拍摄”选项、“拍摄图片”选项以及“切换摄像头”选项。当用户移动到合适的拍摄角度后,可以点击“拍摄”选项。
手机在检测到用户对“拍摄”选项的点击操作后,可以响应于该点击操作,显示如图1中的(b)所示的相机应用程序的第二相机界面104。第二相机界面104中包括与上述“拍摄图片”选项类似的“拍摄图片”选项105。响应于用户对“拍摄”选项的点击操作,“拍摄图片”选项105显示捕获的拍摄图像。
在上述生成拍摄图像的过程中,手机会使用到相机应用程序的预览功能和拍摄功能。预览功能主要应用在图像拍摄的预览阶段,拍摄功能主要应用在图像拍摄的拍摄阶段。如图2中的(a)所示,在图像拍摄的预览阶段,相机应用程序可以驱动手机的摄像头中的图像传感器(Sensor)启动,Sensor启动后会因为受到曝光的影响,输出多张正常曝光帧(即预览图像)。在图像拍摄进入拍摄阶段,相机应用程序也会调用Sensor启动,以输出多张正常曝光帧、长曝光帧和短曝光帧。
在相关技术的软件框架下,相机应用程序在图像拍摄过程中无法同时启用预览功能和拍摄功能。如图3中的(a)所示,预览功能的实现涉及相机应用程序、摄像头、图像前端引擎以及预览处理模块之间的交互。在利用预览功能生成预览图像时,图3中的(a)中的线路2(即拍摄功能对应的拍摄线路)处于断开状态。例如,在摄像头响应于相机APP采集到多张初始帧图像时,可以将多张初始帧图像发送至IFE进行前端处理。IFE将处理后的帧图像通过线路1(即预览功能对应的预览线路)中的预览处理模块继续进行处理,以得到预览图像。接着预览处理模块将预览图像发送至相机应用程序,相机应用程序接收并显示预览图像。
如图3中的(b)所示,拍摄功能的实现涉及相机应用程序、摄像头、图像前端引擎以及拍摄处理模块之间的交互。在利用拍摄功能生成拍摄图像时,图3中的(b)中的线路1处于断开状态。例如,在摄像头响应于相机APP采集到多张初始帧图像时,可以将多张初始帧图像送至IFE进行前端处理。IFE将处理后的帧图像通过线路2中的拍摄处理模块继续进行处理,以得到拍摄图像。接着拍摄处理模块将拍摄图像发送至相机应用程序,相机应用程序接收并显示拍摄图像。
结合图3中的(b)可知,在拍摄阶段,由于线路1处于断开状态,则可以认为相机应用程序的预览功能无法使用。一般,相机应用程序显示的图像的帧类型为正常曝光帧。根据前述可知,预览功能可以使正常曝光帧显示在相机应用程序的预览区域。因此,由于拍摄阶段预览功能无法使用,如图2中的(b)所示,拍摄阶段中采集的正常曝光帧不能送显到相机应用程序的预览区域。
通常相机应用程序调用拍摄功能进行拍摄也需要一定时长,所以在使用拍摄功能时,相机应用程序在预览区域101无法为用户提供实时的预览图像。一般,拍摄功能所需的时长与预先设置的Sensor出帧的帧数有关。若预先设置的出帧的帧数较多,那么相机应用程序的预览区域101将在较长的一段时间内只显示拍摄前的最后一帧预览图像。对于用户而言,用户在较长的一段时间内只能看到一帧预览图像,且该预览图像无法实时变化。这样,会让用户感受到明显的卡顿现象,从而降低了用户的使用体验。
对此,本公开实施例提供一种图像处理方法,该方法可以在图像拍摄过程中,能够同时启动预览功能和拍摄功能,使手机在使用拍摄功能时,也可以为用户实时展示待显示预览图像,避免出现预览区域的待显示预览图像不变的情况以及卡顿现象。从而提高预览图像输出的流畅性以及用户的使用体验。
下面将结合附图对本实施例的实施方式进行详细描述。
示例性的,本公开实施例提供的一种图像处理方法可应用于手机、车载设备(也可称为车机)、平板电脑、笔记本电脑、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、手持计算机、上网本、个人数字助理(personal digital assistant,PDA)、可穿戴电子设备、虚拟现实设备等具有拍摄功能的电子设备,本公开实施例对此不做任何限制。
以手机为上述电子设备举例,如图4所示,为手机的一种结构示意图。
其中,手机400可以包括处理器410,外部存储器接口420,内部存储器421,通用串行总线(universal serial bus,USB)接口430,充电管理模块440,电池管理模块441,电池442,天线1,天线2,移动通信模块450,无线通信模块460,音频模块470,扬声器470A,受话器470B,麦克风470C,耳机接口470D,传感器模块480,按键490,马达491,指示器492,摄像头493以及显示屏494等。
其中,传感器模块480可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
可以理解的是,本实施例示意的结构并不构成对手机400的具体限定。在另一些实施例中,手机400可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。
处理器410可以包括一个或多个处理单元,例如:处理器410可以包括应用处理器(application processor,AP),调制解调处理器,图形处理器(graphics processingunit,GPU),图像信号处理器(image signal processor,ISP),控制器,存储器,视频编解码器,数字信号处理器(digital signal processor,DSP),基带处理器,和/或神经网络处理器(neural-network processing unit,NPU)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。控制器可以是手机400的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。
处理器410中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器410中的存储器为高速缓冲存储器。该存储器可以保存处理器410刚用过或循环使用的指令或数据。如果处理器410需要再次使用该指令或数据,可从存储器中直接调用。避免了重复存取,减少了处理器410的等待时间,因而提高了系统的效率。
在一些实施例中,处理器410可以包括一个或多个接口。接口可以包括集成电路(inter-integrated circuit,I2C)接口,集成电路内置音频(inter-integrated circuitsound,I2S)接口,脉冲编码调制(pulse code modulation,PCM)接口,通用异步收发传输器(universal asynchronous receiver/transmitter,UART)接口,移动产业处理器接口(mobile industry processor interface,MIPI),通用输入输出(general-purposeinput/output,GPIO)接口,用户标识模块(subscriber identity module,SIM)接口,和/或通用串行总线(universal serial bus,USB)接口等。
可以理解的是,本实施例示意的各模块间的接口连接关系,只是示意性说明,并不构成对手机400的结构限定。在另一些实施例中,手机400也可以采用上述实施例中不同的接口连接方式,或多种接口连接方式的组合。
充电管理模块440用于从充电器接收充电输入。充电管理模块440为电池442充电的同时,还可以通过电池管理模块441为电子设备供电。
电池管理模块441用于连接电池442,充电管理模块440与处理器410。电池管理模块441接收电池442和/或充电管理模块440的输入,为处理器410,内部存储器421,外部存储器,显示屏494,摄像头493,和无线通信模块460等供电。在其他一些实施例中,电池管理模块441也可以设置于处理器410中。在另一些实施例中,电池管理模块441和充电管理模块440也可以设置于同一个器件中。
手机400的无线通信功能可以通过天线1,天线2,移动通信模块450,无线通信模块460,调制解调处理器以及基带处理器等实现。
天线1和天线2用于发射和接收电磁波信号。手机400中的每个天线可用于覆盖单个或多个通信频带。不同的天线还可以复用,以提高天线的利用率。例如:可以将天线1复用为无线局域网的分集天线。
移动通信模块450可以提供应用在手机400上的包括2G/3G/4G/5G等无线通信的解决方案。移动通信模块450可以包括至少一个滤波器,开关,功率放大器,低噪声放大器(lownoise amplifier,LNA)等。移动通信模块450可以由天线1接收电磁波,并对接收的电磁波进行滤波,放大等处理,传送至调制解调处理器进行解调。移动通信模块450还可以对经调制解调处理器调制后的信号放大,经天线1转为电磁波辐射出去。
调制解调处理器可以包括调制器和解调器。其中,调制器用于将待发送的低频基带信号调制成中高频信号。解调器用于将接收的电磁波信号解调为低频基带信号。随后解调器将解调得到的低频基带信号传送至基带处理器处理。低频基带信号经基带处理器处理后,被传递给应用处理器。应用处理器通过音频设备(不限于扬声器470A,受话器470B等)输出声音信号,或通过显示屏494显示图像或视频。
无线通信模块460可以提供应用在手机400上的包括无线局域网(wireless localarea networks,WLAN)(如无线保真(wireless fidelity,Wi-Fi)网络),蓝牙(bluetooth,BT),全球导航卫星系统(global navigation satellite system,GNSS),调频(frequencymodulation,FM),近距离无线通信技术(near field communication,NFC),红外技术(infrared,IR)等无线通信的解决方案。无线通信模块460可以是集成至少一个通信处理模块的一个或多个器件。无线通信模块460经由天线2接收电磁波,将电磁波信号调频以及滤波处理,将处理后的信号发送到处理器410。无线通信模块460还可以从处理器410接收待发送的信号,对其进行调频,放大,经天线2转为电磁波辐射出去。
在一些实施例中,手机400的天线1和移动通信模块450耦合,天线2和无线通信模块460耦合,使得手机400可以通过无线通信技术与网络以及其他设备通信。无线通信技术可以包括全球移动通讯系统(global system for mobile communications,GSM),通用分组无线服务(general packet radio service,GPRS),码分多址接入(code divisionmultiple access,CDMA),宽带码分多址(wideband code division multiple access,WCDMA),时分码分多址(time-division code division multiple access,TD-SCDMA),长期演进(long term evolution,LTE),BT,GNSS,WLAN,NFC,FM,和/或IR技术等。GNSS可以包括全球卫星定位系统(global positioning system,GPS),全球导航卫星系统(globalnavigation satellite system,GLONASS),北斗卫星导航系统(beidou navigationsatellite system,BDS),准天顶卫星系统(quasi-zenith satellite system,QZSS)和/或星基增强系统(satellite based augmentation systems,SBAS)。
手机400通过GPU,显示屏494,以及应用处理器等实现显示功能。GPU为图像处理的微处理器,连接显示屏494和应用处理器。GPU用于执行数学和几何计算,用于图形渲染。处理器410可包括一个或多个GPU,其执行程序指令以生成或改变显示信息。
显示屏494用于显示图像,视频等。该显示屏494包括显示面板。显示面板可以采用液晶屏幕(liquid crystal display,LCD),发光二极管(light-emitting diode,LED),有机发光二极管(organic light-emitting diode,OLED),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrix organic light emitting diode,AMOLED),柔性发光二极管(flex light-emitting diode,FLED),Miniled,MicroLed,Micro-oLed,量子点发光二极管(quantum dot light emitting diodes,QLED)等。
其中,本公开实施例中的显示屏494如果集成了触摸传感器,则显示屏494可以称为触摸屏。该触摸传感器也可以称为“触控面板”。也就是说,显示屏494可以包括显示面板和触摸面板。触摸传感器用于检测作用于其上或附近的触摸操作。触摸传感器检测到触摸操作后,可触发内核层的驱动(如TP驱动)周期性地扫描该触摸操作产生的触摸参数。然后,内核层的驱动将触摸参数传递给上层的相关模块,以便于相关模块确定触摸参数对应的触摸事件。
另外,显示屏494可以提供与触摸操作相关的视觉输出。在另一些实施例中,触摸传感器也可以设置于手机400的表面,而不是集成在显示屏494中。此时,触摸传感器与显示屏494所处的位置可以不同。本公开实施例中以屏幕是集成有触摸传感器的屏幕为例,对播放界面的显示方法的具体过程进行说明。
手机400可以通过ISP,摄像头493,视频编解码器,GPU,显示屏494以及应用处理器等实现拍摄功能。一般的,图像信号处理器包括图像前端引擎(image front end,IFE)、拜耳处理阶段(bayer processing segment,BPS)以及图像处理引擎(image processingengine,IPE)等模块。
ISP用于处理摄像头493反馈的数据。摄像头493用于捕获静态图像或视频。数字信号处理器用于处理数字信号,除了可以处理数字图像信号,还可以处理其他数字信号。视频编解码器用于对数字视频压缩或解压缩。手机400可以支持一种或多种视频编解码器。这样,手机400可以播放或录制多种编码格式的视频,例如:动态图像专家组(moving pictureexperts group,MPEG)4,MPEG2,MPEG4,MPEG4等。
NPU为神经网络(neural-network,NN)计算处理器,通过借鉴生物神经网络结构,例如借鉴人脑神经元之间传递模式,对输入信息快速处理,还可以不断的自学习。通过NPU可以实现手机400的智能认知等应用,例如:图像识别,人脸识别,语音识别,文本理解等。
外部存储器接口420可以用于连接外部存储卡,例如Micro SD卡,实现扩展手机400的存储能力。外部存储卡通过外部存储器接口420与处理器410通信,实现数据存储功能。例如将音乐,视频等文件保存在外部存储卡中。内部存储器421可以用于存储计算机可执行程序代码,可执行程序代码包括指令。处理器410通过运行存储在内部存储器421的指令,从而执行手机400的各种功能应用以及数据处理。例如,在本公开实施例中,处理器410可以通过执行存储在内部存储器421中的指令,内部存储器421可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,至少一个功能所需的应用程序(比如声音播放功能,图像播放功能等)等。存储数据区可存储手机400使用过程中所创建的数据(比如音频数据,电话本等)等。此外,内部存储器421可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universal flashstorage,UFS)等。
手机400可以通过音频模块470,扬声器470A,受话器470B,麦克风470C,耳机接口470D,以及应用处理器等实现音频功能。例如音乐播放,录音等。
音频模块470用于将数字音频信息转换成模拟音频信号输出,也用于将模拟音频输入转换为数字音频信号。音频模块470还可以用于对音频信号编码和解码。扬声器470A,也称“喇叭”,用于将音频电信号转换为声音信号。受话器470B,也称“听筒”,用于将音频电信号转换成声音信号。麦克风470C,也称“话筒”,“传声器”,用于将声音信号转换为电信号。耳机接口470D用于连接有线耳机。
按键490包括开机键,音量键等。按键490可以是机械按键。也可以是触摸式按键。手机400可以接收按键输入,产生与手机400的用户设置以及功能控制有关的键信号输入。马达491可以产生振动提示。马达491可以用于来电振动提示,也可以用于触摸振动反馈。指示器492可以是指示灯,可以用于指示充电状态,电量变化,也可以用于指示消息,未接来电,通知等。SIM卡接口495用于连接SIM卡。SIM卡可以通过插入SIM卡接口495,或从SIM卡接口495拔出,实现和手机400的接触和分离。手机400可以支持4个或N个SIM卡接口,N为大于4的正整数。SIM卡接口495可以支持Nano SIM卡,Micro SIM卡,SIM卡等。
上述手机的软件系统可以采用分层架构,事件驱动架构,微核架构,微服务架构,或云架构。本发明实施例以分层架构的
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过接口通信。在一些实施例中,将
应用程序层可以包括一系列应用程序包。
图5是本公开实施例的手机的软件结构框图。
分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为五层,从上至下分别为应用程序层,应用程序框架层,安卓运行时(Android runtime)和系统库,HAL(hardware abstractionlayer,硬件抽象层)层以及内核层。
应用程序层可以包括一系列应用程序。
如图5所示,上述应用程序可以包括通话,联系人,相机,图库,日历,地图,导航,蓝牙,音乐,视频,短信息等应用(application,APP)。
在本公开实施例中,应用程序层中可以安装具有拍摄功能的APP,例如,相机应用程序。当然,其他APP需要使用拍摄功能时,也可以调用相机应用程序实现拍摄功能。
应用程序框架层为应用程序层的应用程序提供应用编程接口(applicationprogramming interface,API)和编程框架。应用程序框架层包括一些预先定义的函数。
如图5所示,以相机应用程序举例,应用程序框架层中可设置相机服务(CameraService)。相机应用程序可通过调用预设的API启动CameraService。CameraService在运行过程中可以与HAL(hardware abstraction layer,硬件抽象层)中的Camera HAL交互。
其中,Camera HAL负责与手机中实现拍摄功能的硬件设备(例如摄像头)进行交互。Camera HAL中包括IFE、预览处理模块和拍摄处理模块。IFE用于对摄像头输出的帧图像进行前端处理,以输出预览处理模块和拍摄处理模块能够支持处理的图像。预览处理模块用于对IFE输出的图像进行预览处理,以得到预览图像。拍摄处理模块用于对IFE输出的图像进行拍摄处理,以得到预拍摄图像。图像融合模块用于对拍摄处理模块输出的多张预拍摄图像进行融合处理,以得到拍摄图像。
示例性的,应用程序框架层中还可以包括活动管理器,窗口管理器,内容提供器,资源管理器,输入法管理器等。
其中,活动管理器可用于管理每个应用的生命周期。应用通常以activity的形式运行在操作系统中。活动管理器可以调度应用的activity进程管理每个应用的生命周期。窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等。
Android runtime包括核心库和虚拟机。Android runtime负责安卓系统的调度和管理。
核心库包含两部分:一部分是java语言需要调用的功能函数,另一部分是安卓的核心库。
应用程序层和应用程序框架层运行在虚拟机中。虚拟机将应用程序层和应用程序框架层的java文件执行为二进制文件。虚拟机用于执行对象生命周期的管理,堆栈管理,线程管理,安全和异常的管理,以及垃圾回收等功能。
系统库可以包括多个功能模块。例如:表面管理器(surface manager),媒体库(Media Libraries),三维图形处理库(例如:OpenGL ES),2D图形引擎(例如:SGL)等。
其中,表面管理器用于对显示子系统进行管理,并且为多个应用程序提供了2D和3D图层的融合。媒体库支持多种常用的音频,视频格式回放和录制,以及静态图像文件等。媒体库可以支持多种音视频编码格式,例如:MPEG4,H.264,MP3,AAC,AMR,JPG,PNG等。三维图形处理库用于实现三维图形绘图,图像渲染,合成,和图层处理等。2D图形引擎是2D绘图的绘图引擎。
内核层是硬件和软件之间的层。内核层至少包含显示驱动,摄像头驱动,音频驱动,传感器驱动等,本公开实施例对此不做任何限制。
下面以手机为例,结合附图详细阐述本公开实施例提供的一种图像处理方法。该方法可以应用于上述电子设备。需要说明的是,本公开实施例中图像处理方法可以应用于预览阶段和拍摄阶段。下面详细介绍本公开实施例的图像处理方法在预览阶段和拍摄阶段的具体应用。
示例性的,如图6所示,在0-T1的时间段内,相机应用程序处于预览阶段。预览阶段涉及手机中第一应用、IFE、摄像头以及预览处理模块之间的交互。
其中,第一应用、IFE、摄像头以及预览处理模块之间的交互过程如下述步骤601-步骤612。
步骤601、手机检测到用户对第一应用的启动操作。
其中,启动操作用于触发第一应用启动。
示例性的,启动操作为单击操作、双击操作、指关节敲击,多指选择操作中任一项。第一应用可以为任一具有图像拍摄功能的应用。例如,第一应用可以是相机应用程序、美颜应用程序、修图应用程序等。
在一些示例中,在用户需要使用手机的相机应用程序进行拍摄时,用户可以触发手机的相机应用程序开启,手机的相机应用程序可以触发手机的摄像头开启。在摄像头开启后,可以利用摄像头在相机应用程序上为用户显示预览图像。手机的相机应用程序触发手机的摄像头开启的过程如下述步骤602-步骤606。
在另一些示例中,用户开启相机应用程序的操作,可以是用户对相机应用程序的图标的点击操作。在手机接收到用户开启相机应用程序的操作时,作为响应,手机可以开启相机应用程序。示例性的,如图7中的(a)所示,响应于用户的解锁操作,手机显示界面700,界面700(即:桌面)中包括区域701、区域702和区域703。其中,区域701用于显示常规的提示数据,如:时间、天气、地址等(即,08:00,1月1号,星期四,晴、XX区)。区域702用于显示应用程序图标,例如:视频图标、运行健康图标、天气图标、浏览器图标、收音机图标、设置图标、录音机图标、应用商城图标等。区域703用于显示固定在手机底栏的应用程序图标(当显示界面发生切换时,应用程序图标不发生改变),例如:相机图标、通讯录图标、电话图标以及信息图标。在用户需要拍摄图像时,手机可以接收到用户对“相机图标”的点击操作(即启动操作)。
在另一些示例中,用户开启相机应用程序的操作,可以是用户在使用电子设备其他应用程序的过程中调用相机应用程序,从而开启相机操作。比如用户可以在使用社交应用程序进行图像拍摄时,开启相机应用程序的操作。也就是说,手机可以在运行社交应用程序的过程中,接收开启相机应用程序的操作,以开启相机应用程序。
需要说明的是,用户在手机上执行的操作可以是所有可能执行的操作,用户的操作可以包括但不限于单击,双击,三指敲击,长按,滑动条目,编辑文本,改变进度,启动应用等至少一个操作,本公开对用户操作的类型和操作数量等参数不做限定。
步骤602、响应于启动操作,手机的第一应用向手机的Camera HAL中的IFE发送第一预览通知。
其中,第一预览通知可以是图像预览请求。该图像预览请求用于请求IFE获取预览图像。图像预览请求中还包括预览缓存(又称预览buffer)。该预览buffer用于缓存预览图像。
在手机检测到用户对相机应用程序的启动操作后,作为响应,手机的相机应用程序可以向Camera HAL中的IFE发送第一预览通知,以指示IFE启动手机的摄像头获取预览图像。
在一些示例中,手机的相机应用程序向Camera HAL发送第一预览通知的过程包括:首先手机的相机应用程序响应于点击操作,向CameraService发送图像预览获取请求,该图像预览获取请求用于请求IFE获取预览图像。然后,CameraService接收图像预览获取请求。最后,CameraService响应于图像预览获取请求,向Camera HAL中的IFE发送第一预览通知。
上述手机的相机应用程序向Camera HAL发送第一预览通知的过程,可以参考图5中控制流在操作系统内部中的相机应用程序、CameraService以及Camera HAL之间的具体传递过程来实现。如图5所示,相机应用程序可以响应于用户的启动操作,下发图像预览处理请求至CameraService。CameraService可响应于图像预览处理请求,向Camera HAL中的IFE发送第一预览通知,以使Camera HAL中的IFE调用相机驱动,由相机驱动驱动摄像头等硬件设备响应该图像预览处理请求获取预览图像。
步骤603、IFE接收第一预览通知。
步骤604、响应于第一预览通知,手机的IFE向手机的摄像头发送第二预览通知。
其中,第二预览通知可以是预览图像采集请求。该预览图像采集请求用于请求摄像头获取预览图像。
在手机的IFE接收到第一预览通知后,作为响应,手机的IFE可以向手机的摄像头发送第二预览通知,以指示摄像头获取预览图像。
在一些示例中,手机的IFE向手机的摄像头发送第二预览通知的过程包括:首先,IFE响应于第一预览通知,向相机驱动发送驱动请求。驱动请求用于请求相机驱动驱动摄像头获取第一预览数据流。其次,相机驱动接收驱动请求。最后,相机驱动响应于驱动请求,向摄像头发送第二预览通知。
上述手机的IFE向手机的摄像头发送第二预览通知的过程,可以参考图5中控制流在操作系统内部中的Camera HAL、相机驱动以及摄像头之间的具体传递过程来实现。如图5所示,Camera HAL中的IFE接收到的第一预览通知后,IFE可以调用内核层中的相机驱动,由相机驱动向摄像头等硬件设备发送第二预览通知,从而获取预览图像。
在一些示例中,相机驱动向摄像头发送第二预览通知,以启动摄像头来获取预览图像。一般,手机的相机驱动可以通过USB接口或者MIPI接口,向摄像头发送第二预览通知。即手机的相机驱动可以通过USB接口或者MIPI接口调用摄像头。
步骤605、摄像头接收第二预览通知。
步骤606、响应于第二预览通知,获取第一预览数据流,并向IFE发送第三预览通知。
其中,第三预览通知用于请求IFE对第一预览数据流进行格式转化,以得到第二预览数据流。第三预览通知包括第一预览数据流。
第一预览数据流,即手机的摄像头拍摄到的第一预览数据流。该第一预览数据流可以包括多张第一预出帧图像。如图2中的(a)所示,在预览阶段,摄像头获取的第一预览数据流中的多帧第一预出帧图像均为正常曝光帧。
在手机的摄像头接收第二预览通知之后,摄像头可以响应于第二预览通知,获取第一预览数据流。在摄像头获取第一预览数据流后,可以向IFE发送第三预览通知,从而使手机的相机应用程序可以基于摄像头发送的第一预览数据流,显示最终的预览图像。
在一些示例中,手机的摄像头向IFE发送第三预览通知的过程包括:首先,摄像头向相机驱动发送预览图像处理请求,该预览图像处理请求用于请求IFE处理第一预览数据流,该预览图像处理请求包括第一预览数据流。其次,相机驱动接收该预览图像处理请求。最后,相机驱动响应于预览图像处理请求,向IFE发送第三预览通知,第三预览通知包括第一预览数据流。
上述手机的摄像头向IFE发送第三预览通知的过程,可以参考图5中数据流在操作系统内部中的摄像头、相机驱动以及Camera HAL之间的具体传递过程来实现。如图5所示,摄像头获取到第一预览数据流后,可以通过相机驱动,将第一预览数据流发送至CameraHAL中的IFE,以使IFE对第一预览数据流执行进一步处理。
步骤607、IFE接收第三预览通知。
步骤608、响应于第三预览通知,IFE对第一预览数据流进行转化处理,得到第二预览数据流。
由于摄像头获取的第一预览数据流中的多张第一预出帧图像的格式无法被大多图像处理算法直接处理,所以摄像头可以将第一预览数据流发送至IFE,利用IFE对第一预览数据流中的多张第一预出帧图像分别进行格式转化。作为响应,IFE接收到第一预览数据流后,可以对多张第一预出帧图像进行格式转化处理,得到第二预览数据流。
第二预览数据流,即IFE处理第一预览数据流之后得到的。该第二预览数据流可以包括多张第二预出帧图像。在一些示例中,IFE生成的第二预览数据流中的多张第二预出帧图像的格式包括但不限于raw格式、yuv格式、ubwc格式。
步骤609、IFE向预览处理模块发送第四预览通知。
其中,第四预览通知用于请求预览处理模块对第二预览数据流进行处理,以得到预览图像。第四预览通知包括第二预览数据流。
在一些示例中,如图3中的(a)所示,在相机应用程序下发第一预览通知(即图像预览请求)后,IFE与线路1(即预览线路)处于连通状态。在IFE对第一预览数据流进行初步的处理(例如,格式转化处理)得到第二预览数据流后,可以将第二预览数据流通过线路1发送至预览处理模块,以指示预览处理模块对第二预览数据流执行进一步处理,从而得到预览图像。示例性的,预览处理模块对第二预览数据流的处理包括但不限于缩放图像尺寸、设置不同图像区域的明暗程度、基于用户需求对图像进行美化处理等等。
步骤610、响应于第四预览通知,预览处理模块对第二预览数据流进行处理,得到预览图像。
在相机应用程序下发第一预览通知后,IFE和预览处理模块通过线路1连通。在预览处理模块接收到来自IFE的第四预览通知后,作为响应,预览处理模块对第四预览通知中的第二预览数据流进行处理,以得到预览图像。
在一些示例中,如图8中的(a)所示,预览处理模块至少包括IPE和增强型图像处理(super image turbo,SIT)。预览处理模块可以响应于第四预览通知,将第二预览数据流输入IPE,IPE对第二预览数据流执行基础图像处理,以得到处理后的第二预览数据流。接着,IPE将处理后的第二预览数据流输入SIT,SIT对处理后的第二预览数据流进行美化处理,得到预览图像。
其中,IPE对第二预览数据流执行的基础图像处理操作包括但不限于硬件降噪(MFNR、MFSR)、调整大小、噪声处理、颜色处理(色差校正、色度抑制)、细节增强(肤色增强)等操作。
SIT对处理后的第二预览数据流执行的美化处理操作包括但不限于基于用户特定需求对处理后的第二预览数据流进行美化,例如,虚化处理、美颜处理等等。
通过预览处理模块中的IPE和SIT对第二预览数据流进行处理,得到预览图像,该预览图像的图像细节更加生动,更符合用户对于图像的审美。
需要说明的是,预览处理模块对第二预览数据流的处理包括但不限于上述内容提到的硬件降噪、调整大小、噪声处理、颜色处理、细节增强以及虚化处理等图像处理,本公开实施例对此不做任何限制。
步骤611、预览处理模块向第一应用发送预览图像。
在预览处理模块生成预览图像后,可以将预览图像发送至第一应用(即相机应用程序)。相机应用程序接收到预览图像后,相机应用程序可以显示预览图像。
在一些示例中,手机的预览处理模块向相机应用程序发送预览图像的过程包括:首先,预览处理模块向CameraService发送预览图像;然后,CameraService接收预览图像;最后,CameraService向相机应用程序发送预览图像。
上述手机的预览处理模块向相机应用程序发送预览图像的过程,可以参考图5中数据流在操作系统内部中的Camera HAL、CameraService、以及相机应用程序之间的具体传递过程来实现。如图5所示,Camera HAL中的预览处理模块对第二预览数据流进行处理后,得到预览图像。然后通过CameraService,将预览图像发送至相机应用程序,以使相机应用程序显示预览图像。
步骤612、第一应用接收并显示预览图像。
第一应用(即相机应用程序)接收到预览图像后,将预览图像显示在相机应用程序的预览区域。
在一些示例中,从手机显示的角度,对上述步骤602-步骤612生成预览图像的过程进行描述。示例性的,响应于用户对第一应用的启动操作,如图7中的(b)所示,手机启动相机应用程序,显示第一相机界面704。第一相机界面704中包括区域705、区域706和区域707。其中,区域705(又称预览区域)占据相机应用程序的大部分区域,主要用于显示预览图像。区域706固定在区域705下方,主要用于显示相机应用程序的多种拍摄模式,例如:全景模式、视频模式、照片模式和人像模式。区域707固定在区域706下方,主要用于显示多个功能选项,例如:“拍摄”选项、“切换摄像头”选项以及“拍摄图片”选项。其中,区域705显示的预览图像为通过执行上述步骤702-步骤712得到的预览图像。
如图6所示,在T1-T2的时间段内,相机应用程序处于拍摄阶段。拍摄阶段涉及手机中第一应用、IFE、摄像头、拍摄处理模块以及图像融合模块之间的交互。
其中,第一应用、IFE、摄像头、拍摄处理模块以及图像融合模块之间的交互过程如下述步骤613-步骤636。
步骤613、手机检测到用户对第一应用的拍摄操作。
其中,拍摄操作可以是用户点击第一应用(即相机应用程序)中的“拍摄图片”选项,以触发相机应用程序执行图像拍摄。示例性的,拍摄操作也可以为单击操作、双击操作、指关节敲击,多指选择操作中任一项。
在一些示例中,在用户触发手机的相机应用程序进行拍摄时,手机的相机应用程序可以触发手机的摄像头拍摄,从而生成拍摄图像。示例性的,当相机界面中的预览图像符合用户预期的图像拍摄效果时,手机可以检测到用户的拍摄操作。结合步骤612可知,相机应用程序包括多种拍摄模式。此时,说明用户在相机应用程序的照片拍摄模式下执行了拍摄操作,后续手机还可以执行下述步骤继续拍摄图像。
步骤614、响应于上述拍摄操作,手机的第一应用向Camera HAL中的IFE发送第一拍摄通知。
其中,第一拍摄通知可以是拍摄指令。该预览指令用于请求获取拍摄图像。该拍摄指令包括预览buffer和拍摄缓存(又称拍摄buffer)。该拍摄buffer用于缓存拍摄图像。此处的预览buffer用于缓存拍摄阶段生成的待显示预览图像。
第一拍摄通知包括拍摄请求、预览请求以及拍摄的多张出帧图像的出帧顺序以及每张出帧图像的帧类型。
拍摄请求用于请求按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,输出拍摄图像。
预览请求用于请求在摄像头输出多张出帧图像后,在相机应用程序的预览区域显示多张出帧图像中的待显示出帧图像(即待显示预览图像)。该待显示出帧图像的帧类型为正常曝光帧。
在手机检测到用户对相机应用程序的拍摄操作后,作为响应,手机的相机应用程序可以向Camera HAL中的IFE发送第一拍摄通知,以指示启动手机的摄像头,从而获取拍摄图像。也就是说,在手机的相机应用程序接收到用户的拍摄操作之后,电子设备的相机应用程序可以调用Camera HAL中的IFE,Camera HAL中的IFE可以响应于相机应用程序的调用,向摄像头发送第一拍摄通知。
在一些示例中,手机的相机应用程序向Camera HAL发送第一拍摄通知的过程包括:首先,手机的相机应用程序响应于拍摄操作,向CameraService发送图像拍摄获取处理指令。该图像拍摄获取指令用于请求IFE获取拍摄图像。其次,CameraService接收图像拍摄获取指令。最后,CameraService响应于图像拍摄获取指令,向Camera HAL中的IFE发送第一拍摄通知。
上述手机的相机应用程序向Camera HAL发送第一拍摄通知的过程,也可以参考图5中控制流在操作系统内部中的相机应用程序、CameraService以及Camera HAL之间的具体传递过程来实现。如图5所示,在手机的相机应用程序接收到用户的拍摄操作,如用户对相机应用程序的“拍摄”选项的点击操作时,作为响应,相机应用程序下发图像拍摄获取请求至CameraService。CameraService可响应于图像拍摄获取请求,向Camera HAL中的IFE发送第一拍摄通知,Camera HAL中的IFE可以响应于第一拍摄通知,调用相机驱动驱动摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,输出拍摄图像。
步骤615、IFE接收第一拍摄通知。
步骤616、响应于第一拍摄通知,手机的IFE向手机的摄像头发送第二拍摄通知。
其中,第二拍摄通知可以是拍摄图像采集请求。该拍摄图像采集请求用于请求摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,输出多帧初始拍摄图像。拍摄图像采集请求包括多张出帧图像的出帧顺序以及每张出帧图像的帧类型。
在手机的Camera HAL中的IFE接收到手机的相机应用程序发送的拍摄图像采集请求之后,作为响应,手机的IFE可以向手机的摄像头发送拍摄图像采集请求,以指示启动手机的摄像头。
在一些示例中,手机的IFE向手机的摄像头发送第二拍摄通知的过程包括:首先,IFE响应于第一拍摄通知,向相机驱动发送驱动请求。驱动请求用于请求相机驱动驱动摄像头获取第一拍摄数据流。其次,机驱动接收驱动请求。最后,相机驱动响应于驱动请求,向摄像头发送第二拍摄通知。
上述手机的IFE向手机的摄像头发送第二拍摄通知的过程,可以参考图5中控制流在操作系统内部中的Camera HAL、相机驱动以及摄像头之间的具体传递过程来实现。如图5所示,Camera HAL中的IFE接收到的第一拍摄通知后,IFE可以调用内核层中的相机驱动,由相机驱动驱动向摄像头等硬件设备发送第二拍摄通知,从而获取拍摄图像。
在一些示例中,相机驱动向摄像头发送第二拍摄通知,以启动摄像头来获取拍摄图像。一般,手机的相机驱动可以通过USB接口或者MIPI接口,向摄像头发送第二拍摄通知。即手机的相机驱动可以通过USB接口或者MIPI接口调用摄像头。
步骤617、摄像头接收第二拍摄通知。
步骤618、响应于第二拍摄通知,获取第一拍摄数据流,并向IFE发送第三拍摄通知。
其中,第三拍摄通知用于请求IFE在确定出第一拍摄数据流中帧类型为正常曝光帧的第二出帧图像时,设置预览端口;以及对第一拍摄数据流进行格式转化,以得到第二拍摄数据流。第三拍摄通知包括第一拍摄数据流。第一拍摄数据流包括第一出帧图像。
第一拍摄数据流,即手机的摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型拍摄到的第一拍摄数据流。该第一拍摄数据流可以包括多张出帧图像。摄像头拍摄到的多张出帧图像可以是相机设备拍照时拍摄的图片对应的数据,也可以是相机设备在录像时拍摄的图片对应的数据。如图2中的(a)所示,在拍摄阶段,摄像头获取的第一拍摄数据流中的多张出帧图像包括正常曝光帧、长曝光帧和短曝光帧。
在手机的摄像头接收第二拍摄通知后,摄像头可以响应于第二拍摄通知,获取第一拍摄数据流。然后手机的摄像头可以向IFE发送第三拍摄通知,从而使手机的相机应用程序可以基于摄像头发送的第一拍摄数据流,显示最终的拍摄图像,同时在预览区域显示待显示预览图像。其中,待显示预览图像是根据第一拍摄数据流中帧类型为正常曝光帧的出帧图像(即第二出帧图像)得到的。
在一些实施例中,手机的摄像头向IFE发送第一拍摄数据流的过程包括:首先,摄像头向相机驱动发送第一拍摄数据流。其次,相机驱动接收第一拍摄数据流。最后,相机驱动向IFE发送第三预览通知,第三预览通知包括第一拍摄数据流。
上述手机的摄像头向IFE发送第一拍摄数据流的过程,可以参考图5中数据流在操作系统内部中的摄像头、相机驱动以及Camera HAL之间的具体传递过程来实现。如图5所示,摄像头获取到第一拍摄数据流后,可以通过相机驱动,将第一拍摄数据流发送至CameraHAL中的IFE,以便于Camera HAL中的IFE对第一拍摄数据流进行进一步处理。
步骤619、IFE接收第三拍摄通知。
步骤620、响应于第三拍摄通知,IFE确定第一拍摄数据流中每张出帧图像的帧类型。
在相关技术的软件框架中,相机应用程序在拍摄阶段,无法启用预览功能。因此,一段时间内用户在相机界面的预览区域只能看到同一帧预览图像。为了避免长时间只出现同一帧预览图像而带来的卡顿现象,本公开中相机应用程序响应于拍摄操作,下发的第一拍摄通知中包括预览请求。
通过预览请求可以控制IFE,在拍摄阶段,将摄像头生成的正常曝光帧输入线路1。然后应用线路1中的预览处理模块对该正常曝光帧进行处理,得到待显示预览图像,最终将该待显示预览图像显示在相机界面的预览区域,以避免相机应用程序出现的卡顿现象。
结合步骤614可知,相机应用程序下发的拍摄请求中预先设定了摄像头获取的第一拍摄数据流中的多张出帧图像的出帧顺序以及每张出帧图像的帧类型。所以,摄像头将基于拍摄请求中多张出帧图像的出帧顺序以及每张出帧图像的帧类型输出第一拍摄数据流。
结合步骤618可知,第一拍摄数据流中多张出帧图像的帧类型包括正常曝光帧、长曝光帧和短曝光帧。因此,第一拍摄数据流中多个出帧图像的帧类型不完全一样。一般,相机界面的预览区域显示的待显示预览图像的帧类型是正常曝光帧。所以,在IFE输出第二拍摄数据流时,需要先确定多张出帧图像中每张出帧图像的帧类型。从而根据每张出帧图像的帧类型,确定是否将该出帧图像对应的处理后出帧图像发送至预览处理模块。
在一些示例中,IFE确定第一拍摄数据流中每张出帧图像的帧类型是基于多张出帧图像的出帧顺序以及每张出帧图像的出帧类型确定的。
示例性的,IFE可以基于多张出帧图像的出帧顺序以及每张出帧图像的出帧类型,预先获知摄像头输出的多张出帧图像中每张出帧图像的帧类型。在已知每张出帧图像的帧类型的情况下,对于帧类型为正常曝光帧的第二出帧图像,设置标记信息。该标记信息用于表征第二出帧图像的帧类型为正常曝光帧。其中,第二出帧图像为多张出帧图像中的出帧图像。
步骤621、IFE基于第一拍摄数据流中每张出帧图像的帧类型,设置预览端口。
其中,预览端口为IFE和预览处理模块的连接端口。
为了在拍摄阶段,仍然可以在相机界面的预览区域显示出帧图像,IFE会基于第一拍摄数据流中每张出帧图像的帧类型,设置预览端口,以将在相机界面的预览区域显示帧类型为正常曝光帧的图像。
结合步骤620可知,IFE可以确定出第一拍摄数据流中每张出帧图像的帧类型。在IFE确定出第一拍摄数据流中每张出帧图像的帧类型是正常曝光帧还是非正常曝光帧后,对于帧类型为正常曝光帧的第二出帧图像,可以预先设置预览端口,来使IFE可以将基于第二出帧图像生成的第一出帧图像顺利的通过预览端口发送到预览处理模块,以使手机可以相机应用程序的预览区域显示基于该第一出帧图像得到的待显示预览图像。示例性的,如图9所示,在拍摄阶段,IFE通过设置预览端口,可以使相机应用程序的预览区域显示,基于帧类型为正常曝光帧的第一出帧图像得到的待显示预览图像。
对于帧类型为非正常曝光帧的其他出帧图像,IFE不设置预览端口,则其他出帧图像无法进入预览处理模块。其中,非正常曝光帧包括长曝光帧和短曝光帧。
对于可以进入预览模块的发送第一出帧图像,预览处理模块可以对发送第一出帧图像进行处理,以使处理后的出帧图像显示在相机应用程序的预览区域。这样,能够保证在图像拍摄的整个阶段(即预览阶段和拍摄阶段)所有的正常曝光帧都能及时的显示在相机应用程序的预览区域。这样,在相机应用程序使用过程中,用户将不再感受到卡顿现象,增强了相机应用程序使用的流畅性。
在一些示例中,IFE基于第一拍摄数据流中每张出帧图像的帧类型,设置预览端口可以是在IFE确定出第一拍摄数据流中每张出帧图像的帧类型是正常曝光帧还是非正常曝光帧(即长曝光帧和短曝光帧)后,IFE通过修改Port口来实现设置预览端口。
示例性的,IFE修改Port口可以是设置Port口对应的依赖。
例如,在帧类型为正常曝光帧时IFE设置依赖,则Port口被激活,此时,线路1处于连通状态,IFE和预览处理模块之间的连线也处于连通状态。因此,IFE可以向预览处理模块发送第一出帧图像。
在帧类型为非正常曝光帧时不设置依赖,则Port口不会被激活,此时,线路1处于断开状态,IFE和预览处理模块之间的连线也处于断开状态,因此,IFE无法向预览处理模块发送第一出帧图像。
示例性的,IFE修改的Port口的名称为:TARGET_BUFFER_SAT_INPUT_FULL
下面通过代码来详细说明IFE修改Port口的具体过程。
if(pRequestobject->NeedSkipZSLOrNormalFrameSequence(stageSequenceId+1))
{
return result;
}
PopulatestageDependency(pRequestobject,0,pInputDependency,stageSequenceId+1);
}
利用上述代码,IFE可以实现设置预览端口,以使第一出帧图像通过预览端口进入预览处理模块。通过设置预览端口对应的依赖来向电子设备发送第一出帧图像。不仅实现过程简单,且能快速达成发出第一出帧图像的目的。
步骤622、IFE对第一拍摄数据流进行转化处理,得到第二拍摄数据流。
由于摄像头获取的第一拍摄数据流中的多张出帧图像的格式无法被大多图像处理算法直接处理,所以摄像头可以将第一拍摄数据流发送至IFE,利用IFE对第一拍摄数据流中的多张出帧图像分别进行格式转化。作为响应,IFE接收到第一拍摄数据流后,可以对多张出帧图像分别进行格式转化处理,得到第二拍摄数据流。
第二拍摄数据流,即IFE处理第一拍摄数据流之后得到的。该第二拍摄数据流可以包括处理后的多张出帧图像。在一些示例中,IFE生成的第二拍摄数据流中的处理后的多张出帧图像的格式包括但不限于raw格式、yuv格式、ubwc格式。
结合步骤621,在帧类型为正常曝光帧时,IFE会设置预览端口,以使帧类型为正常曝光帧的出帧图像(即第二出帧图像)进入预览处理模块。在第二出帧图像进入预览处理模块之前,IFE还需要对第一拍摄数据流中的第二出帧图像进行转化处理,得到第一出帧图像。最终将第一出帧图像发送至预览处理模块。
在帧类型为非正常曝光帧时,IFE不会设置预览端口,则帧类型为非正常曝光帧的出帧图像无法进入预览处理模块。在IFE对第一拍摄数据流进行转化处理后,得到的第二拍摄数据流会基于第一拍摄通知中拍摄请求,一起进入拍摄处理模块。
在另外一些实施例中,在上述步骤619之后还可以包括步骤623-步骤625。利用步骤623-步骤625也可以实现上述步骤620-步骤622的效果。
步骤623、响应于第三拍摄通知,IFE对第一拍摄数据流进行转化处理,得到第二拍摄数据流。
详细内容参考步骤622的内容,此处不再赘述。
步骤624、IFE确定第二拍摄数据流中处理后的每张出帧图像的帧类型。
其中,第二拍摄数据流中的处理后的多张出帧图像的帧类型包括正常曝光帧、长曝光帧和短曝光帧。
本公开中摄像头获取的第一拍摄数据流中多张出帧图像中包括帧类型为正常曝光帧的第二出帧图像。结合步骤620可知,为了避免长时间只出现同一帧预览图像而带来的卡顿现象,需要将摄像头拍摄的帧类型为正常曝光帧的出帧图像显示在相机应用程序,以使相机应用程序在拍摄阶段,仍可以在相机界面的预览区域为用户显示变化的出帧图像。所以,当IFE得到第二拍摄数据流后,需要确定出第二拍摄数据流中帧类型为正常曝光帧的出帧图像(即第一出帧图像),以利用第一出帧图像,得到待显示预览图像,并将待显示预览图像送显到相机应用程序的预览区域。
在一些示例中,由于IFE对第一拍摄数据流进行格式转化,不改变每张第一出帧图像的帧类型。所以,IFE确定第二拍摄数据流中处理后的每张出帧图像的帧类型可以是基于多张出帧图像的出帧顺序以及每张出帧图像的出帧类型确定的。
示例性的,结合步骤623,IFE对第一拍摄数据流中的每张出帧图像都执行格式转化处理,得到第二拍摄数据流。
IFE可以基于多张出帧图像的出帧顺序以及每张出帧图像的出帧类型,得到摄像头输出的多张出帧图像中每帧出帧图像的帧类型。然后对于帧类型为正常曝光帧的第二出帧图像,IFE设置标记信息。该标记信息用于表征第二出帧图像的帧类型为正常曝光帧。
由于多张出帧图像中帧类型为正常曝光帧的第二出帧图像包括标记信息,且IFE对第一拍摄数据流进行格式转化,不改变每张第一出帧图像的帧类型。
因此,第二拍摄数据流中的部分处理后的出帧图像(即第一出帧图像)也具有标记信息。因此,IFE可以根据这些标记信息,确定出处理后的多张出帧图像中找到帧类型为正常曝光帧的第第一出帧图像。
在另一些示例中,由于IFE对第一拍摄数据流中的多张出帧图像执行格式转化处理是逐张进行的,所以IFE生成处理后的多张出帧图像和多张出帧图像是一一对应的。所以可以为处理后的多张出帧图像和多张出帧图像创建对应关系。接着,IFE可以基于多张出帧图像的出帧顺序以及每张出帧图像的出帧类型,确定出多张出帧图像中每帧出帧图像的帧类型。然后将帧类型为正常曝光帧对应的出帧图像确定为第二出帧图像。最后基于该对应关系,可以在处理后的多张出帧图像中,查找到帧类型为正常曝光帧的第二出帧图像对应的处理后的出帧图像(即第一出帧图像)。
步骤625、IFE基于第二拍摄数据流中处理后的每张出帧图像的帧类型,设置预览端口。
在确定出第二拍摄数据流中处理后的每张出帧图像的帧类型之后,可以基于第二拍摄数据流中处理后的每张出帧图像的帧类型,在帧类型为正常曝光帧时,IFE设置预览端口,以使IFE和预览处理模块处于连通状态,将帧类型为正常曝光帧的第一出帧图像传输至预览处理模块。在帧类型为非正常曝光帧时不设置预览端口,使IFE和预览处理模块处于断开状态,避免帧类型为非正常曝光帧的其他出帧图像传输至预览处理模块。
IFE设置预览端口的详细过程可以参考步骤621中设置预览端口的内容,此处不再赘述。
在步骤620-步骤622或步骤623-步骤625之后,参照图8中的(b),还存在线路1中的模块(即Camera HAL中IFE、预览处理模块)和相机应用程序的交互。IFE、预览处理模块以及相机应用程序的交互过程如以下步骤。
步骤626、IFE向预设处理模块发送第五预览通知。
其中,第五预览通知用于请求预览处理模块对第一出帧图像进行处理,以得到待显示预览图像。第五预览通知包括第一出帧图像。
在一些示例中,当第二拍摄数据流中包括帧类型为正常曝光帧的第一出帧图像时,IFE通过设置预览端口,使IFE与线路1(即预览线路)中的预设处理模块处于连通状态。因此,IFE可以通过该预览端口向预设处理模块发送第五预览通知,以使预设处理模块对第一出帧图像执行进一步图像处理。
步骤627、响应于第五预览通知,预览处理模块对第一出帧图像进行处理,得到待显示预览图像。
其中,第二预览图像为在拍摄阶段生成的待显示预览图像。
在IFE设置预览端口后,IFE和预览处理模块通过线路1连通。在预览处理模块接收到来自IFE的第五预览通知后,作为响应,预览处理模块对第五预览通知中的第一出帧图像进行处理,以得到第二预览图像。其中,预览处理模块对第一出帧图像进行处理的过程可以参考前述步骤610中,预览处理模块对第二预览数据流的处理内容,此处不再赘述。
步骤628、预览处理模块向第一应用发送待显示预览图像。
在预览处理模块生成待显示预览图像后,可以将待显示预览图像发送至相机应用程序。相机应用程序接收到待显示预览图像后,相机应用程序可以显示待显示预览图像。
在一些示例中,手机的预览处理模块向相机应用程序发送待显示预览图像的过程包括:首先,预览处理模块向CameraService发送待显示预览图像。其次,CameraService接收待显示预览图像。最后,CameraService向相机应用程序发送待显示预览图像。
上述手机的预览处理模块向相机应用程序发送待显示预览图像的过程,可以参考图5中数据流在操作系统内部中的Camera HAL、CameraService以及相机应用程序之间的具体传递过程来实现。如图5所示,Camera HAL中的预览处理模块对第一出帧数据进行处理后,得到待显示预览图像。然后通过CameraService,将待显示预览图像发送至相机应用程序,以使相机应用程序对待显示预览图像进行显示。
步骤629、第一应用接收并显示待显示预览图像。
第一应用(即相机应用程序)接收到待显示预览图像后,将待显示预览图像显示在相机应用程序的预览区域。
在一些示例中,从手机显示的角度,对上述在拍摄阶段,生成待显示预览图像的过程进行描述。示例性的,响应于用户对第一应用的拍摄操作,如图10所示,手机显示第二相机界面1000。第二相机界面1000中包括区域1001。其中,区域1001显示拍摄阶段生成的待显示预览图像。第二相机界面1001中还包括区域1002和区域1003。区域1002和区域1003的内容与图1中的(a)中的第一相机界面100中的区域102和区域103的内容类似,此处不再赘述。
在步骤620-步骤622或步骤623-步骤625之后,参照图8中的(b),还存在线路2中的模块(即Camera HAL中的IFE、拍摄处理模块)和相机应用程序的交互。IFE、拍摄处理模块以及相机应用程序的交互过程如以下步骤。
步骤630、IFE向拍摄处理模块发送第四拍摄通知。
其中,第四拍摄通知用于请求拍摄处理模块对第二拍摄数据流进行处理,以得到拍摄图像。第四拍摄通知包括第二拍摄数据流。
在一些示例中,如图8中的(b)所示,在相机应用程序下发第一拍摄通知(即图像拍摄请求)后,IFE与线路2(即拍摄线路)处于连通状态。在IFE对第一拍摄数据流进行初步的处理(例如,格式转化处理)得到第二拍摄数据流后,可以将第二拍摄数据流通过线路2发送至拍摄处理模块,以指示拍摄处理模块对第二拍摄数据流执行进一步处理,从而得到拍摄图像。示例性的,拍摄处理模块对第二拍摄数据流的处理包括但不限于坏点去除、相位对焦、去马赛克、下采样、高动态范围成像(High Dynamic Range Imaging,HDR)处理以及拜耳的混合降噪处理等等。
步骤631、响应于第四拍摄通知,拍摄处理模块对第二拍摄数据流进行处理,得到第三拍摄数据流。
在相机应用程序下发第一拍摄通知后,IFE和拍摄处理模块通过线路2连通。在拍摄处理模块接收到来自IFE的第四拍摄通知后,作为响应,拍摄处理模块对第四拍摄通知中的第二拍摄数据流进行处理,以得到第三拍摄数据流。
第三拍摄数据流,即拍摄处理模块处理第二拍摄数据流之后得到的。该第三拍摄数据流可以包括多张待融合出帧图像。
在一些示例中,如图8中的(b)所示,拍摄处理模块至少包括BPS、AnchorSync和RawSIT。拍摄处理模块可以响应于第四拍摄通知,将第二拍摄数据流输入BPS,BPS对第二拍摄数据流执行预处理,以得到处理后的第二拍摄数据流。接着,BPS将处理后的第二拍摄数据流依次输入AnchorSync和RawSIT,以得到第三拍摄数据流。
其中,BPS主要用于拍照图像数据的坏点去除、相位对焦、去马赛克,下采样、HDR处理以及Bayer的混合降噪处理等,以得到高质量的出帧图像。AnchorSync用于实现帧同步。RawSIT也用于实现图像的美化处理。
需要说明的是,拍摄处理模块对第二拍摄数据流的处理包括不限于上述内容提到的坏点去除、相位对焦、去马赛克,下采样、HDR处理等图像处理,本公开实施例对此不做任何限制。
步骤632、预览处理模块向图像融合模块发送第五拍摄通知。
其中,第五拍摄通知用于请求图像融合模块对第三拍摄数据流进行融合,以得到拍摄图像。第五拍摄通知包括第三拍摄数据流。
在预览处理模块生成第三拍摄数据流后,结合步骤631可知,第三拍摄数据流包括多张待融合出帧图像。通常,用户看到的拍摄图像是一张图像,所以预览处理模块生成包括多张待融合出帧图像的第三拍摄数据流后,可以把第三拍摄数据流发送至图像融合模块,以使多张待融合出帧图像被融合为一张拍摄图像,最终以拍摄图像的形式显示在相机应用程序上。
步骤633、图像融合模块接收第五拍摄通知。
步骤634、响应于第五拍摄通知,图像融合模块对第三拍摄数据流进行融合,得到第一拍摄图像。
在手机的图像融合模块接收到第五拍摄通知后,作为响应,手机的图像融合模块可以对第三拍摄数据流进行融合处理,以生成拍摄图像。
步骤635、图像融合模块向第一应用发送拍摄图像。
在图像融合模块生成第一拍摄图像后,可以将第一拍摄图像发送至第一应用(即相机应用程序),相机应用程序接收到第一拍摄图像后,相机应用程序可以显示该拍摄图像。
在一些示例中,手机的图像融合模块向相机应用程序发送拍摄图像的过程包括:首先,图像融合模块向CameraService发送拍摄图像。其次,CameraService接收拍摄图像。最后,CameraService向相机应用程序发送拍摄图像。
上述手机的图像融合模块向相机应用程序发送拍摄图像的过程,可以参考图5中数据流在操作系统内部中的Camera HAL、CameraService以及相机应用程序之间的具体传递过程来实现。如图5所示,Camera HAL中的图像融合模块对第三拍摄数据流进行融合处理后,得到拍摄图像。然后通过CameraService,将拍摄图像发送至相机应用程序,以使相机应用程序对拍摄图像进行显示。
步骤636、第一应用接收并显示拍摄图像。
第一应用(即相机应用程序)接收到拍摄图像后,将拍摄图像显示在相机应用程序中。
需要说明的是,在步骤636之后,相机应用程序会不断的在预览阶段和拍摄阶段来回切换。不论相机应用程序切换到上述两种阶段的预览阶段,还是拍摄阶段,都可以采用前述与预览阶段相关的步骤对应的处理方式,或者与拍摄阶段相关的步骤对应的处理方式来实现相机应用程序的功能,直至相机应用程序在后台中被关闭为止。
采用本公开的方案,在手机检测到用户的拍摄操作时,相机应用程序会下发拍摄请求、预览请求以及多张出帧图像的出帧顺序以及每张出帧图像的帧类型。多张出帧图像的帧类型包括正常曝光帧和非正常曝光帧(即长曝光帧和短曝光帧)。手机的摄像头可以根据拍摄请求,按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型获取多张出帧图像。手机的IFE可以通过摄像头获取多张出帧图像,并基于多张出帧图像,设置预览端口,以得到帧类型为正常曝光帧的待显示预览图像,最终将待显示预览图像在相机应用程序中显示。也就是说,手机预先设置在用户触发拍摄操作时,相机应用程序下发拍摄指令。该拍摄指令中包含预览请求。该预览请求通过设置预览端口,来使手机在拍摄阶段,输出待显示预览图像,并将待显示预览图像显示在相机应用程序中。所以,在拍摄阶段,手机可以根据预览请求持续输出待显示预览图像,且显示该待显示预览图像。因此,利用该图像处理方法能够避免图像拍摄过程中造成的卡顿现象,从而提高了预览图像输出的流畅度和用户的使用体验。
下面结合附图11对本公开实施例提供的图像处理方法进行说明。如图11所示,该图像处理方法可以包括以下步骤1101-步骤1105。
步骤1101、电子设备检测到用户的拍摄操作。
其中,拍摄操作为用户对相机应用程序执行的操作,也可以称为第一操作,详细内容参考步骤613,此处不再赘述。
步骤1102、响应于拍摄操作,电子设备的第一应用向电子设备的摄像头发送拍摄指令,拍摄指令包括拍摄请求、预览请求、多张出帧图像的出帧顺序以及每张出帧图像的帧类型;多张出帧图像的帧类型包括第一帧类型和第二帧类型,第一帧类型和第二帧类型不同。
步骤1103、响应于拍摄请求,电子设备的摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型获取多张出帧图像。
示例性的,第一应用为相机应用程序。第一帧类型为正常曝光帧,第二帧类型为非正常曝光帧。非正常曝光帧包括长曝光帧和短曝光帧。详细内容参考步骤614-步骤618,此处不再赘述。
步骤1104、响应于预览请求,电子设备的图像前端处理引擎IFE基于多张出帧图像,得到待显示预览图像,并向第一应用发送待显示预览图像。
其中,待显示预览图像的帧类型为第一帧类型。即待显示预览图像的帧类型为正常曝光帧。详细内容参考步骤618-步骤628,此处不再赘述。
步骤1105、第一应用接收并显示待显示预览图像。
详细内容参考步骤629,此处不再赘述。
在一些示例中,基于多张出帧图像,得到待显示预览图像,包括:从摄像头获取多张出帧图像,并确定多张出帧图像的帧类型;IFE基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,并向电子设备发送第一出帧图像;第一出帧图像的帧类型为第一帧类型;电子设备基于第一出帧图像生成待显示预览图像。其中,第一出帧图像和待显示预览图像的帧类型均为正常曝光帧。详细内容参考步骤619-步骤628,此处不再赘述。
在一些示例中,确定多张出帧图像的帧类型,包括:按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,确定多张出帧图像中每张出帧图像的帧类型。详细内容参考步骤621,此处不再赘述。
在一些示例中,基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,包括:基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;对多张出帧图像进行图像处理,得到处理后的多张出帧图像,处理后的多张出帧图像包括第二出帧图像对应的第一出帧图像。其中,第一帧类型为正常曝光帧,第二出帧图像和第一出帧图像的帧类型一致。详细内容参考步骤620-步骤622,此处不再赘述。
在一些示例中,基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,包括:对多张出帧图像进行图像处理,得到处理后的多张出帧图像;创建多张出帧图像和处理后的多张出帧图像的对应关系;基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;基于对应关系,在处理后的多张出帧图像中,确定第二出帧图像对应的第一出帧图像。其中,对多张出帧图像进行图像处理可以是多张出帧图像进行格式转化。详细内容参考步骤623-步骤624,此处不再赘述。
在一些示例中,向电子设备发送第一出帧图像,包括:激活预览端口;利用预览端口将第一出帧图像发送至电子设备。详细内容参考步骤621,此处不再赘述。
在一些示例中,将预览端口对应的依赖设置为第一状态,第一状态用于指示预览端口处于激活状态。详细内容参考步骤621,此处不再赘述。
在一些示例中,方法还包括:电子设备对多张出帧图像进行图像处理和融合处理,得到拍摄图像;电子设备向第一应用发送拍摄图像;第一应用接收并显示拍摄图像。其中,第一应用为相机应用程序,详细内容参考步骤630-步骤636,此处不再赘述。
应用本公开的方案,电子设备(例如,手机)预先设置在用户触发拍摄操作时,相机应用程序下发拍摄指令。该拍摄指令中包含预览请求。该预览请求通过设置预览端口,来使手机在拍摄阶段,输出待显示预览图像,并将待显示预览图像显示在相机应用程序中。所以,在用户触发拍摄操作,进入拍摄阶段后,手机可以根据预览请求持续输出待显示预览图像,且显示该待显示预览图像。因此,利用该图像处理方法能够避免图像拍摄过程中造成的卡顿现象,从而提高了预览图像输出的流畅度和用户的使用体验。
另外,上述实施例中是以手机使用相机应用程序拍摄图像作为应用场景举例说明的,可以理解的是,上述显示方法还可以应用于车载设备、平板电脑、手表等其他具有拍摄功能的电子设备中以及其他具有拍摄功能的APP中,本公开实施例对此不做任何限制。
对应于前述实施例中的方法,本公开实施例还提供一种图像处理装置。该图像处理装置可以应用于电子设备,用于实现前述实施例中的方法。该图像处理装置的功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。硬件或软件包括一个或多个与上述功能相对应的模块。
例如,图12示出了一种图像处理装置1200的结构示意图,如图12所示,该图像处理装置1200可以包括:检测模块1201、发送模块1202、获取模块1203和处理模块1204和显示模块1205等。
其中,检测模块1201,被配置为电子设备检测到用户的第一操作(例如,拍摄操作)。
发送模块1202,被配置为响应于第一操作,电子设备的第一应用向电子设备的摄像头发送拍摄指令,拍摄指令包括拍摄请求、预览请求、多张出帧图像的出帧顺序以及每张出帧图像的帧类型;多张出帧图像的帧类型包括第一帧类型和第二帧类型,第一帧类型和第二帧类型不同。
获取模块1203,被配置为响应于拍摄请求,电子设备的摄像头按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型获取多张出帧图像。
处理模块1204,被配置为响应于预览请求,电子设备的图像前端处理引擎IFE基于多张出帧图像,得到待显示预览图像,并向第一应用发送待显示预览图像;待显示预览图像的帧类型为第一帧类型。
显示模块1205,被配置为第一应用接收并显示待显示预览图像。
在一种可能的实现方式中,处理模块1204,还被配置为从摄像头获取多张出帧图像,并确定多张出帧图像的帧类型;IFE基于多张出帧图像和多张出帧图像的帧类型,得到第一出帧图像,并向电子设备发送第一出帧图像;第一出帧图像的帧类型为第一帧类型;电子设备基于第一出帧图像生成待显示预览图像。
在一种可能的实现方式中,处理模块1204,还被配置为按照多张出帧图像的出帧顺序以及每张出帧图像的帧类型,确定多张出帧图像中每张出帧图像的帧类型。
在一种可能的实现方式中,处理模块1204,还被配置为基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;对多张出帧图像进行图像处理,得到处理后的多张出帧图像,处理后的多张出帧图像包括第二出帧图像对应的第一出帧图像。
在一种可能的实现方式中,处理模块1204,还被配置为对多张出帧图像进行图像处理,得到处理后的多张出帧图像;创建多张出帧图像和处理后的多张出帧图像的对应关系;基于多张出帧图像的帧类型,将帧类型为第一帧类型对应的出帧图像确定为第二出帧图像;基于对应关系,在处理后的多张出帧图像中,确定第二出帧图像对应的第一出帧图像。
在一种可能的实现方式中,处理模块1204,还被配置为激活预览端口;利用预览端口将第一出帧图像发送至电子设备。
在一种可能的实现方式中,处理模块1204,还被配置为将预览端口对应的依赖设置为第一状态,第一状态用于指示预览端口处于激活状态。
在一种可能的实现方式中,处理模块1204,还被配置为对多张出帧图像进行图像处理和融合处理,得到拍摄图像;发送模块1202,还被配置为电子设备向第一应用发送拍摄图像;显示模块1205,还被配置为第一应用接收并显示拍摄图像。
应理解以上装置中单元或模块(以下均称为单元)的划分仅仅是一种逻辑功能的划分,实际实现时可以全部或部分集成到一个物理实体上,也可以物理上分开。且装置中的单元可以全部以软件通过处理元件调用的形式实现;也可以全部以硬件的形式实现;还可以部分单元以软件通过处理元件调用的形式实现,部分单元以硬件的形式实现。
例如,各个单元可以为单独设立的处理元件,也可以集成在装置的某一个芯片中实现,此外,也可以以程序的形式存储于存储器中,由装置的某一个处理元件调用并执行该单元的功能。此外这些单元全部或部分可以集成在一起,也可以独立实现。这里的处理元件又可以称为处理器,可以是一种具有信号的处理能力的集成电路。在实现过程中,上述方法的各步骤或以上各个单元可以通过处理器元件中的硬件的集成逻辑电路实现或者以软件通过处理元件调用的形式实现。
在一个例子中,以上装置中的单元可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA,或这些集成电路形式中至少两种的组合。
再如,当装置中的单元可以通过处理元件调度程序的形式实现时,该处理元件可以是通用处理器,例如CPU或其它可以调用程序的处理器。再如,这些单元可以集成在一起,以片上系统SOC的形式实现。
在一种实现中,以上装置实现以上方法中各个对应步骤的单元可以通过处理元件调度程序的形式实现。例如,该装置可以包括处理元件和存储元件,处理元件调用存储元件存储的程序,以执行以上方法实施例的方法。存储元件可以为与处理元件处于同一芯片上的存储元件,即片内存储元件。
在另一种实现中,用于执行以上方法的程序可以在与处理元件处于不同芯片上的存储元件,即片外存储元件。此时,处理元件从片外存储元件调用或加载程序于片内存储元件上,以调用并执行以上方法实施例的方法。
例如,本公开实施例还可以提供一种装置,如:电子设备,可以包括:处理器,用于存储该处理器可执行指令的存储器。该处理器被配置为执行上述指令时,使得该电子设备实现如前述实施例的图像处理方法。该存储器可以位于该电子设备之内,也可以位于该电子设备之外。且该处理器包括一个或多个。
在又一种实现中,该装置实现以上方法中各个步骤的单元可以是被配置成一个或多个处理元件,这些处理元件可以设置于对应上述的电子设备上,这里的处理元件可以为集成电路,例如:一个或多个ASIC,或,一个或多个DSP,或,一个或者多个FPGA,或者这些类集成电路的组合。这些集成电路可以集成在一起,构成芯片。
例如,本公开实施例还提供一种芯片,该芯片可以应用于上述电子设备。芯片包括一个或多个接口电路和一个或多个处理器;接口电路和处理器通过线路互联;处理器通过接口电路从电子设备的存储器接收并执行计算机指令,以实现以上方法实施例中的方法。
本公开实施例还提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备可以实现如上述的图像处理方法。
本公开实施例还提供一种计算机程序产品,包括如上述电子设备运行的计算机指令,当计算机指令在电子设备中运行时,使得电子设备实可以现如上述的图像处理方法。通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。
在本公开所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本公开各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本公开实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,如:程序。该软件产品存储在一个程序产品,如计算机可读存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本公开各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
例如,本公开实施例还可以提供一种计算机可读存储介质,其上存储有计算机程序指令。当计算机程序指令被电子设备执行时,使得电子设备实现如前述方法实施例中的图像处理方法。
以上,仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,任何在本公开揭露的技术范围内的变化或替换,都应涵盖在本公开的保护范围之内。因此,本公开的保护范围应以权利要求的保护范围为准。
- 一种图像处理方法、电子设备及存储介质
- 一种图像处理方法、装置及电子设备
- 一种图像处理方法、装置及电子设备
- 一种图像的处理方法、装置及电子设备
- 一种图像处理方法、装置及电子设备
- 人脸图像处理方法、直播图像处理方法、装置和电子设备
- 图像预处理方法和装置、图像处理方法、电子设备及介质