首页> 中国专利> 多维查找表的生成方法及装置、图像缩放处理方法及装置

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

摘要

本发明公开了一种多维查找表的生成方法及装置、图像缩放处理方法及装置,克服现有技术中由滤波系数等的卷积运算决定缩放效果的图像缩放技术存在着效率较低的不足。该生成方法包括:确定图像的当前邻域内的行列方向上的像素点数量、图像数据的位深、对图像数据的位深进行分段的取值步长、对图像的行列进行缩放的缩放倍率;根据行方向上的像素点数量和列方向上的像素点数量、位深、取值步长、行缩放倍率和列缩放倍率,确定LUT的维度;根据取值步长、位深以及LUT的维度,确定LUT的输入部分的像素值;计算生成LUT的输出部分的像素值。本发明降低了图形缩放处理的运算量,大大提高了图像缩放处理的速度和效率。

著录项

  • 公开/公告号CN105139338A

    专利类型发明专利

  • 公开/公告日2015-12-09

    原文格式PDF

  • 申请/专利权人 珠海奔图电子有限公司;

    申请/专利号CN201510444487.7

  • 发明设计人 马杨晓;

    申请日2015-07-24

  • 分类号G06T3/40(20060101);

  • 代理机构11372 北京聿宏知识产权代理有限公司;

  • 代理人钟日红;张文娟

  • 地址 519075 广东省珠海市香洲区珠海大道3883号

  • 入库时间 2023-12-18 12:45:22

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-08-21

    授权

    授权

  • 2016-01-06

    实质审查的生效 IPC(主分类):G06T3/40 申请日:20150724

    实质审查的生效

  • 2015-12-09

    公开

    公开

说明书

技术领域

本发明涉及数字图像处理的技术领域,尤其涉及一种图像缩放处理方法及装置,以及 用于图像缩放处理的多维LUT(查找表)的生成方法及装置。

背景技术

现有技术中,图像处理应用的非常广泛,例如扫描装置对原始画像扫描之后,要经过 一定的图像处理算法,才能得到清晰的扫描图像。常用的图像处理算法主要有最近邻域插 值、双线性插值以及双三次线性插值等。最近邻域插值是较为简单的一种插值算法,但是 放大后的图像容易出现较明显的马赛克或锯齿现象。双线性插值算法能够明显消除锯齿现 象,但会退化图像的高频部分,造成图像的模糊。双三次插值算法是双线性插值算法的改 进,但是算法比较复杂,参数运算量大。使用上述这些图像缩放算法,容易造成图像中的 物体缩放至难以辨认或扭曲的程度,图像处理整体上效果不佳。同时经过上述几种缩放算 法处理之后的图像,容易丢失源图像的文字或者线条等边缘特征信息,不利于源图像特征 信息的有效还原。

为了解决现有技术中存在的上述技术问题,一种解决方式是:利用滤波器原理实现图 像缩放处理,缩放效果由滤波系数与滤波掩膜区域相应像素的卷积运算决定,通过调节滤 波系数滤波控制每个掩膜区域效果。这种图像缩放处理技术对图像整个范围均具有良好的 跟踪特性,处理后的图像光滑、轮廓清晰,并且具有节省硬件资源等优点。

发明人在实现本发明的过程中发现,上述方案仍存在着不足:在缩放处理的计算过程 中,需要考虑多个滤波系数所进行的卷积运算。由于卷积运算过程中参数的运算量大,导 致这种方案的图像缩放处理速度较慢,整体作业效率较低。

发明内容

本发明所要解决的技术问题是为了克服现有技术中由滤波系数等的卷积运算决定缩 放效果的图像缩放技术存在着效率较低的不足。

本发明首先提供了一种用于图像缩放处理的多维查找表(LUT)的生成方法,其中, 该方法包括:确定图像的当前邻域内的行方向上的像素点数量和列方向上的像素点数量、 图像数据的位深、对图像数据的位深进行分段的取值步长、对图像的行进行缩放的行缩放 倍率和对图像的列进行缩放的列缩放倍率;根据所述行方向上的像素点数量和列方向上的 像素点数量、位深、取值步长、行缩放倍率和列缩放倍率,确定所述多维LUT的维度; 根据所述取值步长、位深以及所述的维度,确定所述多维LUT的输入部分的像素值;计 算生成所述多维LUT的输出部分的像素值。

优选地,根据所述行方向上的像素点数量和列方向上的像素点数量、位深、取值步长、 行缩放倍率和列缩放倍率,确定所述多维LUT的维度,包括:根据表达式 H=((2^bit)/T+1)^(m×n)确定所述多维LUT的行数;对于图像缩小处理,根据表达式 L=m×X+n×Y+1确定所述多维LUT的列数;对于图像放大处理,根据表达式 L=m×n+m×X×n×Y确定所述多维LUT的列数;其中,m为所述行方向上的像素点数量, n为所述列方向上的像素点数量,bit为所述位深,T为所述取值步长,X为所述行缩放 倍率,Y为列缩放倍率,H为所述多维LUT的行数,以及L为所述多维LUT的列数。

优选地,根据所述取值步长、位深以及所述多维LUT的维度,确定所述多维LUT的 输入部分的像素值,包括:根据所述位深,确定所述图像的像素值的范围;根据所述取值 步长,将所述图像的像素值的范围进行分段;根据各段的始末值确定所述多维LUT的输 入部分的每一行各列的像素值。

优选地,所述多维LUT的输入部分具有m×n列,邻域内的像素点的像素值的范围为 [0,2^bit-1],根据所述取值步长将所述图像的像素值的范围分为(2^bit)/T+1段,所述多维 LUT输入部分的每一列各行的像素值为0、T、2T、3T、……、2^bit-1-T、2^bit-1中 的一个;其中,m为所述行方向上的像素点数量,n为所述列方向上的像素点数量,bit为 所述位深,以及T为所述取值步长。

优选地,计算生成所述多维LUT的输出部分的像素值,包括:根据所述行缩放倍率、 列缩放倍率和取值步长,获取邻域数据组成的索引像素矩阵;根据所述行缩放倍率和列缩 放倍率确定预处理矩阵;对所述索引像素矩阵和预处理矩阵进行卷积运算,获取预处理参 数;根据所述预处理参数,针对所述图像当前邻域内的文本、边界或图像信息,生成相应 的输出像素值。

优选地,针对所述图像当前邻域内的文本、边界或图像信息,生成相应的输出像素值, 包括:针对所述图像当前邻域内的文本或边界信息,利用手动调节、预设表达式或者所述 索引像素矩阵中的最小值、最大值或平均值确定所述输出像素值;针对所述图像当前邻域 内的图像信息,利用手动调节、预设表达式或者所述索引像素矩阵中的平均值确定所述输 出像素值。

优选地,对于缩小处理,所述输出像素值生成单元利用如后所述的预设表达式确定所 述输出像素值:LUT_Output=p×(Max-Min)/2^(bit+1)+average;对于放大处理,所述输 出像素值生成单元利用如后所述的预设表达式确定所述输出像素值: LUT_Output=p×(Max-Min)/2^(bit+1)+邻域插值数据;其中,LUT_Output为所述输出像 素值,p为所述预处理参数,Max为所述索引像素矩阵中的最大值,Min为所述索引像素 矩阵中的最小值,average为所述索引像素矩阵中的平均值,以及bit为所述图像数据的位 深。

优选地,该方法包括:在当前邻域内的像素点的像素值在所述多维LUT中找不到对 应的输出值时,选取所述多维LUT中与所述像素点的像素值相邻的两行数据对应的输出 值的平均值作为所述像素点的像素值的输出值;或者选取所述多维LUT中与所述像素点 的像素值距离较近的数据对应的输出值作为所述像素点的像素值的输出值。

本发明还提供了一种用于图像缩放处理的多维查找表(LUT)的生成装置,其中,该 装置包括:参数确定模块,确定图像的当前邻域内的行方向上的像素点数量和列方向上的 像素点数量、图像数据的位深、对图像数据的位深进行分段的取值步长、对图像的行进行 缩放的行缩放倍率和对图像的列进行缩放的列缩放倍率;维度确定模块,根据所述行方向 上的像素点数量和列方向上的像素点数量、位深、取值步长、行缩放倍率和列缩放倍率, 确定所述多维LUT的维度;输入确定模块,根据所述取值步长、位深以及所述多维LUT 的维度,确定所述多维LUT的输入部分的像素值;计算模块,计算生成所述多维LUT的 输出部分的像素值。

优选地,所述维度确定模块包括:行数确定单元,根据表达式H=((2^bit)/T+1)^(m×n) 确定所述多维LUT的行数;列数确定单元,对于图像缩小处理,根据表达式 L=m×X+n×Y+1确定所述多维LUT的列数;对于图像放大处理,根据表达式 L=m×n+m×X×n×Y确定所述多维LUT的列数;其中,m为所述行方向上的像素点数量, n为所述列方向上的像素点数量,bit为所述位深,T为所述取值步长,X为所述行缩放 倍率,Y为列缩放倍率,H为所述多维LUT的行数,以及L为所述多维LUT的列数。

优选地,所述输入确定模块根据所述位深,确定所述图像的像素值的范围;根据所述 取值步长,将所述图像的像素值的范围进行分段;并根据各段的始末值确定所述多维LUT 的输入部分的每一行各列的像素值。

优选地,所述多维LUT的输入部分具有m×n列,邻域内的像素点的像素值的范围为 [0,2^bit-1],所述输入确定模块根据所述取值步长将所述图像的像素值的范围分为 (2^bit)/T+1段,所述多维LUT输入部分的每一列各行的像素值为0、T、2T、3T、……、 2^bit-1-T、2^bit-1中的一个;其中,m为所述行方向上的像素点数量,n为所述列方向 上的像素点数量,bit为所述位深,以及T为所述取值步长。

优选地,所述计算模块包括:索引像素矩阵获取单元,根据所述行缩放倍率、列缩放 倍率和取值步长,获取邻域数据组成的索引像素矩阵;预处理矩阵确定单元,根据所述行 缩放倍率和列缩放倍率确定预处理矩阵;预处理参数获取单元,对所述索引像素矩阵和预 处理矩阵进行卷积运算,获取预处理参数;输出像素值生成单元,根据所述预处理参数, 针对所述图像当前邻域内的文本、边界或图像信息,生成相应的输出像素值。

优选地,所述输出像素值生成单元针对所述图像当前邻域内的文本或边界信息,利用 手动调节、预设表达式或者所述索引像素矩阵中的最小值、最大值或平均值确定所述输出 像素值;针对所述图像当前邻域内的图像信息,利用手动调节、预设表达式或者所述索引 像素矩阵中的平均值确定所述输出像素值。

优选地,对于缩小处理,对于缩小处理,所述输出像素值生成单元利用 LUT_Output=p×(Max-Min)/2^(bit+1)+average这一所述预设表达式确定所述输出像素 值;对于放大处理,所述输出像素值生成单元利用LUT_Output=p×(Max-Min)/2^(bit+1)+ 邻域插值数据这一所述预设表达式确定所述输出像素值;其中,LUT_Output为所述输出 像素值,p为所述预处理参数,Max为所述索引像素矩阵中的最大值,Min为所述索引像 素矩阵中的最小值,average为所述索引像素矩阵中的平均值,以及bit为所述图像数据的 位深。

优选地,该装置包括:选取模块,在当前邻域内的像素点的像素值在所述多维LUT 中找不到对应的输出值时,选取所述多维LUT中与所述像素点的像素值相邻的两行数据 对应的输出值的平均值作为所述像素点的像素值的输出值;或者选取所述多维LUT中与 所述像素点的像素值距离较近的数据对应的输出值作为所述像素点的像素值的输出值。

本发明还提供了一种图像缩放处理方法,其中,该方法包括:根据预设的缩放倍率, 对源图像数据进行遍历,获取基于所述源图像形成的映射矩阵;将所述映射矩阵中的像素 值映射到对应的根据如上所述的方法生成的多维查找表的输入部分所在的行和列;根据所 述行和列获取对应的输出部分作为缩放处理之后的结果图像。

本发明还提供了一种图像缩放处理装置,其中,该装置包括:遍历模块,根据预设的 缩放倍率,对源图像数据进行遍历,获取基于所述源图像形成的映射矩阵;映射模块,将 所述映射矩阵中的像素值映射到对应的根据如上所述的方法生成的多维查找表的输入部 分所在的行和列;获取模块,根据所述行和列获取对应的输出部分作为缩放处理之后的结 果图像。

与现有技术相比,本发明在进行图像缩放处理时,直接应用LUT,通过在LUT中查 找与图像当前邻域内像素点的像素值对应的输出作为图像缩放处理的结果,降低了图形缩 放处理的运算量,大大提高了图像缩放处理的速度和效率。经过本发明的技术方案进行的 缩放处理之后的图像,光滑而且不会丢失特征信息,相比当前由滤波系数等的卷积运算决 定缩放效果的技术方案而言,一定程度上降低了计算复杂度,提升了图像缩放处理的速度, 提高了图像缩放处理的作业效率。

本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显 而易见,或者通过实施本发明的技术方案而了解。本发明的目的和其他优点可通过在说明 书、权利要求书以及附图中所特别指出的结构和/或流程来实现和获得。

附图说明

附图用来提供对本发明的技术方案或现有技术的进一步理解,并且构成说明书的一部 分。其中,表达本发明实施例的附图与本发明的实施例一起用于解释本发明的技术方案, 但并不构成对本发明技术方案的限制。

图1为本发明实施例的用于图像缩放处理的多维LUT的生成方法的流程示意图。

图1a为图1所示实施例中确定LUT查找表的输入部分的像素值的流程示意图。

图1b为图1所示实施例中计算生成LUT查找表的输出部分的像素值的流程示意图。

图2为本发明的实施例中图像缩小处理的原理示意图。

图3为本发明的实施例中图像放大处理的原理示意图。

图4a为本发明的实施例中用于图像缩小处理的LUT表的立体示意图。

图4b为本发明的实施例中用于图像缩小处理的LUT表的底面示意图。

图5a为本发明的实施例中用于图像放大处理的LUT表的立体示意图。

图5b为本发明的实施例中用于图像放大处理的LUT表的底面示意图。

图6为本发明的实施例中生成LUT查找表的流程示意图。

图7为本发明的实施例中图像缩小处理的流程示意图。

图8为本发明的实施例中图像放大处理的流程示意图。

图9为本发明的实施例中LUT查找表的映射示意图。

图10为本发明的实施例中预处理矩阵的举例示意图。

图11为本发明的实施例中文本或边界的像素数据的举例示意图。

图12为本发明的实施例中图像的像素数据的举例示意图。

图13为本发明的基于LUT的图像缩放处理方法的流程示意图。

图14为本发明实施例的用于图像缩放处理的多维LUT的生成装置的构造示意图。

图15为本发明实施例的图像缩放处理装置的构造示意图。

具体实施方式

以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术 手段来解决技术问题,并达成相应技术效果的实现过程能充分理解并据以实施。本发明实 施例以及实施例中的各个特征,在不相冲突前提下可以相互结合,所形成的技术方案均在 本发明的保护范围之内。

另外,附图所示出的本发明实施例的方法所包含的步骤,可以在诸如一组计算机可执 行指令的计算机系统中执行。并且,虽然本发明实施例的方法在所示的流程图中体现出了 本发明的技术方案在执行时的一定的逻辑顺序,但通常而言,该逻辑顺序仅限于通过该流 程图所示出的实施例。在本发明的另一些实施例中,本发明的技术方案的逻辑顺序也可以 以不同于附图所示的方式来实现。

如图1所示,本发明实施例的用于图像缩放处理的多维查找表(LUT)的生成方法, 主要包括如下步骤。

步骤S110,确定图像的当前邻域内的行列方向上的像素点的个数m和n、图像数据 的位深bit、对图像数据的位深进行分段的取值步长(Step)T、对图像的行进行缩放的行 缩放倍率X和对图像的列进行缩放的列缩放倍率Y。在其他的一些实施例中,也可以一并 确定对图像进行缩放的处理模式mode。对图像进行缩放的处理模式mode主要包括对图 像进行缩小处理、对图像进行放大处理以及对图像不进行缩放处理。

步骤S120,根据该行方向上的像素点数量m和列方向上的像素点数量n、位深bit、 取值步长T、行缩放倍率X和列缩放倍率Y,确定LUT的维度。

其中,LUT查找表的行数H=((2^bit)/T+1)^(m×n)。对于行缩放和列缩放的缩放比例 表示缩放方式一致时,比如行缩放比例与列缩放比例均表示缩小,或者均表示放大,则只 需要经过一次缩放处理。对于行缩放和列缩放的缩放比例表示缩放方式不一致时,比如行 缩放比例表示放大而列缩放比例表示缩小,或者行缩放比例表示缩小而列缩放比例表示放 大,则会经过两次缩放处理。

当行缩放的比例与列缩放的比例均小于等于1时,mode=1,表示对图像进行缩小处 理,LUT查找表的列数L=m×X+n×Y+1;当行缩放的比例与列缩放的比例均大于等于1 时,mode=2,表示对图像进行放大处理,LUT查找表的列数L=m×n+m×X×n×Y。行缩 放比例与列缩放比例均等于1时,mode=0,表示图像不进行缩放处理;或者,也可以认 为是对图像进行缩放处理,只不过缩放比例较为特殊。

对于行缩放倍率X=2而列缩放比例Y=1/2的处理情形,首先是在一个方向上进行缩 放而在另一个方向上不进行缩放,具体地可以先在行方向上以X=2进行放大处理,而列 方向上以Y=1保持不变,此时mode=2;在此放大处理的基础上,在行方向上以X=1保 持不变且列方向上以Y=1/2进行缩小处理,此时mode=1。对于这种情形,由于缩放处理 过程中会出现两个mode值,对应的LUT表列方向的计算方法不同,因此会产生两个LUT 表。假定源图像是行列方向上分别有2个像素点的2*2图像A,对于X=1/2及Y=2的缩 放处理,首先将图像A通过X=1/2及Y=1进行缩小处理,此时mode=1,相应生成LUT表 1,通过查表获取第一次缩放处理后的中间图像B,该中间图像B是行方向上有1个像素 点而列方向上有2个像素点的1*2图像。然后在图像B的基础,通过X=1以及Y=2进行 放大处理,此时mode=2,会相应生成LUT表2,通过查表获取第二次缩放处理后的结果 图像C。

对图像进行缩放的处理模式mode,可以在确定行缩放倍率X和列缩放倍率Y时一并 确定,也可以在后续使用时根据行缩放倍率X和列缩放倍率Y进行推导得来。比如行缩放 的比例与列缩放的比例均小于等于1,则可以对应得出mode=1;如果行缩放的比例与列 缩放的比例均大于等于1,则可以对应得出mode=2。如果行缩放和列缩放的缩放比例表 示缩放方式不一致,则也可以得出放大处理和缩小处理的两阶段中,其中一个阶段mode=1 而另一个阶段mode=2。本发明以下内容中,以确定行缩放倍率X和列缩放倍率Y时一并 确定对图像进行缩放的处理模式mode为例进行举例说明,但本领域的普通技术人员能够 理解,在确定行缩放倍率X和列缩放倍率Y时,并不确定mode;而在后续需要使用时, 再根据行缩放倍率X和列缩放倍率Y推导得出,同样也是可行的。

步骤S130,根据取值步长T、图像数据的位深bit以及所确定的LUT的维度,确定 LUT查找表的输入部分的像素值。

LUT的输入部分具有m*n列,邻域内的像素点的像素值的范围为[0,2^bit-1],则LUT 查找表输入部分的每一列各行的像素值可以是0、T、2T、3T、……、2^bit-1-T、2^bit-1 中的一个。

步骤S140,计算生成LUT查找表的输出部分的像素值。

如图1a所示,上述步骤S130,确定LUT查找表的输入部分的像素值,具体包括如 下步骤。

步骤S131,根据图像数据的位深bit,确定图像像素值的范围为[0,2^bit-1]。

步骤S132,根据对图像数据的位深进行分段的取值步长T,将图像像素值表示的范 围[0,2^bit-1]进行分段,获得LUT查找表在数据总长度方向的分段数量(或者说分割数 量),也即将图像像素值表示的范围划分为(2^bit)/T+1段,段的始末值分别是0、T、2T、 3T、……2^bit-1-T、2^bit-1。

步骤S133,根据段的始末值确定LUT的输入部分的每一行各列的像素值,LUT查找 表的输入部分的每一列各行的像素值可以为段的始末值0、T、2T、3T、……、2^bit-1-T、 2^bit-1中的一个。

如图1b所示,上述步骤S140,计算生成LUT查找表的输出部分的像素值,具体包 括如下步骤。

步骤S141,根据所确定的行缩放倍率、列缩放倍率和取值步长,获取邻域数据组成 的索引像素矩阵a。

步骤S142,根据行缩放倍率和列缩放倍率确定预处理矩阵b。

步骤S143,对矩阵a和矩阵b进行卷积运算,获取预处理参数。

步骤S144,根据预处理参数,区分图像当前邻域内的文本、边界及图像信息,生成 LUT查找表的输出部分的像素值。当前邻域内的文本或边界范围内有相近像素值的个数 比较少,本发明的实施例用最小值、最大值或平均值来确定LUT查找表的输出部分的像 素值。如果是图像部分范围内有相近像素值的个数较多,本发明的实施例采用平均值来确 定LUT查找表的输出部分的像素值。手动调节或者表达式计算来确定LUT查找表的输出 部分的像素值,对于文本、边界及图像信息则都适用。

缩小处理的处理方式通常包括最小值、最大值、平均值、利用预设表达式进行计算、 手动调节等处理方式,放大处理通常包括过渡渐变方式进行。缩小处理如图7所示,放大 处理如图8所示,其中LUT_output表示的LUT查找表的输出值,Min、Max、average分 别表示的是索引像素矩阵中的最小值、最大值和平均值,函数min(),max()和average ()分别用来计算多个输入参数的最小值、最大值和平均值。

对于图7所示缩小处理,首先确定矩阵a(如步骤S710所示)和矩阵b(如步骤S720 所示),然后确定预处理参数p(如步骤S730所示)。然后再根据文本、边界及图像区 域的不同,确定处理方式(如步骤S740所示)。对于缩小处理,将最小值、最大值、平 均值或者手动调节的值确定为LUT表的输出值LUT_Output,或者根据如下表达式计算 LUT表的输出值LUT_Output(如步骤S750所示):

LUT_Output=p×(Max-Min)/2^(bit+1)+average式(1)

对于图8所示放大处理,首先确定矩阵a(如步骤S810所示)和矩阵b(如步骤S820 所示),然后确定预处理参数p(如步骤S830所示)。然后再根据文本、边界及图像区 域的不同,采用如下表达式计算LUT表的输出值LUT_Output(如步骤S840所示):

LUT_Output=p×(Max-Min)/2^(bit+1)+邻域插值数据式(2)

本发明的实施例先根据预处理参数区分图像当前邻域内的文本、边界及图像信息,并 对邻域内的文本、边界及图像区域进行不同地处理,相对于现有技术中对图像当前邻域进 行相同的处理而言,能够保证经过图像缩放处理后的图像光滑、特征信息不丢失。

本发明的实施例所采用的LUT查找表输出值的计算方法,相较于现有技术中基于多 个滤波系数进行计算的方法,大大降低了运算的复杂度,节约了运算开销,提高了处理效 率。本发明的实施例中,计算LUT查找表输出值时使用的方法,适用于多种调试方式(手 动和表达式计算等),且应用原理简单,方便理解和使用,降低了实现难度和使用难度。

后文表1示出了本发明实施例的一种多维LUT。该多维LUT的行列数是与图像缩放 处理相关的参数,这些参数比如为图像数据的位深参数、对图像数据的位深进行分段的取 值步长、缩放处理模式是放大还是缩小以及图像的缩放倍率等。

该多维LUT的输入部分的每一行列填入的数据与图像数据的位深参数、取值步长有 关。输入部分的每一行数据对应输出部分相应行的输出值,在LUT查找表中查找与邻域 内的像素点的像素值对应的行,从而找到相应的LUT查找表输出,继而实现采用LUT查 找表实现图像的缩放处理。

该多维LUT的输出部分表示的是邻域内的数据经过图像缩放处理后的输出结果。

确定多维LUT的生成参数。这些参数主要是图像缩放处理时的行缩放倍率X和列缩 放倍率Y,确定取值步长T、图像数据的位深bit以及图像缩放处理时的处理模式mode; 其中,行缩放倍率X、列缩放倍率Y与处理模式mode相对应。如果是图像放大处理,则 处理模式mode表示的是放大处理,行缩放倍率X和列缩放倍率Y可以均大于等于1。如 果是图像缩小处理,则处理模式mode表示的是缩小处理,行缩放倍率X和列缩放倍率Y 可以均小于等于1。

举例说明,假定需要进行缩放处理的图像,其原始图像分辨率为100dpi*100dpi,缩 放处理的目标图像分辨率为100dpi*200dpi,即行缩放倍率X=1,列缩放倍率Y=2。

图像数据的位深参数即图像的位分辨率,又称位深,是用来衡量每个像素储存信息的 位数,这种位分辨率决定了可以标记为多少种色彩等级的可能性,一般常见的有8位、16 位、24位或32位色彩,有时也将位分辨率称为颜色深度。所谓“位”,实际上是指“2”的 平方次数,8位即是2的八次方,等于256。所以,一幅8位色彩深度的图像,所能表现 的色彩等级是256级。

对于图像数据的位深为8bit,取值步长T=16时,则该图像数据将被划分为(2^8/16) +1段,共17段。

对于处理模式mode,作为举例,当mode=0时,表示图像不进行缩放处理;当mode=1 时,表示图像进行缩小处理,缩放倍率X、Y都小于等于1;当mode=2时,表示图像进 行放大处理,缩放倍率X、Y都大于等于1。基于前述内容可以理解,本发明的技术方案 中,处理模式mode也可以在后续需要使用时,根据行缩放倍率X和列缩放倍率Y推导得 出。

下面就图像放大或者缩小处理进行一个简要的说明,这里的缩小放大处理更加侧重于 图像长宽尺寸不变,像素数量改变的处理;但是对于缩放之后长宽尺寸改变/像素数量不 变的处理也同样适用。

对于图像长宽尺寸不变,像素数量改变的缩放处理,当mode=1,即对图像进行缩小 处理时,假定原始图像分辨率为200dpi*200dpi,目标图像分辨率为100dpi*100dpi,则行 缩放倍率X=1/2,列缩放倍率Y=1/2。图像缩小处理的本质,即由源图像行列方向的多个 点生成目标图像的一个点。如图2所示,其中X01、X02、X03、X11、X12分别表示行 列方向所需映射的像素点,O1表示进行缩小处理之后的目标图像数据。

对于图像长宽尺寸不变,像素数量改变的缩放处理,当mode=2,即对图像进行放大 处理时,假定原始图像分辨率为100dpi*100dpi,目标图像分辨率为200dpi*200dpi,则行 缩放倍率X=2,列缩放倍率Y=2。图像放大处理的本质,即由源图像行列方向的多个点 生成目标图像中行列是源图像一定倍数的多个点,一般需要生成新点的数量为源图像的 (X*Y)倍。如图3所示,其中X01、X02、X11、X12分别表示行列方向所需映射的像 素点,O11、O12、O13、O14、O21、O22、O23、O24、O31、O32、O33、O34、O41、 O42、O43、O44表示进行放大处理处理之后的目标图像数据。

在下文中,bit表示位深,D表示LUT查找表在数据总长度方向的分割数量,L表示 LUT查找表的列数,H表示LUT表的行数,m表示邻域行方向像素个数,n表示邻域列 方向像素个数。

首先,计算图像的像素值范围,[0,(2^bit)-1]。

然后,计算LUT查找表在数据总长度方向的分割数量:D=((2^bit)/T)+1;取点个 数的多少决定了缩放处理之后的图像精度,即取点个数越多,图像质量越好,但是导致需 要的LUT表越复杂。

第三,计算LUT查找表的列数,计算表达式如下:

当mode=1,即进行缩小处理,L=m×X+n×Y+1;

当mode=2,即进行放大处理,L=m×n+m×X×n×Y。

第四,计算获得最终要生成的多维LUT表的行数,计算表达式如下:

H=D^(m×n)。

即假定处理图像的位深bit为8,取值步长T=32,原始图像为2*2,即m=2,n=2, 则:

图像处理的像素值的范围为0~255;

LUT查找表在数据总长度方向的分割数量D=(2^8)/32+1=9;

当进行放大处理,也即mode=2时,假定要将2*2的邻域扩大至4*4,则LUT表的列 数为L=2*2+2*2*2*2=4+16=20;

当进行缩小处理,也即mode=1,假定要将2*2的邻域缩小至1*1,则LUT表的列数 为L=2*2+2*(1/2)*2*(1/2)=5;

LUT表的行数为H=9^(2*2)。

举例说明,当mode=1,即缩小处理时,如图4a和图4b所示,简单描述了缩小倍数 为2*2(行方向缩小为1/2,列方向缩小1/2)的示意图。图中根据缩小处理所需像素点个 数(4个)共建立了基于四角边形的多维映射坐标系。该坐标系纵向高度与图像bit数相 关,该坐标系纵向高度的像素值划分间隔与取值步长一致,所有不同的点均可在该坐标系 中找到相应位置,且原始像素点组成了大小不一的二维平面四角多边形。缩放处理值O1 即处于该平面内。

此外,当mode=2,即放大处理时,如图5a和图5b所示的放大倍数为2*2(行方向 放大2倍,列方向放大2倍)的示意图,图中根据放大处理所需像素点个数(4个)共建 立了基于四角多边形的多维映射坐标系。该坐标系纵向高度与图像bit数相关,该坐标系 纵向高度的像素值划分间隔与取值步长一致,所有不同的点均可在该坐标系中找到相应位 置,且原始像素点组成了大小不一的二维平面四角多边形。放大处理值O1即处于该平面 内。

针对放大处理,需要确定当前处理像素点,例如X01;其他像素点作为邻域像素值。 放大处理基于较为简单的邻域线性插值算法。

在LUT表的初始化的过程中,一般设定初始值为所有映射索引的平均值。

表1、多维LUT查找表基本形式:

表1主要示出了对图像进行缩小的LUT表组织形式(N=H)。表中输出值 (Output_Va1ue)的灰色区域代表对图像进行放大处理时的LUT表形式。

表1-1、对图像进行缩小处理的LUT表举例(2*2,即当前邻域内行方向上和列方向 上的像素点均为2个):

表1-2、对图像进行放大处理的LUT表举例(2*2):

下面以具体实例描述计算LUT查找表行列数据及输入部分的输入值(像素值)的过 程。

假定当前邻域为2*2,即当前邻域行列方向的像素个数为m=2,n=2,位深bit=8, 取值步长T=256,分割数量为D,则有:

①D=2^8/256+1=2;

②LUT查找表的行数H=2^(2*2)=16;

暂时不考虑LUT查找表的输出部分,则当前LUT表输入部分有16行、4列。表2 示出了填写了数值之后的LUT表的输入部分。

表2填写数值后的LUT表的输入部分

下面具体介绍在LUT查找输入部分的输入值的过程。

由于数据位深bit=8,即表示邻域内的像素由8个二进制位表示,则邻域内的像素点 的像素值的取值范围为0~255,由于取值步长为256,则邻域内的像素点分别是0和255, 则邻域内每个像素值都有2种取值,0或255,填入LUT表输入部分如表2所示,则根据 邻域内的像素点的像素值可以查找LUT表获取对应的LUT查找表输出值,举例说明当邻 域内的像素点的像素值分别是0、0、0、255,则对应的输出值应当是LUT查找表第二行 对应的输出数据。

特别地,在使用如表2所示的LUT查找表时,当邻域内的像素点的像素值分别是0、 0、0、164,即由于图像处理精度不同,LUT表的取值步长及复杂度不同,当前邻域内的 像素点的像素值在LUT查找表中可能找不到对应的输出值,处理方法可以参考下面的举 例:

①第一种处理方法是选取LUT查找中与该像素点的像素值相邻的两行数据所对应的 输出值的平均值,作为该像素点的像素值的输出值。由于像素值0、0、0、18位于LUT 查找表第一行数据0、0、0、0及第二行数据0、0、0、255,则常用的第一种处理方法有 选取LUT查找表第一行数据对应的输出值和第二行数据对应的输出值的平均值作为像素 值0、0、0、164对应的输出值。

②第二种处理方法是选取LUT查找表中与该像素点的像素值距离较近的数据对应的 输出值,作为该像素点的像素值的输出值。具体地,选取与像素值0、0、0、164距离较 近的LUT查找表中的数据即0、0、0、255对应的输出值作为对应的输出值。

如图6所示,LUT查找表的计算生成主要根据如下步骤来进行。

步骤S610,根据缩放倍率和取值步长,将LUT查找表不同行列的输入的数据组成索 引像素矩阵a,即在LUT查找表中根据缩放倍率获取一个多边形平面。

举例说明,如表3所示的为一个2*2的LUT查找表索引像素矩阵例表。

表3、LUT查找表索引像素矩阵例表

a[0][1] a[0][2] a[1][1] a[1][2]

步骤S620,根据缩放倍率生成预处理矩阵b,对原始像素矩阵进行预处理;预处理 矩阵的大小主要由缩放倍率决定。

举例说明缩放倍率为2*2(即行缩放倍率X=2以及列缩放倍率为Y=2),并且mode =2时,所生成的预处理矩阵b为2*2(行列方向上分别有2个像素值),如表4所示,

表4、预处理矩阵例表

b[0][1] b[0][2] b[1][1] b[1][2]

其中预处理矩阵中的值,例如表4所示的b[0][1]、b[0][2]、b[1][1]和b[1][2],是由具 体的情况来进行定义的,目的是为了辅助判断源图像邻域部分的文本、边界及图像信息, 根据不同特征信息的实际数据采用不同的预处理矩阵,可以用来检测邻域像素属性(边界、 文字或者图像)及相关信息(黑点及边界方向)。

假定预处理矩阵为2*2,预处理矩阵举例如图10所示,即要进行左边界检测时, b[0][1]、b[0][2]、b[1][1]、b[1][2]对应的值分别是-1、1、-1、1,其他部分的检测原理类似, 这里不再冗述。

步骤S630,根据如下表达式计算当前索引像素矩阵的预处理参数p:

p=a[0][1]*b[0][1]+a[0][2]*b[0][2]+a[1][1]*b[1][1]+a[1][2]*b[1][2]

p参数包含了当前区域的特征信息,即源图像当前邻域内的文本、边界或图像信息, 其中具体的区分方法如下:

1、边界、文本区域主要特征:

(1)当前区域与周围邻域像素的像素差值存在较明显差异;

(2)其内容范围内具有相近像素值的像素点个数较小。

2、图像当前区域的特征正好与边界或文本区域相反,即:

(1)其与周围邻域像素的像素差值无明显差异;

(2)其内容范围内具有相近像素值的像素点个数较多。

基于上述特征分析,可以通过设定不同的预处理矩阵及确定方式来进行特征信息的提 取,防止当前区域在进行缩放时丢失。相关示例数据主要有:在这里假定图像数据的位深 bit=8,则灰阶为0到255,0代表黑点,255代表白点。以2*2邻域为例,文本或边界的 像素数据举例如图11所示。以2*2邻域为例,图像的像素数据举例如图12所示。

步骤S640,根据不同的p取值,采用不同模式生成对应的输出像素值。其中,生成 输出像素值所采用的模式,可以是根据表达式进行计算,也可以是使用手动修改的方式来 进行。

下面以缩放倍率为3*2为例对图像放大处理和图像缩小处理进行说明。

当mode=1时,对图像进行缩小处理,具体的处理方式有:

⑴最小值处理方式:

LUT_output=min(a[0][1],a[0][2],a[0][3],a[1][1],a[1][2],a[1][3])。

⑵表达式计算处理方式:

LUT_output=((p*(Max-Min))/2^(bit+1))+average。

其中最小值的计算:

Min=min(a[0][1],a[0][2],a[0][3],a[1][1],a[1][2],a[1][3])。

最大值的计算:

Max=max(a[0][1],a[0][2],a[0][3],a[1][1],a[1][2],a[1][3])。

平均值的计算:

Average=average(a[0][1],a[0][2],a[0][3],a[1][1],a[1][2],a[1][3])。

⑶手动调节处理方式:

手动调节可以直接对LUT表的输出值LUT_output进行调试,调试范围为[0~ (2^bit-1)];

此外,放大处理使用计算表达式如下:

首先根据放大倍率计算当前数据的多个插值数据,设为d[i][j],插值数据计算方式使 用较为简单的邻域线性插值计算方式。

根据计算出来的p,对插值数据进行优化,使其保持图像当前像素点的特征信息,计 算表达式如下:

LUT_Output(i,j)=p×(Max-Min)/2^(bit+1)+d[i,j]

其中最小值的计算:

Min=min(a[0][1],a[0][2],a[0][3],a[1][1],a[1][2],a[1][3])

最大值的计算:

Max=max(a[0][1],a[0][2],a[0][3],a[1][1],a[1][2],a[1][3])

其中i,j表示放大处理之后若干填补数据在目标图像中的位置索引值

由此可知,在LUT表生成过程中,使用的算法适用于多种调试方式(手动和表达式 计算等),且应用原理简单,方便理解及使用。除此之外,使用本发明可以根据包含当前 区域的特征信息即源图像当前邻域内的文本、边界或图像信息的参数的数值,来对源图像 不同区域进行相应的处理,相对于现有技术中对图像当前邻域进行相同的缩放处理而言, 大大提高了图像处理的质量。

以下详细介绍如何利用本发明的LUT查找表进行图像缩放处理。

如图13所示,本发明的基于LUT的图像缩放处理方法,主要包括如下步骤。

步骤S13a,根据预设的缩放倍率,对源图像数据进行遍历,获取基于源图像中的数 据所形成的LUT表的映射矩阵a。

其中,源图像就是当前邻域的像素。举例说明,当前邻域为2*2,即行列方向上分别 有2个像素点,假定行方向上为e1和e2、列方向上为e3和e4,则LUT表映射矩阵a中 的数据a[0][1]=e1,a[0][2]=e2a[1][1]=e3,a[1][2]=e4。在使用LUT查找表查找输出值时,对 应的LUT查找表输入部分就分别是e1、e2、e3和e4。

步骤S13b,将当前映射矩阵a中的像素值映射至与其对应的多维LUT表的输入部分 所在的行和列,该多维LUT表根据前述生成方法而生成。

此处的映射矩阵的像素值,即为当前邻域内的像素点的像素值。比如说当前邻域内的 像素值分别是0、0、0、255,则在相应的LUT表中查找输入部分的数据分别是0、0、0、 255对应的哪一行,从而找到对应的输出值。

步骤S13c,根据该输入部分所在的行和列,获取对应的输出部分作为缩放处理结果, 获得缩放处理之后的结果图像。

由于最终LUT查找表的输出结果直接是图像进行缩放处理后的像素值,因此可以有 效解决缩放处理插值计算及滤波处理速度较慢的问题。

LUT缩放表映射原理如图9所示,假定处理的源图像为2*3,mode=1,即进行缩小 处理。

表5、2*3源图像举例

X01 X02 X03 X11 X12 X13

如表5所示,则图11中,c[1][2]、c[0][2]、c[0][3]、c[1][1]、c[1][2]、c[1][3]分别表 示的是X01、X02、X03、X11、X12、X13。

如图14所示,本发明的用于图像缩放处理的多维查找表(LUT)的生成装置,主要 包括有参数确定模块141、维度确定模块142、输入确定模块143以及计算模块144。

参数确定模块141确定图像的当前邻域内的行方向上的像素点数量m和列方向上的 像素点数量n、图像数据的位深bit、对图像数据的位深进行分段的取值步长T、对图像的 行进行缩放的行缩放倍率X和对图像的列进行缩放的列缩放倍率Y。

维度确定模块142与参数确定模块141相连,根据所述行方向上的像素点数量m和 列方向上的像素点数量n、位深bit、取值步长T、行缩放倍率X和列缩放倍率Y,确定 LUT的维度。

输入确定模块143与参数确定模块141及维度确定模块142相连,根据所述取值步长 T、位深bit以及所述多维LUT的维度,确定所述多维LUT的输入部分的像素值。

计算模块144与输入确定模块143相连,计算生成所述多维LUT的输出部分的像素 值。

如图14所示,维度确定模块142包括均与参数确定模块141及输入确定模块143相 连的行数确定单元142a和列数确定单元142b。行数确定单元142a根据表达式 H=((2^bit)/T+1)^(m×n)确定所述多维LUT的行数。列数确定单元142b,对于图像缩小 处理,根据表达式L=m×X+n×Y+1确定所述多维LUT的列数;对于图像放大处理,根 据表达式L=m×n+m×X×n×Y确定所述多维LUT的列数。其中,m为所述行方向上的像 素点数量,n为所述列方向上的像素点数量,bit为所述位深,T为所述取值步长,X为 所述行缩放倍率,Y为列缩放倍率,H为所述多维LUT的行数,以及L为所述多维LUT 的列数。

输入确定模块143根据所述位深bit,确定所述图像的像素值的范围;根据所述取值 步长T,将所述图像的像素值的范围进行分段;并根据各段的始末值确定所述多维LUT 的输入部分的每一行各列的像素值。

在LUT的输入部分具有m*n列,以及邻域内的像素点的像素值的范围为[0,2^bit-1] 时,所述输入确定模块143根据所述取值步长T将所述图像的像素值的范围分为 (2^bit)/T+1段,所述多维LUT输入部分的每一列各行的像素值为0、T、2T、3T、……、 2^bit-1-T、2^bit-1中的一个;其中,m为所述行方向上的像素点数量,n为所述列方向 上的像素点数量,bit为所述位深,以及T为所述取值步长。

计算模块144包括索引像素矩阵获取单元、预处理矩阵确定单元、预处理参数获取单 元以及输出像素值生成单元。索引像素矩阵获取单元根据所述行缩放倍率X、列缩放倍 率Y和取值步长T,获取邻域数据组成的索引像素矩阵a。预处理矩阵确定单元根据所述 行缩放倍率X和列缩放倍率Y确定预处理矩阵b。预处理参数获取单元对所述索引像素矩 阵a和预处理矩阵b进行卷积运算,获取预处理参数。输出像素值生成单元,根据所述预 处理参数,针对所述图像当前邻域内的文本、边界或图像信息,生成相应的输出像素值。

输出像素值生成单元针对所述图像当前邻域内的文本或边界信息,利用手动调节、预 设表达式或者所述索引像素矩阵中的最小值、最大值或平均值确定所述输出像素值;针对 所述图像当前邻域内的图像信息,利用手动调节、预设表达式或者所述索引像素矩阵中的 平均值确定所述输出像素值。

如图14所示,该装置还可以包括选取模块145。选取模块145与输入确定模块143 及计算模块144相连,在当前邻域内的像素点的像素值在所述多维LUT中找不到对应的 输出值时,选取所述多维LUT中与所述像素点的像素值相邻的两行数据对应的输出值的 平均值作为所述像素点的像素值的输出值;或者选取所述多维LUT中与所述像素点的像 素值距离较近的数据对应的输出值作为所述像素点的像素值的输出值。当然,此处两种确 定输出值的方式仅作为举例,在实际应用中还可以有其他确定方式。

本发明实施例的多维查找表(LUT)的生成装置,还请参考前述本发明的多维查找表 (LUT)的生成方法的实施例的详细介绍,此处不再赘述。

如图15所示,本发明实施例的图像缩放处理装置,主要包括有遍历模块151、映射 模块152以及获取模块153。遍历模块151根据预设的缩放倍率,对源图像数据进行遍历, 获取基于所述源图像形成的映射矩阵a。映射模块152与遍历模块151相连,将所述映射 矩阵a中的像素值映射到对应的根据前述方法生成的多维查找表的输入部分所在的行和 列。获取模块153与映射模块152相连,根据所述行和列获取对应的输出部分作为缩放处 理之后的结果图像。本发明实施例的图像缩放处理装置,还请参考前述本发明的多维查找 表(LUT)的生成方法或者生成装置的实施例进行理解。

本领域的技术人员应该明白,上述的本发明实施例所提供的装置的各组成部分,以及 方法中的各步骤,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的 网络上。可选地,它们可以用计算装置可执行的程序代码来实现。从而,可以将它们存储 在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的 硬件和软件结合。

虽然本发明所揭露的实施方式如上,但所述的内容仅为便于理解本发明技术方案而采 用的实施方式,并非用以限定本发明。任何本发明所属领域内的技术人员,在不脱离本发 明所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但 本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号