一种3D打印文件的压缩方法技术

技术编号:31011680 阅读:24 留言:0更新日期:2021-11-30 00:39
本发明专利技术公开了一种3D打印文件的压缩方法,包括如下步骤:步骤(1)遍历所有层的图像数据,将像素值小于设定值的数据设置为0,保存新的图像数据;步骤(2)遍历所有层的图像数据,获取当前层与上一层的像素值差异图,判断并标记每一层为差异层、非差异层或者基准层;步骤(3)根据像素值将所有数据分类:有效数据、灰度数据和无效数据;步骤(4)前层若是基准层,则将该层的所有数据分类编码;当前若是差异层,则将该层的差异图分类编码;当前层若是非差异层,则记录其层数;步骤(5)重复步骤(4)直至所有层已编码或者已记录层数。本发明专利技术通过无效数据过滤、相邻层图像数据做差和分类编码的方式有效压缩3D打印文件的储存大小。压缩3D打印文件的储存大小。压缩3D打印文件的储存大小。

【技术实现步骤摘要】
一种3D打印文件的压缩方法


[0001]本专利技术属于数据处理领域,具体涉及一种3D打印文件的压缩方法。

技术介绍

[0002]在3D光固化打印机中,打印文件是由一张张3D模型切片图和一部分参数组合而成的一种记录性文件。打印文件主要记录3D模型切片后的大量的层图像数据,对复杂度高和体积较大的模型来说,由于信息量巨大,往往导致该类型的记录性文件过大。比如目前常见格式的打印文件,svg文件或者简单打包文件等,一个打印文件就超过2GB。
[0003]在3D光固化打印机的软件控制系统中,往往由于硬件成本、嵌入式软件架构等导致可用的运行内存相对十分有限,而目前常见的压缩位图(如png)和矢量图(如svg)加载都需要先开辟同图像大小的内存,一次完整加载图像后,才能一并传递给“显存”。目前常见的4KLCD打印机需要开辟8MB,6K打印需要开辟20MB内存。为了加快效率或者支持其他功能等,需要额外开辟同大小内存,而部分运行内存只有128MB。以上方式很容易导致运行内存占用过高,从而导致系统不稳定。因此,需要一种3D打印文件的压缩方法,降低3D模型切片图的内存。

技术实现思路

[0004]本专利技术的目的在于针对光固化打印机中,打印文件过大问题和内存中层图像大小占用过大,提出一种3D打印文件的压缩方法,通过无效数据过滤、相邻层图像数据做差和分类编码的方式解决打印文件过大问题。
[0005]一种3D打印文件的压缩方法,包括如下步骤:步骤(1)过滤数据:遍历所有层的图像数据,将像素值小于设定值的数据设置为0,保存新的图像数据。
[0006]图片的背景通常为像素值较小的数据,这些数据可以统一设置为0便于后期数据的分类。
[0007]步骤(2)获取差异图并标记每一层:遍历所有层的图像数据,获取当前层与上一层的像素值的差异图,判断并标记每一层为差异层、非差异层或者基准层。
[0008]3D模型切片后可能会有一些切片图片相同,例如圆柱模型的每一个切片图都相同,因此这些相同的切片图层被标记为非差异层,若该层与上一层有差异,则标记为差异层。连续相同的非差异层中,第一个出现的非差异层标记为基准层。
[0009]步骤(3)数据分类:根据像素值将所有数据分为三类:有效数据、灰度数据和无效数据。
[0010]在3D光固化打印中,有效数据是光强值最大的部分,无效数据是光强值为0的部分,灰度数据是其余的部分,光强值越大,光固化树脂固化越快。
[0011]步骤(4)根据当前层类型和数据类型编码:当前层若是基准层,则将该层的所有数据根据有效数据、灰度数据和无效数据进行分类编码;当前若是差异层,则将该层的差异图
根据有效数据、灰度数据和无效数据进行分类编码;当前层若是非差异层,则记录其层数。
[0012]非差异层不需要每一层都编码,只要记录基准层的所有数据和该基准层的连续非差异层的层数即可。对于差异层,只需将该差异层的差异图进行编码,无需将该差异层所有的图像数据进行编码。读取的时候将差异图叠加到上一层的图像数据上,即可生成该差异层的图像数据。有效数据和无效数据的像素值都是固定的,而且通常为连续的,因此只需要记录其长度,无需记录每个数据的像素值。灰度数据的数值不同,每个灰度数据都要进行编码。该步骤通过非差异层记录层数、差异层的差异图编码、数据分类编码三个方法有效压缩3D打印图片的储存大小。
[0013]步骤(5)重复步骤(4)直至所有层已编码或者已记录层数。
[0014]优选的,步骤(1)中,设定值的范围为10

100。设定值越高,过滤数据越多,降低打印精度;设定值越低,过滤数据越少,压缩效果越差,因此需要根据3D模型的实际情况对设定值进行选择。
[0015]优选的,步骤(2)中,若当前层与上一层像素值没有区别,则标记当前层非差异层,连续相同的非差异层中,第一个出现的非差异层标记为基准层;若当前层与上一层像素值有区别,则标记当前层为差异层。通过区别差异层、非差异层和基准层,便于后期压缩非差异层和差异层。
[0016]优选的,步骤(2)中,生成差异图时,设

diffPix=当前层像素值

上一层像素值,若

diffPix≥0,直接保存

diffPix;若

diffPix<0,保存255+

diffPix。
[0017]优选的,步骤(3)中,有效数据为像素值=255,灰度数据为0<像素值<255,无效数据为像素值=0。有效数据为模型主体部分,灰度数据为模型轮廓,无效数据为背景。
[0018]优选的,步骤(4)中,具体编码步骤如下:步骤a.遍历该层每一行内的每一个数据;步骤b.找到当前行下一连续段第一个非无效数据位置;该步骤找到3D模型的边缘;步骤c.把当前累计的连续的无效数据进行编码写入无效数据队列;该步骤将3D模型边缘之前的无效数据(即背景)编写进无效数据队列;步骤d.把当前非无效数据放入非无效数据队列;该步骤把3D模型的数据放入非无效数据队列;步骤e.遍历索引值加一后,重复步骤d,直到找到第一个无效数据位置;该步骤找到3D模型另一个边缘;步骤f.将非无效数据队列中的有效数据和灰度数据分别进行编码;该步骤将灰度数据进行编码,有效数据可根据其连续长度进行压缩;步骤g.无效数据长度累加1;步骤h.重复步骤b

g,直至当前行最后一个像素值;步骤i.遍历下一行,重复步骤a

h,直至遍历该层所有行。
[0019]优选的,步骤(4)中的步骤f中,具体步骤如下:对非无效数据队列统计连续相同值长度得到连续相同值长度数组I,遍历连续相同值长度数组I,提取连续相同值大于2的值,对连续相同值大于2的值前后的连续相同值小于等于2的值分别做加法,得到连续相同值长度数组II,连续相同值长度数组II描述了非无效数据队列中连续相同值长度大于2的分布
情况;遍历连续相同值长度数组II,对其中长度大于1的有效数据进行有效数据编码,对其余部分进行灰度数据编码。
[0020]优选的,编码过程中,若超过数据编码最大长度,对数据进行分段同方式编码。
[0021]由于采用上述技术方案,本专利技术具有以下有益效果:本专利技术通过无效数据过滤、相邻层图像数据做差和分类编码的方式解决打印文件过大问题,能有效压缩3D打印图片的储存大小。具体有益效果如下:1、3D打印图片背景,即无效数据,若每个都编码,则会占用了许多内存,因此过滤这些无效数据,使其像素值均为0,便于后期数据分类,同样也便于无效数据的编码。
[0022]2、分辨出差异层、非差异层基准层之后,非差异层不需要每一层都编码,只要记录基准层的所有数据和该基准层的连续非差异层的层数即可,差异层只需将该差异层的差异图进行编码,无需将该差异层所有的图像数据进行编码,从而压缩3D打印图片的储存大小。
[0023]3、有效本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种3D打印文件的压缩方法,其特征在于,包括如下步骤:步骤(1)过滤数据:遍历所有层的图像数据,将像素值小于设定值的数据设置为0,保存新的图像数据;步骤(2)获取差异图并标记每一层:遍历所有层的图像数据,获取当前层与上一层的像素值的差异图,判断并标记每一层为差异层、非差异层或者基准层;步骤(3)数据分类:根据像素值将所有数据分为三类:有效数据、灰度数据和无效数据;步骤(4)根据当前层类型和数据类型编码:当前层若是基准层,则将该层的所有数据根据有效数据、灰度数据和无效数据进行分类编码;当前若是差异层,则将该层的差异图根据有效数据、灰度数据和无效数据进行分类编码;当前层若是非差异层,则记录其层数;步骤(5)重复步骤(4)直至所有层已编码或者已记录层数。2.根据权利要求1所述一种3D打印文件的压缩方法,其特征在于:步骤(1)中,设定值的范围为10

100。3.根据权利要求1所述一种3D打印文件的压缩方法,其特征在于:步骤(2)中,若当前层与上一层像素值没有区别,则标记当前层非差异层,连续相同的非差异层中,第一个出现的非差异层标记为基准层;若当前层与上一层像素值有区别,则标记当前层为差异层。4.根据权利要求1所述一种3D打印文件的压缩方法,其特征在于:步骤(2)中,生成像素值差异图时,设

diffPix=当前层像素值

上一层像素值,若

diffPix≥0,则直接保存

diffPix;若

diffPix<0,则保存255+
△...

【专利技术属性】
技术研发人员:章国挺林鹏
申请(专利权)人:浙江闪铸三维科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1