JP4373230B2 - Data file encoding method - Google Patents
Data file encoding method Download PDFInfo
- Publication number
- JP4373230B2 JP4373230B2 JP2004016890A JP2004016890A JP4373230B2 JP 4373230 B2 JP4373230 B2 JP 4373230B2 JP 2004016890 A JP2004016890 A JP 2004016890A JP 2004016890 A JP2004016890 A JP 2004016890A JP 4373230 B2 JP4373230 B2 JP 4373230B2
- Authority
- JP
- Japan
- Prior art keywords
- block
- sub
- encoding
- bytes
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Description
本発明は、映像・音響制作、映像・音響データの素材保管、ロケ素材の中継など映像・音響制作分野、特にNTSC以上の品質またはCD以上の品質の高精細映像・音響制作を行う分野、コンピュータグラフィックスを用いたCGアニメーション映像制作分野、科学技術シミュレーションにおける可視化映像制作分野、CD・DVD・半導体メモリ等のデジタル記録媒体を用いた映像・音響記録再生装置分野、電子カルテや遠隔医療における医用音響信号・静止画・動画像の保存と伝送、電子文書、印刷文書、デジタル印刷製版工程における素材やページメークアップ画像データの保管と伝送、リモートセンシング・衛星画像解析・地図情報処理分野におけるデータの保管と伝送など、データの改変が嫌われる分野、バイオインフォマティクス、ゲノム創薬、バイオ新素材開発など生物情報データベースの構築、検索を行う分野等、比較的情報量の多いデータファイルを扱う際に好適なデータの圧縮技術に関する。 The present invention relates to video / sound production fields such as video / sound production, storage of video / sound data material, location material relaying, particularly the field of high-definition video / sound production of quality higher than NTSC or CD, and computer CG animation video production field using graphics, visualization video production field in science and technology simulation, video / sound recording / playback device field using digital recording media such as CD / DVD / semiconductor memory, medical sound in electronic medical records and telemedicine Storage and transmission of signals, still images, and moving images, storage and transmission of materials and page make-up image data in electronic documents, print documents, digital printing plate making processes, storage of data in the fields of remote sensing, satellite image analysis, and map information processing Bioinformatics, where data modification is disliked Genomic drug discovery, building biological information database bio new materials developed, the field for performing a search, related compression techniques suitable data when dealing with relatively large amount of information data file.
従来より、デジタルデータの圧縮には様々な方式が用いられている。このようなデータファイルの圧縮には、ZIP、LHA等の圧縮機能も備えたアーカイバが、汎用的に用いられている。しかしながら、ZIP、LHA等の汎用符号化プログラムでは、テキストデータの圧縮は効率的に行うことができるが、オーディオデータ・静止画データ・動画データなど、いわゆるバイナリデータの圧縮を効率的に行うことができないため、バイナリデータの圧縮を効率的に行うさまざまな手法が開発されてきている(例えば、特許文献1〜特許文献3参照)。
しかしながら、上記特許文献1に記載の発明は、同一データブロックの重複を探索して圧縮するものであるため、自然界のサウンドや画像の圧縮には適しておらず、特許文献2に記載の発明は、ロッシー型圧縮にも適応したものであるため、ロスレス型圧縮について最適なものとなっておらず、特許文献3に記載の発明は、規則的に現れるバイトデータ群を辞書にワード登録するものであるが、対象データが16ビット単位や24ビット単位に配列されていると、規則的なワードが検出できない、等の問題がある。
However, since the invention described in
そこで、本発明は、圧縮対象とするファイルのファイル形式およびデータ形式をユーザが意識せずに圧縮することが可能であり、特に画像や音声を含むデータファイルを効率的に圧縮することが可能なデータファイルの符号化方法を提供することを課題とする。 Therefore, the present invention can compress the file format and data format of the file to be compressed without the user being aware of it, and in particular can efficiently compress data files including images and audio. It is an object of the present invention to provide a data file encoding method.
上記課題を解決するため、本発明では、与えられたデータファイルに対して、前記データファイルの総バイト数より小さい所定のバイト数のデータブロックである主ブロックを読み込む主ブロック入力段階と、前記主ブロック内のデータを、所定のバイト数k(1≦k≦K)だけ離れたバイト同士で相関演算を行い、バイト間の相関が最も高くなるときのバイト数kを、基本周期となるバイト数Kmとするバイト構成解析段階と、前記基本周期の第m(1≦m≦Km)番目のバイトだけで構成されるKm個の副ブロックに、前記主ブロックを分離するブロック分離段階と、前記分離された各副ブロックに対して、情報量を削減する符号化処理を行う副ブロック符号化段階と、前記符号化された複数の副ブロックを符号化ブロックとして出力ファイルに書き込む符号化ブロック出力段階を有し、前記主ブロック入力段階、前記バイト構成解析段階、前記ブロック分離段階、前記副ブロック符号化段階、前記符号化ブロック出力段階を繰り返し実行し、前記データファイルに対してロスレス符号化を行うようにしたことを特徴とする。
In order to solve the above problems, in the present invention, for a given data file, a main block input step of reading a main block which is a data block having a predetermined number of bytes smaller than the total number of bytes of the data file; Correlation calculation is performed on the data in the block by bytes separated by a predetermined number of bytes k (1 ≦ k ≦ K), and the number k of bytes when the correlation between bytes is the highest is the number of bytes serving as the basic period. A byte configuration analysis step for Km, a block separation step for separating the main block into Km sub-blocks composed of only the mth (1 ≦ m ≦ Km) bytes of the basic period, and the separation A sub-block encoding stage for performing an encoding process for reducing the amount of information for each of the sub-blocks, and outputting the plurality of encoded sub-blocks as encoded blocks. An encoded block output stage for writing to a file, and repeatedly executing the main block input stage, the byte structure analysis stage, the block separation stage, the sub-block encoding stage, and the encoded block output stage, and the data file It is characterized in that lossless coding is performed on the image.
本発明によれば、符号化対象とするデータのバイト構成を解析して、解析結果に基づいて複数の副ブロックに分割し、分割した各副ブロックについて、さらに符号化を行うようにしたので、符号化対象のデータの特徴に応じて相関の高い部分について効率的に圧縮を行うことが可能となり、結果として圧縮率を高めることが可能となる。 According to the present invention, the byte structure of the data to be encoded is analyzed, divided into a plurality of sub-blocks based on the analysis result, and further encoded for each divided sub-block. It is possible to efficiently compress the highly correlated portion according to the characteristics of the data to be encoded, and as a result, it is possible to increase the compression rate.
以下、本発明の実施形態について図面を参照して詳細に説明する。
(符号化方法)
本発明に係るデータファイルの符号化方法は、コンピュータに専用のアプリケーションプログラムを搭載し、このプログラムに従ってコンピュータが実行することになる。図1は、本発明に係るデータファイルの符号化方法の概要を示すフローチャートである。まず、対象とするデータファイルからデータを所定の単位で読み込む(ステップS1)。具体的には、100kB(バイト)〜1MB程度のデータブロック単位で読み込むことになる。したがって、ステップS2以降の処理は、実際には、このデータブロック単位で行われることになる。ステップS1で読み込んだデータブロックを、後述する分離後の副ブロックと区別するために主ブロックと呼ぶことにする。続いて、読み込んだ主ブロックのバイト構成を解析する(ステップS2)。具体的には、どの程度のバイト間隔で、相関の高い部分が繰り返しているかを確認する。これは、マルチメディア・データの記録は、1バイト単位に限らず数バイト単位で行われるものが多いため、数バイト単位で相関の高い部分が繰り返されている可能性が高いために行う。実際には、主ブロックがNバイトのときに、主ブロックのバイト値B(i)(i=1,…,N)を利用して、以下の数式〔数1〕により算出されたS(k)が最小となるときのkをKmとする。この結果、その主ブロックはKmバイト単位で繰り返すバイト構成をしているということが解析される。言いかえれば、Kmバイト単位の基本周期が繰り返されているということになる。
(Encoding method)
In the data file encoding method according to the present invention, a dedicated application program is installed in a computer, and the computer executes the program according to this program. FIG. 1 is a flowchart showing an outline of a data file encoding method according to the present invention. First, data is read from a target data file in a predetermined unit (step S1). Specifically, the data is read in units of data blocks of about 100 kB (bytes) to 1 MB. Therefore, the processing after step S2 is actually performed in units of this data block. The data block read in step S1 is referred to as a main block in order to distinguish it from a sub-block after separation described later. Subsequently, the byte structure of the read main block is analyzed (step S2). Specifically, it is confirmed at what byte interval the highly correlated part is repeated. This is done because multimedia data is recorded not only in units of one byte but in units of several bytes, and therefore, there is a high possibility that a highly correlated part is repeated in units of several bytes. Actually, when the main block is N bytes, S (k) calculated by the following equation [Equation 1] using the byte value B (i) (i = 1,..., N) of the main block. ) Is the minimum when k is Km. As a result, it is analyzed that the main block has a byte structure repeated in Km byte units. In other words, the basic period of Km bytes is repeated.
上記数式〔数1〕において、kは、基本周期のバイト数を探すための変数であり、設定された整数K(例えば6程度)を上限とする範囲内で、1よりKまで変化させる。すなわち、数式〔数1〕を利用してS(1)〜S(K)を算出し、これが最小値をとるkを上述のようにKmとする。 In the above equation [Equation 1], k is a variable for finding the number of bytes of the basic period, and is varied from 1 to K within a range having an upper limit of a set integer K (for example, about 6). That is, S (1) to S (K) are calculated using the formula [Equation 1], and k that takes the minimum value is set to Km as described above.
ステップS2において、主ブロックのバイト構成が解析できたら、次に、そのバイト構成に従って、主ブロックをKm個の副ブロックに分離する(ステップS3)。具体的には、第(Km×j+1)番目のバイトの集合、第(Km×j+2)番目のバイトの集合、…第(Km×j+Km)番目のバイトの集合に分離することになる。すなわち、主ブロックは、第1副ブロック〜第Km副ブロックのKm個の副ブロックに分離され、第m副ブロック(1≦m≦Km)は、元の主ブロックの第(Km×j+m)番目のバイトの集合となる。なお、jは0以上の整数、mは1以上の整数である。ここで、図2(a)に示すような配列の主ブロックを考えてみる。なお、図2(a)において、B1〜B8は先頭から1バイト目〜8バイト目のバイトを示している。このとき、Km=2であったとすると、図2(a)に示したブロックは、図2(b)に示す2つの副ブロックに分離される。すなわち、図2(a)に示す主ブロックの基本周期は2バイトと解析されるため、図2(b)に示すように、副ブロックは、基本周期の第1番目のバイトの集合と、基本周期の第2番目のバイトの集合の2つの副ブロックに分離されることになる。 If the byte configuration of the main block can be analyzed in step S2, then the main block is separated into Km sub-blocks according to the byte configuration (step S3). Specifically, it is separated into a set of (Km × j + 1) th bytes, a set of (Km × j + 2) th bytes,..., A set of (Km × j + Km) th bytes. That is, the main block is divided into Km subblocks of the first subblock to the Km subblock, and the mth subblock (1 ≦ m ≦ Km) is the (Km × j + m) th of the original main block. This is a set of bytes. J is an integer of 0 or more, and m is an integer of 1 or more. Here, consider the main block of the arrangement as shown in FIG. In FIG. 2A, B1 to B8 indicate the first to eighth bytes from the beginning. At this time, assuming that Km = 2, the block shown in FIG. 2A is separated into two sub-blocks shown in FIG. That is, since the basic period of the main block shown in FIG. 2A is analyzed as 2 bytes, as shown in FIG. 2B, the sub-block includes the first set of bytes of the basic period and the basic period. It will be separated into two sub-blocks of the second set of bytes of the period.
図2(b)に示したような、Km=2になる典型的なデータの例としては、量子化ビット数8ビットでサンプリングしたステレオ音響信号がある。この場合、同時刻のL(左)、R(右)の信号が交互に1バイト(8ビット)で記録されるため、1バイトおきに相関が高くなる。ここで、典型的な主ブロックのバイト配列とKmの値の関係について図3に示す。図3(a)は、音楽CD仕様のオーディオデータのバイト構成である。音楽CD仕様のオーディオデータは、量子化ビット数16ビットでサンプリングしたステレオ音響信号であるため、1チャンネルの1サンプルの記録に2バイト(16ビット)必要とする。そのため、図3(a)に示すように、L、L、R、Rという順で記録されていくことになる。このため、Km=4となる。図3(b)は、高精細オーディオデータのバイト構成である。高精細オーディオデータは、量子化ビット数24ビットでサンプリングしたステレオ音響信号であるため、1チャンネルの1サンプルの記録に3バイト(24ビット)必要とする。そのため、図3(b)に示すように、L、L、L、R、R、Rという順で記録されていくことになる。このため、Km=6となる。図3(c)は、RGBフルカラー画像データのバイト構成である。RGBフルカラー画像データは、R(赤)、G(緑)、B(青)の各色8ビットで記録するため、1画素の記録に3バイト(24ビット)必要とする。そのため、図3(c)に示すように、R、G、B、R、G、Bという順で記録されていくことになる。このため、Km=3となる。図3(d)は、CMYKフルカラー画像データのバイト構成である。CMYKフルカラー画像データは、C(シアン)、M(マゼンタ)、Y(イエロー)、K(ブラック)の各色8ビットで記録するため、1画素の記録に4バイト(32ビット)必要とする。そのため、図3(d)に示すように、C、M、Y、K、C、M、Y、Kという順で記録されていくことになる。このため、Km=4となる。 As an example of typical data in which Km = 2 as shown in FIG. 2B, there is a stereo sound signal sampled with a quantization bit number of 8 bits. In this case, since the L (left) and R (right) signals at the same time are alternately recorded in 1 byte (8 bits), the correlation increases every other byte. Here, FIG. 3 shows the relationship between the byte array of a typical main block and the value of Km. FIG. 3A shows a byte structure of audio data of the music CD specification. The audio data of the music CD specification is a stereo sound signal sampled with a quantization bit number of 16 bits, so 2 bytes (16 bits) are required for recording one sample of one channel. Therefore, as shown in FIG. 3A, recording is performed in the order of L, L, R, and R. Therefore, Km = 4. FIG. 3B shows a byte structure of high-definition audio data. Since the high-definition audio data is a stereo sound signal sampled with a quantization bit number of 24 bits, 3 bytes (24 bits) are required to record one sample of one channel. Therefore, as shown in FIG. 3B, recording is performed in the order of L, L, L, R, R, and R. Therefore, Km = 6. FIG. 3C shows a byte structure of RGB full-color image data. Since RGB full-color image data is recorded with 8 bits for each color of R (red), G (green), and B (blue), 3 bytes (24 bits) are required for recording one pixel. Therefore, as shown in FIG. 3C, recording is performed in the order of R, G, B, R, G, and B. Therefore, Km = 3. FIG. 3D shows the byte structure of CMYK full-color image data. Since CMYK full-color image data is recorded with 8 bits for each color of C (cyan), M (magenta), Y (yellow), and K (black), 4 bytes (32 bits) are required to record one pixel. Therefore, as shown in FIG. 3D, recording is performed in the order of C, M, Y, K, C, M, Y, and K. Therefore, Km = 4.
続いて、分離した副ブロック間において、対応するバイトごとの差分演算を行う(ステップS4)。これは、先頭から1バイト目同士、先頭から2バイト目同士、という具合に副ブロック内の全てのバイトに対して行っていく。差分演算の結果は、一方の副ブロックのバイトの値として格納される。他方の副ブロックの各バイトの値はそのままである。ここで、図4(a)に示すような配列の2つの副ブロックを考えてみる。これは、図2(b)に示した配列と全く同じである。このような2つの副ブロックに対して、ステップS4の処理を行うと、図4(b)に示すように、第1副ブロックの値はそのままであるが、第2副ブロックの値は、差分値に置き換えられる。図4の例では、副ブロックが2つの場合について示したが、3以上の副ブロックが存在する場合には、第m副ブロックのバイト値を第(m−1)副ブロックのバイト値との差分、第(m−2)副ブロックのバイト値との差分から第1副ブロックのバイト値との差分のいずれかに置き換える処理を行う。すなわち、前に位置する副ブロックのいずれかとの差分処理を行うことになる。なお、差分値が負の値となった場合には、256を加算して0〜255の範囲に納まるように補正した値を記録する。この際、前に位置する副ブロックの中で、どの副ブロックとの差分を採用するかは、後述するヒストグラムを算出する方法により判断し、差分をとる前に比べ分散値が増大したものを採用する。いずれの場合も増大しない場合は、本差分処理の結果を採用しない。 Subsequently, a difference calculation for each corresponding byte is performed between the separated sub-blocks (step S4). This is performed for all the bytes in the sub-block, such as the first bytes from the head, the second bytes from the head, and so on. The result of the difference operation is stored as the byte value of one sub-block. The value of each byte in the other sub-block remains unchanged. Here, consider two sub-blocks arranged as shown in FIG. This is exactly the same as the arrangement shown in FIG. When the process of step S4 is performed on such two sub-blocks, the value of the first sub-block remains the same as shown in FIG. Is replaced by a value. In the example of FIG. 4, the case where there are two sub-blocks is shown, but when there are three or more sub-blocks, the byte value of the m-th sub-block is changed to the byte value of the (m−1) -th sub-block. The difference and the difference from the byte value of the (m−2) th subblock are replaced with one of the difference from the byte value of the first subblock. That is, a difference process with any of the sub-blocks located in front is performed. When the difference value is a negative value, 256 is added and a value corrected to fall within the range of 0 to 255 is recorded. At this time, which sub-block to use for the sub-blocks in the previous position is determined by a method of calculating a histogram, which will be described later, and the one whose variance is increased compared to before the difference is taken. To do. If the value does not increase in any case, the result of this difference processing is not adopted.
次に、各副ブロック内において、ランレングス符号化処理を行う(ステップS5)。これは、通常のランレングス符号化と同様、同一値のバイトが連続する場合に、各バイトごとの値を、そのバイト値と、連続するバイト数に置き換えることにより行う。ここで、図5(a)に示すような配列の267バイトの副ブロックを考えてみる。ランレングス符号化処理を行う場合には、どの程度の長さ以上のものをランレングス化するかを変化させることができる。図5(b)〜図5(d)はそれぞれ、図5(a)に示した副ブロックのデータを、ランが1〜3以上の場合に符号化した例を示している。図5(b)はランが1以上、すなわち全ての値についてランレングス化する場合を示している。この場合、図5(a)に示した先頭から第1番目のバイトの値「1」は1つだけであるため、そのままデータ値部に記録され、ランレングス部には、連続する個数「1」から「1」を減じた「0」が記録される。ここで、「1」を減じるのは、データ記録の効率化のためであり、最小の長さ「1」を記録可能な最少値「0」に合わせるためである。同様にして、図5(a)に示した先頭から第2、3番目のバイトの値「2」は、その値がデータ値部に記録されると共に、ランレングス部には、連続する個数「2」から「1」を減じた「1」が記録される。また、図5(a)に示した先頭から第4〜6番目のバイトの値「3」は、その値がデータ値部に記録されると共に、ランレングス部には、連続する個数「3」から「1」を減じた「2」が記録される。また、図5(a)に示した先頭から第7〜10番目のバイトの値「4」は、その値がデータ値部に記録されると共に、ランレングス部には、連続する個数「4」から「1」を減じた「3」が記録される。図5(a)に示した先頭から第11〜267番目のバイトの値「0」は257個続くが、1バイトに記録できる数は256までであるので、2バイトにまたがって記録する必要が生じる。したがって、このような場合、データ値部には「0」が2バイト連続して記録される。一方、ランレングス部においても、257続くランを「256」と「1」に分離し、それぞれから「1」を減じた「255」と「0」が記録される。図5(b)の例では、データ値部6バイト、ランレングス部6バイトの計12バイトに圧縮されることになる。 Next, run-length encoding processing is performed in each sub-block (step S5). This is performed by replacing the value for each byte with the byte value and the number of consecutive bytes when the same value bytes are consecutive, as in normal run-length encoding. Now, consider a 267-byte sub-block having an array as shown in FIG. When the run-length encoding process is performed, it is possible to change the length of what is to be run-length. FIGS. 5B to 5D show examples in which the sub-block data shown in FIG. 5A is encoded when the runs are 1 to 3 or more. FIG. 5B shows a case where the run is 1 or more, that is, all the values are run length. In this case, since the value “1” of the first byte from the top shown in FIG. 5A is only one, it is recorded in the data value part as it is, and the run length part has a continuous number “1”. "0" is recorded by subtracting "1" from "." The reason why “1” is subtracted is to improve the efficiency of data recording, and to adjust the minimum length “1” to the recordable minimum value “0”. Similarly, the value “2” of the second and third bytes from the beginning shown in FIG. 5A is recorded in the data value portion, and the run length portion includes a continuous number “ “1” obtained by subtracting “1” from “2” is recorded. Further, the value “3” of the fourth to sixth bytes from the head shown in FIG. 5A is recorded in the data value portion, and the run length portion has a continuous number “3”. “2”, which is obtained by subtracting “1” from is recorded. Further, the value “4” of the seventh to tenth bytes from the beginning shown in FIG. 5A is recorded in the data value portion, and the run length portion has a continuous number “4”. “3”, which is obtained by subtracting “1” from is recorded. The value “0” of the 11th to 267th bytes from the beginning shown in FIG. 5A continues to be 257, but the number that can be recorded in 1 byte is 256, so it is necessary to record over 2 bytes. Arise. Therefore, in such a case, “0” is continuously recorded in the data value portion of 2 bytes. On the other hand, in the run length portion, the run following 257 is separated into “256” and “1”, and “255” and “0” obtained by subtracting “1” from each are recorded. In the example of FIG. 5B, the data value portion is compressed to 6 bytes and the run length portion is 6 bytes in total.
図5(c)はランが2以上の値についてランレングス化する場合を示している。この場合、図5(a)に示した先頭から第1番目のバイトの値「1」は1つだけであるため、そのままデータ値部に記録され、ランレングス部には、記録されない。図5(a)に示した先頭から第2、3番目のバイトの値「2」は、その値がデータ値部に2個記録されると共に、ランが2となるため、ランレングス部には、連続する個数「2」から「2」を減じた「0」が記録される。ここで、「2」を減じるのも、データ記録の効率化のためであり、最小の長さ「2」を記録可能な最少値「0」に合わせるためである。また、図5(a)に示した先頭から第4〜6番目のバイトの値「3」は、その値がデータ値部に2個記録されると共に、ランレングス部には、連続する個数「3」から「2」を減じた「1」が記録される。また、図5(a)に示した先頭から第7〜10番目のバイトの値「4」は、その値がデータ値部に2個記録されると共に、ランレングス部には、連続する個数「4」から「2」を減じた「2」が記録される。図5(a)に示した先頭から第11〜267番目のバイトの値「0」は257個続くが、図5(c)の例では、2以上の長さのみ記録するため、257個は1バイトで記録可能である。したがって、データ値部には「0」が2個記録され、ランレングス部には、連続する個数「257」から「2」を減じた「255」が記録される。図5(c)の例では、データ値部9バイト、ランレングス部4バイトの計13バイトに圧縮されることになる。 FIG. 5C shows a case where the run length is converted to values of 2 or more. In this case, since the value “1” of the first byte from the head shown in FIG. 5A is only one, it is recorded as it is in the data value portion and not recorded in the run length portion. The value “2” of the second and third bytes from the beginning shown in FIG. 5A is recorded in the data value part with two values and the run is 2, so the run length part has “0” obtained by subtracting “2” from the continuous number “2” is recorded. Here, the reason for subtracting “2” is to improve the efficiency of data recording, and to adjust the minimum length “2” to the recordable minimum value “0”. Further, the value “3” of the fourth to sixth bytes from the head shown in FIG. 5A is recorded in the data value portion with two values, and in the run length portion, the continuous number “ “1” obtained by subtracting “2” from “3” is recorded. In addition, the value “4” of the seventh to tenth bytes from the top shown in FIG. 5A is recorded in the data value portion with two values, and the run length portion has a continuous number “ “2” obtained by subtracting “2” from “4” is recorded. The value “0” of the 11th to 267th bytes from the beginning shown in FIG. 5A continues to be 257. However, in the example of FIG. 5C, only the length of 2 or more is recorded. Recording is possible with 1 byte. Accordingly, two “0” s are recorded in the data value part, and “255” obtained by subtracting “2” from the continuous number “257” is recorded in the run length part. In the example of FIG. 5C, the data value portion is 9 bytes and the run length portion is 4 bytes.
図5(d)はランが3以上の値についてランレングス化する場合を示している。この場合、図5(a)に示した先頭から第1番目のバイトの値「1」は1つだけであるため、そのままデータ値部に記録され、ランレングス部には記録されない。図5(a)に示した先頭から第2、3番目のバイトの値「2」も、そのままデータ値部に2個記録され、ランレングス部には記録されない。また、図5(a)に示した先頭から第4〜6番目のバイトの値「3」は、その値がデータ値部に3個記録されると共に、ランレングス部には、連続する個数「3」から「3」を減じた「0」が記録される。ここで、「3」を減じるのも、データ記録の効率化のためであり、最小の長さ「3」を記録可能な最少値「0」に合わせるためである。また、図5(a)に示した先頭から第7〜10番目のバイトの値「4」は、その値がデータ値部に3個記録されると共に、ランレングス部には、連続する個数「4」から「3」を減じた「1」が記録される。図5(a)に示した先頭から第11〜267番目のバイトの値「0」は257個続くが、図5(d)の例では、3以上の長さのみ記録するため、257個は1バイトで記録可能である。したがって、データ値部には「0」が3個記録され、ランレングス部には、連続する個数「257」から「3」を減じた「254」が記録される。図5(d)の例では、データ値部12バイト、ランレングス部3バイトの計15バイトに圧縮されることになる。 FIG. 5D shows a case where the run length is converted to a value of 3 or more. In this case, since the value “1” of the first byte from the head shown in FIG. 5A is only one, it is recorded as it is in the data value portion and not in the run length portion. The value “2” of the second and third bytes from the top shown in FIG. 5A is also recorded in the data value portion as it is, and is not recorded in the run length portion. Further, the value “3” of the fourth to sixth bytes from the head shown in FIG. 5A is recorded in the data value portion with three values, and in the run length portion, the continuous number “ “0” obtained by subtracting “3” from “3” is recorded. Here, the reason why “3” is subtracted is to improve the efficiency of data recording, and to adjust the minimum length “3” to the recordable minimum value “0”. Further, the value “4” of the seventh to tenth bytes from the beginning shown in FIG. 5A is recorded in the data value portion with three values, and the run length portion has a continuous number “ “1” obtained by subtracting “3” from “4” is recorded. The value “0” of the 11th to 267th bytes from the beginning shown in FIG. 5A continues to be 257. However, in the example of FIG. 5D, only the length of 3 or more is recorded. Recording is possible with 1 byte. Accordingly, three “0” s are recorded in the data value portion, and “254” obtained by subtracting “3” from the consecutive number “257” is recorded in the run length portion. In the example of FIG. 5D, the data value portion is compressed to 12 bytes and the run length portion is 3 bytes in total.
上記3つのモード(ランがどれだけ以上続いた場合にランレングス化するか)のいずれを適用するかについては、あらかじめ1つを設定しておいても良いし、3つのモードそれぞれを行って、その結果最も圧縮率が高くなるものを選ぶようにしてもよい。例えば、上記の例では、図5(b)に示したようにランが1以上のモードの場合にランレングス化する場合が最もデータ量が少なくなるため、ランが1以上の場合にランレングス化した結果が採用される。いずれのモードを適用すると最も効率的であるかは、圧縮対象とされるデータにより異なる。いずれのモードを選択した場合であっても、復号のために、どのモードにより符号化しておくかを記録する。どのモードで符号化したかは、後述する処理パラメータに記憶しておく。 As for which of the above three modes (how long run will be converted to run length), one may be set in advance, and each of the three modes is performed, As a result, the one with the highest compression rate may be selected. For example, in the above example, as shown in FIG. 5B, when the run is in the mode of 1 or more, the data length is the smallest in the case of run length, so the run length is changed when the run is 1 or more. The result is adopted. Which mode is most effective depends on the data to be compressed. Regardless of which mode is selected, which mode is used for decoding is recorded for decoding. Which mode is used for encoding is stored in a processing parameter described later.
次に、図6(a)に示すような配列の267バイトの副ブロックを考えてみる。図6(b)〜図6(d)はそれぞれ、図6(a)に示した副ブロックのデータを、ランが1〜3以上の場合に符号化した例を示している。図6(b)はランが1以上、すなわち全ての値についてランレングス化する場合を示している。この場合、図6(a)に示した先頭から順に1バイトずつ値が変化しているため、各値はそのままデータ値部に順に記録され、ランレングス部には、連続する個数「1」から「1」を減じた「0」が順に記録される。図6(a)に示した先頭から第9、10番目のバイトの値「1」は、その値がデータ値部に記録されると共に、ランレングス部には、連続する個数「2」から「1」を減じた「1」が記録される。図6(a)に示した先頭から第11〜267番目のバイトの値「0」は257個続くため、図5(b)に示した場合と同様に、データ値部には「0」が2バイト連続して記録され、ランレングス部においては、「255」と「0」が記録される。図6(b)の例では、データ値部11バイト、ランレングス部11バイトの計22バイトに圧縮されることになる。 Next, consider a 267-byte sub-block having an array as shown in FIG. FIGS. 6B to 6D show examples in which the sub-block data shown in FIG. 6A is encoded when the runs are 1 to 3 or more. FIG. 6B shows a case where the run is 1 or more, that is, all the values are run length. In this case, since the value changes one byte at a time from the beginning shown in FIG. 6A, each value is recorded in the data value part as it is, and the run length part starts from the consecutive number “1”. “0” obtained by subtracting “1” is recorded in order. The value “1” of the ninth and tenth bytes from the beginning shown in FIG. 6A is recorded in the data value portion, and the run length portion includes “2” to “ “1” subtracted from “1” is recorded. Since the value “0” of the 11th to 267th bytes from the beginning shown in FIG. 6A continues to 257, as in the case shown in FIG. 5B, “0” is stored in the data value portion. Two bytes are recorded continuously, and “255” and “0” are recorded in the run length portion. In the example of FIG. 6B, the data value part is 11 bytes and the run length part is 11 bytes, and the total is compressed to 22 bytes.
図6(c)はランが2以上の値についてランレングス化する場合を示している。この場合、図6(a)に示した先頭から第8番目のバイトまでは、全てランが1であるため、各値がそのまま順にデータ値部に記録され、ランレングス部には記録されない。図6(a)に示した先頭から第9、10番目のバイトの値「1」は、その値がデータ値部に2個記録されると共に、ランが2となるため、ランレングス部には、連続する個数「2」から「2」を減じた「0」が記録される。また、図6(a)に示した先頭から第11〜267番目のバイトの値「0」は257個続くため、図5(c)の場合と同様に、データ値部には「0」が2個記録され、ランレングス部には、連続する個数「257」から「2」を減じた「255」が記録される。図6(c)の例では、データ値部12バイト、ランレングス部2バイトの計14バイトに圧縮されることになる。 FIG. 6C shows a case where the run length is converted to values of 2 or more. In this case, since the run is all 1 from the beginning to the eighth byte shown in FIG. 6A, each value is recorded in the data value part as it is, and is not recorded in the run length part. The value “1” of the ninth and tenth bytes from the beginning shown in FIG. 6A is recorded in the data value part with two values and the run is 2, so the run length part has “0” obtained by subtracting “2” from the continuous number “2” is recorded. Further, since the value “0” of the 11th to 267th bytes from the top shown in FIG. 6A continues to 257, as in the case of FIG. 5C, “0” is stored in the data value portion. Two are recorded, and “255” obtained by subtracting “2” from the continuous number “257” is recorded in the run length portion. In the example of FIG. 6C, the data value part is compressed to 14 bytes, and the run length part is 2 bytes in total.
図6(d)はランが3以上の値についてランレングス化する場合を示している。この場合、図6(a)に示した先頭から第8番目のバイトまでは全てランが1であるため、各値がそのまま順にデータ値部に記録され、ランレングス部には記録されない。図6(a)に示した先頭から第9、10番目のバイトの値「1」も、そのままデータ値部に2個記録され、ランレングス部には記録されない。図6(a)に示した先頭から第11〜267番目のバイトの値「0」は257個続くため、図5(d)に示した場合と同様に、データ値部には「0」が3個記録され、ランレングス部には、連続する個数「257」から「3」を減じた「254」が記録される。図6(d)の例では、データ値部13バイト、ランレングス部1バイトの計14バイトに圧縮されることになる。図6(a)に示したデータに対しては、図6(c)、図6(d)に示したようにランが2以上の場合にランレングス化する場合、もしくはランが3以上の場合にランレングス化する場合が最もデータ量が少なくなるため、このどちらかの結果が採用される。 FIG. 6D shows a case where the run length is converted to a value of 3 or more. In this case, since the run is all 1 from the first byte to the eighth byte shown in FIG. 6A, each value is recorded in the data value part as it is, and is not recorded in the run length part. The value “1” of the ninth and tenth bytes from the beginning shown in FIG. 6A is also recorded in the data value portion as it is, and is not recorded in the run length portion. Since the value “0” of the 11th to 267th bytes from the beginning shown in FIG. 6A continues to 257, as in the case shown in FIG. 5D, “0” is stored in the data value portion. Three are recorded, and “254” obtained by subtracting “3” from the continuous number “257” is recorded in the run length portion. In the example of FIG. 6D, the data value portion is compressed to 13 bytes and the run length portion is 1 byte, for a total of 14 bytes. For the data shown in FIG. 6 (a), when the run length is changed when the run is 2 or more as shown in FIGS. 6 (c) and 6 (d), or when the run is 3 or more. Since the amount of data is the smallest when run length is changed, the result of either of these is adopted.
次に、各副ブロック内において連続するバイトの差分演算処理を行う(ステップS6)。具体的には、連続する2つのバイトの差分を演算し、後方のバイト値を更新する前の直前のバイト値との差分値で置き換える処理を副ブロック内の全てのバイトに対して行い、第1バイト目を除く全てのバイトが更新される。 Next, a difference calculation process for consecutive bytes in each sub-block is performed (step S6). Specifically, the process of calculating the difference between two consecutive bytes and replacing the backward byte value with the previous byte value before updating is performed for all the bytes in the sub-block, All bytes except the first byte are updated.
さらに、上記ステップS6による処理後の各副ブロック内において連続するバイトの差分演算処理を行う(ステップS7)。すなわち、ステップS6で行った処理をもう1度繰り返すことになる。この結果、各バイトには、2バイト離れたバイトの値に影響された値が記録されることになる。これは、過去2サンプルを基に算出された線形予測誤差に類似の効果を得るために行われる。ステップS6、ステップS7における処理は、単なる差分演算であるので、線形予測誤差を算出するのに比べて精度は落ちるが演算負荷を削減することができる。なお、ステップS6、ステップS7における差分値が負の値となった場合には、256を加算して0〜255の範囲に納まるように補正した値を記録する。 Furthermore, a difference calculation process for consecutive bytes in each sub-block after the process in step S6 is performed (step S7). That is, the process performed in step S6 is repeated once more. As a result, in each byte, a value affected by the value of a byte separated by 2 bytes is recorded. This is performed to obtain an effect similar to the linear prediction error calculated based on the past two samples. Since the processing in step S6 and step S7 is a simple difference calculation, the calculation load can be reduced although the accuracy is lower than that of calculating the linear prediction error. In addition, when the difference value in step S6 and step S7 becomes a negative value, 256 is added and the value corrected so as to be within the range of 0 to 255 is recorded.
以上のような処理の結果得られた各副ブロック(データ値ブロックおよびランレングスブロック)に対して、可変長符号化処理を行う(ステップS8)。この可変長符号化処理としては、ZIP、LHA(Lampel Ziv+Huffman方式)、PPM(Predicted by Partial Match)、Golomb-Rice等のある情報を記録するために必要な平均ビット数を削減する公知の種々の符号化方式が適用可能である。 Variable length coding processing is performed on each sub-block (data value block and run length block) obtained as a result of the above processing (step S8). As this variable length encoding process, various known techniques for reducing the average number of bits required for recording certain information such as ZIP, LHA (Lampel Ziv + Huffman method), PPM (Predicted by Partial Match), Golomb-Rice, etc. An encoding method is applicable.
可変長符号化が行われたら、その結果得られる副ブロックをまとめて符号化ブロックとして、出力ファイルに書き込んでいく(ステップS9)。上記ステップS1〜ステップS9の処理を各主ブロック単位で処理することにより、元のデータファイルがロスレス圧縮された符号化ファイルが得られることになる。この符号化ファイルは、符号化ブロック単位で記録されている。 When variable length coding is performed, the sub-blocks obtained as a result are collectively written into the output file as a coded block (step S9). By performing the processes in steps S1 to S9 in units of main blocks, an encoded file in which the original data file is losslessly compressed can be obtained. This encoded file is recorded in units of encoded blocks.
上記、ステップS3〜ステップS8の各処理については、全てを実行するようにしても良いが、その処理を行うことによって、反ってデータ量が増えてしまう場合には、その処理を省略するようにすることが望ましい。そこで、本発明では、各ステップにおける処理前と処理後のデータに基づいて所定の判断を行い、各ステップの結果を活かすかどうかの決定を行っている。基本的には、処理前のデータ量と処理後のデータ量を比較して、データ量の小さい方を採用するようにすれば良いが、ステップS4、ステップS6、ステップS7の処理については、各処理を行うことにより、各段階ではデータ量は変化せず、後段のステップS8の可変長符号化の段階で圧縮率に効果(または逆効果)が生じる。そこで、各段階ごとにステップ8を実行して逐次データ量の変化を調べる方法も考えられるが、処理負荷を軽減するため、以下分散を利用して推定判断する方法を提案する。与えられた副ブロックのデータのヒストグラムを算出して、分布がバイト値0またはバイト値255の両末端に偏ると、即ち平均値128に対する分散値が大きいと、ステップ8による可変長符号化により圧縮率が高くなることが判っている。具体的には、差分を計算して、データが0近辺の値になると、負値は255近辺の値に補正するようにしているため、0または255の両末端のデータが多くなり、圧縮率が増大する。分散を利用した判断の具体的な例について、図7のフローチャートを用いて説明する。
All of the processes in steps S3 to S8 may be executed. However, if the data amount is increased by performing the process, the process is omitted. It is desirable to do. Therefore, in the present invention, a predetermined determination is made based on the data before and after the processing in each step, and it is determined whether or not the result of each step is utilized. Basically, the data amount before processing and the data amount after processing may be compared and the smaller data amount may be adopted. However, the processing in step S4, step S6, and step S7 is each By performing the processing, the data amount does not change at each stage, and an effect (or an adverse effect) is produced on the compression rate at the variable length coding stage in the subsequent step S8. Therefore, a method of examining the change in the data amount sequentially by executing step 8 at each stage is also conceivable, but in order to reduce the processing load, a method of estimating and judging using variance is proposed below. The histogram of the data of the given sub-block is calculated, and if the distribution is biased toward both ends of the
まず、副ブロックのバイト値のヒストグラムを算出し、平均値に対する分散を算出する(ステップS11)。一方、差分処理後の副ブロックのバイト値のヒストグラムを算出し、平均値に対する分散を算出する(ステップS12)。続いて、2つの分散を比較する(ステップS13)。この結果、分散が大きい方のデータを採用する。すなわち、差分処理前の副ブロックに基づく分散が大きい場合は、差分処理前の副ブロックのデータを以降利用することとし(ステップS14)、差分処理後の副ブロックに基づく分散が大きい場合は、差分処理後の副ブロックのデータを以降利用することとする(ステップS15)。したがって、差分処理前の副ブロックに基づく分散が大きい場合は、差分処理を行わなかったのと同じこととなる。 First, a histogram of sub-block byte values is calculated, and a variance with respect to the average value is calculated (step S11). On the other hand, a histogram of the byte values of the sub-blocks after the difference processing is calculated, and the variance with respect to the average value is calculated (step S12). Subsequently, the two variances are compared (step S13). As a result, data having a larger variance is adopted. That is, when the variance based on the sub-block before the difference processing is large, the data of the sub-block before the difference processing is used thereafter (step S14), and when the variance based on the sub-block after the difference processing is large, the difference The processed sub-block data will be used thereafter (step S15). Therefore, when the variance based on the sub-block before the difference process is large, it is the same as not performing the difference process.
なお、上記ステップS11においては、バイト値Bm(j)(j=1,2,…N/Km:Nはブロックのバイト数)に対して分散σm0が算出される。また、ステップS12においては、バイト差分値Dm(j)(j=1,2,…N/Km:Nはブロックのバイト数)に対して分散σmdが算出される。なお、kはブロック番号である。Dm(j)は、副ブロック間における差分の場合と、各副ブロック内における差分の場合とで異なる。副ブロック間における差分の場合、Dm(j)=Bm(j)−Bm(j−1)であり、各副ブロック内における差分の場合、Dm(j)=Bm(j)−Bm-1(j)である。なお、Dm(j)<0の場合は、Dm(j)に256を加えて正の値となるようにする。 In step S11, the variance σ m0 is calculated for the byte value B m (j) (j = 1, 2,... N / Km: N is the number of bytes in the block). In step S12, the variance σ md is calculated for the byte difference value D m (j) (j = 1, 2,... N / Km: N is the number of bytes of the block). Note that k is a block number. D m (j) differs depending on the difference between subblocks and the difference within each subblock. In the case of a difference between sub-blocks, D m (j) = B m (j) −B m (j−1). In the case of a difference in each sub-block, D m (j) = B m (j) −B m−1 (j). When D m (j) <0, 256 is added to D m (j) to obtain a positive value.
各ステップの処理を行ったか否かの情報は、処理パラメータに記録されていく。各ステップの処理を行ったか否かの情報は、例えば行った場合は「1」、行わなかった場合は「0」とすることで各ステップについて1ビットで記録可能であるので、処理パラメータ自体は数ビット程度で済むことになる。各ステップの処理を行うか否かは、各主ブロックのデータにより異なるので、処理パラメータは各主ブロックごとに記録されることになる。 Information on whether or not each step has been processed is recorded in the processing parameters. The information on whether or not each step has been processed is, for example, “1” if it has been performed, and “0” if it has not been performed. Only a few bits are required. Whether or not to perform the processing of each step differs depending on the data of each main block, so that the processing parameter is recorded for each main block.
(復号処理)
次に、上記符号化方法により符号化した符号化ファイルからソースファイルを復元する復号方法について説明する。この復号方法も、符号化方法と同様に、コンピュータに専用のアプリケーションプログラムを搭載し、このプログラムに従ってコンピュータが実行することになる。図8は、データファイルの復号方法の概要を示すフローチャートである。まず、符号化ファイルからソースファイルの1ブロックに対応した符号化ブロックを読み込む(ステップS21)。符号化ブロックの長さは、ブロックごとに異なるが、先頭にブロック長が記録されているため、復号するコンピュータは、符号化ブロックを認識して処理することができる。したがって、ステップS22以降の処理は、実際には、この符号化ブロック単位で行われることになる。この符号化ブロックには、上述のように、符号化主ブロックと処理パラメータが記録されている。続いて、符号化主ブロックを構成する各符号化副ブロックの可変長から固定長への復号処理を行う(ステップS22)。具体的には、各符号化副ブロック(データ値ブロックおよびランレングスブロック)に対して、ステップS8で行った方式の可変長符号化処理に対応した復号処理を行う。
(Decryption process)
Next, a decoding method for restoring a source file from an encoded file encoded by the above encoding method will be described. In this decoding method, similarly to the encoding method, a dedicated application program is mounted on the computer, and the computer executes the program according to this program. FIG. 8 is a flowchart showing an outline of a data file decoding method. First, an encoded block corresponding to one block of the source file is read from the encoded file (step S21). The length of the encoded block varies from block to block, but since the block length is recorded at the beginning, the decoding computer can recognize and process the encoded block. Accordingly, the processing after step S22 is actually performed in units of this coding block. In this encoded block, as described above, the encoded main block and the processing parameters are recorded. Subsequently, a decoding process from a variable length to a fixed length of each encoding sub-block constituting the encoding main block is performed (step S22). Specifically, a decoding process corresponding to the variable-length encoding process of the scheme performed in step S8 is performed on each encoded sub-block (data value block and run-length block).
続いて、各副ブロック内において連続するバイトの差分復元処理を行う(ステップS23)。具体的には、連続する2つのバイトに対して、上記ステップS7で行ったのと逆の処理を行う。 Subsequently, a differential restoring process for consecutive bytes in each sub-block is performed (step S23). Specifically, the opposite process to that performed in step S7 is performed on two consecutive bytes.
次に、各副ブロック内において連続するバイトの差分復元処理を行う(ステップS24)。具体的には、上記ステップS23と同様、連続する2つのバイトに対して、上記ステップS6で行ったのと逆の処理を行う。 Next, differential restoration processing for consecutive bytes in each sub-block is performed (step S24). Specifically, as in step S23, the reverse process of step S6 is performed on two consecutive bytes.
次に、各副ブロック内においてランレングス復号処理を行う(ステップS25)。具体的には、上記ステップS5で行ったのと逆の処理を行う。すなわち、符号化時の規則に基づいて、データ値部のバイト値とランレングス部のバイト値から、元の形式の副ブロックを復元する。 Next, run length decoding processing is performed in each sub-block (step S25). Specifically, the reverse process to that performed in step S5 is performed. That is, based on the encoding rules, the original sub-block is restored from the byte value of the data value portion and the byte value of the run length portion.
次に、各副ブロック間の差分復元処理を行う(ステップS26)。具体的には、上記ステップS4で行ったのと逆の処理を行う。すなわち、各副の先頭から1バイト目同士、先頭から2バイト目同士、という具合に副ブロック内の全てのバイトに対してバイト同士の値の加算を行い、加算した結果は、差分値が記録されていた副ブロックのバイトの値として格納される。他方の副ブロックの各バイトの値はそのままである。この結果、図4(b)に示したような配列の2つの副ブロックの値が、図4(a)に示すような配列の2つの副ブロックに復元される。 Next, difference restoration processing between the sub-blocks is performed (step S26). Specifically, the reverse process to that performed in step S4 is performed. That is, the byte values are added to all bytes in the sub block, such as the first byte from the beginning of each sub, the second byte from the top, etc., and the difference value is recorded as the result of the addition. It is stored as the byte value of the sub-block that has been set. The value of each byte in the other sub-block remains unchanged. As a result, the values of the two sub blocks in the array as shown in FIG. 4B are restored to the two sub blocks in the array as shown in FIG.
次に、各副ブロックを統合して主ブロックを復元する(ステップS27)。具体的には、上記ステップS3で行ったのと逆の処理を行う。すなわち、各副ブロックの先頭から順にバイトデータを並べて一つの主ブロックとする処理を行うことになる。この結果、例えばKm=2の場合、図2(b)に示したような2つの副ブロックが、図2(a)に示すような配列の主ブロックに統合されることになる。 Next, the main block is restored by integrating the sub-blocks (step S27). Specifically, the reverse process is performed as in step S3. That is, the processing is performed by arranging byte data in order from the top of each sub-block to form one main block. As a result, for example, when Km = 2, the two sub-blocks as shown in FIG. 2B are integrated into the main block of the arrangement as shown in FIG.
主ブロックが復元されたら、その主ブロックを出力ファイルに書き込んでいく(ステップS28)。上記ステップS21〜ステップS28の処理を各符号化ブロック単位で処理することにより、圧縮符号化前の元のデータファイルが復元されることになる。 When the main block is restored, the main block is written into the output file (step S28). By performing the processing of steps S21 to S28 in units of each encoding block, the original data file before compression encoding is restored.
上記、ステップS22〜ステップS27の各処理については、符号化時にステップS3〜ステップS8の処理を行った場合にのみ実行される。そのため、図6のフローチャートに示した判断に基づいて、各処理を行った場合には、その際に記録された処理パラメータに従って、復号処理を行うことになる。この場合、上記ステップS21において処理パラメータを読み込み、その処理パラメータに処理を行った旨の情報が記録されているステップについてのみ復号処理を行うようにする。 The processes in steps S22 to S27 are executed only when the processes in steps S3 to S8 are performed at the time of encoding. Therefore, when each process is performed based on the determination shown in the flowchart of FIG. 6, the decoding process is performed according to the process parameter recorded at that time. In this case, the processing parameter is read in step S21, and the decoding process is performed only for the step in which information indicating that the processing parameter is processed is recorded.
以上、本発明の好ましい実施形態について説明したが、本発明は上記実施形態に限定されず、種々の変形が可能である。例えば、上記実施形態では、主ブロックを複数の副ブロックに分離した後、各副ブロックに対してステップS4〜ステップS8の各処理を行っているが、これらの処理は、必ずしも全て行う必要はなく、少なくとも1つ以上を実行するようにすれば良い。 As mentioned above, although preferable embodiment of this invention was described, this invention is not limited to the said embodiment, A various deformation | transformation is possible. For example, in the above-described embodiment, after the main block is separated into a plurality of sub-blocks, each process of step S4 to step S8 is performed on each sub-block. However, it is not always necessary to perform all of these processes. At least one or more may be executed.
Claims (13)
前記主ブロック内のデータを、所定のバイト数k(1≦k≦K)だけ離れたバイト同士で相関演算を行い、バイト間の相関が最も高くなるときのバイト数kを、基本周期となるバイト数Kmとするバイト構成解析段階と、
前記基本周期の第m(1≦m≦Km)番目のバイトだけで構成されるKm個の副ブロックに、前記主ブロックを分離するブロック分離段階と、
前記分離された各副ブロックに対して、情報量を削減する符号化処理を行う副ブロック符号化段階と、
前記符号化された複数の副ブロックを符号化ブロックとして出力ファイルに書き込む符号化ブロック出力段階と、を有し、
前記主ブロック入力段階、前記バイト構成解析段階、前記ブロック分離段階、前記副ブロック符号化段階、前記符号化ブロック出力段階を繰り返し実行し、前記データファイルに対してロスレス符号化を行うことを特徴とするデータファイルの符号化方法。 For a given data file, a main block input stage for reading a main block which is a data block having a predetermined number of bytes smaller than the total number of bytes of the data file;
The data in the main block is subjected to correlation calculation between bytes separated by a predetermined number of bytes k (1 ≦ k ≦ K), and the number of bytes k when the correlation between bytes becomes the highest is the basic period. A byte structure analysis stage in which the number of bytes is Km;
A block separation step of separating the main block into Km sub-blocks composed only of the mth (1 ≦ m ≦ Km) bytes of the basic period;
A sub-block encoding step for performing an encoding process for reducing the amount of information for each separated sub-block;
An encoded block output stage that writes the plurality of encoded sub-blocks into an output file as encoded blocks; and
The main block input step, the byte structure analysis step, the block separation step, the sub-block encoding step, and the encoded block output step are repeatedly executed to perform lossless encoding on the data file. Data file encoding method.
前記副ブロック符号化段階が、前記各副ブロックに対してランレングス符号化を行い、各副ブロックをデータ値部とランレングス部の2つの要素ブロックに分離するランレングス符号化段階を有し、前記符号化ブロック出力段階については2つの要素ブロックをまとめて副ブロックとして扱うものとしていることを特徴とするデータファイルの符号化方法。 In claim 1,
The sub-block encoding step includes a run-length encoding step of performing run-length encoding on each sub-block and separating each sub-block into two element blocks of a data value part and a run-length part; In the encoding block output step , two element blocks are collectively handled as sub-blocks, and the data file encoding method is characterized in that:
前記ランレングス符号化段階において生成される2つの要素ブロックの総バイト数が、当該ランレングス符号化段階による処理前の対応する副ブロックのバイト数に比べて減少しない場合、前記符号化ブロック出力段階については前記ランレングス符号化段階による処理前の副ブロックに対して行うものとしていることを特徴とするデータファイルの符号化方法。 In claim 2,
If the total number of bytes of the two element blocks generated in the run-length encoding stage does not decrease compared to the number of bytes of the corresponding sub-block before processing by the run-length encoding stage, the encoded block output stage Is performed on a sub-block before processing in the run-length encoding step.
前記ランレングス符号化段階が、ランレングス符号化を実行するため最小のランの長さ別の符号化モードを設定し、各符号化モードによりランレングス符号化された前記2つの要素ブロックのうち、その総バイト数が最小となる2つの要素ブロックを、前記符号化ブロック出力段階について副ブロックとして扱うものとすることを特徴とするデータファイルの符号化方法。 In claim 2,
The run-length encoding step sets an encoding mode according to a minimum run length to perform run-length encoding, and among the two element blocks subjected to run-length encoding according to each encoding mode, A data file encoding method, wherein two element blocks having the minimum total number of bytes are handled as sub-blocks in the encoding block output stage .
前記副ブロック符号化段階が、第m番目のバイト(m>1)で構成される各副ブロックの各バイトデータに対して、第(m−1)番目のバイト以下で構成される副ブロックのいずれかに対応する各バイトデータとの差分値に置換するブロック間差分段階を有していることを特徴とするデータファイルの符号化方法。 In claim 1,
In the sub-block encoding step, for each byte data of each sub-block composed of the m-th byte (m> 1), sub-blocks composed of the (m−1) -th byte or less An encoding method for a data file, comprising: an inter-block difference stage for replacing with a difference value with each byte data corresponding to any one of them.
前記副ブロック符号化段階が、各副ブロックの各バイトデータを、その直前に位置するバイトデータとの差分値に置換するブロック内差分段階を有していることを特徴とするデータファイルの符号化方法。 In claim 1,
Data file encoding characterized in that the sub-block encoding step includes an intra-block difference step in which each byte data of each sub-block is replaced with a difference value from the byte data located immediately before it. Method.
前記ブロック内差分段階を所定の回数だけ繰り返す処理を行うことを特徴とするデータファイルの符号化方法。 In claim 6,
A method for encoding a data file, comprising performing a process of repeating the intra-block difference stage a predetermined number of times.
前記ブロック間差分段階または前記ブロック内差分段階において得られる差分値が負値である場合、256を加えて0〜255の範囲に納める補正処理を行うことを特徴とするデータファイルの符号化方法。 In claim 5 or claim 6,
An encoding method for a data file, comprising: performing a correction process of adding 256 to a range of 0 to 255 when a difference value obtained in the inter-block difference stage or the intra-block difference stage is a negative value.
前記ブロック間差分段階または前記ブロック内差分段階による処理前後の副ブロックのバイトデータに対して、値の出現頻度を示すヒストグラムを算出し、ヒストグラムの分散値が処理前と比較して増大しない場合、前記ブロック間差分段階または前記ブロック内差分段階による処理前の副ブロックに対して前記符号化ブロック出力段階を行うこととすることを特徴とするデータファイルの符号化方法。 In claim 5 or claim 6,
For the byte data of the sub-blocks before and after processing by the inter-block difference stage or the intra-block difference stage, calculate a histogram indicating the appearance frequency of the value, and when the variance value of the histogram does not increase compared to before processing, A method for encoding a data file, comprising performing the encoded block output step on a sub-block before processing in the inter-block difference step or the intra-block difference step.
前記副ブロック符号化段階が、バイトデータの出現頻度に基づいて頻度の高いデータほど短いビット長を割り当てる可変長符号化を行うものであることを特徴とするデータファイルの符号化方法。 In claim 1,
A data file encoding method, wherein the sub-block encoding step performs variable length encoding in which a shorter bit length is assigned to data with higher frequency based on the appearance frequency of byte data.
前記符号化ブロック出力段階で書き込まれる前記出力ファイルに対して、可逆圧縮方式によりさらに符号化を行うことを特徴とするデータファイルの符号化方法。 In any one of Claims 1-9 ,
A data file encoding method, wherein the output file written in the encoding block output step is further encoded by a lossless compression method.
与えられたデータファイルに対して、前記データファイルの総バイト数より小さい所定のバイト数のデータブロックである主ブロックを読み込む主ブロック入力段階と、
前記主ブロック内のデータを、所定のバイト数k(1≦k≦K)だけ離れたバイト同士で相関演算を行い、バイト間の相関が最も高くなるときのバイト数kを、基本周期となるバイト数Kmとするバイト構成解析段階と、
前記基本周期の第m(1≦m≦Km)番目のバイトだけで構成されるKm個の副ブロックに、前記主ブロックを分離するブロック分離段階と、
前記分離された各副ブロックに対して、情報量を削減する符号化処理を行う副ブロック符号化段階と、
前記符号化された複数の副ブロックを符号化ブロックとして出力ファイルに書き込む符号化ブロック出力段階を実行させ、
前記主ブロック入力段階、前記バイト構成解析段階、前記ブロック分離段階、前記副ブロック符号化段階、前記符号化ブロック出力段階を繰り返し実行させることにより、前記データファイルに対してロスレス符号化を行うためのプログラム。 On the computer,
For a given data file, a main block input stage for reading a main block which is a data block having a predetermined number of bytes smaller than the total number of bytes of the data file;
The data in the main block is subjected to correlation calculation between bytes separated by a predetermined number of bytes k (1 ≦ k ≦ K), and the number of bytes k when the correlation between bytes becomes the highest is the basic period. A byte structure analysis stage in which the number of bytes is Km;
A block separation step of separating the main block into Km sub-blocks composed only of the mth (1 ≦ m ≦ Km) bytes of the basic period;
A sub-block encoding step for performing an encoding process for reducing the amount of information for each of the separated sub-blocks;
Performing an encoded block output step of writing the plurality of encoded sub-blocks into an output file as encoded blocks;
For performing lossless encoding on the data file by repeatedly executing the main block input step, the byte configuration analysis step, the block separation step, the sub-block encoding step, and the encoded block output step. program.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004016890A JP4373230B2 (en) | 2004-01-26 | 2004-01-26 | Data file encoding method |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004016890A JP4373230B2 (en) | 2004-01-26 | 2004-01-26 | Data file encoding method |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2005210584A JP2005210584A (en) | 2005-08-04 |
JP4373230B2 true JP4373230B2 (en) | 2009-11-25 |
Family
ID=34901898
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004016890A Expired - Fee Related JP4373230B2 (en) | 2004-01-26 | 2004-01-26 | Data file encoding method |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4373230B2 (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10000187B2 (en) | 2014-06-26 | 2018-06-19 | Sumitomo Wiring Systems, Ltd. | Vehicle communication system, in-vehicle device, portable device, and computer program |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP6405667B2 (en) * | 2014-03-31 | 2018-10-17 | ヤマハ株式会社 | Data restoration apparatus and data generation method |
US10142636B2 (en) * | 2014-06-09 | 2018-11-27 | Sony Corporation | Communication system with coding mechanism and method of operation thereof |
-
2004
- 2004-01-26 JP JP2004016890A patent/JP4373230B2/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10000187B2 (en) | 2014-06-26 | 2018-06-19 | Sumitomo Wiring Systems, Ltd. | Vehicle communication system, in-vehicle device, portable device, and computer program |
Also Published As
Publication number | Publication date |
---|---|
JP2005210584A (en) | 2005-08-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20070090165A (en) | System and method for lossless compression of digital images | |
JP3284932B2 (en) | Image processing device | |
JP2003244446A5 (en) | ||
CN1713710B (en) | Image processing apparatus and image processing method | |
WO2021145105A1 (en) | Data compression device and data compression method | |
JP4373230B2 (en) | Data file encoding method | |
JP2014212374A (en) | Image encoding device, image encoding method, image encoding program, and recording medium | |
JP4124366B2 (en) | Method for embedding and extracting digital watermark | |
JP2005516495A5 (en) | ||
JP4334940B2 (en) | Data file compression method | |
JP2004198559A (en) | Encoding method and decoding method for time-series signal | |
JP2004258059A (en) | Compression analyzing device and converting device for time-series signal | |
JP4139704B2 (en) | Time series signal encoding apparatus and decoding apparatus | |
JP4256364B2 (en) | Signal encoding device, signal encoding method, signal encoding program, and recording medium | |
JP2864968B2 (en) | Data arrangement method and recording medium | |
JP2006060490A (en) | Image compressor and image compression program | |
JP4705685B2 (en) | Signal encoding apparatus, decoding apparatus, method, program, and recording medium | |
JP4184817B2 (en) | Time series signal encoding method and apparatus | |
JP3889738B2 (en) | Inverse quantization apparatus, audio decoding apparatus, image decoding apparatus, inverse quantization method, and inverse quantization program | |
JP4743884B2 (en) | Image coding apparatus and control method thereof | |
JP4971881B2 (en) | Image encoding apparatus, image decoding apparatus, and control method thereof | |
JP2005045527A (en) | Method for compressing still image and method for compressing video signal | |
JP2004112658A (en) | Encoding method and decoding method for contents | |
JP5108514B2 (en) | Digital audio file, image file, or video file size reduction method | |
JP3234583B2 (en) | IMAGE RECORDING APPARATUS, METHOD THEREOF, MEDIUM RECORDING THE PROGRAM AND IMAGE REPRODUCING APPARATUS, METHOD THEREOF, AND MEDIUM RECORDING THE PROGRAM |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20061226 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20090515 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090527 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20090724 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20090807 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20090903 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120911 Year of fee payment: 3 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4373230 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120911 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130911 Year of fee payment: 4 |
|
LAPS | Cancellation because of no payment of annual fees |