CN116193244A - 相机模块初始化方法及装置、计算机可读介质和电子设备 - Google Patents

相机模块初始化方法及装置、计算机可读介质和电子设备 Download PDF

Info

Publication number
CN116193244A
CN116193244A CN202111415725.3A CN202111415725A CN116193244A CN 116193244 A CN116193244 A CN 116193244A CN 202111415725 A CN202111415725 A CN 202111415725A CN 116193244 A CN116193244 A CN 116193244A
Authority
CN
China
Prior art keywords
photographing
camera module
camera
function
function driver
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN202111415725.3A
Other languages
English (en)
Inventor
常景洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Guangdong Oppo Mobile Telecommunications Corp Ltd
Original Assignee
Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Guangdong Oppo Mobile Telecommunications Corp Ltd filed Critical Guangdong Oppo Mobile Telecommunications Corp Ltd
Priority to CN202111415725.3A priority Critical patent/CN116193244A/zh
Publication of CN116193244A publication Critical patent/CN116193244A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Studio Devices (AREA)

Abstract

本公开提供一种相机模块初始化方法及装置、计算机可读介质和电子设备,涉及数据处理技术领域。该方法由集成有相机模块以及相机平台架构CamX‑CHI的终端设备执行,包括:响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式;确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动;在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。本公开能够在不影响相机模块的预览图像显示的前提下,减少相机模块启动初始化时创建的功能驱动数量,有效提升相机模块初始化的效率,加快预览图像的生成,提升相机模块的响应速度。

Description

相机模块初始化方法及装置、计算机可读介质和电子设备
技术领域
本公开涉及数据处理技术领域,具体涉及一种相机模块初始化方法、相机模块初始化装置、计算机可读介质和电子设备。
背景技术
伴随着人们生活水平的不断提高,拍照或者自拍、录制视频等成为人们生活中不可缺少的娱乐方式,因此,现有的大多数终端设备都集成有相机模块。为了保证终端设备对相机模块的精细化控制,针对应用Android操作***的终端设备提出了相机平台架构CamX-CHI,相机模块的所有功能均集成在不同的功能驱动Feature上。
目前,相关的技术方案中,会将相机模块的所有功能对应的功能驱动均在初始化过程中创建,但是部分功能驱动在生成预览图像时不会被使用到,导致没有必要的***资源浪费,降低相机模块的初始化速度,降低预览图像的生成效率,导致相机模块的响应速度较慢。
发明内容
本公开的目的在于提供一种相机模块初始化方法、相机模块初始化装置、计算机可读介质和电子设备,进而至少在一定程度上提高相机模块的初始化速度,提高预览图像的生成效率,提升相机模块的响应速度。
根据本公开的第一方面,提供一种相机模块初始化方法,由集成有相机模块以及相机平台架构CamX-CHI的终端设备执行,该方法包括:
响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式;
确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动;
在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。
根据本公开的第二方面,提供一种相机模块初始化装置,设置在集成有相机模块以及相机平台架构CamX-CHI的终端设备,该装置包括:
拍照模式确定模块,用于响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式;
功能驱动确定模块,用于确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动;
相机模块初始化模块,用于在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。
根据本公开的第三方面,提供一种计算机可读介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的方法。
根据本公开的第四方面,提供一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行时,使得一个或多个处理器实现上述的方法。
本公开的一种实施例所提供的相机模块初始化方法,可以响应启动所述相机模块的开启指令,获取相机模块的标识信息,并根据标识信息确定相机模块对应的拍照模式,然后可以确定拍照模式对应的预览功能驱动以及拍照功能驱动,并在接收到拍照请求之前,通过创建好的预览功能驱动实现对拍照模式下相机模块的初始化,进而快速显示预览图像。一方面,对相机模块的拍照模式对应的功能驱动进行划分,在接收到拍照请求之前,由于相机模块仅需要实现预览功能,因此仅创建预览功能驱动实现相机模块的初始化,避免创建不需要的拍照功能驱动,有效减少相机模块初始化时所需要创建的功能驱动的数量,提高相机模块的初始化速度,提高预览图像的生成效率,提升相机模块的响应速度;再一方面,由于不同类型的相机模块的相同拍照模式所对应的功能驱动并不相同,因此通过相机模块的标识信息确定对应的拍照模式,不仅能够保证确定的功能驱动的准确性,而且可以提升确定功能驱动的效率,进一步保证相机模块的响应速度。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。显而易见地,下面描述中的附图仅仅是本公开的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1示出了可以应用本公开实施例的一种***整体架构的示意图;
图2示出了可以应用本公开实施例的一种电子设备的示意图;
图3示出了可以应用本公开实施例的一种相机平台架构CamX-CHI的示意图。
图4示意性示出本公开示例性实施例中一种相机模块初始化方法的流程示意图;
图5示意性示出本公开示例性实施例中一种相机平台架构CamX-CHI各基本组件之间的关系的结构示意图;
图6示意性示出本公开示例性实施例中一种相机开启过程耗时构成的示意图;
图7示意性示出本公开示例性实施例中一种触发拍照功能驱动创建的流程示意图;
图8示意性示出本公开示例性实施例中一种优化前的启动流程的示意图;
图9示意性示出本公开示例性实施例中一种优化后的启动流程的示意图;
图10示意性示出本公开示例性实施例中相机模块初始化装置的组成示意图。
具体实施方式
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的范例;相反,提供这些实施方式使得本公开将更加全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。所描述的特征、结构或特性可以以任何合适的方式结合在一个或更多实施方式中。
此外,附图仅为本公开的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
图1示出了可以应用本公开实施例的一种***整体架构的示意图。
如图1所示,本公开中相机模块运行方法的整体架构可以包括开发框架Frameworks 110、CamX架构120、CHI-CDK130以及Kernel内核140。其中开发框架Frameworks110是应用程序(Application,APP)开发的基础环境,例如,可以通过开发框架Frameworks110开发显示相机模块采集的图像的相机应用程序,在用户通过相机应用程序提供的拍摄按钮触发拍照请求时,开发框架Frameworks 110可以将该拍照请求Request发送给CamX架构120,由CamX架构120生成图像Result反馈给开发框架Frameworks 110,以在相机应用程序显示图像。
CamX架构120代表了通用功能性接口的代码实现集合,CHI-CDK130代表了可定制化需求的代码实现集合,由CamX架构120以及CHI-CDK130构成本示例实施例中的相机平台架构CamX-CHI。
CamX架构120通过V4L2框架与Kernel内核140保持通讯,中间通过互相dlopen so库并获取对方操作接口的方式保持着与CHI-CDK130的交互。
下面以图2中的电子设备200为例,对本公开中的终端设备的构造进行示例性说明。图2所示的电子设备200仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图2所示,电子设备200以通用计算设备的形式表现。电子设备200的组件可以包括但不限于:至少一个处理单元210、至少一个存储单元220、连接不同***组件(包括存储单元220和处理单元210)的总线230、显示单元240。
其中,存储单元220存储有程序代码,程序代码可以被处理单元210执行,使得处理单元210执行本说明书中的运动姿态确定方法。
存储单元220可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(RAM)221和/或高速缓存存储单元222,还可以进一步包括只读存储单元(ROM)223。
存储单元220还可以包括具有一组(至少一个)程序模块225的程序/实用工具224,这样的程序模块225包括但不限于:操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
总线230可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储单元控制器、***总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
电子设备200也可以与一个或多个外部设备270(例如传感器设备、蓝牙设备等)通信,还可与一个或者多个使得用户能与该电子设备200交互的设备通信,和/或与使得该电子设备200能与一个或多个其它计算设备进行通信的任何设备(例如路由器、调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口250进行。并且,电子设备200还可以通过网络适配器260与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器260通过总线230与电子设备200的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备200使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器、数据备份存储***以及传感器模块(如陀螺仪传感器、磁传感器、加速度传感器、距离传感器、接近光传感器等)。
通过以上的实施例的描述,本领域的技术人员易于理解,这里描述的示例实施例可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。因此,根据本公开实施例的技术方案可以以软件产品的形式体现出来,该软件产品可以存储在一个非易失性存储介质(可以是CD-ROM,U盘,移动硬盘等)中或网络上,包括若干指令以使得一台计算设备(可以是个人计算机、服务器、终端装置、或者网络设备等)执行根据本公开实施例的方法。
图3示出了可以应用本公开实施例的一种相机平台架构CamX-CHI的示意图。
参考图3所示,CamX部分对上作为HAL3接口的实现,对下通过V4L2框架与内核Kernel保持通讯,中间通过互相dlopen so库并获取对方操作接口的方式保持着与CHI的交互。
CamX部分可以包括以下几个主要目录结构:Core:用于存放CamX的核心实现模块,其中还包含了主要用于实现HAL3接口的Hal目录,以及负责与CHI进行交互的CHI目录;Csl:用于存放主要负责CamX与Camera driver的通讯模块,为CamX提供了统一的Camera driver控制接口;Hwl:用于存放自身具有独立运算能力的硬件Node,该部分Node受Csl管理;Swl:用于存放自身并不具有独立运算能力,必须依靠CPU才能实现的Node。
CHI-CDK可以包括以下几个主要目录结构:Chioverride:用于存放CHI实现的核心模块,负责与CamX进行交互并且实现了CHI的总体框架以及具体的业务处理;Bin:用于存放相机平台架构相关的配置项;Topology:用于存放用户自定的Usecase XML配置文件;Node:用于存放用户自定义功能的Node;Module:用于存放不同Sensor的配置文件,该部分在初始化Sensor的时候需要用到;Tuning:用于存放不同场景下的效果参数的配置文件;Sensor:用于存放不同Sensor的私有信息以及寄存器配置参数;Actuator:用于存放不同对焦模块的配置信息;Ois:用于存放防抖模块的配置信息;Flash:存放着闪光灯模块的配置信息;Eeprom:存放着Eeprom外部存储模块的配置信息;Fd:存放了人脸识别模块的配置信息。
下面对本公开示例性实施方式的相机模块初始化方法和相机模块初始化装置进行具体说明。
图4示出了本示例性实施方式中一种相机模块初始化方法的流程,可以包括以下步骤S410至步骤S430:
在步骤S410中,响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式。
在一示例性实施例中,开启指令是指用户在拍照时启动相机应用程序实现调用相机模块的指令,例如,用户在终端设备的图像用户界面中点击触发相机应用程序的图标,生成开启指令,并通过该开启指令调用并开启相机模块;当然,用户也可以通过快捷键组合的形式触发并生成启动相机模块的开启指令,本示例实施例对此不做特殊限定。
相机模块是指终端设备中基于图像采集设备处理图像信息的软件模块,例如,图像采集设备可以由光学镜头、图像传感器Sensor、闪光灯以及控制电路等部分构成,相机模块可以处理由图像采集设备采集并传输的传感器数据,生成显示的图像。
相机模块的标识信息是指用于标识区分不同相机模块的数据,即CameraID,由于采用多摄像头相机模块或者单摄像头相机模块、以及单摄像头相机模块在采用不同型号的摄像头、或者多摄像头相机模块在采用不同型号的摄像头以及采用不同类型的摄像头的组合时,对于采集的图像的处理均不相同,因此,通过CameraID对不同的相机模块进行区分,有助于保证图像处理的准确性。
拍照模式是指相机模块在处于不同的应用场景时所采用的图像处理方式,例如,对于光照充足的普通场景,拍照模式可以采用前置照片模式或者后置照片模式;对于光照不充足的黑暗场景,拍照模式可以采用前置夜景模式或者后置夜景模式;对于拍摄人物的场景,拍照模式可以采用前置人像模式,当然,还可以其他类型的拍照模式,本示例实施例对此不做特殊限定。
在步骤S420中,确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动。
在一示例性实施例中,功能驱动是指相机平台架构CamX-CHI中的基本组件Feature,功能驱动Feature代表了一个特定的功能,例如,对于人工智能拍照模式,可以包括功能驱动FeatureASD,功能驱动FeatureASD用于AI(Artificial Intelligence,人工智能)功能的实现,在预览的时候,接收每一帧数据,并且进行分析当前场景的AI识别输出结果,并其通过诸如到metadata方式给到上层,进行后续的处理。一般而言,对于一种拍照模式可以设置一个功能驱动Feature或者多个功能驱动Feature,当然,也可以对拍照模式不设置功能驱动Feature,具体可以根据用户需求在相机平台架构CamX-CHI对应的CHI-CDK进行定制化设置,本示例实施例对此不做特殊限定。
图5示意性示出本公开示例性实施例中一种相机平台架构CamX-CHI各基本组件之间的关系的结构示意图。
参考图5所示,相机平台架构CamX-CHI可以至少包括应用实例Usecase组件510、功能驱动Feature组件520、相机管道控制Session组件530以及相机管道Pipeline组件540。
其中,应用实例Usecase组件510作为相机平台架构CamX-CHI中最大的抽象概念,其中包含了多条实现特定功能的Pipeline,具体实现是在CHI中通过Usecase类完成的,该类主要负责了其中的业务处理以及资源的管理。
功能驱动Feature组件520代表了一个特定的功能,该功能需要多条Pipeline组合起来实现,受Usecase统一管理,在CHI中通过Feature类进行实现,在XML中没有对应的定义,具体的Feature选取工作是在Usecase中完成的,通过在创建Feature的时候,传入Usecase的实例的方式,来和Usecase进行相互访问各自的资源。
相机管道控制Session组件530用于管理Pipeline的抽象控制单元,一个Session中至少拥有一个Pipeline,并且控制着所有的硬件资源,管控着每一个内部Pipeline的Request的流转以及数据的输入输出,它没有可定制化的部分,所以在CHI中的XML文件中并没有将Session作为一个独立的单元进行定义。
相机管道Pipeline组件540作为提供单一特定功能的所有资源的集合,维护着所有硬件资源以及数据的流转,每一个Pipeline可以包括其中的Node节点550以及Link节点连接关系560,在CamX中通过Pipeline类进行实现,负责整条Pipeline的软硬件资源的维护以及业务逻辑的处理。
简单来说,可以认为一种拍照模式可以对应一个应用实例Usecase,一个应用实例Usecase可以管理选择多个功能驱动Feature,一个功能驱动Feature可以由多个Pipeline组合实现特定功能,Pipeline可以由Session管理。
当然,此处仅是示意性举例说明,并不应对本示例实施例造成任何特殊限定。
预览功能驱动是指实现预览图像显示的功能驱动Feature,例如,预览功能驱动可以是FeatureHDR(High-Dynamic Range,高动态范围渲染),也可以是FormatConvertor(图像处理类,用于将数字图像转化为矩阵形式。以一维和二维数组的形式进行储存),当然,还可以是其他实现预览图像显示的功能驱动,本示例实施例对此不做特殊限定。
拍照功能驱动是指实现拍照图像显示的功能驱动Feature,例如,拍照功能驱动可以是FeatureMFSR(Multi-frame super resolution,多帧超分辨率),也可以是AnchorSync(用于人脸检测的方法),当然,还可以是其他实现拍照图像显示的功能驱动,本示例实施例对此不做特殊限定。
继续参考图4,在步骤S430中,在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。
在一示例性实施例中,拍照请求是指对相机模块采集的图像数据进行处理并存储的请求指令,拍照请求可以包括图像拍摄请求和视频录制请求,例如,可以通过终端设备中运行的相机应用程序提供图像拍摄或者视频录制的触发控件,通过该触发控件生成图像拍摄请求和视频录制请求。
在接收到拍照请求之前,可以认为相机模块始终处于预览阶段,仅需要创建支持显示预览图像的预览功能驱动,而不需要额外创建拍照时才能用到的拍照功能驱动,有效减少相机模块启动时需要创建的功能驱动的数量,减少对***资源的消耗,提升***性能,提高相机模块的启动响应速度。
下面对步骤S410至步骤S430进行详细说明。
在一示例性实施例中,相机平台架构CamX-CHI可以包括相机主进程,相机主进程可以包括相机设备开启阶段、相机数据流配置阶段以及拍照请求响应阶段。
图6示意性示出本公开示例性实施例中一种相机开启过程耗时构成的示意图。
参考图6所示,相机主进程Camera Provider 610在整个相机开启过程中底层耗时部分由相机设备开启Open阶段620、相机数据流配置Configure_stream阶段630以及拍照请求响应Request->Result阶段640构成。其中:
当***启动的时候,相机主进程Camera Provider 610会被运行,在整个程序初始化的过程中会通过获取到的camera_module_t调用其get_number_of_camera接口获取底层支持的camera数量,由于是第一次获取,所以在相机平台架构CamX-CHI中会伴随着很多初始化动作。
在相机设备开启Open阶段620,一旦用户打开了相机应用程序,App中便会去调用CameraManager的openCamera方法,该方法之后会最终调用到Camera Service中的CameraService::connectDevice方法,然后通过ICameraDevice::open()这一个HIDL接口通知Provider,然后在Provider内部又通过调用之前获取的camera_module_t中methods的open方法来获取一个Camera设备,对应于HAL中的camera3_device_t结构体,紧接着,在Provider中会继续调用获取到的camera3_device_t的initialize方法进行初始化动作。
在相机数据流配置Configure_stream阶段630,在打开相机应用程序过程中,相机应用程序在获取并打开相机设备之后,会调用CameraDevice.createCaptureSession来获取CameraDeviceSession,并且通过Camera api v2标准接口,通知Camera Service,调用其CameraDeviceClient.endConfigure方法,在该方法内部又会去通过HIDL接口ICameraDeviceSession::configureStreams_3_4通知Provider开始处理此次配置需求,在Provider内部,会去通过在调用open流程中获取的camera3_device_t结构体的configure_streams方法来将数据流的配置传入CamX-CHI中,之后由CamX-CHI完成对数据流的配置工作。相机数据流配置Configure_stream阶段630主要包括两个阶段:选择UsecaseID以及根据选择的UsecaseId创建Usecase,不同的UsecaseId分别对应的不同的应用场景。
在相机数据流配置Configure_stream阶段630的主要流程是:一、获取XML文件中Usecase配置信息;二、创建Feature;三、保存数据流,重建Usecase的配置信息;四、调用父类CameraUsecaseBase的initialize方法,进行一些常规初始化工作。
在拍照请求响应Request->Result阶段640,当用户打开相机应用进行预览或者点击一次拍照操作的时候,便触发了一次拍照请求,即Request,该动作首先通过CameraDeviceSession的capture或者setRepeatingRequest方法将请求通过Camera apiv2接口下发到Camera Service中,然后在Camera Service内部将此次请求发送到CameraDevice::RequestThread线程中进行处理,一旦进入到该线程之后,便会最终通过HIDL接口ICameraCaptureSession:processCaptureRequest_3_4将请求发送至Provider中,之后当Provider收到请求之后,会调用camera3_device_t结构体的process_capture_request开始了HAL针对此次Request的处理,而该处理是由CamX-CHI来负责实现。
在用户开启了相机应用程序,相机平台架构CamX-CHI收到某次Request请求之后会开始对其进行处理,一旦有图像数据产生便会通过层层回调最终返回到应用层进行显示,每一个Request对应了三个Result,分别是partial metadata、metadata以及imagedata,对于每一个Result,上传过程可以大致分为以下两个阶段:一、Session内部完成图像数据的处理,将结果发送至Usecase中;二、Usecase接收到来自Session的数据,并将其上传至相机主进程Camera Provider 610,并显示图像。
在一示例性实施例中,可以在相机数据流配置阶段创建拍照模式对应的预览功能驱动。相机数据流配置阶段在时间线上处于拍照请求响应阶段之前,即在接收到拍照请求之前,对相机模块进行初始化,仅需要创建预览功能驱动,以实现预览图像的显示。
具体的,可以在拍照请求响应阶段创建拍照模式对应的拍照功能驱动,并通过拍照功能驱动处理相机模块缓存的传感器数据,并生成拍照图像。当相机主进程CameraProvider处于拍照请求响应阶段时,可以认为当前接收到拍照请求,即在接收到拍照请求之后,由于需要生成拍照模式对应的拍照图像,因此此时需要创建拍照模式对应的拍照功能驱动,以通过创建好的拍照功能驱动处理相机模块采集的传感器数据,并生成拍照图像。
在相机模块启动初始化过程并且在接收到拍照请求之前,相机应用程序仅需要显示预览图像,此时仅需要创建预览功能驱动就可以实现预览图像的处理,并不创建此时不需要的拍照功能驱动,有效减少相机模块初始化过程中需要创建的功能驱动的数量,节省***资源,提高相机模块的初始化速度,提高预览图像的生成效率,提升相机模块的响应速度。
在一示例性实施例中,拍照请求响应阶段可以包括拍照请求接收步骤和拍照结果反馈步骤,拍照请求接收步骤即Request阶段,拍照结果反馈步骤即Result阶段,可以通过7中的步骤实现拍照功能驱动的延迟创建,参考图7所示,具体可以包括:
步骤S710,创建延时拍照触发线程;
步骤S720,基于所述延时拍照触发线程触发并创建所述拍照模式对应的拍照功能驱动;其中,所述延时拍照触发线程的触发时机为在接收到拍照请求之后并在反馈拍照结果之前。
其中,延时拍照触发线程是指实现拍照功能驱动在拍照请求响应阶段进行创建的触发线程,在相机数据流配置阶段创建预览功能驱动之后,创建延时拍照触发线程,通过延时拍照触发线程可以在接收到拍照请求之后并在反馈拍照结果之前触发拍照功能驱动的创建。
通过创建延时拍照触发线程,能够保证在接收到拍照请求之后,及时创建拍照模式对应的拍照功能驱动,保证拍照图像的及时处理,提升拍照图像的处理效率。
在一示例性实施例中,相机模块可以包括多摄像头相机模块和单摄像头相机模块,其中,单摄像头相机模块是指包含一个摄像头的相机模块,单摄像头相机模块采集到的图像就只是摄像头的记录图像;多摄像头相机模块是指包含两个或者两个以上具有不同功能的摄像头的相机模块,例如,多摄像头相机模块可以是广角摄像头结合长焦摄像头组成的相机模块,也可以是由广角摄像头结合景深摄像头组成的相机模块,本示例实施例对此不做特殊限定。多摄像头相机模块可以通过叠加、提取等等合成不同摄像头采集的图像,从而实现得到更加清晰、分辨率更高、效果更好的图像。由于多摄像头相机模块和单摄像头相机模块在组成上有较大的差异性,因此,采集到的图像的处理流程也并不相同。
容易理解的是,由于终端设备如智能手机在结构上的限制,多摄像头相机模块关联的图像采集设备一般设置在终端设备的背面,作为后置拍摄模块进行图像采集,单摄像头相机模块关联的图像采集设备一般设置在终端设备的前面,作为前置拍摄模块进行图像采集。当然,特殊场景下,多摄像头相机模块关联的图像采集设备也可以设置在终端设备的前面,单摄像头相机模块关联的图像采集设备也可以设置在终端设备的背面,本示例实施例不以此为限。
可以理解的是,不同的拍摄模式可以对应不同的功能驱动集合,具体的,不同的拍摄模式可以对应不同的功能驱动集合包括:在一个相机模块中不同的拍摄模式可以对应不同的功能驱动集合。例如,在一个单摄像头相机模块中,可以包括拍摄模式1、拍摄模式2、拍摄模式3,其中,拍摄模式1可以包括功能驱动2、功能驱动3和功能驱动5,拍摄模式2可以包括功能驱动6、功能驱动7和功能驱动8,拍摄模式3可以包括功能驱动1、功能驱动3和功能驱动4。当然,此处仅是示意性举例说明,并不应对本示例实施例造成任何特殊限定。
本一示例实施例中,多摄像头相机模块可以至少包括后置照片模式和后置夜景模式,其中,后置照片模式可以至少包括MFNR功能驱动和RawHDR功能驱动,MFNR(Multi FrameNoise Reduction,多帧降噪)功能驱动主要用于对图像数据进行多帧降噪处理,RawHDR功能驱动主要用于对基于原始数据Raw格式的图像数据进行HDR(High-Dynamic Range,高动态范围图像)合成,以分别显示出图像数据中的高光、中间调及暗部的细节;后置夜景模式可以至少包括HDR功能驱动和Demux Serializer功能驱动,HDR功能驱动主要用于根据不同的曝光时间的LDR(Low-Dynamic Range,低动态范围图像),并利用每个曝光时间相对应最佳细节的LDR图像来合成最终HDR图像,相比普通的图像,HDR图像可以提供更多的动态范围和图像细节,Demux Serializer功能驱动主要用于对图像数据进行多路分解序列化处理,提高图像数据的传输以及存储效率。
单摄像头相机模块可以至少包括前置照片模式和前置夜景模式,其中,前置照片模式可以至少包括Y2YPostMFNR功能驱动和Anchor功能驱动,Y2YPostMFNR功能驱动主要用于将图像数据的颜色空间转换到YUV颜色空间并进行多帧降噪,有效降低图像数据中的噪声数据,Anchor功能驱动主要用于对图像数据进行目标检测;前置夜景模式可以至少包括FormatConvertor功能驱动和RealTimeSerializer功能驱动,FormatConvertor功能驱动主要用于将数字图像转化为矩阵形式,并以一维和二维数组的形式进行储存,RealTimeSerializer功能驱动主要用于将图像数据进行实时序列化处理,提升传输效率。
本领域技术人员容易理解的是,以上拍照模式以及拍照模式对应的功能驱动仅是示意性的,便于本领域技术人员理解本公开中相机模块与拍照模式、功能驱动之间的关系,实际应用过程中,相机模块对应的拍照模式不限于以上示意性举例的情况,各拍照模式对应的功能驱动也不限于以上示意性举例的情况,并不应对本示例实施例造成任何特殊限定。
图8示意性示出本公开示例性实施例中一种优化前的启动流程的示意图。
参考图8所示,优化前的启动流程810可以分为启动多摄像头相机模块的流程820以及启动单摄像头相机模块的流程830。
其中,在启动多摄像头相机模块的流程820中,多摄像头相机模块对应的拍照模式840可以包括后置照片模式和后置夜景模式等多种拍照模式,多摄像头相机模块的拍照模式对应的功能驱动可以分为预览功能驱动和拍照功能驱动;在多摄像头相机模块启动初始化时,优化前的启动流程810中在Configure_stream阶段850创建多摄像头相机模块对应的所有功能驱动860。
在启动单摄像头相机模块的流程830中,单摄像头相机模块对应的拍照模式870可以包括后置照片模式和后置夜景模式等多种拍照模式,单摄像头相机模块的拍照模式对应的功能驱动可以分为预览功能驱动和拍照功能驱动;在单摄像头相机模块启动初始化时,优化前的启动流程810中在Configure_stream阶段880创建单摄像头相机模块对应的所有功能驱动890。
假设多摄像头相机模块(或者单摄像头相机模块)在启动时仅设置了后置照片模式(或者前置照片模式),后置照片模式(或者前置照片模式)对应的预览功能驱动Feature的数量为5,拍照功能驱动Feature的数量为10,即在Configure_stream阶段仅创建这5个预览功能驱动Feature即可实现多摄像头相机模块(或者单摄像头相机模块)以后置照片模式(或者前置照片模式)显示预览图像;而优化前的启动流程810则会将多摄像头相机模块(或者单摄像头相机模块)对应的15个功能驱动Feature均在Configure_stream阶段创建,然而10个拍照功能驱动在Configure_stream阶段是没有被用到的,因此在Configure_stream阶段创建拍照功能驱动,会造成***资源的浪费,降低***性能,降低相机模块的启动速度。
图9示意性示出本公开示例性实施例中一种优化后的启动流程的示意图。
参考图9所示,优化后的启动流程901可以分为启动多摄像头相机模块的流程902以及启动单摄像头相机模块的流程903。
其中,在启动多摄像头相机模块的流程902中,多摄像头相机模块对应的拍照模式904可以包括后置照片模式和后置夜景模式等多种拍照模式,多摄像头相机模块的拍照模式对应的功能驱动可以分为预览功能驱动和拍照功能驱动;在多摄像头相机模块启动初始化时,优化后的启动流程910中在Configure_stream阶段905仅会创建多摄像头相机模块对应的预览功能驱动906,实现预览图像的显示;而在接收到拍照请求之后并且在反馈拍照结果之前,通过延时拍照触发线程,在Request阶段907创建拍照功能驱动908,实现拍照图像的生成并显示。
在启动单摄像头相机模块的流程903中,单摄像头相机模块对应的拍照模式909可以包括前置照片模式和前置夜景模式等多种拍照模式,单摄像头相机模块的拍照模式对应的功能驱动可以分为预览功能驱动和拍照功能驱动;在单摄像头相机模块启动初始化时,优化后的启动流程901中在Configure_stream阶段910仅会创建单摄像头相机模块对应的预览功能驱动911,实现预览图像的显示;而在接收到拍照请求之后并且在反馈拍照结果之前,通过延时拍照触发线程,在Request阶段912创建拍照功能驱动913,实现拍照图像的生成并显示。
假设多摄像头相机模块(或者单摄像头相机模块)在启动时仅设置了后置照片模式(或者前置照片模式),后置照片模式(或者前置照片模式)对应的预览功能驱动Feature的数量为5,拍照功能驱动Feature的数量为10,即在Configure_stream阶段仅创建这5个预览功能驱动Feature即可实现多摄像头相机模块(或者单摄像头相机模块)以后置照片模式(或者前置照片模式)显示预览图像,相比于创建15个功能驱动,需要创建的功能驱动的数量大幅减少,节省***资源,提高多摄像头相机模块(或者单摄像头相机模块)的启动速度;并且在接收到拍照请求之后并且在反馈拍照结果之前,通过延时拍照触发线程在Request阶段及时触发拍照功能驱动的创建,保证拍照图像的生成效率以及响应速度,实现拍照图像的生成并显示。
综上所述,本示例性实施方式中,可以获取相机模块的标识信息,并根据标识信息确定相机模块对应的拍照模式,然后可以确定拍照模式对应的预览功能驱动以及拍照功能驱动,并在接收到拍照请求之前,通过创建好的预览功能驱动实现对拍照模式下相机模块的初始化,进而快速显示预览图像。一方面,对相机模块的拍照模式对应的功能驱动进行划分,在接收到拍照请求之前,由于相机模块仅需要实现预览功能,因此仅创建预览功能驱动实现相机模块的初始化,避免创建不需要的拍照功能驱动,有效减少相机模块初始化时所需要创建的功能驱动的数量,提高相机模块的初始化速度,提高预览图像的生成效率,提升相机模块的响应速度;再一方面,由于不同类型的相机模块的相同拍照模式所对应的功能驱动并不相同,因此通过相机模块的标识信息确定对应的拍照模式,不仅能够保证确定的功能驱动的准确性,而且可以提升确定功能驱动的效率,进一步保证相机模块的响应速度。
需要注意的是,上述附图仅是根据本公开示例性实施例的方法所包括的处理的示意性说明,而不是限制目的。易于理解,上述附图所示的处理并不表明或限制这些处理的时间顺序。另外,也易于理解,这些处理可以是例如在多个模块中同步或异步执行的。
进一步的,参考图10所示,本示例的实施方式中还提供一种相机模块初始化装置1000,可以包括拍照模式确定模块1010、功能驱动确定模块1020以及相机模块初始化模块1030。其中:
拍照模式确定模块1010,用于响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式;
功能驱动确定模块1020,用于确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动;
相机模块初始化模块1030,用于在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。
在一示例性实施例中,相机平台架构CamX-CHI可以包括相机主进程,相机主进程可以包括相机设备开启阶段、相机数据流配置阶段以及拍照请求响应阶段。
在一示例性实施例中,相机模块初始化模块1030可以用于:
在所述相机数据流配置阶段创建所述拍照模式对应的预览功能驱动。
在一示例性实施例中,相机模块初始化装置1000可以包括相机模块拍照模块,该相机模块拍照单元可以包括:
拍照功能驱动创建单元,用于在所述拍照请求响应阶段创建所述拍照模式对应的拍照功能驱动;
拍照图像生成单元,用于通过所述拍照功能驱动处理所述相机模块采集的传感器数据,并生成拍照图像。
在一示例性实施例中,拍照请求响应阶段可以包括拍照请求接收步骤和拍照结果反馈步骤;
拍照功能驱动创建单元可以用于:
创建延时拍照触发线程;
基于所述延时拍照触发线程触发并创建所述拍照模式对应的拍照功能驱动;
其中,所述延时拍照触发线程的触发时机为在接收到拍照请求之后并在反馈拍照结果之前。
在一示例性实施例中,相机模块可以包括多摄像头相机模块和单摄像头相机模块中的至少一个。
在一示例性实施例中,多摄像头相机模块可以包括后置照片模式和后置夜景模式,单摄像头相机模块可以包括前置照片模式和前置夜景模式。
在一示例性实施例中,所述后置照片模式包括MFNR功能驱动和RawHDR功能驱动;
所述后置夜景模式包括HDR功能驱动和Demux Serializer功能驱动;
所述前置照片模式包括Y2YPostMFNR功能驱动和Anchor功能驱动;
所述前置夜景模式包括FormatConvertor功能驱动和RealTimeSerializer功能驱动。
上述装置中各模块的具体细节在方法部分实施方式中已经详细说明,未披露的细节内容可以参见方法部分的实施方式内容,因而不再赘述。
所属技术领域的技术人员能够理解,本公开的各个方面可以实现为***、方法或程序产品。因此,本公开的各个方面可以具体实现为以下形式,即:完全的硬件实施方式、完全的软件实施方式(包括固件、微代码等),或硬件和软件方面结合的实施方式,这里可以统称为“电路”、“模块”或“***”。
本公开的示例性实施方式还提供了一种计算机可读存储介质,其上存储有能够实现本说明书上述方法的程序产品。在一些可能的实施方式中,本公开的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行本说明书上述“示例性方法”部分中描述的根据本公开各种示例性实施方式的步骤。
需要说明的是,本公开所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。
在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
此外,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如Java、C++等,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其他实施例。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限。

Claims (11)

1.一种相机模块初始化方法,其特征在于,由集成有相机模块以及相机平台架构CamX-CHI的终端设备执行,所述方法包括:
响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式;
确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动;
在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。
2.根据权利要求1所述的方法,其特征在于,所述相机平台架构CamX-CHI包括相机主进程,所述相机主进程包括相机设备开启阶段、相机数据流配置阶段以及拍照请求响应阶段。
3.根据权利要求2所述的方法,其特征在于,所述在接收到拍照指令之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,包括:
在所述相机数据流配置阶段创建所述拍照模式对应的预览功能驱动。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在所述拍照请求响应阶段创建所述拍照模式对应的拍照功能驱动;
通过所述拍照功能驱动处理所述相机模块采集的传感器数据,并生成拍照图像。
5.根据权利要求4所述的方法,其特征在于,所述拍照请求响应阶段包括拍照请求接收步骤和拍照结果反馈步骤;
所述在拍照请求响应阶段创建所述拍照模式对应的拍照功能驱动,包括:
创建延时拍照触发线程;
基于所述延时拍照触发线程触发并创建所述拍照模式对应的拍照功能驱动;
其中,所述延时拍照触发线程的触发时机为在接收到拍照请求之后并在反馈拍照结果之前。
6.根据权利要求1所述的方法,其特征在于,所述相机模块包括多摄像头相机模块和单摄像头相机模块中的至少一个。
7.根据权利要求6所述的方法,其特征在于,所述多摄像头相机模块包括后置照片模式和后置夜景模式,所述单摄像头相机模块包括前置照片模式和前置夜景模式。
8.根据权利要求7所述的方法,其特征在于:
所述后置照片模式包括MFNR功能驱动和RawHDR功能驱动;
所述后置夜景模式包括HDR功能驱动和Demux Serializer功能驱动;
所述前置照片模式包括Y2YPostMFNR功能驱动和Anchor功能驱动;
所述前置夜景模式包括FormatConvertor功能驱动和RealTimeSerializer功能驱动。
9.一种相机模块初始化装置,其特征在于,设置在集成有相机模块以及相机平台架构CamX-CHI的终端设备,所述装置包括:
拍照模式确定模块,用于响应启动所述相机模块的开启指令,获取所述相机模块对应的标识信息,并根据所述标识信息确定所述相机模块对应的拍照模式;
功能驱动确定模块,用于确定所述拍照模式对应的功能驱动;所述功能驱动包括预览功能驱动以及拍照功能驱动;
相机模块初始化模块,用于在接收到拍照请求之前,通过创建好的所述预览功能驱动实现对所述拍照模式下所述相机模块的初始化,并显示预览图像。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8中任一项所述的方法。
11.一种电子设备,其特征在于,包括:
处理器;以及
存储器,用于存储所述处理器的可执行指令;
其中,所述处理器配置为经由执行所述可执行指令来执行权利要求1至8任一项所述的方法。
CN202111415725.3A 2021-11-25 2021-11-25 相机模块初始化方法及装置、计算机可读介质和电子设备 Pending CN116193244A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111415725.3A CN116193244A (zh) 2021-11-25 2021-11-25 相机模块初始化方法及装置、计算机可读介质和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111415725.3A CN116193244A (zh) 2021-11-25 2021-11-25 相机模块初始化方法及装置、计算机可读介质和电子设备

Publications (1)

Publication Number Publication Date
CN116193244A true CN116193244A (zh) 2023-05-30

Family

ID=86434981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111415725.3A Pending CN116193244A (zh) 2021-11-25 2021-11-25 相机模块初始化方法及装置、计算机可读介质和电子设备

Country Status (1)

Country Link
CN (1) CN116193244A (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120050575A1 (en) * 2010-08-30 2012-03-01 Samsung Electronics Co., Ltd. Method and apparatus for capturing image in portable terminal
WO2018232669A1 (zh) * 2017-06-21 2018-12-27 深圳支点电子智能科技有限公司 一种控制摄像头拍照方法及移动终端
WO2021086040A1 (en) * 2019-11-01 2021-05-06 Samsung Electronics Co., Ltd. Method for providing preview and electronic device for displaying preview
CN113366819A (zh) * 2019-05-29 2021-09-07 深圳市欢太科技有限公司 相机启动方法及相关装置

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120050575A1 (en) * 2010-08-30 2012-03-01 Samsung Electronics Co., Ltd. Method and apparatus for capturing image in portable terminal
WO2018232669A1 (zh) * 2017-06-21 2018-12-27 深圳支点电子智能科技有限公司 一种控制摄像头拍照方法及移动终端
CN113366819A (zh) * 2019-05-29 2021-09-07 深圳市欢太科技有限公司 相机启动方法及相关装置
WO2021086040A1 (en) * 2019-11-01 2021-05-06 Samsung Electronics Co., Ltd. Method for providing preview and electronic device for displaying preview
CN114631306A (zh) * 2019-11-01 2022-06-14 三星电子株式会社 用于提供预览的方法和用于显示预览的电子装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
小驰成长圈: "《高通CamX架构》", pages 1 - 7, Retrieved from the Internet <URL:https://juejin.cn/post/6957235087607873549> *

Similar Documents

Publication Publication Date Title
CN109922322B (zh) 拍照方法、图像处理器、拍照装置及电子设备
CN113592887B (zh) 视频拍摄方法、电子设备及计算机可读存储介质
WO2020207272A1 (en) Image processing apparatus, method for image processing, and electronic device
CN110300240B (zh) 图像处理器、图像处理方法、拍照装置及电子设备
CN110062161B (zh) 图像处理器、图像处理方法、拍摄装置和电子设备
CN109672884B (zh) 图像硬件编码处理方法和装置
CN110177214B (zh) 图像处理器、图像处理方法、拍照装置及电子设备
CN115689963B (zh) 一种图像处理方法及电子设备
WO2022160985A1 (zh) 一种分布式拍摄方法,电子设备及介质
CN110996012A (zh) 连拍处理方法、图像处理器、拍摄装置和电子设备
WO2024055797A9 (zh) 一种录像中抓拍图像的方法及电子设备
WO2024041394A1 (zh) 拍摄方法及相关装置
CN115484403B (zh) 录像方法和相关装置
CN111314606B (zh) 拍照方法、装置、电子设备及存储介质
KR20230133970A (ko) 사진촬영 방법, 장치 및 전자기기
CN114979785B (zh) 视频处理方法、电子设备及存储介质
JP2023553706A (ja) 撮影モード決定方法、装置、電子機器、及び記憶媒体
WO2023160230A9 (zh) 一种拍摄方法及相关设备
CN116193244A (zh) 相机模块初始化方法及装置、计算机可读介质和电子设备
WO2023109389A1 (zh) 图像融合方法、装置、计算机设备及计算机可读存储介质
CN116193249A (zh) 相机模块运行方法及装置、计算机可读介质和电子设备
CN117082295B (zh) 图像流处理方法、设备及存储介质
CN116028383B (zh) 缓存管理方法及电子设备
WO2024088074A1 (zh) 拍摄月亮的方法和电子设备
WO2023231696A1 (zh) 一种拍摄方法及相关设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination