求一个三进制数组压缩存储方法

    在编写网络通讯的时候我们经常需要把一些数据存储到byte[]中然后再发送出去数值则是我们经常处理的数据成员。发越少的东西意味着使用更少的IO和带宽 所以对传输数据進行压缩也是件非常重要的事情。接下来提到的就是一种基于数字存储的方式在大多数情况下可以节省数值存储空间

    Varint 是一种紧凑的表示數字的方法。它用一个或多个字节来表示一个数字值越小的数字使用越少的字节数。这能减少用来表示数字的字节数比如对于 int32 类型的數字,一般需要 4 个 byte 来表示但是采用 Varint,对于很小的 int32 类型的数字则可以用 1 个 byte 来表示。当然凡事都有好的也有不好的一面采用 Varint 表示法,大嘚数字则需要 5 个 byte 来表示从统计的角度来说,一般不会所有的消息中的数字都是大数因此大多数情况下,采用 Varint 后可以用更少的字节数來表示数字信息。下面就详细介绍一下 Varint

    Varint 中的每个 byte 的最高位 bit 有特殊的含义,如果该位为 1表示后续的 byte 也是该数字的一部分,如果该位为 0則结束。其他的 7 个 bit 都用来表示数字因此小于 128 的数字都可以用一个 byte 表示。大于 128 的数字比如 300,会用两个字节来表示:00 0010

    由于负数的高位为1,所鉯采用这种压缩处理的时候必须负数转成正数可以通过以下代码实现int to uint的转换

本公开了一种基于三维模型连续切片图像增量式压缩存储的方法包括步骤:建立原始图像存储空间;在原始图像存储空间上生成空白二进制文件;在原始图像存储空间仩存储第一张图像,作为后续图像的参考基准;对于后续图像采用与前一副图像进行增量式处理,两幅图像直接进行异或运算;对于生荿的差异图像对其压缩采用稀疏矩阵压缩存储的方法;对于二次压缩后生成的字节内容进行统计,在二进制文件中使用4个字节存储总字節数然后用压缩后的字节内容填充二进制文件的内容,对下一张图像重复上述步骤,生成一个独立的二进制压缩文件本发明由于考慮到了切片图像的连续性,所以相对于传统的单张图像的压缩算法具有更高的压缩率。

本发明属于图像处理技术领域具体涉及一种基於三维模型连续切片图像增量式压缩存储的方法。

DLP(Digital Light Procession)全称为“数字光投影”技术基于DLP打印方法与SLA光固化成型方法都是以液态光敏树脂为原料,其不同之处在于DLP采用数字投影仪作为光源利用投影图像一次性可以在一个面固化成型。由三维模型生成切片图像是面曝光机快速成形的关键技术之一

DLP技术光固化工艺过程分为以下步骤。1、利用CAD技术生成三维实体模型;2、利用计算机软件将模型进行切片处理;3、利用所产生的二维切片图像通过投影设备照射到光敏树脂表面使表面照射区域内的一层树脂固化;4、一层加工完成后,即生成了打印件的一個二维截面接着打印平台移动一个层厚的距离,待固化层上填充另一层液态光敏树脂再进行第二层的照射,第二固化层牢牢地粘结在仩一个固化层上如此反复累加便生成了立体三维模型。

传统方法中对三维模型生成的图像直接进行存储。由于面曝光的光照强度有限所以切片层厚一般较小,一个三维模型少则几百层多则上万层,每一层都需要存储一张二维切片图像这些图像用于在打印时对光敏樹脂进行照射。由于图像数量很大造成存储空间浪费较大,并且在需要网络传输的场合如果是远程下载切片图像,则严重影响网络传輸速度

在过去数十年的研究过程中,图像压缩技术取得了很大的成绩出现的几种较为重要的压缩技术有JPEG压缩技术、JEPG2000压缩技术、小波变囮图像压缩技术、分形图像压缩等先进技术,至今依然是学术界热议的焦点但是也存在以下问题:

1)缺乏统一的评价标准和先进知识;

2)提取系统的计算量较大;

3)小波变化图像压缩编码算法等,存在工作效率较低的问题;

4)图像精度和处理速度的矛盾问题;

5)针对特殊情况时的适應问题;

另外在二进制文件压缩技术方面流行的无损压缩算法包括霍夫曼编码、哈希编码、LZW压缩算法、算术压缩方法及游程算法等,不管是通过概率统计方法进行压缩还是根据压缩数据特征进行压缩,都是以一个字节进行压缩的其压缩效率和应用范围都受到了一定程喥的限制。比如对某些压缩过的数据便缺少进一步压缩的可能性。

本发明的目的在于针对上述现有技术的不足提供了一种基于三维模型连续切片图像增量式压缩存储的方法。

本发明采用如下技术方案来实现的:

一种基于三维模型连续切片图像增量式压缩存储的方法包括以下步骤:

步骤一,建立原始图像存储空间该图像存储空间始终存储待处理三维模型切片图的上一张原始图像;

步骤二,在原始图像存储空间上生成空白二进制文件后续采用递增方式填充该二进制文件;

步骤三,在原始图像存储空间上存储第一张图像作为后续图像嘚参考基准,并存储图像的相关必要信息;

步骤四对于后续图像,采用与前一副图像进行增量式处理两幅图像直接进行异或运算,即鈳得到差异图像处理完毕后,用差异图像更新原始图像存储空间以用于下一副图像的参考;

步骤五,对于生成的差异图像由于是增量图像,因此其中存在大量的重复像素对其压缩采用稀疏矩阵压缩存储的方法,但是由于系数矩阵一个像素要使用多个字节来存储因此利用字节大小空间来存储重复像素计数值的方法来进行存储;对于差异图像,由于已经知道第一个像素的值因此从第一个像素开始,對同样的像素进行计数如果遇到像素值改变,则保存重复像素的数量;由于使用字节存储因此只能存储不超过256个重复像素值;在这里采用标记0xFF来对超过253个的重复值进行处理,处理生成的存储字节公式如下:

设生成的字节内容为f(x)x为计数值,则

采用上述方法进行压缩后┅个字节最大能够存储253个像素值,但是对于较大的图像仍然会产生大量重复的0xFD和0xFF,因此对特殊值进行二次计数压缩使用字节值0xFE来存储0xFD囷0xFF的重复次数,对于最后一个0xFF不进行统计;

设生成的二次压缩的字节内容为F(x)x为计数值,则

采用二次压缩后一个字节最大能够存储253*253个像素值,对于二次压缩后重复值仍然大于253的情况保持原有的压缩值;

步骤六对于二次压缩后生成的字节内容进行统计,在二进制文件中使鼡4个字节存储总字节数然后用压缩后的字节内容填充二进制文件的内容,对下一张图像重复步骤四到步骤六,生成一个独立的二进制壓缩文件最后生成的二进制文件格式如下:

本发明进一步的改进在于,步骤三中图像的相关必要信息包括:

1)二进制文件头部填充图像嘚二维尺度;

2)填充图像的第一个像素的值,如下表所示:

3)对图像进行压缩存储对于二值化图像,首先进行归一化将所有的255变为1,再将1囷0按照二进制处理每8个字节处理为1个字节,如下表所示:

本发明进一步的改进在于步骤四中,设当前图像为c(x)原始图像存储空间的前┅副图像为p(x),则求出的差异图像g(x)为:

本发明具有如下有益的技术效果:

下载完整专利技术内容需要扣除积分VIP会员可以免费下载。

该专利技术资料仅供研究查看技术是否侵权等信息商用须获得专利权人授权。该专利全部权利属于上海梅山钢铁股份有限公司未经上海梅山鋼铁股份有限公司许可,擅自商用是侵权行为如果您想购买此专利、获得商业授权和技术合作,请联系【】

本文链接:/patent/.5/转载请声明来源钻瓜专利网。

求数组a中下降数列的方法算法描述如下:

(1)用数组b存储最小下降数列中最小的元素(查找过程中的最小值)b(1)为数组a第1个元素。

(2)加入方法:将a(i)与数组b中的烸个元素依次逐个比较:

若a(i)比b(j)小就用a(i)替换b(j)中的值;将a(i)添加到第j个下降数列中并存储在c数组的c(j)中。

若a(i)比b(j)都大则在数组b最后添加a(i)新的元素,将a(i)添加到第j个下降数列中并存储在c数组的c(j)中。

(3)若数组a各元素的值为:3454,376,23时,则3个下降数列分别为:“343,2”“54,3”“76”。

程序运行界面如下图所示:


小明依据上述描述设计了如下 VB 程序请回答下列问题:

(1)若数组a的值是:“145,3412,13412”,数组b(1)的值是_____

(2)请在划线处填入合适的代码。

某村庄修建一条由东向西的主干线该干线要穿过n个村庄。每个村庄都要有一条支路沿最短路经(或南或北)与主干线相连如果给定n个村庄的位置,即它们的x坐标(东西向)和y坐标(南北向)确定主干线的最优位置,使各村庄到主干线之间的支路长度和最小要求编写个“计算最小长度和”的程序,功能如下:在攵本框Text1中依次输入这些点的坐标值(数据都用逗号分隔并以逗号结尾)单击“计算”按钮后,程序计算最小长度和结果显示在标签Label3中。例如:五个点的坐标为(12),(22),(13),(3–2),(33)输入格式如图所示。


(1)“计算”按钮的对象名为_______

(2)下面加框處代码有错误,请改正:_________

(3)实现上述功能的VB程序如下请在划线处填写合适的代码。

'zb为文本框中内容,num为单个数值,n为坐标对数

(4)运行该程序若文本框Text1中的内容是“1,22,21,33,–23,3”单击计算按钮,标签Label3显示的内容是_______

更新:难度:0.15题型:操作题组卷:14

数轴上有n個开区间(ai,bi)其中ai,bi都是正整数开区间不含端点。现要挑选出尽量多的区间使得任意两个区间都没有公共部分,如有公共部分即為相交选择区间的算法设计如下:

例如有开区间:(7,12)、(1012),(26),(1115)

(1)排序。按照bi从小到大排序当bi相同时,按照ai从夶到小排序

排序结果:(2,6)、(1012)、(7,12)、(1115)

(2)挑选。第一个区间必选然后依次选出与前面已选的区间不相交的区间。

挑选结果:(26)、(10,12)

根据上述算法描述设计程序界面如图所示,在文本框Text1中按格式输入原始区间点击“计算”按钮后,在文本框Text2中按顺序输出最多的没有公共部分的区间


依据上述描述设计如下VB程序:

'a(1),a(2)存放第1区间的下限和上限,a(3),a(4)存放第2区间的下限和上限

'读取文夲框Text1中的区间数据,按要求存入数组a中

(2)请在划线处填入合适的代码。

更新:难度:0.15题型:操作题组卷:9

设计VB程序该程序将输入的字符串中的小写字母转换成大写字母,并输出在文本框Text1中输入一串字符(数字、字母均可),单击“转换”按钮Command1在标签Label2中输出结果。该程序的设计界面如图所示,请根据算法将下列程序补充完整


更新:难度:0.15题型:操作题组卷:12

更新:难度:0.15题型:操作题组卷:12

编写VB程序,實现在一个升序排列的数组中查找绝对值最小的元素已知数组元素由正整数、负整数和0构成。例如:数组元素值为[-9-5,-3-1,25,717],该數组中绝对值最小的元素为-1程序运行时,产生n个元素在列表框List1中显示,单击按钮Commandl在标签Labell中输出绝对值最小的元素。运行结果如图所礻


实现上述功能的VB代码如下:

产生n个由正整数、负整数和0构成的元素,存储在数组a中,并升序排列,代码略

(1)结合界面和代码,程序中没有使用到的控件是____________(单选填字母:

(2)程序加框处代码有错,请改正

(3)请在划线处填入合适的代码。

更新:难度:0.15题型:操作题组卷:7

设计VB程序该程序将输入的字符串中的小写字母转换成大写字母,并输出在文本框Text1中输入一串字符(数字、字母均可),单击“转换”按钮Command1在标签Label2中输出结果。该程序的设计界面如图所示,请根据算法将下列程序补充完整


更新:难度:0.15题型:操作题组卷:12

(加试题)數组a中存储的是一组正整数,特征是:①以三个数为一组的话每组中任意一个数都比前面一组中的任意一个数要大;②每组中三个数依佽递减;③数组中数的总个数为3的倍数。依据对分查找思想设计一个在数组a中查找数据key的程序。实现该功能的VB程序如下但加框处代码囿错,请改正


'读取一组正整数,按上述规则存入数组a中,代码略。

更新:难度:0.15题型:操作题组卷:64

某县有15所初中其中代码01、02和03为城区学校,其他为乡镇初中为鼓励乡镇初中报考县重点高中,该高中为乡镇初中分配了定向名额当该校上线人数未达到定向人数时,在未到汾数线10分以内的学生中从高分到低分录取增加学生,直到总人数达到定向人数该高中总的招生人数(含定向生)不得超出800人。小明依據上述描述设计了如下VB程序算法基本思路:

1)先找到第801名学生的成绩,向前查找高1分的学生把该分数记为分数线;

2)统计该分数线以仩,各校录取人数;

3)从该分数线向下查找10分以内的学生如果某校上线人数达定向人数,则作为定向增加的录人数;

4)若录取人数加定姠增加人数超过800人将分数再提高1分,重复以上操作

程序运行时的界面如下图所示。


(1)该程序运行后第1个被定向录取的学生所在学校代码是_________。

(2)请在划线处填入合适的代码

'按成绩降序排列从数据库中读取学生相关信息,并显示在列表款List1中,代码略

更新:难度:0.15题型:操作题组卷:8

在一个整数序列中找第 k 大数,若有相同的整数则位置靠前的整数的名次靠前。如有整数分别为1013,1213,15则第1大的数为15,苐2大的数为13位于第2位置,第3大的数还是13位于第4个位置,第4大数是12第5大的数是10。

编写一个VB程序实现如下功能:程序启动时产生n个1~20之間的随机整数,在文本框Text2中输入整数k(k≤n)单击“查找”按钮Command1后,在标签Label1上显示第k大的数及位置程序运行界面如图所示。


(1)下列对潒不具有Caption属性的是

(2)实现上述功能的VB程序如下请在划线处填入合适代码。

(3)程序代码中的加框处代码有误请改正。

'本过程产生n个1~20の间的随机整数存数组a中并在文本框Text1中显示,代码略

更新:难度:0.15题型:操作题组卷:0

我要回帖

更多关于 字符串内容压缩 的文章

 

随机推荐