目录
1基础知识
1.1三种冗余
令
b
和
b
1
b和b^1
b和b1代表相同信息的两种表示中的比特数,那么b比特表示的相对数据冗余R是
R
=
1
−
1
/
C
R=1-1/C
R=1−1/C
C称为压缩率
C
=
b
/
b
1
C=b/b^1
C=b/b1
- 编码冗余:编码是用于表示信息实体或事件集合的符号系统,在实际应用中,并不是每一个灰度都需要按照定长编码。编码冗余可以通过统计每一个灰度量出现的概率,并使用变长编码来减少冗余。
- 空间和时间冗余:由于多数二维灰度阵列的像素是空间相关的,在相关像素的表示中,信息被没有必要地重复了。可以使用行程编码来减少部分冗余。
- 不相关的信息:人类视觉系统忽略或者无用的信息。这些信息的去除通常称为量化,去除这种信息会导致定量信息的损失。
概率质量函数(PMF)定义一个离散随机变量完全等于某个值的概率
1.2 熵
从一个可能事件的离散集合
[
a
1
,
a
2
,
.
.
.
,
a
j
]
[a_1,a_2,...,a_j]
[a1,a2,...,aj],给定一个统计独立随机事件的信源,该集合的概率为
[
P
(
a
1
)
,
P
(
a
2
)
,
.
.
.
P
(
a
j
)
]
[P(a_1),P(a_2),...P(a_j)]
[P(a1),P(a2),...P(aj)],则每个信源输出的平均信息称为该信源的熵
H
=
−
∑
j
=
1
J
P
(
a
j
)
l
o
g
P
(
a
j
)
H=-\sum_{j=1}^{J} P(a_j)logP(a_j)
H=−∑j=1JP(aj)logP(aj)
熵作为表示不丢失信息的充分地描述一幅图像的最小数据量。
一幅图像中熵的数量与和信息与直觉相差很大
1.3 山农第一定理
也成为无噪声编码定理,使用一个单一码字考察了n给连续信源符号表示的组合,证明了
lim
n
→
∞
[
L
a
v
g
,
n
n
]
=
H
\lim_{n \to \infty} [\frac{L_{avg,n}}{n}]=H
limn→∞[nLavg,n]=H
L
a
v
g
,
n
L_{avg,n}
Lavg,n是表示所有n个符号组所需的编码符号的平均数。
1.4 保真度准则(去除视觉不相关信息会导致真实的或一定数量的信息丢失,保真度准则是用来量化这种丢失)
客观保真度:当信息损失可以表示为压缩处理的输入和输出的数学函数时。
主观保真度:使用人的主观评估来衡量图像的质量。将观察者的评估结果进行平均。
1.5 压缩过程
编码或压缩过程就是去除上述所说的三种冗余,映射器去除空间和时间冗余(可逆),量化器去除不相关信息冗余(不可逆),符号编码器去除编码冗余(可逆)。
解码或解压缩过程:解码器包含符号解码器和反映射器,以相反的顺序执行解码器的符号编码器和映射其的反操作,量化导致的不可逆的信息损失,所有没有反量化器。
2 压缩方法
2.1 霍夫曼编码(消除编码冗余)
参考数据结构内容,将所有信源按照频率从小到大分为节点,每次合并两个频率最小的节点,新节点的频率为两节点之和,知道所有的节点构成一颗二叉树。之后使用变长编码,频率最大的节点编码长度最小,频率最小的节点编码长度最大。
2.2 Golomb编码(非负整数)
给定非负整数n和一个正整数除数m,表示为 G m ( n ) G_m(n) Gm(n)的n关于m的Golomb编码是商 ⌊ n / m ⌋ \left \lfloor n/m \right \rfloor ⌊n/m⌋的一元编码和n mod m的二进制表示的一个合并。 G m ( n ) G_m(n) Gm(n)的构建步骤如下:
- 形成商 ⌊ n / m ⌋ \left \lfloor n/m \right \rfloor ⌊n/m⌋的一元编码(整数q的一元编码是q个1加一个0)。
- 令
k
=
⌈
l
o
g
2
m
⌉
k=\left \lceil log_2m \right \rceil
k=⌈log2m⌉,
c
=
2
k
−
m
c=2^k-m
c=2k−m,
r
=
n
m
o
d
m
r=n\ mod\ m
r=n mod m,并计算截短的余数
r
1
r^1
r1
r 1 = { r 截短至 k − 1 比特 0 ≤ r < c r + c 截短至 k 比特 其他 r^1=\left\{\begin{matrix}r截短至k-1比特& 0\le r<c\\r+c截短至k比特&其他\end{matrix}\right. r1={r截短至k−1比特r+c截短至k比特0≤r<c其他 - 连接1和2的结果。
Golomb-Rice码: m = 2 k , c = 0 的特殊情况, r 1 = r = N m o d M 截短至 k 比特 m=2^k,c=0的特殊情况,r^1=r=NmodM截短至k比特 m=2k,c=0的特殊情况,r1=r=NmodM截短至k比特
2.4算术编码
生成非块码。使用一个值来表示一个消息序列,具体实现方法是将
[
0
,
1
)
[0,1)
[0,1)之间按照各信源出现的概率分为区间,在各小区间上继续按照各信源出现的比例细分,直到序列末尾。
(自适应上下文相关的概率估计?)
2.5 LZW编码(图像中的空间冗余 无误差压缩)
定长码字分配给变长信源符号序列,不需要事先了解被编码符号出现的概率。建立字典,图像按从左到右,从上到下处理其像素的方式进行编码,当出现字典中没有出现过的连续灰度序列,将此连续灰度序列记录在字典中。
假设一个512字带有初始内容的字典如下。
2.6 行程编码
行程对指定一个新灰度的开始和具有该灰度的连续像素的数量。当没有足够的使得行程压缩有效的相等灰度的行程,压缩会发生少量扩展。
适合压缩二值图像。对行程本身进行变长编码可以实现额外的压缩。近似行程熵
H
R
L
=
H
0
+
H
1
L
0
+
L
1
H_{RL}=\frac{H_0+H_1}{L_0+L_1}
HRL=L0+L1H0+H1。
H0是黑色行程信源的熵的估计,H1是白色行程信源的熵的估计,L0是黑色行程的平均值,L1是白色行程的平均值。
CCITT压缩?
2.7 基于符号的编码
一幅图像被表示为多幅频繁出现的子图的一个集合,子图像被称为符号,通常是重复多次的字符位图,符号存储在一个符号字典中。则图像可以使用三元组 ( x , y , t ) (x,y,t) (x,y,t)的集合来编码, ( x , y ) (x,y) (x,y)表示图像中一个符号的位置,t表示符号字典中的序列,也就代表了一个个子图像。在这种编码方式下:一幅图像只需要由若干三元组以及符号字典来表示。
- JBIG2压缩
将图像分割为正文,半色调和普通内容的重叠和/或不重叠区域。
字符组成的正文:使用基于符号的编码
普通区域:使用算术编码或者MMR编码
2.7 比特平面编码
将行程编码技术和基于符号的编码技术通过单独处理图像的比特平面的方法用于多余两级灰度的图像。两种图像分解方法:
1.一幅m比特单色图像的灰度可以用如下形式的基2的多项式来表示:
a
m
−
1
2
m
−
1
+
a
m
−
2
2
m
−
2
+
.
.
.
.
.
.
.
a
1
2
1
+
a
0
2
0
a_{m-1}2^{m-1}+a_{m-2}2^{m-2}+.......a_12^1+a_02^0
am−12m−1+am−22m−2+.......a121+a020
2.m比特格雷码
g
m
−
1
.
.
.
.
g
2
g
1
g_{m-1}....g_2g_1
gm−1....g2g1,连续码字只有一个比特位不同,较小的灰度变化不太可能影响所有m个比特平面。
g
i
=
a
i
⊕
a
i
+
1
,
0
≤
i
≤
m
−
2
g_i=a_i\oplus a_{i+1},0\le i\le m-2
gi=ai⊕ai+1,0≤i≤m−2
g
m
−
1
=
a
m
−
1
g_{m-1}=a_{m-1}
gm−1=am−1
2.8 块变换编码
图像分为大小相等不重叠的小块,使用可逆线性变换把每个块映射为变换系数集合,对变换系数进行量化和编码。变换可参考书中2.6.7节。
压缩是在对变换系数的量化期间实现的。
正反变换核也称为基函数或者基图像
WHT变换
DCT(离散余弦变换)
DCT的信息携带能力要比DFT和WHT的信息携带能力强。
子图像尺寸对变换编码影响
- 比特分配
对变换后的子图像的系数进行截取,量化和编码的整个过程。 - 区域编码
根据最大方差进行选择保留的系数。
具有最大方差的变换系数携带大部分图像信息,编码处理中应该保留。区域模板,在最大方差的位置上设为1,所有其他位置上设为0。 - 阈值编码
根据最大幅度进行选择保留的系数。在为每幅彼此不同的子图像保留变换系数的位置方面具有固有的自适应性。对于任何子图像,最大幅值的变换系数对重建后的子图像的质量的贡献最大。
JPEG编码解码
2.9 预测编码
开销小,可以是无误差的或有损的压缩,通过消除紧邻像素在空间和时间上的冗余来实现。对像素中的新信息进行提取和编码,新信息定义为该像素的实际值与预测值之间的差。
无损预测编码如下图
预测编码与空间冗余
f
~
(
x
,
y
)
=
r
o
u
n
d
[
a
f
(
x
,
y
−
1
)
]
\tilde f(x,y)=round[af(x,y-1)]
f~(x,y)=round[af(x,y−1)]
预测编码与时间冗余
f
~
(
x
,
y
,
t
)
=
r
o
u
n
d
[
a
f
(
x
,
y
,
t
−
1
)
]
\tilde f(x,y,t)=round[af(x,y,t-1)]
f~(x,y,t)=round[af(x,y,t−1)]
- 运动补偿预测残差
视频压缩系统避免数据扩展问题的方法:1.在预测和差分处理期间,跟踪目标运动并对其进行补偿。2.存在帧间相关而不足以发挥预测编码的有优点,使用另一个编码方法。
有损预测编码如下图
小波编码
3 数字图像水印
数据插入一幅图像中的过程
-
可见水印:
f w = ( 1 − a ) f + a w f_w=(1-a)f+aw fw=(1−a)f+aw,其中 f w f_w fw代表水印的图像。 f f f表示未加水印图像, w w w代表水印。通过调整 a a a的值来控制水印和底部图像的相对可见性。 -
不可见水印:
裸眼看不见,使用合适的解码算法可以恢复,不可见性是通过作为可见的冗余信息插入水印来保证的。 f w = 4 ( f 4 ) + w 64 f_w=4(\frac{f}{4})+\frac{w}{64} fw=4(4f)+64w上述公式将水印插入两个最低阶比特中。