CN104349171A - 一种视觉无损的图像压缩编、解码装置及编、解码方法 - Google Patents
一种视觉无损的图像压缩编、解码装置及编、解码方法 Download PDFInfo
- Publication number
- CN104349171A CN104349171A CN201310330673.9A CN201310330673A CN104349171A CN 104349171 A CN104349171 A CN 104349171A CN 201310330673 A CN201310330673 A CN 201310330673A CN 104349171 A CN104349171 A CN 104349171A
- Authority
- CN
- China
- Prior art keywords
- bit
- coding
- module
- current macro
- macro
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression Of Band Width Or Redundancy In Fax (AREA)
Abstract
本发明公开了一种视觉无损的图像压缩编、解码装置及编、解码方法,该编码方法首先把图像每行分成若干宏块,对宏块进行分析,判断该宏块类型;对于graphic类型宏块,进入graphic编码,对于非graphic类型宏块,进行帧内模式预测,求出当前宏块与预测宏块之间的残差;对残差进行分析,对需进行小波提升的残差进行小波变换,得出变换系数;然后根据图像内容自适应的进行码率控制,对输入的残差或变换系数进行比特面编码,得出最终的码流;最后结合预测宏块,重建出宏块,本发明实现了单行图像以恒定码率高质量快速传输的目的,使压缩后图像与原始图像视觉无损失,且有极低的复杂度,占用资源少。
Description
技术领域
本发明关于一种图像压缩编、解码装置及编、解码方法,特别是涉及一种视觉无损的图像压缩编、解码装置及编、解码方法。
背景技术
数字化时代的今天,很多信息都以数字化的方式表示、传输和存储。图像是包含信息量最大的一种媒介,但数字图像庞大的信息量也成为了数字化进程中的阻碍,必须进行有效的压缩。对于遥感照片、侦察照片、指纹图像、医用图像、天气云图等图像数据的存储和传输等,为了不损失关键信息,方便后期的处理和应用,往往采用无损压缩的方式。尤其在芯片及硬件的开发过程中,受DDR带宽等限制,无法顺利的对高分辨率视频图像(如1080P、4k*2k)进行图像数据读写、存储、缓存等处理,更需要对其进行无损或近无损压缩。
常用的通用无损数据压缩算法有LZW、Huffman编码、算术编码等,针对单帧图像的现有无损压缩标准则有JPEG2000、JPEG-LS等,但是以上算法都不同程度的存在着一定的缺陷,如Huffman编码、算术编码、JPEG2000等算法虽然压缩率高,但复杂度也高,实现较困难,而LZW等算法虽然复杂度低,速度快,但压缩率低,而JPEG-LS等算法则硬件实现比较困难。可见,已有的成熟方案不能从根本上解决以上出现的各种问题,必须实有必要提出一种更高效率、更低复杂度的无损压缩方案。
发明内容
为克服上述现有技术存在的不足,本发明之目的在于提供一种视觉无损的图像压缩编、解码装置及编、解码方法,其可以在具有高压缩率的同时,有着非常低的复杂度,硬件实现简单,不但可以提供高质量的无损视频图像,而且不会对硬件资源有太多的消耗,且具有低功耗、低成本、高效率的性能。
本发明之另一目的在于图像视觉无损压缩的编、解码装置及其编、解码方法,根据图像的某些属性模仿人类的视觉系统,当对某一行图像采取固定码率压缩时(即采取适当的码率控制方案),可以保持图像质量的同时,使得一个有损的图像对于人类的肉眼来说是“无损”状态,可以无损地显现出来;如果不采取固定码率压缩时,本发明则可以切换到无损模式。
为达上述及其它目的,本发明提出一种视觉无损的图像压缩编码装置,至少包括:
分块模组,用于将图像的每行分成若干宏块;
宏块分析模组,逐一对各宏块进行分析,判断当前宏块属于graphic类型宏块还是非graphic类型宏块,并于判断出当前宏块是非graphic类型宏块时,对其进行采样格式分析;
graphic类型宏块编码模块,于该宏块分析模组的分析结果为graphic类型宏块时,对当前宏块进行graphic编码,形成graphic类型宏块的码流;
帧内预测模块,对于非graphic类型宏块,对其Y、U、V三个分量进行帧内模式预测,判断当前宏块属于哪一种预测模式,并求出当前宏块与预测宏块之间的残差;
编码模式判别模块,对当前宏块进行编码模式判别,判断其最终编码输入是选择残差还是小波变换后的变换系数;
码率控制模块,根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,对不同属性的宏块分配不同的比特,形成自适应的码率控制;
编码模块,在该码率控制模块形成的码率的控制下,对输入的残差或变换系数进行编码,得出最终的码流;
小波反变换模块,若编码时选择的是小波变换后的变换系数的编码模式,则对该变换系数进行反变换得到残差;
重建模块,结合残差与该帧内预测模块获得的预测宏块重建出当前模块的重建宏块并进入缓存,供下一行当前位置的宏块预测使用。
进一步地,该宏块分析模组根据当前宏块的颜色种类数来判别当前宏块为graphic类型宏块还是非graphic类型宏块。
进一步地,该宏块分析模组对当前非graphic类型宏块进行采样格式分析,判断其采样格式是属于YUV444、YUV422、YUV400中的哪一类,若判断当前宏块为YUV422采样格式,则对色度进行下采样处理;若判断当前宏块为YUV400格式,则在后续的编码中只编码Y分量。
进一步地,该宏块分析模块对非graphic类型宏块之灰度图像与彩色图像的判别采用如下判别公式:
其中,U、V为宏块的U分量、V分量,is_gray为1表示该宏块是非graphic类型宏块中的灰度图像类型宏块,0表示否。
进一步地,对于非graphic类型宏块之YUV444与YUV422采样格式的判别,该宏块分析模组根据当前宏块的Y、U、V三个分量,计算成对的U、V分量最大梯度max_grat_uvpair,以及Y、U、V分量的最大梯度max_grat_yuv,若max_grat_yuv大于某个阈值,则认为该像素梯度为大梯度,并统计大梯度像素的个数big_grat_num,然后根据max_grat_uvpair和big_grat_num的值进行判别,判别公式如下:
其中,1表示该宏块为YUV444,0表示为YUV422,THR表示梯度的阈值,THR_NUM表示大梯度个数的阈值。
进一步地,该graphic类型宏块编码模块统计当前宏块中颜色的种类,记录其像素值,然后确定该当前宏块中每一个像素点属于这些颜色中的哪一种,标记其在这颜色库中所在的位置,最后把颜色种类的值和每一个像素的标记写入码流,形成graphic类型宏块的码流。
进一步地,该帧内预测模块基于上左、上、上右、左四种预测模式,把当前宏块与四种预测模式得出的预测宏块之间的SAD作为每种模式的代价,把代价最小的预测模式作为当前宏块的最佳预测模式,然后根据最佳预测模式构造预测宏块,利用当前宏块与预测宏块宏块求得残差。
进一步地,该帧内预测模块包括:
帧内预测模式选择模组,选取当前宏块与四种预测模式得出的预测宏块之间的SAD作为代价标准,选取代价最小的预测模式作为最优预测模式;
帧内预测模组,根据最佳预测模式构造预测宏块;
残差计算模组,利用当前宏块与预测宏块求得残差。
进一步地,该帧内预测模块还包括graphic类型宏块再次判断模组,其根据帧内代价及当前宏块中颜色种类个数再进行一次宏块类型判别,其判别公式为:
其中,intra_cost为帧内代价,color_num为当前宏块中颜色种类个数,thr0与thr1为阈值。
进一步地,该帧内预测模块还包括smooth区域判别模组,用于通过分析当前宏块的复杂度,判别其是否是特殊宏块。
进一步地,该编码模式判别模块通过把当前宏块分成2个1x16的左右两块,计算左右两端的梯度和,并利用一编码模式判别公式对当前宏块进行编码模式判别,判断最终编码输入是选择残差还是小波变换后的变换系数
进一步地,该编码模式判别公式为:
grat=diff(i+1)-diff(i),i=0,Λ,30
lf_num(k)=Σ(grat(i)<=thr),i=0,Λ,30,k=0,1,2
其中,diff为残差,0表示采用残差diff进行编码,1表示需要对残差diff进行小波变换,用变换后的变换系数进行编码,thr0及thr1为阈值,sum_grat_left与sum_grat_right为左右两端梯度和。
进一步地,该小波变换模块用于对残差进行5/3小波整数变换,把高频信息和低频信息分别提取出来,以提高后续的编码效率。
进一步地,该小波变换模块利用以下的高频信息提升公式及低频信息提升公式进行高频信息及低频信息的提取:
高频信息提升公式,
n=0,Λ,15
低频信息提升公式,
n=0,Λ,15。
进一步地,该编码模块包括
最高非零比特面查找模组,根据编码模式,选择最合适的输入,对输入的Y、U、V三分量进行最高非零比特面查找,得出最高非零比特面,将该比特面作为后续编码时起始位置,将当前宏块按Y、U、V三分量拆分成几个1x16的子宏块进行查找及后续的编码;
比特面编码模组在码率控制模块的作用下,对子宏块从高比特面向低比特面进行编码,在编码过程中如果剩余比特数小于后面系数符号位编码所需比特数,则中止编码,进入符号位的编码;
系数的符号位编码模组,对系数中的非零系数的符号位进行编码。
进一步地,比特面编码模组在编码过程中,还要对该比特面进行一系列统计,包括是否全为0、全为1、1个0及位置、1个1及位置,对于出现该些特殊情况的比特面,则可用非常少的比特来表示。
进一步地,该小波反变换模块利用以下反变换公式对该变换系数进行反变换得到残差:
n=0,Λ,15
n=0,Λ,15
进一步地,该编码装置编码一个宏块总共需要4级流水线。
为达到上述及其他目的,本发明还提供一种视觉无损的图像压缩编码方法,包括如下步骤:
步骤一,将图像的每行分成若干宏块,并逐一对每个宏块进行分析,判断当前宏块是属于graphic类型宏块还是非graphic类型宏块;
步骤二,若当前宏块为graphic类型,则进入graphic类型宏块编码,形成graphic类型宏块的码流;
步骤三,若当前宏块为为非graphic类型,对当前宏块进行采样格式分析;
步骤四,对于非graphic类型宏块,对其Y、U、V三个分量进行帧内模式预测,判断当前宏块属于哪一种预测模式,并求出当前宏块与预测宏块之间的残差;
步骤五,对当前宏块进行编码模式判别,判断最终编码输入是选择残差还是小波变换后的变换系数;
步骤六,于编码模式的判别结果为最终编码输入选择小波变换后的变换系数时,对残差进行小波变换,得到一组变换系数;
步骤七,根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,对不同属性的宏块分配不同的比特,形成自适应的码率控制;
步骤八,在步骤七形成的码率的控制下,对输入的残差或变换系数进行比特面编码,得出最终的码流;
步骤九,若编码输入为小波变换后的变换系数,则在重建之前对变换系数进行反变换,变换到残差;
步骤十,利用残差,结合预测宏块重建出当前宏块的重建宏块并进入缓存,供下一行当前位置的宏块预测使用。
进一步地,于步骤一中,根据当前宏块的颜色种类数来判别当前宏块为graphic类型宏块还是非graphic类型宏块。
进一步地,步骤二又包括如下步骤:
统计当前宏块中颜色的种类,并记录其像素值,以Y、U、V三分量的值作为衡量颜色种类的标准,只有当这三分量全部相等时才记为是同一种颜色,同时,如果该像素为灰度图像,只记录Y分量的值;
确定该当前宏块中每一个像素点属于颜色中的哪一种,标记其在这颜色库中所在的位置;
把颜色种类的值和每一个像素的标记写入码流,形成graphic类型宏块的码流。
进一步地,若当前宏块为为非graphic类型,对当前宏块进行采样格式分析,判断其采样格式是属于YUV444、YUV422、YUV400中的哪一类,若判断当前MB为YUV422采样格式,则对色度进行下采样处理;若判断当前宏块为YUV400格式,则在后续的编码中只编码Y分量。
进一步地,步骤四包括如下步骤:
选取当前宏块与上左、上、上右、左四种预测模式得出的预测宏块之间的SAD作为代价标准,选取代价最小的预测模式作为最优预测模式;
帧内预测中用最优预测模式构造出预测宏块,作为计算残差用;
提取残差的符号位;
利用帧内代价与当前宏块中颜色种类个数再进行一次MB类型判别;
通过分析当前宏块的复杂度,判别其是否是特殊宏块。
进一步地,于步骤五,把当前宏块分成2个1x16的左右两块,计算左右两端的梯度和,并利用一编码模式判别公式对当前宏块进行编码模式判别,来判断最终编码输入是选择残差还是小波变换后的系数。
进一步地,步骤七包括如下步骤:
综合平滑模式类型宏块、编码上一行后剩余比特数left_bit_buffer以及帧内预测得出的SAD,得出special_bit、trow_bit、sad_bit,构成当前MB编码所需比特数的一个调整比特adj_bits,其中,special_bit表示对于平滑模式类型的宏块分配的比特数,trow_bit表示根据编码上一行图像最终码流比特与预算之间的差异来分配的比特数,sad_bit表示根据帧内预测得出的SAD来自适应分配的比特数;
根据当前行编码当前宏块时剩余比特数left_bit_mb,对adj_bits进行调整;
根据当前宏块的预算比特budget_bit,计算出分配给当前宏块的最终比特数。
进一步地,于步骤七中,码率控制原则为:
对宏块进行比特面编码时,如果最终码流文件小于target_bits,剩余的比特则计入left_bit_buffer,反之如果大于target_bit则终止比特面编码。
进一步地,步骤八包括如下步骤:
根据编码模式,选择最合适的输入,对输入的Y、U、V三分量进行最高非零比特面查找,得出最高非零比特面,将该比特面作为后续编码时起始位置,将当前宏块按Y、U、V三分量拆分成几个子宏块进行查找及后续的编码;
对子宏块从高比特面向低比特面进行编码,在编码过程中如果剩余比特数小于后面系数符号位编码所需比特数,则中止编码,进入符号位的编码;
对系数中的非零系数的符号位进行编码。
为达到上述及其他目的,本发明还提供一种视觉无损的图像压缩解码装置,至少包括:
文件头解析模组,对码流进行文件头解析,解析出图像的宽高信息,并解析出当前宏块属于哪一类宏块;
graphic解码模组,于该文件头解析模组解析出当前宏块属于graphic类型宏块时根据每一个像素所属的颜色值重建出当前宏块;
帧内预测模组,于该文件头解析模组解析出当前宏块属于graphic类型宏块时进行帧内预测,根据预测模式得出预测宏块;
解码模组,对码流进行比特面解码,获得残差;
小波反变换模组,于编码的输入为小波变换后的变换系数时,进行小波反变换,得到残差;
重建模组,利用残差和预测宏块重建出当前宏块。
为达到上述及其他目的,本发明还提供一种视觉无损的图像压缩解码方法,包括如下步骤:
对码流进行文件头解析,解析出图像的宽高等信息,并解析出当前宏块属于哪一类宏块;
若解析出当前宏块属于graphic类型宏块,根据每一个像素所属的颜色值重建出当前宏块;
若解析出当前宏块为非graphic类型宏块,则首先进行帧内预测,根据预测模式得出预测宏块;
对码流进行比特面解码,获得残差;
若编码的输入为小波变换后的变换系数,则进行小波反变换,得到残差;
利用残差和预测宏块重建出当前宏块。
与现有技术相比,本发明一种视觉无损的图像压缩编、解码装置及编、解码方法提供了一种简单高效的图像压缩方案,其在具有高压缩率的同时,有着非常低的复杂度,硬件实现极其简单,本发明不但可以提供高质量的无损视频图像,而且不会对硬件资源有太多的消耗,具有低功耗、低成本、高效率的性能;同时,本发明根据图像的某些属性模仿人类的视觉系统,当对某一行图像采取固定码率压缩时(即采取适当的码率控制方案),可以保持图像质量的同时,使得一个有损的图像对于人类的肉眼来说是“无损”状态,可以无损地显现出来,而在不采取固定码率压缩时,本发明则可以切换到无损模式
附图说明
图1为本发明一种视觉无损的图像压缩编码装置的系统架构图;
图2为本发明一种视觉无损的图像压缩编码装置之较佳实施例的系统架构图;
图3为本发明较佳实施例中宏块分析模组11的宏块分析示意图;
图4为本发明较佳实施例中4种帧内预测模式示意图;
图5为本发明较佳实施例中帧内预测模块的帧内预测示意图;
图6为本发明较佳实施例中码率控制模块16码率控制示意图;
图7为本发明较佳实施例中编码模块的比特面编码示意图;
图8为本发明一种视觉无损的图像压缩编码方法的步骤流程图;
图9为本发明一种视觉无损的图像压缩解码装置的系统架构图;
图10为本发明一种视觉无损的图像压缩解码装置之较佳实施例的系统架构图
图11为本发明一种视觉无损的图像压缩解码方法的步骤流程图;
图12为本发明较佳实施例中编码装置的硬件实现的总体架构图;
图13为本发明较佳实施例中编码装置的宏块流水线示意图。
具体实施方式
以下通过特定的具体实例并结合附图说明本发明的实施方式,本领域技术人员可由本说明书所揭示的内容轻易地了解本发明的其它优点与功效。本发明亦可通过其它不同的具体实例加以施行或应用,本说明书中的各项细节亦可基于不同观点与应用,在不背离本发明的精神下进行各种修饰与变更。
在介绍本发明之前,先介绍本发明设计开发过程中,要面临的如下几个严峻的问题:
1、DDR(Double Data Rate双倍速率同步动态随机存储器)在吞吐高频率高分辨率视频图像(120HZ帧频、1080P大小)时,往往一个时刻(1/120s)内就要读入和写出几帧,这样会造成带宽严重不足。
2、为了芯片成本的最小化,只有两条line buffer(行缓冲区)作为读写使用,这样就限制了视频图像数据的传输为行级别固定码率。
3、在视频图像数据的读入和写出DDR过程中,要同时支持“多编多解”,以满足不同模块的需求。
因此,本发明的压缩方法必须保证单行图像能以固定码率传输,既要有极高的压缩率,同时还要有极低的复杂度,尤其是解码要极其简单,能满足同时几路多编码多解码的要求。
图1为本发明一种视觉无损的图像压缩编码装置的系统架构图,图2为本发明一种视觉无损的图像压缩编码装置之较佳实施例的系统架构图。如图1及图2所示,本发明一种视觉无损的图像压缩编码装置,其至少包括:分块模组10、宏块分析模组11、graphic类型宏块编码模块12、帧内预测模块13、编码模式判别模块14、小波变换模块15、码率控制模块16、编码模块17、小波反变换模块18以及重建模块19。
分块模组10用于将图像的每行分成若干宏块(MB);宏块分析模组11逐个对每个宏块进行分析,判断当前宏块是属于graphic(图像)类型宏块(MB)还是非graphic类型宏块(MB),并于判断出当前宏块是非graphic类型宏块(MB)时,对非graphic类型MB进一步判定是YUV444(1x32)图像、YUV422(1x16)图像还是灰度图像;graphic类型宏块编码模块12于宏块分析模组11的分析结果为当前宏块是graphic类型宏块时,对当前宏块进行graphic(图像)编码,形成graphic(图像)类型宏块(MB)的码流,此编码为无损编码;帧内预测模块13对非graphic类型宏块,对Y、U、V三个分量进行帧内模式预测,判断当前宏块属于哪一种预测模式,并求出当前宏块(MB)与预测宏块(MB)之间的残差diff;编码模式判别模块14对当前宏块进行编码模式判别,判断出最终编码输入是选择残差diff还是5/3小波变换后的系数coeff;小波变换模块15,于编码模式判别模块14的判断结果为最终编码输入选择5/3小波变换后的系数coeff时,对残差进行5/3小波变换,得到一组变换系数coeff;码率控制模块16,根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,如SAD、特殊宏块信息、可支配比特数、上一行编码信息等等,对不同属性的宏块分配的不同的比特,形成自适应的码率控制;编码模块17,在码率控制模块16形成的码率的控制下,对输入的残差diff或变换系数coeff进行编码,得出最终的码流;小波反变换模块,于编码时选择的是小波变换后的变换系数的编码模式时,对该变换系数进行反变换得到残差diff’;重建模块18由残差diff’,结合预测宏块pred_mb重建出当前宏块的重建宏块MB’并进入缓存,供下一行当前位置的宏块MB预测使用。
图3为本发明较佳实施例中宏块分析模组11的宏块分析示意图。需说明的是,本发明实现的初始关键部分是对每一个宏块有详细的分析,包括该宏块属于哪一类宏块,以及该宏块的图像特点及属性等等,对后续的编码模式选择和视觉无损控制起着关键性的作用。在本发明较佳实施例中,采用的输入图像为1080P(1920x1080像素)大小,分块模组10将图像的每行分成的宏块(MB)大小为1x32像素,图像数据的精度为8bit。宏块分析模组11的宏块分析主要涉及graphic和非graphic类型MB判别,其中非graphic类型MB又可以分为YUV444(1x32)、YUV422(1x16)、灰度图像。在本发明较佳实施例中,宏块分析模组11根据当前宏块(MB)的颜色种类数来判别当前宏块为graphic类型MB还是非graphic类型MB,并于当前宏块为非graphic类型MB时,并对非graphic类型MB进行采样格式分析,判断其采样格式是属于YUV444、YUV422、YUV400(即灰度图像)中的哪一类。如果判断当前宏块(MB)为422采样格式,则对色度进行下采样处理;如果判断当前宏块(MB)为YUV400格式,则在后续的编码中只编码Y分量。
(1)Graphic类型宏块(MB)判别:
根据宏块(MB)的Y、U、V三个分量来判别当前宏块(MB)有几种颜色,当颜色种类的数目小于某个阈值,则判定为graphic类型MB,反之为非graphic类型MB。判别公式:
注:1表示该MB是graphic类型MB,0表示是非graphic类型MB。
(2)非graphic类型宏块(MB)之灰度图像判别:
如果当前宏块(MB)的U分量和V分量中全部为128的像素值,则MB为灰度图像,反之为彩色图像。判别公式:
注:1表示该宏块是非graphic中的gray类型MB,0表示否。
(3)非graphic类型宏块之YUV444与YUV422采样格式判别:
根据当前宏块(MB)的Y、U、V三个分量,计算成对的U、V分量最大梯度max_grat_uvpair,以及Y、U、V分量的最大梯度max_grat_yuv。如果max_grat_yuv大于某个阈值,则认为该像素梯度为大梯度,并统计大梯度像素的个数big_grat_num,后根据max_grat_uvpair和big_grat_num的值进行判断,如果为YUV444采样格式,记判断结果is_yuv444=1,反之is_yuv444=0。
判断原则:如果max_grat_uvpair较小,并且大梯度像素的个数big_grat_num较大,则可以认为该区域的高频信息比较丰富,人眼对此区域的容忍度较高,可以进行下采样处理,记is_yuv444=0,反之小于则记is_yuv444=1。判别公式:
注:1表示该MB为YUV444,0表示为YUV422。THR表示梯度的阈值,THR_NUM表示大梯度个数的阈值。
在本发明较佳实施例中,graphic类型宏块编码模块12通过统计当前宏块(MB)中颜色的种类,记录其像素值,然后确定该当前MB中每一个像素点属于这些颜色中的哪一种,标记其在这颜色库中所在的位置,最后把颜色种类的值和每一个像素的标记写入码流,形成graphic类型MB的码流。
由于图像在空间域上具有极大的相关性,在本发明较佳实施例中,帧内预测模块13基于上左、上、上右、左四种预测模式(如附图4),把当前MB与四种预测模式得出的预测MB之间的SAD(Sum of absolute differences,差的绝对值的和)作为每种模式的代价,把代价最小的那种预测模式作为当前MB的最佳预测模式,然后根据最佳预测模式构造预测宏块pred_mb,利用当前MB与预测宏块MB求得残差diff。较佳的,帧内预测模块13还通过分析当前宏块的复杂度,判别其是否是特殊宏块。
具体的说,对于Y分量,把1x32的宏块MB分解成4个1x8的子宏块,分别对每个子宏块采用4种预测模式进行预测,得出最佳预测模式min_mode。U、V分量则采取与Y分量一样的最佳预测模式。图5为本发明较佳实施例中帧内预测模块的帧内预测示意图。在本发明较佳实施例中,帧内预测模块13进一步包括:帧内预测模式选择模组130、帧内预测模组131、残差计算模组132。其中帧内预测模式选择模组130选取当前MB与四种预测模式得出的预测MB之间的SAD作为代价标准,选取代价最小的预测模式作为最优预测模式;帧内预测模组131根据最佳预测模式构造预测宏块pred_mb;残差计算模组132,利用当前宏块MB与预测宏块MB求得残差diff。
由于当上下两行的相关性极大,帧内代价intra_cost非常小,且MB中颜色种类个数color_num较多时,预测之后的残差基本为0,比graphic编码效率更高,因此,帧内预测模块13还包括graphic类型宏块再次判断模组133,用于再进行一次MB类型判别。判别公式为:
其中,thr0与thr1为阈值。
较佳的,帧内预测模块13还包括smooth区域判别模组134,用于通过分析当前宏块的复杂度,判别其是否是特殊宏块。图像中一般会存在一些特殊MB,预测出的SAD比较大,也即存在相当高的一部分高频信息,但是也有可能存在一些低频信息,人眼对这种类型的MB比较敏感,压缩时要重点考虑。我们把相邻像素间的梯度来作为复杂度的判别标准,如果复杂度较低,则认定为smooth(平滑)区域。
小宏块的复杂度及最小复杂度判别公式为:
blk_complex=sum(grat(i)>THR?1:0),i=1,Λ7
min_blk_complex=min(blk_complex),blk_complex=1,2,3,4
如果min_blk_complex小于某个阈值,并且SAD比较大,则认为该MB为特殊MB。
编码模式判别模块14通过把当前宏块分成2个1x16的左右两块,计算左右两端的梯度和,并利用一编码模式判别公式对当前宏块进行编码模式判别,判断最终编码输入是选择残差diff还是5/3小波变换后的系数coeff。具体的,如果残差diff中含有较多的低频信息,则各diff间的梯度则会非常小,并且数目会很多。把1x32的宏块分成2个1x16的左右两块的话,则左右两端的梯度和应该差不多相等。这样进行5/3小波变换的话,会把低频信息提取出来,更有利于压缩。编码模式判别公式为:
grat=diff(i+1)-diff(i),i=0,Λ,30
lf_num(k)=Σ(grat(i)<=thr),i=0,Λ,30,k=0,1,2
其中,0表示采用残差diff进行编码,1表示需要对diff进行5/3小波变换,用变换后的系数coeff进行编码。
小波变换模块15用于对残差diff进行5/3小波整数变换,把高频信息和低频信息分别提取出来,以提高后续的编码效率。在本发明较佳实施例中,对于残差diff,一般来说都是高频信息,但也存在一些特殊的情况,如该当前宏块MB与上一行和左端像素点的相关性极小时,预测出来的残差信息则存在一些低频信息。因此,需要利用小波变换模块15对残差进行5/3小波整数变换,把高频信息和低频信息分别提取出来,后续的编码效率则会更高一些。
其中,高频信息提升公式:
n=0,Λ,15
低频信息提升公式:
n=0,Λ,15
码率控制模块16根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,如SAD、特殊宏块信息、可支配比特数、上一行编码信息等等,对不同属性的宏块分配的不同的比特,形成自适应的码率控制。图6为本发明较佳实施例中码率控制模块16码率控制示意图。如图6所示,码率控制模块16的码率控制包括如下步骤:
步骤1,综合smooth_mode_mb类型MB、编码上一行后剩余比特数left_bit_buffer、帧内预测得出的SAD等因素,得出special_bit、trow_bit、sad_bit,构成当前MB编码所需比特数的一个调整比特adj_bits。其中:
special_bit,表示对于smooth_mode_mb类型的MB分配的比特数。从模块2中对smooth_mode_mb的分析可知,人眼对该类型MB比较敏感,尤其不能损失平滑区域的细节,故要分配更多的比特来进行编码。分配公式为:
trow_bit,表示根据编码上一行图像最终码流比特与预算之间的差异来分配的比特数。一般来说,图像上下两行都具有极大的相关性,如果编码上一行后剩余比特数top_left_bit_buffer较大(即小于预算的比特),就说明当前行有可能编码压力比较小,可以对每一个MB可以分配多一点的比特数。分配公式为:
trow_bit=top_left_bit_buffer/thr
sad_bit,表示根据帧内预测得出的SAD来自适应分配的比特数。一般来说,SAD越大则分配的比特越多,反之则少。分配公式为:
sad_dvi=is_yuv444?4:8
sad_bits=(mb_sad-thr)/sad_dvi
那么,综合以上各个因素,我们可以得到除当前宏块的预算比特之外的调整比特数adj_bits。公式为:
adj_bits=sad_bits+special_mb_bits+trow_bits
步骤2,根据当前行编码当前MB时剩余比特数left_bit_mb(即该行之前MB编码的亏损盈余情况),对adj_bits进行调整。调整原则如下:
当亏损比较严重时,就没有必要在以后编码过程中来补偿这些亏损,令adj_bits=0;当亏损的情况不严重,或许可以在以后编码过程中慢慢来补偿这些亏损,则根据left_bit_mb来调整adj_bits;如果之前编码有盈余,则可按正常的adj_bits进行设定目标比特数。
调整公式:
adj_bits=adj_bits+left_bits_mb
步骤3,根据当前MB的预算比特budget_bit,计算出分配给当前MB的最终比特数target_bits。计算公式如下:
plane_num=is_yuv444?3:2
budget_bit=32*plane_num*8/comp_ratio
target_bits=budget_bit+adj_bits
码率控制原则为:
对MB进行比特面编码时,如果最终码流文件小于target_bits,剩余的比特则计入left_bit_buffer,反之如果大于target_bit则终止比特面编码。
图7为本发明较佳实施例中编码模块的比特面编码示意图。在本发明较佳实施例中,编码模块17在码率控制模块16形成的码率的控制下,对输入的残差diff或变换系数coeff进行比特面编码,得出最终的码流。具体地说,编码模块17包括最高非零比特面查找模组170、比特面编码模组171以及系数的符号位编码模组172,其中最高非零比特面查找模组170根据编码模式,选择最合适的输入,对输入的Y、U、V三分量进行最高非零比特面查找,得出最高非零比特面max_nzb,将该比特面作为后续编码时起始位置这样对于一些低频信息比较丰富的区域,可以节省更多的码流。这里,待编码的系数为残差diff或coeff的绝对值,按Y、U、V三分量拆分成几个1x16的子宏块进行查找及后续的编码,如YUV444格式分解成6个1x16的子宏块,YUV422格式则分解成4个1x16的子宏块;比特面编码模组171在码率控制模块的作用下,对子宏块从高比特面max_nzb向低比特面进行编码,在编码过程中如果剩余比特数小于后面系数符号位编码所需比特数,则中止编码,进入符号位的编码,在编码过程中,首先还要对该比特面进行一系列统计,包括是否全为0、全为1、1个0及位置、1个1及位置。对于出现这些特殊情况的比特面,则可用非常少的比特来表示;系数的符号位编码模组172对系数中的非零系数的符号位进行编码,节省码流。
由于编码过程中低比特面更难于编码,所以对于低比特面编码使用的码表与高比特面不同,更有利于编码效率的提高。具体码表如下:
高比特面:
情形 | Code_word(二进制) | Code_length |
is_all_zero | 0 | 1 |
is_one_one | 100 | 7 |
escape_case | 11+bit_plane | 2+16 |
terminate | 101 | 3 |
低比特面:
情形 | Code_word(二进制) | Code_length |
is_all_zero | 11 | 2 |
is_one_one | 100 | 7 |
escape_case | 0+bit_plane | 1+16 |
terminate | 101 | 3 |
如果编码输入为5/3小波变换后的系数coeff’,则重建模块18在重建之前需要对coeff’进行反变换,变换到残差diff’;反变换公式为:
n=0,Λ,15
n=0,Λ,15
然后,重建模组18再结合帧内预测出的预测宏块pred_mb和残差diff’,重建出当前宏块的重建宏块MB’,并进入缓存,供下一行当前位置的MB预测使用。
rec_mb=pred_mb+diff’。
图8为本发明一种视觉无损的图像压缩编码方法的步骤流程图。如图8所示,本发明一种视觉无损的图像压缩编码方法,包括如下步骤:
步骤801,将图像的每行分成若干宏块(MB),并逐一对每个宏块进行分析,判断当前宏块是属于graphic类型宏块(MB)还是非graphic类型宏块(MB)。
在本发明较佳实施例中,采用的输入图像为1080P(1920x1080像素)大小,宏块(MB)大小为1x32像素,图像数据的精度为8bit。
宏块分析主要涉及graphic和非graphic类型MB判别,其中非graphic类型MB又可以分为YUV444(1x32)、YUV422(1x16)、灰度图像。
(1)Graphic类型MB判别:
根据MB的Y、U、V三个分量来判别当前MB有几种颜色,当颜色种类的数目小于某个阈值,则判定为graphic类型MB,反之为非graphic类型MB。判别公式:
注:1表示该MB是graphic类型MB,0表示是非graphic类型MB。
步骤802,若当前宏块(MB)为graphic类型,则进入graphic类型MB编码,形成graphic类型MB的码流,此编码为无损编码。
具体地,步骤802又包括如下步骤:
步骤1,统计当前MB中颜色的种类,并记录其像素值。以Y、U、V三分量的值作为衡量颜色种类的标准,只有当这三分量全部相等时才记为是同一种颜色。同时,如果该像素为灰度图像(即U、V分量都为128),只记录Y分量的值。
步骤2,确定该MB中每一个像素点属于这些颜色中的哪一种,标记其在这颜色库中所在的位置。
步骤3,把颜色种类的值和每一个像素的标记写入码流,形成graphic类型MB的码流。
步骤803;若当前宏块为(MB)为非graphic类型,对当前宏块进行采样格式分析,判断其采样格式是属于YUV444、YUV422、YUV400(即灰度图像)中的哪一类。如果判断当前MB为422采样格式,则对色度进行下采样处理;如果判断MB为YUV400格式,则在后续的编码中只编码Y分量。
(1)非graphic类型MB之灰度图像判别:
如果MB的U分量和V分量中全部为128的像素值,则MB为灰度图像,反之为彩色图像。判别公式:
注:1表示该宏块是非graphic中的gray类型MB,0表示否。
(2)非graphic类型宏块之YUV444与YUV422采样格式判别:
根据MB的Y、U、V三个分量,计算成对的U、V分量最大梯度max_grat_uvpair,以及Y、U、V分量的最大梯度max_grat_yuv。如果max_grat_yuv大于某个阈值,我们认为该像素梯度为大梯度,并统计大梯度像素的个数big_grat_num。然后根据max_grat_uvpair和big_grat_num的值进行判断,如果为YUV444采样格式,记判断结果is_yuv444=1,反之is_yuv444=0。
判断原则:如果max_grat_uvpair较小,并且大梯度像素的个数big_grat_num较大,则可以认为该区域的高频信息比较丰富,人眼对此区域的容忍度较高,可以进行下采样处理,记is_yuv444=0,反之小于则记is_yuv444=1。判别公式:
注:1表示该MB为YUV444,0表示为YUV422。THR表示梯度的阈值,THR_NUM表示大梯度个数的阈值。
步骤804,对于非graphic类型宏块,对其Y、U、V三个分量进行帧内模式预测,判断当前宏块属于哪一种预测模式,并求出当前宏块(MB)与预测宏块(MB)之间的残差diff。
由于图像在空间域上具有极大的相关性,对于一个1x32的宏块MB,本发明采用基于上左、上、上右、左四种预测模式(如图4),并把SAD作为每种模式的代价,把代价最小的那种预测模式作为当前MB的最佳预测模式,然后根据预测模式求得预测宏块pred_mb,便可利用当前MB与预测MB求得残差diff。
对于Y分量,把1x32的宏块MB分解成4个1x8的子宏块,分别对每个子宏块采用下面4种预测模式进行预测,得出最佳预测模式min_mode。而U、V分量则采取与Y分量一样的最佳预测模式。
步骤804之帧内预测的流程图可参考图5,其具体实施步骤如下:
步骤1,选取当前MB与四种预测模式得出的预测MB之间的SAD作为代价标准,选取代价最小的预测模式作为最优预测模式。
其中:cur_mb为当前宏块,pred_mb为预测宏块,i为YUV分量,j为像素点。
步骤2,帧内预测中用最优预测模式构造出预测MB,作为计算残差用。
diff(i)(j)=cur_mb(i)(j)-pred_mb(i)(j),i=0,Λ,3;j=0,Λ,7
步骤3,提取残差diff的符号位sign。
步骤4,当上下两行的相关性极大,帧内代价非常小,且MB中颜色种类个数较多时,预测之后的残差基本为0,比graphic编码效率更高,故这里再进行一次MB类型判别。判别公式为:
步骤5,smooth_mode_mb区域判别。图像中一般会存在一些特殊MB,预测出的SAD比较大,也即存在相当高的一部分高频信息,但是也有可能存在一些低频信息,人眼对这种类型的MB比较敏感,压缩时要重点考虑。我们把相邻像素间的梯度来作为复杂度的判别标准,如果复杂度较低,则认定为smooth区域。
小宏块的复杂度及最小复杂度判别公式为:
blk_complex=sum(grat(i)>THR?1:0),i=1,Λ7
min_blk_complex=min(blk_complex),blk_complex=1,2,3,4
如果min_blk_complex小于某个阈值,并且SAD比较大,则认为该MB为特殊MB。
步骤805,对当前宏块进行编码模式判别,判断最终编码输入是选择残差diff还是5/3小波变换后的系数coeff。在本发明较佳实施例中,主要通过把当前宏块分成2个1x16的左右两块,计算左右两端的梯度和,并利用一编码模式判别公式对当前宏块进行编码模式判别,来判断最终编码输入是选择残差diff还是5/3小波变换后的系数coeff。
具体的说,如果残差diff中含有较多的低频信息,则各diff间的梯度则会非常小,并且数目会很多。把1x32的宏块分成2个1x16的左右两块的话,则左右两端的梯度和应该差不多相等。这样进行5/3小波变换的话,会把低频信息提取出来,更有利于压缩。编码模式判别公式为:
grat=diff(i+1)-diff(i),i=0,Λ,30
lf_num(k)=Σ(grat(i)<=thr),i=0,Λ,30,k=0,1,2
注:0表示采用diff进行编码,1表示需要对diff进行5/3小波变换,用变换后的系数coeff进行编码。
步骤806,于编码模式的判别结果为最终编码输入选择5/3小波变换后的系数coeff时,对残差进行5/3小波变换,得到一组变换系数coeff。
对于残差diff,一般来说都是高频信息,但也存在一些特殊的情况,如该MB与上一行和左端像素点的相关性极小时,预测出来的残差信息则存在一些低频信息。故,需要对残差进行5/3小波整数变换,把高频信息和低频信息分别提取出来,后续的编码效率则会更高一些。
高频信息提升公式:
n=0,Λ,15
低频信息提升公式:
n=0,Λ,15
步骤807,根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,如SAD、特殊宏块信息、可支配比特数、上一行编码信息等等,对不同属性的宏块分配的不同的比特,形成自适应的码率控制。由于本发明方案要输出行固定比特率的码流,所以模仿人眼的视觉系统,采用的是基于图像内容自适应的码率控制压缩方案,使人眼在视觉上感觉不到图像有任何损失。在本发明较佳实施例中,码率控制进一步包括如下步骤(可参考图6所示):
步骤1,综合smooth_mode_mb类型MB、编码上一行后剩余比特数left_bit_buffer、帧内预测得出的SAD等因素,得出special_bit、trow_bit、sad_bit,构成当前MB编码所需比特数的一个调整比特adj_bits。其中:
special_bit,表示对于smooth_mode_mb类型的MB分配的比特数。从模块2中对smooth_mode_mb的分析可知,人眼对该类型MB比较敏感,尤其不能损失平滑区域的细节,故要分配更多的比特来进行编码。分配公式为:
trow_bit,表示根据编码上一行图像最终码流比特与预算之间的差异来分配的比特数。一般来说,图像上下两行都具有极大的相关性,如果编码上一行后剩余比特数top_left_bit_buffer较大(即小于预算的比特),就说明当前行有可能编码压力比较小,可以对每一个MB可以分配多一点的比特数。分配公式为:
trow_bit=top_left_bit_buffer/thr
sad_bit,表示根据帧内预测得出的SAD来自适应分配的比特数。一般来说,SAD越大则分配的比特越多,反之则少。分配公式为:
sad_dvi=is_yuv444?4:8
sad_bits=(mb_sad-thr)/sad_dvi
那么,综合以上各个因素,我们可以得到除当前宏块的预算比特之外的调整比特数adj_bits。公式为:
adj_bits=sad_bits+special_mb_bits+trow_bits
步骤2,根据当前行编码当前MB时剩余比特数left_bit_mb(即该行之前MB编码的亏损盈余情况),对adj_bits进行调整。调整原则如下:
当亏损比较严重时,就没有必要在以后编码过程中来补偿这些亏损,令adj_bits=0;当亏损的情况不严重,或许可以在以后编码过程中慢慢来补偿这些亏损,则根据left_bit_mb来调整adj_bits;如果之前编码有盈余,则可按正常的adj_bits进行设定目标比特数。
调整公式:
adj_bits=adj_bits+left_bits_mb
步骤3,根据当前MB的预算比特budget_bit,计算出分配给当前MB的最终比特数target_bits。计算公式如下:
plane_num=is_yuv444?3:2
budget_bit=32*plane_num*8/comp_ratio
target_bits=budget_bit+adj_bits
码率控制原则为:
对MB进行比特面编码时,如果最终码流文件小于target_bits,剩余的比特则计入left_bit_buffer,反之如果大于target_bit则终止比特面编码。
步骤808,在步骤807形成的码率的控制下,对输入的残差diff或变换系数coeff进行编码,得出最终的码流。在本发明较佳实施例中,采用的编码方法是比特面编码。具体的说,该比特面编码包括如下步骤(可参考图7):
步骤1,根据编码模式,选择最合适的输入,对输入的Y、U、V三分量进行最高非零比特面查找,得出最高非零比特面max_nzb,将该比特面作为后续编码时起始位置,这样对于一些低频信息比较丰富的区域,可以节省更多的码流。这里,待编码的系数为残差diff或coeff的绝对值,按Y、U、V三分量拆分成几个1x16的子宏块进行查找及后续的编码,如YUV444格式分解成6个1x16的子宏块,YUV422格式则分解成4个1x16的子宏块。
步骤2,在码率控制模块的作用下,对子宏块从高比特面max_nzb向低比特面进行编码,在编码过程中如果剩余比特数小于后面系数符号位编码所需比特数,则中止编码,进入符号位的编码。在编码过程中,首先还要对该比特面进行一系列统计,包括是否全为0、全为1、1个0及位置、1个1及位置。对于出现这些特殊情况的比特面,则可用非常少的比特来表示。
步骤3,在系数的符号位编码中,我们只对系数中的非零系数的符号位进行编码,节省码流。
由于编码过程中低比特面更难于编码,所以对于低比特面编码使用的码表与高比特面不同,更有利于编码效率的提高。具体码表如下:
高比特面:
情形 | Code_word(二进制) | Code_length |
is_all_zero | 0 | 1 |
is_one_one | 100 | 7 |
escape_case | 11+bit_plane | 2+16 |
terminate | 101 | 3 |
低比特面:
情形 | Code_word(二进制) | Code_length |
is_all_zero | 11 | 2 |
is_one_one | 100 | 7 |
escape_case | 0+bit_plane | 1+16 |
terminate | 101 | 3 |
步骤809,由残差diff’,结合预测宏块pred_mb重建出当前宏块的重建宏块MB’并缓存,供下一行当前位置的宏块MB预测使用。
具体地,如果编码输入为5/3小波变换后的系数coeff’,则在重建之前需要对coeff’进行反变换,变换到残差diff’。反变换公式为:
n=0,Λ,15
n=0,Λ,15
然后,再结合帧内预测出的预测宏块pred_mb和残差diff’,重建出当前宏块的重建宏块MB’,并进入缓存,供下一行当前位置的MB预测使用。
图9为本发明一种视觉无损的图像压缩解码装置的系统架构图,图10为本发明一种视觉无损的图像压缩解码装置之较佳实施例的系统架构图。如图9及图10所示,本发明一种视觉无损的图像压缩解码装置,包括文件头解析模组90、graphic解码模组91、帧内预测模组92、解码模组93、小波反变换模组94以及重建模组95。
其中文件头解析模组90对码流进行文件头解析,解析出图像的宽高等信息,同时,解析出当前MB属于哪一类的MB;graphic解码模组91于文件头解析模组90解析出当前MB属于graphic类型MB时根据每一个像素所属的颜色值重建出当前宏块(MB);帧内预测模组92于文件头解析模组90解析出当前MB属于graphic类型MB时进行帧内预测,根据预测模式得出预测宏块pred_mb;解码模组93对码流进行解码,在本发明较佳实施例中,解码模组93对码流进行比特面解码,获得残差diff;小波反变换模组94于编码的输入为5/3小波变换后的系数coeff,则进行5/3小波反变换,得到残差diff;重建模组95利用残差diff和预测宏块pred_mb重建出当前MB。
图11为本发明一种视觉无损的图像压缩解码方法的步骤流程图。如图11所示,本发明一种视觉无损的图像压缩解码方法,包括如下步骤:
步骤101,文件头解析模组90对码流进行文件头解析,解析出图像的宽高等信息,同时,解析出当前MB属于哪一类的MB;
步骤102,若解析出当前MB属于graphic类型MB,根据每一个像素所属的颜色值重建出当前宏块(MB);
步骤103,解析出当前MB为非graphic类型MB,则首先进行帧内预测,根据预测模式得出预测宏块pred_mb;
步骤104,对码流进行比特面解码,获得残差diff,如果编码的输入为5/3小波变换后的系数coeff,则进行5/3小波反变换,得到残差diff;
步骤105,利用残差diff和预测宏块pred_mb重建出当前MB。
图12为本发明较佳实施例中编码装置的硬件实现的总体架构图。在本发明较佳实施例中,整个编码器有以下几个主要部分:
1)4个主要的处理模块;
2)输入像素fifo(先进先出存储器);
3)输出码流fifo(先进先出存储器);
4)存储上一行重建像素的line buffer(行缓存器);
5)相邻模块间的存储宏块流水信息的ping-pong buffer(乒乓缓存器)。
4个主要模块为:
a)宏块分析模块;
b)计算残差和5/3小波系数模块;
c)变长编码模块;
d)宏块重建模块;
宏块流水线如图13。主要是:
编码一个宏块总共需要4级流水线,第一级为MB分析,第二级为求残差或者是求5/3小波系数,第三级为变长编码,第四级为重建宏块。
综上所述,本发明一种视觉无损的图像压缩编、解码装置及编、解码方法提供了一种简单高效的图像压缩方案,其在具有高压缩率的同时,有着非常低的复杂度,硬件实现极其简单,本发明不但可以提供高质量的无损视频图像,而且不会对硬件资源有太多的消耗,具有低功耗、低成本、高效率的性能。
同时,本发明根据图像的某些属性模仿人类的视觉系统,当对某一行图像采取固定码率压缩时(即采取适当的码率控制方案),可以保持图像质量的同时,使得一个有损的图像对于人类的肉眼来说是“无损”状态,可以无损地显现出来。当然,如果不采取固定码率压缩时,本发明则可以切换到无损模式。
与现有技术相比,本发明有如下优点:
1、采用帧内预测的方法,得出信息更加集中的残差diff,并通过小波提升,使得图像的冗余度进一步下降,对高频、低频系数分别进行编码,再加上压缩率更高的graphic编码和下采样处理等,压缩率比已有方法进一步提升。
2、本发明根据每一宏块的属性,采取自适应的固定行比特率的控制方案,可以保证每一行图像都能按固定比特率传输。那么每一行图像至少按视觉无损(大多数情况下是无损)来进行高质量传输,有效解决带宽不足的同时,大大降低了成本。
3、编码器设计简单的同时,解码器更加简单,这样便保证了在硬件运行速度上可以达到“多编多解”。
上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何本领域技术人员均可在不违背本发明的精神及范畴下,对上述实施例进行修饰与改变。因此,本发明的权利保护范围,应如权利要求书所列。
Claims (29)
1.一种视觉无损的图像压缩编码装置,至少包括:
分块模组,用于将图像的每行分成若干宏块;
宏块分析模组,逐一对各宏块进行分析,判断当前宏块属于graphic类型宏块还是非graphic类型宏块,并于判断出当前宏块是非graphic类型宏块时,对其进行采样格式分析;
graphic类型宏块编码模块,于该宏块分析模组的分析结果为graphic类型宏块时,对当前宏块进行graphic编码,形成graphic类型宏块的码流;
帧内预测模块,对于非graphic类型宏块,对其Y、U、V三个分量进行帧内模式预测,判断当前宏块属于哪一种预测模式,并求出当前宏块与预测宏块之间的残差;
编码模式判别模块,对当前宏块进行编码模式判别,判断其最终编码输入是选择残差还是小波变换后的变换系数;
码率控制模块,根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,对不同属性的宏块分配不同的比特,形成自适应的码率控制;
编码模块,在该码率控制模块形成的码率的控制下,对输入的残差或变换系数进行编码,得出最终的码流;
小波反变换模块,于编码时选择的是小波变换后的变换系数的编码模式时,对该变换系数进行反变换得到残差;
重建模块,结合残差与该帧内预测模块获得的预测宏块重建出当前模块的重建宏块并进入缓存,供下一行当前位置的宏块预测使用。
2.如权利要求1所述的一种视觉无损的图像压缩编码装置,其特征在于:该宏块分析模组根据当前宏块的颜色种类数来判别当前宏块为graphic类型宏块还是非graphic类型宏块。
3.如权利要求2所述的一种视觉无损的图像压缩编码装置,其特征在于: 该宏块分析模组对当前非graphic类型宏块进行采样格式分析,判断其采样格式是属于YUV444、YUV422、YUV400中的哪一类,若判断当前宏块为YUV422采样格式,则对色度进行下采样处理;若判断当前宏块为YUV400格式,则在后续的编码中只编码Y分量。
4.如权利要求3所述的一种视觉无损的图像压缩编码装置,其特征在于,该宏块分析模块对非graphic类型宏块之灰度图像与彩色图像的判别采用如下判别公式:
其中,U、V为宏块的U分量、V分量,is_gray为1表示该宏块是非graphic类型宏块中的灰度图像类型宏块,0表示否。
5.如权利要求4所述的一种视觉无损的图像压缩编码装置,其特征在于,对于非graphic类型宏块之YUV444与YUV422采样格式的判别,该宏块分析模组根据当前宏块的Y、U、V三个分量,计算成对的U、V分量最大梯度max_grat_uvpair,以及Y、U、V分量的最大梯度max_grat_yuv,若max_grat_yuv大于某个阈值,则认为该像素梯度为大梯度,并统计大梯度像素的个数big_grat_num,然后根据max_grat_uvpair和big_grat_num的值进行判别,判别公式如下:
其中,1表示该宏块为YUV444,0表示为YUV422,THR表示梯度的阈值,THR_NUM表示大梯度个数的阈值。
6.如权利要求1所述的一种视觉无损的图像压缩编码装置,其特征在于:该graphic类型宏块编码模块统计当前宏块中颜色的种类,记录其像素值,然后确定该当前宏块中每一个像素点属于这些颜色中的哪一种,标记其在这颜色库 中所在的位置,最后把颜色种类的值和每一个像素的标记写入码流,形成graphic类型宏块的码流。
7.如权利要求1所述的一种视觉无损的图像压缩编码装置,其特征在于:该帧内预测模块基于上左、上、上右、左四种预测模式,把当前宏块与四种预测模式得出的预测宏块之间的SAD作为每种模式的代价,把代价最小的预测模式作为当前宏块的最佳预测模式,然后根据最佳预测模式构造预测宏块,利用当前宏块与预测宏块宏块求得残差。
8.如权利要求7所述的一种视觉无损的图像压缩编码装置,其特征在于,该帧内预测模块包括:
帧内预测模式选择模组,选取当前宏块与四种预测模式得出的预测宏块之间的SAD作为代价标准,选取代价最小的预测模式作为最优预测模式;
帧内预测模组,根据最佳预测模式构造预测宏块;
残差计算模组,利用当前宏块与预测宏块求得残差。
9.如权利要求8所述的一种视觉无损的图像压缩编码装置,其特征在于,该帧内预测模块还包括graphic类型宏块再次判断模组,其根据帧内代价及当前宏块中颜色种类个数再进行一次宏块类型判别,其判别公式为:
其中,intra_cost为帧内代价,color_num为当前宏块中颜色种类个数,thr0与thr1为阈值。
10.如权利要求9所述的一种视觉无损的图像压缩编码装置,其特征在于:该帧内预测模块还包括smooth区域判别模组,用于通过分析当前宏块的复杂度,判别其是否是特殊宏块。
11.如权利要求1所述的一种视觉无损的图像压缩编码装置,其特征在于:该编码模式判别模块通过把当前宏块分成2个1x16的左右两块,计算左右两端的梯度和,并利用一编码模式判别公式对当前宏块进行编码模式判别,判断 最终编码输入是选择残差还是小波变换后的变换系数。
12.如权利要求11所述的一种视觉无损的图像压缩编码装置,其特征在于,该编码模式判别公式为:
grat=diff(i+1)-diff(i),i=0,Λ,30
lf_num(k)=∑(grat(i)<=thr),i=0,Λ,30,k=0,1,2
其中,diff为残差,0表示采用残差diff进行编码,1表示需要对残差diff进行小波变换,用变换后的变换系数进行编码,thr0及thr1为阈值,sum_grat_left与sum_grat_right为左右两端梯度和。
13.如权利要求1所述的一种视觉无损的图像压缩编码装置,其特征在于:该小波变换模块用于对残差进行5/3小波整数变换,把高频信息和低频信息分别提取出来,以提高后续的编码效率。
14.如权利要求13所述的一种视觉无损的图像压缩编码装置,其特征在于,该小波变换模块利用以下的高频信息提升公式及低频信息提升公式进行高频信息及低频信息的提取:
高频信息提升公式,
低频信息提升公式,
15.如权利要求14所述的一种视觉无损的图像压缩编码装置,其特征在于,该编码模块包括:
最高非零比特面查找模组,根据编码模式,选择最合适的输入,对输入的Y、U、V三分量进行最高非零比特面查找,得出最高非零比特面,将该比特面作为后续编码时起始位置,将当前宏块按Y、U、V三分量拆分成几个1x16的子宏块进行查找及后续的编码;
比特面编码模组,在码率控制模块的作用下,对子宏块从高比特面向低比特面进行编码,在编码过程中如果剩余比特数小于后面系数符号位编码所需比特数,则中止编码,进入符号位的编码;
系数的符号位编码模组,对系数中的非零系数的符号位进行编码。
16.如权利要求15所述的一种视觉无损的图像压缩编码装置,其特征在于:比特面编码模组在编码过程中,还要对该比特面进行一系列统计,包括是否全为0、全为1、1个0及位置、1个1及位置,对于出现该些特殊情况的比特面,则可用非常少的比特来表示。
17.如权利要求16所述的一种视觉无损的图像压缩编码装置,其特征在于,该小波反变换模块利用以下反变换公式对该变换系数进行反变换得到残差:
。
18.如权利要求1所述的一种视觉无损的图像压缩编码装置,其特征在于:该编码装置编码一个宏块总共需要4级流水线。
19.一种视觉无损的图像压缩编码方法,包括如下步骤:
步骤一,将图像的每行分成若干宏块,并逐一对每个宏块进行分析,判断当前宏块是属于graphic类型宏块还是非graphic类型宏块;
步骤二,若当前宏块为graphic类型,则进入graphic类型宏块编码,形成 graphic类型宏块的码流;
步骤三,若当前宏块为为非graphic类型,对当前宏块进行采样格式分析;
步骤四,对于非graphic类型宏块,对其Y、U、V三个分量进行帧内模式预测,判断当前宏块属于哪一种预测模式,并求出当前宏块与预测宏块之间的残差;
步骤五,对当前宏块进行编码模式判别,判断最终编码输入是选择残差还是小波变换后的变换系数;
步骤六,于编码模式的判别结果为最终编码输入选择小波变换后的变换系数时,对残差进行小波变换,得到一组变换系数;
步骤七,根据图像的特殊属性,模拟人眼的视觉机理,并综合以上分析出来的各种信息,对不同属性的宏块分配不同的比特,形成自适应的码率控制;
步骤八,在步骤七形成的码率的控制下,对输入的残差或变换系数进行比特面编码,得出最终的码流;
步骤九,若编码输入为小波变换后的变换系数,则在重建之前对变换系数进行反变换,变换到残差;
步骤十,利用残差,结合预测宏块重建出当前宏块的重建宏块并进入缓存,供下一行当前位置的宏块预测使用。
20.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于,于步骤一中,根据当前宏块的颜色种类数来判别当前宏块为graphic类型宏块还是非graphic类型宏块。
21.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于,步骤二又包括如下步骤:
统计当前宏块中颜色的种类,并记录其像素值,以Y、U、V三分量的值作为衡量颜色种类的标准,只有当这三分量全部相等时才记为是同一种颜色,同时,如果该像素为灰度图像,只记录Y分量的值;
确定该当前宏块中每一个像素点属于颜色中的哪一种,标记其在这颜色库中 所在的位置;
把颜色种类的值和每一个像素的标记写入码流,形成graphic类型宏块的码流。
22.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于:于步骤三中,若当前宏块为为非graphic类型,对当前宏块进行采样格式分析,判断其采样格式是属于YUV444、YUV422、YUV400中的哪一类,若判断当前宏块为YUV422采样格式,则对色度进行下采样处理;若判断当前宏块为YUV400格式,则在后续的编码中只编码Y分量。
23.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于:步骤四包括如下步骤:
选取当前宏块与上左、上、上右、左四种预测模式得出的预测宏块之间的SAD作为代价标准,选取代价最小的预测模式作为最优预测模式;
帧内预测中用最优预测模式构造出预测宏块,作为计算残差用;
提取残差的符号位;
利用帧内代价与当前宏块中颜色种类个数再进行一次宏块类型判别;
通过分析当前宏块的复杂度,判别其是否是特殊宏块。
24.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于:于步骤五,把当前宏块分成2个1x16的左右两块,计算左右两端的梯度和,并利用一编码模式判别公式对当前宏块进行编码模式判别,来判断最终编码输入是选择残差还是小波变换后的系数。
25.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于,步骤七包括如下步骤:
综合平滑模式类型宏块、编码上一行后剩余比特数left_bit_buffer以及帧内预测得出的SAD,得出special_bit、trow_bit、sad_bit,构成当前宏块编码所需比特数的一个调整比特adj_bits,其中,special_bit表示对于平滑模式类型的宏块分配的比特数,trow_bit表示根据编码上一行图像最终码流比特与预算之间的 差异来分配的比特数,sad_bit表示根据帧内预测得出的SAD来自适应分配的比特数;
根据当前行编码当前宏块时剩余比特数left_bit_mb,对adj_bits进行调整;
根据当前宏块的预算比特budget_bit,计算出分配给当前宏块的最终比特数。
26.如权利要求25所述的一种视觉无损的图像压缩编码方法,其特征在于,于步骤七中,码率控制原则为:
对宏块进行比特面编码时,如果最终码流文件小于target_bits,剩余的比特则计入left_bit_buffer,反之如果大于target_bit则终止比特面编码。
27.如权利要求19所述的一种视觉无损的图像压缩编码方法,其特征在于,步骤八包括如下步骤:
根据编码模式,选择最合适的输入,对输入的Y、U、V三分量进行最高非零比特面查找,得出最高非零比特面,将该比特面作为后续编码时起始位置,将当前宏块按Y、U、V三分量拆分成几个子宏块进行查找及后续的编码;
对子宏块从高比特面向低比特面进行编码,在编码过程中如果剩余比特数小于后面系数符号位编码所需比特数,则中止编码,进入符号位的编码;
对系数中的非零系数的符号位进行编码。
28.一种视觉无损的图像压缩解码装置,至少包括:
文件头解析模组,对码流进行文件头解析,解析出图像的宽高信息,并解析出当前宏块属于哪一类宏块;
graphic解码模组,于该文件头解析模组解析出当前宏块属于graphic类型宏块时根据每一个像素所属的颜色值重建出当前宏块;
帧内预测模组,于该文件头解析模组解析出当前宏块属于graphic类型宏块时进行帧内预测,根据预测模式得出预测宏块;
解码模组,对码流进行比特面解码,获得残差;
小波反变换模组,于编码的输入为小波变换后的变换系数时,进行小波反 变换,得到残差;
重建模组,利用残差和预测宏块重建出当前宏块。
29.一种视觉无损的图像压缩解码方法,包括如下步骤:
对码流进行文件头解析,解析出图像的宽高等信息,并解析出当前宏块属于哪一类宏块;
若解析出当前宏块属于graphic类型宏块,根据每一个像素所属的颜色值重建出当前宏块;
若解析出当前宏块为非graphic类型宏块,则首先进行帧内预测,根据预测模式得出预测宏块;
对码流进行比特面解码,获得残差;
若编码的输入为小波变换后的变换系数,则进行小波反变换,得到残差;
利用残差和预测宏块重建出当前宏块。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310330673.9A CN104349171B (zh) | 2013-07-31 | 2013-07-31 | 一种视觉无损的图像压缩编、解码装置及编、解码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310330673.9A CN104349171B (zh) | 2013-07-31 | 2013-07-31 | 一种视觉无损的图像压缩编、解码装置及编、解码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104349171A true CN104349171A (zh) | 2015-02-11 |
CN104349171B CN104349171B (zh) | 2018-03-13 |
Family
ID=52503851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310330673.9A Active CN104349171B (zh) | 2013-07-31 | 2013-07-31 | 一种视觉无损的图像压缩编、解码装置及编、解码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104349171B (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106612438A (zh) * | 2016-01-28 | 2017-05-03 | 四川用联信息技术有限公司 | 一种基于重叠分区高级小波变换技术的图像压缩方法 |
CN106791844A (zh) * | 2016-12-19 | 2017-05-31 | 中国科学院半导体研究所 | 一种图像无损压缩装置及方法 |
CN106791843A (zh) * | 2016-12-19 | 2017-05-31 | 中国科学院半导体研究所 | 一种图像无损压缩系统及方法 |
CN107437265A (zh) * | 2017-08-04 | 2017-12-05 | 苏州大学 | 基于相似度量与权重衡量的彩色提花cad中的配色方法 |
CN108156461A (zh) * | 2017-12-28 | 2018-06-12 | 上海通途半导体科技有限公司 | 一种Bayer图像压缩方法及装置 |
CN108200429A (zh) * | 2017-12-28 | 2018-06-22 | 上海通途半导体科技有限公司 | 一种Bayer图像压缩方法及装置 |
CN108347602A (zh) * | 2017-01-22 | 2018-07-31 | 上海澜至半导体有限公司 | 用于无损压缩视频数据的方法和装置 |
CN109005426A (zh) * | 2017-04-08 | 2018-12-14 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法 |
CN109089162A (zh) * | 2017-04-08 | 2018-12-25 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法及系统 |
CN110545417A (zh) * | 2018-05-28 | 2019-12-06 | 深信服科技股份有限公司 | 一种桌面场景的图像编码、解码方法及相关装置 |
CN111343455A (zh) * | 2020-02-25 | 2020-06-26 | 西安万像电子科技有限公司 | 编码方式确定方法及装置 |
CN112839226A (zh) * | 2019-11-25 | 2021-05-25 | 深信服科技股份有限公司 | 一种图像编码、解码方法、相关装置及存储介质 |
CN113115041A (zh) * | 2021-03-15 | 2021-07-13 | 广州匠芯创科技有限公司 | 支持alpha通道的无损图片压缩方法、装置及介质 |
CN117557582A (zh) * | 2024-01-02 | 2024-02-13 | 深圳翰博设计股份有限公司 | 基于人工智能的建筑景观设计图像处理系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275614B1 (en) * | 1998-06-26 | 2001-08-14 | Sarnoff Corporation | Method and apparatus for block classification and adaptive bit allocation |
CN101184239A (zh) * | 2007-12-13 | 2008-05-21 | 上海广电(集团)有限公司中央研究院 | 一种恒定码率的控制方法 |
CN101325707A (zh) * | 2007-06-12 | 2008-12-17 | 浙江大学 | 纹理自适应视频编解码系统 |
CN102665077A (zh) * | 2012-05-03 | 2012-09-12 | 北京大学 | 一种基于宏块分类的快速高效编转码方法 |
-
2013
- 2013-07-31 CN CN201310330673.9A patent/CN104349171B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6275614B1 (en) * | 1998-06-26 | 2001-08-14 | Sarnoff Corporation | Method and apparatus for block classification and adaptive bit allocation |
CN101325707A (zh) * | 2007-06-12 | 2008-12-17 | 浙江大学 | 纹理自适应视频编解码系统 |
CN101184239A (zh) * | 2007-12-13 | 2008-05-21 | 上海广电(集团)有限公司中央研究院 | 一种恒定码率的控制方法 |
CN102665077A (zh) * | 2012-05-03 | 2012-09-12 | 北京大学 | 一种基于宏块分类的快速高效编转码方法 |
Cited By (23)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106612438A (zh) * | 2016-01-28 | 2017-05-03 | 四川用联信息技术有限公司 | 一种基于重叠分区高级小波变换技术的图像压缩方法 |
CN106791844A (zh) * | 2016-12-19 | 2017-05-31 | 中国科学院半导体研究所 | 一种图像无损压缩装置及方法 |
CN106791843A (zh) * | 2016-12-19 | 2017-05-31 | 中国科学院半导体研究所 | 一种图像无损压缩系统及方法 |
CN106791844B (zh) * | 2016-12-19 | 2019-09-03 | 中国科学院半导体研究所 | 一种图像无损压缩装置及方法 |
CN106791843B (zh) * | 2016-12-19 | 2019-09-24 | 中国科学院半导体研究所 | 一种图像无损压缩系统及方法 |
CN108347602A (zh) * | 2017-01-22 | 2018-07-31 | 上海澜至半导体有限公司 | 用于无损压缩视频数据的方法和装置 |
CN109089162B (zh) * | 2017-04-08 | 2021-05-28 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法及系统 |
CN109005426A (zh) * | 2017-04-08 | 2018-12-14 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法 |
CN109089162A (zh) * | 2017-04-08 | 2018-12-25 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法及系统 |
CN109005426B (zh) * | 2017-04-08 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种图片文件处理方法 |
CN107437265B (zh) * | 2017-08-04 | 2020-06-23 | 苏州大学 | 基于相似度量与权重衡量的彩色提花cad中的配色方法 |
CN107437265A (zh) * | 2017-08-04 | 2017-12-05 | 苏州大学 | 基于相似度量与权重衡量的彩色提花cad中的配色方法 |
CN108200429A (zh) * | 2017-12-28 | 2018-06-22 | 上海通途半导体科技有限公司 | 一种Bayer图像压缩方法及装置 |
CN108156461A (zh) * | 2017-12-28 | 2018-06-12 | 上海通途半导体科技有限公司 | 一种Bayer图像压缩方法及装置 |
CN108156461B (zh) * | 2017-12-28 | 2021-12-10 | 上海通途半导体科技有限公司 | 一种Bayer图像压缩方法及装置 |
CN110545417A (zh) * | 2018-05-28 | 2019-12-06 | 深信服科技股份有限公司 | 一种桌面场景的图像编码、解码方法及相关装置 |
CN112839226A (zh) * | 2019-11-25 | 2021-05-25 | 深信服科技股份有限公司 | 一种图像编码、解码方法、相关装置及存储介质 |
CN112839226B (zh) * | 2019-11-25 | 2024-02-23 | 深信服科技股份有限公司 | 一种图像编码、解码方法、相关装置及存储介质 |
CN111343455A (zh) * | 2020-02-25 | 2020-06-26 | 西安万像电子科技有限公司 | 编码方式确定方法及装置 |
CN111343455B (zh) * | 2020-02-25 | 2022-11-29 | 西安万像电子科技有限公司 | 编码方式确定方法及装置 |
CN113115041A (zh) * | 2021-03-15 | 2021-07-13 | 广州匠芯创科技有限公司 | 支持alpha通道的无损图片压缩方法、装置及介质 |
CN117557582A (zh) * | 2024-01-02 | 2024-02-13 | 深圳翰博设计股份有限公司 | 基于人工智能的建筑景观设计图像处理系统 |
CN117557582B (zh) * | 2024-01-02 | 2024-03-12 | 深圳翰博设计股份有限公司 | 基于人工智能的建筑景观设计图像处理系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104349171B (zh) | 2018-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104349171A (zh) | 一种视觉无损的图像压缩编、解码装置及编、解码方法 | |
CN105120293B (zh) | 基于cpu和gpu的图像协同解码方法及装置 | |
CN109842803B (zh) | 一种图像压缩的方法及装置 | |
TWI699111B (zh) | 用於顯示串流壓縮之中點預測誤差擴散 | |
CN101404767A (zh) | 一种基于图像分析及人工智能的可变参数的自动化视频转码方法 | |
CN102265611A (zh) | 在混合视频编码中具有多个滤波器的本地环路内滤波 | |
GB2457262A (en) | Compression / decompression of data blocks, applicable to video reference frames | |
CN104838649A (zh) | 针对随机访问的用于对视频进行编码的方法和设备以及用于对视频进行解码的方法和设备 | |
CN101917622B (zh) | 14bit位宽图像压缩硬件编码器 | |
US10091531B2 (en) | Image coding and decoding methods and apparatuses | |
CN106101703B (zh) | 一种面向数字kvm切换器的屏幕视频压缩方法 | |
KR20130089461A (ko) | 영역별 특성에 기초한 영상 부호화 방법 및 그 장치, 그리고 영상 복호화 방법 및 그 장치 | |
CN106961610A (zh) | 结合超分辨率重建的超高清视频新型压缩框架 | |
CN103686173A (zh) | 变换与反变换电路 | |
CN104780374A (zh) | 一种基于亮度编码的帧缓存有损压缩方法及装置 | |
CN103957426A (zh) | 一种rgb565真彩色图像有损压缩及解压方法 | |
CN110677644B (zh) | 一种视频编码、解码方法及视频编码帧内预测器 | |
CN106534870B (zh) | 一种基于rgb源视频的率失真优化编码方法 | |
CN116112694B (zh) | 一种应用于模型训练的视频数据编码方法及系统 | |
CN103533351B (zh) | 一种多量化表的图像压缩方法 | |
CN102495878B (zh) | 一种机器视觉检测结果的存储文件及方法 | |
CN105306941B (zh) | 一种视频编码方法 | |
CN114339263A (zh) | 一种针对视频数据的无损处理方法 | |
CN103379349A (zh) | 一种视点合成预测编码方法、解码方法、对应的装置及码流 | |
KR20110071204A (ko) | 웨이블릿 변환 기반의 jpeg2000에서의 병렬 처리 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |