CN111193866B - 图像处理方法、图像处理器、拍摄装置和电子设备 - Google Patents
图像处理方法、图像处理器、拍摄装置和电子设备 Download PDFInfo
- Publication number
- CN111193866B CN111193866B CN202010018434.XA CN202010018434A CN111193866B CN 111193866 B CN111193866 B CN 111193866B CN 202010018434 A CN202010018434 A CN 202010018434A CN 111193866 B CN111193866 B CN 111193866B
- Authority
- CN
- China
- Prior art keywords
- shake
- current
- image
- parameter
- jitter
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/681—Motion detection
- H04N23/6811—Motion detection based on the image signal
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/60—Control of cameras or camera modules
- H04N23/68—Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
- H04N23/681—Motion detection
- H04N23/6812—Motion detection based on additional sensors, e.g. acceleration sensors
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N23/00—Cameras or camera modules comprising electronic image sensors; Control thereof
- H04N23/80—Camera processing pipelines; Components thereof
- H04N23/84—Camera processing pipelines; Components thereof for processing colour signals
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Studio Devices (AREA)
Abstract
本申请公开了一种图像处理方法、图像处理器、拍摄装置和电子设备。图像处理方法包括:防抖单元在接收到带有当前时间戳的当前图像时,从抖动检测模块中读取抖动参数;所述防抖单元根据所述当前时间戳、读取所述抖动参数的读取时间以及预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数;和处理单元根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理。本申请实施方式从多个抖动参数中确定与当前图像对应的当前抖动参数,以使得当前图像与当前抖动参数精确对应,从而处理单元根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理能够具有较好的防抖处理效果。
Description
技术领域
本申请涉及图像处理技术领域,特别涉及一种图像处理方法、图像处理器、拍摄装置和电子设备。
背景技术
电子防抖(ElectricImageStabilization,EIS)利用侦测到的机身抖动的程度来动态调整感光度、快门等参数来做模糊修正。相关技术中,算法后处理模块在对图像进行EIS算法处理时,应用程序模块才开始获取抖动参数,并按照当前***时间,将得到的抖动参数标记时间戳,然后送入至算法后处理模块中进行EIS算法处理。这样得到的抖动参数与图像之间会存在时间差,抖动参数无法和图像精确对应,影响防抖处理效果。
发明内容
本申请实施方式提供一种图像处理方法、图像处理器、拍摄装置和电子设备。
本申请实施方式提供的图像处理方法包括:应用程序模块的防抖单元在接收到带有当前时间戳的当前图像时,从抖动检测模块中读取抖动参数,所述抖动检测模块包括缓存区,所述缓存区内存储有多个所述抖动参数,每两个相邻的所述抖动参数的检测时间间隔预定时长;所述防抖单元根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数;和算法后处理模块的处理单元根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理。
本申请实施方式提供的图像处理器与抖动检测模块连接。所述图像处理器包括应用程序模块和算法后处理模块。所述应用程序模块包括防抖单元,所述算法后处理模块包括处理单元。所述防抖单元用于在接收到带有当前时间戳的当前图像时,从所述抖动检测模块中读取抖动参数。所述抖动检测模块包括缓存区,所述缓存区内存储有多个所述抖动参数,每两个相邻的所述抖动参数的检测时间间隔预定时长。所述防抖单元用于根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数。所述处理单元用于根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理。
本申请实施方式提供的拍摄装置包括抖动检测模块、图像处理器和图像传感器。所述图像处理器与所述抖动检测模块连接。所述图像传感器与所述图像处理器连接。所述图像处理器包括应用程序模块和算法后处理模块。所述应用程序模块包括防抖单元,所述算法后处理模块包括处理单元。所述防抖单元用于在接收到带有当前时间戳的当前图像时,从所述抖动检测模块中读取抖动参数。所述抖动检测模块包括缓存区,所述缓存区内存储有多个所述抖动参数,每两个相邻的所述抖动参数的检测时间间隔预定时长。所述防抖单元用于根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数。所述处理单元用于根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理。
本申请实施方式提供的电子设备包括拍摄装置和壳体,所述拍摄装置与所述壳体结合。所述拍摄装置包括抖动检测模块、图像处理器和图像传感器。所述图像处理器与所述抖动检测模块连接。所述图像传感器与所述图像处理器连接。所述图像处理器包括应用程序模块和算法后处理模块。所述应用程序模块包括防抖单元,所述算法后处理模块包括处理单元。所述防抖单元用于在接收到带有当前时间戳的当前图像时,从所述抖动检测模块中读取抖动参数。所述抖动检测模块包括缓存区,所述缓存区内存储有多个所述抖动参数,每两个相邻的所述抖动参数间隔预定时长。所述防抖单元用于根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数。所述处理单元用于根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理。
本申请实施方式的图像处理方法、图像处理器、拍摄装置和电子设备中,防抖单元根据当前图像的当前时间戳、从抖动检测模块中读取抖动参数的读取时间、以及每两个相邻的抖动参数间隔的预定时长,从多个抖动参数中确定与当前图像对应的当前抖动参数,以使得当前图像与当前抖动参数是精确对应的,从而处理单元根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理能够具有较好的防抖处理效果。
本申请实施方式的附加方面和优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请的上述和/或附加的方面和优点从结合下面附图对实施方式的描述中将变得明显和容易理解,其中:
图1是本申请某些实施方式的拍摄装置的示意图;
图2是本申请某些实施方式的算法后处理模块的示意图;
图3是本申请某些实施方式的拍摄装置的示意图;
图4是本申请某些实施方式的图像处理方法的流程示意图;
图5是本申请某些实施方式的图像处理方法的场景示意图;
图6是本申请某些实施方式的图像处理方法的场景示意图;
图7是本申请某些实施方式的图像处理方法的流程示意图;
图8是本申请某些实施方式的图像处理方法的流程示意图;
图9是本申请某些实施方式的图像处理方法的流程示意图;
图10是本申请某些实施方式的图像处理方法的场景示意图;
图11是本申请某些实施方式的图像处理方法的流程示意图;
图12是本申请某些实施方式的图像处理方法的场景示意图;
图13是本申请某些实施方式的图像处理方法的流程示意图;
图14是本申请某些实施方式的电子设备的结构示意图;
图15是本申请某些实施方式的电子设备的结构示意图。
具体实施方式
下面详细描述本申请的实施方式,实施方式的示例在附图中示出,相同或类似的标号自始至终表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本申请,而不能理解为对本申请的限制。
下文的公开提供了许多不同的实施方式或例子用来实现本申请的实施方式的不同结构。为了简化本申请的实施方式的公开,下文中对特定例子的部件和设置进行描述。当然,它们仅仅为示例,并且目的不在于限制本申请。
请参阅图1,本申请实施方式的拍摄装置100包括图像处理器10和图像传感器20。图像处理器10和图像传感器20连接。图像传感器20包括图像采集单元(sensor)22和RAW图像数据单元(Image Front-end,IFE)24,图像采集单元22用于接收光线以采集获得图像数据(RAW图像),RAW图像数据单元24用于将图像采集单元22采集的图像数据传输至图像处理器10,其中,RAW图像数据单元24可以对图像采集单元22采集获得的RAW图像进行处理并输出处理后的RAW图像至图像处理器10。
图像处理器10包括硬件抽象模块12、应用程序模块(APP)14和算法后处理模块(Algo process service,APS)16。
硬件抽象模块12用于接收RAW图像、将RAW图像转换为YUV图像、及传输RAW图像和/或YUV图像。硬件抽象模块12可以与图像传感器20连接。具体地,硬件抽象模块12可以包括与图像传感器20连接的缓存单元(buffer queue)122、RAW转RGB处理单元(Bayer ProcessSegment,BPS)124和与应用程序模块14连接的降噪及YUV后处理单元(Image ProcessEngine,IPE)126。缓存单元122用于缓存来自图像传感器20的RAW图像并通过应用程序模块14传输给算法后处理模块16。RAW转RGB处理单元124用于将来自缓存单元122的RAW图像转换为RGB图像。降噪及YUV后处理单元126用于处理RGB图像得到YUV图像并将YUV图像通过应用程序模块14传输给算法后处理模块16。硬件抽象模块12还可传输图像数据的元数据(metadata),元数据包括3a(自动曝光控制AE、自动聚焦控制AF、自动白平衡控制AWB)信息、图片信息(例如图像宽度、高度)、曝光参数(光圈大小、快门速度和感光度光圈值)等,可以利用元数据辅助实现对RAW图像和/或YUV图像的拍照后处理(例如包括美颜处理、滤镜处理、旋转处理、水印处理、虚化处理、HDR处理、多帧处理、及防抖处理中的至少一种)。在一个实施例中,元数据包括感光度(ISO)信息,根据感光度信息可以辅助调节RAW图像和/或YUV图像的亮度,从而实现与调节亮度相关的拍照后处理。
由于硬件抽象模块12不对RAW图像和/或YUV图像进行拍照后处理(例如只接收RAW图像、将RAW图像转换为YUV图像、及传输RAW图像和/或YUV图像),拍照后处理的图像处理算法无需在硬件抽象模块12本身的算法架构上做流程截断,只需在外部做兼容,设计难度减小。
在相关技术中,应用程序接口(API)将硬件抽象模块建立成管道(pipeline)的方式,由于管道的创建需要大量的时间和内存,因此在相机启动时需要将相机对应的工作模式用到的所有管道均先创建好,而为了实现各种图像处理算法,一般需要创建大量管道(例如超过三条管道),这会导致相机的启动需要耗费大量的时间,并且占用大量的内存。本申请实施方式的硬件抽象模块12不对RAW图像和/或YUV图像进行拍照后处理,因此,硬件抽象模块12只需建立少量(例如一条或两条)管道即可,无需建立大量的管道,从而能够节约内存,并且可以使得相机的启动速度变快。
应用程序模块14用于与硬件抽象模块12连接。应用程序模块14可以用于根据用户的输入产生控制指令并将该控制指令通过硬件抽象模块12发送给图像传感器20以对图像传感器20的工作进行相应的控制。其中,应用程序模块14可以以64比特位(bit)运行,并且拍照后处理的图像处理算法的静态数据连接库(lib)可以配置为64比特位,以提高运算速度。应用程序模块14接收硬件抽象模块传输的RAW图像和/或YUV图像后,可以对RAW和/或YUV图像进行拍照后处理,也可以将RAW和/或YUV图像传输至算法后处理模块16进行拍照后处理。当然,还可以是应用程序模块14进行一些拍照后处理(例如美颜处理、滤镜处理、旋转处理、水印处理、虚化处理等),算法后处理模块16进行另外一些拍照后处理(例如HDR处理、多帧处理、防抖处理等)。在本申请实施方式中,应用程序模块14将RAW和/或YUV图像传输至算法后处理模块16进行拍照后处理。
算法后处理模块16通过应用程序模块14与硬件抽象模块12连接,算法后处理模块16内存储有至少一种图像处理算法(例如包括美颜处理算法、滤镜处理算法、旋转处理算法、水印处理算法、虚化处理算法、HDR处理算法、多帧处理算法、及防抖算法中的至少一种),算法后处理模块16用于采用图像处理算法处理RAW图像和/或YUV图像以实现拍照后处理。由于对RAW图像和/或YUV图像进行拍照后处理可由算法后处理模块16实现,从而无需在硬件抽象模块12本身的算法架构上做流程截断,只需在外部做兼容,设计难度减小。并且由于拍照后处理由算法后处理模块16实现,因此算法后处理模块16的功能更单一、更聚焦,从而可以达到移植快,扩展新的图像处理算法简单等效果。当然,若是在应用程序模块14进行一些拍照后处理(例如美颜处理、滤镜处理、旋转处理、水印处理、虚化处理等),算法后处理模块16进行另外一些拍照后处理(例如HDR处理、多帧处理、防抖处理等)时,应用程序模块14内也可存储有至少一种图像处理算法(例如包括美颜处理算法、滤镜处理算法、旋转处理算法、水印处理算法、虚化处理算法、HDR处理算法、多帧处理算法、及防抖算法中的至少一种),应用程序模块14还用于采用图像处理算法处理RAW图像和/或YUV图像以实现拍照后处理。由于对RAW图像和/或YUV图像进行拍照后处理由应用程序模块14与算法后处理模块16实现,从而无需在硬件抽象模块12本身的算法架构上做流程截断,只需在外部做兼容,设计难度同样也是大大减小。
在算法后处理模块16只处理RAW图像(例如图像处理算法针对RAW图像进行处理)时,硬件抽象模块12可以只传输RAW图像(此时可以不需要将RAW图像转换为YUV图像);在算法后处理模块16只处理YUV图像(例如图像处理算法针对YUV图像进行处理)时,硬件抽象模块12可以只传输YUV图像;在算法后处理模块16处理RAW图像和YUV图像时,硬件抽象模块12可以传输RAW图像和YUV图像。
在某些实施方式中,硬件抽象模块12可以根据感光度信息、陀螺仪的抖动情况、AR场景检测结果(检测场景类型,例如人物、动物、风景等)等向应用程序模块14发送帧数建议,例如,当陀螺仪检测到的抖动较大时,硬件抽象模块12向应用程序模块14发送的帧数建议可以是:建议较多帧,以更好地实现拍照后处理;当陀螺仪检测到的抖动较小时,硬件抽象模块12向应用程序模块14发送的帧数建议可以是:建议较少帧,以减少数据传输量。也即是说,硬件抽象模块12向应用程序模块14建议的帧数可以与陀螺仪检测到的抖动程度正相关。硬件抽象模块12还可以根据感光度信息、陀螺仪的抖动情况、AR场景检测结果等向应用程序模块14发送算法建议,例如,当陀螺仪检测到的抖动较大时,硬件抽象模块12向应用程序模块14发送的算法建议可以是多帧处理,以根据多帧处理消除抖动;当AR场景检测结果检测的场景类型为人物时,硬件抽象模块12向应用程序模块14发送的算法建议可以是美颜处理,以对人物进行美颜;当AR场景检测结果检测的场景类型为风景时,硬件抽象模块12向应用程序模块14发送的算法建议可以是HDR处理,以形成高动态范围的风景图像。应用程序模块14根据帧数建议和算法建议向硬件抽象模块12发出数据请求,硬件抽象模块12根据该数据请求传输对应的数据至应用程序模块14,应用程序模块14再将数据传输至算法后处理模块16进行拍照后处理。
图像传感器20进行一次拍摄(曝光成像)后,将拍摄数据(RAW图像)传输给硬件抽象模块12,在算法后处理模块16接收到与拍摄数据对应的RAW图像和/或YUV图像后,图像传感器20能够进行下一次拍摄、或图像传感器20能够关闭、或应用程序模块14能够关闭、或应用程序模块14能够退出应用界面。由于拍照后处理由算法后处理模块16实现,因此在将拍摄数据对应的RAW图像和/或YUV图像传输给算法后处理模块16后,只需要算法后处理模块16就可实现拍照后处理,此时图像传感器20和应用程序模块14可以不参与拍照后处理,因此,图像传感器20能够关闭或执行下一次拍摄,应用程序模块14能够关闭或退出应用界面。如此,拍摄装置100能够实现快拍,并且在算法后处理模块16进行拍照后处理时可以关闭应用程序模块14或退出应用程序界面,从而在电子设备上进行一些其他操作(例如与拍摄装置100无关的操作,比如浏览网页、看视频、打电话等),从而用户无需花费大量的时间等待拍照后处理的完成,便于用户使用电子设备。
算法后处理模块16可以包括编码单元162,编码单元162用于将YUV图像转换为JPG图像(或者JPEG图像等)。具体地,在算法后处理模块16处理的是YUV图像时,编码单元162可以直接对YUV图像进行编码以形成JPG图像,从而提高图像的输出速度。在算法后处理模块16处理的是RAW图像时,算法后处理模块16可以将处理实现拍照后处理的RAW图像经应用程序模块14回传至硬件抽象模块12,例如回传至RAW转RGB处理单元124,RAW转RGB处理单元124可以用于将算法后处理模块16处理实现拍照后处理并经应用程序模块14回传的RAW图像转换为RGB图像,降噪及YUV后处理单元126可以将RGB图像转换为YUV图像,该YUV图像可以再次传输至算法后处理模块16的编码单元162中以将该YUV图像转换为JPG图像。在某些实施方式中,算法后处理模块16也可以将处理实现拍照后处理的RAW图像经应用程序模块14回传至缓存单元122,回传的RAW图像经过RAW转RGB处理单元124和降噪及YUV后处理单元126形成YUV图像,再传输至编码单元162以形成JPG图像。在形成JPG图像后,算法后处理模块16可以用于将JPG图像传输至存储器中保存。
请参阅图2,算法后处理模块16包括逻辑处理调用层164、算法模块接口层166和算法处理层168。逻辑处理调用层164用于与应用程序模块14通信。算法模块接口层166用于维护算法接口。算法处理层168包括至少一种图像处理算法。算法模块接口层166用于通过算法接口对算法处理层168的图像处理算法进行注册、注销、调用和回调中的至少一种操作。
逻辑处理调用层164可以包括线程队列,算法后处理模块16接收到RAW图像和/或YUV图像的拍照后处理任务后,可以将拍照后处理任务缓存在线程队列中处理,其中,线程队列可以缓存多个拍照后处理任务,如此,可以通过逻辑处理调用层164实现快拍(即快拍机制)。另外,逻辑处理调用层164也可以接收应用程序模块14发送的初始化(init)、进程(process)等指令,并将对应的指令和数据保存到线程队列中。逻辑处理调用层164根据线程队列中的任务进行具体逻辑的调用(即具体逻辑调用组合)。逻辑处理调用层164还可以将处理获得的缩略图(thumbnail)回传给应用程序模块14进行显示(即缩略图回显)。在本申请的实施方式的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
算法模块接口层166用于调用算法接口,调用命令也可以保存到线程队列中,算法处理层168在接收到线程队列的调用命令时,即可解析调用命令的参数获得需要调用的图像处理算法。算法模块接口层166对图像处理算法进行注册时,可以在算法处理层168中新增一种图像处理算法;算法模块接口层166对图像处理算法进行注销时,可以删除算法处理层168中一种图像处理算法;算法模块接口层166对图像处理算法进行调用时,可以调用算法处理层168中一种图像处理算法;算法模块接口层166对图像处理算法进行回调时,可以将算法处理后的数据和状态回传给应用程序模块14。其中,可以采用统一接口实现图像处理算法的注册、注销、调用、回调等操作。算法处理层168中的每一种图像处理算法都是独立的,如此可以方便对图像处理算法实现注册、注销、调用、回调等操作。
请参阅图3,在某些实施方式中,图像处理器10还包括相机服务模块18。硬件抽象模块12通过相机服务模块18与应用程序模块14连接。相机服务模块18对RAW图像和/或YUV图像进行封装并将封装后的RAW图像和/或YUV图像传输至应用程序模块14、及将应用程序模块14回传的RAW图像传输至硬件抽象模块12。如此,通过相机服务模块18对图像进行封装,可以提高图像传输的效率,并且能够提高图像传输的安全性。在图像处理器10包括相机服务模块18时,图像处理器10中的数据(图像、元数据等)传输的路径可以进行适应性调整,即硬件抽象模块12和应用程序模块14之间传输的数据均需要通过相机服务模块18。例如,硬件抽象模块12向应用程序模块14传输RAW图像和/或YUV图像时,硬件抽象模块12先将RAW图像和/或YUV图像传输至相机服务模块18,相机服务模块18对RAW图像和/或YUV图像进行封装并将封装后的RAW图像和/或YUV图像传输至应用程序模块14。又例如,硬件抽象模块12向应用程序模块14传输元数据时,硬件抽象模块12先将元数据传输至相机服务模块18,相机服务模块18对元数据进行封装并将封装后的元数据传输至应用程序模块14。又例如,硬件抽象模块12向应用程序模块14传输帧数建议时,硬件抽象模块12先将帧数建议传输至相机服务模块18,相机服务模块18对帧数建议进行封装并将封装后的帧数建议传输至应用程序模块14。又例如,硬件抽象模块12向应用程序模块14传输算法建议时,硬件抽象模块12先将算法建议传输至相机服务模块18,相机服务模块18对算法建议进行封装并将封装后的算法建议传输至应用程序模块14。当然,在某些实施方式中,硬件抽象模块12可将感光度信息、陀螺仪的抖动情况、AR场景检测结果等传输至相机服务模块18,相机服务模块18根据感光度信息、陀螺仪的抖动情况、AR场景检测结果等获得帧数建议和/或算法建议,再将帧数建议和/或算法建议传输至应用程序模块14。
请参阅图1和图4,本申请实施方式的图像处理方法包括:
01:应用程序模块14的防抖单元141在接收到带有当前时间戳的当前图像时,从抖动检测模块11中读取抖动参数,抖动检测模块11包括缓存区111,缓存区111内存储有多个抖动参数,每两个相邻的抖动参数的检测时间间隔预定时长;
02:防抖单元141根据当前时间戳、读取抖动参数的读取时间以及预定时长从多个抖动参数中确定与当前图像对应的当前抖动参数以及在当前抖动参数之后的未来抖动参数;和
03:算法后处理模块16的处理单元163根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理。
本申请实施方式的图像处理方法可以应用于本申请实施方式的图像处理器10,或者说,本申请实施方式的图像处理方法可以由本申请实施方式的图像处理器10实现。此时,图像处理器10包括应用程序模块14和算法后处理模块16。图像处理器10与抖动检测模块11连接。应用程序模块14包括防抖单元141,算法后处理模块16包括处理单元163。防抖单元141可用于执行01和02中的方法,处理单元163可用于执行03中的方法。
也即是说,防抖单元141可以用于在接收到带有当前时间戳的当前图像时,从抖动检测模块11中读取抖动参数。抖动检测模块11包括缓存区111,缓存区111内存储有多个抖动参数,每两个相邻的抖动参数的检测时间间隔预定时长。防抖单元141可以用于根据当前时间戳、读取抖动参数的读取时间以及预定时长从多个抖动参数中确定与当前图像对应的当前抖动参数以及在当前抖动参数之后的未来抖动参数。处理单元163可以用于根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理。
本申请实施方式的拍摄装置100包括本文中任一实施方式的抖动检测模块11、图像处理器10和图像传感器20。图像处理器10与抖动检测模块11连接。
本申请实施方式的图像处理方法、图像处理器10和拍摄装置100中,防抖单元141根据当前图像的当前时间戳、从抖动检测模块11中读取抖动参数的读取时间、以及每两个相邻的抖动参数间隔的预定时长,从多个抖动参数中确定与当前图像对应的当前抖动参数,以使得当前图像与当前抖动参数是精确对应的。当前抖动参数能指示拍摄时拍摄装置100的抖动状态,未来抖动参数能指示拍摄后一段时间拍摄装置100的抖动状态。处理单元163根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理能够具有较好的防抖处理效果。
需要指出的是,前述实施方式中对图像处理器10的解释说明同样适用于本实施方式,在此不再赘述。
具体地,抖动检测模块11用于获取拍摄装置100的抖动参数,图像处理器10与抖动检测模块11连接。抖动检测模块11可以是霍尔模块,此时抖动检测模块11(即霍尔模块)用于获取拍摄装置100的霍尔值。此外,抖动检测模块11还可以是其他位移传感器,例如电感式位移传感器,电容式位移传感器,光电式位移传感器和超声波式位移传感器等;抖动检测模块11还可以是陀螺仪和惯性测量单元等能指示拍摄装置100的位移或其他抖动信息(例如角度等)的元件。抖动检测模块11包括缓存区111,缓存区111包括可存储多个抖动参数,例如12个、24个、128个抖动参数等,的内存单元(图5所示)。多个抖动参数可按照时间先后顺序存储在缓存区111内。其中,每两个相邻的抖动参数间隔预定时长,例如4ms。每个抖动参数记录了检测该值时,拍摄装置100的位移或其他抖动信息。每个抖动参数可以包括位移、线速度、角速度、加速度等抖动信息中的一个或多个信息。此外,抖动检测模块11还可以集成在图像处理器10中。
应用程序模块14包括防抖单元141,防抖单元141可读取硬件抽象模块12或相机服务模块18传输来的RAW图像和/或YUV图像,防抖单元141还可用于对抖动参数标记对应的时间戳,以便在算法后处理模块16对当前图像(可以是RAW和/或YUV图像)进行防抖处理前,获取与该当前图像时间上精确对应的当前抖动参数和在当前抖动参数之后的未来抖动参数。
算法后处理模块16包括处理单元163,处理单元163可根据与当前图像对应的当前抖动参数和在当前抖动参数之后的未来抖动参数,对当前图像进行防抖算法处理。防抖算法处理的具体过程将在后文详细介绍。
当图像处理器10获取到一帧当前图像时,图像处理器10可以对该当前图像标记此时的***时间,也即当前时间戳,例如,该时间戳为2019.09.20.14:43'09.240”。防抖单元141在接收到带有当前时间戳的当前图像(来自硬件抽象模块12或相机服务模块18,当前图像可为RAW和/或YUV图像)时,从抖动检测模块11中读取抖动参数x,读取抖动参数x时的***时间,即此时读取时间为2019.09.20.14:43'09.256”。请参阅图5,缓存区111内存储有多个抖动参数x,每两个相邻的抖动参数x间隔预定时长。例如,缓存区111的12个内存单元内可存储12个抖动参数x,其中每两个相邻的抖动参数间隔4ms。为方便说明,在此对12个内存单元进行编号,将缓存区111内用于存储时间上最后检测、生成并存储在此的抖动参数(后文将之称为时间最新的抖动参数)的内存单元称为H1,将缓存区111内用于存储时间上最早检测、生成并存储在此的抖动参数的内存单元称为H12。缓存区111的12个内存单元始终存储着时间最新的12个抖动参数,随着时间的推移以左移和丢弃最左值的方式不断更新,图5所示为缓存区111中12个内存单元H1至H12,存储着相对于某一读取时刻而言,最新的12个抖动参数x23至x34,其中x23的产生时间早于x24,x24的产生时间早于x25,依此类推,x34最接近当前时刻。当下一个新产生的抖动参数x35进入到缓存区111时,最早产生的抖动参数x23将被丢弃,其余抖动参数在内存单元中左移,例如,抖动参数x24从内存单元H11中移动至内存单元H12中,抖动参数x25从内存单元H10中移动至内存单元H11中,直至将抖动参数x35存储到内存单元H1中。
防抖单元141可根据当前时间戳2019.09.20.14:43'09.240”、读取抖动参数的读取时间2019.09.20.14:43'09.256”以及预定时长4ms确定内存单元H5当中的抖动参数为当前抖动参数,则内存单元H4、H3、H2和H1中的抖动参数为对应的未来抖动参数,并将当前抖动参数和未来抖动参数发送至算法后处理模块16的处理单元163。
算法后处理模块16的处理单元163根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理。请参阅图6,防抖算法处理可以为:首先在当前图像中建立一个裁剪框,如图6中第二张图所示的虚线框,裁剪框的初始位置位于当前图像的中心。例如,当前图像的原始像素尺寸为1920*1080时,裁剪框的像素尺寸可以设置为1728*972。若当前抖动参数显示当前图像是在拍摄装置100下移过程中拍摄的,上下方向上的移动量为s1,且未来抖动参数显示拍摄装置100是在下移状态中,由当前抖动参数和未来抖动参数均显示下移能判断拍摄装置100在当前抖动参数对应的时刻在上下方向上并非处于抖动状态(即往复运动状态,下文同),则控制该裁剪框在上下方向上不移动;若当前抖动参数显示当前图像是在拍摄装置100下移过程中拍摄的,上下方向上的移动量为s1,且未来抖动参数显示拍摄装置100是在非下移状态(即上移或者在上下方向上静止)中,由当前抖动参数和未来抖动参数显示在上下方向上不同的移动方向能判断拍摄装置100在当前抖动参数对应的时刻在上下方向上处于抖动状态,则控制该裁剪框在上下方向上往上移,上移的移动量与s1成正比;若当前抖动参数显示当前图像是在拍摄装置100右移过程中拍摄的,左右方向上的移动量为s2,且未来抖动参数显示拍摄装置100是在右移状态中,由当前抖动参数和未来抖动参数均显示右移能判断拍摄装置100在当前抖动参数对应的时刻在左右方向上并非处于抖动状态,则控制该裁剪框在左右方向上不移动;若当前抖动参数显示当前图像是在拍摄装置100右移过程中拍摄的,左右方向上的移动量为s2,且未来抖动参数显示拍摄装置100是在非右移状态(即左移或在左右方向上静止)中,由当前抖动参数和未来抖动参数显示在左右方向上不同的移动方向能判断拍摄装置100在当前抖动参数对应的时刻在左右方向上处于抖动状态,则控制该裁剪框在左右方向上往左移,左移的移动量与s2成正比。例如,当前抖动参数显示当前图像是在拍摄装置100下移且右移过程中拍摄的,移动量为s,且未来抖动参数显示拍摄装置100是在仅上移(即上下方向上上移、左右方向上静止)状态中,则控制裁剪框往上移,抖动参数显示的移动量可分解为上下方向的移动量s1和左右方向的移动量s2,控制裁剪框上移的移动量与s1成正比。移动后的位置如图6中第三张图所示。处理单元163应用移动后的裁剪框对当前图像进行裁剪,舍弃裁剪框之外的边缘图像,仅保留裁剪框内的图像作为对当前图像进行防抖算法处理之后得到的目标图像(如图6中第4张图所示),以避免由于拍摄装置100的晃动/抖动而使得最终的图像失真或视频模糊。
在某些实施例中,上下方向可以为垂直于水平面的方向,此时左右方向为水平方向。在另外的实施例中,上下方向可以为拍摄装置100的矩形感光元件的宽度方向,此时左右方向可以为拍摄装置100的矩形感光元件的长度方向。
在某些实施方式中,当预设需要的未来抖动参数为一个抖动参数的情况下,直接应用该未来抖动参数对当前图像进行以上防抖算法处理;当预设需要的未来抖动参数为多个抖动参数的情况下,在应用未来抖动参数对当前图像进行以上防抖算法处理之前,可以先对该多个未来抖动参数进行求平均数运算或者加权运算。
请参阅图3和图7,在某些实施方式中,图像处理方法还包括:
04:相机服务模块18接收图像传感器20发送的当前图像;
05:相机服务模块18对当前图像标记当前时间戳;和
06:相机服务模块18将带有当前时间戳的当前图像发送至防抖单元141。
请参阅图3,在某些实施方式中,图像处理器10还包括相机服务模块18。相机服务模块18可用于执行04、05和06中的方法。也即是说,相机服务模块18可以用于:接收图像传感器20发送的当前图像;对当前图像标记当前时间戳;和将带有当前时间戳的当前图像发送至防抖单元141。
具体地,相机服务模块18可以通过硬件抽象模块12接收图像传感器20发送的当前图像(即图像传感器20将生成的图像发送至硬件抽象模块12,硬件抽象模块12接收到图像后将图像发送至相机服务模块18),然后对该当前图像标记此时的***时间2019.09.20.14:43'09.240”,即当前时间戳2019.09.20.14:43'09.240”,并且将此带有当前时间戳的当前图像封装后发送至防抖单元141。
在其他实施方式中,04、05和06也可以不由相机服务模块18完成,而由硬件抽象模块12完成。此时,硬件抽象模块12接收图像传感器20发送的当前图像、对当前图像标记当前时间戳2019.09.20.14:43'09.240”、以及将带有当前时间戳2019.09.20.14:43'09.240”的当前图像发送至防抖单元141。
请参阅图1和图8,在某些实施方式中,防抖单元141根据当前时间戳、读取抖动参数的读取时间以及预定时长从多个抖动参数中确定与当前图像对应的当前抖动参数以及在当前抖动参数之后的未来抖动参数(即02)可以包括:
021:防抖单元141根据读取时间与当前时间戳之间的时间差以及预定时长从多个抖动参数中确定当前抖动参数以及在当前抖动参数之后的未来抖动参数;
在某些实施方式中,防抖单元141可用于执行021中的方法。也即是说,防抖单元141可用于根据读取时间与当前时间戳之间的时间差以及预定时长从多个抖动参数中确定当前抖动参数以及在当前抖动参数之后的未来抖动参数。
具体地,请结合图10,防抖单元141可根据当前时间戳2019.09.20.14:43'09.240”和读取抖动参数的读取时间2019.09.20.14:43'09.256”得到时间差16ms。由于预定时长为4ms,16/4=4,当前时间戳与抖动参数的读取时间间隔4个预定时长,因此以时间最新的内存单元H1中的抖动参数为基准,共跳过4个内存单元中的抖动参数,确定内存单元H5当中的抖动参数为当前抖动参数,然后将内存单元H5当中的抖动参数提取,再将时间比H5新的H4至H1内的4个抖动参数作为未来抖动参数,从而以内存单元H5当中的抖动参数(当前抖动参数)和H4至H1内的4个抖动参数(未来抖动参数)对当前图像进行防抖算法处理。021通过简单的减法和倍数计算和简易的推导得出与当前图像精准对应的当前抖动参数和未来抖动参数,有利于后续对当前图像的防抖处理。计算方式为较简单的数学运算(如16/4=4、跳过4个内存单元中的抖动参数等)使得本实施方式能以一种较为简单的方式获取与当前图像精准对应的当前抖动参数和未来抖动参数,因此本实施方式具有较高的防抖处理效率。
在某些实施方式中,当读取时间与当前时间戳之间的时间差与预定时长的比值不为整数倍时,可对该比值设置四舍五入的计算方式,有利于获取和当前图像在产生时间上尽可能接近的抖动参数作为当前抖动参数,并根据此当前抖动参数确定未来抖动参数,此种方式确定的当前图像对应的当前抖动参数和未来抖动参数都更为精确。
请参阅图1和图9,防抖单元141根据当前时间戳、读取抖动参数的读取时间以及预定时长从多个抖动参数中确定与当前图像对应的当前抖动参数以及在当前抖动参数之后的未来抖动参数(即02)可以包括,防抖单元141用于:
022:根据读取时间标记最新的一个抖动参数的时间戳;
023:根据最新的一个抖动参数的时间戳和预定时长依次标记多个抖动参数中除最新的一个抖动参数之外的抖动参数的时间戳得到所有抖动参数的时间戳;和
024:将所有抖动参数的时间戳中与当前时间戳匹配的一个时间戳对应的抖动参数作为当前抖动参数,将晚于当前抖动参数的时间戳的预定个时间戳对应的抖动参数作为未来抖动参数。
在某些实施方式中,防抖单元141可用于执行022、023和024中的方法。也即是说,防抖单元141可以用于根据读取时间标记最新的一个抖动参数的时间戳,然后根据最新的一个抖动参数的时间戳和预定时长依次标记多个抖动参数中除最新的一个抖动参数之外的抖动参数的时间戳得到所有抖动参数的时间戳,并且将所有抖动参数的时间戳中与当前时间戳匹配的一个时间戳对应的抖动参数作为当前抖动参数,将晚于当前抖动参数的时间戳的预定个时间戳对应的抖动参数作为未来抖动参数。
请参阅图10,防抖单元141可以用于根据读取时间标记内存单元H1内的最新的抖动参数的时间戳。例如,从抖动检测模块11中读取抖动参数x时读取时间为2019.09.20.14:43'09.256”,则防抖单元141根据读取时间给最新的抖动参数x35标记时间戳2019.09.20.14:43'09.256”。由于预定时长为4ms,防抖单元141根据内存单元H1内最新的一个抖动参数x35的时间戳2019.09.20.14:43'09.256”减去4ms作为内存单元H2内抖动参数x34的时间戳2019.09.20.14:43'09.252”,依此类推,直到从内存单元H1至内存单元H12中的12个抖动参数x24至x35均标记上对应的时间戳。然后,防抖单元141将所有抖动参数的时间戳中与当前时间戳匹配的一个时间戳对应的抖动参数作为当前抖动参数。例如,当前时间戳为2019.09.20.14:43'09.240”,则根据时间戳的匹配,选择时间戳同为2019.09.20.14:43'09.240”的内存单元H5内的抖动参数x31作为当前抖动参数,并选择时间戳上的时间新于(晚于)并最接近于当前抖动参数的时间戳2019.09.20.14:43'09.240”的内存单元H4至H1内的抖动参数x32、x33、x34、x35作为未来抖动参数。本申请实施方式通过一次读取能够对12个抖动参数均标记上对应的时间戳,便于得出与当前图像精准对应的当前抖动参数和未来抖动参数,有利于后续对当前图像的防抖处理。进一步地,图像处理器10一次读取能够对12个抖动参数均标记上对应的时间戳,能在完成标记目标的情况下减少处理器的操作次数,使得本申请实施方式对当前图像的防抖处理具有较高的效率,尤其适用于时间间隔短的图像防抖处理(如视频画面的防抖处理)。
在其他实施方式中,022、023和024也可以不由防抖单元141完成,而由应用程序模块14或算法后处理模块16完成。此时,应用程序模块14或算法后处理模块16根据读取时间标记最新的一个抖动参数的时间戳2019.09.20.14:43'09.256”;根据最新的一个抖动参数的时间戳和预定时长(例如4ms)依次标记多个抖动参数中除最新的一个抖动参数之外的抖动参数的时间戳得到所有抖动参数的时间戳(如图10所示);和将所有抖动参数的时间戳中与当前时间戳匹配的一个时间戳对应的抖动参数作为当前抖动参数,并将时间新于并最接近于当前时间戳的预定个时间戳对应的抖动参数作为未来抖动参数。
在某些实施方式中,当多个抖动参数标记对应的时间戳中没有一个能与当前时间戳完全匹配时,防抖单元141可以在多个抖动参数标记对应的时间戳中选择与该当前时间戳时间上最接近的一个,将其对应的抖动参数作为当前图像对应的当前抖动参数,并将时间新于并最接近于当前时间戳的预定个时间戳对应的抖动参数作为未来抖动参数,有利于能获取和当前图像在产生时间上尽可能接近的抖动参数作为当前抖动参数,从而有利于获取与该当前图像时间上精确对应的当前抖动参数和未来抖动参数。例如,当前图像的当前时间戳为2019.09.20.14:43'09.243”,多个抖动参数标记对应的时间戳如图10所示,则防抖单元141在多个抖动参数标记对应的时间戳中选择与该当前时间戳时间上最接近的一个2019.09.20.14:43'09.244”,将2019.09.20.14:43'09.244”对应的抖动参数x32作为当前图像对应的当前抖动参数,并将时间新于并最接近于当前时间戳的预定个时间戳对应的抖动参数x33、x34和x35作为未来抖动参数。由于2019.09.20.14:43'09.244”为抖动参数标记的时间戳中和当前时间戳2019.09.20.14:43'09.243”时间上最接近的时间戳,因此用该时间戳为2019.09.20.14:43'09.244'的抖动参数'作为当前抖动参数,并用时间新于并最接近于当前时间戳的预定个时间戳对应的抖动参数作为未来抖动参数对当前图像进行防抖算法处理能具有更好的防抖处理效果。
在某些实施方式中,在防抖单元141从抖动检测模块11中读取抖动参数时抖动检测模块11正处于两次抖动参数检测(例如第一次检测的时刻与第二次检测的时刻间隔预定时长4ms)之间的情况下,防抖单元141等待直到抖动检测模块11第二次检测抖动参数完成时,完成读取,其中抖动检测模块11第二次检测抖动参数完成时的时间,也即读取完成时的当前***时间,作为读取时间。在防抖单元141从抖动检测模块11中读取抖动参数时抖动检测模块11正好完成第一次抖动参数检测或完成第一次抖动参数检测之后的较小时间范围内的情况下,防抖单元141不进行等待,直接完成读取,其中抖动检测模块11第一次检测抖动参数完成时的时间,也即读取完成时的当前***时间,作为读取时间。在防抖单元141从抖动检测模块11中读取抖动参数时抖动检测模块11正处于两次抖动参数检测(例如两次间隔预定时长4ms的抖动参数检测)时进行等待,使得第二次抖动参数测量完成的时间作为读取时间,有利于使得每次读取时间均为抖动参数测量完成的时间,使得读取时间尽可能为抖动参数检测完成的时刻(间隔4ms),可以避免两次读取时间较为接近时,出现同一个抖动参数具有不同时间戳的情况。
在某些实施方式中,相邻的两帧图像的生成时间间隔预设时长,预定时长小于或等于预设时长。相邻的两个抖动参数的检测时间间隔的预定时长小于或等于相邻的两帧图像的生成时间间隔的预设时长,有利于避免一段相同时间内图像传感器20产生的图像帧数大于抖动检测模块11检测得到的抖动参数数量,从而有利于避免拍照防抖处理或视频防抖处理中两帧图像对应的当前抖动参数为同一个抖动参数情况。可以理解,两帧图像对应的当前抖动参数为同一个抖动参数使得图像和抖动参数之间的时间匹配关系不够精确,不能做到时间上的精确对应,而预定时长小于或等于预设时长使得抖动参数数量不少于图像数量,有利于使得防抖单元141获取的抖动参数和图像的产生时间更为精确对应,因而本申请实施方式确定的当前图像对应的当前抖动参数和未来抖动参数都更为精确,从而使得防抖处理算法具有更好的防抖处理效果。
在某些实施例中,相邻的两个抖动参数间隔的预定时长可以等于相邻的两帧图像间隔的预设时长;在另外的实施例中,相邻的两个抖动参数间隔的预定时长可以是相邻的两帧图像间隔的预设时长的二分之一。相邻的两帧图像间隔的预设时长为相邻两个抖动参数间隔的预定时长的正整数倍,有利于使得连续多帧相隔预设时长的图像能与连续多个相隔预定时长的抖动参数能在时间上精确对应。例如,当相邻的两个抖动参数间隔的预定时长4ms,而相邻的两个抖动参数间隔的预定时长可以是相邻的两帧图像间隔的预设时长的二分之一,即相邻的两帧图像间隔的预设时长为8ms时。如图10所示,若有连续多帧相隔预设时长8ms的图像,其中一帧图像的时间戳为2019.09.20.14:43'09.248”,则该帧图像的前四帧图像的时间戳分别为2019.09.20.14:43'09.240”、2019.09.20.14:43'09.232”、2019.09.20.14:43'09.224”和2019.09.20.14:43'09.216”,分别与图10中的相隔预定时长4ms的抖动参数的时间戳2019.09.20.14:43'09.240”、2019.09.20.14:43'09.232”、2019.09.20.14:43'09.224”和2019.09.20.14:43'09.216”精确对应。此时时间戳为2019.09.20.14:43'09.240”、2019.09.20.14:43'09.232”、2019.09.20.14:43'09.224”和2019.09.20.14:43'09.216的抖动参数x31、x29、x27和x25分别作为时间戳为2019.09.20.14:43'09.240”、2019.09.20.14:43'09.232”、2019.09.20.14:43'09.224”和2019.09.20.14:43'09.216”的当前图像对应的当前抖动参数,因而时间新于当前抖动参数x31、x29、x27和x25的抖动参数(x32,x33,x34,x35)、(x30,x31,x32,x33)、(x28,x29,x30,x31)、(x26,x27,x28,x29)分别作为当前抖动参数x31、x29、x27和x25对应的未来抖动参数。
在某些实施例中,每帧当前图像对应的未来抖动参数的数量可以为固定的一个或多个,也可以是不固定的数量,在此本申请不作限制。例如在图10中,防抖单元141将时间新于当前时间戳2019.09.20.14:43'09.240”的四个时间戳对应的抖动参数(x32,x33,x34,x35)作为当前抖动参数x31对应的未来抖动参数;将时间新于当前时间戳2019.09.20.14:43'09.232”的六个时间戳对应的抖动参数(x30,x31,x32,x33,x34,x35)作为当前抖动参数x29对应的未来抖动参数;将时间新于当前时间戳2019.09.20.14:43'09.224”的八个时间戳对应的抖动参数(x28,x29,x30,x31,x32,x33,x34,x35)作为当前抖动参数x27对应的未来抖动参数;将时间新于当前时间戳2019.09.20.14:43'09.216”的十个时间戳对应的抖动参数(x26,x27,x28,x29,x30,x31,x32,x33,x34,x35)作为当前抖动参数x27对应的未来抖动参数。
请参阅图1和图11,在某些实施方式中,图像处理方法还可以包括:
04:处理单元163根据未来抖动参数对当前图像之后的未来图像进行防抖算法预处理。
在某些实施方式中,处理单元163可以执行04中的方法。也即是说,处理单元163可以用于根据未来抖动参数对当前图像之后的未来图像进行防抖算法预处理。
具体地,防抖算法预处理的过程可以为:首先建立一个未来图像的虚拟图像,再建立一个该虚拟图像的预裁剪框,如图12所示,预裁剪框的初始位置位于虚拟图像的中心。下面以虚拟图像的原始像素尺寸为1920*1080,预裁剪框的像素尺寸为1728*972,该拍摄装置100正在拍摄的图像帧的预设时长间隔为8ms(即每秒拍摄帧数为125),抖动检测模块11检测抖动参数的预定时长间隔为4ms,并且需要2个未来抖动参数对当前图像进行防抖处理算法为例进行说明,防抖单元141读取抖动检测模块11中的抖动参数后,请参阅图10,若当前图像时间戳为2019.09.20.14:43'09.232”,则当前图像对应的当前抖动参数为时间戳2019.09.20.14:43'09.232”对应的抖动参数x29,该当前图像对应的未来抖动参数为(x30,x31)。根据预设时长间隔8ms容易判断,时间新于并最接近于当前图像的第一帧图像,即未来图像1的时间戳为2019.09.20.14:43'09.240”,则未来图像1对应的当前抖动参数为时间戳2019.09.20.14:43'09.240”对应的抖动参数x31,未来图像1对应的未来抖动参数为(x32,x33);时间新于并最接近于当前图像的第二帧图像,即未来图像2的时间戳为2019.09.20.14:43'09.248”,则未来图像2对应的当前抖动参数为时间戳2019.09.20.14:43'09.248”对应的抖动参数x33,未来图像2对应的未来抖动参数为(x34,x35)。从而处理单元163可在未来图像1和未来图像2的图像信息尚未到来时,先对未来图像1和未来图像2进行防抖算法预处理。例如,处理单元163可在未来图像1的图像信息尚未到来时,先利用未来图像1对应的当前抖动参数x31和未来抖动参数x32和x33对未来图像1进行防抖算法预处理;在未来图像2的图像信息尚未到来时,先利用未来图像2对应的当前抖动参数x33和未来抖动参数x34和x35对未来图像2进行防抖算法预处理
处理单元163对未来图像的防抖算法预处理具体为:若当前抖动参数显示未来图像是在拍摄装置100下移过程中拍摄的,上下方向上的移动量为s1,且未来抖动参数显示拍摄装置100是在下移状态中,由当前抖动参数和未来抖动参数均显示下移能判断拍摄装置100在当前抖动参数对应的时刻在上下方向上并非处于抖动状态,则控制该预裁剪框在上下方向上不移动;若当前抖动参数显示未来图像是在拍摄装置100下移过程中拍摄的,上下方向上的移动量为s1,且未来抖动参数显示拍摄装置100是在非下移状态(即上移或者在上下方向上静止)中,由当前抖动参数和未来抖动参数显示在上下方向上不同的移动方向能判断拍摄装置100在当前抖动参数对应的时刻在上下方向上处于抖动状态,则控制该预裁剪框在上下方向上往上移,上移的移动量与s1成正比;若当前抖动参数显示未来图像是在拍摄装置100右移过程中拍摄的,左右方向上的移动量为s2,且未来抖动参数显示拍摄装置100是在右移状态中,由当前抖动参数和未来抖动参数均显示右移能判断拍摄装置100在当前抖动参数对应的时刻在左右方向上并非处于抖动状态,则控制该预裁剪框在左右方向上不移动;若当前抖动参数显示未来图像是在拍摄装置100右移过程中拍摄的,左右方向上的移动量为s2,且未来抖动参数显示拍摄装置100是在非右移状态(即左移或在左右方向上静止)中,由当前抖动参数和未来抖动参数显示在左右方向上不同的移动方向能判断拍摄装置100在当前抖动参数对应的时刻在左右方向上处于抖动状态,则控制该预裁剪框在左右方向上往左移,左移的移动量与s2成正比。例如,当前抖动参数显示未来图像是在拍摄装置100下移且右移过程中拍摄的,移动量为s,且未来抖动参数显示拍摄装置100是在上移且左移状态中,则控制预裁剪框往右下移动,抖动参数显示的移动量可分解为上下方向的移动量s1和左右方向的移动量s2,控制预裁剪框上移的移动量与s1成正比、右移的移动量与s2成正比。移动后的位置如图12中第三张图所示。
处理单元163等待未来图像到达处理单元163之后,应用移动后的预裁剪框对未来图像进行裁剪,舍弃预裁剪框之外的边缘图像,仅保留预裁剪框内的图像作为对未来图像进行防抖算法处理之后得到的目标图像(如图12中第4张图所示)。本实施方式提前利用未来图像对应的抖动参数进行预处理,提前生成预裁剪框,便于后续对未来图像的快速处理,有利于避免由于拍摄装置100的晃动/抖动而使得最终的图像失真或视频模糊的同时,能提高算法执行的效率。
请参阅图1和图13,在某些实施方式中,应用程序模块的防抖单元141在接收到带有当前时间戳的当前图像时,从抖动检测模块11中读取抖动参数(01)可以包括:
011:防抖单元141在接收到带有当前时间戳的当前图像时,等待设定时间后,从抖动检测模块11中读取抖动参数。
在某些实施方式中,防抖单元141可以执行011中的方法。也即是说,防抖单元141可用于在接收到带有当前时间戳的当前图像时,等待设定时间后,从抖动检测模块11中读取抖动参数。
具体地,防抖单元141在接收到带有当前时间戳的当前图像时,可以等待设定时间后,使得抖动检测模块11的缓存区111内具有足够多的新于当前时间戳的抖动参数后,再从抖动检测模块11中读取抖动参数,使得一次读取能获取更多的有效信息(即可能被确定为当前图像对应的当前抖动参数和未来抖动参数的抖动参数),以使得算法具有更高的效率。
下面以该拍摄装置100正在拍摄的图像帧的预设时长间隔为8ms(即每秒拍摄帧数为125),抖动检测模块11检测抖动参数的预定时间间隔为4ms,并且需要7个未来抖动参数对当前图像进行防抖处理算法为例进行说明。在一些实施方式中,若拍摄装置100运行过程中带有当前时间戳的当前图像从产生到到达防抖单元141所需时间为24ms,由于时间新于当前时间戳的第一个抖动参数有可能被确定为当前抖动参数或未来抖动参数,因此需要读取时间新于当前时间戳的8个抖动参数,共需要32ms的时间,能保证满足该防抖处理算法需要7个未来抖动参数对当前图像进行处理的要求,32-24=8ms,则防抖单元141等待8ms(或9ms、10ms等)再从抖动检测模块11中读取抖动参数;在另一些实施方式中,若拍摄装置100运行过程中带有当前时间戳的当前图像到达防抖单元141时,由于时间新于当前时间戳的第一个抖动参数有可能被确定为当前抖动参数或未来抖动参数,因此需要读取时间新于当前时间戳的8个抖动参数,防抖单元141从抖动检测模块11中读取的时间新于当前时间戳的抖动参数不足8个(或9个、10个等),则防抖单元141等待一段时间再次从抖动检测模块11中读取抖动参数,直到防抖单元141从抖动检测模块11中读取的时间新于当前时间戳的抖动参数至少为8个(或9个、10个等)为止。本申请实施方式等待一段时间使得抖动检测模块11的缓存区111内具有足够多的新于当前时间戳而的抖动参数后,再从抖动检测模块11中读取抖动参数,有利于防抖单元141从抖动检测模块11中读取足够的抖动参数作为当前抖动参数和未来抖动参数,有利于保证防抖算法处理的正确完成。
在另一些实施方式中,以该拍摄装置100正在拍摄的图像帧的预设时长间隔为8ms(即每秒拍摄帧数为125),缓存区111内可存储20个抖动参数,抖动检测模块11检测抖动参数的预定时间间隔为4ms,并且需要7个未来抖动参数对当前图像进行防抖处理算法为例。由于时间新于当前时间戳的第一个抖动参数有可能被确定为当前抖动参数或未来抖动参数,因此需要读取时间新于当前时间戳的8个抖动参数可作为当前图像对应的当前抖动参数或未来抖动参数。另外由于本例中下一帧图像,即未来图像与当前图像的预设时长间隔为8ms,抖动参数的预定时间间隔为4ms,即当前图像对应的当前抖动参数之后的第二个未来抖动参数恰好为未来图像对应的当前抖动参数,则需要读取8+2=10个时间新于当前时间戳的抖动参数才足够对当前图像进行防抖算法处理和对未来图像进行防抖算法预处理。若拍摄装置100运行过程中带有当前时间戳的当前图像到达防抖单元141时,防抖单元141从抖动检测模块11中读取的时间新于当前时间戳的抖动参数不足10个(或11个、12个等),则防抖单元141等待一段时间再次从抖动检测模块11中读取抖动参数,直到防抖单元141从抖动检测模块11中读取的时间新于当前时间戳的抖动参数至少为10个(或11个、12个等)为止。本申请实施方式等待一段时间使得抖动检测模块11的缓存区111内具有足够多的新于当前时间戳而的抖动参数后,再从抖动检测模块11中读取抖动参数,有利于防抖单元141从抖动检测模块11中读取足够的抖动参数作为当前图像对应的当前抖动参数和未来抖动参数,和未来图像对应的当前抖动参数和未来抖动参数,有利于保证防抖算法处理的正确完成的同时,有足够的抖动参数作为未来图像对应的当前抖动参数和未来抖动参数,有利于一次读取能对更多的待处理图像进行处理(包括防抖算法处理或防抖算法预处理),从而有利于提高图像处理的效率,降低图像处理器10的运行负荷。
请参阅图14和图15,本申请实施方式的电子设备1000包括上述任意一种实施方式的拍摄装置100和壳体200,拍摄装置100与壳体200结合。壳体200可以作为电子设备1000的功能元件的安装载体。壳体200可以为功能元件提供防尘、防摔、防水等保护,功能元件可以是显示屏、拍摄装置100、受话器等。其中,在一个实施方式中,壳体200包括主体210和可动支架220,可动支架220在驱动装置的驱动下可以相对于主体210运动,例如可动支架220可以相对于主210体滑动,以滑入主体210(例如图14的状态)或从主体210滑出(例如图15的状态)。部分功能元件可以安装在主体210上,另一部分功能元件(例如拍摄装置100)可以安装在可动支架220上,可动支架220运动可带动该另一部分功能元件缩回主体210内或从主体210中伸出。在另一个实施方式中,壳体200上开设有采集窗口,拍摄装置100与采集窗口对准安装以使拍摄装置100能够通过采集窗口接收外界光线以形成图像。
综上所述,本申请实施方式的图像处理方法、图像处理器10、拍摄装置100和电子设备1000中,防抖单元141根据当前图像的当前时间戳、从抖动检测模块11中读取抖动参数的读取时间、以及每两个相邻的抖动参数间隔的预定时长,从多个抖动参数中确定与当前图像对应的当前抖动参数,以使得当前图像与当前抖动参数是精确对应的。当前抖动参数能指示拍摄时拍摄装置100的抖动状态,未来抖动参数能指示拍摄后一段时间拍摄装置100的抖动状态。处理单元163根据当前抖动参数和未来抖动参数对当前图像进行防抖算法处理能够具有较好的防抖处理效果。
在本申请的实施方式的描述中,需要说明的是,除非另有明确的规定和限定,术语“安装”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接或可以相互通讯;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通或两个元件的相互作用关系。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本申请的实施方式中的具体含义。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行***、装置或设备(如基于计算机的***、包括处理模块的***或其他可以从指令执行***、装置或设备取指令并执行指令的***)使用,或结合这些指令执行***、装置或设备而使用。就本说明书而言,"计算机可读介质"可以是任何可以包含、存储、通信、传播或传输程序以供指令执行***、装置或设备或结合这些指令执行***、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(控制方法),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印所述程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得所述程序,然后将其存储在计算机存储器中。
应当理解,本申请的实施方式的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行***执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请的各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“某些实施方式”等的描述意指结合所述实施方式或示例描述的具体特征、结构或者特点包含于本申请的至少一个实施方式中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施方式。而且,描述的具体特征、结构或者特点可以在任何的一个或多个实施方式中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施方式,可以理解的是,上述实施方式是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施方式进行变化、修改、替换和变型。
Claims (14)
1.一种图像处理方法,其特征在于,包括:
应用程序模块的防抖单元在接收到带有当前时间戳的当前图像时,从抖动检测模块中读取抖动参数,所述抖动检测模块包括缓存区,所述缓存区内存储有多个所述抖动参数,每两个相邻的所述抖动参数的检测时间间隔预定时长;
所述防抖单元根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数;和
算法后处理模块的处理单元根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理;
所述防抖单元根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数,包括:
所述防抖单元根据所述读取时间标记最新的一个所述抖动参数的时间戳;
根据最新的一个所述抖动参数的时间戳和所述预定时长依次标记多个所述抖动参数中除最新的一个所述抖动参数之外的所述抖动参数的时间戳得到所有所述抖动参数的时间戳;和
将所有所述抖动参数的时间戳中与所述当前时间戳匹配的一个时间戳对应的所述抖动参数作为所述当前抖动参数,将晚于所述当前抖动参数的时间戳的预定个时间戳对应的所述抖动参数作为所述未来抖动参数。
2.根据权利要求1所述的图像处理方法,其特征在于,所述图像处理方法还包括:
相机服务模块接收图像传感器发送的所述当前图像;
所述相机服务模块对所述当前图像标记所述当前时间戳;和
所述相机服务模块将带有所述当前时间戳的所述当前图像发送至所述防抖单元。
3.根据权利要求1所述的图像处理方法,其特征在于,所述防抖单元根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数,包括:
所述防抖单元根据所述读取时间与所述当前时间戳之间的时间差以及所述预定时长从多个所述抖动参数中确定所述当前抖动参数以及所述未来抖动参数。
4.根据权利要求1所述的图像处理方法,其特征在于,相邻的两帧图像的生成时间间隔预设时长,所述预定时长小于或等于所述预设时长。
5.根据权利要求1所述的图像处理方法,其特征在于,所述图像处理方法还包括:
所述算法后处理模块的处理单元根据所述未来抖动参数对所述当前图像之后的未来图像进行防抖算法预处理。
6.根据权利要求1所述的图像处理方法,其特征在于,所述应用程序模块的防抖单元在接收到带有当前时间戳的当前图像时,从抖动检测模块中读取抖动参数,包括:
所述防抖单元在接收到带有所述当前时间戳的所述当前图像时,等待设定时间后,从所述抖动检测模块中读取所述抖动参数。
7.一种图像处理器,其特征在于,所述图像处理器与抖动检测模块连接,所述图像处理器包括应用程序模块和算法后处理模块,所述应用程序模块包括防抖单元,所述算法后处理模块包括处理单元;
所述防抖单元用于在接收到带有当前时间戳的当前图像时,从所述抖动检测模块中读取抖动参数,所述抖动检测模块包括缓存区,所述缓存区内存储有多个所述抖动参数,每两个相邻的所述抖动参数的检测时间间隔预定时长;
所述防抖单元用于根据所述当前时间戳、读取所述抖动参数的读取时间以及所述预定时长从多个所述抖动参数中确定与所述当前图像对应的当前抖动参数以及在所述当前抖动参数之后的未来抖动参数;和
所述处理单元用于根据所述当前抖动参数和所述未来抖动参数对所述当前图像进行防抖算法处理;
所述防抖单元用于:
根据所述读取时间标记最新的一个所述抖动参数的时间戳;
根据最新的一个所述抖动参数的时间戳和所述预定时长依次标记多个所述抖动参数中除最新的一个所述抖动参数之外的所述抖动参数的时间戳得到所有所述抖动参数的时间戳;和
将所有所述抖动参数的时间戳中与所述当前时间戳匹配的一个时间戳对应的所述抖动参数作为所述当前抖动参数,将晚于所述当前时间戳的预定个时间戳对应的所述抖动参数作为所述未来抖动参数。
8.根据权利要求7所述的图像处理器,其特征在于,所述图像处理器还包括相机服务模块,所述相机服务模块用于:
接收图像传感器发送的所述当前图像;
对所述当前图像标记所述当前时间戳;和
将带有所述当前时间戳的所述当前图像发送至所述防抖单元。
9.根据权利要求7所述的图像处理器,其特征在于,所述防抖单元用于:
根据所述读取时间与所述当前时间戳之间的时间差以及所述预定时长从多个所述抖动参数中确定所述当前抖动参数以及所述未来抖动参数。
10.根据权利要求7所述的图像处理器,其特征在于,相邻的两帧图像的生成时间间隔预设时长,所述预定时长小于或等于所述预设时长。
11.根据权利要求7所述的图像处理器,其特征在于,所述处理单元还用于:
根据所述未来抖动参数对所述当前图像之后的未来图像进行防抖算法预处理。
12.根据权利要求7所述的图像处理器,其特征在于,所述防抖单元还用于:
在接收到带有所述当前时间戳的所述当前图像时,等待设定时间后,从所述抖动检测模块中读取所述抖动参数。
13.一种拍摄装置,其特征在于,所述拍摄装置包括:
抖动检测模块;
权利要求7至12中任意一项所述的图像处理器,所述图像处理器与所述抖动检测模块连接;及
图像传感器,所述图像传感器与所述图像处理器连接。
14.一种电子设备,其特征在于,所述电子设备包括:
权利要求13所述的拍摄装置;及
壳体,所述拍摄装置与所述壳体结合。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010018434.XA CN111193866B (zh) | 2020-01-08 | 2020-01-08 | 图像处理方法、图像处理器、拍摄装置和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010018434.XA CN111193866B (zh) | 2020-01-08 | 2020-01-08 | 图像处理方法、图像处理器、拍摄装置和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111193866A CN111193866A (zh) | 2020-05-22 |
CN111193866B true CN111193866B (zh) | 2021-03-23 |
Family
ID=70709935
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010018434.XA Active CN111193866B (zh) | 2020-01-08 | 2020-01-08 | 图像处理方法、图像处理器、拍摄装置和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111193866B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111586305B (zh) * | 2020-05-27 | 2021-11-02 | 维沃移动通信(杭州)有限公司 | 防抖方法、防抖装置和电子设备 |
CN112153282B (zh) * | 2020-09-18 | 2022-03-01 | Oppo广东移动通信有限公司 | 图像处理芯片、方法、存储介质及电子设备 |
CN112561915B (zh) * | 2020-11-30 | 2024-06-21 | 成都市喜爱科技有限公司 | 图像处理方法、装置、图像采集装置及存储介质 |
CN112653842A (zh) * | 2020-12-23 | 2021-04-13 | 维沃移动通信有限公司 | 视频防抖的方法和装置 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102981742A (zh) * | 2012-11-28 | 2013-03-20 | 无锡市爱福瑞科技发展有限公司 | 基于计算机视觉的手势交互*** |
US9787900B2 (en) * | 2015-12-16 | 2017-10-10 | Gopro, Inc. | Dynamic synchronization of frame rate to a detected cadence in a time lapse image sequence |
US11095816B2 (en) * | 2016-12-02 | 2021-08-17 | Sony Semiconductor Solutions Corporation | Image pickup element, image pickup method, and electronic device for image stabilization |
CN107404618A (zh) * | 2017-08-01 | 2017-11-28 | 努比亚技术有限公司 | 一种拍摄方法及终端 |
CN110166697B (zh) * | 2019-06-28 | 2021-08-31 | Oppo广东移动通信有限公司 | 摄像头防抖方法、装置、电子设备和计算机可读存储介质 |
-
2020
- 2020-01-08 CN CN202010018434.XA patent/CN111193866B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN111193866A (zh) | 2020-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111193866B (zh) | 图像处理方法、图像处理器、拍摄装置和电子设备 | |
CN109963083B (zh) | 图像处理器、图像处理方法、拍摄装置和电子设备 | |
CN110086967B (zh) | 图像处理方法、图像处理器、拍摄装置和电子设备 | |
CN110290288B (zh) | 图像处理器、图像处理方法、拍摄装置和电子设备 | |
US11070742B2 (en) | Optimized exposure temporal smoothing for time-lapse mode | |
TWI446098B (zh) | 成像裝置及其快門驅動模式選擇方法 | |
CN110062161B (zh) | 图像处理器、图像处理方法、拍摄装置和电子设备 | |
US10757384B2 (en) | Desaturation control | |
CN111147695B (zh) | 图像处理方法、图像处理器、拍摄装置和电子设备 | |
JP4441919B2 (ja) | 撮像装置及びそのプログラム | |
WO2007097287A1 (ja) | 撮像装置及びレンズ鏡筒 | |
JP4434939B2 (ja) | 撮像装置及びその制御方法 | |
JP2009508425A (ja) | 動き主導のマルチショット画像安定化を実現するためのシステム及び方法 | |
CN103685952A (zh) | 终端和图像处理方法 | |
US20130176487A1 (en) | Image processing apparatus, image capturing apparatus, and computer program | |
US11238285B2 (en) | Scene classification for image processing | |
KR20100060140A (ko) | 영상 처리 장치에서의 광역 역광 보정 영상 획득 장치 및 방법 | |
WO2017086091A1 (ja) | 画像処理装置、画像処理方法およびプログラム | |
CN111193867B (zh) | 图像处理方法、图像处理器、拍摄装置和电子设备 | |
JP2006186593A (ja) | 撮像装置及び制御方法 | |
CN103546673A (zh) | 在运动场景下生成高动态图像的方法及装置 | |
JP2012120152A (ja) | 撮像装置及びその制御方法 | |
CN110278375A (zh) | 图像处理方法、装置、存储介质及电子设备 | |
JP2007189295A (ja) | 撮像装置及びそのプログラム | |
CN110401800B (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 |