- 中华医学影像技术学:影像信息与人工智能技术卷
- 刘景鑫 周学军主编
- 6370字
- 2025-03-18 22:20:31
第五节 图像压缩处理技术
一、图像压缩概念
图像数据是用来表示图像信息的,如果不同的方法为表示相同的图像信息使用了不同的数据量,那么在使用了较多数据量的方法中,有些数据必然代表了无用的信息,或者是重复表示了其他数据表示的信息,这些数据称为冗余数据。
图像压缩是指以较少的比特有损或无损地表示原有像素矩阵的技术,也称图像编码。目的就是把原来较大的图像用尽量少的字节表示和传输,并且要求复原图像有较好的质量。利用图像压缩技术,可以减轻图像存储和传输的负担,使图像在网络上实现快速传输和实时处理。
图像压缩编码技术可以追溯到1948年提出的电视信号数字化,至今已有70多年的历史。在此期间出现了多种图像压缩编码方法,特别20世纪80年代后期后,由于小波变换理论、分形理论、人工神经网络理论、视觉仿真理论的建立,图像压缩技术得到了前所未有的发展,其中分形图像压缩和小波图像压缩是研究的热点。
二、压缩技术分类
压缩技术一般分为无损压缩和有损压缩两类。无损压缩,指使压缩后的数据进行重构(或者称为还原,解压缩),重构后的数据与原来的数据完全相同;无损压缩用于要求重构的信号与原始信号完全一致的场合。典型的算法有霍夫曼编码(Huffman code)、算术编码、行程长度编码等。其特点为压缩比较低,为2∶1~5∶1,一般用来压缩文本、数据。有损压缩,是指使用压缩后的数据进行重构,重构后的数据与原来的数据有所不同,但不影响使用者对原始资料表达信息的理解。典型的算法有混合编码的JPEG标准、MPEG标准等。其特点为:压缩比高,为几十到几百倍,一般用于图像、声音、视频压缩。
三、常用图像压缩方法
(一)行程长度编码
在数据压缩的使用过程中,一个常用的算法是行程长度编码(run length encoding,RLE),也称行程长度压缩算法或游程长度压缩算法。对于一个待压缩的字符串而言,我们可以依次记录每个字符及重复的次数。这种压缩,对于相邻数据重复较多的待压缩数据比较有效。例如,如果待压缩字符串为“AAABBBBCBB”,则压缩结果可以用(A,3) (B,4)(C,1) (B,2)来表征。对于拥有大面积,相同颜色区域的图像,用RLE压缩方法非常有效。当然,如果相邻字符重复情况较少,压缩效率就会比较低。
行程长度编码的压缩方法对于自然产生的图片来说可行性有限,因为自然图片像素点错综复杂,同值像素连续性差,但是对于大多数由计算机生成的图像来说,图像的色块大,同值像素点连续较多,行程长度编码对是一种较好的编码方法。行程长度编码有算法简单、无损压缩、运行速度快、消耗资源少等优点。
(二)霍夫曼编码
霍夫曼编码是1952年为文本文件建立的一种常用的压缩方法。其基本原理是频繁使用的数据用较短的代码代替,很少使用的数据用较长的代码代替,每个数据的代码各不相同。这些代码都是二进制码,且码的长度是可变的。该编码依据变长最佳编码定理,应用 Huffman算法而产生。
可由下面的步骤得到霍夫曼码的码表:
(1)把信源中消息出现的频率从小到大排列。
(2)每一次选出频率最小的两个值,作为二叉树的两个叶子节点,将两个值的和作为它们的根节点,这两个叶子节点不再参与比较,新的根节点参与比较。
(3)重复步骤(2),直到最后得到和为1的根节点。
(4)将形成的二叉树的左节点标0,右节点标1。将从最上面的根节点到最下面的叶子节点途中遇到的“0,1”序列串起来,就得到了各个符号的编码。
用霍夫曼编码的过程如图4-1所示,其中圆圈中的数字是新节点产生的顺序。
信源上各个消息从S0到S7的出现概率分别为4/14,3/14,2/14,1/14,1/14,1/14,1/14,1/14。计算编码效率为98.5%,编码的冗余只有1.5%,可见霍夫曼编码的效率很高。
具体以一段字符串“abfabcaecedba”为例,如图4-2所示,首先生成信源中不同信号的频率表,然后根据信号频率向上生成树形结构,直到最后只剩下1.0的频率为止。从上到下读取从最终的1.0频率点到每个信号所经过的“树枝”的0/1值,即可生成对应原始信号的编码。从这个例子可以看出,由于可能出现频率相同的信号,霍夫曼编码的结果并不一定是唯一的。一般来说,要尽量保障出现频率大的信号,其编码长度要尽量短。
可见产生霍夫曼编码需要对原始数据扫描两遍,第一遍扫描要精确地统计出原始数据中每个值出现的频率,第二遍是建立霍夫曼树并进行编码,由于需要建立二叉树并遍历二叉树生成编码,因此数据压缩和还原速度都较慢,但简单有效,因而得到广泛的应用。
(三)LZW
LZW压缩算法又称为“串表压缩算法”,是一种由Abraham Lempel、Jacob Ziv和 Terry Welch发明的无损压缩方法,该方法是通过建立一个将字符串和其对应的记号构成的表(把已经出现过的字符串映射到记号上),用较短的代码表示较长的字符串来实现压缩。该算法通常用于GIF,也可以用于PDF和TIFF,Unix中的“压缩”命令,以及其他用途。LZW压缩算法将每个第一次出现的串放在一个串表中,用一个数字来表示串,压缩文件只存贮数字,不存贮串,从而使文件的压缩效率得到较大的提高。LZW是可逆的,所有原始信源的信息全部保留。该算法实现简单,并且在硬件实现中具有非常高的吞吐量潜力。

图4-1 霍夫曼编码的二叉树示意图

图4-2 霍夫曼编码实例
1.基本原理
LZW压缩算法的工作原理是读取一系列符号,将符号组合成字符串,并将字符串转换成代码。因为代码比它们替换的字符串占用的空间少,所以数据得到了压缩。
解码是通过从压缩文件中取出每个代码,并在代码表中翻译找到它们所代表的一个或多个字符来实现的。
2.工作机制
LZW压缩算法使用代码表,通常选择代码表条目数量为4 096。代码表中的0~255代码通常被用来分配表示来自输入文件的单个字节。
当编码开始时,代码表只包含前256个条目,表的其余部分为空。压缩是通过使用代码256~4 095表示字节序列来实现的。随着编码的继续,LZW识别数据中重复出现的序列,并将它们添加到代码表中。
如“print” 字符串,如果在压缩时用266表示,只要再次出现,均用266表示,并将“print”字符串存入串表中,在图像解码时遇到数字266,即可从串表中查出266所代表的字符串“print”,在解压缩时,串表可以根据压缩数据重新生成。
3.实现流程
首先我们规定:P为前缀字符串;C表示在待编码字符串中匹配到的P前缀字符串的下一个字符,称为后缀字符;P在字典表中的代码为“code[P]”。LZW编码流程如图4-3所示,解码流程如图4-4所示。
4.应用举例

图4-3 LZW编码流程

图4-4 LZW解码流程
为了简化事例,假设一串文本S=BABAABAAA只由A、B组成,初始情况下字典中只有A和B这两个字符,且存储在字典“table”中,code(A)=65,code(B)=66,已输出的压缩串为空。
(四)算术编码
算术编码是一种无损数据压缩方法,也是一种熵编码的方法。与霍夫曼编码压缩方法类似,但比霍夫曼编码更加有效,接近压缩的理论极限。算术编码适合于由相同重复序列组成的文件。这种方法,是将不同的序列映射到0~1的区域内,该区域表示可变精度(位数)的二进制小数,越不常见的数据需要的精度越高(更多的位数),这种方法比较复杂,因而不太常用。
1.编码步骤
(1)按照各信源信号出现的频率,将[0,1]这个区间分成若干段,那么每个信号源就会有自己的对应区间。
(2)将[0,1]这个区间设置为初始间隔。
(3)待处理的信号按照一个一个信号源读入,每读入一个信号,就将该信号源在[0,1]上的范围等比例地缩小到最新得到的间隔中。
(4)依次迭代,不断重复进行步骤(3),直到信号中的信源信号全部读完为止。
2.解码步骤
(1)给待解码的数据获取创建一个编码解码表,由于是在同一个类中完成的,那么把该对应表作为类的一个属性就可以实现获取表了。
(2)判断待解码的数据在哪个范围内,将该范围对应的信源信号输出即可。
(3)重复步骤(2),直到达到计算机的精度为止。
为了正确进行解码,需要对解码的次数进行限定,即确定解码后的信源信号长度,然后再进行解码。
(五)JPEG标准
JPEG标准与其他的标准不同,它定义了不兼容的编码方法,在它最常用的模式中,是带失真的,一个从JPEG文件恢复出来的图像与原始图像总是不同的,但有损压缩重建后的图像常常比原始图像的效果更好。JPEG的另一个显著特点是它的压缩比例相当高,原图像大小与压缩后的图像大小相比,比例可以从1%到80%~90%不等。这种方法的压缩效果也比较好,适合多媒体系统。
JPEG压缩编码算法的主要计算步骤如下:
1.8×8分块
将原始图像分为8×8的小块矩阵,每个矩阵里有64个像素。
2.正向离散余弦变换(forward discrete cosinetransform,FDCT)
数据压缩中有很多变换,比如卡 - 洛变换(karhunen-loeve transform,KLT),这里用的是FDCT。和快速傅里叶变换(FFT)一样,FDCT也是将信号从时域到频域的变换,不同的是FDCT中变换结果全是实数。每8×8个原始像素灰度值都变成了另外8×8个频率幅值。
将低频部分集中在每个8×8块的左上角,高频部分在右下角,所谓JPEG的有损压缩,一般计划损失的是变换后的高频部分。因为图像中有这样一个前提:低频部分比高频部分要重要得多,去除50%的高频信息对于编码信息而言可能只损失了5%。
3.量化(quantization)
所谓量化就是用像素值除以量化表对应值所得的结果。量化表左上角的值较小,右上角的值较大,这样就起到了保持低频分量、抑制高频分量的目的。JPEG使用的颜色是YUV格式,Y分量代表了亮度信息,UV分量代表了色差信息。相比而言,Y分量更重要一些。我们可以对Y采用细量化,对UV采用粗量化,以进一步提高压缩比。所以量化表通常有两张,一张是关于Y分量的;一张是关于UV分量的。
4.对直流系数(DC)进行编码
使用差分脉冲编码调制(DPCM)对直流系数(DC)进行编码。编码信息分两类,一类是每个8×8矩阵F中的[0,0]位置上的元素,这是直流系数(DC),代表8×8个子块的平均值,JPEG中对F[0,0]单独编码,由于两个相邻的8×8子块的DC系数相差很小,所以对它们采用差分脉冲调制编码技术(DPCM)可以提高压缩比,也就是对相邻的子块DC系数的差值进行编码。
5.对交流系数(AC)进行编码
使用行程长度编码(RLE)对交流系数(AC)进行编码。编码信息的另一类是8×8块的其他63个子块,即交流系数(AC),对其采用行程长度编码(RLE)。为了保证低频分量先出现,高频分量后出现,以增加游程中连续“0”的长度,这63个元素采用了“Z”字形(Zig-Zag)的排列方法。(图4-5)
6.压缩
为了进一步提高压缩比,可以使用熵编码(如Huffman编码)对DPCM编码后的直流系数以及RLE编码后的交流系数作进一步压缩。JPEG压缩的解码过程为其逆过程。

图4-5 Z形编码
四、图像后处理技术
(一)窗口技术
所谓窗口技术,原理上是根据预知的病灶或观察目标在该类设备上通常呈现的灰度值范围,获得需要显示的灰度值的窗口大小[即窗宽(window width,WW)]和灰度中心位置[即窗位(window center,WC)],从而将窗口内的图像像素值转换成显示时的最亮和最暗灰度范围内的值,高于窗口灰度范围的部分置为最亮,低于窗口灰度范围的部分置为最暗。在窗口技术中,窗宽是指需要显示图像的范围,调节窗宽主要影响对比度,窗宽越大,所显示的图像灰阶层次覆盖就越多,组织对比减少,细节显示越差,而窗位表征显示区域的灰度中心位置。
窗口技术在数学上表达就是图像真实像素值与显示值之间的转换,见公式4-1:

式中,V为图像像素值,G为显示器的显示值,gm为显示器所能显示的最大显示值,W为窗宽,C为窗位。
窗宽、窗位的调整是数字医学图像后处理工作中的一项常规内容,又是数字医学图像显示技术中最重要的功能。正确选择和运用窗口技术是使图像显示更具有目的性和提高诊断率的重要手段。
在图像的后处理软件中,常见的调节窗宽与窗位方法包括如下两种:
1.预先设定好的配置
选择需进行调窗处理的图像,然后选择后处理软件中的相应按钮,在预设好的脑窗、肺窗、骨窗、纵隔窗、软组织窗等选项中进行选择。
2.调节窗宽窗位
选择工具栏中“调节窗宽窗位”的选项,并使用鼠标在图像上拖动直接进行调窗操作。
以胸部普通X线成像为例,如果感兴趣区在肺部,可缩小窗宽,调整窗位使肺纹理结构与肺野有良好的对比度,细节显示清晰。此时纵隔结构、心影重叠结构因亮度过高而细节显示不良。反之,如感兴趣区位于肋骨、胸椎,则可适当增大窗宽,调整窗位,使感兴趣部位的细节显示良好。
在CT检查中,窗宽是CT图像上显示的CT值范围。通常在CT值范围内的组织和病变均以不同的灰度显示,CT值高于此范围的组织和病变,无论高出程度有多少,均以白影显示,无灰度差异;反之,低于此范围的组织结构,不论低的程度有多少,均以黑影显示,无灰度差别。增大窗宽,则图像所示CT值范围加大,显示具有不同密度的组织结构增多,但各结构之间的灰度差别减少。减小窗宽,则显示具有不同密度的组织结构减少,然而各结构之间的灰度差别增加。
(二)图像放大、减影和滤过
为观察图像显示中微小病变和细微的解剖结构,可采用放大技术。图像放大有两种形式:一是放大扫描,即缩小扫描野;二是电子放大。后处理中的图像放大不同于扫描时放大,它是一种基于数字影像的放大,随着放大倍数的增加,图像的清晰度也随之下降。另外,放大的图像还需适当调节窗宽窗位,以利于更好地观察图像。
减影一般需在两幅成像位置相同的图像间进行,通常选择一幅图像作为减影像,另一幅作为被减影像,将两幅图像相减,即得到有减影效果的图像。该处理方式的主要意义是增强图像间的差别,比如在行数字减影血管造影时先拍摄一张静态血管影像作为模板f(x,y),再注射造影剂拍摄活体图像h(x,y),两者相减后就得到了血管结构的影像g(x,y),见公式 4-2。

再通过增强对比度的方式,就能获得非常清晰、不受其他组织影响的动态血管造影。单幅图像也能应用这种方法,只需把最低有效位置生成模板,再用原图减去模板,也能得到类似的效果。
滤过处理是计算机采用不同的图像算法对图像重新进行处理以达到某种效果的后处理方法。根据滤过的效果不同有平滑、平均、边缘增强和阴影显示等。
上述三种方法中,临床上最常用的是图像放大,通常是为了诊断的需要,用以弥补扫描时的某些不足。
(三)多平面重组和三维重建
多平面重组(multiplanar reconstruction,MPR)和三维重组(3D reconstruction)也是常见的医学图像后处理方式,实际上都是在横断面扫描的基础上,经图像后处理后的不同方式显示图像的一种功能。
多平面重组是将数据从某个平面(通常是轴向)获得的成像模态转换到另一个平面的过程,最常见的是基于在轴向平面上用容积CT进行薄层扫描获得的数据,但也可以在任何平面和任何能够进行横断面成像的模式下进行扫描,包括在磁共振成像、正电子发射断层扫描和断层扫描所获取的数据基础上进行。
所采集的数据,例如来自轴向平面的数据,可以被转换成非轴向平面,例如冠状面、矢状面或任意方向平面。此外,借助各种软件,可以对数据进行多种操作。其中一种方法被称为曲面重组(curved planar reformation,CPR),可以用来跟踪结构,通常是血管,并生成沿其短轴横切结构的平面(二维)图像。这在CT/MR血管造影(CTA)中非常有用。
在三维重组方式中,通过横断面图像的重建可获得逼真的、立体感的显示。这种组建方式和平面重建一样,都需在薄层扫描的基础上,才能获得比较满意的图像,通常扫描层厚越薄,重建的效果越好。
三维重组的四个步骤:
1.数据获取
通过医学成像设备(CT、MRI、超声等)对人体进行扫描而得到一组二维断层图像。
2.可视化预处理
将某些断层图像中的噪声进行滤波以提高信噪比。对三维体数据中包含的不同对象进行选择,并实施缩放、平移、旋转、删除、改变其物理属性(颜色、透明度、发射系数等)、剖切等操作,其中对数据正确的分类与分割是对病变体或器官做定性与定量分析的基础,也为后续的可视化做必要的数据整理与准备工作。
3.三维建模过程
完成将三维体数据变为几何数据(物体表面的几何描述)的功能。
4.绘制过程
常见的重组算法有①面绘制(surface rendering),即采用计算机图形显示算法对三维数据的表面数据点通过三角面片的形式重建出物体表面进行显示;②直接对三维体数据进行显示,称为体绘制(volume rendering)。一般选用面绘制算法进行重建,主要是为了减轻显示硬件的负担,确保三维图像能够实现快速流畅的呈现、旋转、渲染等操作。但随着显卡等硬件性能的快速提升,现在体绘制已经成为三维重组最常用的算法。