一种肝脏体纹理压缩方法*

2015-11-22 01:58陈思喜陈国栋
贵州大学学报(自然科学版) 2015年1期
关键词:游程基色压缩算法

陈思喜,陈国栋

(福州大学 物理与信息工程学院,福建 福州 350116)

虚拟手术[1]系统是以计算机图形学与虚拟现实技术来模拟、指导和再现医学手术所涉及的各种过程,包括VHP(Visible Human Project 可视化人体)图像集处理、建立实体肝脏、肝脏体纹理合成和肝脏体纹理映射等过程[2-3]。

基于多样本的体纹理合成技术产生的体纹理数据是海量的,通常需要上万字节或者是更多的存储空间。面对如此巨大的数据量,如何提高数据的有效性和利用率是需要研究的问题之一。通常实时的纹理映射,需要硬件有专门的纹理内存空间来存储纹理图像以支持对纹理像素值的实时读写,如此巨大的数据量,使得实时映射显得几乎不可能,虽然通过增加内存的容量可以在一定程度上解决问题,但是却增加了硬件成本,并不是一个有效的方法。因此,不加处理的直接使用生成的体纹理是不合理的,对体纹理的压缩是一个必不可少的过程。

文[4]首先提出了面向实时绘制的纹理压缩方法,指出为了满足实时绘制的要求,纹理压缩算法必须考虑以下两个条件:解压的速度和解压绘制时随机访问任意纹理像素值的能力。在纹理映射过程中,经常会访问纹理数据,只有实时的解压才能实现纹理的实时访问;程序对纹理数据的访问是随机的,因此需要解压机制提供一种快速的随机访问能力。另外,纹理作为一种特殊的图像,同样需要考虑到图像压缩中的压缩比和恢复压缩图像的质量问题[5]。实时绘制的纹理压缩不要求压缩算法的速度,可以看作是一种离线的操作。

图形硬件厂商S3 公司提出的S3TC 纹理压缩技术[6]已被大多数的显卡所支持,它是由一组纹理压缩算法构成,与常见的图像压缩算法相比,它具有固定压缩比和单次访存的特征,很容易用硬件实现加速。但是S3TC 纹理压缩技术对所有纹理分块不分区地采用单一的颜色插值算法,会造成了块与块之间的不连续性,并不适用于带有锐变图像的肝脏体纹理压缩。

肝脏体纹理实时绘制过程中需要通过纹理压缩解决系统传输的瓶颈效应[5],它可以提高纹理缓存的利用效率。体纹理压缩是面向实时绘制的纹理压缩方法,需要满足实时绘制的要求,纹理压缩算法必须考虑以下两个条件:解压的速度和解压绘制时随机访问任意纹理像素值的能力[5]。

游程编码[7]又称为“行程编码”,是一种无损压缩的统计编码,其基本原理[8]是用一个符号和串长(或截止位置)来表示具有相同值的连续符号,以此达到压缩数据的目的,该压缩算法在出现连续相同字符的情况下效果很好。

为此本文提出基于块的游程编码和改进的S3TC 混合编码方式对肝脏体纹理进行压缩。针对肝脏纹理图像的特征,采用不同的纹理单元划分和编码算法来进行编码,重建图像时采用相应的解码算法就可以达到压缩和解压的效果。实验证明,基于块的游程编码和改进的S3TC 算法,解压时不需要线性插值算法计算中间颜色,一定程度上加快了S3TC 算法的解压速度。

1 S3TC 纹理压缩算法

S3TC 是使用固定码率基于块的纹理压缩算法,将纹理划分成4×4 像素的单元块,称之为纹素。纹素中的每个像素用2 bits 表示,同时以RGB565 格式保存纹素中具有代表性的两个颜色数据。压缩纹理数据的存储结构如图1 所示。

图1 S3TC 压缩纹理数据的存储结构

这两个颜色(也称基色),使用内插算法,得到两个新的颜色,构成一个四色查找表。一个纹素可以用64 bits 表示,平均每个像素占4 bits,对于真彩色图像而言,每个像素占24 bits,其压缩比[8]为6∶1。

S3TC 纹理压缩算法比较简单,四色查找表中两个基色是直接从纹理分块中选取,另外两个颜色采用单一的线性内插算法获得。但对锐变的图像进行编码时,造成了块与块之间的不连续性而形成误差,影响重建品质。

2 体纹理压缩算法

在合成肝脏体纹理之前,我们已对样本集做了预处理,将非肝脏区域填充成白色,这样在合成的肝脏体纹理中,包含大量连续的空白区域,根据这一特点,首先对体纹理进行分块,使用游程编码进行压缩。游程编码又称为“行程编码”,是一种无损压缩的统计编码,其基本原理是用一个符号和串长(或截止位置)来表示具有相同值的连续符号,以此达到压缩数据的目的。该压缩算法在出现连续相同字符的情况下是很有效的。

本文采用的编码方式是根据肝脏纹理图像局部特征的不同,把纹理划分成4×4 纹素单元,然后进行混合编码。

2.1 改进的S3TC 编码

肝脏体纹理色彩锐变图像部分,按照4×4 进行分块,并直接抽取四种15 bits RGB565 颜色作为四色查找表,而不进行插值计算,这样就在一定程度上避免了颜色丢失情况的出现。S3TC 中两种代表性颜色的选取原则是使纹理块压缩前后的均方误差最小,在一个4×4×4 的小立方体块中,肝脏纹理颜色不会发生突变(除边界处外),表1 给出了其中一个小立方体中4 个单元块的代表性颜色。

表1 同一立方体内4 个单元块的代表性颜色

从表中可以看出,在同一个立方体块内的4 个单元块,通过S3TC 压缩得到的两个代表性颜色很相近。本文基色的选取算法采用的是LBG 训练方法[6]:

(1)任意选取纹理块中的四种颜色作为基色;

(2)将该纹理块中的像素按照距离准则进行分类;

(3)计算每个分类的质心,并取代原来的基色;

(4)若量化误差小于门限值,则完成基色选取;否则返回到第二步;

(5)若某个分类没有像素,则用距离该基色最远的像素来代替基色。

2.2 压缩算法流程

基于块的游程编码和改进的S3TC 混合编码方式对肝脏体纹理进行压缩。具体算法如下:

(1)将肝脏体纹理划分为一组不重叠的正方体块,每一块的大小为16×16×16 像素;

(2)判断每一块区域是否为全白色,若是,使用游程编码;否则,执行步骤(3);

(3)将正方体块再次细分为4×4×4 像素的小正方体块,判断每一小块区域是否为全白色,若是,使用游程编码;否则,执行步骤(4);

(4)将小正方体块沿z轴方向分解为4 个图层,判断图层块是否为全白色,若是,使用游程编码;否则,执行步骤(5);

(5)对图层块使用改进的S3TC 编码进行纹理压缩。

当在一个单元块中使用游程编码,即执行步骤(4)时,则这一单元块仍需产生一个代表性的颜色,作为小正方体块查找表颜色之一,这一代表性颜色为该单元块像素的颜色。

其算法的流程如图2 所示:

图2 纹理压缩算法流程图

3 实验结果分析

表2 是两种压缩算法的数据对比分析。图3是肝脏体纹理压缩前后的比较图。从表2 和图3可以分析,混合编码得到的了比S3TC 算法好得多的重建图像品质。

表2 肝脏体纹理压缩数据分析

图3 肝脏体纹理压缩结果比较

实验证明,基于块的游程编码和改进的S3TC编码可以得到比较满意的效果。对于16×16×16像素的纹理块使用游程编码时,使用((R[5],G[6],B[5]),12287)即可表示12288(12288=16×16×16×3)字节的数据;对于4×4×4 像素的纹理块使用游程编码时,使用((R[5],G[6],B[5]),191)即可表示192 (192=4×4×4×3)字节的数据;在一个4×4×4 像素的纹理块中使用改进的S3TC 编码时,每个像素都用2 bits 编码,一个单元块存储一个代表性颜色,则每个像素只占3 bits,对于真彩色图像而言,每个像素占24 bits,其压缩比可达到8∶1。

4 结束语

游程编码是一种无损的数据压缩方式,压缩和解压的速度都很快,这种编码方式很容易实现纹理块的随机访问,分块的方式使得纹理像素值的查找也是很方便的;改进的S3TC 算法,解压时不需要线性插值算法计算中间颜色,一定程度上加快了S3TC 算法的解压速度。该压缩算法满足纹理压缩对解压速度和解压绘制时随机访问任意纹理像素值能力两方面的要求。基于体纹理在虚拟手术环境中的真实感方面越来越重要的作用,因而本文方法对肝脏体纹理合成以及其他内脏器官的纹理合成具有较高的参考价值和实用价值。

[1]魏清阳,童俊翔,杜顺达,等.基于SPECT 功能图像的肝脏虚拟手术评估系统[J].中国医学影像技术,2010,26(8):1569-1572.

[2]陈思喜,陈国栋,翟朝亮.基于校图的肝脏体纹理合成与映射方法[J].贵州大学学报:自然科学版,2014,31(4):62-67.

[3]翟朝亮,陈国栋,王娜,等.基于体纹理的肝脏可视化仿真方法研究[J].电视技术,2012,36(17):169-172.

[4]Beers Andrew C.,Agrawala Maneesh,Chaddha Navin.Rendering from compressed textures[C]//Proc.Int.Conf.Computer Graphics and Interactive Techniques.New Orleans:SIGGRAPH,1996:373-378.

[5]汤颖.纹理映射、合成和压缩[D].杭州:浙江大学,2005.

[6]Iourcha K I,Nayak K S,Zhou H .System and method for fixedrate block-based image compression with inferred pixel values:United States,5956431[P].1999-09-21.

[7]刘杰,梁华国,蒋翠云.采用循环移位和优化编码的测试压缩方法[J].计算机研究与发展,2012,49(4):873-741.

[8]许川佩,董祥健.一种交替游程编码的SOC 测试数据压缩方法[J].计算机工程与应用,2010,46(25):57-60.

猜你喜欢
游程基色压缩算法
中国羽毛球组合郑思维/黄雅琼连续得失分规律研究
念 旧
基于参数识别的轨道电路监测数据压缩算法研究
基色与混合色
改进型相对游程长度编码方法
猎熊的孩子
GF(3)上两类广义自缩序列的伪随机性*
猎熊的孩子
一种基于嵌入式实时操作系统Vxworks下的数据压缩技术
RPT方法在多元游程检验中的应用