本发明涉及颜色空间领域,特别是涉及一种ycbcr444和ycbcr422转换方法。
背景技术:
rgb模型是目前常用的一种彩色信息表达方式,它使用红、绿、蓝三原色的亮度来定量表示颜色,图像中每个像素均由rgb三个分量构成。ycbcr颜色空间是yuv的国际标准化变种,在数字电视和图像压缩方面都有应用,其中y是指亮度分量,cb指蓝色色度分量,而cr指红色色度分量。人的肉眼对视频的y分量更敏感,因此在通过对色度分量进行子采样来减少色度分量后,肉眼将察觉不到的图像质量的变化。主要的子采样格式有ycbcr4:2:0、ycbcr4:2:2和ycbcr4:4:4,其中,4:2:0表示每4个像素有4个亮度分量,2个色度分量(yyyycbcr),仅采样奇数扫描线,是便携式视频设备(mpeg-4)以及电视会议(h.263)最常用格式;4:2:2表示每4个像素有4个亮度分量,4个色度分量(yyyycbcrcbcr),是dvd、数字电视、hdtv以及其它消费类视频设备的最常用格式;4:4:4表示全像素点阵(yyyycbcrcbcrcbcrcbcr),用于高质量视频应用、演播室以及专业视频产品。
在图像处理的过程中,通常会将rgb颜色空间转换为ycbcr4:4:4,然后利用人眼对颜色分量cb、cr不敏感的特性,将人眼相对不敏感的色彩信息进行压缩采样,通过压缩cb、cr的数据量,将ycbcr4:4:4格式转换为ycbcr4:2:2,得到相对小的文件进行播放和传输,以降低数据带宽。
常用的ycbcr4:4:4转ycbcr4:2:2的方法为取水平两点平均,然后用平均值替代原有两个像素对应的cb值或cr值。这种处理方法对摄像头拍摄的图像,人眼不会感觉有明显差异。但是当处理计算机输出的文本图像或图纸图像时,这种差异就非常明显。因为计算机输出的图像经常会出现单像素颜色线条,经过上述两点平均的转换后,就会导致单像素颜色线条变为双像素线条,出现如文字边界模糊问题。
技术实现要素:
本发明提供了一种ycbcr444和ycbcr422转换方法,解决了现有技术中将ycbcr4:4:4格式转换为ycbcr4:2:2取两点平均的做法会导致图像边界模糊的问题。
为解决上述技术问题,本发明的技术方案为:
一种ycbcr444和ycbcr422转换方法,其特征在于,包括以下步骤:
将图像分割成2*2个像素点的子块,将所述子块中四个像素点分为两组得到7种分组模式,计算各分组模式中每组像素点的y分量编码值;
计算各分组模式中所述y分量编码值与对应像素点y分量的偏差值,选取偏差值最小的分组模式确定所述子块的编码/解码模式;
根据所述编码模式对ycbcr444数据进行cb编码、cr编码,原始y分量值及编码后cbcr值得到所述子块ycbcr422值;
根据所述解码模式对ycbcr422数据进行cb解码、cr解码,原始y分量值及解码后cbcr值得到所述子块ycbcr444值。
可选的,计算各分组模式中每组像素点的y分量编码值进一步包括:所述y分量编码值为各分组模式中每组像素点的y分量均值。
可选的,计算各分组模式中所述y分量编码值与对应像素点y分量的偏差值进一步包括:所述偏差值为y分量编码值与对应像素点y分量的差值平方和。
可选的,选取偏差值最小的分组模式所述子块的编/解码模式进一步包括:在所述编码模式下子块的图像质量失真最小。
可选的,根据所述编码模式对ycbcr444数据进行cb编码进一步包括:采用均值法计算所述编码模式下每组像素点的cb编码值。
可选的,根据所述编码模式对ycbcr444数据进行cr编码进一步包括:采用均值法计算所述编码模式下每组像素点的cr编码值。
可选的,原始y分量值及编码后cbcr值得到所述子块ycbcr422值,进一步包括y分量的四个原始值及cb分量的两个编码值和cr分量的两个编码值得到转换后的ycbcr422值。
可选的,根据所述解码模式对ycbcr422数据进行cb解码进一步包括:将所述解码模式下每组像素点的cb值作为对应像素点的cb分量值。
可选的,根据所述解码模式对ycbcr422数据进行cr解码进一步包括:将所述解码模式下每组像素点的cr值作为对应像素点的cr分量值。
可选的,原始y分量值及解码后cbcr值得到所述子块ycbcr444值,进一步包括y分量的四个原始值及cb分量的四个解码值和cr分量的四个解码值得到转换后的ycbcr444值。
本发明提供的一种ycbcr444和ycbcr422转换方法,将图像分割成2*2个像素点的子块,将所述子块中四个像素点分为两组得到7种分组模式,计算各分组模式中每组像素点的y分量编码值;计算各分组模式中所述y分量编码值与对应像素点y分量的偏差值,选取偏差值最小的分组模式为所述子块的编码模式;根据所述编码模式对ycbcr444数据进行cb编码、cr编码,原始y分量值及编码后cbcr值得到所述子块的ycbcr422值;根据所述解码模式对ycbcr422数据进行cb解码、cr解码,原始y分量值及解码后的cb值、cr值得到所述子块ycbcr444值。本发明提供的ycbcr444和ycbcr422转换方法,相比传统色彩空间转换方法,考虑图像数据变化方向,针对图像变化特征,选取最佳模式做多点平均,计算ycbcr422中的cb值、cr值,相比传统转换方法,本发明转换数据和原始数据偏差更小,可以有效提升图像质量。
附图说明
图1为本发明实施例一种ycbcr444和ycbcr422转换方法的分组模式示意图。
图2为本发明实施例一种ycbcr444和ycbcr422转换方法的ycbcr444转ycbcr422流程示意图。
图3为本发明实施例一种ycbcr444和ycbcr422转换方法的ycbcr422转ycbcr444流程示意图。
具体实施方式
本发明实施例提供了一种ycbcr444和ycbcr422转换方法,相比传统简单多点平均的计算方法,依据图像数据相关性计算平均值,转换后数据和原始数据偏差更小,可以有效提升图像质量。
为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的首选实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容更加透彻全面。
除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“及/或”包括一个或多个相关的所列项目的任意的和所有的组合。
传统的ycbcr4:4:4转ycbcr4:2:2取两点平均的做法,会导致图像边界模糊,其原因简单讲就是如果图像左右相邻像素出现了比较大的跳跃,这样左右两点平均的值相对图像原始值均出现较大偏差,这样图像边界就会显得模糊。
举个例子,如表1所示,图像连续四个像素,白红白红相间,第一个与第三个为白色,第二个与第四个为红色。
表1
对应的像素rgb值、ycbcr444的值及两点平均后ycbcr422值如表2所示:
表2
ycbcr4:2:2的cb值、cr值取左右两点的平均值作为新的cb值、cr值,这样cb值均为113,cr值均为192,则四个像素均变为相同颜色,原有红白相间的条纹会变得模糊。
本发明实施例提供了一种ycbcr444和ycbcr422转换方法,包括以下步骤:
将图像分割成2*2个像素点的子块,将所述子块中的四个像素点分为两组得到7种分组模式,计算各分组模式中每组像素点的y分量编码值;
计算各分组模式中所述y分量编码值与对应像素点y分量的偏差值,选取偏差值最小的分组模式确定所述子块的编码/解码模式;
根据所述编码模式对ycbcr444数据进行cb编码、cr编码,原始y分量值及编码后cbcr值得到所述子块ycbcr422值;
根据所述解码模式对ycbcr422数据进行cb解码、cr解码,原始y分量值及解码后cbcr值得到所述子块ycbcr444值。
本发明提供的ycbcr444和ycbcr422转换方法,将ycbcr4:4:4和ycbcr4:2:2转换方法阐述如下:
传统的ycbcr4:2:2转换方法仅考虑图像水平方向相关性,对cb值、cr值做两点平均处理,实际当图像局部为垂直方向或其它方向的相关性时,则传统的转换策略就会导致图像模糊。
本发明提供的ycbcr444和ycbcr422转换方法,将图像分成2x2个像素点的小块,依据图像数据总是呈块分布的特征,将相近色块为一组,最多出现七种可能情况。按照传统取平均的做法对每一种情况分别编码,得到七个编码值;再计算各编码值与原始数据偏差,选取其中编码方式偏差最小的一组作为当前编码,即ycbcr4:2:2的转换值。传统转换方法仅固定使用了上述七种情况的一种,相对原始图像偏差不总是最小的,导致图像失真较大,本发明考虑图像按块分布的每一种情况,选取其中偏差最小的方式编码,图像失真也就最小。
本发明提供的ycbcr444和ycbcr422转换方法,使用的图像模式划分方法为:
所使用的2x2图像数据块如附图1所示,四个像素分别定义为pix0、pix1、pix2、pix3,○圆圈像素为一组具有较强相关性的像素点(所谓较强相关性,就是相邻像素值较为接近,差值较小),☆五角星像素为另一组具有较强相关性的像素点。由于图像的像素点不会孤立存在,图像的像素点总是和周边像素相关,这样最多可以划分出七种分组模式,如附图1所示。
mode1:pix0-pix1具有较强相关性,作为一组;pix2-pix3具有较强相关性,作为另一组;
mode2:pix0-pix2具有较强相关性,作为一组;pix1-pix3具有较强相关性,作为另一组;
mode3:pix0-pix3具有较强相关性,作为一组;pix1-pix2具有较强相关性,作为另一组;
mode4:pix0-pix1-pix2具有较强相关性,作为一组;pix3,作为另一组;
mode5:pix0-pix1-pix3具有较强相关性,作为一组;pix2,作为另一组;
mode6:pix1-pix2-pix3具有较强相关性,作为一组;pix0,作为另一组;
mode7:pix0-pix2-pix3具有较强相关性,作为一组;pix1,作为另一组。
在本实施例中,考虑到在将ycbcr4:4:4转换为ycbcr4:2:2的过程中,每个像素点的y分量值保持不变,在根据编码模式(mode)计算cb值、cr值时,cb分量、cr分量公用了y分量的编码模式,这样可以简化实现,编码的流程如附图2所示。
若四个像素的原数据ycbcr4:4:4的值为:
[y0cb0cr0][y1cb1cr1][y2cb2cr2][y3cb3cr3],将这四个像素的ycbcr4:4:4转换为ycbcr4:2:2格式,具体转换步骤如下:
1)按上述七种模式分组,分别计算y分量的均值。
mode1:y1_o_u=(y0+y1)/2;y1_e_u=(y2+y3)/2;
mode2:y2_o_u=(y0+y2)/2;y2_e_u=(y1+y3)/2;
mode3:y3_o_u=(y0+y3)/2;y3_e_u=(y1+y2)/2;
mode4:y4_o_u=(y0+y1+y2)/3;y4_e_u=y3;
mode5:y5_o_u=(y0+y1+y3)/3;y5_e_u=y2;
mode6:y6_o_u=(y1+y2+y3)/3;y6_e_u=y0;
mode7:y7_o_u=(y0+y2+y3)/3;y7_e_u=y1;
其中,采用分组模式modei(1<=i<=7,i为整数)时,yi_o_u表示第一组像素点的y分量均值,yi_e_u表示第二组像素点的y分量均值。
2)计算七种模式下编码数据与原始数据差值平方和。
mode1:diff_1=(y0-y1_o_u)2+(y1-y1_o_u)2+(y2-y1_e_u)2+(y3-y1_e_u)2
mode2:diff_2=(y0-y2_o_u)2+(y2-y2_o_u)2+(y1-y2_e_u)2+(y3-y2_e_u)2
mode3:diff_3=(y0-y3_o_u)2+(y3-y3_o_u)2+(y1-y3_e_u)2+(y2-y3_e_u)2
mode4:diff_4=(y0-y4_o_u)2+(y1-y4_o_u)2+(y2-y4_o_u)2+(y3-y4_e_u)2
mode5:diff_5=(y0-y5_o_u)2+(y1-y5_o_u)2+(y3-y5_o_u)2+(y2-y5_e_u)2
mode6:diff_6=(y1-y6_o_u)2+(y2-y1_o_u)2+(y3-y1_o_u)2+(y0-y4_e_u)2
mode7:diff_7=(y0-y7_o_u)2+(y2-y7_o_u)2+(y3-y7_o_u)2+(y1-y7_e_u)2
其中,diff_i(1<=i<=7,i为整数)表示采用分组模式modei时,y分量编码值与对应像素点y分量值的平方和,表示分组模式modei的y分量偏差值。3)选取2)中平方和最小的模式确定为当前2x2图像块的编码模式,用mode表示。
diff_min=min(diff_1,diff_2,diff_3,diff_4,diff_5,diff_6,diff_7);
if(diff_min==diff_1)mode=1;
elseif(diff_min==diff_2)mode=2;
elseif(diff_min==diff_3)mode=3;
elseif(diff_min==diff_4)mode=4;
elseif(diff_min==diff_5)mode=5;
elseif(diff_min==diff_6)mode=6;
elseif(diff_min==diff_7)mode=7;
4)按3)中确定的编码模式对cb编码。
if(mode==1)cb_o=(cb0+cb1)/2;cb_e=(cb2+cb3)/2;
elseif(mode==2)cb_o=(cb0+cb2)/2;cb_e=(cb1+cb3)/2;
elseif(mode==3)cb_o=(cb0+cb3)/2;cb_e=(cb1+cb2)/2;
elseif(mode==4)cb_o=(cb0+cb1+cb2)/3;cb_e=cb3;
elseif(mode==5)cb_o=(cb0+cb1+cb3)/3;cb_e=cb2;
elseif(mode==6)cb_o=(cb1+cb2+cb3)/3;cb_e=cb0;
elseif(mode==7)cb_o=(cb0+cb2+cb3)/3;cb_e=cb1;
其中,在mode编码模式下,cb_o表示第一组像素点的cb值,cb_e表示第二组像素点的cb值。
5)按3)中确定的编码模式对cr编码。
if(mode==1)cr_o=(cr0+cr1)/2;cr_e=(cr2+cr3)/2;
elseif(mode==2)cr_o=(cr0+cr2)/2;cr_e=(cr1+cr3)/2;
elseif(mode==3)cr_o=(cr0+cr3)/2;cr_e=(cr1+cr2)/2;
elseif(mode==4)cr_o=(cr0+cr1+cr2)/3;cr_e=cr3;
elseif(mode==5)cr_o=(cr0+cr1+cr3)/3;cr_e=cr2;
elseif(mode==6)cr_o=(cr1+cr2+cr3)/3;cr_e=cr0;
elseif(mode==7)cr_o=(cr0+cr2+cr3)/3;cr_e=cr1;
其中,在mode编码模式下,cr_o表示第一组像素点的cr值,cr_e表示第二组像素点的cr值。
至此编码完成,子块的2x2即四个像素的ycbcr4:2:2结果为[y0cb_o]、[y1cr_o]、[y2cb_e]、[y3cr_e]。
ycbcr422转ycbcr444的解码流程如附图3所示:
由于分量y未做编码,使用分量y按上述编码过程同样的计算出每个2x2块的模式mode,分量cbcr按此模式还原出对应ycbcr444值即可。(还原方法为传统ycbcr4:2:2转ycbcr4:4:4方法,即使用均值作为对应像素的解码值)
对原始ycbcr4:2:2数据[y0cb0]、[y1cr1]、[y2cb2]、[y3cr3],转为ycbcr4:4:4格式,步骤如下:
1)同上述ycbcr4:4:4转ycbcr4:2:2中的转换步骤1)2)3),通过y分量确定图像解码模式mode;
2)按1)中计算的解码模式,解码出cb分量,使用编码值(均值)作为实际解码值输出;
if(mode==1)
cb0_o=cb0;cb1_o=cb0;cb0_e=cb2;cb1_e=cb2;
elseif(mode==2)
cb0_o=cb0;cb1_o=cb2;cb0_e=cb0;cb1_e=cb2;
elseif(mode==3)
cb0_o=cb0;cb1_o=cb2;cb0_e=cb2;cb1_e=cb0;
elseif(mode==4)
cb0_o=cb0;cb1_o=cb0;cb0_e=cb0;cb1_e=cb2;
elseif(mode==5)
cb0_o=cb0;cb1_o=cb0;cb0_e=cb2;cb1_e=cb0;
elseif(mode==6)
cb0_o=cb2;cb1_o=cb0;cb0_e=cb0;cb1_e=cb0;
elseif(mode==7)
cb0_o=cb0;cb1_o=cb2;cb0_e=cb0;cb1_e=cb0;
其中,cb0_o表示像素点pix0的cb值,cb1_o表示像素点pix1的cb值,cb0_e表示像素点pix2的cb值,cb1_e表示像素点pix3的cb值。
3)按1)中计算的解码模式,解码出cr分量,使用编码值(均值)作为实际解码值输出;
if(mode==1)
cr0_o=cr0;cr1_o=cr0;cr0_e=cr2;cr1_e=cr2;
elseif(mode==2)
cr0_o=cr0;cr1_o=cr2;cr0_e=cr0;cr1_e=cr2;
elseif(mode==3)
cr0_o=cr0;cr1_o=cr2;cr0_e=cr2;cr1_e=cr0;
elseif(mode==4)
cr0_o=cr0;cr1_o=cr0;cr0_e=cr0;cr1_e=cr2;
elseif(mode==5)
cr0_o=cr0;cr1_o=cr0;cr0_e=cr2;cr1_e=cr0;
elseif(mode==6)
cr0_o=cr2;cr1_o=cr0;cr0_e=cr0;cr1_e=cr0;
elseif(mode==7)
cr0_o=cr0;cr1_o=cr2;cr0_e=cr0;cr1_e=cr0;
其中,cr0_o表示像素点pix0的cr值,cr1_o表示像素点pix1的cr值,cr0_e表示像素点pix2的cr值,cr1_e表示像素点pix3的cr值。
至此,解码完成,对应ycbcr4:4:4数据为:[y0cb0_ocr0_o]、[y1cb1_ocr1_o]、[y2cb0_ecr0_e]、[y3cb1_ecr1_e]。
本发明提供的ycbcr444和ycbcr422转换方法,相比传统色彩空间转换方法,考虑图像数据变化方向,针对图像变化特征,选取最佳模式做多点平均,计算ycbcr422的cbcr值,可以有效提升图像质量。
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。