一种颜色空间变换的子字并行方法技术

技术编号:8657848 阅读:194 留言:0更新日期:2013-05-02 01:51
本发明专利技术一种颜色空间变换的子字并行方法主要包括以下内容:利用计算机处理器的子字并行指令对YCbCr到RGB的颜色空间变换以及RGB到YCbCr的颜色空间变换过程进行并行优化。其主要途径是先利用子字并行指令建立查值表,然后利用查值表进行颜色空间变换。本发明专利技术通过利用计算机处理器的子字并行指令提升了颜色空间的变换效率。

【技术实现步骤摘要】

本专利技术涉及利用计算机处理器的子字并行指令对YCbCr与RGB颜色空间相互变换过程进行并行优化的方法,可应用于计算机图像处理与视频处理程序中。
技术介绍
颜色空间也称色彩模型(又称色彩空间或色彩系统)它的用途是在某些标准下用通常可接受的方式对色彩加以说明。本质上,色彩模型是坐标系统和子空间的阐述。YCbCr是DVD、摄像机、数字电视等消费类视频产品中常用的色彩编码方案。其中Y是指亮度分量,Cb指蓝色色度分量,而Cr指红色色度分量。人的肉眼对视频的Y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到图像质量的变化。主要的子采样格式有YCbCr4:2:0,YCbCr4:2:2和YCbCr4:4: 4。RGB是通过红绿蓝三原色来描述颜色的颜色空间(R = Red、G = Green、B = Blue)。它是最通用的面向硬件的彩色模型。该模型`用于彩色监视器和一大类彩色视频摄像。YCbCr与RGB之间的颜色空间变换被广泛用于计算机图像与视频编解码程序中。在通常的计算机图像与视频处理程序中,YCbCr颜色空间到RGB颜色空间的转换公式为:R = Y+1.40200 X CrG = Y-0.34414 X Cb-0.71414 X CrB = Y+1.77200 X Cb而RGB颜色空间到YCbCr颜色空间的转换公式为:Y = 0.29900 X R+0.58700 X G+0.11400 X BCb = -0.16874XR-0.33126XG+0.50000XB+CENTERJSAMPLECr = 0.50000XR-0.41869XG-0.08131 X B+CENTERJSAMPLE其中,RGB与YCbCr取值均为整数,RGB取值最小为0,将RGB取值的最大值记作MAXJSAMPLE, MAXJSAMPLE的值通常为255,将RGB取值最大值的一半记作CENTERJSAMPLE,若 MAXJSAMPLE 为奇数,则 CENTERJSAMPLE 为 MAXJSAMPLE+1 的一半,若 MAXJSAMPLE 为偶数,则 CENTERJSAMPLE 为 MAXJSAMPLE 的一半。子字并行是当今大多数处理器所支持的一种数据并行处理方式,它将多个短的数据封装进一个寄存器,然后进行并行处理,以充分利用处理器的数据通路宽度。因此,子字并行可看作一种小规模的SMD(单指令多数据)处理方式。处理器通常通过子字并行指令集来实现对子字并行的支持。如Intel处理器的MMX、SSE系列,AMD的3D Now !系列,SPARC架构处理器的VIS系列等均是用于支持子字并行处理的子字并行指令集。在子字并行中,一个字就是一个数据集。子字是包含在字中的更低精度的数据单元。由于可将同样的指令应用于一个字中的所有子字,因此原来需要若干条指令才能完成的操作,可通过一条子字并行指令来实现。例如,如果一个字长是64位,则一个子字的大小可以是8位,16位和32位。这样,一条指令可以并行处理八个8位子字,四个16位子字,或两个32位子字。由于在图像视频处理等多媒体算法中出现了大量的低精度数据并行,因此,子字并行可在图像视频处理等多媒体算法中发挥重要作用。到目前为止,利用子字并行方法对颜色空间变换进行并行优化的方法尚未见报道。
技术实现思路
本专利技术的目的在于利用处理器子字并行指令提升YCbCr与RGB颜色空间相互变换的效率。本专利技术的步骤如下:(I)YCbCr颜色空间到RGB颜色空间变换的子字并行化方法:I) YCbCr颜色空间到RGB颜色空间的变换公式为:R = Y+1.40200 X CrG = Y-0.34414 X Cb-0.71414 X Cr ①B = Y+1.77200 X Cb其中,RGB与YCbCr取值均为整数,RGB最小取值为0,RGB最大取值MAXJSAMPLE通常为255 ;将RGB最大取值MAXJSAMPLE的一半记作CENTERJSAMPLE,若MAXJSAMPLE为奇数,则 CENTERJSAMPLE 为 MAXJSAMPLE+1 的一半,若 MAXJSAMPLE 为偶数,则 CENTERJSAMPLE为 MAXJSAMPLE 的一半;依据公式①,用子字并行的方法分别建立1.40200XCr,0.34414XCb、0.71414XCr 与 L 77200XCb 的查值表,记 4 个查值表依次为 Cr_R_tab,Cb_G_tab, Cr_G_tab与Cb_B_tab,以1.40200XCr为例,在进行颜色空间变换时,不用计算1.40200XCr的值,而是直接从Cr_R_tab中取出位置为Cr+CENTERJSAMPLE的值作为1.40200X Cr的计算结果,这四个查值表的构建方法一样,以构建1.40200XCr的查值表为例,其构建方法是:(a)将1.40200乘以215后取整,记为FIX_1_40200,由于FIX_1_40200的值不超过216,将4个FIX_1_40200的值存放在一个64位的变量中,记为f ix_vec,取4个不同的Cr值放入一个64位变量中,记为Cr_vec,用处理器子字并行乘法操作计算fix_vec X Cr_vec的值,将计算结果记为fix_Cr_vec, fix_Cr_vec的字长为64位,存放4个16位的计算结果,在支持子字右移操作的处理器上,用子字右移操作将fiX_Cr_vec中的4个值右移7位;若处理器不支持子字右移操作,则用常规右移操作分别将fiX_Cr_vec中的4个值右移7位,最后将结果放置Cr_R_tab的相应位置;(b)每次取不同的Cr_VeC,即取与上次计算不同的4个Cr值,将步骤(a)不断重复,直至Cr_R_tab的所有项均计算完毕;2)在经过步骤I)之后,将一组YCbCr值转换成RGB值的方法是:将Y值加上Cr_R_tab [Cr]的值得到R,将Y值减去Cb_G_tab[Cb]与Cr_G_tab [Cr]的值得到G,将Y值加上Cb_B_tab [Cb]的值得到B ;最后将得到的RGB值限定在至MAXJSAMPLE之内,若RGB中的某个值小于O则将该值改为0,若大于MAXJSAMPLE则将值改为MAXJSAMPLE ;⑵RGB颜色空间到YCbCr颜色空间变换的子字并行化方法:I) RGB颜色空间到YCbCr颜色空间的变换公式为:Y = 0.29900 X R+0.58700 X G+0.11400 X BCb = -0.16874 X R-0.33126 X G+0.50000 X B+CENTERJSAMPLE ②Cr = 0.50000XR-0.41869XG-0.08131 X B+CENTERJSAMPLE依据公式②,用子字并行的方法,分别建立0.29900XR,0.58700XG.0.11400XB、0.16874XR、0.33126XG、0.50000XB、0.50000XR、0.41869XG、0.08131XG 的查值表,依次记为 R_Y_tab、G_Y_tab、B_Y_tab、R_Cb_tab、G_Cb_tab、B_Cb_tab、R_Cr_tab、G_Cr_tab、B_Cr_tab,与前述YCbCr颜色空间到RGB颜本文档来自技高网
...

【技术保护点】
一种颜色空间变换的子字并行方法,其特征是该方法步骤如下:(1)YCbCr颜色空间到RGB颜色空间变换的子字并行化方法:1)YCbCr颜色空间到RGB颜色空间的变换公式为:R=Y+1.40200×CrG=Y?0.34414×Cb?0.71414×Cr????①B=Y+1.77200×Cb其中,RGB与YCbCr取值均为整数,RGB最小取值为0,RGB最大取值MAXJSAMPLE通常为255;将RGB最大取值MAXJSAMPLE的一半记作CENTERJSAMPLE,若MAXJSAMPLE为奇数,则CENTERJSAMPLE为MAXJSAMPLE+1的一半,若MAXJSAMPLE为偶数,则CENTERJSAMPLE为MAXJSAMPLE的一半;依据公式①,用子字并行的方法分别建立1.40200×Cr、0.34414×Cb、0.71414×Cr与1.77200×Cb的查值表,记4个查值表依次为Cr_R_tab,Cb_G_tab,Cr_G_tab与Cb_B_tab,以1.40200×Cr为例,在进行颜色空间变换时,不用计算1.40200×Cr的值,而是直接从Cr_R_tab中取出位置为Cr+CENTERJSAMPLE的值作为1.40200×Cr的计算结果,这四个查值表的构建方法一样,以构建1.40200×Cr的查值表为例,其构建方法是:(a)将1.40200乘以215后取整,记为FIX_1_40200,由于FIX_1_40200的值不超过216,将4个FIX_1_40200的值存放在一个64位的变量中,记为fix_vec,取4个不同的Cr值放入一个64位变量中,记为Cr_vec,用处理器子字并行乘法操作计算fix_vec×Cr_vec的值,将计算结果记为fix_Cr_vec,fix_Cr_vec的字长为64位,存放4个16位的计算结果,在支持子字右移操作的处理器上,用子字右移操作将fix_Cr_vec中的4个值右移7位;若处理器不支持子字右移操作,则用常规右移操作分别将fix_Cr_vec中的4个值右移7位,最后将结果放置Cr_R_tab的相应位置;(b)每次取不同的Cr_vec,即取与上次计算不同的4个Cr值,将步骤(a)不断重复,直至Cr_R_tab的所有项均计算完毕;2)在经过步骤1)之后,将一组YCbCr值转换成RGB值的方法是:将Y值加上Cr_R_tab[Cr]的值得到R,将Y值减去Cb_G_tab[Cb]与Cr_G_tab[Cr]的值得到G,将Y值加上Cb_B_tab[Cb]的值得到B;最后将得到的RGB值限定在至MAXJSAMPLE之内,若RGB中的某个值小于0则将该值改为0,若大于MAXJSAMPLE则将值改为MAXJSAMPLE;(2)RGB颜色空间到YCbCr颜色空间变换的子字并行化方法:1)RGB颜色空间到YCbCr颜色空间的变换公式为:Y=0.29900×R+0.58700×G+0.11400×BCb=?0.16874×R?0.33126×G+0.50000×B+CENTERJSAMPLE????②Cr=0.50000×R?0.41869×G?0.08131×B+CENTERJSAMPLE依据公式②,用子字并行的方法,分别建立0.29900×R、0.58700×G、0.11400×B、0.16874×R、0.33126×G、0.50000×B、0.50000×R、0.41869×G、0.08131×G的查值表,依次记为R_Y_tab、G_Y_tab、B_Y_tab、R_Cb_tab、G_Cb_tab、B_Cb_tab、R_Cr_tab、G_Cr_tab、B_Cr_tab,与前述YCbCr颜色空间到RGB颜色空间的变换方法类似,在进行颜色空间变换时不用计算0.29900×R、0.58700×G、0.11400×B、0.16874×R、0.33126×G、0.50000×B、0.50000×R、0.41869×G、0.08131×G的值,而是从查值表中直接取出相应的值;9个查值表的构建方法一样,以构建查值表R_Y_tab为例,其构建方法是:(a)将0.29900乘以216后取整,记为FIX_29900,由于FIX_29900的值不超过216,将4个FIX_29900的值存放在一个64位的变量中,记为fix_vec,取4个不同的R值放入一个32位或64位变量中,记为R_vec,用处理器子字并行乘法操作计算fix_vec×R_vec的值,将计算结果记为fix_R_vec,fix_R_vec的字长为64位,存放4个16位的计算...

【技术特征摘要】
1.一种颜色空间变换的子字并行方法,其特征是该方法步骤如下: (1)YCbCr颜色空间到...

【专利技术属性】
技术研发人员:邹鹏吕雅帅吴玲达赵忠文王宇杨超王敏郭静
申请(专利权)人:中国人民解放军装备学院
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1