第八章 图像压缩

文章目录

  • 第八章 图像压缩
    • 8.1基础知识
      • 8.1.1 编码冗余
      • 8.1.4图像信息的度量
      • 8.1.5保真准则
      • 8.1.6图像压缩模型
      • 8.17图像格式、容器和压缩标准
    • 8.2一些基本的压缩方法
      • 8.2.1霍夫曼编码
      • 8.2.2Golomb编码
      • 8.2.3算术编码
      • 8.2.4LZW编码
      • 8.2.5行程编码
      • 8.2.6基于符号的编码
      • 8.2.7比特平面编码
      • 8.2.8块变换编码
      • 8.2.9预测编码
      • 8.2.10小波编码

第八章 图像压缩

8.1基础知识

数据冗余R为 R = 1 − 1 C R=1-\cfrac1C R=1C1 C为压缩率,定义为 C = b b ′ C=\cfrac{b}{b'} C=bb

二维灰度阵列受如下可被识别和利用的三种主要类型的数据冗余的影响:

  1. 编码冗余。编码是用于表示信息实体或事件集合的符号系统(字母、数字、比特和类似的符号等)。每个信息或事件被赋予一个编码符号的序列,称之为码字。每个码字中的符号数量就是该码字的长度。在多数二维灰度阵列中,用于表示灰度的8比特编码所包含的比特数要比表示该灰度所需要的比特数多。
  2. 空间和时间冗余。因为多数二维灰度阵列的像素是空间相关的(即每一个像素类似于或取决于相邻像素),在相关像素的表示中,信息被没有必要地重复了。在视频序列中,时间相关的像素(即类似于或取决于相邻帧中的那些像素)也是重复的信息。
  3. 不相关的信息。多数二维灰度阵列中包含有一些被人类视觉系统忽略或与用途无关的信息。从没有被利用的意义上看,它是冗余的。

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)01010111100000001100010011111111leng1(rk)88888code(2)011000001leng1(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=14.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=1jP(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=0M1y=0N1[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=0M1y=0N1[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=0M1y=0N1[f^(x,y)f(x,y)]2x=0M1y=0N1f^(x,y)2

8.1.6图像压缩模型

在这里插入图片描述

8.17图像格式、容器和压缩标准

在这里插入图片描述

国际支持图像标准:

名称组织描述
二值静止图像
CCITT Group3ITU-T通过电话线传输二进制文档的传真方法,支持一维二维行程编码及哈夫曼编码
CCITT Group4ITU-TCCITT Group3的精简版,只支持二维行程编码
JBIG/JBIG1ISO/TEC/ITU-T联合二值图像专家组标准,适用于二值图像的渐进无损压缩。
JBIG2ISO/TEC/ITU-TJBIG1的后续版本,适用于桌面、互联网和传真应用中的二值图像,所用的压缩方法是基于内容的,对文本和半色调区域使用基于字典的方法,对其他图像内容使用哈夫曼编码或算术编码,该方法可以是无损的或有损的。
连续色调静止图像
JPEGISO/TEC/ITU-T针对图像质量的联合图片专家组标准。该标准的有损基线编码系统对图像块变换编码、哈夫曼编码和行程编码使用量化离散余弦变换,是在互联网上常用的图像压缩方法之一
JPEG-LSISO/TEC/ITU-T基于自适应预测,上下文建模、和Golomb码的一种无损或接近无损的压缩标准
JPEG-2000ISO/TEC/ITU-TJPEG的后续版本,使用算术编码和量化离散小波变换。压缩可以是有损的或无损的

其他图像标准:

名称组织描述
BMPMicrosoftWindows位图。主要用于为压缩图像的一种文件格式
GIFCompuServe图形交换格式,对1-8位图像使用LZW编码
PDFAdobe SystemsPortable Document Format,可移植文档格式,以与设备和分辨率无关的方式来表示二维图像,可左右JPEG等图像格式的容器来使用,某些PDF版本已成为ISO标准
PNGW3CPortable Network Graphics,一种支持无损压缩的位图图形格式。一种说法是PNG is Not GIF,GIF当时受专利保护,PNG为替代GIF
TIFFAldus标记图像文件格式。一种灵活的文件格式,支持各种图像压缩标准,包括JPEG、JPEG-LS,JPEG-2000,JPIG2等
WebPGoogleWebP通过WebP VP8,使用空间预测和LZW反向引用的一个变体和哈夫曼编码来实现

国际支持视频标准:

名称组织描述
DVIEC数字视频(Digital Video),是由索尼、松下、JVC等多家厂商联合提出的一种家用数字视频格式,如电子新闻采集和摄像机。为简单编辑目的而单独压缩各帧
H.261ITU-T是1990年ITU-T制定的一个视频编码标准,属于视频编解码器,适用于ISDN综合业务数字网络线路的一种双向视频会议标准。设计的目的是能够在带宽为64kbps的倍数的综合业务数字网(ISDN for Integrated Services Digital Network)上传输质量可接受的视频信号
H.262ITU-TH.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.263ITU-T由ITU-T用于视频会议的低码率影像编码标准。是适用于普通电话解调器的增强型H.261。它的第一版于1995年完成,在所有码率下都优于之前的H.261。之后还有在1998年增加了新的功能的第二版H.263+,或者叫H.263v2,以及在2000年完成的第三版H.263++,即H.263v3。
H.264ITU-T又称为MPEG-4第10部分,高级视频编码,是一种面向块,基于运动补偿的视频编码标准。第一版标准的最终草案于2003年5月完成。H.264由于算法优化,可以低于1Mbps的速度实现标清(分辨率在1280P*720以下)数字图像传送;
H.265/MPEG-H/HEVCITU-T/ISO/IEC高效视频编码,H。264的扩展,通常用于4K视频应用中。H.265则可以实现利用1~2Mbps的传输速度传送720P(分辨率1280*720)普通高清音视频传送。推出时间2013年2月。
MPEG-1ISO/IEC一种运动图像专家组标准,用于CD-ROM应用,是MPEG组织制定的第一个视频和音频有损压缩标准,也是最早推出及应用在市场上的MPEG技术,其原来主要目标是在CD光盘上记录影像,后来被广泛应用在VCD光盘。视频压缩算法于1990年定义完成。1992年底,MPEG-1正式被批准成为国际标准。
MPEG-2ISO/IEC是“运动图像和相关音频信息的通用编码”的标准。适用于传输速率高达15Mb/s的DVD应用。虽然MPEG-2的效率不如H.264/AVC和H.265/HEVC等新标准,但与现有硬件和软件的向后兼容性意味着它仍在广泛使用,例如在无线数字电视广播和DVD-Video中。在1996年7月最终批准。
MPEG-4ISO/IEC由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态影像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网络上流、光盘、语音发送(视频电话),以及电视广播。
MPEG-4AVCISO/IEC与H.264相同

其他视频标准:

名称组织描述
AVSMII中国开发的音视频标准,为中国第二代信源编码标准。第三代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-TimeApple Computer由苹果公司开发的支持DV等其他音视频格式的媒体容器
VC-1
WMV9
SMPTE
Microsoft
互联网上最通用的视频格式。适用于高清和蓝光高清DVD
WebP
VP8
GoogleWebP最初在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)的构建如下:

  1. 形成商 ⌊ n / m ⌋ \lfloor n/m\rfloor n/m的一元编码(整数q的一元编码定义为q个1紧跟着一个0)。
  2. 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=2km,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截短至k1比特,r+c截短至k比特,0r<celse
  3. 连接步骤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) [00.2)相联系。与在下图中、区间 [ 0 , 0.2 ) [0,0.2) [00.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} am12m1+am22m2++a121+a020
缺点在于灰度较小变化时比特平面也可能产生巨大变化,如127(01111111)和128(10000000)之间的变化,改进方法是采用格雷码。格雷码相邻数字之间仅有一个比特位的变化。

8.2.8块变换编码

在这里插入图片描述
在这一节,我们考虑一种压缩技术,该技术把图像分成大小相等(如8×8)且不重叠的小块,并使用二维变换单独地处理这些块。在块变换编码中,用一种可逆线性变换(如傅里叶变换)把每个块或子图像映射为变换系数集合,然后,对这些变换系数进行量化和编码。对于大多数图像,大量系数都有较小的幅度值,并且可被粗糙地量化(或完全抛弃)而几乎没有多少图像失真。

上图显示了一个典型的块变换编码系 统。解码器执行(除了量化功能外)与编码器相反顺序的步骤。编码器执行4种相对简单的操作:子图像分解、 变换、量化和编码。一幅大小为M×N的输人图像首先被分解为大小为 n ∗ n n*n nn的子图像,然后变换这些子图以生成 M ∗ N / n 2 M*N /n^2 MN/n2个子图像变换阵列,每个阵列的大小为 n ∗ n n *n nn。变换处理的目的是对每幅子图像中的像素进行去相关,或用最少数量的变换系数包含尽可能多的信息。然后,在量化阶段,以一种预定义的方式有选择性地消除或更粗略地量化那些携带最少信息的系数(本节稍后会讨论一些方法)。这些系数对重建的子图像质量的影响最小。通过对量化后的系数进行编码(通常使用变长编码)结束编码过程。任何或所有的变换编码步骤都可以根据局部图像内容进行适应性调整,这称为自适应变换编码,而如果这些步骤对所有子图像都是固定的,则称为非自适应变换编码。

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)同以前所定义的一样。这个闭环结构可以防止在解码器的输出处形成误差。

8.2.10小波编码

在这里插入图片描述
小波编码基于以下概念:对图像的像素解除相关的变换系数进行编码比对原图像像素本身进行编码的效率更高。如果变换的基函数——此时为小波函数——将大多数重要的可视信息包装到少量系数中,则剩下的系数可被粗略地量化或截取为零,而图像几乎没有失真。
上图显示了一个典型的小波编码系统。为了对一幅大小为 2 J ∗ 2 J 2^J*2^J 2J2J的图像进行编码,选择一种分析小波 ψ \psi ψ和最小分解级别 J − P J-P JP,并用于计算图像的离散小波变换。如果小波具有互补的尺度函数 φ \varphi φ,则可以使用快速小波变换。不论哪种情况,计算出来的变换会将原图像的大部分转换为水平的、垂直的和对角分解系数,这些系数具有零均值和类似拉普拉斯分布。由于许多计算的系数携带很少的视觉信息,这些系数可以最小的系数和编码冗余来量化和编码。此外,量化可以自适应地越过Р分解级别而利用任何位置相关。一种或多种无损编码方法,如行程编码、霍夫曼编码、算术编码和比特平面编码等,都可以应用到最后的符号编码步骤中。解码可以用与编码相反的操作来实现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/32591.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WebGIS 信息系统-系统实现

WebGIS 信息系统-系统实现 主界面基本模块地图基本管理模块地图属性主界面大纲视图实现创建选项菜单添加点击事件实现加载底图图层和定位图层完善这个类文件 主界面基本模块 (1 &#xff09;平移&#xff1a;单击按钮将鼠标置于平移状态&#xff0c;可用来清除当前图形操作工具…

人工智能 | 技能人才评价证书分析及人工智能/计算机类证书推荐

目录 简介技能人才评价证书相关介绍1. 国家职业资格证书2. 职业技能等级证书 推荐证书目录1. 计算机类的国家职业资格证书a. 证书推荐b. “软高***”和“PMP”的区别 2. 计算机类的职业技能等级证书a. 工信部认证b. 中国人工智能学会证书 专业证书的作用1. 抵税2. 领取职业技能…

全志V3S嵌入式驱动开发(USB camera驱动)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 soc和mcu的一个重要区别&#xff0c;就是soc会涉及到大量的音视频操作&#xff0c;当然音视频也就包括了camera摄像头这部分。v3s本身支持csi接口和…

ChatGPT:开放AI平台的最新进展和功能

第一章&#xff1a;引言 在过去的几年中&#xff0c;人工智能技术取得了长足的发展&#xff0c;其在各个领域的应用也日益广泛。而在AI技术中&#xff0c;自然语言处理&#xff08;NLP&#xff09;一直是备受关注的领域之一。ChatGPT作为OpenAI的开放AI平台上的一项重要技术&am…

慕课:笔记

课程链接&#xff1a;直面JavaScript中的30个疑难杂症_JavaScript面试题-慕课网 第二章&#xff1a;数据类型 数据类型是每门编程语言的必修之课&#xff0c;你是否对JavaScript的数据类型和检测存在困惑&#xff0c;本章节将为你揭晓其中的奥秘&#xff0c;让你对数据类型有…

【Tableau案例】神奇宝贝属性及实力强弱|数据可视化

提前声明&#xff1a;神奇宝贝的数据分析仅供参考&#xff0c;不涉及对于神奇宝贝的各种评价&#xff0c;另外我是初学tableau&#xff0c;涉及到使用的tableau操作可能很简单&#xff0c;复杂的还掌握不熟练&#xff0c;之后会拿时间系统学习tabelau。 数据预处理 该数据集有…

CODESYS模拟量超限报警功能块

博途PLC模拟量超限报警功能块详细介绍请参看下面文章链接: PLC模拟量超限报警功能块_RXXW_Dor的博客-CSDN博客模拟量偏差报警功能块请参看下面文章:模拟量偏差报警功能块(SCL代码)_RXXW_Dor的博客-CSDN博客工业模拟量采集的相关基础知识,可以查看专栏的系列文章,这里不再赘…

OSPF故障定位没思路?照这篇抄就行

我的网工朋友大家好。 好久没聊OSPF技术了&#xff0c;相关基础且经典的内容&#xff0c;公众号陆陆续续分享过一些&#xff0c;趣味科普&#xff0c;面试考题&#xff0c;实验操作&#xff0c;都有涉及。 按照惯例&#xff0c;先给你整一波优质的往期内容&#xff1a; 《 5个…

Spring Boot之静态资源映射 | 超级详细,建议收藏

写在前面&#x1f525; 上几期&#xff0c;我们重点讲解了Spring Boot集成Swagger-UI实现在线API文档及美化UI界面&#xff0c;而这期&#xff0c;在 Web 应用中会都会涉及到大量的静态资源&#xff0c;例如 图片、JS、CSS 和 HTML 等。我们知道&#xff0c;Spring MVC 导入静态…

WebGIS 信息系统-主界面基本模块功能设计

文章目录 系统文件夹结构主界面地图基本管理模块功能设计手机定位模块功能设计经纬度路径生成功能设计导航模块功能设计用户管理模块功能设计 系统文件夹结构 为了使项目容易管理和维护&#xff0c;在开发之前需要确定项目的系统文件夹结构&#xff0c;即系统文件夹结构设计。…

C++ / QT 旅游产品管理系统

一、项目介绍 旅游产品管理系统 你是一家旅行社的 IT 主管&#xff0c;现在需要你设计并实现一个旅游产品管理系统。 1 &#xff09; 基本功能要求 * 实现基础界面&#xff1a; 参照现有的旅游产品管理系统&#xff1a;查看产品、选择产品、使用说明等内容 * 支持旅游产品…

用Python搭建监控平台详解

概要 监控和运维&#xff0c;是互联网工业链上非常重要的一环。监控的目的就是防患于未然。通过监控&#xff0c;我们能够及时了解到企业网络的运行状态。一旦出现安全隐患&#xff0c;你就可以及时预警&#xff0c;或者是以其他方式通知运维人员&#xff0c;让运维监控人员有时…

Springboot 核心注解和基本配置解读

目录 1. Springboot 入门与原理 1.1 Springboot 简介 1.1.1 什么是Springboot 1.1.2 Springboot 主要优点 1.2 Springboot 相关注解 1.2.1 元注解 1.2.1.1 Target 1.2.1.2 Retention 1.2.2 Configuration 1.2.3 Import 1.2.3.1 直接注入 1.2.3.2 实现 ImportSelector…

Error: Cannot find module ‘webpack‘ 问题解决办法

这句话的意思是&#xff1a;没有找到webpack模块。 就算之前你装了webpack&#xff0c;那肯定是非全局安装 所以要全局安装 npm install --save-dev webpack 问题解决

4.蜂鸣器

1.了解蜂鸣器&#xff1a; 蜂鸣器在使用3.3V无法驱动&#xff0c;需要借助到三极管的放大特性(IcβIb)将蜂鸣器驱动&#xff1b;本次原理图中&#xff0c;接R33电阻是因为当STM32单片机复位时处于浮空状态&#xff0c;防止小电流让蜂鸣器响而添加的。 2.蜂鸣器原理图&#xf…

剖析Linux文件系统

Linux 文件系统体系结构是一个对复杂系统进行抽象化的有趣例子。通过使用一组通用的 API 函数&#xff0c;Linux 可以在许多种存储设备上支持许多种文件系统。例如&#xff0c;read 函数调用可以从指定的文件描述符读取一定数量的字节。read 函数不了解文件系统的类型&#xff…

Java——《面试题——Redis篇》

前文 java——《面试题——基础篇》 Java——《面试题——JVM篇》 Java——《面试题——多线程&并发篇》 Java——《面试题——Spring篇》 Java——《面试题——SpringBoot篇》 Java——《面试题——MySQL篇》​​​​​​ Java——《面试题——SpringCloud》 Java…

使用Nginx的反向代理来访问服务器例子——Nginx笔记

因为网站上的视频加载过慢&#xff0c;想使用nginx服务器实现HLS视频播放服务。顺便记录一下通过Nginx的方向代理来访问服务器。这里在原先的项目上进行改造。原先的项目已经部署在公网&#xff0c;使用tomcat服务器&#xff0c;可以直接用地址进行访问。 1.这里使用的8080端口…

阿里飞猪三面

&#xff08;有许多人是用青春的幸福作成功的代价的。——莫扎特&#xff09; 背景 该岗位是阿里飞猪的前端部门&#xff0c;岗位名称是node.js高级/专家开发工程师。主要负责用NodeJs作为后端技术&#xff0c;向上层Java&#xff0c;Node等业务服务&#xff0c;提供中间层基础…

ChatGPT对未来编程语言发展的影响与展望

目录 一、引言1.ChatGPT的介绍与背景介绍背景 2.编程语言发展的重要性和挑战重要性挑战 二、ChatGPT在编程领域的应用1.自然语言处理技术在编程中的应用现状2. ChatGPT作为编程辅助工具的潜力与优势 三、ChatGPT对编程语言发展的影响1. 创新编程模式的涌现2. 语言设计与交互方式…