发明内容
本申请提供了一种基于图像压缩的分块方法、***及电子设备,以解决图像压缩效果差的问题。
第一方面,本申请一些实施例提供一种基于图像压缩的分块方法,包括:
按照分块信息将待处理图像分割为图像块;
检测所述图像块的边界位置;
根据所述边界位置标记压缩区域与非压缩区域,所述非压缩区域为所述待处理图像中距离所述边界位置小于或等于距离阈值的区域,所述压缩区域为所述待处理图像中距离所述边界位置大于所述距离阈值的区域;
通过预设的特征值替换所述非压缩区域的解码值;
基于邻域像素点的解码值对所述压缩区域执行编码,以及通过原始像素值替换所述非压缩区域的编码值。
结合第一方面,在一种可实施的方式中,按照分块信息将待处理图像分割为图像块,包括:读取所述分块信息及所述待处理图像的原始文件信息,所述分块信息包括分块行数与分块列数;通过所述原始文件信息确定所述待处理图像的原始像素宽度与原始像素高度;根据所述分块行数与所述原始像素高度计算第一分割尺寸,以及根据所述分块列数与所述原始像素宽度计算第二分割尺寸;基于所述第一分割尺寸与所述第二分割尺寸分割所述待处理图像。
结合第一方面,在一种可实施的方式中,检测所述图像块的边界位置,包括:通过所述第一分割尺寸与所述第二分割尺寸生成边界函数;在所述图像块中求解所述边界函数的像素点坐标集合;将所述像素点坐标集合存储为边界坐标。
结合第一方面,在一种可实施的方式中,根据所述边界位置标记压缩区域与非压缩区域,包括:遍历所述图像块的像素点,以获得所述像素点的坐标;通过所述坐标计算所述像素点与所述边界坐标的目标距离;如果所述目标距离小于或等于所述距离阈值,将所述像素点标记为非压缩区域;如果所述目标距离大于所述距离阈值,将所述像素点标记为压缩区域。
结合第一方面,在一种可实施的方式中,基于邻域像素点的解码值对所述压缩区域执行编码,还包括:获取所述压缩区域中目标像素点的原始像素值;查询所述目标像素点的邻域像素点,以及检测所述邻域像素值的解码值;以所述解码值为参考点计算所述像素点的预测值;计算所述预测值与所述原始像素值的差异值,以及将所述差异值输出为所述目标像素点的解码值。
结合第一方面,在一种可实施的方式中,计算所述预测值与所述原始像素值的差异值,还包括:对所述预测值与所述解码值执行量化;求解所述预测值与所述解码值的差值。
结合第一方面,在一种可实施的方式中,所述方法还包括:检测像素点的头部信息;如果所述头部信息是编码字符,识别所述像素点为压缩区域,以及基于邻域像素点的解码值对所述像素点执行编码;如果所述头部信息不是编码字符,识别所述像素点为非压缩区域,以及通过原始像素值替换所述像素点的编码值。
结合第一方面,在一种可实施的方式中,所述方法还包括:打包所述图像块的编码值,以生成所述图像块的压缩码流;将所述压缩码流写入随机存储器;分区存储所述图像块的压缩码流。
第二方面,本申请一些实施例还提供一种基于图像压缩的分块***,包括分割模块、处理模块与编码模块,其中:
分割模块被配置为按照分块信息将待处理图像分割为图像块;
处理模块被配置为检测所述图像块的边界位置;根据所述边界位置标记压缩区域与非压缩区域,所述非压缩区域为所述待处理图像中距离所述边界位置小于或等于距离阈值的区域,所述压缩区域为所述待处理图像中距离所述边界位置大于所述距离阈值的区域;
编码模块被配置为通过预设的特征值替换所述非压缩区域的解码值;基于邻域像素点的解码值对所述压缩区域执行编码,以及通过原始像素值替换所述非压缩区域的编码值。
第三方面,本申请一些实施例还提供一种电子设备,包括:处理器、存储器和总线;
所述处理器和所述存储器通过所述总线完成相互间的通信;
所述存储器存储有可被所述处理器执行的计算机程序指令,所述处理器被配置为:
按照分块信息将待处理图像分割为图像块;
检测所述图像块的边界位置;
根据所述边界位置标记压缩区域与非压缩区域,所述非压缩区域为所述待处理图像中距离所述边界位置小于或等于距离阈值的区域,所述压缩区域为所述待处理图像中距离所述边界位置大于所述距离阈值的区域;
通过预设的特征值替换所述非压缩区域的解码值;
基于邻域像素点的解码值对所述压缩区域执行编码,以及通过原始像素值替换所述非压缩区域的编码值。
由以上技术方案可知,本申请一些实施例提供的基于图像压缩的分块方法、***及电子设备,所述方法可以按照分块信息将待处理图像分割为图像块,并检测图像块的边界位置。根据边界位置标记压缩区域与非压缩区域。其中,非压缩区域为待处理图像中距离边界位置小于或等于距离阈值的区域,压缩区域为待处理图像中距离边界位置大于距离阈值的区域。再通过预设的特征值替换非压缩区域的解码值,并基于邻域像素点的解码值对压缩区域执行编码,以及通过原始像素值替换非压缩区域的编码值。所述方法通过图像块的边界位置划分压缩区域与非压缩区域,再基于邻域像素点的解码值对压缩区域执行编码,并直接将非压缩区域的原始像素值作为编码值,可改善图像块的压缩效果。
具体实施方式
为使本申请示例性实施例的目的、技术方案和优点更加清楚,下面将结合本申请示例性实施例中的附图,对本申请示例性实施例中的技术方案进行清楚、完整地描述,显然,所描述的示例性实施例仅是本申请一部分实施例,而不是全部的实施例。
图像压缩是指以较少的比特表示像素矩阵,也称为图像编码。图像压缩所生成的编码数据可减少图像数据中的冗余信息,比如空间冗余、时间冗余与频谱冗余等,进而提高图像的存储及传输效率。
如图1所示,在一些实施例中,压缩待处理图像包括:获取待处理图像,并提取待处理图像的像素点。检测像素点周围的邻域像素点,将邻域像素点的解码值作为参考值对当前像素点进行预测,以生成预测值。对像素点的原始像素值与预测值执行量化,作差,以及将作差得出的差异值作为当前像素点的编码结果。
由于待处理图像的图像尺寸较大,为了减少图像处理过程中行缓存(linebuffer)的数据量,在一些实施例中,对待处理图像执行分块处理,以生成多个图像块。分别对图像块执行编码,并对编码结果进行打包,以形成图像块的压缩码流。将压缩码流写入DDR(Double Data Rate,双倍速率同步动态随机存储器),以实现编码数据的存储。
然而,由于分割后的图像块存在边界区域,而边界区域的像素点不存在足够的邻域像素点,所以在压缩图像块的边界区域时无法获取其对应的预测值。这样,图像块的边界区域则无法编码。而如果通过图像边缘的编码方式处理该边界区域,又会导致解码后的图像出现不平滑的问题,影响图像块压缩的效果。
基于上述应用场景,为了改善图像块的压缩效果,本申请一些实施例提供一种基于图像压缩的分块方法,如图2所示,所述方法包括以下程序步骤:
S1:按照分块信息将待处理图像分割为图像块。
在压缩待处理图像时,先按照分块信息分割待处理图像,以生成多个小于待处理图像尺寸的图像块。通过将待处理图像分块,可减少处理图像时行缓存的数据量。
在一些实施例中,按照分块信息将待处理图像分割为图像块的步骤包括:读取分块信息及待处理图像的原始文件信息。其中,分块信息包括分块行数与分块列数。通过原始文件信息确定待处理图像的原始像素宽度与原始像素高度,再根据分块行数与原始像素高度计算第一分割尺寸,以及根据分块列数与原始像素宽度计算第二分割尺寸。基于第一分割尺寸与第二分割尺寸分割待处理图像。
例如:待处理图像的尺寸为4k,其像素宽度为4096pixel,高度为2048pixel。分块信息包括的分块行数为1行,分块列数为4列。如图3所示,通过分块信息对待处理图像进行进行分割,分块行数为1行,第一分割尺寸则保持原始的像素高度2048pixel,即无需水平分割待处理图像;分块列数为4列,第二分割尺寸则为1024pixel,即将待处理图像竖直分割为四块,每个图像块的像素尺寸相等。
需要说明的是,上述实施例所述的图像分割方式仅为一种示例性说明,本申请提供的基于图像压缩的分块方法还可以使用其他图像分块技术或图像分割算法。对此,本申请不作限制。
S2:检测图像块的边界位置。
由于将待处理图像分割为多个图像块后,会增加待处理图像的边界区域,而边界区域的像素点无法查询到对应的邻域像素点,所以在对边界区域执行编码时无法预测像素点的预测值。因此,将待处理图像分割为图像块后,还检测各个图像块的边界位置,以在图像块中确定不能进行预测的图像区域。
为了便于检测图像块的边界位置,在一些实施例中,通过第一分割尺寸与第二分割尺寸生成边界函数,并在图像块中求解边界函数的像素点坐标集合。再将像素点坐标集合存储为边界坐标,以通过边界坐标表征图像块的位置。
例如,通过分块信息得出第一分割尺寸m与第二分割尺寸n,分割出的图像块的数量为8,分块行数为2行,分块列数为4列,且待处理图像的坐标是以左下角像素点为原点建立的二维坐标系。根据m、n生成边界函数y=m、x=n、x=2n、x=3n,则求解图像块中满足y=m、x=n、x=2n、x=3n的所有像素点,作为用于表征边界位置的像素点坐标集合,并将像素点坐标集合作为图像块的边界坐标。
S3:根据边界位置标记压缩区域与非压缩区域。
其中,非压缩区域为待处理图像中距离边界位置小于或等于距离阈值的区域,压缩区域为待处理图像中距离边界位置大于距离阈值的区域,距离阈值为预设的距离数值,例如4pixel、6pixel等。由于位于边界位置附近的像素点无法查询到邻域像素点作为参考点,所以将靠近边界位置的图像区域标记为非压缩区域,不通过邻域像素点的参考值对非压缩区域进行预测编码。
在一些实施例中,根据边界位置标记压缩区域与非压缩区域时,遍历图像块的像素点,以获得像素点的坐标。通过坐标计算像素点与边界坐标的目标距离。如果目标距离小于或等于距离阈值,将像素点标记为非压缩区域;如果目标距离大于距离阈值,将像素点标记为压缩区域。
例如:待处理图像的尺寸为4k,其像素宽度为4096pixel,高度为2048pixel。分块信息包括的分块行数为1行,分块列数为4列,距离阈值为4pixel。那么,图像块的压缩区域与非压缩区域如图4所示,图4中空白区域为压缩区域,阴影区域为非压缩区域。
S4:通过预设的特征值替换非压缩区域的解码值。
由于非压缩区域为图像块的边界区域,所以直接通过预设的特征值替换非压缩区域的解码值,以供压缩区域的像素点进行参考。特征值可以基于图像压缩的实际应用场景进行设置,但替换每个非压缩区域解码值的特征值需保持一致。也就是说,用于处理一张待处理图像的特征值是固定的。
S5:基于邻域像素点的解码值对压缩区域执行编码,以及通过原始像素值替换非压缩区域的编码值。
将非压缩区域的解码值替换为特征值后,则可以基于邻域像素点对压缩区域的像素点执行编码。此时,压缩区域中靠近非压缩区域的像素点则可以将替换后的特征值作为参考点,以得出压缩区域像素点的编码结果。例如,可以通过原始像素值替换非压缩区域的解码值,以供其他像素点进行参考。对于非压缩区域的像素点,直接通过原始像素值进行替换,进而实现图像块压缩区域与非压缩区域的编码。
在一些实施例中,基于邻域像素点的解码值对压缩区域执行编码时,获取压缩区域中目标像素点的原始像素值,并查询目标像素点的邻域像素点,以及检测邻域像素值的解码值。以解码值为参考点计算像素点的预测值,并计算预测值与原始像素值的差异值,以及将差异值输出为目标像素点的解码值。
为了便于计算预测值与原始像素值的差异值,还可以对预测值与原始像素值进行量化、作差,即在一些实施例中,计算预测值与原始像素值的差异值时,对预测值与解码值执行量化,并求解预测值与解码值的差值。
示例性的,在对压缩区域的像素点P0执行压缩编码时,则参考如图5所示的邻域像素点信息。其中,无填充的格式表示P0上面两行及左面一组解码后的邻域像素点,阴影填充的格式表示当前压缩像素点p0所需的参考像素点;点状填充的格式表示当前所需要压缩的一组像素点。
为了不额外增加区分压缩区域与非压缩区域的空间,还可以通过头部信息区分像素点所处的区域。因此,在一些实施例中,检测像素点的头部信息。如果头部信息是编码字符,识别像素点为压缩区域,以及基于邻域像素点的解码值对像素点执行编码。如果头部信息不是编码字符,识别像素点为非压缩区域,以及通过原始像素值替换像素点的编码值。
例如,编码字符为1-10。在对像素点执行编码时,检测该像素点P0的数据头部信息。当头部信息等于1-10时,则可以识别出像素点P0为压缩区域的像素点,则可以按照压缩区域的编码方式对像素点执行编码。当头部信息大于10时,则可以识别出像素点P0为非压缩区域的像素点,则可以直接通过P0的原始像素点替换编码值。
此外,为了提高解码效率,在一些实施例中,还打包图像块的编码值,以生成图像块的压缩码流。再将压缩码流写入随机存储器,并分区存储图像块的压缩码流。通过将各个图像块的编码数据独立存储,一方面可以提高解码的空间效率,另一方面还可以改善解码时地址对齐的问题,进而提高解码的整体效率。
例如,待处理图像的尺寸为4k,其像素宽度为4096pixel,高度为2048pixel。将待处理图像分割为图4所示的图像块,形成图像块1、图像块2、图像块3及图像块4。将每个图像块的编码数据,即压缩后的码流单独存储。如图6所示,图6中无填充部分表示压缩后的码流值,阴影填充部分表示非压缩区域的码流值,line 0-line 2047为图像块编码数据的各个行缓存。
基于上述基于图像压缩的分块方法,本申请的部分实施例还提供一种基于图像压缩的分块***,如图7所示,包括分割模块100、处理模块200与编码模块300。其中:
所述分割模块100被配置为按照分块信息将待处理图像分割为图像块。
所述处理模块200被配置为检测所述图像块的边界位置;根据所述边界位置标记压缩区域与非压缩区域,所述非压缩区域为所述待处理图像中距离所述边界位置小于或等于距离阈值的区域,所述压缩区域为所述待处理图像中距离所述边界位置大于所述距离阈值的区域。
所述编码模块300被配置为通过预设的特征值替换所述非压缩区域的解码值;基于邻域像素点的解码值对所述压缩区域执行编码,以及通过原始像素值替换所述非压缩区域的编码值。
基于上述基于图像压缩的分块***,本申请的部分实施例还提供一种电子设备400,包括上述实施例所述的基于图像压缩的分块***。
在一些实施例中,如图8所示,电子设备400包括:至少一个处理器401,至少一个通信接口402,至少一个存储器403和至少一个总线404。其中,总线404用于实现这些组件直接的连接通信,通信接口402用于与其他节点设备进行信令或数据的通信,存储器403存储有可被处理器401执行的计算机程序指令。当电子设备400运行时,处理器401与存储器403之间通过总线404通信,处理器401可调用存储器403中存储的计算机程序,并执行该计算机程序可以实现本申请实施例提供的基于图像压缩的分块方法。
最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。
为了方便解释,已经结合具体的实施方式进行了上述说明。但是,上述示例性的讨论不是意图穷尽或者将实施方式限定到上述公开的具体形式。根据上述的教导,可以得到多种修改和变形。上述实施方式的选择和描述是为了更好的解释原理以及实际的应用,从而使得本领域技术人员更好的使用所述实施方式以及适于具体使用考虑的各种不同的变形的实施方式。