处理图像数据的方法和装置与流程

文档序号:19906620发布日期:2020-02-11 14:34阅读:377来源:国知局
处理图像数据的方法和装置与流程

版权申明

本专利文件披露的内容包含受版权保护的材料。该版权为版权所有人所有。版权所有人不反对任何人复制专利与商标局的官方记录和档案中所存在的该专利文件或者该专利披露。

本申请涉及图像处理领域,并且更为具体地,涉及一种处理图像数据的方法和装置。



背景技术:

传统技术中,由于需求不同,各个模块可能需要不同的像素数据,经常需要将不同颜色空间(或颜色空间模型)的像素数据进行相互转换。

同一颜色空间下,像素数据通常存在多种不同位宽。对不同位宽的像素数据进行颜色空间转换时,传统技术通常需要为每种位宽的像素数据设置专门的转换方式,开销较大。



技术实现要素:

本申请提供一种处理图像数据的方法和装置,以降低对不同位宽的像素数据进行颜色空间转换时的开销。

第一方面,提供一种处理图像数据的方法,包括:获取第一像素数据,其中所述第一像素数据为第一颜色空间的像素数据;将所述第一像素数据分解成第一部分数据和第二部分数据,所述第一部分数据为所述第一像素数据中的高k位数据或低k位数据,所述第二部分数据为所述第一像素数据中的除所述第一部分数据之外的剩余数据,其中k为正整数,且k小于所述第一像素数据的位宽;将所述第一部分数据从第一颜色空间转换至第二颜色空间,得到中间结果;根据所述第二部分数据,确定差异数据,所述差异数据用于指示第二像素数据与所述中间结果的差异,其中所述第二像素数据是所述第一像素数据在所述第二颜色空间的对应数据;根据所述中间结果和所述差异数据,确定所述第二像素数据。

第二方面,提供一种处理图像数据的装置,包括:数据接口,用于获取第一像素数据,其中所述第一像素数据为第一颜色空间的像素数据;转化模块,用于将所述第一像素数据分解成第一部分数据和第二部分数据,所述第一部分数据为所述第一像素数据中的高k位数据或低k位数据,所述第二部分数据为所述第一像素数据中的除所述第一部分数据之外的剩余数据,其中k为正整数,且k小于所述第一像素数据的位宽;计算模块,用于将所述第一部分数据从第一颜色空间转换至第二颜色空间,得到中间结果;根据所述第二部分数据,确定差异数据,所述差异数据用于指示第二像素数据与所述中间结果的差异,其中所述第二像素数据是所述第一像素数据在所述第二颜色空间的对应数据;根据所述中间结果和所述差异数据,确定所述第二像素数据。

在计算某种位宽的像素数据时,上述技术方案复用了其他位宽的像素数据的计算方式,从而降低对不同位宽的像素数据进行颜色空间转换时的开销。

附图说明

图1是需要对像素数据进行颜色空间转换的场景的示例图。

图2是8bit-yuv2rgb转换的计算过程示例图。

图3是本申请实施例提供的处理图像数据的方法的示意性流程图。

图4是本申请实施例提供的10bit-yuv2rgb转换复用8bit-yuv2rgb转换的计算过程示例图。

图5是本申请实施例提供的处理图像数据的装置的示意性结构图。

具体实施方式

图1描述的是需要对像素数据进行颜色空间转换的一个示例性场景。图1中的成像器件12例如可以是相机的图像信号处理器(imagesignalprocessor,isp)。成像器件12可以进行图像采集,并将采集到的信号转换成yuv颜色空间的像素数据,并将该yuv颜色空间的像素数据输出至视频信号处理装置14。

视频信号处理装置14通常会利用预处理模块对接收到的yuv颜色空间的像素数据进行预处理。yuv2rgb模块142就是一个基础而且重要的预处理模块,主要用于将yuv颜色空间的像素数据转换成rgb颜色空间的像素数据。

为了便于理解,下面以8bit-yuv420的像素数据为例,给出yuv2rgb的一种可能的实现方式。

对于8bit-yuv420,一组uv会被rgb图像中的两行两列,共4个像素点共享。如图2所示,可以先利用一对uv分量计算该4个像素点(即rgbmn,rgbm(n+1),rgb(m+1)n,rgb(m+1)(n+1))共享的3个色彩分量ruv、guv、buv,再根据4个y分量同时计算该4个像素点的r、g、b分量,最终将8bit-yuv的像素数据转换为8bit-rgb的像素数据。

具体而言,可以采用如下公式(1)和公式(2)计算rgb颜色空间的像素数据:

其中,y-16≥0,cy、cvr、cug、cvg、cub是用于将浮点数转换成定点数的转换参数,在不同的标准中,这些转换参数的设置可以不同,具体参见传统技术。shift是根据定点化配置的浮点数的小数位宽。其中,符号<<代表左移;>>代表右移动。在公式(1)中加入运算操作可以实现的结果的四舍五入;在公式(2)中加入运算操作“>>shift”,可以舍去的计算结果的小数部分。

上面描述的是8bit-yuv420到8bit-rgb的转换方式,但不同规格的成像器件12输出的像素数据的位宽可能不相同。例如,成像器件12可能输出8bit-yuv420,8bit-yuv422,10bit-yuv420或10bit-yuv422的像素数据。针对不同位宽的像素数据,在进行颜色空间转换时,传统技术通常需要为每种位宽的像素数据设置专门的转换方式,开销较大。

下面结合图3,给出本申请实施例提供的处理图像数据的方法,以降低对不同位宽的像素数据进行颜色空间转换时的开销。

图3的方法可以由需要对像素数据进行颜色空间转换的任意类型的装置执行,例如可以是图1中的视频信号处理装置14。

如图3所示,图3的方法可以包括步骤s31至步骤s35,下面对这些步骤进行详细描述。

在步骤s31,获取第一像素数据。第一像素数据可以为第一颜色空间的像素数据。本申请实施例的目的是将第一像素数据从第一颜色空间转换至第二颜色空间,得到第二像素数据。本申请实施例对第一颜色空间和第二颜色空间的类型不做具体限定。例如,第一颜色空间是yuv颜色空间,第二颜色空间是rgb颜色空间;又如,第一颜色空间是rgb颜色空间,第二颜色空间是yuv颜色空间。

在步骤s32,将第一像素数据分解成第一部分数据和第二部分数据。第一部分数据可以为第一像素数据中的高k位数据或低k位数据。第二部分数据可以为第一像素数据中的除第一部分数据之外的剩余数据。其中k为正整数,且k小于第一像素数据的位宽。

举例说明,假设第一像素数据为10bit-yuv420格式的像素数据,则第一像素数据的位宽(或每个分量的位宽)为10bit。经过步骤s32,可以将位宽为10bit的像素数据分解成第一部分数据和第二部分数据。例如:可以将第一部分数据可以由位宽为10bit的像素数据中的高8位数据组成,第二部分数据由位宽为10bit的像素数据中的低2位数据组成。或者,第一部分数据可以由位宽为10bit的像素数据中的低8位数据组成,第二部分数据由位宽为10bit的像素数据中的高2位数据组成。

在步骤s33,将第一部分数据从第一颜色空间转换至第二颜色空间,得到中间结果。步骤s33将第一像素数据中的第一部分数据看成是位宽为k的像素数据直接进行颜色空间转换,因此可以复用位宽为k的像素数据的颜色空间转换方式,例如,在一种实施例中,因为第一部分数据为10bit的像素数据中的高8位数据组成,可以复用8bit-yuv420进行颜色空间转换为8bit-rgb的方法。

以第一部分数据为yuv颜色空间的像素数据为例,则中间结果可以是第一部分数据在rgb颜色空间的对应数据。同理,以第一部分数据为rgb颜色空间的像素数据为例,则中间结果可以是第一部分数据在yuv颜色空间的对应数据。中间结果可以包括第一颜色空间中的各个分量对应的中间结果。例如,第一颜色空间为yuv颜色空间,则中间结果可以包括y分量、u分量以及v分量对应的中间结果。

在步骤s34,根据第二部分数据,确定差异数据(或称补偿值)。

步骤s33得到的中间结果与直接将第一像素数据进行颜色空间得到的第二像素数据相比是存在差异的,该差异数据的取值与第二部分数据有关。因此,本申请实施例根据第二部分数据计算出该差异数据。

根据第二部分数据计算差异数据的方式可以有多种,可以根据公式在线计算,也可以预先存储第二部分数据与差异数据的映射关系(例如预先存储用于指示二者映射关系的查找表),实际计算时,可以通过查询映射关系的方式获得差异数据。

预先存储映射关系的实现方式可以提高计算效率,而根据公式在线计算的方式可以降低数据计算过程对存储空间的占用量。下文会结合具体的实施例对这两种实现方式进行详细描述,此处暂不详述。

差异数据可以包括第一颜色空间中的各个分量对应的差异数据。例如,第一颜色空间为yuv颜色空间,则差异数据可以包括y分量、u分量以及v分量对应的差异数据。

在步骤s35,根据中间结果和差异数据,确定第二像素数据。例如,可以将中间结果与差异数据相加,得到第二像素数据。或者,可以将中间结果和差异数据相加,并根据定点化的要求对相加结果进行移位,得到第二像素数据。

本申请实施例在对位宽比k更高的像素数据进行颜色空间转换时,将其分解成第一部分数据和第二部分数据,第一部分数据复用了位宽为k的像素数据的颜色空间转换方式,第二部分数据对第一部分数据转换得到的中间结果进行补偿,使得本申请实施例计算出的第二像素数据与直接将第一像素数据进行颜色空间转换得到的第二像素数据结果相同。由此可见,本申请实施例在对某种位宽的像素数据进行颜色空间转换时,可以复用其他位宽的像素数据的颜色空间转换方式,降低对不同位宽的像素数据进行颜色空间转换时的开销。

在某些场景(如图1所示的场景),需要采用硬件电路对像素数据进行颜色空间转换。对于硬件设计而言,处理不同位宽的像素数据,通常需要设计不同位宽的计算单元来满足计算需求。比如针对8bit-yuv、10bit-yuv的像素数据,可以设计出两个独立的计算单元,一个专门用于将8bit-yuv的像素数据转换成8bit-rgb像素数据,另一个专门用于将10bit-yuv的像素数据转换成10bit-rgb像素数据。上述实现方式消耗了过多的硬件的计算资源。

图3的方法可应用于这种需要使用硬件电路进行颜色空间转换的场景,以降低不同位宽的像素数据进行颜色空间转换时的硬件资源的消耗。例如,可以设置专门用于将位宽为k的像素数据从第一颜色空间转换至第二颜色空间的计算单元(或硬件电路)。当需要对将位宽为k的像素数据从第一颜色空间转换至第二颜色空间时,直接利用该计算单元即可实现。当需要将位宽大于k的第一像素数据从第一颜色空间转换至第二颜色空间时,可以利用该计算单元将第一像素数据中的高k位或低k位像素数据直接从第一颜色空间转换至第二颜色空间,并利用剩余数据对该计算单元的计算结果进行补偿。由此可见,位宽大于k的像素数据在进行颜色空间转换时,可以复用位宽为k的计算单元,从而可以节省硬件资源。

下面以10bit-yuv420复用8bit-yuv420的硬件电路为例,对将10bit-yuv420的像素数据从yuv颜色空间转换至rgb颜色空间的方式进行详细地举例说明。

如图4所示,10bit-yuv420的像素数据的转换过程与图2描述的8bit-yuv2rgb的计算过程大致相同,不同之处在于需要先按照下文的公式(3)将像素数据的uv分量拆分为高8位数据uh和vh,以及低2位数据ul和vl。

接着,可以基于公式(4),利用uh和vh计算得到uv分量对应的中间结果ruvh、guvh、buvh。

ul和vl可以按照公式(5)计算uv分量对应的差异数据ruvadd、guvadd、buvadd。或者,也可以采用预先计算、在线查表的方式得到uv分量对应的差异数据ruvadd、guvadd、buvadd。

接着,可以按照公式(6)将ruvh、guvh、buvh和ruvadd、guvadd、buvadd相加,即可得到10bit的uv分量的计算结果ruv、guv、buv。

y的计算类似,也可以根据公式(7)先拆分成高8位数据yh和低2位数据yl。y分量对应的中间结果yh可以按照公式(8)计算y分量对应的差异数据yadd可以按照公式(9)计算。

其中,yh-16≥0(7)

yh=(cy×(yh-16))(8)

yadd=yl*cy(9)

最后,可以利用公式(10)将y分量对应的中间结果yh、差异数据yadd,以及ruv、guv、buv相加,得到10bit-rgb的像素数据:

与图2所示的8bit-yuv2rgb的计算方式相比,10bit-yuv2rgb的计算方式基本相同,不同之处在于使用差异数据yadd、ruvadd、guvadd、buvadd对高8位数据计算得到的中间结果进行补偿。差异数据的计算方式已经由公式(5)和公式(9)给出。可以证明,上述计算过程得到的计算结果与将10bit-yuv420直接进行计算的结果是一致的。因此,本申请实施例在计算10bit的yuv像素数据时,能够复用8bit的yuv2rgb的硬件电路,并得到一致的计算结果,从而节省硬件资源。

本实施例以第一像素数据为10bit-yuv420的像素数据为例进行说明,实际上,第一像素数据也可以是位宽为11bit、12bit的像素数据,而且第一像素数据的格式也可以是yuv422或yuv444。此外,本实施例是以第一像素数据的高8位数据复用硬件电路进行直接转换,低2位数据对高8位数据的转换结果进行补偿为例进行说明的,实际上,也可以以第一像素数据的低8位数据复用硬件电路进行直接转换,高2位数据对高8位数据的转换结果进行补偿。上述实施例的复用8bit的yuv2rgb的硬件电路是一种示例,也可以是复用6bit/10bit/11bit/12bit等的yuv2rgb的硬件电路,这个根据硬件电路的设计和需要来决定。

上文结合图1至图4,详细描述了本申请的方法实施例,下面结合图5,详细描述本申请的装置实施例。应理解,方法实施例的描述与装置实施例的描述相互对应,因此,未详细描述的部分可以参见前面方法实施例。

如图5所示,本申请实施例提供一种处理图像数据的装置50。该装置50可以包括数据接口52、转换模块54、计算模块56。这些接口和模块可以是软件形式,也可以是硬件形式,或者可以是软硬结合的形式,本申请实施例对此并不限定。在某些实施例中,转换模块54和/或计算模块56可以是处理器。该装置50例如可以是图1所示的视频信号处理装置14。

数据接口52可用于获取第一像素数据,其中第一像素数据为第一颜色空间的像素数据。

例如,第一颜色空间是yuv颜色空间,第二颜色空间是rgb颜色空间;又如,第一颜色空间是rgb颜色空间,第二颜色空间是yuv颜色空间。

转化模块54可用于将第一像素数据分解成第一部分数据和第二部分数据。第一部分数据为第一像素数据中的高k位数据或低k位数据,第二部分数据为第一像素数据中的除第一部分数据之外的剩余数据,其中k为正整数,且k小于第一像素数据的位宽。

举例说明,假设第一像素数据为10bit-yuv420格式的像素数据,则第一像素数据的位宽(或每个分量的位宽)为10bit。经过转化模块54,可以将位宽为10bit的像素数据分解成第一部分数据和第二部分数据。例如:可以将第一部分数据可以由位宽为10bit的像素数据中的高8位数据组成,第二部分数据由位宽为10bit的像素数据中的低2位数据组成。或者,第一部分数据可以由位宽为10bit的像素数据中的低8位数据组成,第二部分数据由位宽为10bit的像素数据中的高2位数据组成。

计算模块56可用于将第一部分数据从第一颜色空间转换至第二颜色空间,得到中间结果;根据第二部分数据,确定差异数据,差异数据用于指示第二像素数据与中间结果的差异。其中,第二像素数据是第一像素数据在第二颜色空间的对应数据;根据中间结果和差异数据,确定第二像素数据。

根据第二部分数据计算差异数据的方式可以有多种,可以根据公式在线计算,也可以预先存储第二部分数据与差异数据的映射关系(例如预先存储用于指示二者映射关系的查找表),实际计算时,可以通过查询映射关系的方式获得差异数据。该映射关系可以记录在预先建立的查找表中。

预先存储映射关系的实现方式可以提高计算效率,而根据公式在线计算的方式可以降低数据计算过程对存储空间的占用量。下文会结合具体的实施例对这两种实现方式进行详细描述,此处暂不详述。

差异数据可以包括第一颜色空间中的各个分量对应的差异数据。例如,第一颜色空间为yuv颜色空间,则差异数据可以包括y分量、u分量以及v分量对应的差异数据。

可选地,计算模块56可用于根据第二部分数据,查找预先建立的映射关系,以确定差异数据。映射关系可用于指示第二部分数据与差异数据的对应关系。

可选地,转化模块54可以为专门用于将位宽为k的像素数据从第一颜色空间转换至第二颜色空间的硬件电路。

可选地,第一像素数据是格式为yuv420、位宽为n的像素数据,第一像素数据包括一组uv分量以及共享一组uv分量的多个y分量,第一部分数据包括一组uv分量和多个y分量的高k位数据,第二部分数据包括一组uv分量和多个y分量的低n-k位数据;或者,第一部分数据包括一组uv分量和多个y分量的低k位数据,第二部分数据包括一组uv分量和多个y分量的高n-k位数据,其中n为大于k的正整数。

可选地,第一部分数据包括一组uv分量的高8位数据uh、vh,第二部分数据包括一组uv分量的低2位数据ul、vl,中间结果包括uh和vh对应的中间结果ruvh、guvh和buvh,差异数据包括ul和vl对应的差异数据ruvadd、guvadd和buvadd,ruvh、guvh和buvh满足如下公式:

ruvadd、guvadd和buvadd满足如下公式:

其中,cvr、cug、cvg、cub是用于将浮点数转换成定点数的转换参数,shift表示浮点数的小数位宽。

可选地,第一部分数据包括多个y分量的高8位数据yh,以及多个y分量的低2位数据yl,中间结果包括yh对应的中间结果yh,差异数据包括yl对应的差异数据yadd,yh满足如下公式:

yh=cy×(yh-16)

yadd满足如下公式:

yadd=yl*cy

其中,cy是用于将浮点数转换成定点数的转换参数。

可选地,第二像素数据的分量r、g、b满足如下公式:

可选地,第一像素数据的位宽为n,其中n为大于k的正整数,转化模块54可具体用于将第一像素数据中的各分量向右移n-k位,得到第一部分数据;将第一像素数据与第一部分数据之差确定为第二部分数据。

可选地,转化模块54可具体用于将第一像素数据的各分量与目标数据进行按位与运算,得到第二部分数据,其中目标数据的高k位为0,低n-k位为1。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其他任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digitalsubscriberline,dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如数字视频光盘(digitalvideodisc,dvd))、或者半导体介质(例如固态硬盘(solidstatedisk,ssd))等。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1