贝斯特365-365提前结束投注-365bet中国客服电话

图像压缩

图像压缩

压缩的技术分成两种:失真压缩(lossy compression)的压缩率较高,但无法重建原来的资料,例如:DFT、DCT、KLT(搭配量化(quantization)与截断(truncation))、4:2:2或4:2:0、多项式曲线的近似(polynomial approximation);无失真压缩(lossless compression)的压缩率较低,但可以重建原来的资料,例如:二元编码(binary coding)、霍夫曼编码(Huffman coding)、算术编码(arithmetic coding)、格伦布编码 (Golomb coding)。

4:2:2或4:2:0

编辑

此技术运用的是空间上的一致性。

将像素(pixel)的RGB值,利用以下的公式转换成YCbCr

Y = 0.299 R + 0.578 G + 0.114 B

Cb = -0.169 R - 0.331 G + 0.500 B ( Cb = 0.565 (B - Y) )

Cr = 0.500 R - 0.419 G - 0.081 B ( Cr = 0.713 (R - Y) )

其中 Y 是亮度(Luminance),Cb是蓝色色差(chrominance) ,Cr 是红色色差(chrominance)。

人类的视觉系统,对于亮度比较敏感,而对于彩度比较不敏感。

因此我们可以利用人类视觉的特性,减少Cb、Cr的取样个数,取样格式有4:2:2 与 4:2:0两种。

假设一张图片原本压缩前(即4:4:4)的Y、Cb、Cr各有M×N个值,4:2:2的压缩Y保留为M×N个值、Cb、Cr则取样到各剩下M/2×N个值;4:2:0的压缩Y同样保留为M×N个值、Cb、Cr则进一步取样到各剩下M/2×N/2个值。

从4:4:4到4:2:2,压缩率约为2/3;从4:4:4到4:2:0,压缩率约为1/2。

从4:4:4压缩到4:2:2,再压缩到4:2:0,单一像素(pixel)储存的bit 数可以等效为:24 bits/pixel → 16 bits/pixel → 12 bits/pixel。

还原时,则是利用插值(interpolation)的方式:

C

b

[

2

m

+

1

,

2

n

]

{\displaystyle \operatorname {C_{\text{b}}} [2m+1,2n]\,\!}

= 1/2 ×(

C

b

[

2

m

,

2

n

]

{\displaystyle \operatorname {C_{\text{b}}} [2m,2n]\,\!}

+

C

b

[

2

m

+

2

,

2

n

]

{\displaystyle \operatorname {C_{\text{b}}} [2m+2,2n]\,\!}

)

8×8 离散馀弦转换(DCT)

编辑

此技术运用的是频率上的一致性。

通常我们会将影像切成8×8的方格作离散馀弦转换(DCT),原因如下:

一张影像的每个区块,其高低频成分都不一样,对整张影像直接作离散馀弦转换(DCT),多少会有高频成分的出现。如果切成8×8的方格,则对大部分的方格几乎都没有高频成分。

降低记忆体的需要量

降低运算量

经过离散馀弦转换(DCT)后的8×8矩阵称为DCT矩阵。DCT矩阵最左上角的系数称为直流(DC)成分,而其他63个系数则称为交流(AC)成分。越靠近DC值的AC值系数表示频率较低的部分,而越往右下角方向的AC值代表的频率则越高。

2D的8×8 DCT的输出通常会按照"zigzag"的顺序,将2D转为1D的型态。按照此顺序排列,能量可能较大的会被摆在前面,而后面的高频成分从某个值开始后几乎为零,以符号EOB(end of block)表示,指后面的高频的部分经过量化(quantization)之后皆为0。

差分编码(Differential coding)

编辑

此技术运用的是空间上的一致性。

差分编码指的是,除第一个元素外,将其中各元素都表示为各该元素与其前一元素的差的编码。

DC

[

i

,

j

]

{\displaystyle \operatorname {DC} [i,j]\,\!}

,是针对

DC

[

i

,

j

]

{\displaystyle \operatorname {DC} [i,j]\,\!}

-

DC

[

i

,

j

1

]

{\displaystyle \operatorname {DC} [i,j-1]\,\!}

去编码,

而不是直接对

DC

[

i

,

j

]

{\displaystyle \operatorname {DC} [i,j]\,\!}

作编码。

霍夫曼编码(Huffman coding)

编辑

霍夫曼编码(Huffman coding)的编码原则:(Greedy Algorithm)

所有的码皆在编码树(coding tree)的端点,再下去没有分枝。满足唯一可解译码(uniquely decodable code)与即时可解码(instantaneous decodable code)。

机率越大的,编码长度(code length)越短;机率越小的,编码长度(code length)越长。

假设

S

a

{\displaystyle S_{\text{a}}\,\!}

是第L层的节点(node),

S

b

{\displaystyle S_{\text{b}}\,\!}

是第L+1层的节点(node),则

P

(

S

a

)

{\displaystyle \operatorname {P} (S_{\text{a}})\,\!}

>=

P

(

S

b

)

{\displaystyle \operatorname {P} (S_{\text{b}})\,\!}

必须满足。

不满足以上的条件则往上推一层。

算术编码(Arithmetic coding)

编辑

霍夫曼编码(Huffman coding)是将每一笔资料分开编码,算术编码(Arithmetic coding)则是将多笔资料一起编码,因此压缩效率比霍夫曼编码(Huffman coding)更高,近年来的压缩资料大多使用算术编码(Arithmetic coding)。

范例:

假设要对X来作二进位的编码,且经过事先的估计,

X

[

i

]

=

a

{\displaystyle \operatorname {X} [i]=a\,\!}

的机率为0.8,

X

[

i

]

=

b

{\displaystyle \operatorname {X} [i]=b\,\!}

的机率为0.2。

若实际上输入的资料为

X

=

a

a

a

b

a

a

{\displaystyle \operatorname {X} =aaabaa\,\!}

Initial(

X

[

1

]

=

a

{\displaystyle \operatorname {X} [1]=a\,\!}

):lower =0,upper=0.8

When i = 2 (

X

[

2

]

=

a

{\displaystyle \operatorname {X} [2]=a\,\!}

):lower =0,upper=0.64

When i = 3 (

X

[

3

]

=

a

{\displaystyle \operatorname {X} [3]=a\,\!}

):lower =0,upper=0.512

When i = 4 (

X

[

4

]

=

b

{\displaystyle \operatorname {X} [4]=b\,\!}

):lower =0.4096,upper=0.512

When i = 5 (

X

[

5

]

=

a

{\displaystyle \operatorname {X} [5]=a\,\!}

):lower =0.4096,upper=0.49152

When i = 6 (

X

[

6

]

=

a

{\displaystyle \operatorname {X} [6]=a\,\!}

):lower =0.4096,upper=0.475136

由于 lower =0.4096,upper=0.475136

lower <= 14*

2

5

{\displaystyle 2^{-5}\,\!}

< 15*

2

5

{\displaystyle 2^{-5}\,\!}

<= upper

所以编码的结果为

14

(2,5)

=

01110

{\displaystyle 14_{\text{(2,5)}}=01110\,\!}

相关推荐