JPEG压缩编码标准

合集下载

jpeg编码标准

jpeg编码标准

jpeg编码标准JPEG,全称为Joint Photographic Experts Group,是一种广泛应用于图像压缩的标准。

其名称包含三个主要部分:“联合”,“图像”,“专家组”。

专家组是一个处理特殊问题的专家团队,而JPEG 就是这些专家的研究成果被采纳并应用于图像处理的结果。

JPEG编码是一种有损压缩方式,它通过去除图像中的冗余数据来减小文件大小,同时尽可能地保留图像的重要信息,使得图像在查看或打印时仍然具有良好的质量。

这种压缩方式被广泛用于数字图像和视频的传输,包括网络传输和存储等。

二、JPEG编码标准的主要组成部分1. 离散余弦变换(DCT):JPEG使用了一种特殊的变换方法,称为离散余弦变换。

这种方法将图像从空间域转换到频率域,从而实现了数据的压缩。

通过离散余弦变换,我们可以将高频率部分(也就是图像中的噪声和细节)移除,只保留低频率部分(也就是图像的主要信息)。

2. 量化:在离散余弦变换之后,我们需要对变换后的系数进行量化。

量化过程是将变换后的系数映射到一个有限的离散值集合中。

这个过程有助于进一步减小文件大小,同时尽可能保留图像的质量。

3. 熵编码:熵编码是一种用于减少文件大小的额外技术。

JPEG 使用了一种称为游程编码的技术来进行熵编码,它能够进一步减少文件中的冗余数据。

4. 霍夫曼编码:在JPEG标准中,霍夫曼编码被用于进一步优化文件大小。

它是一种无损的压缩技术,通过创建短的、重复的符号的平均值来减小文件大小。

三、JPEG编码的应用场景JPEG编码广泛应用于数字图像和视频处理领域,如网络传输、存储、打印和显示等。

它尤其适用于需要大量图像或视频数据的场景,如社交媒体、在线购物、视频会议等。

四、JPEG编码的优缺点优点:1. 高压缩率:JPEG编码能够有效地减小图像和视频的文件大小,而不会显著影响图像的质量。

这使得它成为了一种非常实用的技术,尤其是在需要大量数据传输和存储的场景中。

多媒体技术JPEG图像压缩标准

多媒体技术JPEG图像压缩标准

34
基于DPCM的无损编码模式
主要采用了三邻域二维预测编码和熵编码
无失真编码器
预测器
熵编码器
源图像数据 表说明 DPCM预测编码框图
压缩的图像数据
35
基于DPCM的无损编码模式
主要采用了三邻域二维预测编码和熵编码
减去预测值,得到一个差值,差值不量化,直接进行熵 编码(哈夫曼或者算术编码) 保证无失真地恢复原始 图像
选择值 预测 0 1 2 3 选择值 预测 a+b-c a+(bc)/2 b+(ac)/2 (a+c)/2
c a
b X
非预测 4 a 5 b c 6 7
36
基于DCT的渐进的编码模式
基本思想
此模式与顺序模式编码步骤基本一致,不同之处在 于递增模式每个图像分量的编码要经过多次扫描才 完成。第一次扫描只进行一次粗糙的压缩,然后根 据此数据先重建一幅质量低的图像,以后的扫描再 作较细的扫描,使重建图像质量不断提高,直到满 意为止
离散余弦变换(DCT)
1 Y00 = N

N- 1 N- 1
X ij
i= 0 i= 0
DC 系数
12
基于DCT的顺序编码模式
缺省的量化方式
Y Q ( x, y) = IntegerRound[Y ( x, y) / Q( x, y)]
13
基于DCT的顺序编码模式
缺省的量化方式
Y Q ( x, 根据心理视觉加权函数得到的 量化表: y) = IntegerRound[Y ( x, y) / Q( x, y)] 量化:DCT变换系数除以量化步长,四舍五入取整
颜色空间转换不包含在JPEG算法中

JPEG图像编码标准

JPEG图像编码标准

SOF0
SOF1 SOF2
0xFFC0
0xFFC1 0xFFC2
Baseline DCT
Extended sequential DCT Progressive DCT
SOF3
SOF5 SOF6 SOF7
0xFFC3
0xFFC5 0xFFC6 0xFFC7
Spatial (sequential) lossless
JPEG图像压缩编码算法
JPEG 2000简介
参考文献
§3.4.1
JPEG与JPEG图像
一、ISO/IEC JPEG (Joint Photographic Experts Group)简介 二、关于JPEG图像
A、参 考 文 献
一. 关于JPEG
• •
JPEG : Joint Photographic Experts Group 由ISO与IEC于1986年联合成立的一个专家委员会(WG1), 其宪章(charter)是:
0xE0
0xE1 - 0xEF 0xDB 0xC0 0xC4 0xDA 0xD9
第三章 图形、图像与视频处理技术
JPEG图像格式简介 (cont.)

附表:JPEG定义的标记列表
Symbol (符号) Code Assignment (标记代码) Description (说明)
Start Of Frame markers, non-hierarchical Huffman coding
第三 图形、图像与视频处理技术 4
2013年9月10日
关于JPEG (cont.)

已经发布的标准有:
ISO/IEC 10918-1 | ITU-T Rec. T.81 : Requirements and guidelines ISO/IEC 10918-2 | ITU-T Rec. T.83 : Compliance testing

jpeg标准

jpeg标准

中国图像网 / 数字图像处理入门—图象的压缩编码,JPEG 压缩编码标准 在介绍图象的压缩编码之前,先考虑一个问题:为什么要压缩?其实这个问题不用我回答,你也能想得到。

因为图象信息的数据量实在是太惊人了。

举一个例子就明白了,一张 A4(210mm*297mm) 幅面的照片,若 用中等分辨率(300dpi)的扫描仪按真彩扫描,其数据量为多少?让我们来计算一下:共有(300*210/25.4)* (300*297/25.4)个像素,每个像素占 3 个字节,其数据量为 26M 字节,其数据量之大可见一斑了。

如今在 Internet 上,传统基于字符界面的应用逐渐被能够浏览图象信息的 WWW(World Wide Web)方式所取 代。

WWW 尽管漂亮,但是也带来了一个问题:图象信息的数据量太大了,本来就已经非常紧张的网络带 宽变得更加不堪重负,使得 World Wide Web 变成了 World Wide Wait。

总之,大数据量的图象信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极 大的压力。

单纯*增加存储器容量, 提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的, 这时就要考虑压缩。

压缩的理论基础是信息论。

从信息论的角度来看,压缩就是去掉信息中的冗余,即保 留不确定的信息,去掉确定的信息(可推知的) ,也就是用一种更接近信息本质的描述来代替原有冗余的描 述。

这个本质的东西就是信息量(即不确定因素) 。

压缩可分为两大类,第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象, 信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的 丢失,成为有损压缩。

选择哪一类压缩,要折中考虑,尽管我们希望能够无损压缩,但是通常有损压缩的 压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压 缩的高。

图像处理之JPEG编码原理

图像处理之JPEG编码原理

上式中,R、G、B 和 Y、Cr、Cb 都是 8bit 无符号整数,取值范围为 0-255。另从上式可 看到,计算过程会涉及到小数运算,也就是 浮点运算,所以有必要考虑算法优化,把浮点数 运算转换为移位与加法运算,从而可使计算机更快速的进行处理。 RGB 与 YCrCb 之间的逆变换式如下:
R 1 1.4020 G = 1 − 0.7141 0 1 B
DCT 变换本身并不降低图像质量,而是在丢弃图像细节的对极小幅度频率的忽略过程中降低 了图像质量。 从 DCT 变换式可以看出, 对于每一个 DCT 值 F(u,v)都需要进行 64 次乘法, 完成 8×8=64 个 DCT 系统则需要 64×64=4096 次乘法。对包含了大量 8×8 图像块的整幅图像来说,计算 量之大可想而知。由此可见,计算 DCT 是整个 JPEG 压缩过程中最耗时的操作,很多人研究 过快速算法,更为有效的方法是在 CPU 中增加新指令(专用 CPU),以便于 DCT 运算。 下面以一个 8×8 图像块的变换过程进行示例说明: 原始图像的像素矩阵为: 52 63 62 63 67 79 85 87 55 59 59 58 61 65 71 79 61 55 68 71 68 60 64 69 66 90 113 122 104 70 59 68 70 109 144 154 126 77 55 65 61 85 104 106 88 68 61 76 64 69 66 70 68 58 65 78 73 72 73 69 70 75 83 94
的图像时,要使用的记录容量为 1024×768×3=2359.296K 字节。需要补充说明的是,文件 作为数据记录载体,除数据内容外还应提供必要的有关存储格式的说明以方便以后读取(具 体可参考相关格式的标准化资料), 因此实际存储使用的文件要比上面计算的数据容量稍大, 如 1024×768 的 24 位位图文件(bmp 文件)为 2359.350K 字节。 2.1 色彩空间 (color space) 在图像处理中,可以把 RGB 空间表示的彩色图像变换到其他色彩空间。常用的色彩空 间有三种:YIQ,YUV 和 YCrCb。不同的色彩空间通常是对应于不同的物理设备特性,见下 表: 色彩空间 YIQ YUV YCrCb 适用范围 NTSC 制彩色电视 PAL 和 SECAM 制彩色电视 计算机显示器

jpeg压缩编码标准

jpeg压缩编码标准

JPEG压缩编码标准是国际标准化组织(ISO)和CCITT联合制定的静态图像的压缩编码标准。

它主要采用预测编码、离散余弦变换以及熵编码的联合编码方式,以去除冗余的图像和彩色数据,属于有损压缩格式。

JPEG压缩编码标准是面向连续色调静止图像的压缩编码标准,具有较高的压缩比,是目前静态图像中压缩比最高的。

它能够将图像压缩在很小的储存空间,一定程度上会造成图像数据的损伤。

JPEG压缩编码标准有多种类型,包括标准JPEG格式、渐进式JPEG格式和JPEG2000格式。

其中,标准JPEG格式在网页下载时只能由上而下依序显示图像,直到图像资料全部下载完毕,才能看到图像全貌;渐进式JPEG格式在网页下载时,先呈现出图像的粗略外观后,再慢慢地呈现出完整的内容;JPEG2000格式是新一代的影像压缩法,压缩品质更高,并可改善在无线传输时,常因信号不稳造成马赛克现象及位置错乱的情况,改善传输的品质。

总之,JPEG压缩编码标准是一种广泛应用于图像处理领域的压缩编码标准,具有较高的压缩比和多种类型,能够满足不同应用场景的需求。

jpg算法

jpg算法

余信息。

JPEG算法框图如图:1、使用正向离散余弦变换(Forward Discrete Cosine Transform,FDCT)把空间域表示的图变换成频率域表示的图。

2、使用加权函数对DCT系数进行量化,这个加权函数对于人的视觉系统是最佳的。

3、使用霍夫曼可变字长编码器对量化系数进行编码。

译码或者叫做解压缩的过程与压缩编码过程正好相反。

JPEG算法与彩色空间无关,因此“RGB到YUV变换”和“YUV 到RGB变换”不包含在JPEG算法中。

JPEG算法处理的彩色图像是单独的彩色分量图像,因此它可以压缩来自不同彩色空间的数据,如RGB, YCbCr和CMYK。

二、JPEG算法的主要计算步骤JPEG压缩编码算法的主要计算步骤如下:(1)正向离散余弦变换(FDCT)。

(2)量化(Quantization)。

(3)Z字形编码(Zigzag Scan)。

(4)使用差分脉冲编码调制(Differential Pulse CodeModulation,DPCM)对直流系数(DC)进行编码。

(5)使用行程长度编码(Run-Length Encoding,RLE)对交流系数(AC)进行编码。

(6)熵编码(Entropy Eoding)。

1、正向离散余弦变换下面对正向离散余弦变换(FDCT)变换作几点说明。

(1)对每个单独的彩色图像分量,把整个分量图像分成若干个8×8的图像块,如图所示,并作为两维离散余弦变换DCT的输入。

通过DCT变换,把能量集中在少数几个系数上。

(2)DCT变换使用下式计算:它的逆变换使用下式计算:上面两式中,C(u),C(v) = (2)-1/2,当u, v = 0;C(u),C(v) = 1,其他。

f(i, j)经DCT变换之后,F(0,0)是直流系数,其他为交流系数。

(3)在计算两维的DCT变换时,可使用下面的计算式把两维的DCT变换变成一维的DCT变换:2、量化量化是对经过FDCT变换后的频率系数进行量化。

JPEG是图像压缩编码标准

JPEG是图像压缩编码标准

JPEG是图像压缩编码标准JPEG(Joint Photographic Experts Group)是一种常见的图像压缩编码标准,它是一种无损压缩技术,可以有效地减小图像文件的大小,同时保持图像的高质量。

JPEG压缩技术广泛应用于数字摄影、网页设计、打印和传真等领域,成为了图像处理中不可或缺的一部分。

JPEG压缩编码标准的原理是基于人眼对图像细节的感知特性,通过去除图像中的冗余信息和不可见细节,从而实现图像的压缩。

在JPEG压缩中,图像被分割成8x8像素的块,然后对每个块进行离散余弦变换(DCT),将图像从空间域转换到频域。

接着,对DCT系数进行量化和编码,最后使用熵编码对图像进行压缩。

这样的压缩方式可以显著减小图像文件的大小,同时保持图像的视觉质量。

JPEG压缩标准的优点之一是可以根据需要选择不同的压缩比,从而在图像质量和文件大小之间取得平衡。

在数字摄影中,用户可以根据拍摄场景和要求选择不同的压缩比,以满足对图像质量和文件大小的需求。

此外,JPEG格式的图像可以在不同的设备和平台上进行广泛的应用和共享,具有很好的兼容性。

然而,JPEG压缩也存在一些缺点。

由于JPEG是一种有损压缩技术,因此在高压缩比下会出现明显的失真和伪影。

特别是在连续的编辑和保存过程中,图像的质量会逐渐下降,出现“JPEG失真”。

因此,在图像处理中需要注意选择合适的压缩比,避免过度压缩导致图像质量下降。

另外,JPEG格式不支持透明度和动画等高级特性,对于一些特殊的图像处理需求可能不够灵活。

在这种情况下,可以考虑使用其他图像格式,如PNG和GIF,来满足特定的需求。

总的来说,JPEG作为一种图像压缩编码标准,具有广泛的应用和重要的意义。

它在数字摄影、网页设计、打印和传真等领域发挥着重要作用,为图像处理和传输提供了有效的解决方案。

然而,在使用JPEG格式进行图像处理时,需要注意选择合适的压缩比,避免过度压缩导致图像质量下降。

同时,也需要根据具体的需求考虑使用其他图像格式来满足特定的需求。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第9章图象的压缩编码,JPEG压缩编码标准在介绍图象的压缩编码之前,先考虑一个问题:为什么要压缩?其实这个问题不用我回答,你也能想得到。

因为图象信息的数据量实在是太惊人了。

举一个例子就明白:一张A4(210mm×297mm) 幅面的照片,若用中等分辨率(300dpi)的扫描仪按真彩色扫描,其数据量为多少?让我们来计算一下:共有(300×210/25.4) ×(300×297/25.4)个象素,每个象素占3个字节,其数据量为26M字节,其数据量之大可见一斑了。

如今在Internet上,传统基于字符界面的应用逐渐被能够浏览图象信息的WWW(World Wide Web)方式所取代。

WWW尽管漂亮,但是也带来了一个问题:图象信息的数据量太大了,本来就已经非常紧张的网络带宽变得更加不堪重负,使得World Wide Web变成了World Wide Wait。

总之,大数据量的图象信息会给存储器的存储容量,通信干线信道的带宽,以及计算机的处理速度增加极大的压力。

单纯靠增加存储器容量,提高信道带宽以及计算机的处理速度等方法来解决这个问题是不现实的,这时就要考虑压缩。

压缩的理论基础是信息论。

从信息论的角度来看,压缩就是去掉信息中的冗余,即保留不确定的信息,去掉确定的信息(可推知的),也就是用一种更接近信息本质的描述来代替原有冗余的描述。

这个本质的东西就是信息量(即不确定因素)。

压缩可分为两大类:第一类压缩过程是可逆的,也就是说,从压缩后的图象能够完全恢复出原来的图象,信息没有任何丢失,称为无损压缩;第二类压缩过程是不可逆的,无法完全恢复出原图象,信息有一定的丢失,称为有损压缩。

选择哪一类压缩,要折衷考虑,尽管我们希望能够无损压缩,但是通常有损压缩的压缩比(即原图象占的字节数与压缩后图象占的字节数之比,压缩比越大,说明压缩效率越高)比无损压缩的高。

图象压缩一般通过改变图象的表示方式来达到,因此压缩和编码是分不开的。

图象压缩的主要应用是图象信息的传输和存储,可广泛地应用于广播电视、电视会议、计算机通讯、传真、多媒体系统、医学图象、卫星图象等领域。

压缩编码的方法有很多,主要分成以下四大类:(1)象素编码;(2)预测编码;(3)变换编码;(4)其它方法。

所谓象素编码是指,编码时对每个象素单独处理,不考虑象素之间的相关性。

在象素编码中常用的几种方法有:(1)脉冲编码调制(Pulse Code Modulation,简称PCM);(2)熵编码(Entropy Coding);(3)行程编码(Run Length Coding);(4)位平面编码(Bit Plane Coding)。

其中我们要介绍的是熵编码中的哈夫曼(Huffman)编码和行程编码(以读取.PCX文件为例)。

所谓预测编码是指,去除相邻象素之间的相关性和冗余性,只对新的信息进行编码。

举个简单的例子,因为象素的灰度是连续的,所以在一片区域中,相邻象素之间灰度值的差别可能很小。

如果我们只记录第一个象素的灰度,其它象素的灰度都用它与前一个象素灰度之差来表示,就能起到压缩的目的。

如248,2,1,0,1,3,实际上这6个象素的灰度是248,250,251,251,252,255。

表示250需要8个比特,而表示2只需要两个比特,这样就实现了压缩。

常用的预测编码有Δ调制(Delta Modulation,简称DM);微分预测编码(Differential Pulse Code Modulation,DPCM),具体的细节在此就不详述了。

所谓变换编码是指,将给定的图象变换到另一个数据域(如频域)上,使得大量的信息能用较少的数据来表示,从而达到压缩的目的。

变换编码有很多,如(1)离散傅立叶变换(Discrete Fourier Transform,简称DFT);(2)离散余弦变换(Discrete Cosine Transform,简称DCT);(3)离散哈达玛变换(Discrete Hadamard Transform,简称DHT)。

其它的编码方法也有很多,如混合编码(Hybird Coding)、矢量量化(Vector Quantize,VQ) 、LZW算法。

在这里,我们只介绍LZW算法的大体思想。

值得注意的是,近些年来出现了很多新的压缩编码方法,如使用人工神经元网络(Artificial Neural Network,简称ANN)的压缩编码算法、分形(Fractl)、小波(Wavelet) 、基于对象(Object Based)的压缩编码算法、基于模型(Model –Based)的压缩编码算法(应用在MPEG4及未来的视频压缩编码标准中)。

这些都超出了本书的范围。

本章的最后,我们将以JPEG压缩编码标准为例,看看上面的几种编码方法在实际的压缩编码中是怎样应用的。

9.1 哈夫曼编码哈夫曼(Huffman)编码是一种常用的压缩编码方法,是Huffman于1952年为压缩文本文件建立的。

它的基本原理是频繁使用的数据用较短的代码代替,较少使用的数据用较长的代码代替,每个数据的代码各不相同。

这些代码都是二进制码,且码的长度是可变的。

举个例子:假设一个文件中出现了8种符号S0,S1,S2,S3,S4,S5,S6,S7,那么每种符号要编码,至少需要3比特。

假设编码成000,001,010,011,100,101,110,111(称做码字)。

那么符号序列S0S1S7S0S1S6S2S2S3S4S5S0S0S1编码后变成000 001 111 000 001 110 010 010 011 100 101 000 000 001,共用了42比特。

我们发现S0,S1,S2这三个符号出现的频率比较大,其它符号出现的频率比较小,如果我们采用一种编码方案使得S0,S1,S2的码字短,其它符号的码字长,这样就能够减少占用的比特数。

例如,我们采用这样的编码方案:S0到S7的码字分别01,11,101,0000,0001,0010,0011,100,那么上述符号序列变成011110001110011101101000000010010010111,共用了39比特,尽管有些码字如S3,S4,S5,S6变长了(由3位变成4位),但使用频繁的几个码字如S0,S1变短了,所以实现了压缩。

上述的编码是如何得到的呢?随意乱写是不行的。

编码必须保证不能出现一个码字和另一个的前几位相同的情况,比如说,如果S0的码字为01,S2的码字为011,那么当序列中出现011时,你不知道是S0的码字后面跟了个1,还是完整的一个S2的码字。

我们给出的编码能够保证这一点。

下面给出具体的Huffman编码算法。

(1) 首先统计出每个符号出现的频率,上例S0到S7的出现频率分别为4/14,3/14,2/14,1/14,1/14,1/14,1/14,1/14。

(2) 从左到右把上述频率按从小到大的顺序排列。

(3) 每一次选出最小的两个值,作为二叉树的两个叶子节点,将和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较。

(4) 重复(3),直到最后得到和为1的根节点。

(5) 将形成的二叉树的左节点标0,右节点标1。

把从最上面的根节点到最下面的叶子节点途中遇到的0,1序列串起来,就得到了各个符号的编码。

上面的例子用Huffman编码的过程如图9.1所示,其中圆圈中的数字是新节点产生的顺序。

可见,我们上面给出的编码就是这么得到的。

图9.1 Huffman编码的示意图产生Huffman编码需要对原始数据扫描两遍。

第一遍扫描要精确地统计出原始数据中,每个值出现的频率,第二遍是建立Huffman树并进行编码。

由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。

源程序就不给出了,有兴趣的读者可以自己实现。

9.2 行程编码行程编码(Run Length Coding)的原理也很简单:将一行中颜色值相同的相邻象素用一个计数值和该颜色值来代替。

例如aaabccccccddeee可以表示为3a1b6c2d3e。

如果一幅图象是由很多块颜色相同的大面积区域组成,那么采用行程编码的压缩效率是惊人的。

然而,该算法也导致了一个致命弱点,如果图象中每两个相邻点的颜色都不同,用这种算法不但不能压缩,反而数据量增加一倍。

所以现在单纯采用行程编码的压缩算法用得并不多,PCX文件算是其中的一种。

PCX文件最早是PC Paintbrush软件所采用的一种文件格式,由于压缩比不高,现在用的并不是很多了。

它也是由头信息、调色板、实际的图象数据三个部分组成。

其中头信息的结构为:typedef struct{char manufacturer;char version;char encoding;char bits_per_pixel;WORD xmin,ymin;WORD xmax,ymax;WORD hres;WORD vres;char palette[48];char reserved;char colour_planes;WORD bytes_per_line;WORD palette_type;char filler[58];} PCXHEAD;其中值得注意的是以下几个数据:manufacturer为PCX文件的标识,必须为0x0a;xmin为最小的x 坐标,xmax最大的x坐标,所以图象的宽度为xmax-xmin+1,同样图象的高度为ymax-yin+1;bytes_per_line 为每个编码行所占的字节数,下面将详细介绍。

PCX的调色板在文件的最后。

以256色PCX文件为例,倒数第769个字节为颜色数的标识,256时该字节必须为12,剩下的768(256×3)为调色板的RGB值。

为了叙述方便,我们针对256色PCX文件,介绍一下它的解码过程。

编码是解码的逆过程,有兴趣的读者可以试着自己来完成。

解码是以行为单位的,该行所占的字节数由bytes_per_line给定。

为此,我们开一个大小为bytes_per_line 的解码缓冲区。

一开始,将缓冲区的所有内容清零。

从文件中读出一个字节C,若C>0xc0,说明是行程(RunLength)信息,即C的低6位表示后面连续的字节个数(所以最多63个连续颜色相同的象素,若还有颜色相同的象素,将在下一个行程处理),文件的下一个字节就是实际的图象数据(即该颜色在调色板中的索引值)。

若C<0xc0,则表示C是实际的图象数据。

如此反复,直到这bytes_per_line个字节处理完,这一行的解码完成。

PCX就是有若干个这样的解码行组成。

下面是实现256色PCX文件解码的源程序,其中第二个函数对一行进行解码,应该把阅读的重点放在这个函数上。

相关文档
最新文档