多维查找表的生成方法及装置、图像缩放处理方法及装置的制造方法_3

文档序号:9418169阅读:来源:国知局
074] 后文表1示出了本发明实施例的一种多维LUT。该多维LUT的行列数是与图像缩 放处理相关的参数,这些参数比如为图像数据的位深参数、对图像数据的位深进行分段的 取值步长、缩放处理模式是放大还是缩小以及图像的缩放倍率等。
[0075] 该多维LUT的输入部分的每一行列填入的数据与图像数据的位深参数、取值步长 有关。输入部分的每一行数据对应输出部分相应行的输出值,在LUT查找表中查找与邻域 内的像素点的像素值对应的行,从而找到相应的LUT查找表输出,继而实现采用LUT查找表 实现图像的缩放处理。
[0076] 该多维LUT的输出部分表示的是邻域内的数据经过图像缩放处理后的输出结果。
[0077] 确定多维LUT的生成参数。这些参数主要是图像缩放处理时的行缩放倍率X和列 缩放倍率Y,确定取值步长T、图像数据的位深bit以及图像缩放处理时的处理模式mode ; 其中,行缩放倍率X、列缩放倍率Y与处理模式mode相对应。如果是图像放大处理,则处理 模式mode表示的是放大处理,行缩放倍率X和列缩放倍率Y可以均大于等于1。如果是图 像缩小处理,则处理模式mode表示的是缩小处理,行缩放倍率X和列缩放倍率Y可以均小 于等于1。
[0078] 举例说明,假定需要进行缩放处理的图像,其原始图像分辨率为100dpi*100dpi, 缩放处理的目标图像分辨率为100dpi*200dpi,即行缩放倍率X = 1,列缩放倍率Y = 2。
[0079] 图像数据的位深参数即图像的位分辨率,又称位深,是用来衡量每个像素储存信 息的位数,这种位分辨率决定了可以标记为多少种色彩等级的可能性,一般常见的有8位、 16位、24位或32位色彩,有时也将位分辨率称为颜色深度。所谓"位",实际上是指"2"的 平方次数,8位即是2的八次方,等于256。所以,一幅8位色彩深度的图像,所能表现的色 彩等级是256级。
[0080] 对于图像数据的位深为8bit,取值步长T = 16时,则该图像数据将被划分为 (2~8/16)+1 段,共 17 段。
[0081] 对于处理模式mode,作为举例,当mode = 0时,表示图像不进行缩放处理;当mode =1时,表示图像进行缩小处理,缩放倍率X、Y都小于等于1 ;当mode = 2时,表示图像进 行放大处理,缩放倍率X、Y都大于等于1。基于前述内容可以理解,本发明的技术方案中, 处理模式mode也可以在后续需要使用时,根据行缩放倍率X和列缩放倍率Y推导得出。
[0082] 下面就图像放大或者缩小处理进行一个简要的说明,这里的缩小放大处理更加侧 重于图像长宽尺寸不变,像素数量改变的处理;但是对于缩放之后长宽尺寸改变/像素数 量不变的处理也同样适用。
[0083] 对于图像长宽尺寸不变,像素数量改变的缩放处理,当mode = 1,即对图像进行缩 小处理时,假定原始图像分辨率为200dpi*200dpi,目标图像分辨率为100dpi*100dpi,则 行缩放倍率X = 1/2,列缩放倍率Y = 1/2。图像缩小处理的本质,即由源图像行列方向的 多个点生成目标图像的一个点。如图2所示,其中XOl、X02、X03、XlI、X12分别表示行列方 向所需映射的像素点,01表示进行缩小处理之后的目标图像数据。
[0084] 对于图像长宽尺寸不变,像素数量改变的缩放处理,当mode = 2,即对图像进行放 大处理时,假定原始图像分辨率为100dpi*100dpi,目标图像分辨率为200dpi*200dpi,则 行缩放倍率X = 2,列缩放倍率Y = 2。图像放大处理的本质,即由源图像行列方向的多个 点生成目标图像中行列是源图像一定倍数的多个点,一般需要生成新点的数量为源图像的 (X*Y)倍。如图3所示,其中X01、X02、X11、X12分别表示行列方向所需映射的像素点,011、 012、013、014、021、022、023、024、031、032、033、034、041、042、043、044 表示进行放大处 理处理之后的目标图像数据。
[0085] 在下文中,bit表示位深,D表示LUT查找表在数据总长度方向的分割数量,L表示 LUT查找表的列数,H表示LUT表的行数,m表示邻域行方向像素个数,η表示邻域列方向像 素个数。
[0086] 首先,计算图像的像素值范围,[0,(2~bit)-l]。
[0087] 然后,计算LUT查找表在数据总长度方向的分割数量:D = ((2~bit)/T)+l ;取点 个数的多少决定了缩放处理之后的图像精度,即取点个数越多,图像质量越好,但是导致需 要的LUT表越复杂。
[0088] 第三,计算LUT查找表的列数,计算表达式如下:
[0089] 当 mode = 1,即进行缩小处理,L = mXX+nXY+1 ;
[0090] 当 mode = 2,即进行放大处理,L = mXn+mXXXnXY。
[0091] 第四,计算获得最终要生成的多维LUT表的行数,计算表达式如下:
[0092] H = D~(mXn)〇
[0093] 即假定处理图像的位深bit为8,取值步长T = 32,原始图像为2*2,即m = 2, η = 2,则:
[0094] 图像处理的像素值的范围为0~255 ;
[0095] LUT查找表在数据总长度方向的分割数量D = (2~8)/32+1 = 9 ;
[0096] 当进行放大处理,也即mode = 2时,假定要将2*2的邻域扩大至4*4,则LUT表的 列数为 L = 2*2+2*2*2*2 = 4+16 = 20 ;
[0097] 当进行缩小处理,也即mode = 1,假定要将2*2的邻域缩小至1*1,则LUT表的列 数为 L = 2*2+2* (1/2) *2* (1/2) = 5 ;
[0098] LUT 表的行数为 H = 9~ (2*2)。
[0099] 举例说明,当mode = 1,即缩小处理时,如图4a和图4b所示,简单描述了缩小倍数 为2*2(行方向缩小为1/2,列方向缩小1/2)的示意图。图中根据缩小处理所需像素点个数 (4个)共建立了基于四角边形的多维映射坐标系。该坐标系纵向高度与图像bit数相关, 该坐标系纵向高度的像素值划分间隔与取值步长一致,所有不同的点均可在该坐标系中找 到相应位置,且原始像素点组成了大小不一的二维平面四角多边形。缩放处理值01即处于 该平面内。
[0100] 此外,当mode = 2,即放大处理时,如图5a和图5b所示的放大倍数为2*2 (行方 向放大2倍,列方向放大2倍)的示意图,图中根据放大处理所需像素点个数(4个)共建 立了基于四角多边形的多维映射坐标系。该坐标系纵向高度与图像bit数相关,该坐标系 纵向高度的像素值划分间隔与取值步长一致,所有不同的点均可在该坐标系中找到相应位 置,且原始像素点组成了大小不一的二维平面四角多边形。放大处理值01即处于该平面 内。
[0101] 针对放大处理,需要确定当前处理像素点,例如XOl ;其他像素点作为邻域像素 值。放大处理基于较为简单的邻域线性插值算法。
[0102] 在LUT表的初始化的过程中,一般设定初始值为所有映射索引的平均值。
[0103] 表1、多维LUT查找表基本形式:
[0104]
[0105] 表1主要示出了对图像进行缩小的LUT表组织形式(N = H)。表中输出值(0utput_ Value)的灰色区域代表对图像进行放大处理时的LUT表形式。
[0106] 表1-1、对图像进行缩小处理的LUT表举例(2*2,即当前邻域内行方向上和列方向 上的像素点均为2个):
[0107] LlN 丄UOldyddS A yJ^ rVJ 丄u/丄/ jm
[0109] 表1-2、对图像进行放大处理的LUT表举例(2*2):
[0110] CN 105139338 A 兄明书 11/17 页
[0111]
[0112] 下面以具体实例描述计算LUT查找表行列数据及输入部分的输入值(像素值)的 过程。
[0113] 假定当前邻域为2*2,即当前邻域行列方向的像素个数为m = 2, η = 2,位深bit =8,取值步长T = 256,分割数量为D,则有:
[0114] ① D = 2~8/256+1 = 2 ;
[0115] ② LUT 查找表的行数 H = 2~ (2*2) = 16 ;
[0116] 暂时不考虑LUT查找表的输出部分,则当前LUT表输入部分有16行、4列。表2示 出了填写了数值之后的LUT表的输入部分。
[0117] 表2填写数值后的LUT表的输入部分
[0118] CN 105139338 A 仇叱卞> 12/17 页
[0119]
[0120] 下面具体介绍在LUT查找输入部分的输入值的过程。
[0121] 由于数据位深bit = 8,即表示邻域内的像素由8个二进制位表示,则邻域内的像 素点的像素值的取值范围为〇~255,由于取值步长为256,则邻域内的像素点分别是0和 255,则邻域内每个像素值都有2种取值,0或255,填入LUT表输入部分如表2所示,则根据 邻域内的像素点的像素值可以查找LUT表获取对应的LUT查找表输出值,举例说明当邻域 内的像素点的像素值分别是〇、〇、〇、255,则对应的输出值应当是LUT查找表第二行对应的 输出数据。
[0122] 特别地,在使用如表2所示的LUT查找表时,当邻域内的像素点的像素值分别是0、 0、0、164,即由于图像处理精度不同,LUT表的取值步长及复杂度不同,当前邻域内的像素点 的像素值在LUT查找表中可能找不到对应的输出值,处理方法可以参考下面的举例:
[0123] ①第一种处理方法是选取LUT查找中与该像素点的像素值相邻的两行数据所对 应的输出值的平均值,作为该像素点的像素值的输出值。由于像素值〇、〇、〇、18位于LUT查 找表第一行数据〇、〇、〇、〇及第二行数据〇、〇、〇、255,则常用的第一种处理方法有选取LUT查 找表第一行数据对应的输出值和第二行数据对应的输出值的平均值作为像素值〇、〇、〇、164 对应的输出值。
[0124] ②第二种处理方法是选取LUT查找表中与该像素点的像素值距离较近的数据对 应的输出值,作为该像素点的像素值的输出值。具体地,选取与像素值〇、〇、〇、164距离较近 的LUT查找表中的数据即0、0、0、255对应的输出值作为对应的输出值。
[0125] 如图6所示,LUT查找表的计算生成主要根据如下步骤来进行。
[0126] 步骤S610,根据缩放倍率和取值步长,将LUT查找表不同行列的输入的数据组成 索引像素矩阵a,即在LUT查找表中根据缩放倍率获取一个多边形平面。
[0127] 举例说明,如表3所示的为一个2*2的LUT查找表索引像素矩阵例表。
[0128] 表3、LUT查找表索引像素矩阵例表
[0129]
[0130] 步骤S620,根据缩放倍率生成预处理矩阵b,对原始像素矩阵进行预处理;预处理 矩阵的大小主要由缩放倍率决定。
[0131] 举例说明缩放倍率为2*2 (即行缩放倍率X = 2以及列缩放倍率为Y = 2),并且 mode = 2时,所生成的预处理矩阵b为2*2 (行列方向上分别有2个像素值),如表4所示,
[0132] 表4、预处理矩阵例表
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1