e-works数字化企业网  »  文章频道  »  先进制造技术  »  快速成型

三维打印快速成形系统中的数据压缩方法

2009/11/24    来源:万方数据    作者:刘厚才  莫健华  叶春生      
关键字:快速成形  三维打印  位图数据  数据压缩  压缩单元  
设计了一种基于字节压缩的位图数据压缩方法。根据三维打印快速成形中位图数据的特点,本压缩方法分别采用1个byte,2个byte和4个byte来表示压缩数据。该压缩方法的压缩比较高,经过对多个CAD模型切片后所得位图数据的压缩前后数据大小的比较,发现最小压缩比为12.1:1,最大达53.9:1,压缩效果比较理想。本方法在对数据进行压缩和解压的过程中,不需要复杂的计算,速度快,耗时少,对三维打印快速成形机这种有上千层位图数据需要处理的场合不会构成瓶颈,可以较好地满足三维打印快速成形系统的要求。

    三维打印(three dimensional print,3DP)快速成形(rapid prototyping,RP)是一种基于微喷射原理的RP技术,本文充分利用了3DP切片位图数据的特点,结合常用的位图压缩原理,设计了一种新的位图数据压缩方法。
1 3DP系统位图数据特点分析
    在3DP的单层成形过程中只需两种状态,即有实体的区域就打印,无实体的区域就不打印,因此3DP的层面数据可以用单色位图表示。在需要支撑的3DP成形工艺中,每一层将由两张位图数据组成:一张表示实体位图,另一张表示支撑位图。3DP中的层面位图数据在压缩之前,采用Windows程序广泛兼容的标准BMP位图格式。标准BMP单色位图中,一个像素用二进制的一位来表示,即8个像素占1 byte。在3DP的层面位图数据中用0表示空白(无实体),1表示有实体。
    图1为一手电锯外壳零件经切片处理后,所得到的不同层上的两张BMP位图数据,外框表示位图区域的大小:2 144像素×1 497像素。从图1可以看出,3DP中的层面位图数据完全不同于一般普通的位图数据,其具有如下明显特点:a.每一扫描行的位图数据(以byte为单位)的数值是以多个相连的0(二进制的00000000)或255(二进制的11111111)为主;l~254(二进制的00000001~11111110)的数只在每一扫描行实体区域与空白区域的交界处才出现,且每次基本上只出现一次。b.不同的切片层上的位图数据可能相差很大,有些切片层中有实体的区域可能接近整个位图区域(图1中(a)所示),有些切片层有实体的区域可能只占整个位图区域中很小的一部分(图1中(b)所示)。


(a)手电锯外壳         (b)小切片层示例
图1 手电锯外壳不同层的位图数据BMP图片


    位图数据的压缩分无损压缩和有损压缩两种方法,3DP系统的成形过程是逐层堆积,每一层的位图数据不允许有任何损失,否则将影响制件的精度甚至无法成形。因此,3DP系统的数据压缩只能采用无损压缩方法。目前常用的位图无损压缩方法有:RLE编码、LZW编码和霍夫曼编码。RLE编码的压缩原理(以RLE8为例)是由2个byte组成位图压缩的字节对,第1个byte表示使用相同颜色的像素数目,第2个byte表示使用的颜色索引。用RLE编码2个byte一般最多可压缩255个相同的像素。LZW编码的原理是将位图数据中一些相连的字节配成字节对,并为每个字节对设定一个代码。当同样的字节对再度出现时,就用代码代替这一些相连的字节。霍夫曼编码的压缩思路是用图像数据数值出现的频率来决定其编码的长度,频率越高的值编码长度越短,频率越低的值编码长度越长。霍夫曼编码需要进行统计计算,压缩过程比较慢。这些位图压缩方法都不能很好地利用3DP层面位图数据的特点,因此均不适合用于3DP中的数据压缩。
2 以字节为压缩单元的位图数据压缩方法
    根据以上分析,设计了一种适用于3DP快速成形系统的位图数据压缩方法,原理如下。
    标准BMP单色位图数据在计算机中的存储方式为:以并列的8个像素即1 byte为基本单元,从位图的左下角开始依次从左到右,从下到上逐行按顺序存储。为了方便数据在计算机中的读入和写出,同时避免频繁地移位和判断操作,本方法不采用其他位图压缩方法中常用的以像素为压缩单元的方式,而采用直接以字节即并列的8个像素为压缩单元的方式对3DP数据进行压缩。
    根据从标准BMP单色位图数据中以byte为单位读入的数值大小及连续出现同一数值的个数,将位图数据分为三类:第一类是数值为1~254;第二类是数值为0或255,且连续出现的个数小于或等于254;第三类是数值为0或255,且连续出现的个数大于254。结合3DP中层面位图数据的特点,对这三类数据采用不同的压缩方式。
    第一类数据不压缩,直接用其本身即1个byte表示。这样设计的依据是这类数据只会出现在既有实体区域又有空白区域的扫描行中,即只出现在从空白区域进入实体区域或从实体区域进入空白区域的交界处,且相同的数值一般不会连续出现,基本上只出现一次,因此不需要压缩。
    第二类数据用2个byte表示:第1个byte为字节的数值0或255,第2个byte表示它连续出现的次数。这样2个byte最多可压缩(表示)254×8=2032个相同的像素,以位图的分辨率为500dpi(3DP中的层面位图数据一般不需要这么高的分辨率)计算,则两个字节最多可表示在一扫描行中长度为103.2 mm的有实体或空白区域。在3DP的层面位图数据中,有实体的扫描行连续为实体或空白的长度一般不会超过这个值,因此其主要是针对有实体数据的那些扫描行中非第一类数据的压缩。
    第三类数据用4个byte表示:第1个byte为字节的数值0或255,第2个byte数值为255,这是一个标志数无意义,第3和第4个byte表示相同数值连续出现的数目。这样4个byte最多可压缩(表示)(216-1)×8=524 280个相同的像素,这是针对有些切片层中出现连续多个扫描行无实体数据时的压缩。如图1中(b)所示有实体区域的下面和上面的无实体的部分。本方法对数据的压缩过程很简单,只需要进行简单的比较和加法运算。具体压缩过程如下:a.以byte为单位从标准BMP位图中读取一个数据;b.若该数值为1~254,将其存入到压缩数据中并转a;c.读取下一个数据,直到读取的数据与该数据不同,同时记下该数据连续出现的次数;d.根据该数据连续出现次数的大小,分别按第二和第三类数据的压缩格式写入压缩数据中,转b。
3 实际压缩效果分析


(a)手电锯外壳        (b)盒形件外壳
图2 两个零件的CAD模型


    图2(a)为手电锯外壳,模型尺寸为:209.83mm×l47.76mm×68.40 mm,切片层数为:684层,单层位图大小为:2 144像素×1 497像素。图2中(b)为一盒形件外壳,模型尺寸为:158.00mm×l02.96mm×41.00mmm,切片层数为:410层,单层位图大小为:1 600像素×1 049像素。每一层都保存两张位图数据,一张为实体位图,一张为支撑位图。图2所示两零件模型的未压缩数据(标准BMP数据格式存储)和压缩数据(用本文的压缩方法)如表1所示,数据中都包含了文件头、每一切片层数据结束的校验符、每一切片层的高度Z的值及该层所对应的位图数据在文件中存储位置的索引等。表1中手电锯外壳和该盒形件外壳的压缩比分别为29.5:1和16.7:1,如果除去与3DP快速成形制造有关的其他数据,实际的压缩比还会有所升高。用本方法还对多个模型的位图数据进行了压缩比较,其中压缩比最小为12.1:1,最大达53.9:1,具体压缩比完全取决于模型的结构和形状。而常见的图像无损压缩方法的压缩比很难超过8:1。


表1 压缩前后数据


    本方法对数据的压缩和解压的效率很高,在3DP快速成形这种有成百上千层数据需要处理的场合不会构成瓶颈。在常规配置(CPU:Celero1.8 GHz,内存:256 Mbyte,操作系统:WindowsXP)台式计算机上,对表1中所示压缩数据进行解压缩软件测试,手电锯外壳每一切层片数据的解压缩(包括从磁盘文件中读取对应层的压缩数据)的平均耗时为0.059 S,盒形件的为0.035S。压缩计算因与3DP中的其他算法(切片、填充和求支撑等)放在一起,没有单独测试其耗时,不过本压缩方法压缩过程的计算量与解压过程的计算量相当,其耗时也应相近。这样的数据处理速度完全可以满足3DP的要求。

责任编辑:杜凯
本文为授权转载文章,任何人未经原授权方同意,不得复制、转载、摘编等任何方式进行使用,e-works不承担由此而产生的任何法律责任! 如有异议请及时告之,以便进行及时处理。联系方式:editor@e-works.net.cn tel:027-87592219/20/21。
e-works
官方微信
掌上
信息化
编辑推荐
新闻推荐
博客推荐
视频推荐