数据压缩装置、数据解压缩装置、数据压缩方法、数据解压缩方法和程序与流程

文档序号:11335167阅读:196来源:国知局
数据压缩装置、数据解压缩装置、数据压缩方法、数据解压缩方法和程序与流程

本发明涉及数据压缩装置、数据解压缩装置、数据压缩方法、数据解压缩方法和程序。特别涉及使用对整数进行分割来编码的方式的数据压缩装置、数据解压缩装置、数据压缩方法、数据解压缩方法和程序。



背景技术:

作为用于对固定长度的整数串进行可逆压缩的编码方法,使用如下的方法:首先求出针对编码对象数据的预测值,接着求出预测值与编码对象数据的残差,然后以适当方式对由残差构成的数据序列进行编码。即,该方法由求出针对编码对象数据的预测值的预测值生成、求出预测值与编码对象数据的残差的残差生成、以适当方式对由残差构成的数据序列进行编码的残差编码构成。

在该方法中,通过夹入求出残差的阶段,与实际数据序列进行比较,得到由较小的值即接近0的值构成的数据序列。由此,根据该方法,针对编码对象数据的残差编码容易有效,压缩效果往往得到提高。

作为预测值生成和残差生成中的例子,存在取得与上次值之间的差分作为残差的方法。具体而言,选择上次值作为预测值,作为残差生成方法,采用单纯的整数值减法值作为残差。更一般地讲,作为预测值,选择线性预测等方法。

关于残差编码,提出了γ编码、δ编码等各种方法。这些残差编码的方法大致分成用于提高压缩率的方法以及用于提高压缩速度、解压缩速度等处理速度的方法这两种方法。

作为用于提高压缩率的方式,以哥伦布-赖斯编码为代表,存在将整数值在规定位置处分割成由高位比特构成的第1整数和由低位比特构成的第2整数的方式。下面,将对整数进行分割的编码方式统一称作上下比特分割方式。

在上下比特分割方式中,通过γ编码或δ编码这样的适当的可变长度编码对由高位比特构成的第1整数进行编码并输出。然后,针对由低位比特构成的第2整数,不进行编码而作为固定长度的二进制数据进行输出。在哥伦布-赖斯编码中,作为第1整数的编码方法采用α编码。

在专利文献1中公开有如下的方法:动态地决定由高位比特构成的第1整数的编码方法以及高位比特与低位比特的分割位置,由此提高压缩率。并且,在专利文献2中公开有基于上下比特分割方式的图像的压缩方法。

上下比特分割方式是在作为压缩对象的整数串中混合存在有噪声等,从而在低位比特的变动较大时有效的方式。混合存在有噪声的低位比特很难进行压缩,因此,不进行压缩而作为固定长度的二进制数据进行输出,仅对比较容易压缩的高位比特进行压缩,这是上下比特分割方式的基本思路。

如图8所示,在将整数串比特分割成高位比特和低位比特的情况下,高位比特容易进行压缩,低位比特很难进行压缩。

关于用于提高处理速度的方式,存在以字节单位或更大的字单位进行压缩时的编码的多个方式。之前叙述的γ编码、δ编码、哥伦布-赖斯编码等以比特单位生成并输出码,因此,存在与计算机处理之间的亲和性较低、导致处理速度降低这样的课题。为了解决这种课题而提出的方式是以字节单位或字单位生成并输出码的方式。这里,字是某个固定长度的单位,例如是指2字节或4字节这样的单位。下面,将以字节单位、字单位生成码的压缩方式分别称作字节单位处理方式、字单位处理方式。

作为字节单位处理方式的例子,广泛公知有variable-byte(非专利文献1)等编码方式。作为字单位处理方式,公知有simple9(非专利文献2)、pfordelta(非专利文献3)等。在γ编码、δ编码、哥伦布-赖斯编码等中,逐一对整数进行编码,但是,在字单位处理方式中,统一对多个整数进行编码,以字单位生成其结果。

现有技术文献

专利文献

专利文献1:日本特许第5570409号

专利文献2:日本特开2011-223244

非专利文献

非专利文献1:f.scholer,h.williams,j.yiannis,andj.zobel.compressionofinvertedindexesforfastqueryevaluation.inproc.ofthe25thannualsigirconf.onresearchanddevelopmentininformationretrieval,august2002.

非专利文献2:vongocanh,alistairmoffat.invertedindexcompressionusingword-alignedbinarycodes,informationretrieval,8,151-166,2005.

非专利文献3:m.zukowski,s.heman,n.nes,andp.boncz.super-scalarram-cpucachecompression.inproc.oftheint.conf.ondataengineering,2006.



技术实现要素:

发明要解决的课题

压缩率和处理速度存在折衷的关系。在上下比特分割方式中,压缩率提高,但是,处理速度降低。另一方面,在字单位处理方式中,处理速度提高,但是,压缩率降低。

本发明的目的在于,实现如下的整数串的可逆压缩方式:通过同时实现上下比特分割方式和字单位处理方式双方,能够在维持上下比特分割方式的高压缩率的同时提高处理速度。

用于解决课题的手段

本发明的数据压缩装置具有:

数据取得部,其从包含多个由处理单位的比特数即单位比特数的二进制数据表示的整数的编码数据取得n个整数,其中,n为自然数;

整数分割部,其对由所述数据取得部取得的所述n个整数的各整数进行分割,将所述n个整数的各整数分割成由分割比特数的低位比特表示的第2整数和由从所述n个整数的各整数中除去所述低位比特后的高位比特表示的第1整数,输出n个第1整数和n个第2整数;

第1编码部,其对从所述整数分割部输出的所述n个第1整数进行编码,输出对所述n个第1整数进行编码的结果作为由所述单位比特数的自然数倍的比特数的二进制数据表示的第1码;以及

第2编码部,其对从所述整数分割部输出的所述n个第2整数进行编码,输出对所述n个第2整数进行编码的结果作为第2码。

发明效果

本发明的数据压缩装置具有第1编码部,该第1编码部对从整数分割部输出的n个第1整数进行编码,输出对n个第1整数进行编码的结果作为由单位比特数的自然数倍的比特数的二进制数据表示的第1码。并且,数据压缩装置具有第2编码部,该第2编码部对从整数分割部输出的n个第2整数进行编码,输出对n个第2整数进行编码的结果作为第2码。由此,根据本发明的数据压缩装置,通过同时实现上下比特分割方式和字单位处理方式双方,能够在维持高压缩率的同时提高处理速度。

附图说明

图1是实施方式1的数据压缩装置的结构框图。

图2是实施方式1的数据解压缩装置的结构框图。

图3是实施方式1的数据压缩装置、数据解压缩装置的硬件结构图。

图4是实施方式1的数据压缩装置的数据压缩方法、数据压缩处理的流程图。

图5是实施方式1的数据解压缩装置的数据解压缩方法、数据解压缩处理的流程图。

图6是实施方式2的数据压缩装置的数据压缩方法、数据压缩处理的流程图。

图7是实施方式2的数据解压缩装置的数据解压缩方法、数据解压缩处理的流程图。

图8是关于整数串的比特分割的说明图。

具体实施方式

实施方式1

***结构的说明***

使用图1对本实施方式的数据压缩装置100的块结构进行说明。

在以下的说明中,设处理单位的比特数即单位比特数为l比特。将单位比特数称作字或字节。单位比特数也称作字的长度即字单位。

并且,表示整数的二进制数据的比特长度与单位比特数相同,设为l比特。l是16、32、64等的值,但是不限于这些值。本实施方式能够应用于任意比特长度的整数。

数据压缩装置100取得作为编码对象的编码数据11,对所取得的编码数据11进行编码,将编码的结果存储在已编码数据12中。编码数据11是带顺序的整数串。并且,编码数据11中包含的整数的个数是任意的。编码数据11也称作输入数据。

数据压缩装置100具有数据取得部101、整数分割部102、编码调整部103、第1编码部104、第1结果输出部105、第2编码部106、第2结果输出部107。另外,在数据压缩装置100连接有存储部1201。在存储部1201中存储有已编码数据12。

数据取得部101读入编码数据11中包含的整数。数据取得部101从包含多个由处理单位的比特数即单位比特数的二进制数据表示的整数的编码数据11取得n个整数,其中,n为自然数。数据取得部101也称作输入部。

整数分割部102根据比特分割位置参数b,将由数据取得部101取得的整数分割成由高位(l-b)比特构成的第1整数1021和由低位b比特构成的第2整数1022。即,整数分割部102对由数据取得部101取得的n个整数的各整数进行分割。整数分割部102将n个整数的各整数分割成由分割比特数b的低位比特表示的第2整数1022和由从n个整数的各整数中除去低位比特后的高位比特表示的第1整数1021。然后,整数分割部102输出n个第1整数和n个第2整数。

编码调整部103决定一次编码的整数的个数n。编码调整部103也称作决定部1031、编码单位调整部。决定部1031即编码调整部103将单位比特数l的k倍的数量决定为n,其中,k为自然数。

第1编码部104对从整数分割部102输出的n个第1整数1021进行编码。第1编码部104输出对n个第1整数1021进行编码的结果作为由单位比特数l的自然数倍的比特数的二进制数据表示的第1码1041。

第1编码部104对在编码调整部103中决定的n个第1整数1021进行编码。第1编码部104在编码时,利用simple9这样的以字单位生成编码结果的字单位处理方式。第1编码部104输出对n个第1整数1021进行编码而得到的第1码1041。这里,根据第1编码部104的性质,由第1编码部104输出的第1码1041的数据尺寸成为字单位即l比特的倍数。第1编码部104也称作第1整数编码部。

第1结果输出部105将由第1编码部104生成的第1码1041追记在已编码数据12中。第1结果输出部105也称作第1编码结果输出部。

第2编码部106对在编码调整部103中决定的n个第2整数1022进行编码,作为第2码1061进行输出。即,第2编码部106对从整数分割部102输出的n个第2整数1022进行编码,输出对n个第2整数1022进行编码的结果作为第2码1061。

第2码1061由对分割比特数b乘以n而得到的数量的比特数的二进制数据表示。即,第2编码部106在n×b比特的固定长度二进制数据中生成n个b比特整数。第2编码部106也称作第2整数编码部。

此时,根据n的值,不以字单位生成第2编码部106的编码结果。即,第2码1061的比特数(n×b)可能不是l的倍数。但是,根据本实施方式,编码调整部103适当选择n,由此,能够以字单位即l的自然数倍生成第2码1061的比特数。编码调整部103决定n以使n=l×k,因此,第2编码部106能够输出由对单位比特数l乘以分割比特数b与k之积而得到的数量的比特数的二进制数据表示的第2码1061。

第2结果输出部107将由第2编码部106生成的第2码1061追记在已编码数据12中。根据本实施方式,根据第2编码部106的性质,输出的第2码1061的数据尺寸成为字单位l比特的倍数。第2结果输出部107也称作第2编码结果输出部。

存储部1201存储由第1编码部104输出的第1码1041,并且在第1码1041之后连续存储由第2编码部106输出的第2码1061。如上所述,存储部1201中存储的已编码数据12中连续地交替记述有第1码1041和第2码1061。

接着,对编码调整部103进行详细说明。

在编码调整部103中,选择字单位l的倍数(k×l),作为一次编码的整数的个数n。这里,k是预先由数据压缩装置100的利用者决定的参数。

编码调整部103设定n以使n=k×l,由此,由第2编码部106生成的第2码1061的尺寸成为(k×l×b)比特即字单位l比特的倍数。因此,第2结果输出部107能够输出字单位l比特的倍数尺寸的第2码1061而不会消耗额外的比特空间。

使用图2对本实施方式的数据解压缩装置200的块结构进行说明。

数据解压缩装置200是对由数据压缩装置100编码而成的包含第1码1041和第2码1061的已编码数据12进行解压缩的装置。数据解压缩装置200将已编码数据12作为输入,输出由数据压缩装置100压缩之前的原数据22即编码数据11。

数据解压缩装置200具有已编码数据取得部201、第1解码部202、第2解码部204、整数结合部205、输出部206。第1解码部202具有第1解码处理部2021、结束判定部203。

已编码数据取得部201从已编码数据12读入要解码的对象数据。如上所述,已编码数据12包含交替记述的第1码1041和第2码1061。由此,已编码数据取得部201交替读入第1码1041和第2码1061。已编码数据取得部201也称作输入部。

第1解码部202将从已编码数据12读入的第1码1041解码成多个第1整数1021。即,第1解码部202取得第1码1041,将所取得的第1码1041解码成n个第1整数1021。根据数据压缩装置100的性质,第1解码部202能够进行字单位l比特的解码处理。第1解码部202也称作第1整数解码部。

第1解码处理部2021针对从已编码数据取得部201取得的第1码1041的1个字,执行第1整数的解码处理。

结束判定部203对应于数据压缩装置100中的编码调整部103。结束判定部203以由编码调整部103设定的一次压缩的整数的个数n判定n个第1整数的解码是否结束。结束判定部203在n个第1整数的解码未结束的情况下,继续进行第1解码处理部2021的第1整数的解码处理。并且,结束判定部203在n个第1整数的解码结束的情况下,转移到第2整数的解码处理。结束判定部203也称作第1整数解码处理结束判定部。

第2解码部204将从已编码数据12读入的第2码1061解码成多个第2整数。即,第2解码部204从已编码数据12取得第2码1061,将所取得的第2码1061解码成n个第2整数1022。根据数据压缩装置100的性质,第2解码部204能够进行字单位的解码处理。第2解码部204也称作第2整数解码部。

整数结合部205将已经解码的第1整数和第2整数再次结合,解码成原来的整数数据。即,整数结合部205根据n个第1整数1021和n个第2整数1022生成n个整数。

输出部206输出由整数结合部205得到的解码结果作为原数据22。原数据22是编码之前的编码数据11。

使用图3对本实施方式的数据压缩装置100、数据解压缩装置200的硬件结构的一例进行说明。

数据压缩装置100、数据解压缩装置200是计算机。

数据压缩装置100、数据解压缩装置200具有处理器901、辅助存储装置902、存储器903、通信装置904、输入接口905、显示器接口906这样的硬件。

处理器901经由信号线910而与其它硬件连接,对这些其他硬件进行控制。

输入接口905与输入装置907连接。

显示器接口906与显示器908连接。

处理器901是进行处理的ic(integratedcircuit:集成电路)。

处理器901例如是cpu(centralprocessingunit:中央处理单元)、dsp(digitalsignalprocessor:数字信号处理器)、gpu(graphicsprocessingunit:图形处理单元)。

辅助存储装置902例如是rom(readonlymemory:只读存储器)、闪存、hdd(harddiskdrive:硬盘驱动器)。

存储器903例如是ram(randomaccessmemory:随机存取存储器)。

通信装置904包含接收数据的接收机9041和发送数据的发送机9042。

通信装置904例如是通信芯片或nic(networkinterfacecard:网络接口卡)。

输入接口905是连接输入装置907的缆线911的端口。

输入接口905例如是usb(universalserialbus:通用串行总线)端子。

显示器接口906是连接显示器908的缆线912的端口。

显示器接口906例如是usb端子或hdmi(注册商标)(highdefinitionmultimediainterface:高分辨率多媒体接口)端子。

输入装置907例如是鼠标、键盘或触摸面板。

显示器908例如是lcd(liquidcrystaldisplay:液晶显示器)。

在计算机是数据压缩装置100的情况下,在辅助存储装置902中存储有实现图1所示的数据取得部101、整数分割部102、编码调整部103、第1编码部104、第1结果输出部105、第2编码部106、第2结果输出部107的功能的程序。下面,将数据取得部101、整数分割部102、编码调整部103、第1编码部104、第1结果输出部105、第2编码部106、第2结果输出部107统一记作“数据压缩装置的部”。

并且,在计算机是数据解压缩装置200的情况下,在辅助存储装置902中存储有实现图2所示的已编码数据取得部201、第1解码处理部2021、结束判定部203、第2解码部204、整数结合部205、输出部206的功能的程序。下面,将已编码数据取得部201、第1解码处理部2021、结束判定部203、第2解码部204、整数结合部205、输出部206统一记作“数据解压缩装置的部”。有时将“数据压缩装置的部”和“数据解压缩装置的部”中的任意一方或双方简单记作“部”。

实现上述“数据压缩装置的部”的功能的程序也称作数据压缩程序。实现上述“数据解压缩装置的部”的功能的程序也称作数据解压缩程序。实现“部”的功能的程序可以是一个程序,也可以由多个程序构成。

该程序载入到存储器903,读入到处理器901,由处理器901来执行。

进而,在辅助存储装置902中还存储有os(operatingsystem:操作系统)。

而且,os的至少一部分载入到存储器903,处理器901执行os,并且执行实现“部”的功能的程序。

在图3中,图示出一个处理器901,但是,数据压缩装置100、数据解压缩装置200也可以分别具有多个处理器901。

而且,多个处理器901也可以协作执行实现“部”的功能的程序。

并且,表示“部”的处理结果的信息、数据、信号值和变量值作为文件存储在存储器903、辅助存储装置902或处理器901内的寄存器或缓存中。

也可以利用“电路系统(circuitry)”来提供“部”。

并且,也可以将“部”改写成“电路”或“工序”或“步骤”或“处理”。并且,也可以将“处理”改写成“电路”或“工序”或“步骤”或“部”。

“电路”和“电路系统”是不仅包含处理器901,而且包含逻辑ic或ga(gatearray:门阵列)或asic(applicationspecificintegratedcircuit:面向特定用途的集成电路)或fpga(field-programmablegatearray:现场可编程门阵列)这样的其他种类的处理电路的概念。

另外,被称作程序产品的部分是记录有实现作为“部”说明的功能的程序的存储介质、存储装置等,与外在形式无关,载入有计算机可读取的程序。

***动作的说明***

使用图4对本实施方式的数据压缩装置100的数据压缩方法、数据压缩处理s100进行说明。

<数据取得处理s1001>

数据取得部101执行如下的数据取得处理s1001:从包含多个由单位比特数l的二进制数据表示的整数的编码数据11取得n个整数,其中,n为自然数。数据取得处理s1001具有s101的处理和s102的处理。

在s101中,数据取得部101判定是否已完成编码数据11中包含的全部整数的编码处理。

数据取得部101在判定为已完成编码数据11中包含的全部整数的编码处理的情况下,结束处理。数据取得部101在判定为未完成编码数据11中包含的全部整数的编码处理的情况下,进入s102。

在s102中,数据取得部101从编码数据11读入新编码的整数。此时,数据取得部101根据由编码调整部103决定的参数k,读入(k×l)个即n个整数。数据取得部101在编码数据11中仅残留有小于(k×l)个整数的情况下,读入全部整数。处理进入s103。

<整数分割处理s1002>

整数分割部102执行对通过数据取得处理s1001取得的n个整数的各整数进行分割的整数分割处理s1002。在整数分割处理s1002中,整数分割部102将n个整数的各整数分割成由分割比特数b的低位比特表示的第2整数1022和由从n个整数的各整数中除去低位比特后的高位比特表示的第1整数1021。并且,在整数分割处理s1002中,整数分割部102输出n个第1整数1021和n个第2整数1022。整数分割处理s1002具有s103的处理。

在s103中,整数分割部102将读入的(k×l)个整数分割成由(l-b)比特的高位比特构成的第1整数1021和由b比特的低位比特构成的第2整数1022。处理进入s104。

<第1编码处理s1003>

第1编码部104执行对通过整数分割处理s1002输出的n个第1整数1021进行编码的第1编码处理s1003。在第1编码处理s1003中,第1编码部104输出对n个第1整数1021进行编码的结果作为由单位比特数l的自然数倍的比特数的二进制数据表示的第1码1041。第1编码处理s1003具有s104的处理和s105的处理。

在s104中,第1编码部104通过字单位处理方式对(k×l)个第1整数进行编码,生成第1码1041。处理进入s105。

在s105中,第1结果输出部105将由第1编码部104生成的第1码1041追记在已编码数据12中。处理进入s106。

<第2编码处理s1004>

第2编码部106执行如下的第2编码处理s1004:对通过整数分割处理s1002输出的n个第2整数1022进行编码,输出对n个第2整数1022进行编码的结果作为第2码1061。第2编码处理s1004具有s106的处理和s107的处理。

在s106中,第2编码部106将(k×l)个第2整数编码成(k×l×b)比特即(n×b)比特的固定长度二进制数据,生成第2码1061。处理进入s107。

在s107中,第2结果输出部107将由第2编码部106生成的第2码1061追记在已编码数据12中。处理返回s101。

以上,结束针对数据压缩装置100的数据压缩方法、数据压缩处理s100的说明。

根据该数据压缩方法,关于编码数据11中包含的多个整数,输出交替记述有对n个第1整数1021进行编码而成的第1码1041和对n个第2整数1022进行编码而成的第2码1061的已编码数据12。

接着,使用图5对本实施方式的数据解压缩装置200的数据解压缩方法、数据解压缩处理s200进行说明。

<已编码数据取得处理s2001>

在s201中,已编码数据取得部201判定是否已完成已编码数据12中包含的全部数据的解码处理。已编码数据取得部201在判定为已完成全部数据的解码处理的情况下,结束处理。已编码数据取得部201在判定为未完成全部数据的解码处理的情况下,进入s202。

在s202中,已编码数据取得部201判定下一个处理是第1整数的解码处理还是第2整数的解码处理。数据解压缩处理s200中的初始状态是第1整数的解码处理。在下一个处理是第1整数的解码处理的情况下进入s203。在下一个处理是第2整数的解码处理的情况下进入s208。

<第1解码处理s2002>

第1解码部202执行如下的第1解码处理s2002:取得通过数据压缩处理s100编码而成的已编码数据12中包含的第1码1041,将第1码1041解码成n个第1整数1021。

第1解码部202从第1码1041依次取得作为单位比特数l的二进制数据的第1单位数据10411,对所取得的第1单位数据10411进行解码,对通过解码得到的第1整数1021的个数进行计数。第1解码部202反复进行从第1码1041取得第1单位数据10411并对所取得的第1单位数据10411进行解码的处理,直到计数出的个数等于n为止。第1解码处理s2002具有s203的处理~s207的处理。

在s203中,已编码数据取得部201从已编码数据12读入1个字的新解码的数据。1个字是l比特。处理进入s204。

在s204中,第1解码部202的第1解码处理部2021将读入的1个字解码成多个第1整数1021。处理进入s205。

在s205中,第1解码部202的结束判定部203判定是否由第1解码处理部2021对n(=k×l)个第1整数进行了解码。即,结束判定部203判定第1整数的已解码个数是否为n个。在对n个第1整数进行了解码的情况下进入s206。在n个第1整数的解码未完成的情况下进入s207。

在s206中,结束判定部203将接下来进行的处理设定成第2整数的解码处理。在s202的判定中使用该设定。并且,结束判定部203将在s205的判定中利用的第1整数的已解码个数初始化成0个。处理返回s202。

在s207中,结束判定部203将接下来进行的处理设定成第1整数的解码处理。在s202的判定中使用该设定。处理返回s202。

通过以上的第1解码处理s2002,生成n(=k×l)个第1整数。

<第2解码处理s2003>

第2解码部204执行如下的第2解码处理s2003:从已编码数据12取得第2码1061,将所取得的第2码1061解码成n个第2整数1022。

第2解码部204从第2码1061取得分割比特数b与k之积的数量的作为单位比特数l的二进制数据的第2单位数据10611。第2解码部204将所取得的分割比特数b与k之积的数量的第2单位数据10611解码成n个第2整数1022。第2解码处理s2003具有s208的处理~s209的处理。

在s208中,已编码数据取得部201从已编码数据12读入(k×b)个字的新解码的数据。处理进入s209。

在s209中,第2解码部204将读入的(k×b)个字解码成(k×l)个第2整数。处理进入s210。

通过以上的第2解码处理s2003,生成n(=k×l)个第2整数。

<整数结合处理s2004>

整数结合部205执行根据n个第1整数1021和n个第2整数1022生成n个整数的整数结合处理s2004。整数结合处理s2004具有s210的处理~s212的处理。

在s210中,整数结合部205将由第1解码部202解码出的(k×l)个第1整数和由第2解码部204解码出的(k×l)个第2整数分别再次结合。整数结合部205将(k×l)个第1整数和(k×l)个第2整数分别再次结合,生成(k×l)个整数。处理进入s211。

在s211中,输出部206将由整数结合部205生成的n(=k×l)个整数追记在原数据22中。处理进入s212。

在s212中,结束判定部203将接下来进行的处理设定成第1整数的解码处理。在s202的判定中使用该设定。处理返回s201。

通过以上的整数结合处理s2004,生成n(=k×l)个整数。

以上,结束针对数据解压缩装置200的数据解压缩方法、数据解压缩处理s200的说明。

***效果的说明***

本实施方式的数据压缩装置对由字长l比特的固定长度的整数值数据构成的数据序列进行可逆压缩。编码调整部选择字长l的倍数(k×l)作为一次编码的整数的个数n。第1编码部生成在编码调整部中决定的(k×l)个第1整数的编码结果,使其成为字长l的倍数。即,第1编码部实施字单位压缩。第2编码部将在编码调整部中决定的个数n的第2整数包装成(k×b)个字即(k×b×l)比特。

并且,本实施方式的数据压缩装置具有以字长l的倍数的长度输出由第1编码部生成的编码结果的第1编码结果输出部。并且,数据压缩装置具有以(k×b)个字即(k×b×l)比特的长度输出由第2编码部生成的编码结果的第2编码结果输出部。

并且,在本实施方式的数据解压缩装置中,第1整数解码部逐字读入压缩数据,反复进行字单位的解码处理,由此解码成第1整数。结束判定部判定是否对(k×l)个第1整数进行了解码,在判定结果为真的情况下,使处理转移到第2解码部。第2解码部以字单位读入压缩数据,将其解码成与由第1解码部解码出的第1整数的个数相同数量的第2整数。即,第2解码部将根据比特分割位置参数b和解码出的第1整数的个数k决定的(k×b)个字解码成(k×l)个第2整数。

整数结合部对第1解码部和第2解码部的输出结果进行结合,由此得到原来的(k×l)个整数值。

根据本实施方式的数据压缩装置,能够采用上下比特分割方式,并且,能够一起以字单位生成由高位比特构成的第1整数的编码结果和由低位比特构成的第2整数的编码结果。由此,本实施方式的数据压缩装置能够在提高压缩率的同时提高处理速度。

并且,根据本实施方式的数据压缩装置和数据解压缩装置,能够每次少量地交替输出第1编码结果和第2编码结果。由此,根据数据压缩装置,即使编码数据11是尺寸非常大的数据,在压缩处理中,也不需要一次读入全部数据,能够每次少量地读入数据并逐次进行处理。并且,根据数据解压缩装置,即使已编码数据12是尺寸非常大的数据,在解压缩处理中,也不需要一次读入全部数据,能够每次少量地读入数据并逐次进行处理。

实施方式2

在本实施方式中,主要对与实施方式1不同之处进行说明。

***结构的说明***

与实施方式1同样,通过图1示出表示本实施方式的数据压缩装置100a的块结构。并且,与实施方式1同样,通过图2示出表示本实施方式的数据解压缩装置200a的块结构。对与在实施方式1中说明的结构相同的结构标注相同标号,有时省略其说明。

在本实施方式的数据压缩装置100a中,编码调整部103的功能和动作与实施方式1不同。在本实施方式中,设图1的编码调整部103为编码调整部103a,决定部1031为决定部1031a进行说明。

决定部1031a即编码调整部103a将k决定为k的上限值,并且决定参数c,其中,k、c为自然数。编码调整部103a在k≦k的范围内对n个第1整数1021进行编码时,选择在编码时冗余的剩余比特的比特数为c以下的k。

这样,编码调整部103a使用2个参数k、c,以决定一次编码的整数的个数n。具体而言,编码调整部103a选择字长l的倍数(k×l)作为一次编码的整数的个数的上限。并且,编码调整部103a在k<k的范围内对(k×l)个第1整数进行编码时,选择在编码时冗余的剩余比特为预先设定的参数c比特以下的最小的k。

在本实施方式的数据解压缩装置200a中,第1解码部202的功能和动作与实施方式1不同。在本实施方式中,设图2的第1解码部202的结束判定部203和第1解码处理部2021为第1解码部202a的结束判定部203a和第1解码处理部2021a进行说明。

结束判定部203a将k决定为k的上限值,并且决定参数c,其中,k、c为自然数。结束判定部203a使用2个参数k、c,以判定第1整数的解码处理是否完成。

***动作的说明***

使用图6对本实施方式的数据压缩装置100a的数据压缩方法、数据压缩处理s100a进行说明。

数据压缩装置100a在数据压缩处理s100a开始时,将参数k初始化为k=0。

s301的处理与图4的s101的处理相同。即,在s301中,数据取得部101判定是否已完成编码数据11中包含的全部整数的编码处理。

数据取得部101在判定为已完成编码数据11中包含的全部整数的编码处理的情况下,结束处理。数据取得部101在判定为未完成编码数据11中包含的全部整数的编码处理的情况下,进入s302。

在s302中,数据取得部101从编码数据11新读入l个整数。在编码数据11中仅残留有小于l個的整数的情况下,读入全部整数。数据取得部101将参数k增加1。如上所述,k的初始值为0。s302的处理相当于图4的s102的处理。处理进入s303。

在s303中,整数分割部102将读入的l个整数分割成由(l-b)比特的高位比特构成的第1整数1021和由b比特的低位比特构成的第2整数1022。s303的处理相当于图4的s103的处理。处理进入s304。

在s304中,第1编码部104通过字单位处理方式对(k×l)个第1整数1021进行编码,生成第1码1041。s304的处理相当于图4的s104的处理。处理进入s305。

在s305中,编码调整部103a判定是否设一次压缩的整数的个数n为(k×l)。编码调整部103a在k<k且s304的第1编码结果中的剩余比特大于c的情况下,判定为不应该设n=(k×l),返回s302。编码调整部103a在不是k<k或s304的第1编码结果中的剩余比特不大于c的情况下,判定为应该设n=(k×l),进入s306。剩余比特c容后再述。

在s306中,第1结果输出部105将由第1编码部104生成的第1码1041追记在已编码数据12中。s306的处理相当于图4的s105的处理。处理进入s307。

在s307中,第2编码部106将(k×l)个第2整数编码成(k×l×b)比特的固定长度二进制数据,生成第2码1061。s307的处理相当于图4的s106的处理。处理进入s308。

在s308中,第2结果输出部107将由第2编码部106生成的第2码1061追记在已编码数据12中。s308的处理相当于图4的s107的处理。处理进入s309。

在s309中,第2结果输出部107将参数k初始化为0,返回s301。

以上,结束针对数据压缩装置100a的数据压缩处理s100a的说明。

如上所述,数据压缩装置100a进行动作,由此,与实施方式1不同,编码调整部103a能够在既定的参数k以下的范围内选择最佳的k。k的值越小,则数据压缩处理的处理速度越快,但是,压缩率越低。但是,通过如图6所示使编码调整部103a进行动作,能够在确保压缩率高到一定程度的状态的同时选择最小的k。由此,压缩率和处理速度双方维持较高性能。

这里,关于在编码调整部103a的动作中发挥重要作用的剩余比特,以simple9为例进行说明。

例如,设作为编码对象的整数串为1(1)、5(101)、3(11)这3个整数。括弧内以二进制表示整数。此时,整数串中的最大整数是5,5的二进制位数是3。因此,当使用simple9时,通过选择本来能够装入9个3位的二进制整数的数据编码方法,压缩率最高。但是,在上述整数串的例子中,作为编码对象的整数只有3个,因此,虽然最大位数是3,但是,实际选择的编码方式成为装入3个9位的二进制整数这样的方式。这样,为了采用字单位处理方式,存在以字单位生成输出码这样的制约,有时附加本来不需要的冗余的比特。将这种冗余的比特称作剩余比特。在上述整数串的例子中,3位的数值为3个,因此,关于本来能够利用9比特表现的数据,实际上作为3个9位的数值而使用27比特来表现,因此,剩余比特成为18比特。

产生剩余比特的原因在于作为编码对象的整数不充分。为了减少剩余比特,增加一次编码的整数的个数即可。根据该思路,本实施方式中的编码调整部103能够被解释成,在剩余比特超过某个阈值(参数c)的情况下,增加一次编码的整数的个数,再次实施编码。

接着,使用图7对本实施方式的数据解压缩装置200a的数据解压缩方法、数据解压缩处理s200a进行说明。

数据解压缩装置200a在数据解压缩处理s200a开始时,将参数k初始化为k=0。

s401的处理与图5的s201的处理相同。即,在s401中,已编码数据取得部201判定是否已完成已编码数据12中包含的全部整数的解码处理。

已编码数据取得部201在判定为已完成已编码数据12中包含的全部整数的解码处理的情况下,结束处理。已编码数据取得部201在判定为未完成已编码数据12中包含的全部整数的解码处理的情况下,进入s402。

s402的处理与图5的s202的处理相同。即,在s402中,已编码数据取得部201判定下一个处理是第1整数的解码处理还是第2整数的解码处理。数据解压缩处理s200a中的初始状态是第1整数的解码处理。在下一个处理是第1整数的解码处理的情况下进入s403。在下一个处理是第2整数的解码处理的情况下进入s409。

这里,对s403的处理~ss408的处理的概要进行说明。第1解码部202从第1码1041依次取得作为单位比特数l的二进制数据的第1单位数据10411,对所取得的第1单位数据10411进行解码。第1解码部202在k<k的范围内对第1单位数据10411进行解码时,选择在解码时冗余的剩余比特的比特数为c以下且通过解码而得到的第1整数1021的个数等于单位比特数l与k之积的k或等于k的k。第1解码部202反复进行从第1码1041取得第1单位数据10411并对所取得的第1单位数据10411进行解码的处理,直到通过解码而得到的第1整数1021的个数等于单位比特数l与k之积为止。另外,在通过解码而得到的第1整数1021的个数等于单位比特数l与k之积之前成为k=k的情况下,第1解码部202选择k作为k。

s403的处理与图5的s203的处理相同。即,在s403中,已编码数据取得部201从已编码数据12读入1个字的新解码的数据。1个字是l比特。处理进入s404。

在s404中,第1解码部202a的第1解码处理部2021a将读入的1个字解码成多个第1整数。然后,第1解码处理部2021a将参数k的值更新成解码完成后的第1整数的个数除以l而得到的值。k的初始值为0。处理进入s405。

在s405中,第1解码处理部2021a判定解码完成后的第1整数的个数是否是l的倍数。

第1解码处理部2021a在解码完成后的第1整数的个数不是l的倍数的情况下,第1整数的解码还未完成,因此进入s408。

第1解码处理部2021a在解码完成后的第1整数的个数是l的倍数的情况下,第1整数的解码可能已完成,因此,进入下一个判定处理即s406。

在s406中,结束判定部203a在k<k且在s404中解码出的第1编码结果中的剩余比特大于c的情况下,判定为第1整数的解码还未完成,进入s408。结束判定部203a在k≧k或在s404中解码出的第1编码结果中的剩余比特为c以下的情况下,判定为第1整数的解码已完成,进入s407。

在s407中,结束判定部203a将接下来进行的处理设定成第2整数的解码处理。在s402的判定中使用该设定。并且,结束判定部203a将在s405的判定中利用的第1整数的已解码个数即解码已完成的第1整数的个数初始化为0个。处理返回s402。s407的处理相当于图5的s206的处理。

s409~s412的处理与s208~s211的处理相同。

在s413中,结束判定部203a将接下来进行的处理设定成第1整数的解码处理。在s402的判定中使用该设定。并且,结束判定部203a将参数k初始化为0。处理返回s401。

以上,结束针对数据解压缩装置200a的数据解压缩方法的说明。

***效果的说明***

如上所述,在本实施方式的数据压缩装置中,编码调整部选择字长l的倍数(k×l)作为一次编码的整数的个数的上限。并且,编码调整部在k<k的范围内对(k×l)个第1整数进行编码时,选择在编码时冗余的剩余比特成为c比特以下的最小的k。而且,编码调整部选择字长l的倍数(k×l)作为一次编码的整数的个数。第1编码部生成在编码调整部中决定的(k×l)个第1整数的编码结果,使其成为字长l的倍数。第2编码部将在编码调整部中决定的个数的第2整数包装成(k×b)个字(k×b×l比特)。

并且,在本实施方式的数据解压缩装置中,结束判定部在k<k的范围内对(k×l)个第1整数进行解码的时点,在编码时冗余的剩余比特成为c比特以下的情况下或k=k的情况下,判定为真。第2解码部将根据比特分割位置参数b和解码出的第1整数的个数k决定的(k×b)个字解码成(k×l)个第2整数。整数结合部得到(k×l)个整数值。

如上所述,数据压缩装置100a进行动作,由此,与实施方式1不同,编码调整部103a能够在既定的参数k以下的范围内选择最佳的k。一般情况下,k的值越小,则处理速度越快,但是,压缩率越低。但是,通过如在本实施方式中说明的那样使数据压缩装置100a进行动作,能够在确保压缩率高到一定程度的状态的同时选择最小的k,能够使压缩率和处理速度双方维持较高性能。

在上述实施方式中,数据取得部、整数分割部、编码调整部、第1编码部、第1结果输出部、第2编码部、第2结果输出部分别作为独立的功能块来构成数据压缩装置。并且,已编码数据取得部、第1解码处理部、结束判定部、第2解码部、整数结合部、输出部分别作为独立的功能块来构成数据解压缩装置。但是,数据压缩装置、数据解压缩装置不限于上述结构。数据压缩装置、数据解压缩装置的结构是任意的。也可以利用一个功能块实现数据取得部、整数分割部、编码调整部、第1编码部、第1结果输出部、第2编码部、第2结果输出部。也可以利用一个功能块实现已编码数据取得部、第1解码处理部、结束判定部、第2解码部、整数结合部、输出部。数据压缩装置、数据解压缩装置的功能块只要能够实现在上述实施方式中说明的功能,则是任意的。关于这些功能块,也可以通过其他某种组合或任意的块结构来构成数据压缩装置、数据解压缩装置。

并且,数据压缩装置、数据解压缩装置也可以分别不是一个装置,而是由多个装置构成的数据压缩系统、数据解压缩系统。并且,也可以是具有数据压缩装置和数据解压缩装置的一个装置或一个系统。

并且,对实施方式1、2进行了说明,但是,也可以组合实施这2个实施方式中的多个部分。或者,也可以部分地实施这2个实施方式中的一个实施方式。而且,也可以作为整体或部分地任意组合实施这2个实施方式。

另外,上述实施方式只是本质上优选的例示,并不意图限制本发明及其应用物和用途的范围,能够根据需要进行各种变更。

标号说明

11:编码数据;12:已编码数据;22:原数据;100、100a:数据压缩装置;101:数据取得部;102:整数分割部;103、103a:编码调整部;104:第1编码部;105:第1结果输出部;106:第2编码部;107:第2结果输出部;200、200a:数据解压缩装置;201:已编码数据取得部;202、202a:第1解码部;203、203a:结束判定部;204:第2解码部;205:整数结合部;206:输出部;901:处理器;902:辅助存储装置;903:存储器;904:通信装置;905:输入接口;906:显示器接口;907:输入装置;908:显示器;910:信号线;911、912:缆线;1021:第1整数;1022:第2整数;1031、1031a:决定部;1041:第1码;1061:第2码;1201:存储部;2021、2021a:第1解码处理部;9041:接收机;9042:发送机;10411:第1单位数据;10611:第2单位数据;s100、s100a:数据压缩处理;s1001:数据取得处理;s1002:整数分割处理;s1003:第1编码处理;s1004:第2编码处理;s200、s200a:数据解压缩处理;s2001:已编码数据取得处理;s2002:第1解码处理;s2003:第2解码处理;s2004:整数结合处理。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1