CN117135341A - 图像处理的方法及电子设备 - Google Patents
图像处理的方法及电子设备 Download PDFInfo
- Publication number
- CN117135341A CN117135341A CN202310090986.5A CN202310090986A CN117135341A CN 117135341 A CN117135341 A CN 117135341A CN 202310090986 A CN202310090986 A CN 202310090986A CN 117135341 A CN117135341 A CN 117135341A
- Authority
- CN
- China
- Prior art keywords
- image data
- data
- frame
- dimension
- image
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title abstract description 6
- 238000012545 processing Methods 0.000 claims abstract description 114
- 238000000034 method Methods 0.000 claims abstract description 85
- 230000002159 abnormal effect Effects 0.000 claims abstract description 7
- 238000005259 measurement Methods 0.000 claims description 51
- 238000004590 computer program Methods 0.000 claims description 5
- 239000010410 layer Substances 0.000 description 164
- 230000008569 process Effects 0.000 description 41
- 230000006870 function Effects 0.000 description 32
- 239000000872 buffer Substances 0.000 description 20
- 238000010586 diagram Methods 0.000 description 9
- 238000004140 cleaning Methods 0.000 description 4
- 230000003139 buffering effect Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000005484 gravity Effects 0.000 description 3
- 230000003796 beauty Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000009467 reduction Effects 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000000903 blocking effect Effects 0.000 description 1
- 210000000988 bone and bone Anatomy 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 239000012792 core layer Substances 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000007613 environmental effect Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000004807 localization Effects 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000001454 recorded image Methods 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N17/00—Diagnosis, testing or measuring for television systems or their details
- H04N17/002—Diagnosis, testing or measuring for television systems or their details for television cameras
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04M—TELEPHONIC COMMUNICATION
- H04M1/00—Substation equipment, e.g. for use by subscribers
- H04M1/24—Arrangements for testing
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- General Health & Medical Sciences (AREA)
- Multimedia (AREA)
- Studio Devices (AREA)
Abstract
本申请提供了一种图像处理的方法及电子设备,涉及终端领域。本申请的方法包括:响应于用户输入的第一操作,获取图像传感器采集的至少一帧第一图像数据,第一操作包括拍摄操作或预览操作;对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据,维测数据用于电子设备在拍摄或预览出现异常时,定位故障原因;将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置。采用本申请中的方法,电子设备可以生成图像数据的同时生成对应的维测数据,并保存每帧图像数据的维测数据,使得电子设备出现拍摄故障或预览故障时,可以提供维测数据,提高故障排除的速度。
Description
技术领域
本申请涉及终端领域,尤其涉及一种图像处理的方法及电子设备。
背景技术
随着科技的不断发展,手机的拍照功能越来越强大,可以满足不同用户的需求,使用手机拍照已经成为了人类生活中不可或缺的一部分。用户通常会使用手机的拍照功能记录生活中的美好时刻,例如,用户拍摄旅游景点的风景,家长为孩子拍摄成长的精彩瞬间等。
用户在拍摄的过程中,拍摄或拍照的预览界面,或者录制的图像会出现卡顿问题,降低了用户的拍摄的使用体验。然而,用户在上报故障时,服务人员可以获取到故障视频和简要日志,简要日志往往记录的内容有限,导致服务人员并不能准确确定故障,导致手机的拍照故障不能及时排除。
发明内容
为了解决上述技术问题,本申请提供一种图像处理的方法及电子设备,电子设备可以生成图像数据的同时生成对应的维测数据,并保存每帧图像数据的维测数据,使得电子设备出现拍摄故障或预览故障时,可以提供维测数据,提高故障排除的速度。
第一方面,本申请提供一种图像处理的方法,应用于电子设备,该方法包括:响应于用户输入的第一操作,获取图像传感器采集的至少一帧第一图像数据,第一操作包括拍摄操作或预览操作;对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据,维测数据用于电子设备在拍摄或预览出现异常时,定位故障原因;将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置。
这样,电子设备响应于拍摄操作或预览操作时,获取第一图像数据,并基于第一图像数据生成第二图像数据和第二图像数据的维测数据,该电子设备保存第二图像数据的维测数据,使得当电子设备在拍摄或预览过程中出现异常时,可以为服务人员提供用于定位故障的维测数据,从而使得服务人员可以快速定位故障,排除电子设备中的故障。该拍摄或预览过程中出现的异常可以是卡顿、图像模糊等问题。且该电子设备是基于每帧第二图像数据的维测数据,使得维测数据可以记录每帧第二图像数据在整个生命周期的信息,从而便于服务人员定位故障。
根据第一方面,将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置,包括:当电子设备的硬件抽象层检测到第一操作为拍摄操作时,硬件抽象层将N帧第二图像数据和N帧第二图像数据的维测数据上报第一应用程序,N为大于1的整数;第一应用程序根据N帧第二图像和N帧第二图像数据的维测数据,生成目标数据;第一应用程序将目标数据存储于电子设备的图库对应的存储空间中。
这样,当HAL检测到第一操作为拍摄操作时,将N帧第二图像数据和N帧第二图像数据的维测数据存储于图库对应的存储空间中,该方式便于服务人员从存储空间中获取维测数据。
根据第一方面,第一应用程序根据N帧第二图像和N帧第二图像数据的维测数据,生成目标数据,包括:第一应用程序缓存N帧第二图像数据的维测数据;第一应用程序检测到拍摄结束时,将N帧第二图像数据拼接为多媒体文件;第一应用程序将N帧第二图像数据的维测数据拼接于多媒体文件的末尾,生成目标数据。这样,将维测数据拼接在多媒体文件的末尾形成目标数据,使得多媒体文件与对应的维测数据绑定,电子设备输出该目标数据时,即可携带该目标数据中多媒体文件的维测数据,便于服务人员获取该多媒体文件的维测数据,同时,将维测数据拼接于多媒体文件的末尾,也不会影响多媒体文件的解析,也便于用户向服务人员提供维测数据。
根据第一方面,将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置,包括:当电子设备的硬件抽象层检测到第一操作为预览操作时,硬件抽象层将至少一帧第二图像数据的维测数据存储于电子设备的文件系统。这样,当电子设备检测到第一操作为预览操作时,由于预览时电子设备并不会保存预览的图像数据,将预览的每帧第二图像数据的维测数据存储于文件系统,使得维测数据对于用户不可见,避免对用户使用电子设备造成干扰,同时维测数据存储于文件系统,也便于服务人员获取。
根据第一方面,将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置,包括:当电子设备的硬件抽象层检测到第一操作为预览操作时,硬件抽象层缓存至少一帧第二图像数据的维测数据;当硬件抽象层检测到缓存的维测数据的帧数达到第一预设帧数,则将第一预设帧数的维测数据存储于电子设备的文件系统。这样,硬件抽象层先缓存维测数据,在检测到缓存的维测数据达到第一预设帧数,将第一预设帧数的维测数据存入文件系统,第一预设帧数可以大于1,如2帧、是5帧、10帧、20帧、30帧等。HAL层将第一预设帧数的维测数据存入文件系统,可以避免频繁向文件系统写入数据,降低电子设备的系统开销。
根据第一方面,将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置,包括:电子设备的硬件抽象层检测至少一帧第一图像数据中是否存在丢帧;当硬件抽象层检测到丢帧时,则获取包含丢帧位置的M帧的第二图像的维测数据作为上报数据;硬件抽象层传输上报数据至文件系统,并指示文件系统将上报数据上报至服务器,以供服务器确定丢帧的故障原因,M为大于1的整数;当硬件抽象层检测到未发生丢帧时,则缓存生成的第二图像数据的维测数据。这样,HAL层检测至少一帧第一图像数据是否出现了丢帧,当确定丢帧时,向服务器上报包括该丢帧位置的第二图像数据的维测数据,避免电子设备存储过多的维测数据,也便于服务器基于上报的维测数据定位故障。
根据第一方面,指示文件系统将上报数据上报至服务器,包括:硬件抽象层检测向文件系统传输上报数据的次数是否达到K次,K为大于1的整数;硬件抽象层检测到向文件系统传输上报数据的次数达到K次,则将K次存储的上报数据上报至服务器。这样,HAL在检测到向文件系统存储维测数据的次数达到阈值时,将K次存储的上报数据传输至服务器,可以避免电子设备频繁向服务器上报维测数据的问题,减小电子设备的上报次数,减小电子设备的功耗。
根据第一方面,硬件抽象层检测获取的至少一帧第一图像数据是否出现丢帧,包括:针对每帧第一图像数据进行如下处理:硬件抽象层获取当前第一图像数据的第一帧号,第一帧号用于指示图像传感器采集的图像数据的标识信息;硬件抽象层获取当前第一图像数据的第二帧号,第二帧号用于指示硬件抽象层从图像传感器复制到的图像数据的标识信息;硬件抽象层获取当前第一图像数据的第一帧号和当前第一图像数据的第二帧号之间的差值作为第一差值;硬件抽象层若检测到第一差值大于0,则获取上一帧第一图像数据的第一帧号与上一帧第一图像数据的第二帧号之间的差值作为第二差值;硬件抽象层检测第一差值与第二差值之间是否相同;当硬件抽象层确定第一差值与第二差值不同,则确定当前出现了丢帧。这样,HAL层对每帧第一图像数据进行检测,判断是否出现了丢帧,图像传感器会记录输出的每帧第一图像数据的帧号(即第一帧号),HAL层会记录从图像传感器复制到的每帧第一图像数据的帧号(即第二帧号),当第一帧号和第二帧号之间出现差值时,且该差值与上一次获取的差值不同,则确定出现了新的丢帧,该检测丢帧的方式简单,且快速。
根据第一方面,该方法还包括:硬件抽象层从文件系统中删除上报的维测数据。这样,及时删除上报的维测数据,可以减小维测数据对文件系统的存储空间的占用。
根据第一方面,该方法还包括:硬件抽象层检测到文件系统存储的维测数据的容量达到阈值,则从存储的维测数据中删除最早存储的第二预设帧数的维测数据。这样,可以及时删除维测数据,避免对文件系统的存储空间的过多占用。
根据第一方面,文件系统中设置有至少一个预设深度的循环队列,循环队列用于存储第二图像的维测数据。这样,采用循环队列缓存维测数据,可以确保存储的维测数据始终为最新。
根据第一方面,对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据,包括:电子设备的硬件抽象层获取至少一帧第一图像数据经过每个处理节点的第一时间信息,第一时间信息包括第一图像数据在处理节点的不同处理阶段的时刻;硬件抽象层根据第一图像数据在每个处理节点的第一时间信息,生成第二图像数据的维测数据,第二图像数据是第一图像数据经过每个处理节点的处理后生成。这样,维测数据包括第一图像经过每个处理节点的不同处理阶段的时刻,可以反映出HAL层对第一图像处理的不同阶段的耗时情况,以便于后续服务人员定位丢帧问题或其他问题。
根据第一方面,第二图像的维测数据还包括:第一图像数据经过每个处理节点时设备运行的数据,第一图像数据用于生成第二图像数据。这样,维测数据还包括第一图像数据经过每个处理节点时设备运行的数据,可以反映出每个节点处理第一图像数据时的运行状态,如内存、CPU运行情况,以便于后续定位故障。
根据第一方面,设备运行的数据包括:处理第一图像数据时CPU的频点、CPU的温度以及内存信息。
根据第一方面,第二图像数据的维测数据还包括以下信息中的一种或多种:预览场景下或拍摄场景下设置的拍摄缩放比例、每个处理节点的类型、图像传感器的标识信息或图像传感器出帧的模式。
根据第一方面,每帧第二图像数据的维测数据采用地图Map数据结构的形式,其中,以当前第二图像数据的第二帧号作为当前第二图像数据的维测数据的键,当前第一图像数据用于生成当前第二图像数据,当前第一图像数据的第二帧号作为当前第二图像数据的第二帧号。这样,采用Map的数据结构,可以清晰反映出第一图像数据生成第二图像数据的过程中的信息。
第二方面,本申请提供了一种电子设备,包括:存储器和处理器,存储器与处理器耦合;存储器存储有程序指令,当程序指令由处理器执行时,使得电子设备执行第一方面以及第一方面的任意一种实现方式相对应的图像处理的方法。
第二方面以及第二方面的任意一种实现方式分别与第一方面以及第一方面的任意一种实现方式相对应。第二方面以及第二方面的任意一种实现方式所对应的技术效果可参见上述第一方面以及第一方面的任意一种实现方式所对应的技术效果,此处不再赘述。
第三方面,本申请提供了一种计算机可读介质,用于存储计算机程序,当计算机程序在电子设备上运行时,使得所述电子设备执行上述第一方面以及第一方面的任意一种实现方式所对应的图像处理的方法。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是示例性示出的一种应用场景示意图;
图2是示例性示出预览过程的框架图;
图3是示例性示出的电子设备的结构示意图;
图4是示例性示出的电子设备的软件结构示意图;
图5是示例性示出的一种图像处理的方法的流程图;
图6是示例性示出的一种图像处理的框架图;
图7是示例性示出的又一种图像处理的方法的流程图;
图8是示例性示出的又一种图像处理的方法的流程图;
图9是示例性示出的当第一操作为预览操作时,对图像处理的流程图;
图10是示例性示出的对图像处理的框架图;
图11是示例性示出的将维测数据上报服务器的流程图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
在对本申请实施例的技术方案说明之前,首先结合附图对本申请实施例的应用场景进行说明。参见图1,为本申请实施例提供的一种应用场景示意图。用户A启动手机中的相机应用,手机A的相机应用处于预览状态,该手机的界面101显示该当前拍摄的预览画面,如图1所示,手机的界面101中显示的人像出现了卡顿,影响用户的使用。若用户向服务人员上报故障时,服务人员可以获取到简要日志。若手机录制的视频出现了卡顿,用户可以向服务人员提供录制的视频,以便服务人员定位卡顿的故障。
但是,简要日志中记录的内容有限,而用户使用场景往往很复杂,导致服务人员很难基于简要日志准确定界故障,确定故障处理人员等。同时,对于偶然出现的故障或者用户难以配合获取日志的场景,导致服务人员并不能准确确定故障,导致手机的拍照故障不能及时排除。
下面结合图2说明电子设备的相机在预览状态下显示图像的过程。电子设备以手机为例,手机包括多个摄像头,例如,一个前置摄像头,一个后置摄像头。假设相机应用启动后默认进入预览模式。当用户启动相机应用时,相机应用打开指定的摄像头(如后置摄像头)。如图2所示,相机应用在T1时刻通过应用程序框架层framework、HAL层、向内核层下发请求1(即request1),内核层的图像传感器接收到request1,对人像进行采集。该图像传感器(即Sensor)可以按照固定时间间隔输出一帧采集的图像数据,输出帧率可以是预先设置,如Sensor的输出帧率为30fps。图像传感器可以将输出的图像数据进行缓存,并记录输出的图像数据的帧号(即第一帧号为1)。HAL层可以从Sensor的缓存中复制图像数据,HAL层记录复制到的图像数据的帧号(即第二帧号为1),并将复制到的图像数据按照第二帧号的帧顺序送至pipeline(管道或流水线)。由图像处理节点Node按照拍摄的需求(如滤镜处理)调用Node中的算法对图像进行处理。HAL层对第一帧的图像数据处理完成后,生成第一帧第二图像数据,并将该第一帧第二图像数据缓存至帧缓冲区(framebuff)中。应用程序框架层从framebuff中获取第一帧第二图像数据。应用程序框架层对第一帧第二图像数据进行编码,生成显示屏可以显示的第二图像数据(即送显的图像数据),并向相机应用返回该第二图像数据。相机应用接收到第一帧第二图像数据后,指示显示屏显示该第一帧第二图像数据。
相机在T2时刻向内核层下发请求2(即request2),相机向内核层下发请求2的过程与下发请求1的过程类似。内核层的图像传感器接收到request2,对人像进行采集。图像传感器可以将输出的图像数据进行缓存,并记录输出的图像数据的帧号(即第一帧号为2)。HAL层可以从Sensor的缓存中复制图像数据,HAL层记录复制到的图像数据的帧号(即第二帧号为2),并将复制到的图像数据送至pipeline(管线或流水线)。由图像处理节点Node按照拍摄的需求调用Node中的算法对图像进行处理。HAL层对第二帧的图像数据处理完成后,生成第二帧第二图像数据,并将该第二帧第二图像数据缓存至帧缓冲区(framebuff)中。应用程序框架层从framebuff中获取第二帧第二图像数据。应用程序框架层对第二帧第二图像数据进行编码,生成显示屏可以显示的第二图像数据(即送显的图像数据),并向相机返回该第二图像数据。相机接收到第二帧第二图像数据后,指示显示屏显示该第二帧第二图像数据。
同理,相机在T3时刻向内核层下发请求3(即request3),的过程与下发请求1的过程类似,此处不再进行赘述。
通常HAL层设置有多个缓冲区(buffer),如8个buffer,用于缓存从Sersor复制到的第一图像数据。HAL层包括多个图像处理节点,每个图像处理节点对第一图像数据处理的耗时不同。若某一个或多个图像处理节点对某帧第一图像数据的处理时间过长,导致从Sensor中复制到的第一图像数据在pipeline中堆积,buffer不能及时释放,导致在Sensor下一次输出图像数据之前,不能从Sensor的缓存中复制本次Sensor输出的图像数据,出现丢帧的问题。
在预览或拍摄过程中出现丢帧问题,可能导致画面出现卡顿、不连贯的问题。若相机应用处于预览模式,手机并不会存储预览的视频文件,导致用户向服务人员上报预览故障时,服务人员无法获取视频,而简要日志中存储的日志内容少,也会影响服务人员定位故障。
本申请提供了一种图像处理的方法,由电子设备执行该方法,电子设备可以存储每帧第二图像数据的维测数据,图像数据的维测数据用于相机在预览或拍摄中出现异常时定位故障原因,使得服务人员可以通过该维测数据定位图像数据出现故障的原因。本申请中,电子设备可以是具有摄像头的设备,如手机、平板电脑、智能相机、摄像机等。
图3为本申请实施例示出的一种电子设备100的结构示意图。应该理解的是,图3中的电子设备100仅是电子设备的一个范例,并且电子设备100可以具有比图中所示的更多的或者更少的部件,可以组合两个或多个的部件,或者可以具有不同的部件配置。图3中所示出的各种部件可以在包括一个或多个信号处理和/或专用集成电路在内的硬件、软件、或硬件和软件的组合中实现。
电子设备100可以包括:处理器110,外部存储器接口120,内部存储器121,通用串行总线(universal serial bus,USB)接口130,充电管理模块140,电源管理模块141,电池142,天线1,天线2,移动通信模块150,无线通信模块160,音频模块170,扬声器170A,受话器170B,麦克风170C,耳机接口170D,传感器模块180,按键190,马达191,指示器192,摄像头193,显示屏194,以及用户标识模块(subscriber identification module,SIM)卡接口195等。其中传感器模块180可以包括压力传感器,陀螺仪传感器,气压传感器,磁传感器,加速度传感器,距离传感器,接近光传感器,指纹传感器,温度传感器,触摸传感器,环境光传感器,骨传导传感器等。
图4是本申请实施例的电子设备100的软件结构框图。
电子设备100的分层架构将软件分成若干个层,每一层都有清晰的角色和分工。层与层之间通过软件接口通信。在一些实施例中,将Android系统分为四层,从上至下分别为应用程序层,应用程序框架层,HAL层和内核层。
应用程序层可以包括一系列应用程序包。
如图4所示,应用程序包可以包括相机,图库,日历,通话,地图,导航,WLAN,蓝牙,音乐,视频,短信息等应用程序。
应用程序框架层为应用程序层的应用程序提供应用编程接口(ApplicationProgramming Interface,API)和编程框架,包括各种组件和服务来支持开发者的安卓开发。应用程序框架层包括一些预先定义的函数。如图4所示,应用程序框架层可以包括:窗口管理器、资源管理器、内容提供器、视图系统、通知管理器、摄像头服务等。
窗口管理器用于管理窗口程序。窗口管理器可以获取显示屏大小,判断是否有状态栏,锁定屏幕,截取屏幕等。
内容提供器用来存放和获取数据,并使这些数据可以被应用程序访问。数据可以包括视频,图像,音频,拨打和接听的电话,浏览历史和书签,电话簿等。
视图系统包括可视控件,例如显示文字的控件,显示图片的控件等。视图系统可用于构建应用程序。显示界面可以由一个或多个视图组成的。例如,包括短信通知图标的显示界面,可以包括显示文字的视图以及显示图片的视图。
资源管理器为应用程序提供各种资源,比如本地化字符串,图标,图片,布局文件,视频文件等等。
通知管理器使应用程序可以在状态栏中显示通知信息,可以用于传达告知类型的消息,可以短暂停留后自动消失,无需用户交互。比如通知管理器被用于告知下载完成,消息提醒等。通知管理器还可以是以图表或者滚动条文本形式出现在系统顶部状态栏的通知,例如后台运行的应用程序的通知,还可以是以对话窗口形式出现在屏幕上的通知。例如在状态栏提示文本信息,发出提示音,电子设备振动,指示灯闪烁等。
摄像头服务用于响应于应用的请求,调用摄像头(包括前置摄像头和/或后置摄像头)。
HAL层为位于操作系统内核与硬件电路之间的接口层。HAL层为位于操作系统内核与硬件电路之间的接口层。HAL层包括但不限于:音频硬件抽象层(Audio HAL)和摄像头硬件抽象层(Camera HAL)。其中,Camera HAL用于对图像流进行处理,Audio HAL用于对音频流进行处理,例如,对音频流进行降噪、定向增强等处理。
本示例中,摄像头硬件抽象层对从图像传感器复制到的第一图像数据进行图像处理,以生成对应的第二图像数据,例如,可以进行降噪、滤镜、美颜等处理。该有摄像头硬件抽象层还可以获取对每帧第一图像数据处理时的时间信息等作为该帧第二图像数据的维测数据。
内核层是硬件和上述软件层之间的层。内核层至少包含触摸屏驱动、摄像头驱动、传感器驱动;该内核层还可以包含其他驱动,如音频驱动等。其中,该硬件可以包括传感器、摄像头、显示屏,麦克风,处理器,以及存储器等器件。
可以理解的是,图4示出的各软件层包含的部件,并不构成对电子设备100的具体限定。在本申请另一些实施例中,电子设备100可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。
图5为示例性示出的一种图像处理的方法的流程图,该图像处理的方法由电子设备执行,本示例中,电子设备以手机为例进行说明。该图像处理的过程包括:
步骤501:电子设备响应于用户输入的第一操作,获取图像传感器采集的至少一帧第一图像数据。
示例性地,用户输入的第一操作可以预览操作或者拍摄操作,预览操作用于指示摄像头采集图像,并在显示屏中实时显示采集到的图像。例如,当用户点击相机应用的图标时,启动相机应用,并默认进入预览模式,可选地,预览模式包括:拍照的预览模式或拍摄的预览模式。
拍摄操作用于指示摄像头采集图像,并保存生成的视频,该视频是手机基于采集的图像数据生成。
当用户打开相机应用进行预览时,相机应用可以触发拍摄请求,相机应用将该请求下发至相机设备(即图像传感器)中,指示图像传感器对目标进行采集,目标可以是人物、景物、动物等。图像传感器按照预设输出帧率输出采集的第一图像数据,并将输出的一帧图像数据进行缓存,通常图像传感器的缓存第一图像数据的存储空间小,例如,图像传感器可以使用寄存器缓存一帧第一图像数据。
HAL层可以根据该拍摄请求,调用process_capture_request方法对本次拍摄请求进行处理。即该HAL从Sensor的缓存中复制到第一图像数据,并记录每个第一图像的第二帧号,第二帧号用于指示HAL层从图像传感器复制到的图像数据的帧的标识信息。
步骤502:电子设备对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据,维测数据用于在第二图像数据出现异常时,定位故障原因。
图6为示例性示出的本申请中图像处理的框架图,如图6所示,HAL层包括HAL处理帧流程模块和视频数据记录模块(Video Data Record,VDR)。HAL处理帧流程模块用于对从Sensor复制的第一图像数据进行图像处理,生成第二图像数据。VDR用于记录每帧第二图像数据生成过程中获取的维测数据。
相机应用在获取并打开相机设备(即图像传感器)之后,HAL层可以获取到相机设备的结构体中数据流的配置信息,根据该配置信息,可以实现对数据流的配置(即对HAL处理帧流程模块进行配置)。HAL层处理帧流程模块包括当前使用场景的usecase类,usecase类用于负责业务处理以及资源的管理。通常usecase类中包括feature类,feature类用于实现特定的功能,该特定功能可以由至少一条pipeline实现,该feature类受usecase的统一管理。该pipeline是用于提供单一特定功能的所有资源的集合,用于维护着所有硬件资源以及数据的流转。每个pipeline包括多个图像处理节点(Node),例如,一条pipeline中可以包括4个Node,4个Node可以通过链接(Link)串接在一起。图像处理节点(Node)为单个具有独立处理功能的抽象模块,是执行一项功能的基本单位,且必然运行。每个Node中具有单独的算法可以对图像数据进行处理。
HAL层获取到第一图像数据后,可以按照第二帧号的顺序将获取到的第一图像数据送入HAL处理帧流程模块进行图像数据,生成第二图像数据。
如图6所示,当某一帧(如第2帧)第一图像数据进入HAL处理帧流程模块时,该第一图像数据依次经过每个pipeline中的每个Node,由每个Node对该第一图像数据进行图像处理,该VDR可以同步记录该第一图像数据经过每个pipeline中的每个Node时的信息,记录的信息可以包括:该帧第一图像数据在每个Node的第一时间信息、处理当前帧的第一图像数据时设备的运行数据等。当HAL处理帧流程模块结束对第2帧第一图像数据的图像处理后,生成第2帧第二图像数据(即处理后的第2帧第一图像数据),该VDR将该第2帧第一图像数据经过每个pipeline中的每个Node时的记录的信息作为该第2帧第二图像数据的维测数据。
可选地,由于第二图像数据是基于第一图像数据生成,HAL可以获取每帧第一图像数据的第二帧号作为完成图像处理后的第一图像数据(即第二图像数据)的第二帧号。HAL层可以将第二图像数据的第二帧号作为该第二图像数据的维测数据的标识信息。例如,HAL层记录从Sensor复制到的第一图像数据的帧号为3(即该第一图像的第二帧号为3),记为CopyInfo=3;HAL处理帧流程模块对该第二帧号为3的第一图像数据进行图像处理,生成第二帧号为3的第二图像数据,VDR同时生成该第二图像数据的维测数据,该维测数据的标识信息可以为3。
可选地,该HAL层还可以记录每个第二图像数据与该第二图像数据的维测数据之间的对应关系。例如,以表格的形式存储每个第二图像数据和该第二图像数据的维测数据。
步骤503:电子设备根据第一操作,将至少一帧第二图像数据的维测数据存储于与第一操作匹配的目标位置。
示例性地,如图6所示,当检测到第一操作为拍摄操作,则该HAL层可以通过metadata(元数据)将生成的至少一帧第二图像数据的维测数据通过应用程序框架层传输至相机应用。该HAL层将至少一帧第二图像数据上报至相机应用。该相机应用可以缓存每帧第二图像数据和每帧维测数据。当相机应用检测到停止拍摄的操作时,该相机应用可以将缓存的每帧第二图像数据拼接为多媒体文件,将缓存的每帧第二图像数据的维测数据拼接于该多媒体文件的末尾,生成目标数据。相机应用将该目标数据存储于该手机的图库对应的存储空间中。
可选地,当手机检测到该第一操作为预览操作,则HAL层可以将至少一帧第二图像数据以及至少一帧第二图像数据的维测数据存储于内核层中的文件系统(如存储卡)中,如图6所示,VDR将维测数据存入文件系统。
具体地,HAL层可以每生成一帧第二图像数据的维测数据,则向文件系统写入该帧第二图像数据的维测数据。HAL层还可以缓存第二图像数据的维测数据,在检测到缓存的维测数据达到第一预设帧数,则可以将第一预设帧数的维测数据写入文件系统中。该第一预设帧数可以是10帧、20帧、25帧、30帧等。HAL层不立即将生成的当前帧的维测数据写入文件系统,而是在检测到缓存了第一预设帧数的维测数据后,将第一预设帧数的维测数据写入文件系统,可以避免不断向文件系统写入数据,导致系统开销大的问题。
可选地,当手机检测到该第一操作为预览操作,该HAL层可以检测至少一帧第一图像数据中是否存在丢帧,当HAL层检测到丢帧时,则获取包含丢帧位置的M帧第二图像的维测数据作为上报数据,M为大于1的整数。HAL层传输上报数据至文件系统,并指示文件系统将上报数据上报至服务器,以供服务器确定丢帧的故障原因;当HAL层检测到未发生丢帧时,则缓存生成的第二图像数据的维测数据。
HAL层检测至少一帧第一图像数据中是否存在丢帧的过程在后续图11中详细描述。
HAL层在确定了丢帧位置后,可以获取丢帧位置前M帧的维测数据传输至文件系统,或者获取丢帧位置之后M帧的维测数据传输至文件系统,或者获取丢帧位置前后共M帧的维测数据传输至文件系统。HAL指示文件系统向服务器上报存储的维测数据。
本示例中,电子设备在相机进行预览或拍摄时,记录每帧图像数据的维测数据,当预览发生卡顿或其他问题时,服务人员可以从文件系统或服务器中获取相关的维测数据,可以快速定位发生故障的原因。当拍摄的视频文件出现卡顿等问题时,服务人员可以获取存储的视频文件,从视频文件中解析出该段问题视频对应的维测数据,进而可以快速定位故障原因。
下面结合图7和图8具体说明当第一操作为拍摄操作时,保存维测数据的过程。
图7为示例性示出了当第一操作为拍摄操作时,对图像处理的流程图。图8为示例性示出的对图像处理的框架图。图像处理的过程包括:
步骤701:电子设备响应于用户输入的第一操作,获取图像传感器采集的至少一帧第一图像数据。
本示例中的电子设备以手机为例。用户可以对第一应用程序进行第一操作,第一应用程序可以是手机的系统相机应用,也可以是第三方应用的相机应用,如:用于美颜的相机、可以调用相机的短视频应用等。该第一操作可以是启动第一应用程序中的相机功能的操作,也可以是拍摄操作,还可以是预览操作。
本示例中是针对每帧图像数据生成对应的维测数据,该HAL层可以获取一帧第一图像数据,也可以获取多帧第一图像数据。
该步骤HAL获取图像传感器采集的至少一帧第一图像数据与步骤501大致相同,相关描述可以参照步骤501,此处不再进行赘述。
步骤702:电子设备对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据。
示例性地,HAL层可以每次从图像传感器获取一帧第一图像数据,并缓存在HAL层的缓冲区(buffer)中,并按照第一图像数据的第二帧号依次送入每个pipeline中的每个Node进行图像处理。下面结合图8具体说明基于第一图像数据生成第二图像数据和第二图像数据的维测数据的过程。
本示例中,HAL层中包括usecase,该usecase包括一个feature,该feature中包括一个pipeline,pipeline中包括多个图像处理节点(Node),图8中示出了该pipeline中包括5个Node。每个Node对第一图像数据进行一项特定功能的处理,对于同一帧第一图像数据,当前Node需要依赖该Node的前一个Node的处理结果,HAL层对第一图像数据的处理如同流水线处理一样,对第一图像数据的处理有先后顺序,同时,Node之间相互有依赖关系。
每个Node中可以包括1个或2个序列。每个序列包括几个串行的功能,该序列模块内部也是类似流水线。本示例中,可以将模块内部功能看成一个执行的原子单位,对于最小功能模块(即序列中)继续建模,可以划分为4个阶段,分别为:开始调度、依赖满足、执行、资源清理与回收。
举例来说,某一序列要获取重力计的数据,并对马达数据进行补偿。当开始调用该序列的功能函数时,会将该功能函数放入线程池进行调用,即序列模块处于开始调度阶段。依赖满足阶段:该序列获取重力计的数据,等待返回结果。该序列模块获取到有效数据或无效数据(如超时返回空),均认为实现了依赖满足。该阶段结束后,该模块可以通过获取到的数据尝试进行马达数据补偿,即进入执行阶段,执行具体的补偿算法阶段并应用于马达。该模块最后进行线程清理和回收,比如对重力计置位,以便于下次使用,释放动态申请内存,释放fence信号,触发下一步操作。
本示例中,每个Node中的序列也可以包括开始调度、依赖满足、执行、资源清理与回收等4个阶段。当Node的第一序列获取到一帧第一图像数据(即完成了开始调度),先判断是否满足该第一序列的依赖满足的条件,例如,Node1的第一序列的依赖满足条件包括:获取图像传感器的数值(如缩放参数),当Node1的第一序列检测到执行了获取图像传感器的数值的操作后,则确定满足了该依赖满足的条件;即无论是否成功获取到传感器的数值,均满足了该依赖满足的条件。该Node1的第一序列若确定满足当前依赖满足的条件后,进入执行阶段,也就是说第一序列对该第一图像数据进行特定功能的处理。该Node1的第一序列在功能执行完成之后,进入资源清理与回收阶段。
VDR可以将对第一图像处理的单个功能的记录抽象为对上述四个执行阶段的时间戳记录并绑定帧序列,获得功能坐标(如A模块Bx功能的xx阶段)。对于不同模块可能只有一个功能或者多个子功能,均按上述方式记录。由于pipeline中所有模块(即Node)的执行均是在线程池中执行,是一个异步操作,每个实例执行就会有先后快慢,但是对第一图像数据处理有工序要求,在线程池中可以优先处理依赖满足的模块(Node)。
举例来说,第一图像数据的图像处理需要经过3个Node,分别为Node1、Node2、Node3,Node2需要依赖于Node1对第一图像处理的处理结果,Node3需要依赖于Node2对第一图像处理的处理结果。当Node1对第一图像数据处理完成后,可以向Node2通知Node1已完成图像处理,Node2在获取到Node1的对第一图像数据的处理结果后,确定Node2的依赖满足,即对Node1的处理结果进行处理。Node2在处理完成后,可以向Node3通知Node2已完成图像处理,Node3在获取到Node2的对第一图像数据的处理结果后,确定Node3的依赖满足,即对Node2的处理结果进行处理。可选地,若Node2和Node3不依赖于Node1对第一图像数据的处理结果,那么当Node2或Node3检测到依赖满足,则可以执行各自的功能。
本示例中,VDR可以通过记录第一图像数据在Node的中的每个阶段的时间戳,从而可以记录该第一图像数据在进行图像处理过程中每个功能模块的运行请情况,以及该功能模块在每个阶段的运行耗时情况,以便于后续服务人员定位故障。例如,VDR可以记录第一图像数据进入序列的起始时间,该序列依赖满足的时间、该序列进入功能执行的时间以及资源清理与回收的时间。可选地,VDR还可以记录每个Node对第一图像数据进行处理时CPU的频率、温度以及内存的信息,以还原生成该第二图像数据的生命周期内的环境信息。服务人员通过维测数据可以通过时间信息判断每个节点处理图像数据的耗时情况,对占用内存多的Node进行优化;还基于维测数据推算不同版本的各个node以及算法处理时长的变化。
如图8所示,VDR获取每个Node处理每帧第一图像数据时在每个阶段的时间戳、每个Node对第一图像数据进行处理时CPU的频率、温度以及内存的信息等。可选地,VDR还可以记录其他信息,例如,该第一图像数据的第一帧号和第二帧号、采集该第一图像数据的传感器的标识信息、采集该第一图像数据的缩放比例、处理该第一图像数据的节点的类型、采集该第一图像数据的传感器的类型等。本示例中不再一一列举该VDR记录的信息。
可选地,无论是预览的视频或拍摄的视频,需要以图像帧为载体,在pipeline中进行各种处理,图像帧id(即可以是第一图像数据的第二帧号)在整个图像帧生命周期内固定且唯一。HAL层采用Map数据结构的形式存储每个第二图像数据的维测数据,其中,单个图像帧维测数据采用字典形式,图像帧id作为字段的key值,维测数据就是value。
本示例中,电子设备获取维测数据的功能模块可以以so的形式在编译时期动态连接到各个业务so里面,使得其他业务可以调用本示例中的获取维测数据的功能。当电子设备运行时,可以生成用于获取维测数据的单例。当相机应用运行或者相机应用切换模式(如拍照模式切换为录像模式)时,初始化该单例中的数据。HAL层的该单例可以在整个高通原始的usecase、feature、pipeline、node以及sit(一种算法节点)里面的algo(算法)运行期间获取维测数据,并运行采集维测数据接口,写入Map里面。可选地,该HAL层可以从多个usecase中选择一个usecase对当前帧的第一图像数据进行处理以及采集当前帧的维测数据。
其中,HAL层在调用process_capture_request方法时,确定开始对当前帧的第一图像数据进行图像处理,同时该单例开始采集当前帧的第一图像数据的维测数据。HAL层在运行到Usecase::ReturnFrameworkResult方法时,在该方法中会调用该单例的中的接口,以通知VDR当前帧的维测数据采集完成。该VDR接收到该通知后,标记当前帧的维测数据结束,并将当前帧的维测数据上传至应用程序框架层的framebuffer。
另外,HAL层在运行到Usecase::ReturnFrameworkResult方法时,该方法还会调用process_capture_result方法,以将图像处理完成的当前帧的第一图像数据(即第二图像数据)返回应用程序框架层的framebuffer。可选地,该单例可以理解为VDR单例。
步骤703:当电子设备的硬件抽象层检测到第一操作为拍摄操作时,硬件抽象层将N帧第二图像数据和N帧第二图像数据的维测数据上报第一应用程序。
如图8所示,当一帧第一图像数据依次进入每个Node后,生成第二图像数据,对应的VDR将记录的每二个Node的信息作为该帧第二图像数据对应的维测数据。每帧的维测数据的标识与对应的第二图像数据的第二帧号相同。
当第一应用程序检测到第一操作为拍摄操作时,该HAL层可以获取到当前的操作为拍摄操作的指示信息,HAL层可以根据该指示信息判断当前第一操作是否为拍摄操作。如图8所示,在HAL层处理完一帧第一图像数据后,检测到第一操作为拍摄操作,则确定VDR将生成的该帧的维测数据上报至第一应用程序,同时该帧的第二图像数据被HAL上报至第一应用程序。
步骤704:第一应用程序根据N帧第二图像数据和N帧第二图像数据的维测数据,生成目标数据。
如图8所示,该第一应用程序将每帧维测数据缓存至缓冲区(buffer),第一应用程序按照第二图像数据的帧号拼接每帧第二图像数据,生成多媒体文件(如MP4格式的文件)。当用户点击停止拍摄的按钮时,获取拼接的多媒体文件,并将获取的每帧维测数据拼接在该多媒体文件的末尾,生成新的目标数据。将每帧维测数据拼接在多媒体文件的末尾,可以避免电子设备不能正常解析目标数据中的多媒体文件的问题。
步骤705:第一应用程序将目标数据存储于电子设备的图库对应的存储空间中。
本示例中,当第一操作是拍摄操作时,HAL层可以将生成的每帧第二图像数据的维测数据上报第一应用程序,第一应用程序将每帧的维测数据拼接在由第二图像数据组成多媒体文件的末尾,使得当用户上报拍摄故障时,服务人员可以根据视频文件中的维测数据,快速定位故障。
下面结合图9和图10具体说明当第一操作为预览操作时,保存维测数据的过程。
图9为示例性示出了当第一操作为预览操作时,对图像处理的流程图。图10为示例性示出的对图像处理的框架图。图像处理的过程包括:
步骤901:电子设备响应于输入的第一操作,获取图像传感器采集的至少一帧第一图像数据。
该步骤与步骤501和步骤701大致相同,可以参照步骤501和步骤701中的相关描述,此处不再进行赘述。
步骤902:电子设备对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据。
该步骤与步骤702大致相同,相关描述可以参照步骤702中的描述,此处不再进行赘述。
步骤903:当电子设备的硬件抽象层检测到第一操作为预览操作时,硬件抽象层将至少一帧第二图像数据的维测数据存储于电子设备的文件系统。
示例性地,如图10所示,当一帧第一图像数据依次进入每个Node后,生成第二图像数据,对应的VDR将记录的每二个Node的信息作为该帧第二图像数据对应的维测数据。每帧的维测数据的标识与对应的第二图像数据的帧号相同。
当第一应用程序检测到第一操作为拍摄操作时,该HAL可以获取到当前的操作为预览操作的指示信息,HAL可以根据该指示信息判断当前第一操作是否为预览操作。如图10所示,在HAL处理完一帧第一图像数据后,检测到第一操作为预览操作,则确定VDR将生成的该帧的维测数据存入内核层的文件系统中,同时该帧第二图像数据被HAL上报至第一应用程序。由第一应用程序将接收的每帧第二图像数据拼接为多媒体文件,并指示显示屏显示该多媒体文件。
可选地,该HAL可以每生成一帧维测数据,将该维测数据以特定格式存入文件系统中,例如,第一帧第二图像的维测数据以bin文件形式存入文件系统中,当HAL生成第二帧的维测数据,将该第二帧的维测数据转为bin文件形式,并追加在第一帧的维测数据之后。当HAL检测到预览结束或者切换为其他模式(如拍照模式)时,则结束当前bin文件的写入。
需要说明的是,当HAL检测到模式切换时,则生成新的bin文件,用于存储新模式下获取的维测数据。
由于相机处于预览模式时,手机并不会存储预览时显示的视频,若在预览时出现页面卡顿问题或其他故障时,手机无法提供视频文件。本示例中,将每帧预览的第二图像数据的维测数据直接存储在文件系统中,使得开发人员可以通过文件系统中的维测数据定界故障,并由对应的故障处理人员基于维测数据定位故障。
可选地,HAL层可以设置预设深度的第一队列,该第一队列用于缓存特定格式的维测数据。例如,该第一队列的深度可以用于缓存10帧的维测数据、或20帧的维测额数据,或30帧的维测数据等。当HAL层检测到该第一队列满时,该HAL层将第一队列中缓存的维测数据以bin文件写入文件系统中。
本示例中,当相机处于拍照预览或摄像预览时,HAL层可以将生成的每帧的维测数据存储于电子设备的文件系统中,以使得开发人员可以根据存储的维测数据及时定位故障原因。
在一些实施例中,当预览出现异常时,电子设备将预览过程中生成的维测数据上报服务器,使得服务人员可以根据维测数据及时发现故障原因,修复故障。
下面结合图11具体说明电子设备将维测数据上报服务器的过程。本示例中,电子设备以手机为例。
步骤1101:电子设备响应于用户输入的第一操作,获取图像传感器采集的至少一帧第一图像数据。
该步骤HAL层获取图像传感器采集的至少一帧第一图像数据与步骤701大致相同,相关描述可以参照步骤701,此处不再进行赘述。
步骤1102:电子设备对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据。
该步骤与步骤702大致相同,相关描述可以参照步骤702,此处不再进行赘述。
步骤1103:电子设备检测获取的至少至少一帧第一图像数据是否出现丢帧。若检测到丢帧,则执行步骤1104;若未检测到丢帧,则执行步骤1108。
示例性地,该步骤1103可以与步骤1102同步执行。当HAL层每获取到一帧第一图像数据时,即可基于当前的第一图像数据检测是否出现丢帧。可选地,HAL层针对每帧第一图像数据进行如下处理:
HAL层获取当前第一图像数据的第一帧号和当前第一图像数据的第二帧号。HAL层获取当前第一图像数据的第一帧号和当前第一图像数据的第二帧号之间的差值作为第一差值;若检测到第一差值大于0,则获取上一帧第一图像数据的第一帧号与上一帧第一图像数据的第二帧号之间的差值作为第二差值;检测第一差值与第二差值之间是否相同;当硬件抽象层确定第一差值与第二差值不同,则确定当前出现了丢帧。
HAL层可以利用回调函数获取该帧第一图像数据的第一帧号。HAL层读取该帧第一图像数据的第二帧号,并获取该第一图像数据的第一帧号和该第一图像数据的第二帧号之间的差值,若检测到该第一图像数据的第一帧号与该第一图像数据的第二帧号之间的差值为0,则确定没有发生丢帧。
若检测到该第一图像数据的第一帧号与该第一图像数据的第二帧号的差值不为0,则HAL层可以将该第一图像数据的第一帧号和该第一图像数据的第二帧号之间的差值作为第一差值。HAL层获取上一帧第一图像数据的第一帧号与上一帧第一图像数据的第二帧号之间的差值作为第二差值;检测第一差值与第二差值之间是否相同;当HAL层确定第一差值与第二差值不同,则确定当前帧的位置发生了丢帧。当HAL层确定第一差值与第二差值相同,则确定当前位置未发生丢帧。
举例来说,Sensor在T1输出的第8帧第一图像数据,记录该第8帧第一图像数据的第一帧号为8,记为SSInfo=1。HAL层从Sensor获取到第8帧第一图像数据,记录该第一图像数据的第二帧号为8,记为CopyInfo=8。HAL层获取到第二帧号为8的第一图像数据时,可以通过回调函数获取CopyInfo为8的第一图像数据的第一帧号(即SSInfo=8)。HAL层获取该第一图像数据的第一帧号和第二帧号之间的差值作为第一差值,当HAL层检测到该第一差值为0,则确定当前未发生丢帧。同时,该HAL层可以对该第8帧第一图像数据进行图像处理,生成第二图像数据(该CopyInfo=8)和该第二图像数据的维测数据。
Sensor在T2时刻输出的第9帧第一图像数据,记录该输出的第9帧第一图像数据的第一帧号为9,记为SSInfo=9。该Sensor在T3时刻输出的第10帧第一图像数据,记录该第10帧第一图像数据的第一帧号为10,记为SSInfo=10。HAL层未在T3时刻之前获取到Sensor输出的第9帧第一图像数据。当Sensor在T3时刻输出的第10帧第一图像数据,该Sensor缓存的第9帧第一图像数据被第10帧第一图像数据覆盖。该HAL层在T3时刻从Sensor获取到该Sensor缓存的第10帧第一图像数据,HAL层记录获取到的该第一图像数据的第二帧号为9,记为CopyInfo=9。
HAL层获取到第二帧号为9的第一图像数据时,可以通过回调函数获取该帧第一图像数据的第一帧号(即SSInfo=10)。HAL层获取该第一图像数据的第一帧号(即SSInfo=10)和第二帧号(CopyInfo=9)之间的差值作为第一差值(即第一差值为1),当HAL层检测到该第一差值大于0,则获取上一帧第一图像数据的第一帧号(即SSInfo=8)和上一帧第一图像的第二帧号(CopyInfo=8)之间的差值作为第二差值(即第二差值为0);HAL层检测到第一差值和第二差值不同,则确定当前位置发生了丢帧。
Sensor在T4时刻输出的第11帧第一图像数据,记录该输出的第11帧第一图像数据的第一帧号为11,记为SSInfo=11。HAL层在T4时刻获取Sensor输出的第11帧第一图像数据,记录该第一图像数据的第二帧号为10,记为CopyInfo=10。
HAL层获取到二帧号为10的第一图像数据时,可以通过回调函数获取该帧第一图像数据的第一帧号(即SSInfo=11)。HAL层获取该帧第一图像数据的第一帧号(SSInfo=11)和第二帧号(CopyInfo=10)之间的差值作为第一差值(即第一差值为1),HAL层检测到该第一差值大于0,则获取上一帧第一图像数据的第一帧号(SSInfo=10)和第二帧号(CopyInfo=9)之间的差值作为第二差值(即第二差值为1),该HAL层检测到第一差值和第二差值相同,则确定当前位置未发生丢帧。
HAL层通过对每帧第一图像数据的第一帧号和第二帧号,可以快速确定当前位置是否出现了丢帧。
步骤1104:电子设备获取包含丢帧位置的M帧第二图像数据的维测数据。
示例性地,丢帧位置即为当前检测到丢帧的帧位置,例如,HAL层检测到当前获取的第9帧第一图像数据发生了丢帧,该丢帧位置即为该第9帧第一图像数据的位置,由于第一图像数据的第二帧号与第二图像数据的第二帧号相同,即丢帧位置为第9帧的第二图像数据。HAL层缓存有每帧第二图像数据的维测数据。HAL层在确定了丢帧位置后,可以从缓存中获取包含丢帧位置的M帧的维测数据。例如,M为80帧,丢帧位置为第9帧,可以获取从第一帧到第80帧的第二图像的维测数据。可选地,M也可以为90帧、100帧、120帧等。
步骤1105:电子设备传输获取的M帧第二图像数据的维测数据至文件系统。
示例性地,当HAL层获取到包含丢帧位置的M帧第二图像数据的维测数据后,可以将该M帧第二图像数据的维测数据存储至文件系统。
步骤1106:电子设备检测向文件系统存储维测数据的次数是否达到K次,若检测达到K次,则执行不足后1107;若检测未达到K次,则结束流程。
示例性地,HAL层将M帧第二图像数据的维测数据传输至文件系统后,可以检测HAL层向文件系统存储维测数据的次数是否达到K次,若检测达到了K次,则可以执行步骤1107,即HAL层指示文件系统将K次存储的维测数据上报服务器。K可以为大于0的整数,如1、2、3、4、10等。
若检测到未达到K次,则返回步骤1103,检测下一帧的位置是否出现丢帧。
步骤1107:电子设备将K次存储的维测数据上报服务器。
示例性地,HAL层指示文件系统将K次存储的维测数据上报服务器,该服务器可以是该第一应用程序对应的服务器。
可选地,HAL层在指示文件系统将K次存储的维测数据上报服务器后,可以删除该文件系统中K次存储的维测数据。
可选地,HAL层还可以定期(如5天、7天、一个月等时间)删除文件系统中存储的维测数据。HAL还可以按照存储时间的先后顺序删除文件系统中预设帧数(如1000帧、800帧、500帧)的维测数据。
步骤1108:电子设备缓存生成的第二图像数据的维测数据。
示例性地,当未检测到丢帧的情况,可以在HAL层缓存生成的第二图像数据的维测数据。
本示例中,HAL层在检测到有丢帧时,将包含丢帧位置的M帧第二图像数据的维测数据存储于文件系统中,并在检测到文件系统存储的维测数据达到阈值时,向服务器上报维测数据,并删除上报的维测数据。这样,使得第一应用程序的服务器可以及时获取不同电子设备上报的维测数据,便于服务人员及时定位故障并排除故障,同时,电子设备删除上报的维测数据,可以减少对文件系统中存储空间的占用。
可以理解的是,电子设备为了实现上述功能,其包含了执行各个功能相应的硬件和/或软件模块。结合本文中所公开的实施例描述的各示例的算法步骤,本申请能够以硬件或硬件和计算机软件的结合形式来实现。某个功能究竟以硬件还是计算机软件驱动硬件的方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以结合实施例对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本实施例还提供一种计算机存储介质,该计算机存储介质中存储有计算机指令,当该计算机指令在电子设备上运行时,使得电子设备执行上述相关方法步骤实现上述实施例中的图像处理的方法。存储介质包括:U盘、移动硬盘、只读存储器(read only memory,ROM)、随机存取存储器(random access memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的图像处理的方法。
其中,本实施例提供的电子设备、计算机存储介质、计算机程序产品或芯片均用于执行上文所提供的对应的方法,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。
本申请各个实施例的任意内容,以及同一实施例的任意内容,均可以自由组合。对上述内容的任意组合均在本申请的范围之内。
本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
本申请实施例的说明书和权利要求书中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述对象的特定顺序。例如,第一目标对象和第二目标对象等是用于区别不同的目标对象,而不是用于描述目标对象的特定顺序。
在本申请实施例中,“示例性的”或者“例如”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示例性的”或者“例如”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示例性的”或者“例如”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,除非另有说明,“多个”的含义是指两个或两个以上。例如,多个处理单元是指两个或两个以上的处理单元;多个系统是指两个或两个以上的系统。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。
Claims (18)
1.一种图像处理的方法,其特征在于,应用于电子设备,所述方法包括:
响应于用户输入的第一操作,获取图像传感器采集的至少一帧第一图像数据,所述第一操作包括拍摄操作或预览操作;
对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧第二图像数据的维测数据,所述维测数据用于所述电子设备在拍摄或预览出现异常时,定位故障原因;
将至少一帧第二图像数据的维测数据存储于与所述第一操作匹配的目标位置。
2.根据权利要求1所述的方法,其特征在于,所述将至少一帧第二图像数据的维测数据存储于与所述第一操作匹配的目标位置,包括:
当所述电子设备的硬件抽象层检测到所述第一操作为拍摄操作时,所述硬件抽象层将N帧第二图像数据和所述N帧第二图像数据的维测数据上报第一应用程序,N为大于1的整数;
所述第一应用程序根据所述N帧第二图像和所述N帧第二图像数据的维测数据,生成所述目标数据;
所述第一应用程序将所述目标数据存储于所述电子设备的图库对应的存储空间中。
3.根据权利要求2所述的方法,其特征在于,所述第一应用程序根据所述N帧第二图像和所述N帧第二图像数据的维测数据,生成所述目标数据,包括:
所述第一应用程序缓存所述N帧第二图像数据的维测数据;
所述第一应用程序检测到拍摄结束时,将所述N帧第二图像数据拼接为多媒体文件;
所述第一应用程序将所述N帧第二图像数据的维测数据拼接于所述多媒体文件的末尾,生成目标数据。
4.根据权利要求1所述的方法,其特征在于,所述将至少一帧第二图像数据的维测数据存储于与所述第一操作匹配的目标位置,包括:
当所述电子设备的硬件抽象层检测到所述第一操作为预览操作时,所述硬件抽象层将至少一帧第二图像数据的维测数据存储于所述电子设备的文件系统。
5.根据权利要求1所述的方法,其特征在于,所述将至少一帧第二图像数据的维测数据存储于与所述第一操作匹配的目标位置,包括:
当所述电子设备的硬件抽象层检测到所述第一操作为预览操作时,所述硬件抽象层缓存至少一帧第二图像数据的维测数据;
当所述硬件抽象层检测到缓存的维测数据的帧数达到第一预设帧数,则将第一预设帧数的维测数据存储于所述电子设备的文件系统。
6.根据权利要求1所述的方法,其特征在于,所述将至少一帧第二图像数据的维测数据存储于与所述第一操作匹配的目标位置,包括:
所述电子设备的硬件抽象层检测至少一帧第一图像数据中是否存在丢帧;
当所述硬件抽象层检测到丢帧时,则获取包含丢帧位置的M帧的第二图像的维测数据作为上报数据;所述硬件抽象层传输所述上报数据至文件系统,并指示所述文件系统将所述上报数据上报至服务器,以供服务器确定丢帧的故障原因,M为大于1的整数;
当所述硬件抽象层检测到未发生丢帧时,则缓存生成的第二图像数据的维测数据。
7.根据权利要求6所述的方法,其特征在于,所述指示所述文件系统将所述上报数据上报至服务器,包括:
所述硬件抽象层检测向所述文件系统传输上报数据的次数是否达到K次,K为大于1的整数;
当所述硬件抽象层检测到向所述文件系统传输上报数据的次数达到K次,则将K次存储的所述上报数据上报至所述服务器。
8.根据权利要求6所述的方法,其特征在于,所述硬件抽象层检测获取的至少一帧第一图像数据是否出现丢帧,包括:
针对每帧第一图像数据进行如下处理:
所述硬件抽象层获取当前第一图像数据的第一帧号,所述第一帧号用于指示所述图像传感器采集的图像数据的标识信息;
所述硬件抽象层获取当前第一图像数据的第二帧号,所述第二帧号用于指示所述硬件抽象层从图像传感器复制到的图像数据的标识信息;
所述硬件抽象层获取当前所述第一图像数据的所述第一帧号和当前所述第一图像数据的第二帧号之间的差值作为第一差值;
所述硬件抽象层若检测到所述第一差值大于0,则获取上一帧第一图像数据的第一帧号与上一帧第一图像数据的第二帧号之间的差值作为第二差值;
所述硬件抽象层检测所述第一差值与所述第二差值之间是否相同;
当所述硬件抽象层确定所述第一差值与所述第二差值不同,则确定当前出现了丢帧。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
所述硬件抽象层从所述文件系统中删除上报的维测数据。
10.根据权利要求5至9中任一项所述的方法,其特征在于,所述方法还包括:
所述硬件抽象层检测到所述文件系统存储的维测数据的容量达到阈值,则从存储的维测数据中删除最早存储的第二预设帧数的维测数据。
11.根据权利要求5所述的方法,其特征在于,所述文件系统中设置有至少一个预设深度的循环队列,所述循环队列用于存储第二图像的维测数据。
12.根据权利要求1所述的方法,其特征在于,对至少一帧第一图像数据进行图像处理,生成至少一帧第二图像数据以及至少一帧所述第二图像数据的维测数据,包括:
所述电子设备的硬件抽象层获取至少一帧第一图像数据经过每个处理节点的第一时间信息,所述第一时间信息包括所述第一图像数据在所述处理节点的不同处理阶段的时刻;
所述硬件抽象层根据所述第一图像数据在每个处理节点的第一时间信息,生成所述第二图像数据的维测数据,所述第二图像数据是所述第一图像数据经过每个处理节点的处理后生成。
13.根据权利要求12所述的方法,其特征在于,所述第二图像的维测数据还包括:
所述第一图像数据经过每个处理节点时设备运行的数据,所述第一图像数据用于生成所述第二图像数据。
14.根据权利要求13所述的方法,其特征在于,所述设备运行的数据包括:处理所述第一图像数据时CPU的频点、CPU的温度以及内存信息。
15.根据权利要求13所述的方法,其特征在于,所述第二图像数据的维测数据还包括以下信息中的一种或多种:预览场景下或拍摄场景下设置的拍摄缩放比例、每个处理节点的类型、所述图像传感器的标识信息或所述图像传感器出帧的模式。
16.根据权利要求8所述的方法,其特征在于,每帧第二图像数据的维测数据采用地图Map数据结构的形式,其中,以当前第二图像数据的第二帧号作为当前第二图像数据的维测数据的键,当前第一图像数据用于生成当前第二图像数据,当前第一图像数据的第二帧号作为当前第二图像数据的第二帧号。
17.一种电子设备,其特征在于,包括:
存储器和处理器,所述存储器与所述处理器耦合;
所述存储器存储有程序指令,当所述程序指令由所述处理器执行时,使得所述电子设备执行如权利要求1-16中任意一项所述图像处理的方法。
18.一种计算机可读存储介质,包括计算机程序,其特征在于,当所述计算机程序在电子设备上运行时,使得所述电子设备执行如权利要求1-16中任意一项所述的图像处理的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310090986.5A CN117135341B (zh) | 2023-01-19 | 2023-01-19 | 图像处理的方法及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310090986.5A CN117135341B (zh) | 2023-01-19 | 2023-01-19 | 图像处理的方法及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117135341A true CN117135341A (zh) | 2023-11-28 |
CN117135341B CN117135341B (zh) | 2024-07-23 |
Family
ID=88849688
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310090986.5A Active CN117135341B (zh) | 2023-01-19 | 2023-01-19 | 图像处理的方法及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117135341B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117474926A (zh) * | 2023-12-28 | 2024-01-30 | 荣耀终端有限公司 | 图像检测方法和装置 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108718362A (zh) * | 2018-04-28 | 2018-10-30 | 上海与德通讯技术有限公司 | 录像方法和终端 |
CN113038122A (zh) * | 2021-03-16 | 2021-06-25 | 通号通信信息集团有限公司 | 一种基于视频图像诊断数据的故障定位系统及方法 |
CN114338913A (zh) * | 2020-09-29 | 2022-04-12 | 荣耀终端有限公司 | 故障诊断方法和电子设备 |
CN114531544A (zh) * | 2022-02-11 | 2022-05-24 | 维沃移动通信有限公司 | 录制方法、装置、设备及计算机存储介质 |
CN114650363A (zh) * | 2020-12-18 | 2022-06-21 | 华为技术有限公司 | 一种图像显示的方法及电子设备 |
CN114928740A (zh) * | 2021-11-25 | 2022-08-19 | 广东利通科技投资有限公司 | 视频质量检测方法、装置、设备、存储介质和程序产品 |
CN115002332A (zh) * | 2021-03-01 | 2022-09-02 | 北京小米移动软件有限公司 | 拍摄处理方法、装置、电子设备和存储介质 |
-
2023
- 2023-01-19 CN CN202310090986.5A patent/CN117135341B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108718362A (zh) * | 2018-04-28 | 2018-10-30 | 上海与德通讯技术有限公司 | 录像方法和终端 |
CN114338913A (zh) * | 2020-09-29 | 2022-04-12 | 荣耀终端有限公司 | 故障诊断方法和电子设备 |
CN114650363A (zh) * | 2020-12-18 | 2022-06-21 | 华为技术有限公司 | 一种图像显示的方法及电子设备 |
CN115002332A (zh) * | 2021-03-01 | 2022-09-02 | 北京小米移动软件有限公司 | 拍摄处理方法、装置、电子设备和存储介质 |
CN113038122A (zh) * | 2021-03-16 | 2021-06-25 | 通号通信信息集团有限公司 | 一种基于视频图像诊断数据的故障定位系统及方法 |
CN114928740A (zh) * | 2021-11-25 | 2022-08-19 | 广东利通科技投资有限公司 | 视频质量检测方法、装置、设备、存储介质和程序产品 |
CN114531544A (zh) * | 2022-02-11 | 2022-05-24 | 维沃移动通信有限公司 | 录制方法、装置、设备及计算机存储介质 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117474926A (zh) * | 2023-12-28 | 2024-01-30 | 荣耀终端有限公司 | 图像检测方法和装置 |
CN117474926B (zh) * | 2023-12-28 | 2024-09-03 | 荣耀终端有限公司 | 图像检测方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN117135341B (zh) | 2024-07-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10831263B2 (en) | Dynamic augmented reality media creation | |
US20140085495A1 (en) | Methods and devices for controlling camera image capture | |
CN114827342B (zh) | 视频处理方法、电子设备及可读介质 | |
CN114374813B (zh) | 多媒体资源管理方法、记录仪及服务器 | |
CN117135341B (zh) | 图像处理的方法及电子设备 | |
WO2024055797A1 (zh) | 一种录像中抓拍图像的方法及电子设备 | |
WO2023035921A1 (zh) | 一种录像中抓拍图像的方法及电子设备 | |
KR20150057736A (ko) | 백업 정보를 디스플레이 하여 이미지 파일을 관리하는 장치 및 방법 | |
CN114339419B (zh) | 一种视频流拉流处理的方法、装置及存储介质 | |
CN111176766A (zh) | 一种通信终端及组件显示方法 | |
CN113179432B (zh) | 视频的采集位置的显示方法及显示设备 | |
CN113709026A (zh) | 即时通信消息的处理方法、设备、存储介质和程序产品 | |
CN112199997A (zh) | 一种终端及工具处理方法 | |
CA2825342A1 (en) | Methods and devices for controlling camera image capture | |
WO2021204103A1 (zh) | 照片预览方法、电子设备和存储介质 | |
KR20100101960A (ko) | 디지털 카메라, 사진 분류 시스템 및 방법 | |
CN104113632B (zh) | 一种信息处理方法及电子设备 | |
CN106020730A (zh) | 一种移动设备的多媒体数据的清理方法和装置 | |
CN113642010A (zh) | 一种获取扩展存储设备数据的方法及移动终端 | |
CN113254263A (zh) | 一种电子终端及文件恢复方法 | |
CN113641533B (zh) | 终端及短信息处理方法 | |
CN116761080B (zh) | 图像数据的处理方法和终端设备 | |
CN112929858B (zh) | 一种门禁卡的模拟方法和终端 | |
KR20070002159A (ko) | 동영상 관리 방법 및 장치 | |
CN115619880A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |