第八章 图像压缩
8.1基础知识
数据冗余R为 R = 1 − 1 C R=1-\cfrac1C R=1−C1 C为压缩率,定义为 C = b b ′ C=\cfrac{b}{b'} C=b′b
二维灰度阵列受如下可被识别和利用的三种主要类型的数据冗余的影响:
- 编码冗余。编码是用于表示信息实体或事件集合的符号系统(字母、数字、比特和类似的符号等)。每个信息或事件被赋予一个编码符号的序列,称之为码字。每个码字中的符号数量就是该码字的长度。在多数二维灰度阵列中,用于表示灰度的8比特编码所包含的比特数要比表示该灰度所需要的比特数多。
- 空间和时间冗余。因为多数二维灰度阵列的像素是空间相关的(即每一个像素类似于或取决于相邻像素),在相关像素的表示中,信息被没有必要地重复了。在视频序列中,时间相关的像素(即类似于或取决于相邻帧中的那些像素)也是重复的信息。
- 不相关的信息。多数二维灰度阵列中包含有一些被人类视觉系统忽略或与用途无关的信息。从没有被利用的意义上看,它是冗余的。
8.1.1 编码冗余
例子:
r
k
p
r
(
r
k
)
c
o
d
e
(
1
)
l
e
n
g
1
(
r
k
)
c
o
d
e
(
2
)
l
e
n
g
1
(
r
k
)
r
87
=
87
25
01010111
8
01
1
r
128
=
128
0.47
10000000
8
1
1
r
186
=
186
0.25
11000100
8
000
3
r
255
=
255
0.03
11111111
8
001
3
r
i
≠
87
,
126
,
186
,
255
0
−
8
−
0
\begin{gathered} \begin{array}{c|c|c|c|c|c} \hline {r_k}&{p_r(r_k)}&{\mathrm{code(1)}}&{\mathrm{leng_1(r_k)}}&{\mathrm{code(2)}}&\mathrm{leng_1(r_k)}\\\hline {r_{{87}}=87}&{25}&{01010111}&{8}&{01}&{1}\\ {r_{{128}}=128}&{0.47}&{10000000}&{8}&{1}&{1}\\ {r_{\mathrm{186}}=186}&{0.25}&{11000100}&{8}&{000}&{3}\\ {r_{\mathrm{255}}=255}&{0.03}&{11111111}&{8}&{001}&{3}\\ {r_{\mathrm{i}}\neq \mathrm{87},126,186,255}&{0}&{-}&{8} &{-}&{0}\\ \hline\end{array} \end{gathered}
rkr87=87r128=128r186=186r255=255ri=87,126,186,255pr(rk)250.470.250.030code(1)01010111100000001100010011111111−leng1(rk)88888code(2)011000001−leng1(rk)11330
则压缩率和冗余为: C = 8 1.81 = 4.42 , R = 1 − 1 4.42 = 0.774 C=\cfrac{8}{1.81}=4.42,\quad R=1-\cfrac{1}{4.42}=0.774 C=1.818=4.42,R=1−4.421=0.774
8.1.4图像信息的度量
率过程建模,该过程可以用一种与直觉一致的方式加以度量。根据这一推测,一个具有概率 P(E)的随机事件E可被说成是包含
I
(
E
)
=
log
1
P
(
E
)
=
−
log
P
(
E
)
I(E)=\log\frac{1}{P(E)}=-\log P(E)
I(E)=logP(E)1=−logP(E)
从一个可能事件的离散集合{
a
1
,
a
2
,
…
,
a
j
a_1, a_2,\dots, a_j
a1,a2,…,aj},给定一个统计独立随机事件的信源,与该集合相联系的概率为{
P
(
a
1
)
,
P
(
a
2
)
,
…
,
P
(
a
j
)
P(a_1), P(a_2),\dots, P(a_j)
P(a1),P(a2),…,P(aj)},则每个信源输出的平均信息称为该信源的嫡,即
H
=
−
∑
j
=
1
j
P
(
a
j
)
log
P
(
a
j
)
H=-\sum_{j=1}^{j}{P}(a_j)\log P(a_j)
H=−j=1∑jP(aj)logP(aj)
8.1.5保真准则
输入图 f ^ ( x , y ) \hat{f}(x,y) f^(x,y)和 近似 f ( x , y ) f(x,y) f(x,y) 的之间误差 e ( x , y ) e(x,y) e(x,y)为 e ( x , y ) = f ^ ( x , y ) − f ( x , y ) e(x,y)=\hat{f}(x,y)-f(x,y) e(x,y)=f^(x,y)−f(x,y) 总误差为 ∑ x = 0 M − 1 ∑ y = 0 N − 1 [ f ^ ( x , y ) − f ( x , y ) ] \sum_{x=0}^{M-1}\sum_{y=0}^{N-1}\left[\hat{f}(x,y)-f(x,y)\right] x=0∑M−1y=0∑N−1[f^(x,y)−f(x,y)] 均方根误差为 e rms = [ 1 M N ∑ x = 0 M − 1 ∑ y = 0 N − 1 [ f ^ ( x , y ) − f ( x , y ) ] 2 ] 1 / 2 e_{\text{rms}}=\left[\frac{1}{MN}\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}\left[\hat{f}(x,y)-f(x,y)\right]^2\right]^{1/2} erms=[MN1x=0∑M−1y=0∑N−1[f^(x,y)−f(x,y)]2]1/2 均方差信噪比为 SNR ms = ∑ x = 0 M − 1 ∑ y = 0 N − 1 f ^ ( x , y ) 2 ∑ x = 0 M − 1 ∑ y = 0 N − 1 [ f ^ ( x , y ) − f ( x , y ) ] 2 \text{SNR}_{\text{ms}}=\cfrac{\displaystyle \sum_{x=0}^{M-1}\displaystyle \sum_{y=0}^{N-1}\hat{f}(x,y)^2}{\sum_{x=0}^{M-1}\sum_{y=0}^{N-1}\left[\hat{f}(x,y)-f(x,y)\right]^2} SNRms=∑x=0M−1∑y=0N−1[f^(x,y)−f(x,y)]2x=0∑M−1y=0∑N−1f^(x,y)2
8.1.6图像压缩模型
8.17图像格式、容器和压缩标准
国际支持图像标准:
名称 | 组织 | 描述 |
---|---|---|
二值静止图像 | ||
CCITT Group3 | ITU-T | 通过电话线传输二进制文档的传真方法,支持一维二维行程编码及哈夫曼编码 |
CCITT Group4 | ITU-T | CCITT Group3的精简版,只支持二维行程编码 |
JBIG/JBIG1 | ISO/TEC/ITU-T | 联合二值图像专家组标准,适用于二值图像的渐进无损压缩。 |
JBIG2 | ISO/TEC/ITU-T | JBIG1的后续版本,适用于桌面、互联网和传真应用中的二值图像,所用的压缩方法是基于内容的,对文本和半色调区域使用基于字典的方法,对其他图像内容使用哈夫曼编码或算术编码,该方法可以是无损的或有损的。 |
连续色调静止图像 | ||
JPEG | ISO/TEC/ITU-T | 针对图像质量的联合图片专家组标准。该标准的有损基线编码系统对图像块变换编码、哈夫曼编码和行程编码使用量化离散余弦变换,是在互联网上常用的图像压缩方法之一 |
JPEG-LS | ISO/TEC/ITU-T | 基于自适应预测,上下文建模、和Golomb码的一种无损或接近无损的压缩标准 |
JPEG-2000 | ISO/TEC/ITU-T | JPEG的后续版本,使用算术编码和量化离散小波变换。压缩可以是有损的或无损的 |
其他图像标准:
名称 | 组织 | 描述 |
---|---|---|
BMP | Microsoft | Windows位图。主要用于为压缩图像的一种文件格式 |
GIF | CompuServe | 图形交换格式,对1-8位图像使用LZW编码 |
Adobe Systems | Portable Document Format,可移植文档格式,以与设备和分辨率无关的方式来表示二维图像,可左右JPEG等图像格式的容器来使用,某些PDF版本已成为ISO标准 | |
PNG | W3C | Portable Network Graphics,一种支持无损压缩的位图图形格式。一种说法是PNG is Not GIF ,GIF当时受专利保护,PNG为替代GIF |
TIFF | Aldus | 标记图像文件格式。一种灵活的文件格式,支持各种图像压缩标准,包括JPEG、JPEG-LS,JPEG-2000,JPIG2等 |
WebP | WebP通过WebP VP8,使用空间预测和LZW反向引用的一个变体和哈夫曼编码来实现 |
国际支持视频标准:
名称 | 组织 | 描述 |
---|---|---|
DV | IEC | 数字视频(Digital Video),是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式,如电子新闻采集和摄像机。为简单编辑目的而单独压缩各帧 |
H.261 | ITU-T | 是1990年ITU-T制定的一个视频编码标准,属于视频编解码器,适用于ISDN综合业务数字网络线路的一种双向视频会议标准。设计的目的是能够在带宽为64kbps的倍数的综合业务数字网(ISDN for Integrated Services Digital Network)上传输质量可接受的视频信号 |
H.262 | ITU-T | H.262是由ITU-T的VCEG组织和ISO/IEC的MPEG组织联合制定的,所以制定完成后分别成为了两个组织的标准,正式名称是"ITU-T建议H.262"和"ISO/IEC 13818-2"。这两个标准在所有的文字叙述上都是相同的(也许除了封面和标价之外)。大家所熟知的DVD就是采用了该技术。H.262在技术内容上和ISO/IEC的MPEG-2视频标准(正式名称是ISO/IEC 13818-2)一致。 |
H.263 | ITU-T | 由ITU-T用于视频会议的低码率影像编码标准。是适用于普通电话解调器的增强型H.261。它的第一版于1995年完成,在所有码率下都优于之前的H.261。之后还有在1998年增加了新的功能的第二版H.263+,或者叫H.263v2,以及在2000年完成的第三版H.263++,即H.263v3。 |
H.264 | ITU-T | 又称为MPEG-4第10部分,高级视频编码,是一种面向块,基于运动补偿的视频编码标准。第一版标准的最终草案于2003年5月完成。H.264由于算法优化,可以低于1Mbps的速度实现标清(分辨率在1280P*720以下)数字图像传送; |
H.265/MPEG-H/HEVC | ITU-T/ISO/IEC | 高效视频编码,H。264的扩展,通常用于4K视频应用中。H.265则可以实现利用1~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。推出时间2013年2月。 |
MPEG-1 | ISO/IEC | 一种运动图像专家组标准,用于CD-ROM应用,是MPEG组织制定的第一个视频和音频有损压缩标准,也是最早推出及应用在市场上的MPEG技术,其原来主要目标是在CD光盘上记录影像,后来被广泛应用在VCD光盘。视频压缩算法于1990年定义完成。1992年底,MPEG-1正式被批准成为国际标准。 |
MPEG-2 | ISO/IEC | 是“运动图像和相关音频信息的通用编码”的标准。适用于传输速率高达15Mb/s的DVD应用。虽然MPEG-2的效率不如H.264/AVC和H.265/HEVC等新标准,但与现有硬件和软件的向后兼容性意味着它仍在广泛使用,例如在无线数字电视广播和DVD-Video中。在1996年7月最终批准。 |
MPEG-4 | ISO/IEC | 由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态影像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网络上流、光盘、语音发送(视频电话),以及电视广播。 |
MPEG-4AVC | ISO/IEC | 与H.264相同 |
其他视频标准:
名称 | 组织 | 描述 |
---|---|---|
AVS | MII | 中国开发的音视频标准,为中国第二代信源编码标准。第三代AVS标准的制定工作已经完成。为了推动AVS标准的开发和推广,华为、TCL、创维等公司成立了中关村视听产业技术创新联盟(简称:AVS产业联盟),致力于AVS标准的开发和推广。 |
HDV | 公司联盟 | 高清视频、高清电视的DV扩展 |
M-JPEG | 多家公司 | Motion JPEG,Motion Joint Photographic Experts Group,其中每一帧图像都分别使用JPEG编码。M-JPEG常用在数字相机和摄像头之类的图像采集设备上,非线性剪辑系统也常用这种格式。QuickTime播放器和包括Mozilla Firefox,Google Chrome,Safari在内许多网页浏览器原生支持M-JPEG |
Quick-Time | Apple Computer | 由苹果公司开发的支持DV等其他音视频格式的媒体容器 |
VC-1 WMV9 |
SMPTE Microsoft |
互联网上最通用的视频格式。适用于高清和蓝光高清DVD |
WebP VP8 |
WebP最初在2010年9月发布,其支持库于2018年4月发布1.0版本。截至2021年5月,已有94%的浏览器支持此格式,Google于2010年9月30日首次公布WebP格式,它派生自影像编码格式VP8[12],被认为是WebM多媒体格式的姊妹项目,是Google在购买On2 |
8.2一些基本的压缩方法
8.2.1霍夫曼编码
霍夫曼方法的第一步是通过对所考虑符号的概率进行排序并将具有最小概率的符号合并为一个符号来替代下次信源化简过程中的符号,从而创建一个简化信源系列。下图针对二进制编码说明了这种处理(也可以构造K元霍夫曼编码)。在最左边,一组虚构的信源符号集合及它们的概率根据概率值的减少从上到下排列。为形成第一次信源简化,底部的两个概率0.06和0.04 合并,形成了一个概率值为0.1的“复合符号”。这个复合符号及其对应的概率被置于第一个信源简化列中,以便简化后信源的概率仍按其值从最大到最小排列。这个过程一直重复持续到信源只有两个符号的简化信源(在最右边)为止。
平均长度:
L
a
r
g
=
(
0.4
)
(
1
)
+
(
0.3
)
(
2
)
+
(
0.1
)
(
3
)
+
(
0.1
)
(
4
)
+
(
0.06
)
(
5
)
+
(
0.04
)
(
5
)
=
2.2
L_{\mathrm{arg}}=(0.4)(1)+(0.3)(2)+(0.1)(3)+(0.1)(4)+(0.06)(5)+(0.04)(5)=2.2
Larg=(0.4)(1)+(0.3)(2)+(0.1)(3)+(0.1)(4)+(0.06)(5)+(0.04)(5)=2.2
8.2.2Golomb编码
给定一个非负整数n和一个正整数除数m>0后,表示为Gm(n)的n关于m的Golomb编码是商[n/m]的一元编码和n modm的二进制表示的一个合并。G(n)的构建如下:
- 形成商 ⌊ n / m ⌋ \lfloor n/m\rfloor ⌊n/m⌋的一元编码(整数q的一元编码定义为q个1紧跟着一个0)。
- 令 k = ⌈ log 2 m ⌉ , c = 2 k − m , r = n m o d m k=\lceil\log_{2}m\rceil,c=2^{k}-m,r=n\bmod m k=⌈log2m⌉,c=2k−m,r=nmodm,并计算截短的余数r’,例如,使其满足 r ′ = { r 截短至 k − 1 比特 , 0 ≤ r < c r + c 截短至 k 比特 , e l s e r'=\left\{\begin{array}{l } r截短至k-1比特,&0\leq r<c\\ r+c截短至k比特,&\mathrm{else}\\ \end{array}\right. r′={r截短至k−1比特,r+c截短至k比特,0≤r<celse
- 连接步骤1和步骤2的结果。
8.2.3算术编码
与前两节的变长编码不同,算术编码生成的是非块码。信源符号和码字之间不存在一一对应的关系。相反,算术编码给信源符号(或消息)的整个序列分配了一个单一的算术码字。这个码字本身定义了一个介于0和1之间的实数间隔。当消息中的符号数量增加时,用于表示消息的间隔会变小,而表示该间隔所需的信息单位(假设为比特)的数量则会变大。消息的每个符号根据其出现的概率来减小该区间的大小。
图8.12说明了算术编码的基本过程。这里,对来自一个四符号信源的五符号序列或消息
a
1
a
2
a
3
a
3
a
4
a_1a_2a_3a_3a_4
a1a2a3a3a4进行编码。在编码处理的开始,假设消息占据整个半开区间
[
0
,
1
)
[0,1)
[0,1)。
a
1
a_1
a1 与
[
0
,
0.2
)
[0,0.2)
[0,0.2)相联系。与在下图中、区间
[
0
,
0.2
)
[0,0.2)
[0,0.2)就被扩展到该图形的全高度,且其端点用该窄区间的值来标注。然后,这个缩窄的区间根据原始信源符号的概率进行细分,并继续对下一个消息符号进行这种处理。采用这种方式,符号
a
2
a_2
a2将该子区间变窄为
[
0.04
,
0.08
)
[0.04,0.08)
[0.04,0.08),符号
a
3
a_3
a3进一步将该子区间变窄为
[
0.056
,
0.072
)
[0.056,0.072)
[0.056,0.072),依次类推。必须保留最后的消息符号,以作为特定的消息结束指示符,它将子区间变窄为
[
0.06752
,
0.0688
)
[0.06752, 0.068 8)
[0.06752,0.0688)。当然,在这个子区间内的任何数字(如 0.068)都可以用来表示该消息。
8.2.4LZW编码
LZW编码在概念上非常简单。在编码过程的开始阶段,先构建一个包含被编码信源符号的码书或字典。对于8比特单色图像,字典中的前256个字被分配给灰度值0,1,2,…, 255,。当编码器顺序地分析图像像素时,不在字典中的灰度序列被放置在算法确定的位置(即下一个未用的位置)。例如,如果图像的前两个像素为39 39,则序列“39-39”可能被分配到256的位置,该位置后面的地址保留给灰度级0到255。下次遇到两个连续的39 39时,就用码字256——即包含序列39-39的位置的地址——来表示它们。如果在编码过程中采用一个9比特、512字的字典,则最初用于表示这两个像素的(8+8)比特被单个9比特码字替代。
8.2.5行程编码
通常可用相同灰度的行程表示为行程对来压缩,其中每个行程对指定一个新灰度的开始和具有该灰度的连续像素的数量。这种称为行程编码的技术,是20世纪50年代发展起来的,连同其二维扩展一起,已成为传真编码标准的压缩方法。压缩是通过消除空间冗余的一种简单形式(即一组相同的灰度)来实现的。当相同像素的行程较小(或没有)时,行程编码会导致数据扩展。
8.2.6基于符号的编码
在基于符号或基于记号的编码中,一幅图像被表示为多幅频繁发生的子图像的一个集合,称为符号。每一个这样的符号都存储在一个符号字典中,且该图像以一个三元组{(xi,y,t), (x,y,t),…}的集合来编码,其中,每个(x,y)对规定了图像中一个符号的位置,而记号t,是该符号或子图像在字典中的地址。也就是说,每一个三元组表示图像中一个字典符号的一个实例。通过仅存储一次重复的符号,可以有效地压缩图像通,特别是在文档存储和检索应用中,在这种情况下,符号通常是重复多次的字符位图。如下图所示,符号a和符号n多次出现,可采用符号编码将其压缩。
8.2.7比特平面编码
由于灰度图像的压缩效果更好,所以我们可以采用将m比特分层。一幅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}+\cdots+a_{1}2^{1}+a_{0}2^{0}
am−12m−1+am−22m−2+⋯+a121+a020
缺点在于灰度较小变化时比特平面也可能产生巨大变化,如127(01111111)和128(10000000)之间的变化,改进方法是采用格雷码。格雷码相邻数字之间仅有一个比特位的变化。
8.2.8块变换编码
在这一节,我们考虑一种压缩技术,该技术把图像分成大小相等(如8×8)且不重叠的小块,并使用二维变换单独地处理这些块。在块变换编码中,用一种可逆线性变换(如傅里叶变换)把每个块或子图像映射为变换系数集合,然后,对这些变换系数进行量化和编码。对于大多数图像,大量系数都有较小的幅度值,并且可被粗糙地量化(或完全抛弃)而几乎没有多少图像失真。
上图显示了一个典型的块变换编码系 统。解码器执行(除了量化功能外)与编码器相反顺序的步骤。编码器执行4种相对简单的操作:子图像分解、 变换、量化和编码。一幅大小为M×N的输人图像首先被分解为大小为 n ∗ n n*n n∗n的子图像,然后变换这些子图以生成 M ∗ N / n 2 M*N /n^2 M∗N/n2个子图像变换阵列,每个阵列的大小为 n ∗ n n *n n∗n。变换处理的目的是对每幅子图像中的像素进行去相关,或用最少数量的变换系数包含尽可能多的信息。然后,在量化阶段,以一种预定义的方式有选择性地消除或更粗略地量化那些携带最少信息的系数(本节稍后会讨论一些方法)。这些系数对重建的子图像质量的影响最小。通过对量化后的系数进行编码(通常使用变长编码)结束编码过程。任何或所有的变换编码步骤都可以根据局部图像内容进行适应性调整,这称为自适应变换编码,而如果这些步骤对所有子图像都是固定的,则称为非自适应变换编码。
8.2.9预测编码
无损预测编码
消除紧邻像素在空间和时间上的冗余来实现的,它仅对每个像素中的新信息进行提取和编码。一个像素的新信息定义为该像素的实际值与预测值之间的差。
上图显示了一个无损预测编码系统的基本组成。该系统由一个编码器和一个解码器组成,编码器和解码器中均包含有一个相同的预测器。离散时间输人信号f(n)的连续样本被传入编码器,预测器根据指定数量的以往样本来生成每个样本的预期值。然后,预测器的输出被四舍五人为最接近的整数,表示为f(n),并使用这个整数来形成差值或预测误差 e ( n ) = f ( n ) − f ^ ( n ) e(n)=f(n)-\hat{f}(n) e(n)=f(n)−f^(n) 使用变长码来对这个误差进行编码(用符号编码器),以生成压缩数据流的下一个元素。上图 中的解码器根据接收到的变长码字重建e(n),并执行反操作 f ( n ) = e ( n ) + f ^ ( n ) f(n)=e(n)+\hat{f}(n) f(n)=e(n)+f^(n) 以解压缩或重建原始输入序列。
有损预测编码
在无损预测编码模型中加入一个量化器,并在关于空间预测器的上下文中,探讨重建精度和压缩性能间的折中。如上图所显示,代替无误差编码器的取最接近整数功能的量化器被插入到了符号编码器和形成预测误差的那一点之间。该量化器将预测误差映射为有限范围内的输出,表示为
e
˙
(
n
)
\dot{e}(n)
e˙(n),它确定了压缩量和产生的失真量。为了接纳量化步骤的加入,必须更改图中的无误差编码器,以便由编码器和解码器产生的预测相等。如图所示,这是通过在反馈环中放置一个有损编码器的预测器来完成的,其中,表示为
f
˙
(
n
)
\dot{f}(n)
f˙(n) 的输入是过去的预测函数与相应的量化误差产生的,即
f
˙
(
n
)
=
e
˙
(
n
)
+
f
^
(
n
)
\dot{f}(n)=\dot{e}(n)+\hat{f}(n)
f˙(n)=e˙(n)+f^(n)其中,
f
^
(
n
)
\hat{f}(n)
f^(n)同以前所定义的一样。这个闭环结构可以防止在解码器的输出处形成误差。文章来源:https://www.toymoban.com/news/detail-495088.html
8.2.10小波编码
小波编码基于以下概念:对图像的像素解除相关的变换系数进行编码比对原图像像素本身进行编码的效率更高。如果变换的基函数——此时为小波函数——将大多数重要的可视信息包装到少量系数中,则剩下的系数可被粗略地量化或截取为零,而图像几乎没有失真。
上图显示了一个典型的小波编码系统。为了对一幅大小为
2
J
∗
2
J
2^J*2^J
2J∗2J的图像进行编码,选择一种分析小波
ψ
\psi
ψ和最小分解级别
J
−
P
J-P
J−P,并用于计算图像的离散小波变换。如果小波具有互补的尺度函数
φ
\varphi
φ,则可以使用快速小波变换。不论哪种情况,计算出来的变换会将原图像的大部分转换为水平的、垂直的和对角分解系数,这些系数具有零均值和类似拉普拉斯分布。由于许多计算的系数携带很少的视觉信息,这些系数可以最小的系数和编码冗余来量化和编码。此外,量化可以自适应地越过Р分解级别而利用任何位置相关。一种或多种无损编码方法,如行程编码、霍夫曼编码、算术编码和比特平面编码等,都可以应用到最后的符号编码步骤中。解码可以用与编码相反的操作来实现。文章来源地址https://www.toymoban.com/news/detail-495088.html
到了这里,关于第八章 图像压缩的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!