一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种图像色彩转换及其加速方法与流程

2022-04-02 06:55:10 来源:中国专利 TAG:


1.本发明涉及图像处理技术领域,特别涉及一种图像色彩转换及其加速方法。


背景技术:

2.在图像、视频的采集过程中,由于受到拍摄时光线条件等外部因素的影响,因此所获得的图像常出现亮度不均、对比度低、颜色失真等问题,其质量可能难以满足后续操作的需求。为了改善图像质量以提取更多可用信息,通常在进行图像处理前会对采集的原始图像进行增强。常用的图像增强技术有对比度处理、直方图修正、噪音处理、边缘增强、变换处理和伪彩色等。
3.在某些特定的应用场景下,通常需要对所采集的图像或视频进行实时处理,这对图像增强算法的速度要求较高。三线性插值算法是在三维离散采样数据的张量积网格上进行线性插值的方法。若将图像像素的rgb值存储为一个三维数组,形成图像转换表,则可将三线性插值算法应用于图像的色彩变换或增强中。
4.目前,采用三线性插值算法进行色彩变换是基于软件、通过查表的方式实现。对于一个像素点而言,需要首先从图像转换表中找到8个三维数组项然后将所述8个三维数组项的值进行三线性插值,以计算转换成对应的值。然而,受限于cpu的访问规则,所述8个三维数值项至少需要4次读操作才能获取,这对处理的实时性存在一定的影响。


技术实现要素:

5.针对现有技术中的部分或全部问题,本发明一方面提供一种图像色彩转换的加速方法,包括:
6.将图像转换表中的三维数组项分为n个数据组,每个数据组包含l个三维数组项,每个数据组中的任意两个三维数组项在任意维度上的差值均小于等于1;
7.将所述n个数据组进一步分为m个数据块,并存储于不同的存储区域中,其中:
8.所述不同的存储区域被配置为可被同时读取,且每个存储区域单次可读取的数据大小不小于l;以及
9.每个数据块中的每个数据组中的三维数组项与所述数据块中的其他数据组中的三维数组项在至少一个维度上的差值大于2。
10.进一步地,所述图像转换表的形成包括:
11.将蓝、绿、红三个颜色通道分别划分为k段,并依次标记索引值;以及
12.将一组蓝、绿、红索引值作为一个三维数组项,形成一个包含k*k*k项的三维数组,作为图像转换表。
13.进一步地,所述m为正整数,且其取值不小于8。
14.进一步地,所述l为正整数,且其取值不大于8。
15.进一步地,所述k的取值优选为偶数。
16.进一步地,所述m个数据块分别存储于m个的静态随机存储器中。
17.进一步地,所述m个数据块分别存储于m个的直接读取存储器中。
18.基于如前所述的加速方法,本发明另一方面提供一种图像色彩转换的方法,包括:
19.对于每一个像素点,根据其蓝、绿、红三个颜色通道的分量确定一组数值;
20.根据所述数值,通过一次读操作在所述存储区域中获取所述数值对应的三维数组项以及所述三维数组项相邻的七个三维数组项,其中,相邻的七个三维数组项是指与所述三维数组项在任意维度上的差值均小于等于1的三维数组项;以及
21.将所述三维数组项及其相邻的七个三维数组项进行三线性插值得到转换后的蓝、绿、红通道分量。
22.本发明另一方面提供一种计算机设备,包括:
23.多个独立的存储区域,所述多个独立的存储区域被配置为可被同时读取;
24.存储器,用于存储计算机程序;以及
25.处理器,用于执行所述计算机程序以实现如前所述的图像色彩转换方法的步骤。
26.本发明另一方面提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如前所述的图像色彩转换方法的步骤。
27.本发明提供的一种图像色彩转换及其加速方法,利用图像转换表上各三维数组项之间的相关性,进行分组分块存储,进而使得在进行三线性插值时,可通过一次读操作将需要的8个三维数组项全部读取出来,实现硬件加速。相较于现有的技术,节省了三个读操作的时长。本发明提供的图像色彩转换及其加速方法使得摄像头等设备获取的视频或图像的实时色彩变换成为可能。
附图说明
28.为进一步阐明本发明的各实施例的以上和其它优点和特征,将参考附图来呈现本发明的各实施例的更具体的描述。可以理解,这些附图只描绘本发明的典型实施例,因此将不被认为是对其范围的限制。在附图中,为了清楚明了,相同或相应的部件将用相同或类似的标记表示。
29.图1示出本发明一个实施例的一种图像色彩转换的加速方法的流程示意图;
30.图2示出本发明一个实施例的图像转换表的三维化视角示意图;以及
31.图3示出本发明一个实施例的一种图像色彩转换的方法的流程示意图。
具体实施方式
32.以下的描述中,参考各实施例对本发明进行描述。然而,本领域的技术人员将认识到可在没有一个或多个特定细节的情况下或者与其它替换和/或附加方法一起实施各实施例。在其它情形中,未示出或未详细描述公知的操作以免模糊本发明的发明点。类似地,为了解释的目的,阐述了特定配置,以便提供对本发明的实施例的全面理解。然而,本发明并不限于这些特定细节。此外,应理解附图中示出的各实施例是说明性表示且不一定按正确比例绘制。
33.在本说明书中,对“一个实施例”或“该实施例”的引用意味着结合该实施例描述的特定特征、结构或特性被包括在本发明的至少一个实施例中。在本说明书各处中出现的短语“在一个实施例中”并不一定全部指代同一实施例。
34.另外,本发明的各方法的步骤的编号并未限定所述方法步骤的执行顺序。除非特别指出,各方法步骤可以以不同顺序执行。
35.在本发明中,术语“相邻的三维数组项”是指两个三维数组项在任意维度上的差值均小于等于1,即两个三维数组项之间不存在其它的三维数组项,即不存在中间数据元素;而术语“不相邻的数据组”是指两个数据组中的三维数组项在至少一个维度上的差值大于2。
36.图像转换表通常包括k*k*k个三维数组项,其形成包括:将像素点的蓝、绿、红三个颜色通道的分量值(rgb值)划分为k个区段,然后,依次标记索引值,并将一组蓝、绿、红索引值作为一个三维数组的索引,进而得到一个k*k*k项的三维数组,形成图像转换表。每个三维数项组记为lut[idx_b][idx_g][idx_r],其中,idx_b、idx_g、idx_r分别表示蓝、绿、红索引值。以8位rgb值为例,对于一个8*8*8的图像转换表,所述蓝、绿、红三个颜色通道的分量值均被划分为8个区段,其中idx_b=0表示蓝色通道分量值为0-31,idx_g=0表示绿色通道分量值为0-31,以及idx_r=0表示红色通道分量值为0-31,则三维数组项lut[0][0][0]表示蓝色、绿色、红色通道分量值均为0-31范围内的所有像素点的集合,以此类推,三维数组项lut[7][7][7]表示蓝色、绿色、红色通道分量值均为224-255范围内的所有像素点的集合。对于其他位数的rgb值,和/或不同大小的图像转换表,其包含的各个三维数组项对应的蓝色、绿色、红色通道分量值略有不同,可根据本领域公知常识推算得到。在现有技术中,所述图像转换表通常依次存储于内存中,如
[0037]
表1所示:
[0038]
lut[0][0][0]lut[0][0][1]lut[0][0][2]lut[0][0][3]lut[0][0][4]lut[0][0][5]lut[0][0][6]lut[0][0][7]lut[0][1][0]lut[0][1][1]lut[0][1][2]lut[0][1][3]lut[0][1][4]lut[0][1][5]lut[0][1][6]lut[0][1][7]lut[0][2][0]lut[0][2][1]lut[0][2][2]lut[0][2][3]lut[0][2][4]lut[0][2][5]lut[0][2][6]lut[0][2][7]lut[0][3][0]lut[0][3][1]lut[0][3][2]lut[0][3][3]lut[0][3][4]lut[0][3][5]lut[0][3][6]lut[0][3][7]lut[0][4][0]lut[0][4][1]lut[0][4][2]lut[0][4][3]lut[0][4][4]lut[0][4][5]lut[0][4][6]lut[0][4][7]lut[0][5][0]lut[0][5][1]lut[0][5][2]lut[0][5][3]lut[0][5][4]lut[0][5][5]lut[0][5][6]lut[0][5][7]lut[0][6][0]lut[0][6][1]lut[0][6][2]lut[0][6][3]lut[0][6][4]lut[0][6][5]lut[0][6][6]lut[0][6][7]lut[0][7][0]lut[0][7][1]lut[0][7][2]lut[0][7][3]lut[0][7][4]lut[0][7][5]lut[0][7][6]lut[0][7][7]
[0039]
lut[1][0][0]lut[1][0][1]lut[1][0][2]lut[1][0][3]lut[1][0][4]lut[1][0][5]lut[1][0][6]lut[1][0][7]lut[1][1][0]lut[1][1][1]lut[1][1][2]lut[1][1][3]lut[1][1][4]lut[1][1][5]lut[1][1][6]lut[1][1][7]lut[1][2][0]lut[1][2][1]lut[1][2][2]lut[1][2][3]lut[1][2][4]lut[1][2][5]lut[1][2][6]lut[1][2][7]lut[1][3][0]lut[1][3][1]lut[1][3][2]lut[1][3][3]lut[1][3][4]lut[1][3][5]lut[1][3][6]lut[1][3][7]lut[1][4][0]lut[1][4][1]lut[1][4][2]lut[1][4][3]lut[1][4][4]lut[1][4][5]lut[1][4][6]lut[1][4][7]lut[1][5][0]lut[1][5][1]lut[1][5][2]lut[1][5][3]lut[1][5][4]lut[1][5][5]lut[1][5][6]lut[1][5][7]lut[1][6][0]lut[1][6][1]lut[1][6][2]lut[1][6][3]lut[1][6][4]lut[1][6][5]lut[1][6][6]lut[1][6][7]lut[1][7][0]lut[1][7][1]lut[1][7][2]lut[1][7][3]lut[1][7][4]lut[1][7][5]lut[1][7][6]lut[1][7][7]
[0040]
……
[0041]
lut[7][0][0]lut[7][0][1]lut[7][0][2]lut[7][0][3]lut[7][0][4]lut[7][0][5]lut[7][0][6]lut[7][0][7]lut[7][1][0]lut[7][1][1]lut[7][1][2]lut[7][1][3]lut[7][1][4]lut[7][1][5]lut[7][1][6]lut[7][1][7]lut[7][2][0]lut[7][2][1]lut[7][2][2]lut[7][2][3]lut[7][2][4]lut[7][2][5]lut[7][2][6]lut[7][2][7]lut[7][3][0]lut[7][3][1]lut[7][3][2]lut[7][3][3]lut[7][3][4]lut[7][3][5]lut[7][3][6]lut[7][3][7]lut[7][4][0]lut[7][4][1]lut[7][4][2]lut[7][4][3]lut[7][4][4]lut[7][4][5]lut[7][4][6]lut[7][4][7]lut[7][5][0]lut[7][5][1]lut[7][5][2]lut[7][5][3]lut[7][5][4]lut[7][5][5]lut[7][5][6]lut[7][5][7]lut[7][6][0]lut[7][6][1]lut[7][6][2]lut[7][6][3]lut[7][6][4]lut[7][6][5]lut[7][6][6]lut[7][6][7]lut[7][7][0]lut[7][7][1]lut[7][7][2]lut[7][7][3]lut[7][7][4]lut[7][7][5]lut[7][7][6]lut[7][7][7]
[0042]
表1
[0043]
当需要采用三线性插值算法来进行色彩变换时,对于每一个像素点,首先确定一组索引值index(a,b,c),其中,a为所述像素点的蓝色通道的分量索引idx_b,b为所述像素点的绿色通道的分量索引idx_g,以及c为所述像素点的红色通道的分量索引idx_r,然后通过cpu访问所述图像转换表,将所述索引值对应的三维数组项lut[a][b][c]及其相邻的七个三维数组项lut[a][b][c 1]、lut[a][b 1][c]、lut[a][b 1][c 1]、lut[a 1][b][c]、lut[a 1][b][c 1]、lut[a 1][b 1][c]、lut[a 1][b 1][c 1]对应的查表值读取出来,最后用这八个三维数项中的值进行三线性插值算法得到转换后的蓝、绿、红三个颜色通道的分量值。因为cpu对顺序访存比较友好,因此,在这种存储方式下,需要进行如下的四次读操作才能获取这8个查表值:
[0044]
第一次读操作:读取lut[a][b][c],lut[a][b][c 1];
[0045]
第二次读操作:读取lut[a][b 1][c],lut[a][b 1][c 1];
[0046]
第三次读操作:读取lut[a 1][b][c],lut[a 1][b][c 1];以及
[0047]
第四次读操作:读取lut[a 1][b 1][c],lut[a 1][b 1][c 1]。
[0048]
上述操作为纯软件操作,当需要处理的图像或视频像素点较多时,所述方法的处理速度较慢。为了能够加快处理速度,以满足实时性需求,可以考虑减少读操作次数,以最少的读操作次数获取所需的8个查表值。基于此,发明人提供了一种图像色彩变换的加速方法,通过硬件方式,改善所述图像转换表的存储方法,进而使得三线性插值算法所需的8个数值能够通过一次读操作全部读取出来。
[0049]
下面结合实施例附图,对本发明的方案做进一步描述。
[0050]
图1示出本发明一个实施例的一种图像色彩转换的加速方法的流程示意图。如图1所示,一种图像色彩转换的加速方法,包括:
[0051]
首先,在步骤101,将图像转换表中的三维数组项分为n个数据组。将图像转换表中有相邻关系的三维数组项作为一个数据组,进而将所述图像转换表划分为n个数据组,其中,每个数据组内包含的三维数组项个数为l。所述图像转换表中包括多个三维数组项,每个三维数组项中的三个值分别为蓝、绿、红索引值,在本发明的一个实施例中,所述图像转换表中共包括k*k*k个三维数组项,即所述图像转换表将蓝、绿、红三个颜色通道分别划分为了k段,并从0开始到k-1,依次为各颜色通道段的索引值,在本发明的一个实施例中,所述k取值为8,但应当理解的是,在本发明的其他实施例中,所述k也可以为其他取值,但优选为偶数,同时,所述蓝、绿、红三个颜色通道也可以划分为不同数量的段,和/或每段中包含的点数可以相同或不同,但是优选所述蓝、绿、红三个颜色通道被平均划分为同样数量的段。图2以8*8*8的图像转换表为例,示出本发明一个实施例的图像转换表的三维化视角示意图,如图所示,其将蓝、绿、红索引值idx_b、idx_g、idx_r作为坐标轴形成坐标系,则所述图像转换表可看做离散分布于该坐标系中的多个点,则所述有相邻关系的点可以理解为在任意维度上的差值均小于等于1的两个点,对于图中的任意一个点而言,满足与其相邻关系的点共有7个,因此,在发明的一个实施例中,所述l的取值不应大于8,优选为8,也就是说,每个数据组中最多包含有8个三维数组项。为便于理解,在图2中,采用一个立方体代表一个数据组,立方体的一个顶点则为一个三维数组项对应的点;以及
[0052]
接下来,在步骤102,将所述n个数据组分为m个数据块。将按照步骤101划分得到的
n个数据组进一步分为m个数据块,并存储于不同的存储区域中,其中,所述存储区域满足:
[0053]
所述不同的存储区域被配置为可被同时读取;以及
[0054]
每个存储区域单次可读取的数据大小不小于l,基于此,在本发明的一个实施例中,采用了加装硬件存储空间的方法来达到这一要求,所述硬件存储空间例如可为静态随机存储器sram或直接读取存储器ddr等,即将所述m个数据块分别存储于m个的静态随机存储器或直接读取存储器中;
[0055]
所述m个数据块则满足:每个数据块中的各个数据组不相邻,即每个数据块中的每个数据组中的三维数组项与所述数据块中的其他数据组中的三维数组项在至少一个维度上的差值大于2。为便于理解,仍以图2所示的实施例为例进行具体描述,按照如图所示的三维化视角可以清晰地看出,所包含的三维数组项在至少一个维度上的差值大于2的两个数据组即为图中所示的不相邻的两个立方体,因此,所述m个数据块满足的条件可以理解为,每个数据块中均不包括相邻的两个立方体,根据立体几何关系可知,所述数据组至少需要分为8组,才能符合上述条件,因此,在本发明的实施例中,所述m的取值不小于8。如图2所示的实施例中,将所述数据组,即立方体分为了8组,如图中标号1至8所示。
[0056]
至此,根据位置相关性完成了图像转换表中三维数组项的存储,这就使得在获取三线性插值算法所需的八个数值时,仅通过一次读操作就可以完成。具体而言,以每个数据组包含8个三维数组项为例,所述三线性插值算法所需的八个数值可能存在以下四种情况:
[0057]
所述八个数值位于同一个数据组中,此时,仅需对一个存储区域进行一次读操作,即可一次性得到所述八个数值;
[0058]
所述八个数值分布于两个数据组中,按照如前所述的数据组的划分方式可知,所述两个数据组必然划分于不同的数据块中,因此,此时,需要对两个存储区域同时一次读操作,以得到所述八个数值;
[0059]
所述八个数值分布于四个数据组中,按照如前所述的数据组的划分方式可知,所述四个数据组必然划分于不同的数据块中,因此,此时,需要对四个存储区域同时一次读操作,以得到所述八个数值;以及
[0060]
所述八个数值分布于八个数据组中,按照如前所述的数据组的划分方式可知,所述八个数据组必然划分于不同的数据块中,因此,此时,需要对八个存储区域同时一次读操作,以得到所述八个数值;
[0061]
可见,在所有情况下,通过一次读操作,均可以找到需要的8个值,实现硬件加速。
[0062]
应当理解的是,当所述数据组中包含的三维数组项数量低于8时,则各种情况下,需要同时读取的存储区域数量可能不同,但其仍能通过一次读操作获取所需的8个值。
[0063]
基于如前所述的加速方法,图3示出本发明一个实施例的一种图像色彩转换的方法的流程示意图,如图3所示,一种图像色彩转换的方法,包括:
[0064]
首先,在步骤301,确定索引值。对于每一个像素点,根据其蓝、绿、红三个颜色通道的分量确定一组索引值。具体而言,是确定所述像素点的蓝、绿、红三个颜色通道的分量落在蓝、绿、红三个颜色通道哪个区段上,以8位rgb值的8*8*8的图像转换表为例,若所述像素点的蓝色、绿色、红色通道分量值分别为0、100、255,则所述索引值index(a,b,c)应为a=0,b=3,c=7;
[0065]
接下来,在步骤302,获取多个三维数组项。根据所述索引值,通过一次读操作在所
述存储区域中获取所需的多个三维数组项,具体而言,是指所述数值对应的三维数组项以及所述三维数组项相邻的七个三维数组项,其中,相邻的七个三维数组项是指与所述三维数组项在任意维度上的差值均小于等于1的三维数组项;以及
[0066]
最后,在步骤303,进行三线性插值。将所述三维数组项及其相邻的七个三维数组项进行三线性插值得到转换后的蓝、绿、红通道分量。
[0067]
本发明另一方面提供一种计算机设备,包括:
[0068]
多个独立的存储区域,所述多个独立的存储区域被配置为可被同时读取;
[0069]
存储器,用于存储计算机程序;以及
[0070]
处理器,用于执行所述计算机程序以实现如前所述的图像色彩转换方法的步骤。
[0071]
本发明另一方面提供一种计算机可读存储介质,其上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如前所述的图像色彩转换方法的步骤。
[0072]
本发明提供的一种图像色彩转换及其加速方法,利用转换表上各点的相关性,进行分组分块存储,进而使得在进行三线性插值时,可通过一次读操作将需要的8个值全部读取出来,实现硬件加速。相较于现有的技术,节省了三个读操作的时长。本发明提供的图像色彩转换及其加速方法使得摄像头等设备获取的视频或图像的实时色彩变换成为可能。
[0073]
尽管上文描述了本发明的各实施例,但是,应该理解,它们只是作为示例来呈现的,而不作为限制。对于相关领域的技术人员显而易见的是,可以对其做出各种组合、变型和改变而不背离本发明的精神和范围。因此,此处所公开的本发明的宽度和范围不应被上述所公开的示例性实施例所限制,而应当仅根据所附权利要求书及其等同替换来定义。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献