色彩空间转换方法及其装置的制作方法

文档序号:7657477阅读:330来源:国知局
专利名称:色彩空间转换方法及其装置的制作方法
技术领域
本发明涉及信号处理领域,特别涉及色彩空间转换技术。
背景技术
彩色图像的表示方法有多种方式,如可以通过不同比例的红色(R)、绿色(G)和蓝色(B)组合而成,这就是著名的三基色原理,这种表示彩色图像的方法即为RGB彩色空间。又如通过不同比例的亮度(Y)、和色差信号(CR,CB)表示彩色图像,这种表示彩色图像的方法即为基于YCRCB彩色空间。
RGB彩色空间通常应用与显示设备,如显示器。YCRCB彩色空间的一个优点是由于人眼对彩色细节的分辨能力远比对亮度细节的分辨能力低,因此可以对色差信号进行子采样,以减小数字彩色图像所需要的存储容量以及降低在数据传输过程中数据流量。基于YCRCB彩色空间的优点,YCRCB彩色空间通常被应用于图像的存储。
由于对于显示设备如显示器,使用的是RGB彩色空间,而存储的彩色图像通常使用YCRCB彩色空间来表示,因此当需要显示存储的彩色图像时必需将YCRCB彩色空间表示的彩色图像转换为RGB彩色空间表示的彩色图像。
根据ITU-R BT.601标准,YCRCB彩色空间到RGB彩色空间的转换公式如式(1)所示。
YCRCB=0.2990.5870.1140.500-0.419-0.081-0.169-0.3310.500·RGB---(1)]]>在ITU-R BT.601标准规定,对于4:2:2子采样格式,量化后亮度信号Y的取值范围是16~235,只占据220个值;当亮度为16时就是黑色,为235时就是白色。量化后色差信号CR,CB的取值范围是16~240。
根据ITU-R BT.601标准,对式(1)作矩阵变换可得到RGB彩色空间到YCRCB彩色空间的转换公式,如式(2)所示。
RGB=1.16401.5961.164-0.391-0.8131.1642.0180·YCBCR+-222.912135.488-276.428---(2)]]>RGB各分量的取值范围都是0~255,实际运算得到的结果若大于255,则取值255;若小于0,则取值0。
如果Y、CR、CB的取值范围伸张到0~255、则相应的转换公式如式(3)所示。
RGB=101.4021-0.344-0.71411.7720·YCBCR+-178.755134.895-225.93---(3)]]>由于式(2)和式(3)均是矩阵乘法,传统的实现方法(现有技术一)是通过采用乘法器来实现矩阵相乘的运算的。该乘法器如图1所示,在乘法器的输入侧输入Y、CR、CB,所输入的Y、CR、CB与系数相乘得到R、G、B结果,从另一侧输出。
然而,本发明的发明人发现,上述的转换公式的矩阵中存在浮点数,需要使用浮点数乘法器,浮点数乘法器结构复杂,在专用集成电路(Application SpecifiedIntegrated Circuit,简称“ASIC”)芯片实现时面积大,且计算复杂度高导致功耗较大。
或者,也可以采用加法器实现式(2)和(3)所示的矩阵乘法。即使用移位加法器替换现有技术一中使用的乘法器。具体替换方式为对式(2)和式(3)中的浮点系数进行变换,使用等价的分数来代替,如式(2)中的1.164可等价为式(4)
1.164≈1+18+132+1256+1256---(4)]]>通过将矩阵中所有浮点数使用等价的分数来替代,如使用式(4)中等号右半部分的分数替代系数1.164,可实现乘法与移位加法的替换。
然而,本发明的发明人发现,由于在现有技术二中需要将浮点数拆分为等价的分数的和,而在这种等价的表示方法中,要使等号左右两边的相似度越高,即分数的和与浮点数匹配的精度越高,和项必然越多,移位加法的次数同样越多,计算复杂度越高,功耗越大。并且,和项多,采用并行加法实现的加法器就多,面积也就增大了。而要降低计算复杂度和加法器的面积,就需要减少和项,要减少和项,就不得不降低精度。可见,计算复杂度和精度无法两全。

发明内容
本发明实施方式要解决的主要技术问题是提供一种色彩空间转换方法及其装置,使得色彩空间转换时可以在保持较高精度的条件下降低计算复杂度。
为解决上述技术问题,本发明的实施方式提供了一种色彩空间转换方法,第一色彩空间每个色彩分量被划分为M个片段,每个片段包含至少一个比特,包含以下步骤分别将第一色彩空间各色彩分量中对应位置的片段组合成一个片段组,共得到M个片段组;分别根据每个片段组的值查表,共得到M组查表结果,每组查表结果中包括X个值,分别对应于第二色彩空间X个色彩分量;将M组查表结果中对应于第二色彩空间同一色彩分量的值相加,得到X个转换结果,分别对应于第二色彩空间X个色彩分量;其中M、X为正整数。
本发明的实施方式还提供了一种色彩空间转换装置,第一色彩空间每个色彩分量被划分为M个片段,每个片段包含至少一个比特,装置包括查找表,用于根据输入进行查表,该输入是第一色彩空间各色彩分量中对应位置的片段组合而成的片段组,输出一组查表结果,其中包括X个值,每个值分别对应于第二色彩空间X个色彩分量;共有M个片段组,每个片段组分别输入到查找表处理,共得到M组查表结果;加法器,用于将M组查表结果中对应于第二色彩空间同一色彩分量的值相加,得到X个转换结果,分别对应于第二色彩空间X个色彩分量;其中M、X为正整数。
本发明实施方式与现有技术相比,主要区别及其效果在于本发明实施方式采用查找表和加法器替代乘法器实现了色彩空间转换时所需的矩阵乘法,查找表和加法器在实现时芯片面积较小,有效地减少了因乘法器的使用而导致的芯片面积大的问题,减少了计算复杂度并降低了功耗。因为查找表是预先计算好的,在预先计算时可以使用很高的精度进行浮点乘法和加法运算,所以最后得到的查找表有较高的精度;而现有技术是实时地进行浮点乘法和加法运算的,为了在计算复杂度和精度之间达到平衡,只能用较低的精度进行浮点乘法和加法运算,因此最终结果的精度不如本发明。


图1是现有技术中色彩空间转换装置示意图;图2是根据本发明第一实施方式的色彩空间转换方法流程图;图3是根据本发明第一实施方式的色彩空间转换装置示意图;图4是根据本发明第二实施方式的色彩空间转换方法流程图;图5是根据本发明第二实施方式的色彩空间转换装置示意图;
图6是根据本发明第二实施方式的第一查找表的结构图;图7是根据本发明第二实施方式的第二查找表的结构图;图8是根据本发明第二实施方式的第三查找表的结构图;图9是根据本发明第二实施方式的第四查找表的结构图;图10是根据本发明第二实施方式的对应于分量R的查找表项的软件计算流程图;图11是根据本发明第二实施方式的对应于分量G的查找表项的软件计算流程图;图12是根据本发明第二实施方式的对应于分量B的查找表项的软件计算流程图;图13是根据本发明第二实施方式的包含两组查找表和加法器的转换装置示意图;图14是根据本发明第三实施方式的第一种色彩空间转换装置结构示意图;图15是根据本发明第三实施方式的第二种色彩空间转换装置结构示意图。
具体实施例方式
为使本发明实施方式的目的、技术方案和优点更加清楚,下面将结合附图对本发明的实施方式作进一步地详细描述。
本发明第一实施方式涉及一种色彩空间转换方法,用于将第一色彩空间转换为第二色彩空间,其中,第一色彩空间是YCRCB色彩空间,第二色彩空间是RGB色彩空间,各色彩分量的值可以是经伸张或未经伸张的值。
下面先对本实施方式的理论依据进行说明。现有技术中,根据式(2)或式(3)可以实现YCRCB色彩空间到RGB色彩空间的转换,在本实施方式中对(2)和式(3)作一些变换,以得到本实施方式的色彩空间转换公式,变化过程描述如下首先,将式(2)或(3)表示为y(n)=Σk=13Akxk(n)+C---(5)]]>其中,式(5)中的y(n)为集合{R,G,B}中的第n个元素,n=1、2、3(对应R、G、B)。
xk(n)为对应y(n)的输入变量集合{Y,CR,CB}中的第k个元素,k=1、2、3(对应Y、CR、CB)。
Ak为输入变量的第k个权重因子,其为常量。
接着,将xk(n)表示为二进制的形式,其表达如式(6)所示(由于这里的推导涉及n,可将n省略),其中,xkb为二进制形式下xk(n)中第b个位置的比特,其值仅为0或1。
xk=Σb=07xkb2b---(6)]]>之后的推导不再需要时标n。将式(6)代入(5)得到y=Σk=13AkΣb=07xkb2b+C=Σk=13Σb=07xkb·Ak2b+C]]>=Σb=07(Σk=13xkb·Ak)2b+C---(7)]]>由式(7)可以看出 为3个输入变量xk(Y、CR、CB)的第b个比特位与常量Ak的所有比特位按位与操作后作算术加操作。由此可见,式(7)可以由一个非乘法结构的运算构造出。具体地说,可以预先计算出xkb的各种组合所得的和值,存储在随机存取存储器(Random Access Memory,简称“RAM”)或只读存储器(Read Only Memory,简称“ROM”)中,或由组合逻辑实现查表功能,计算时直接查表得出计算积之和,然后作和值累加。由此整个计算操作为由加法和移位操作构成。
式(7)可以进一步变换为,y=Σb=07(Σk=13xkb·Ak)2b+C=Σb=07[(Σk=13xkb·Ak)+C255]2b---(8)]]>由此,比式(7)在硬件实现时减少加常数C所需要的加法器,式(8)中 可以预先计算出,由于人眼分辨能力允许一定的误差,本实施方式将预先计算出的浮点结果定点化构成查找表,确保实现误差仅为±1,提高转换的精度。
下面对根据式(8)实现的转换流程进行具体说明,在该流程中,YCRCB色彩空间每个色彩分量被划分为M个片段,每个片段包含一个比特,包括以下几个主要步骤(1)分别将YCRCB色彩空间各色彩分量中对应位置的片段组合成一个片段组,共得到M个片段组;(2)分别根据每个片段组的值查表,共得到M组查表结果,每组查表结果中包括3个值,分别对应于RGB色彩空间3个色彩分量;(3)根据每个片段组中的片段在YCRCB色彩空间色彩分量中的位置,对该片段组的查表结果中3个值分别进行移位;(4)将经移位处理的M组查表结果中对应于RGB色彩空间同一色彩分量的值相加,得到3个转换结果,分别对应于RGB色彩空间3个色彩分量。
为了加快转换速度,减少移位操作,本实施方式中将上述步骤4个步骤交叠进行,即将输入、查表、移位、和相加操作交叠进行,如图2所示。
具体地说,首先分别将YCRCB色彩空间各色彩分量中对应位置的片段组作为一个片段组,共得到M个片段组,本实施方式中M可以为YCRCB色彩空间各色彩分量的比特数目,这样每个片段仅包含1个比特。下面以YCRCB色彩空间各色彩分量都是8比特为例进行具体说明。
由于在本实施方式中YCRCB色彩空间各色彩分量均为8比特,可以设Y分量为a0a1a2a3a4a5a6a7,CR分量为b0b1b2b3b4b5b6b7,CB分量为c0c1c2c3c4c5c6c7,分别将Y分量、CR分量、CB分量中对应位置的片段a0、b0、c0;a1、b1、c1;……a7、b7、c7;组合成一个片段组,共得到8个片段组。本实施方式中Y、CR、CB三个分量为串行输入,如图3所示,在串行输入的过程中,三个分量每输入一个比特,即可组成一个片段组。
在步骤201中,按照由高位到低位的顺序,依次分别输入Y、CR、CB分量的一个比特,组成一个片段组。首次输入的是最高位(第7位)的比特。
接着,进入步骤202,根据步骤201中所输入的片段组的值查表,得到一组查表结果,该查表结果中包括3个值,分别对应于RGB色彩空间的3个色彩分量。
其中,该查找表包含片段组8(23)种可能的值先与系数矩阵相乘再与常数 相加的结果,即计算出所有可能的 将其结果存储在查找表中。因为查找表是预先计算好的,在预先计算时可以使用很高的精度,所以在转换的流程中去除了浮点乘加计算定点化实现而引入的精度损失,获得了较高的精度性能。本实施方式中只包含一个查找表,如图3所示,各分量串行输入后形成的8个片段组按照输入的先后依次查找该表。
接着,进入步骤203,将该片段组的查表结果中的3个值(即本轮的查表结果)分别与上一轮移位后(步骤205)的3个值相加,得到本轮的3个相加后的结果值。第一个片段组(即a7b7c7)的查表结果的3个值分别与0相加。
接着,进入步骤204,判断输入是否已结束,即当前参与相加的片段组是否为最后一个片段组,如果是则进入步骤206,将本轮的3个相加后的结果值输出,作为RGB色彩空间的3个分量;反之则进入步骤205。
在步骤205中,对本轮的3个相加后的结果值分别进行移位,分别左移一位。接着进入步骤201,进行下一轮的输入、查找、相加和移位,经本轮的步骤205移位后得到的3个结果值参与下一轮的相加步骤(步骤203),即与下一轮的查找结果中的3个值分别相加。
比如说,首次输入YCRCB色彩空间3个分量的第7比特a7、b7和c7,形成一个片段组a7b7c7,根据该片段组的值进行查表,得到的查表结果包含3个值Y7、CR7和CB7,由于首次输入,这3个值只能分别与0相加,由于输入并未结束,因此相加后的结果左移1位;接着进行下一轮的输入,输入YCRCB色彩空间3个分量的第6比特a6、b6和c6,形成一个片段组a6b6c6,根据该片段组的值进行查表,得到的查表结果包含3个值Y6、CR6和CB6,将这3个值分别与左移后的Y7、CR7和CB7相加,得到3个结果值,由于输入并未结束,因此分别将这3个结果值左移1位,并进行下一轮的输入、查找、相加和移位;下一轮输入YCRCB色彩空间3个分量的第5比特a5、b5和c5,形成一个片段组a5b5c5,根据该片段组的值进行查表,得到的查表结果包含3个值Y5、CR5和CB5,将这3个值分别与前一轮左移后的3个结果值(即左移2位的Y7与左移1位的Y6的和、左移2位的CR7与左移1位的CR6的和、左移2位的CB7与左移1位的CB6的和)相加,得到3个结果值,同样由于输入未结束,因此分别将这3个结果值左移1位,并进行下一轮的输入、查找、相加和移位,直到分别输入最后一个比特位,形成片段组a0b0c0,将片段组a0b0c0的查表结果Y5、CR5和CB5与上一轮的3个移位结果值相加,得到的结果作为RGB色彩空间的3个分量。
在本实施方式中,还可以对步骤206输出的结果进行舍入,最终得到RGB色彩空间3个色彩分量的转换结果。RGB各分量的取值范围都是0~255,对相加得到的3个转换结果进行舍入即为对相加得到的结果进行判断,若大于255,则取值255;若小于0,则取值0。
可见,本实施方式通过采用查找表和加法器替代乘法器实现了色彩空间转换时所需的矩阵乘法,由于查找表和加法器在实现时芯片面积较小,从而能够有效地减少了因乘法器的使用而导致的芯片面积大的问题,减少了计算复杂度并降低了功耗。
并且,本实施方式通过将相加和移位交叠进行,可以大大减少移位的次数,减少设备的能耗以及转换所需的时间。以上述YCRCB色彩空间各色彩分量都是8比特为例,如果先根据每个片段组中的片段在YCRCB色彩空间色彩分量中的位置,对该片段组的查表结果中3个值分别进行移位,再将移位后的结果相加,则对于8比特长度的分量,a7b7c7对应的查表结果Y7、CR7、CB7需要分别左移7次;a6b6c6对应的查表结果Y6、CR6、CB6需要分别左移6次;Y5、CR5、CB5需要分别左移5次;……,共需要进行63次左移1位的操作,而在本实施方式中,通过将相加和移位交叠进行,总共只需进行21次左移1位的操作,在降低芯片面积、减少计算复杂度的同时,大大减少移位的次数,减少设备的能耗以及转换所需的时间。
图3中,只需要一个3输入查找表(LUT)、3个加法器和3个移位器即可实现YCRCB色彩空间与RGB色彩空间的转换,适用于对面积要求要小,对速度要求不高的应用中。采用1位串行输入的缺点是需要较多执行周期且加法的次数仍旧较多,功耗仍旧较大,例如在Y、CR、CB均为8比特的情况下,需要8个时钟周期输入查表,得到8组查表结果(每组查找结果包含对应3个分量的3个值),每个分量都需要7次移位加法才能够得到最终的值。
本实施方式以YCRCB色彩空间各色彩分量均为8比特为例,对YCRCB色彩空间与RGB色彩空间的转换过程进行了说明,在实际应用中,各色彩分量也可以是其它长度,如16比特,无论比特长度为多少,均可以通过本实施方式来实现转换。
本发明第二实施方式涉及一种色彩空间转换方法,本实施方式与第一实施方式的区别在于,在第一实施方式中,对各片段组串行处理,各片段组依次查同一个表,对查表结果进行移位后再求和;由于串行处理只需要一个查找表,实现起来最为简单。而在本实施方式中,对各片段组并行处理,不同的片段组查不同的表,再对查表结果求和;并行处理使得可以在一个时钟周期内完成转换,获得较高的吞吐量。
在本实施方式中,进行转换的第一色彩空间同样是YCRCB空间,第二色彩空间同样是RGB空间,两个色彩空间各色彩分量都是8比特,两个色彩空间均有3个色彩分量。在本实施方式中,YCRCB色彩空间每个色彩分量被划分为4个片段,每个片段包2个比特。
下面先对本实施方式的理论依据进行说明。在本实施方式中需要对式(8)进行变换,得到y≈Σb=07[(Σk=13xkbxk(b+1)·Ak)+C85]2b,(b=0,2,4,6)---(9)]]>式(9)中xkbxk(b+1)为输入变量的第b位和b+1个比特位。
根据式(9)实现的具体转换流程如图4所示。在步骤401中,分别将YCRCB色彩空间各色彩分量中对应位置的片段组合成一个片段组,共得到4个片段组。
具体地说,第一片段是色彩分量的第0和第1位,由YCRCB色彩空间各色彩分量中第一片段组成的片段组1包括Y分量、CR分量、CB分量的第0和第1位(简称Y[1:0]、CR[1:0]、CB[1:0]);第二片段是色彩分量的第2和第3位,由YCRCB色彩空间各色彩分量中第二片段组成的片段组2包括Y分量、CR分量、CB分量的第2和第3位(简称Y[3:2]、CR[3:2]、CB[3:2]);第三片段是色彩分量的第4和第5位,由YCRCB色彩空间各色彩分量中第三片段组成的片段组3包括Y分量、CR分量、CB分量的第4和第5位(简称Y[5:4]、CR[5:4]、CB[5:4]);第四片段是色彩分量的第6和第7位,由YCRCB色彩空间各色彩分量中第三片段组成的片段组4包括Y分量、CR分量、CB分量的第6和第7位(简称Y[7:6]、CR[7:6]、CB[7:6]),如图5所示。
在步骤402中,4个片段组分别使用4个不同的查找表进行查表操作,得到4组查表结果,每组查表结果中包括3个值,分别对应于RGB色彩空间的3个色彩分量。
具体地说,片段组1使用输出为5比特的第一查找表;片段组2使用输出为7比特的第二查找表;片段组3使用输出为9比特的第三查找表;片段组4使用输出为11比特的第四查找表,如图5所示。
在第N查找表(N为1、2、3、4)中对应于RGB色彩空间第L(L为1或2或3)个色彩分量的查找项的输出值是 其中xkbxk(b+1)是YCRCB色彩空间第k(k为1或2或3)个色彩分量第b和b+1个比特,Ak和C是转换涉及的常量。
下面分别对各查找表进行说明。
第一查找表LUT1的结构如图6所示。
LUT1的输入为YCRCB色彩空间中Y分量、CR分量和CB分量的第1和第0个比特位,通过三个分别为16X5比特、64X5比特和16X5比特的子查找表得到查表结果lut_r0_0[4:0]、lut_g0_o[4:0]、lut_b0_o[4:0],作为R、G、B结果的第0分量输出。
根据公式(2)或(3)中与Y、CR、CB分量相乘的矩阵参数可看出,该矩阵参数中包含2个0元素,从而在三个子查找表中,一个子查找表可无需输入CR分量的第1和第0个比特位(简称CR[1:0]),仅根据Y[1:0]和CB[1:0]得到查表结果;一个子查找表(16X5比特的子查找表)可无需输入CB[1:0],仅根据Y[1:0]和CR[1:0]得到查表结果。上述两个子查找表由于只有两个输入(4比特),从而包含16个可能的结果(即为1 6X5比特的子查找表);另一个子查找表由于存在三个输入(6比特),从而包含64个可能的结果(即为64X5比特的子查找表)。上述3个子查找表的输出均为5比特。
子查找表中的各表项(即可能的结果)的计算如下。
在输入的Y、CR、CB分量未经伸张的情况下,即Y、CR、CB的取值范围未从16~240伸张到0~255的情况下,由式(2)和式(9)可得到LUT1中各子查找表的表项计算式(10)、(11)和(12)lut_r0_o[4:0]=((1.164×Y[1:0]+1.596×CR[1:0])×256+(-222.912)×25685)>>7---(10)]]>lut_g0_o[4:0]=((1.164×Y[1:0]+(-0.391)×CB[1:0]+(-0.813)×CR[1:0])×256]]>+(135.488)×25685)>>7---(11)]]>lut_b0_o[4:0]=((1.164×Y[1:0]+2.018×CB[1:0])×256+(-276.428)×25685)>>7---(12)]]>而在输入的Y、CR、CB分量的取值范围伸张到0~255的情况下,由式(3)和式(9)可得到LUT1各子查找表的表项计算式(13)、(14)和(15)lut_r0_o[4:0]=((1×Y[1:0]+1.402×CR[1:0])×256+(-178.755)×25685)>>7---(13)]]>lut_g0_o[4:0]=((1×Y[1:0]+(0.344)×CB[1:0]+(-0.714)×CR[1:0])×256]]>+(134.895)×25685)>>7---(14)]]>lut_b0_o[4:0]=((1×Y[1:0]+1.772×CB[1:0])×256+(-225.93)85)>>7---(15)]]>根据运算需要(只需要5比特参与运算),式(10)到式(15)的结果只取低5位。
第二查找表LUT2的结构如图7所示。
LUT2的输入为YCRCB色彩空间中Y分量、CR分量和CB分量的第3和第2个比特位,通过三个分别为16X7比特、64X7比特和16X7比特的子查找表得到查表结果lut_r1_0[6:0]、lut_g1_o[6:0]、lut_b1_o[6:0],作为R、G、B结果的第1分量输出。
同样,在上述三个子查找表中,一个子查找表(16X7比特的子查找表)可无需输入CR[3:2]),仅根据Y[3:2]和CB[3:2]得到查表结果;一个子查找表可无需输入CB[3:2],仅根据Y[3:2]和CR[3:2]得到查表结果。上述两个子查找表由于只有两个输入(4比特),从而包含16个可能的结果(即为16X7比特的子查找表);另一个子查找表由于存在三个输入(6比特),从而包含64个可能的结果(即为64X7比特的子查找表)。上述3个子查找表的输出均为7比特。
上述子查找表中的各表项的计算如下。
在输入的Y、CR、CB分量未经伸张的情况下,由式(2)和式(9)可得到LUT2中各子查找表的表项计算式(16)、(17)和(18)lut_r1_o[6:0]=((1.164×Y[3:2]+1.596×CR[3:2])×256+(-222.912)×25685)>>5---(16)]]>lut_g1_o[6:0]=((1.164×Y[3:2]+(-0.391)×CB[3:2]+(-0.813)×CR[3:2])×256]]>+(135.488)×25685)>>5---(17)]]>lut_b1_o[6:0]=((1.164×Y[3:2]+2.018×CB[3:2])×256+(-276.428)×25685)>>5---(18)]]>而在输入的Y、CR、CB分量的取值范围伸张到0~255的情况下,由式(3)和式(9)可得到LUT2各子查找表的表项计算式(19)、(20)和(21)lut_r1_o[6:0]=((1×Y[3:2]+1.402×CR[3:2])×256+(-178.755)×25685)>>5---(19)]]>lut_g1_o[6:0]=((1×Y[3:2]+(-0.344)×CB[3:2]+(-0.714)×CR[3:2])×256]]>+(134.895)×25685)>>5---(20)]]>lut_b1_o[6:0]=((1×Y[3:2]+1.772×CB[3:2])×256+(-225.93)×25685)>>5---(21)]]>根据运算需要(只需要7比特参与运算),式(16)到式(21)的结果只取低7位。
第三查找表LUT3的结构如图8所示。
LUT3的输入为YCRCB色彩空间中Y分量、CR分量和CB分量的第5和第4个比特位,通过三个分别为16X9比特、64X9比特和16X9比特的子查找表得到查表结果lut_r2_0[8:0]、lut_g2_o[8:0]、lut_b2_o[8:0],作为R、G、B结果的第2分量输出。
同样,在上述三个子查找表中,一个子查找表(16X9比特的子查找表)可无需输入CR[5:4]),仅根据Y[5:4]和CB[5:4]得到查表结果;一个子查找表可无需输入CB[5:4],仅根据Y[5:4]和CR[5:4]得到查表结果。上述两个子查找表由于只有两个输入(4比特),从而包含16个可能的结果(即为16X9比特的子查找表);另一个子查找表由于存在三个输入(6比特),从而包含64个可能的结果(即为64X9比特的子查找表)。上述3个子查找表的输出均为9比特。
上述子查找表中的各表项的计算如下。
在输入的Y、CR、CB分量未经伸张的情况下,由式(2)和式(9)可得到LUT3中各子查找表的表项计算式(22)、(23)和(24)lut_r2_o[8:0]=((1.164×Y[5:4]+1.596×CR[5:4])×256+(-222.912)×25685)>>3---(22)]]>lut_g2_o[8:0]=((1.164×Y[5:4]+(-0.391)×CB[5:4]+(0.813)×CR[5:4])×256]]>+(135.488)×25685)>>3---(23)]]>lut_b2_o[8:0]=((1.164×Y[5:4]+2.018×CB[5:4])×256+(-276.428)×25685)>>3---(24)]]>而在输入的Y、CR、CB分量的取值范围伸张到0~255的情况下,由式(3)和式(9)可得到LUT3各子查找表的表项计算式(25)、(26)和(27)lut_r2_o[8:0]=((1×Y[5:4]+1.402×CR[5:4])×256+(-178.755)×25685)>>3---(25)]]>
lut_g2_o[8:0]=((1×Y[5:4]+(-0.344)×CB[5:4]+(0.714)×CR[5:4])×256]]>+(134.895)×25685)>>3---(26)]]>lut_b2_o[8:0]=((1×Y[5:4]+1.722×CB[5:4])×256+(-225.93)×25685)>>3---(27)]]>根据运算需要(只需要9比特参与运算),式(22)到式(27)的结果只取低9位。
第四查找表LUT4的结构如图9所示。
LUT4的输入为YCRCB色彩空间中Y分量、CR分量和CB分量的第7和第6个比特位,通过三个分别为16X11比特、64X11比特和16X11比特的子查找表得到查表结果lut_r3_0[10:0]、lut_g3_o[10:0]、lut_b3_o[10:0],作为R、G、B结果的第3分量输出。
同样,在上述三个子查找表中,一个子查找表(16X11比特的子查找表)可无需输入CR[7:6]),仅根据Y[7:6]和CB[7:6]得到查表结果;一个子查找表可无需输入CB[7:6],仅根据Y[7:6]和CR[7:6]得到查表结果。上述两个子查找表由于只有两个输入(4比特),从而包含16个可能的结果(即为16X11比特的子查找表);另一个子查找表由于存在三个输入(6比特),从而包含64个可能的结果(即为64X11比特的子查找表)。上述3个子查找表的输出均为11比特。
上述子查找表中的各表项的计算如下。
在输入的Y、CR、CB分量未经伸张的情况下,由式(2)和式(9)可得到LUT4中各子查找表的表项计算式(28)、(29)和(30)lut_r3_o[10:0]=((1.164×Y[7:6]+1.596×CR[7:6])×256+(-222.912)×25685+2)>>1---(28)]]>
lut_g3_o[10:0]=((1.164×Y[7:6]+(-0.391)×CB[7:6]+(-0.813)×CR[7:6])×256]]>+(135.488)×25685+2)>>1---(29)]]>lut_b3_o[10:0]=((1.164×Y[7:6]+2.018×CB[7:6])×256+(-276.428)×25685+2)>>1---(30)]]>而在输入的Y、CR、CB分量的取值范围伸张到0~255的情况下,由式(3)和式(9)可得到LUT4各子查找表的表项计算式(31)、(32)和(33)lut_r3_o[10:0]=((1×Y[7:6]+1.402×CR[7:6])×256+(-178.755)×25685+2)>>1---(31)]]>lut_g3_o[10:0]=((1×Y[7:6]+(-0.344)×CB[7:6]+(-0.714)×CR[7:6])×256]]>+(134.895)×25685+2)>>1---(32)]]>lut_b3_o[10:0]=((1×Y[7:6]+1.772×CB[7:6])×256+(-225.93)×25685+2)>>1---(33)]]>根据运算需要(只需要11比特参与运算),式(28)到式(33)的结果只取低11位。
在本实施方式中,LUT1、LUT2、LUT3、LUT4的表项都是预先计算好的,也就是说式(16)到式(33)的计算过程均是使用软件实现并保存在查找表中的,软件实现流程如图10,图11和图12所示。其中,图10为对应于分量R的查找表项的软件计算流程图。图11为对应于分量G的查找表项的软件计算流程图。图12为对应于分量B的查找表项的软件计算流程图。
图中参数Ai,j(i=0,1,2;j=0,1,2)分别对应式(2)或式(3)中的常系数矩阵元素。Y、CR、CB分量未经伸张的情况下参数C1对应常系数 C2对应常系数 C3对应常系数 Y、CR、CB分量经过伸张的情况下参数C1对应常系数 C2对应常系数 C3对应常系数 LUT4中的C1、C2、C3再加上2是为了用于做4舍5入的处理。
具体地说,分量R的一个查表项的计算方式如图10所示,首先将式(2)或式(3)中的常系数矩阵的第0行第0列的值与一个可能的Y分量值两位相乘,再将该矩阵的第0行第2列的值与一个可能的CR分量两位相乘,之后,将两个乘法结果相加,并将相加结果右移8位,最后将右移后的结果与参数C1相加,将相加结果作左移运算即可得到分量R的一个查表项。
分量G的一个查表项的计算方式如图11所示,首先分别将式(2)或式(3)中的常系数矩阵的第1行第0列的值与一个可能的Y分量值两位相乘,将该矩阵的第1行第1列的值与一个可能的CB分量两位相乘,将该矩阵的第1行第2列的值与一个可能的CR分量两位相乘,之后,将三个乘法结果相加,并将相加结果右移8位,最后将右移结果与参数C2相加,将相加结果作左移运算即可得到分量G的一个查表项。
分量B的一个查表项的计算方式如图12所示,首先将式(2)或式(3)中的常系数矩阵的第2行第0列的值与一个可能的Y分量值两位相乘,再将该矩阵的第2行第1列的值与一个可能的CB分量两位相乘,之后,将两个乘法结果相加,并将相加结果右移8位,最后将右移结果与参数C3相加,将相加结果作左移运算即可得到分量B的一个查表项。
在查表结束后,接着,进入步骤403,将4组查表结果中对应于RGB色彩空间同一色彩分量的值相加,得到3个转换结果,分别对应于RGB色彩空间3个色彩分量,对3个转换结果分别进行舍入处理,取其低8位作为最终的RGB转换结果。
各分量的加法如公式(34)、(35)、(36)所示。
R=(符号位扩展的lut_r0_o+符号位扩展的lut_r1_o+符号位扩展的lut_r2_o+符号位扩展的lut_r3_o)>>1;(34)G=(符号位扩展的lut_g0_o+符号位扩展的lut_g1_o+符号位扩展的lut_g2_o+符号位扩展的lut_g3_o)>>1;(35)B=(符号位扩展的lut_b0_o+符号位扩展的lut_b1_o+符号位扩展的lut_b2_o+符号位扩展的lut_b3_o)>>1;(36)本实施方式通过对各片段组并行处理,不同的片段组查不同的表,再对查表结果求和,使得可以在一个时钟周期内完成转换,获得较高的吞吐量。另外,对于YCRCB色彩空间各色彩分量为8比特的情况,可以将每个色彩分量各分为4个片段,每个片段2比特,以并行方式处理,从而在查找表面积和加法次数之间取得较好的平衡,使查找表的面积较少、加法次数也较少,有效地降低了功耗。
并且,由于本实施方式中将转换中涉及的加性常数C归并到查表项中(如式8和式9所示),在查找表中实现,从而减少了一次加法,简化了计算。当然,在实际应用中,也可以直接根据式(7)完成该转换流程,即将常数C归并到查表项中,而通过多采用一个加法器实现该转换。
需要说明的是,由于Y、CR、CB分量存在经伸张和未经伸张两种,在本实施方式中,可以设置一组查找表和加法器,根据输入的Y、CR、CB分量的值选择对应的一组公式;可以设置两组查找表和加法器,一组用于对经伸张的输入的处理,另一组用于对未经伸张的输入的处理,用一个多路复用选择器选择输出哪一组的结果,从而可以用同一装置完成对不同类型输入的处理,如图13所示。由extend_en信号选择查表输出,当extend_en等于0时选择没有伸张的查找表LUT进行查找和输出,当extend_en等于1时选择经伸张的查找表LUT_extend进行查找和输出。
值得一提的是,本实施方式以YCRCB色彩空间各色彩分量为8比特,将每个色彩分量各分为4个片段,每个片段2比特为例,进行了具体说明,但该情况只是一个例子,本实施方式同样可以应用于YCRCB色彩空间各色彩分量为其它比特位数,或对各色彩分量进行其它划分的情况。
本实施方式中的查找表(LUT)由组合逻辑实现,在实际应用中也可以使用RAM或ROM存储查找项实现该查找表。
另外,本发明第一实施方式和第二实施方式对1位串行输入和8位串行输入(即并行输入)两种情况进行了具体说明,该两种情况仅是本发明的个别例子,在本发明的实施例中,同样可以以1到8位的任何一种串行输入为基础进行输入转换,如2位串行输入转换,即将8比特分为4组,每两个比特串行输入,各组间并行输入,等等。当然输入的位数也不一定是8位,还可以是16位等。输入后转换的方式与第一或第二实施方式相类似,在此不再赘述。
本发明第三实施方式涉及一种色彩空间转换装置。在本实施方式中,第一色彩空间每个色彩分量被划分为M个片段,每个片段包含至少一个比特。该装置包括查找表,用于根据输入进行查表,该输入是第一色彩空间各色彩分量中对应位置的片段组合而成的片段组,输出一组查表结果,该查表结果包括X个值,每个值分别对应于第二色彩空间X个色彩分量;共有M个片段组,每个片段组分别输入到对应查找表处理,共得到M组查表结果;加法单元,用于将M组查表结果中对应于第二色彩空间同一色彩分量的值相加,得到X个转换结果,分别对应于第二色彩空间X个色彩分量;其中M、X为正整数。
本实施方式采用查找表和加法单元替代乘法器实现了色彩空间转换时所需的矩阵乘法,查找表和加法单元在实现时芯片面积较小,有效地减少了因乘法器的使用而导致的芯片面积大的问题,减少了计算复杂度并降低了功耗。因为查找表是预先计算好的,所以在该装置中去除了浮点乘加计算定点化实现而引入的精度损失,获得了较高的精度性能。
该查找表由组合逻辑实现,或由RAM存储查找项实现,或由ROM存储查找项实现。
在该装置中,上述加法单元有X个,分别对应于第二色彩空间一个色彩分量的加法处理;上述查找表为一个,在不同的时钟周期依次串行地将M个片段组中的一个输入到该查找表,该查找表将查表结果中的X个值分别输出到X个加法单元;该装置还包含X个移位器,每个移位器与一个加法单元组合使用,用于对该加法单元的输出结果移位后作为该加法单元下一个时钟周期的一个输入,如图14所示。该装置可以对各片段组串行处理,各片段组依次查同一个表,对查表结果进行移位后再求和。由于只需要一个查找表,实现起来最为简单。
或者,在该装置中,上述查找表有M个,M个查找表并行地对M个片段组进行查表;上述加法单元有X个,每个加法单元中包括至少一个加法器,用于对M个查找表输出的查表结果中对应于第二色彩空间同一色彩分量的值进行相加,如图15所示。进行上述设置的装置可以对各片段组并行处理,不同的片段组查不同的表,再对查表结果求和。并行处理可以在一个时钟周期内完成转换,获得较高的吞吐量。
由于Y、CR、CB分量存在经伸张和未经伸张两种,在本实施方式中,可以在该装置中设置两组上述的查找表和加法单元,第一组查找表和加法单元用于处理经伸张的第一色彩空间各色彩分量,第二组查找表和加法单元用于处理未经伸张的第一色彩空间各色彩分量,两组查找表和加法单元从同一来源获得输入;该装置还路包含一个多路复用选择器,用于从两组查找表和加法单元中选择一组输出,从而可以用同一装置完成对不同类型输入(包括伸张和未经伸张两种输入)的处理。
综上所述,在本发明的实施方式中,采用查找表和加法器替代乘法器实现了色彩空间转换时所需的矩阵乘法,查找表和加法器在实现时芯片面积较小,有效地减少了因乘法器的使用而导致的芯片面积大的问题,减少了计算复杂度并降低了功耗。因为查找表是预先计算好的,在预先计算时可以使用很高的精度,所以在转换的流程中去除了浮点乘加计算定点化实现而引入的精度损失,获得了较高的精度性能。
将第一色彩空间各色彩分量划分为若干个片段,对应位置的片段组合成片段组,将片段组中各比特作为输入去查表。可以对各片段组串行处理,各片段组依次查同一个表,对查表结果进行移位后再求和。串行处理只需要一个查找表,实现起来最为简单。也可以对各片段组并行处理,不同的片段组查不同的表,再对查表结果求和。并行处理可以在一个时钟周期内完成转换,获得较高的吞吐量。
对于第一色彩空间各色彩分量为8比特的情况,可以将每个色彩分量各分为4个片段,每个片段2比特,以并行方式处理,从而在查找表面积和加法次数之间取得较好的平衡,使查找表的面积较少、加法次数也较少,有效地降低了功耗。
对于转换中涉及的加性常数(如实施方式中的常数C),可以在查找表中实现,从而减少了一次加法,简化了计算。
可以设置两组查找表和加法器,一组用于对经伸张的输入的处理,另一组用于对未经伸张的输入的处理,用一个多路复用选择器选择输出哪一组的结果,从而可以用同一装置完成对不同类型输入的处理。
虽然通过参照本发明的某些优选实施方式,已经对本发明进行了图示和描述,但本领域的普通技术人员应该明白,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。
权利要求
1.一种色彩空间转换方法,其特征在于,第一色彩空间每个色彩分量被划分为M个片段,每个片段包含至少一个比特,包含以下步骤分别将第一色彩空间各色彩分量中对应位置的片段组合成一个片段组,共得到M个片段组;分别根据每个片段组的值查表,共得到M组查表结果,每组查表结果中包括X个值,分别对应于第二色彩空间X个色彩分量;将M组查表结果中对应于第二色彩空间同一色彩分量的值相加,得到X个转换结果,分别对应于第二色彩空间X个色彩分量;其中M、X为正整数。
2.根据权利要求1所述的色彩空间转换方法,其特征在于,所述查表的步骤中,不同的片段组查同一个表;所述相加的步骤之前,还包含以下步骤根据每个片段组中的片段在第一色彩空间色彩分量中的位置,对该片段组的查表结果中X个值分别进行移位;所述相加的步骤中,将经移位处理的M组查表结果中对应于第二色彩空间同一色彩分量的值相加。
3.根据权利要求1所述的色彩空间转换方法,其特征在于,所述查表的步骤中,M个所述片段组分别使用M个查找表进行查表操作。
4.根据权利要求3所述的色彩空间转换方法,其特征在于,所述第一色彩空间是YCRCB空间,所述第二色彩空间是RGB空间;两个色彩空间各色彩分量都是8比特,所述X=3,所述M为4,每个片段包含2个比特,4个片段组分别使用4个不同的查找表进行所述查表操作;第一片段是色彩分量的第0和第1位,使用输出为5比特的第一查找表;第二片段是色彩分量的第2和第3位,使用输出为7比特的第二查找表;第三片段是色彩分量的第4和第5位,使用输出为9比特的第三查找表;第四片段是色彩分量的第6和第7位,使用输出为11比特的第四查找表。
5.根据权利要求4所述的色彩空间转换方法,其特征在于,所述第N查找表中对应于第二色彩空间第L个色彩分量的查找项的输出值是[(Σk=13xkbxk(b+1)·Ak)+C85],]]>其中xkbxk(b+1)是第一色彩空间第k个色彩分量第b和b+1个比特,Ak和C是转换涉及的常量,1≤L≤X,1≤N≤4。
6.根据权利要求1至5中任一项所述的色彩空间转换方法,其特征在于,所述第一色彩空间为YCRCB空间,各色彩分量的值为经伸张或未经伸张的值。
7.根据权利要求1至5中任一项所述的色彩空间转换方法,其特征在于,所述相加的步骤之后还包含以下步骤对相加得到的X个转换结果进行舍入。
8.一种色彩空间转换装置,其特征在于,第一色彩空间每个色彩分量被划分为M个片段,每个片段包含至少一个比特,所述装置包括查找表,用于根据输入进行查表,该输入是第一色彩空间各色彩分量中对应位置的片段组合而成的片段组,输出一组查表结果,该查表结果包括X个值,每个值分别对应于第二色彩空间X个色彩分量;共有M个片段组,每个片段组分别输入到所述查找表处理,共得到M组查表结果;加法单元,用于将M组查表结果中对应于第二色彩空间同一色彩分量的值相加,得到X个转换结果,分别对应于第二色彩空间X个色彩分量;其中M、X为正整数。
9.根据权利要求8所述的色彩空间转换装置,其特征在于,所述查找表由组合逻辑实现,或由随机存取存储器存储查找项实现,或由只读存储器存储查找项实现。
10.根据权利要求8所述的色彩空间转换装置,其特征在于,所述加法单元有X个,分别对应于第二色彩空间一个色彩分量的加法处理;所述查找表为一个,在不同的时钟周期依次将M个所述片段组中的一个输入到该查找表,该查找表将查表结果中的X个值分别输出到X个所述加法单元;所述装置还包含X个移位器,每个移位器与一个所述加法单元组合使用,用于对该加法单元的输出结果移位后作为该加法单元下一个时钟周期的一个输入。
11.根据权利要求8所述的色彩空间转换装置,其特征在于,所述查找表有M个,M个查找表并行地对所述M个片段组进行查表;所述加法单元有X个,每个加法单元中包括至少一个加法器,用于对M个所述查找表输出的查表结果中对应于第二色彩空间同一色彩分量的值进行相加。
12.根据权利要求8所述的色彩空间转换装置,其特征在于,所述查找表和加法单元有两组,第一组查找表和加法单元用于处理经伸张的第一色彩空间各色彩分量,第二组查找表和加法单元用于处理未经伸张的第一色彩空间各色彩分量,两组查找表和加法单元从同一来源获得输入;所述装置还包含一个多路复用选择器,用于从两组查找表和加法单元中选择一组输出。
全文摘要
本发明涉及信号处理领域,公开了一种色彩空间转换方法及其装置,使得色彩空间转换时可以在保持较高精度的条件下降低计算复杂度。本发明中,采用查找表和加法器替代乘法器实现了色彩空间转换时所需的矩阵乘法。将第一色彩空间各色彩分量划分为若干个片段,对应位置的片段组合成片段组,将片段组中各比特作为输入去查表。可以对各片段组串行处理,各片段组依次查同一个表,对查表结果进行移位后再求和。也可以对各片段组并行处理,不同的片段组查不同的表,再对查表结果求和。
文档编号H04N9/64GK101090449SQ20071012677
公开日2007年12月19日 申请日期2007年6月19日 优先权日2007年6月19日
发明者罗翔鲲, 季渊 申请人:华为技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1