方块编码也叫方块截断编码(block truncation coding,简称BTC)是静态图像编码中的一种, 其原理是把一幅图像分为大小为N×N的子像块(简称子块),由于小块内各相邻像素间具有亮度互相近似的相关性,于是只选用两个适当的亮度来近似代表小块内各像素原来的亮度,然后指明子块内的各像素分别属于哪个亮度。
定义
静态图像编码是研究怎样利用图像固有的统计特性(信源特性),以及视觉的生理学、心理学特性(信宿特性),或者记录设备(如普通照相底片)和显示设备(如电视、监示器)等的特性,经过压缩编码从原始图像信息中提取出有效信息,尽量去掉那些无用的冗余信息,以便高效率地进行图像的数字传输或数字存储;而在复原时仍能获得与原始图像相差不多的复原图像,即保持图像信息中的有效信息。
分类
静态图像的编码方法主要分为PCM法和压缩编码法两大类,其中压缩编码法又分为预测法、变换法、平均信息法、内插法、运动补偿法和其他方法等六小类。每个小类下都有相关的具体算法。
背景
方块截断编码也称为方块编码,是一种用于灰度图像的有损数据压缩算法。这种算法将图像分为以方块为单位,在每一方块中,在保持原有平均数和标准方差(即保持二阶矩)的同时,减少灰度等级,以达到压缩的目的。方块截断编码是普渡大学的O.R.Mitchell和E.J.Delp两位教授于1979年首先提出的。
编码方法
设图像中的一个子块的大小为m=N×N个像素,子块中第i个像素为Pi,其亮度值为Xi,方块的两个代表性亮度为a0、a1,称之为亮度级分量,用一个二元码φi指明像素Pi编码后属于a0或a1,φi称为分辨力分量。设方块内的亮度阈值为XT,像素Pi编码后的电平值为Yi,则基本编码方法可用下式表示:
(1.1)
(1.2)
由(1.1)和(1.2)式可知,编码后方块的像素亮度{Y1,Y2,…,Ym}可以用{a0,a1}和{φ1,φ2,…,φm}的组合表示,用它们作为传输内容,收端也能恢复出编码图像。其中前面两个元素一般具有与亮度值相同的等级,而后者为一个m比特的比特面,因此可以降低传输数码率。
设a0、a1各用Pbit,则编码后每个像素的平均比特数为:
B=(m+2p)/m=1+2p/m (1.3)
由于a0、a1是用来代表亮度层次的,一般需要6~8bit,如取m=4×4,P=8,则经方块编码后可压缩到每像素2bit。
由(1.3)式可见,m越大,B越小,即压缩比越高。但此时图像质量也下降,因为方块尺寸越大,子块内像素的相关性也越小,只用两个灰度作近似,逼真度当然就越差。通常m=4×4是比较折衷的方式。
参数的选择
m一定时,编码参数a0、a1及XT的选择对恢复图像的质量有很大的影响。下面是两种较为典型的方案。
(1)保持一阶矩、二阶矩的参数选择
取阈值XT= ,并记:q= ,它为编码后亮度为a1的像素的个数。编码策略是保持子块的一阶矩和二阶矩不变,即:式(1.4)
解此方程组可得式(1.5):
其中 为子块的均方差。
(2)均方误差最小的参数选择
取XT= ,编码策略是使均方误差最小,即:
(1.6)
同样,记q= ,可以得出:
(1.7)
由于a0、a1分别是小于和大于阈值XT的像素的平均值,因此有时记作XL和XH。
以上介绍的是两种比较简单的方案。由于算法中已指定了XT= ,所以实现起来比较方便。在一些场合还可以再增加一个方程,作为XT或q的限制条件,这样可以增加一些保持信息,但同时也增加了算法的复杂性。
需要指出的是,方块编码是非信息保持型编码,它相当于只使用了两个电平的量化器,而且在应用中因为取整也会引入一些附加的误差。
降低数码率的方法
在方块尺寸固定的情况下,可以从两方面着手进一步降低码率。
①选择合适的传输用的量度级分量,通过成组编码的方式降低传输码率。
对于上面的方案(1),根据(1.5)式,可以用和取代a0、a1进行传输,收端则同样可以恢复编码图像。
研究发现,人的视觉有这样的特性,当图像的方差大时,即亮度变化大时,对图像的平均值不太敏感;而当图像方差小,即亮度变化平缓时,要求所传输的平均值要尽量精确些。根据这一特性,对编码参数作这样的组合,方差大时,传输平均值所用的比特少,即对平均值进行了粗量化,反之,则用较多的比特数。表1.1是实现这种组合的一个例子。原图像亮度有32个层次,若分别对和传输,共需5+4=9bit,而根据表中的组合,共有128种,仅需7bit,因此码率得以降低,而引入的误差对人眼的观察是不敏感的。
表1.1 方差与平均值成组编码及所需码字数
对于方案(2),采用{XL, }或{ ,XH}作为传输亮度级,则根据下式同样可以恢复编码图像。
m =(m-q)XL+qXH(1.8)
实验表明,{XL, }和{ ,XH}的统计分布大部分集中在45°斜线附近,如图1.1所示。这表明,对于{XL, }和{ ,XH},很多组合是很少出现甚至不出现,编码时可以省去许多码字。而分别对各亮度级分量进行编码,相当于把所有的组合都考虑在内。因此,成组编码比分别编码减少了码字总数,即降低了码率。
采用成组编码降低码率的理论依据,通常称之为矢量量化编码。
②通过比特面的再划分,降低传输数码率。
例如,子块尺寸为4×4时,可将比特面分为4个2×2的次比特面,如图1.2(a)所示。实验发现,次比特面a,b,c,d为全0或全1的相对次数要高,而其他情况很少出现,于是采用图1.2(b)的码字分配方法就可以实现比特面码率的降低。
参考文献
图像编码基础(第3版)姚庆栋毕厚杰王兆华徐孟侠等编著清华