图像处理方法、电子设备及存储介质与流程

文档序号:29081067发布日期:2022-03-02 00:04阅读:89来源:国知局
图像处理方法、电子设备及存储介质与流程

1.本技术涉及图像处理技术领域,更具体地,涉及一种图像处理方法、电子设备及存储介质。


背景技术:

2.随着智能终端技术的发展,越来越多的智能终端配置有拍照功能,用户可通过随身携带的智能终端随时记录现实场景中的各种内容。智能终端在实现拍照时通常会基于影像处理的软件架构,从而实现图像预览、拍照以及录像等功能,但是相关的软件架构实现拍摄的稳定性较差。


技术实现要素:

3.本技术提出了一种图像处理方法、电子设备及存储介质,以改善上述问题。
4.第一方面,本技术实施例提供了一种图像处理方法,所述方法包括:相机实现层响应于应用程序通过跨进程的方式发起的调用请求,生成与所述调用请求对应的图像参数;将所述图像参数下发至硬件抽象层;接收所述硬件抽象层传输的图像数据,所述图像数据由所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到;对所述图像数据进行预设算法处理,并将所述预设算法处理后的图像数据传输至所述应用程序。
5.第二方面,本技术实施例提供了一种图像处理方法,所述方法应用于图像处理系统,所述图像处理系统包括相机实现层、应用程序以及硬件抽象层,所述相机实现层包括相机实现服务以及相机实现模块,所述方法包括:所述相机实现服务响应于所述应用程序通过跨进程的方式发起的调用请求,指示所述相机实现模块生成与所述调用请求对应的图像参数,并将所述图像参数下发至所述硬件抽象层;所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到图像数据,并将所述图像数据发送至所述相机实现模块;所述相机实现模块对所述图像数据进行预设算法处理,并将所述预设算法处理后的图像数据传输至所述应用程序。
6.第三方面,本技术实施例提供了一种电子设备,所述电子设备包括一个或多个处理器以及存储器;一个或多个程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序配置用于执行上述第一方面或第二方面所述的方法。
7.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有程序代码,其中,在所述程序代码运行时执行上述第一方面或第二方面所述的方法。
8.本技术提供的一种图像处理方法、电子设备及存储介质,本方法通过相机实现层响应于应用程序通过跨进程的方式发起的调用请求,生成与调用请求对应的图像参数;继而将图像参数下发至硬件抽象层;再接收硬件抽象层传输的图像数据,所述图像数据由硬件抽象层基于图像参数从摄像头采集的数据中得到;然后对图像数据进行预设算法处理,并将预设算法处理后的图像数据传输至应用程序。从而通过上述方式使得将图像处理算法
和应用程序分别独立运行在不同的进程中,由此,应用程序能够通过跨进程的方式调用图像拍摄时的相关算法,因而可以减少图像拍摄时的相关算法对应用程序的内存的占用,可以避免出现应用程序的进程内存占用过高而被系统杀掉的情况,从而提高整个架构的稳定性。
附图说明
9.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
10.图1示出了本技术实施例提供的系统架构的一种示意图;
11.图2示出了本技术一实施例提供的一种图像处理方法的方法流程图;
12.图3示出了本技术另一实施例提供的一种图像处理方法的方法流程图;
13.图4示出了本技术实施例提供的系统架构的另一种示意图;
14.图5示出了本技术实施例提供的算法处理服务模块的原理示意图;
15.图6示出了本技术实施例提供的系统架构的再一种示意图;
16.图7示出了本技术又一实施例提供的一种图像处理方法的方法流程图;
17.图8示出了本技术再一实施例提供的一种图像处理方法的方法流程图;
18.图9示出了本技术实施例提供的图像处理系统的结构框图;
19.图10示出了本技术的用于执行根据本技术实施例的一种图像处理方法的电子设备的结构框图;
20.图11是本技术实施例的用于保存或者携带实现根据本技术实施例的一种图像处理方法的程序代码的存储单元。
具体实施方式
21.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
22.影像是一个重要的领域,它广泛存在于手机、电视、手表、安防、交通、医疗等各个行业。其中,软件架构是整个影像的核心之一,它深刻影响着产品竞争力、用户体验、开发效率、技术壁垒等。基于android、linux、windows等系统,各厂商均在进行不同程度的影像软件架构设计。
23.电子设备中通常安装有操作系统(例如安卓系统),操作系统的影像处理架构主要包括应用层以及硬件抽象层。应用层(application layer)可以设置有用于拍照的应用程序(例如系统拍照应用、第三方拍照应用等);硬件抽象层(hardware abstraction layer,hal)是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化。硬件抽象层设置有硬件抽象模块,以安卓系统为例,该硬件抽象模块为安卓原生模块,如原生相机硬件抽象模块camera hal、媒体策略模块和算法管理模块。此外,操作系统中还包括框架层
(framework)、驱动层等,框架层包括各种原生应用的应用接口(如原生相机应用程序接口)、应用服务(如原生相机服务)、框架层接口(如google hal3 interface),驱动层包括各种驱动(例如屏幕display驱动、音频audio驱动等),该驱动层用于使能移动终端的各种硬件,例如图像信号处理器isp+前端图像传感器sensors等。
24.发明人发现,通常都会把实现预览的算法、拍照的算法(比如美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、高动态范围处理、多帧处理等后处理算法)等中的至少部分算法设置于硬件抽象层,以便应用层的应用程序能够进行灵活的调用。并且,这些算法通常是厂商自研或者按照自身需求委托第三方公司代为研发的算法,这些算法会被电子设备的厂商集成到平台厂商开发的hal层中。由于不同电子设备的厂商使用的平台各不相同,hal架构也各不同,那么电子设备厂商就需要频繁的在不同hal架构上二次开发以集成自研的算法或购买的算法,使其可以在hal层正常运行。因此通用性较差,导致可移植性差,迁移工作量大。
25.另外,由于操作系统提供的应用程序接口(api,application programming interface)和框架能力没法满足目前电子设备的厂商开发的各种功能,因此各个电子设备的厂商就会在hal层和framework层进行各种定制化开发,来实现自己的功能。但是这些定制化的开发各个手机厂家都不同,没有标准化,因此不能开放给三方的应用程序,这样就造成了三方的应用程序和自研应用程序的软件流程差异,没法实现复用,从而导致预览、拍照或录像效果差异大,用户体验差。
26.再者,图像拍摄的相关算法与应用程序运行在同一进程,在这种方式下,应用层中的应用程序在调用图像拍摄的相关算法时,需要通过同进程通信(spc,same process communication)调用硬件抽象层中的算法,这就会使调用硬件抽象层中的算法对应用程序的内存进行占用,从而影响软件架构的稳定性。并且,对应用程序的内存的占用也会对应用程序的使用范围有限制。
27.为了优化上述问题,发明人提出了本技术实施例提供的图像处理方法、电子设备以及存储介质,使得将图像处理算法和应用程序分别独立运行在不同的进程中,由此,应用程序能够通过跨进程的方式调用图像拍摄时的相关算法,因而可以减少图像拍摄时的相关算法对应用程序的内存的占用,可以避免出现应用程序的进程内存占用过高而被系统杀掉的情况,从而提高整个架构的稳定性。
28.下面先对本技术实施例提供的图像处理方法的系统架构进行介绍。
29.请参阅图1,图1为本技术实施例提供的一种图像处理方法的系统架构示意图。该系统架构包括应用层410、相机实现层420以及硬件抽象层430。其中,应用层410可以设置有用于拍照的应用程序(app,application),例如系统拍照应用、第三方拍照应用等,应用层410中的应用程序通过集成的api接口访问相机实现层420,以实现影像能力;相机实现层420用于实现拍照的影像处理中的应用程序的鉴权、拍摄时下发至硬件抽象层430的基础参数的决策处理、摄像头的控制逻辑、相机模式的管理、拍摄预览时的处理、算法处理服务(aps,algorithm process service)等,由此可以将依赖于framework和hal的相关软件逻辑、算法、配置文件等分离出来,提升系统架构的通用性。其中,具体的系统架构将在后续实施例中进行详细介绍。
30.下面将结合附图具体描述本技术的各实施例。
31.请参阅图2,示出了本技术一实施例提供的一种图像处理方法的方法流程图,本实施例提供的图像处理方法,可应用于电子设备,所述电子设备可以为智能手机、平板电脑、智能手表、智能眼镜、笔记本电脑等具备移动通信功能的设备,具体不做限定,所述方法包括:
32.步骤s110:相机实现层响应于应用程序通过跨进程的方式发起的调用请求,生成与所述调用请求对应的图像参数。
33.在本技术实施例中,应用层中的应用程序在需要进行图像拍摄时,可以通过api接口向相机实现层发起对相机实现层的调用请求,以完成所需的图像拍摄。其中,相机实现层与应用程序分别独立运行在不同的进程中,相机实现层作为一个apk(android application package,android应用程序包)独立存在,apk内存在一个service,该service运行在独立的进程中,service内主要进行与camera framework及camera hal的协同工作,以及预览、拍照及录像算法处理。由此,应用层中的应用程序通过api接口向相机实现层发起调用请求时,需要先将调用请求发送至该service,再调用service的接口跨进程执行相应指令,即可实现其需求的图像拍摄。其中,调用请求不同,对应的相应指令不同。也就是说,本技术实施例中的相机实现层运行在独立的进程中,或者说,相机实现层因包括运行在独立的进程中的service而运行在独立的进程中。
34.相机实现层在接收到应用层中的应用程序所发送的调用请求之后,可以响应于该应用程序的调用请求,生成与该调用请求对应的图像参数。该图像参数用于指示硬件抽象层需要从摄像头采集的图像数据中抓取指定数据,以及对相机设备的拍摄参数的控制;指定数据可以为硬件抽象层未进行任何算法处理的原始数据,且该指定数据用于后续生成调用请求所需的图像,例如,预览图像、拍照图像、录像画面(包括实时拍摄的视频画面或者是录制的视频画面)等。其中,调用请求中可以携带有相机模式、图像处理功能的开关控制等,相机模式可以包括照片模式、视频模式、夜景模式、人像模式、慢动作、延时摄影、全景等模式,在此不做限定;图像处理功能可以包括美颜、滤镜、虚化、请求预览数据、请求拍照等,在此不做限定。
35.作为一种方式,以上图像参数可以由相机实现层对调用请求进行解析,从而得到调用请求所需拍摄的图像的相关参数后,再对该相关参数进行转换,得到用于硬件抽象层所需的图像参数。其中,相机实现层对该相关参数进行转换,可以是基于该相关参数,确定硬件抽象层对摄像头进行配置所需的基础参数、预览图像时所需抓取的原始数据流、拍摄时所需抓取的原始数据流等,并基于此,生成硬件抽象层能够识别的图像参数。
36.在一种实施方式中,相机实现层可以包括相机实现服务(即上述service)以及相机实现模块(即从依赖于framework和hal的相关软件逻辑、图像处理算法、配置文件等抽离出来所构建的模块),当应用层中的应用程序通过api接口向相机实现层发起调用请求时,可以由相机实现服务响应于应用程序通过跨进程的方式发起的调用请求,指示相机实现模块生成与调用请求对应的图像参数。其中,相机实现模块可以包括相机设备(cameradevice)管理模块、鉴权模块、预览处理模块、aps接入模块、模式管理模块、决策模块、aps调用模块以及aps模块。需要说明的是,在此种实施方式中,可以由相机实现模块执行后续将图像参数下发至硬件抽象层,接收硬件抽象层传输的图像数据以及对所述图像数据进行预设算法处理,并将预设算法处理后的图像数据传输至应用程序的步骤。
37.本实施方式中,相机实现服务运行在独立的进程中,并且相机实现服务以64位进程运行,应用层以32位或64位进程运行。
38.步骤s120:将所述图像参数下发至硬件抽象层。
39.其中,硬件抽象层可以为camera hal。作为一种方式,硬件抽象层可以基于接收的图像参数,对相机设备(摄像头)进行配置,和/或,从相机设备所采集的图像数据中抓取与图像参数所对应的图像数据。
40.可选的,图像参数可以包括:预览阶段或者拍摄阶段所对应的图像参数。可以理解地,若调用请求为预览阶段的请求,则图像参数中应当包括用于获取预览数据对应的原始图像数据的参数;若调用请求为拍摄阶段(例如拍照、录像的触发请求等)的请求,则图像参数中应当包括用于获取生成拍摄图像的原始图像数据的参数。由此,硬件抽象层可以在拍摄过程中的不同阶段,基于相机实现层所发送的图像参数,从相机设备采集的数据中获取未经过处理的原始图像数据。
41.可以理解的是,在进行图像拍摄时,不同的拍摄需求下,相机设备需要进行不同的配置,因而图像参数中还可以包括用于配置相机设备的配置参数,该配置参数用于硬件抽象层对相机设备进行配置,以使硬件抽象层能够从相机设备采集的图像数据中抓取所需的原始图像数据。
42.步骤s130:接收所述硬件抽象层传输的图像数据,所述图像数据由所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到。
43.其中,该图像数据可以用于生成返回至应用程序的图像数据,可选的,该图像数据可以是未经过处理的,并经过后续的处理后返回至应用程序,并由应用程序生成预览图像或者拍摄图像的数据。
44.步骤s140:对所述图像数据进行预设算法处理,并将所述预设算法处理后的图像数据传输至所述应用程序。
45.其中,预设算法处理可以包括对接收的图像数据进行预览处理、后处理等,其中,预览处理用于生成后续应用程序进行屏幕显示的图像数据;后处理用于执行预览处理或者生成拍摄图像的过程中的算法处理,例如美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、高动态范围处理、多帧处理等图像处理。
46.通过对图像数据进行预设算法处理,并将预设算法处理后的图像数据传输至应用程序,使得应用程序可以基于该预设算法处理后的图像数据生成预览图像进行显示,或者生成拍摄图像进行显示和存储。
47.本技术提供的一种图像处理方法,通过相机实现层响应于应用程序通过跨进程的方式发起的调用请求,生成与调用请求对应的图像参数;继而将图像参数下发至硬件抽象层;再接收硬件抽象层传输的图像数据,所述图像数据由硬件抽象层基于图像参数从摄像头采集的数据中得到;然后对图像数据进行预设算法处理,并将预设算法处理后的图像数据传输至应用程序。本方法实现了将图像处理算法和应用程序分别独立运行在不同的进程中,由此,应用程序能够通过跨进程的方式调用图像拍摄时的相关算法,因而可以减少图像拍摄时的相关算法对应用程序的内存的占用,可以避免出现应用程序的进程内存占用过高而被系统杀掉的情况,从而提高整个架构的稳定性。相机实现层与应用程序分别独立运行在不同的进程中,使得相机实现层中的算法可以运行在64位,运行效率更高,同时又可以兼
容所有应用程序(此时应用程序可以运行在32位或者64为)的调用,使得兼容性更好。
48.另外,由于对图像数据进行的预设算法处理过程均在相机实现层中实现,因此无论是自研的应用程序或者是第三方的应用程序,都可以通过跨进程的方式调用相机实现层即可实现图像预览、拍照、录像等,可以实现应用程序的软件流程的复用,进而提升应用程序在拍摄(包括预览、拍照或录像)时的实现效果,提升用户体验。
49.再者,在实现拍摄过程的影像处理过程中,整个处理过程中的相关处理逻辑以及图像处理算法均由相机实现层处理,而硬件抽象层只需要进行基础的相机设备的控制,以及抓取所需的原始图像数据,因此影像处理过程不必依赖于在硬件抽象层中增加处理逻辑和处理算法,从而增强了图像拍摄相关算法的可行移植性以及通用性。
50.请参阅图3,示出了本技术另一实施例提供的一种图像处理方法的方法流程图,本实施例提供的图像处理方法,可应用于电子设备,所述方法包括:
51.步骤s210:所述相机实现层响应于应用程序通过跨进程的方式发起的调用请求,基于所述应用程序的应用信息,对所述应用程序进行权限验证。
52.其中,应用信息可以包括:应用程序的包名、应用程序的签名、应用程序所申请的key(密钥)合法性、应用程序申请的key有效期、应用程序所申请的权限类别、应用程序是否被撤销权限、应用程序所申请key的生效机型等,在此不做限定。
53.作为一种方式,为了验证应用程序的合法性、同时保证影响能力的规范有序开放,相机实现层在响应于应用程序通过跨进程的方式发起的调用请求时,可以先对应用程序进行权限验证。具体的,可以基于应用程序的应用信息,对应用程序进行权限验证。
54.本实施方式中,权限验证通过的条件可以包括以下条件中的一种或者多种:包名为预设白名单中的包名、应用程序的签名合法、应用程序所申请的key合法、应用程序申请的key有效期未过期、应用程序所申请的权限类别包括拍摄权限、应用程序未被撤销权限、应用程序所申请key的生效机型为该电子设备的机型等。
55.步骤s220:若权限验证通过,生成与所述调用请求对应的图像参数。
56.本实施例中,在确定对应用程序的权限验证通过后,相机实现层再生成与调用请求对应的图像参数,可以避免恶意应用调用相机实现层的情况出现,从而降低了用户隐私泄露的风险。
57.步骤s230:将所述图像参数下发至硬件抽象层。
58.作为一种方式,相机实现层在下发图像参数至硬件抽象层时,可以根据硬件抽象层对应的平台信息,将该图像参数转换为指定参数后,再将指定参数下发至硬件抽象层,由此,不同平台所研发的硬件抽象层,本技术实施例中的相机实现层均可以通用,从而提高整体系统架构的通用性和可移植性。
59.步骤s240:接收所述硬件抽象层传输的图像数据,所述图像数据由所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到。
60.作为一种方式,相机实现层响应于应用程序通过跨进程的方式发起的调用请求后,在接收硬件抽象层传输的图像数据之前,可以先向硬件抽象层发送用于开启调用请求对应的指定摄像头的开启请求,开启请求用于指示硬件抽象层控制指定摄像头处于开启状态,以便于实现在应用程序进行图像预览或是图像拍摄的过程之前开启摄像头。可选的,该指定摄像头可以为前置摄像头或者是后置摄像头,具体可以不做限定。
61.本实施方式中,相机实现层可以对每次打开的摄像头进行统一的管理。具体的,在第一次打开指定摄像头时,可以创建开启该指定摄像头对应的session(会话)对象,发送用于开启调用请求对应的指定摄像头的开启请求,以控制指定摄像头开启。在进行指令的执行时,会分发给该指定摄像头执行,例如执行拍照指令。
62.作为一种方式,在指定摄像头处于开启状态的情况下,若相机实现层接收到应用程序发送的模式切换请求,则可以确定相机模式切换请求对应切换至的相机模式所对应的指定摄像头是否为该处于开启状态的指定摄像头;若是该处于开启状态的指定摄像头,则可以保持该指定摄像头处于开启状态;而若不是该处于开启状态的指定摄像头,则可以关闭该指定摄像头。例如,由照片模式切换到人像模式,若人像模式所使用的摄像头与当前开启的摄像头为同一个,但是所处的相机模式不一样,即功能不一样,例如照片模式用的是拍照,人像模式使用的是录像,那么采用该实施方式,则可以在切换模式的时候,摄像头不进行关闭后再重新打开,只是功能进行切换,由此可以避免重复的开启和关闭摄像头,提升图像拍摄的性能。
63.再例如,若从后置拍摄模式切换至前置拍摄模式,由于后置拍摄模式所使用的摄像头为后置摄像头,而前置拍摄模式所使用的摄像头为前置摄像头,即后置拍摄模式所使用的摄像头与前置拍摄模式所使用的摄像头不为同一个,则可以关闭后置摄像头。
64.或者,在需要重新打开摄像头时,可以关闭摄像头后,再次打开该摄像头;类似的,需要重新创建session对象时,可以关闭此前的session对象,然后再创建session对象,然后进行图像拍摄。可选地,可以首先判断是否需要重新打开摄像头,若是,则可以重新打开摄像头后,再执行判断是否重新创建session对象;若不需要重新打开摄像头,则可以直接执行判断是否重新创建session对象;若重新创建session对象,则可以执行重新创建session对象,然后进行图像拍摄。
65.对应用程序进行权限验证可以包括两次鉴权。其中,第一次鉴权可以是通过相机实现层中的权限检查模块进行鉴权,本次鉴权可以使用本地缓存鉴权,第一次鉴权可以保证三方应用打开相机设备(摄像头)之前即可获知该第三方应用是否有权限;第二次鉴权为在系统camera server(相机服务)进程中的鉴权模块进行验证,此时则可以根据上述的应用信息进行鉴权,从而保证鉴权的安全性,防止出现安全漏洞。
66.实际应用时,由于应用程序在调用相机实现层进行图像拍摄时,会首先打开相机设备(摄像头),再进行图像预览、图像拍摄的过程,因此,第一次鉴权可以在刚刚接收到调用请求时执行,并向应用程序返回鉴权结果,若通过,则执行摄像头的开启,若否,则结束流程,并向应用程序返回权限验证结果;在摄像头开启后,则可以执行第二次鉴权,以进一步保证安全性。
67.在一个具体的实施场景中,如图4所示,应用层410中的应用程序(包括系统应用程序和/或第三方应用程序)通过api接口层440中的相机实现接口调用相机实现层420时,相机实现层420的权限检查模块会调用鉴权模块进行权限验证,并返回结果,如果验证通过,可以打开摄像头,此时,可以在相机服务(camera server)层460进程进行第二次鉴权,保证安全性。
68.其中,由于部分相机应用不需要网络权限,因此本实施例方式中的第一次鉴权也可以采用非网络鉴权(即在非连网状态下鉴权)。
69.本技术实施例中,前述实施例所描述的模式管理模块用于实现管理不同的相机模式,例如照片模式、视频模式、夜景模式、人像模式、慢动作、延时摄影、全景等模式。
70.步骤s250:利用所述算法处理服务模块,并根据所述拍摄配置信息对所述原始图像数据以及所述元数据进行对应的预设算法处理。
71.本技术实施例中,调用请求中可以包括拍摄配置信息,图像数据可以包括原始图像数据以及原始图像数据对应的元数据,相机实现层可以包括算法处理服务模块(即前述实施例中所描述的(aps,algorithm process service)模块)。
72.作为一种实施方式,在对硬件抽象层传输的图像数据进行预设算法处理时,可以通过算法处理服务模块,并根据拍摄配置信息对原始图像数据以及原始图像数据对应的元数据进行对应的预设算法处理。
73.在一个具体的实施场景中,如图5所示,相机实现层中可以包括aps接入模块、aps适配(adapter)模块以及aps模块。其中,aps接入模块层为顶层模块接口,用于此模块与其他模块间解耦,从其他模块获取到硬件抽象层传输的预览数据及预览meta(元数据)、拍照数据及拍照元数据、录像数据及录像元数据;aps adapter模块用于对预览数据及预览元数据、拍照数据及拍照元数据、录像数据及录像元数据进行时间戳匹配、buffer转换、meta预处理等;aps模块用于对输入的预览、拍照及录像数据进行算法处理,并返回处理后的数据。aps模块中执行的算法处理可以为后处理算法执行的处理,例如,美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、高动态范围处理、多帧处理等图像处理,在此不做限定。
74.作为另一种实施方式,在利用算法处理服务模块,并根据上述拍摄配置信息对原始图像数据以及原始图像数据对应的元数据进行对应的预设算法处理时,可以由算法处理服务模块调用指定硬件处理模块对应的算法处理文件,以触发指定硬件处理模块基于算法处理文件以及拍摄配置信息对原始图像数据以及原始图像数据对应的元数据进行处理。其中,指定硬件处理模块可以为dsp(digital signal processing,数字信号处理)、snpe(snapdragon neural processing engine,高通骁龙神经处理引擎)等硬件模块。此种方式下,指定硬件处理模块可以理解为算法处理服务模块的硬件支撑,通过指定硬件处理模块对原始图像数据以及原始图像数据对应的元数据进行对应的预设算法处理,再将处理后的结果返回给算法处理服务模块,因dsp以及snpe的性能比cpu更好,因此可以提高计算效率。
75.在一个具体的实施场景中,如图6所示,当相机实现层420接收到硬件抽象层430传输的图像数据后,可以由相机实现层420中的aps模块(即上述的算法处理服务模块)调用指定硬件处理模块对应的算法处理文件,以触发指定硬件处理模块基于算法处理文件以及拍摄配置信息对原始图像数据以及原始图像数据对应的元数据进行处理。其中,关于图6中的其他模块将在后续实施例中进行详细介绍。
76.作为一种方式,前述实施例所描述的预览处理模块可以用于进行预览gpu(graphics processing unit,图形处理器)算法处理,接收外部传入的图像数据,图像数据可以为yuv数据(y为图像亮度数据,u和v为图像色度数据)或者hardwarebuffer,然后经过绑定纹理,再调用算法进行处理,最后输出到输出纹理上,从而可以供应用程序进行屏幕显示或二次特效处理。其中,调用算法进行处理可以利用aps模块实现。
77.由于本模块算法需要gpu处理,而大部分的输入buffer都是中央处理器(central processing unit,cpu)访问的buffer,因此相关技术中,通常是先把cpu访问的buffer拷贝
到gpu访问的buffer,然后再进行gpu算法处理,需要进行buffer拷贝,导致效率较低。因此,本技术实施方式中的预览处理模块设计了采用共享buffer的方式,可以实现cpu访问的buffer共享给gpu使用,不需要进行buffer拷贝,使得整体流程效率更高。
78.步骤s260:将所述预设算法处理后的图像数据传输至所述应用程序。
79.本技术提供的一种图像处理方法,通过对应用程序进行权限验证,保证了相机实现层被调用时的安全性。再者,在相机实现层中设置了算法处理服务模块,对硬件抽象层传输的原始数据进行预设图像处理,因此能够实现对原始数据的算法处理能够由相机实现层实现,而不必在硬件抽象层增加算法处理,因此可以提升通用性。
80.请参阅图7,示出了本技术又一实施例提供的一种图像处理方法的方法流程图,本实施例提供的图像处理方法,可应用于电子设备,所述方法包括:
81.步骤s310:所述相机实现层响应于应用程序通过跨进程的方式发起的调用请求,从所述应用程序对应的所述硬件抽象层的数据流中,确定与所述拍摄配置信息对应的数据流作为目标数据流。
82.本实施方式中,调用请求中可以包括拍摄配置信息,拍摄配置信息可以包括用户选择的相机模式、图像处理功能的开关控制信息等。相机模式可以包括照片模式、视频模式、夜景模式、人像模式、慢动作、延时摄影、全景等模式,在此不做限定;图像处理功能可以包括美颜、滤镜、虚化、请求预览数据、请求拍照等,在此不做限定,图像处理功能的开关控制信息即对这些图像处理功能是否开启的信息。
83.作为一种方式,相机实现层在接收到应用程序通过跨进程的方式发起的调用请求后,可以从应用程序对应的硬件抽象层的数据流中,确定与该拍摄配置信息对应的数据流,以便后续根据硬件抽象层返回的原始图像数据,能够生成与调用请求所对应的图像数据返回至应用程序。可以理解地,硬件抽象层中可以包括多个数据流,不同的数据流提供不同的图像数据,由于后续需要得到用于处理获得的与调用请求对应的图像数据,因此,可以基于调用请求中的拍摄配置信息,选取与拍摄配置信息对应的数据流,并将选取的数据流作为指示硬件抽象层所返回的数据流。
84.作为一种具体的实施方式,由于实现拍摄过程时,会进行预览后,再响应触发指令进行拍摄,因而相机实现层可以先获取应用程序对应的硬件抽象层的数据流组合,该数据流组合可以包括预览数据流以及拍摄数据流(可以包括拍照流或者录像流),以便后续能够确定出与拍摄配置信息对应的预览数据流以及拍摄数据流,分别用于处理得到用于生成预览图像和拍摄图像的图像数据。其中,获取应用程序对应的硬件抽象层的数据流组合,可以包括:获取与应用程序匹配的摄像头标识以及相机模式标识;从硬件抽象层的所有数据流组合中,筛选出与摄像头标识以及相机模式标识对应的数据流组合,通过筛选,可以提升确定目标数据流的效率。
85.其中,应用层中的应用程序可以从支持列表中获取支持的摄像头标识(camera type)以及相机模式标识(mode name),分别传入相机实现层中。摄像头标识代表特定的摄像头或摄像头组合,相机模式标识代表应用程序通常使用的相机模式,例如照片模式、人像模式、夜景模式等。
86.相机实现层获取了应用程序对应的硬件抽象层的数据流组合之后,可以从该数据流组合中,获取与拍摄配置信息对应的数据流组合,作为目标数据流。由于确定出的目标数
据流与拍摄配置信息对应,因此目标数据流携带着即将进入何种相机模式、开启何种图像处理功能等信息,后续可以进一步地根据目标数据流确定出数据流的配置信息。
87.步骤s320:获取所述目标数据流所对应的元数据参数。
88.其中,元数据参数可以包括通过的buffer(缓存)的图像尺寸、图像格式、camera id(相机设备的标识)等信息。作为一种方式,由于目标数据流携带着即将进入何种相机模式、开启何种图像处理功能等信息,因此可以基于此,确定出数据流组合中每个数据流所包含的元数据参数。
89.步骤s330:根据所述目标数据流以及所述元数据参数,生成对应的图像参数。
90.在确定出目标数据流以及元数据参数之后,则可以生成携带有目标数据流以及元数据参数的图像参数,从而后续将图像参数下发至硬件抽象层之后,硬件抽象层能够从相应的目标数据流中,基于元数据参数抓取图像数据以及图像数据对应的元数据,并将对应的图像数据以及图像数据对应的元数据传输至相机实现层。
91.本实施方式中,目标数据流可以为包括预览数据流以及拍摄数据流的数据流组合,因此,可以根据目标数据流以及元数据参数,生成预览阶段或者拍摄阶段所对应的图像参数。即可以根据确定出的预览数据流以及元数据参数,生成预览阶段所对应的图像参数;或根据确定出的拍摄数据流以及元数据参数,生成拍摄阶段所对应的图像参数。
92.步骤s340:将所述图像参数下发至硬件抽象层。
93.步骤s350:接收所述硬件抽象层传输的图像数据,所述图像数据由所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到。
94.步骤s360:对所述图像数据进行预设算法处理,并将所述预设算法处理后的图像数据传输至所述应用程序。
95.本技术实施例提供的图像处理方法,可以实现硬件抽象层能够从相应的数据流中抓取对应的原始图像数据返回至相机实现层,而无需硬件抽象层进行过多的软件逻辑和算法处理,即可实现图像拍摄的影像处理,从而影像处理过程不必依赖于在硬件抽象层中增加处理逻辑和处理算法,从而具备较好地通用性。
96.请参阅图8,示出了本技术再一实施例提供的一种图像处理方法的方法流程图,本实施例提供的图像处理方法,可应用于图像处理系统,所述图像处理系统包括相机实现层、应用程序以及硬件抽象层,所述相机实现层包括相机实现服务以及相机实现模块,所述方法包括:
97.步骤s410:所述相机实现服务响应于所述应用程序通过跨进程的方式发起的调用请求,指示所述相机实现模块生成与所述调用请求对应的图像参数,并将所述图像参数下发至所述硬件抽象层。
98.步骤s420:所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到图像数据,并将所述图像数据发送至所述相机实现模块。
99.步骤s430:所述相机实现模块对所述图像数据进行预设算法处理,并将所述预设算法处理后的图像数据传输至所述应用程序。
100.本实施例中,步骤s410-步骤s430的具体实现过程可以参考前述实施例的内容,在此不再赘述。下面对本实施方式中提供的图像处理方法所涉及的图像处理系统、以及本技术实施例提供的图像处理算法的系统架构图进行介绍:
101.如图6所示,该系统架构可以包括应用层410、api接口层440、相机实现层420、camera framework(相机框架)层450、以及硬件抽象层430。应用层410支持系统应用程序和第三方应用程序接入,并通过api接口层440的相机实现接口(相当于集成api包)访问相机实现层420;api接口层440对camera2api进行封装,提供统一的抽象接口,通过相机模式标识和摄像头标识的组合方式进行影像能力的接入,api接口层440以aar包方式存在,用于提供给第三方app或自研app集成、编译,以达到功能调用的目的。
102.相机实现层420可以包括相机实现服务以及相机实现模块,其中,相机实现层420作为一个apk独立存在,相机实现服务存在于该apk内,相机实现模块主要包括鉴权模块、决策模块、camera device(即相机设备管理)模块、模式管理模块、preview process(即预览处理)模块、aps接入模块、aps适配(adapter)模块以及aps模块。相机实现层420实现camera相关操作,并且和camera framework及camera hal交互,实现与平台hal及硬件能力隔离。
103.请参阅图9,其示出了本技术实施例提供的一种图像处理系统400的结构框图。该图像处理系统400应用上述的电子设备,该图像处理系统400包括:应用程序411、相机实现层420、以及硬件抽象层430。其中,应用程序411用于通过跨进程的方式向相机实现层420发起调用请求;相机实现层420用于响应于调用请求,生成与调用请求对应的图像参数,并将图像参数下发至硬件抽象层430;硬件抽象层430用于基于图像参数从摄像头采集的数据中得到图像数据,并将图像数据发送至相机实现层420;所述相机实现层420还用于对图像数据进行预设算法处理,将预设算法处理后的图像数据传输至应用程序411。需要说明的是,前述各方法实施例所描述的内容同样适用于该图像处理系统400,在此不再赘述。
104.所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
105.在本技术所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
106.另外,在本技术各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
107.请参阅图10,基于上述的图像处理方法,本技术实施例还提供了一种可以执行前述图像处理方法的电子设备100。电子设备100包括存储器102以及相互耦合的一个或多个(图中仅示出一个)处理器104,存储器102以及处理器104之间通信线路连接。存储器102中存储有可以执行前述实施例中内容的程序,而处理器104可以执行存储器102中存储的程序。
108.其中,处理器104可以包括一个或者多个处理核。处理器104利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器102内的指令、程序、代码集或指令集,以及调用存储在存储器102内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器104可以采用数字信号处理(digital signal processing,dsp)、现场可编程门阵列(field-programmable gate array,fpga)、可编程逻辑阵列(programmable logic array,pla)中的至少一种硬件形式来实现。处理器104可集成中央处理器(central processing unit,cpu)、图像处理器(graphics processing unit,gpu)和调制解调器等中的一种或几种的组合。其中,cpu主要处理操作系统、用户界面和应用程序等;gpu用于负责
显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器104中,单独通过一块通信芯片进行实现。
109.存储器102可以包括随机存储器(random access memory,ram),也可以包括只读存储器(read-only memory)。存储器102可用于存储指令、程序、代码、代码集或指令集。存储器102可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现前述各个实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
110.请参考图11,其示出了本技术实施例提供的一种计算机可读存储介质的结构框图。该计算机可读存储介质600中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
111.计算机可读存储介质600可以是诸如闪存、eeprom(电可擦除可编程只读存储器)、eprom、硬盘或者rom之类的电子存储器。可选地,计算机可读存储介质600包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质600具有执行上述方法中的任何方法步骤的程序代码610的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码610可以例如以适当形式进行压缩。
112.综上所述,本技术提供的一种图像处理方法、电子设备及存储介质,本方法包括:相机实现层响应于应用程序通过跨进程的方式发起的调用请求,生成与所述调用请求对应的图像参数;将所述图像参数下发至硬件抽象层;接收所述硬件抽象层传输的图像数据,所述图像数据由所述硬件抽象层基于所述图像参数从摄像头采集的数据中得到;对所述图像数据进行预设算法处理,并将所述预设算法处理后的图像数据传输至所述应用程序。本方法使得将图像处理算法和应用程序分别独立运行在不同的进程中,由此,应用程序能够通过跨进程的方式调用图像拍摄时的相关算法,因而可以减少图像拍摄时的相关算法对应用程序的内存的占用,可以避免出现应用程序的进程内存占用过高而被系统杀掉的情况,从而提高整个架构的稳定性。
113.最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本技术各实施例技术方案的精神和范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1