(57)【特許請求の範囲】
【請求項１】
被符号化データであるシンボル値ｎを、予め与えられた次数ｍで割り算し、その余りｑをｋビット（ｋ＝  ｌｏｇ２  ｍ）の２進数で表すステップと、
前記ｋビットの２進数に連結される、前記割り算の整数部の値ｐに１を加えたビット数（ｐ＋１）のビット列を、その直前のｋビットの偶数パリティにより作成するステップと、
前記ｋビットの２進数と前記（ｐ＋１）ビットのビット列とを連結し、その最初と最後のビット列を反転するステップと、
からなる可変長符号化方法。
【請求項２】
前記請求項１の可変長符号化方法によって符号化された符号語を復号化する方法であって、
符号化データからｋビットを読み込み最初のビットを反転するステップと、
該ｋビットに続く１ビットを該符号化データから読み込み、このビットが直前のｋビットの偶数パリティを満足するか否か判定するステップと、
前記の判定が肯定である間は、該ステップを繰り返し、その繰り返し回数を計数すると共に、前記の判定が否定となった時に、前記最初のビットを反転したｋビットと前記繰り返し回数の計数値とに基づいて、復号されたシンボル値を得るステップと、
からなる復号化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
この発明は可変長符号化方法およびその復号化方法に関し、特に１ビット誤りが符号系列中のどの部分に生じても必ず検出が可能であり、かつ順方向、逆方向共、同一のアルゴリズムで復号が可能な可変長符号化方法およびその復号化方法に関する。
【０００２】
【従来の技術】
従来から、効率的な可変長符号（ＶＬＣ符号）として、ゴロームライス符号（以下、ＧＲ符号と記す）が知られている。以下に、ＧＲ符号の符号化方法を簡単に説明する。
【０００３】
一般に、シンボルｎ（ｎ＝０，１，…）に対するｍ（＝２ｋ  ）次のＧＲ符号の符号語は、図８の３ステップで構成されるビット系列、すなわちバイナリ部、ユーナリ部およびターミネート部を連結することにより作成される。
【０００４】
ステップＳ１０１では、バイナリ部が、ｎモジュロｍ、すなわちｎをｍで割り算した余りを、ｋビット（ｋ＝  ｌｏｇ２  ｍ）の２進数で表すことにより作成される。次のステップＳ１０２では、ユーナリ部が、前記バイナリ部の後に［ｎ／ｍ］個の０を並べることにより作成される。ここに、［ｎ／ｍ］はｎをｍで割り算した時の整数部分を示す。最後のステップＳ１０３では、ターミネート部が、ユーナリ部の最後に１を付加することにより作成される。
【０００５】
図９に、ｍ次、すなわち２次（ｍ＝２）、４次（ｍ＝４）、８次（ｍ＝８）、および１６次（ｍ＝１６）のＧＲ符号の一例が示されている。ここで、シンボルが「１１」の場合の２次のＧＲ符号「１０００００１」の作り方を、前記ステップＳ１０１〜Ｓ１０３に従って説明すると、ステップＳ１０１では、１１を２で割り算した余り１が、ｋビットで表される。ｍ＝２の時は、ｋ＝１であるから、前記余り１が１ビットで表され、バイナリ部は「１」となる。ステップＳ１０２では、１１／２の整数部の値＝５の個数だけ０が並べられる。したがって、ユーナリ部は「０００００」となる。ステップＳ１０３では、ターミネート部として、最後に１が付けられる。この結果、シンボル「１１」に対する２次のＧＲ符号は「１０００００１」となる。他のシンボルｎ、他の次数ｍに対しても、同様の方法で、ＧＲ符号化することができる。
【０００６】
このＧＲ符号は簡単な構成で符号化および復号化が可能であるという利点を有しており、現在ＪＰＥＧにおいて標準化作業中のＪＰＥＧ−ＬＳ方式のエントロピー符号化用符号に採用が検討される等、近年注目されている符号である。しかしながら、このＧＲ符号は、符号データの伝送中に１ビットの誤りが生ずると、該ビット誤りが生じたことを検出したり、訂正したりすることが困難であるという問題がある。
【０００７】
また、他の符号として、Ｗｅｎ  らの提案によるリバーシブルＧＲ符号（以下、Ｗ−ＲＧＲ  符号と記す）が提案されている。この符号は、ＧＲ符号における各符号語のユーナリ部のビット（ユーナリビット）およびターミネート部のビット（ターミネーッティングビット）を、下記のように変更することによって作成される。
【０００８】
（１）  ユーナリ部の長さが０である符号語（例えば、４次の場合、シンボル０〜３の符号語、一般に２ｋ  次の場合、シンボル０からシンボル２ｋ  −１に対応する符号語）は、ターミネーッティングビットを０に設定する。
【０００９】
（２）  ユーナリ部の長さが１以上の符号語は、ユーナリビットの先頭ビットを１に変更する。また、ターミネーティングビットは１のまま変更しない。なお、Ｗ−ＲＧＲ  符号の各符号語のバイナリ部は対応するＧＲ符号の各符号語のバイナリ部と同一である。
【００１０】
図１０に、２次（ｍ＝２）、４次（ｍ＝４）、８次（ｍ＝８）の場合のＷ−ＲＧＲ  符号例を示す。ここで、４次のＷ−ＲＧＲ  符号の作成の仕方を説明すると、シンボルが０〜３に対しては、前記ＧＲ符号のターミネーティングビット１が０に設定され、シンボル０〜３のＷ−ＲＧＲ  符号は、それぞれ「０００」、「０１０」、「１００」および「１１０」になる。次に、シンボルが４以上の値に対しては、ＧＲ符号のユーナリ部の先頭ビットが１に変更され、ターミネーティングビットは１のままで変更されない。このため、シンボル４、５、６、…のＷ−ＲＧＲ  符号は、それぞれ「００１１」、「０１１１」、「１０１１」、…となる。
【００１１】
このＷ−ＲＧＲ  符号は、（可変長のユーナリ部＋ターミネーティングビット）は前後対称（シンメトリカル）であり、バイナリ部は非対称であるが固定長であるため、容易に両方向から復号が可能となっている。また、ＧＲ符号と同一の符号長構成であるので、構成が簡単であり注目を浴びている。
【００１２】
【発明が解決しようとする課題】
しかしながら、前記のＷ−ＲＧＲ  符号は、バイナリ部に生じたビット誤りは復号データ数を変化させず、同一符号語長の符号語間の最小ハミング距離が１であるので、１ビットのデータ誤りが起きたことが検知できないという問題がある。
【００１３】
本発明は前記した従来技術に鑑みなされたもので、その目的は、１ビット誤りが符号系列中のどの部分に生じても必ず検出が可能であり、かつ順方向、逆方向共、同一のアルゴリズムで復号が可能な可変長符号化方法およびその復号化方法を提供することにある。
【００１４】
【課題を解決するための手段】
前記した目的を達成するために、本発明は、被符号化データであるシンボル値ｎを、予め与えられた次数ｍで割り算し、その余りｑをｋビット（ｋ＝  ｌｏｇ２  ｍ）の２進数で表すステップと、前記ｋビットの２進数に連結される、前記割り算の整数部の値ｐに１を加えたビット数（ｐ＋１）のビット列を、その直前のｋビットの偶数パリティにより作成するステップと、前記ｋビットの２進数と前記（ｐ＋１）ビットのビット列とを連結し、その最初と最後のビット列を反転するステップとからなる可変長符号化方法を提供した点に第１の特徴がある。
【００１５】
この特徴によれば、１ビット誤りが符号系列中のどの部分に生じても必ず検出が可能となり、符号化データの伝送の信頼性を高めることができるようになる。また、本発明は、符号化データからｋビットを読み込み最初のビットを反転するステップと、該ｋビットに続く１ビットを該符号化データから読み込み、このビットが直前のｋビットの偶数パリティを満足するか否か判定するステップと、前記の判定が肯定である間は、該ステップを繰り返し、その繰り返し回数を計数すると共に、前記の判定が否定となった時に、前記最初のビットを反転したｋビットと前記繰り返し回数の計数値とに基づいて、復号されたシンボル値を得るステップとからなる復号化方法を提供した点に第２の特徴がある。
【００１６】
この特徴によれば、１ビット誤りが符号系列中のどの部分に生じていても必ず検出できると共に、順方向、逆方向共、同一のアルゴリズムで復号が可能となる。
【００１７】
【発明の実施の形態】
以下に、図面を参照して、本発明を詳細に説明する。本発明の一実施形態を、図１を参照して説明する。図１は、本発明の一実施形態の可変長符号化方法を示すフローチャートである。
【００１８】
この実施形態は、巡回パリティチェックを用いたリバーシブルＧＲ符号（Ｐａｒｉｔｙ−Ｃｈｅｃｋ  Ｒｅｖｅｒｓｉｂｌｅ  ＧＲ  Ｃｏｄｅ  ）（以下、Ｐ−ＲＧＲ符号と記す）であり、シンボル値ｎに対する次数ｍ（ｍ＝２ｋ  ）のＰ−ＲＧＲ符号化方法を図１、図２を参照して説明する。図２は、次数ｍ＝４の時のシンボル値９に対するＰ−ＲＧＲ符号語の作成方法を示している。
【００１９】
まず、ステップＳ１では、ｎモジュロｍを、ｋビットの２進数で表す。例えば、図２の例では、９／４の余り１を２ビットの２進数で表し、「０１」とする。なお、この時点では、符号「０１」はＧＲ符号のバイナリ部と同一であるが、以降のステップＳ２、Ｓ３で、変更される。
【００２０】
次のステップＳ２では、（［ｎ／ｍ］＋１）ビットのユーナリ部が作成される。該ユーナリ部のビットは、それぞれ、その直前のｋビットの偶数パリティとする。ＧＲ符号のターミネート部は、ここではユーナリ部に組み込まれ、特別にターミネート部としての処理は不要である。そのため、ユーナリ部の長さを［ｎ／ｍ］ビットではなく、［ｎ／ｍ］＋１ビットとしている。図２の例では、（［９／４］＋１）ビット、すなわち３ビットのユーナリ部が作成され、該ユーナリ部のビットは、図示されているように、それぞれ、その直前の２ビットの偶数パリティとされている。
【００２１】
ステップＳ３では、前記ステップＳ１、Ｓ２で作成されたビット列を連結し、連結したビット列の最初（先頭）と最後のビットを反転する。図２の例では、最初のビット「０」と、最後のビット「１」がそれぞれ反転されて、「１」、「０」となる。
【００２２】
したがって、次数ｍ＝４の時のシンボル値９に対するＰ−ＲＧＲ符号語は、「１１１００」となる。
【００２３】
図３は、本発明のＰ−ＲＧＲ符号化方法を実現するための機能ブロック図である。ｎ／ｍ演算部１は予め与えられた次数ｍを用いて、入力してくるシンボル値ｎを割り算し、余りｑと整数部ｐを出力する。ｋビットの２進数変換部２は、前記余りｑをｋビットの２進数に変換する。また、（ｐ＋１）ビットの２進数作成部３は、直前ｋビットの偶数パリティにより（ｐ＋１）ビットの２進数を作成する。連結部４は、前記ｋビットの２進数変換部２と（ｐ＋１）ビットの２進数作成部３とからの出力ビットを連結する。該連結部４で連結されたビット列の最初と最後のビットは、反転部５により反転される。該反転部５からは、Ｐ−ＲＧＲ符号語が出力される。
【００２４】
次に、前記Ｐ−ＲＧＲ符号語の復号化方法を、図４、図５を参照して説明する。図４のステップＳ１１では、ユーナリ部の長さを測るカウンタＣを０にリセットする。ステップＳ１２では、符号系列中からｋビットを読み込み、最初のビットを反転する。このｋビットは順方向復号の時はバイナリ部と判定される。図５の例では、先頭から２（ｋ＝２）ビットの「１１」の最初のビットを反転して「０１」とする。
【００２５】
ステップＳ１３では、ビット系列中の次のビットを読みだす。ステップＳ１４では、これが直前のｋビットの偶数パリティを満足するか否か調べ、満足していればステップＳ１５に進んで前記カウンタＣを１インクリメントする。そして、ステップＳ１３に戻り、前記の処理を繰り返す。図５の例では、符号の先頭から３、４番目のビットは偶数パリティと判断され、５番目のビットは奇数パリティと判断される。
【００２６】
ステップＳ１４で奇数パリティと判断されると符号語の終わりと判定し、ステップＳ１６に進んで、バイナリ部とユーナリ部とを結合して、シンボル値が復号される。具体的には、（バイナリ部＋Ｃ×２ｋ  ）が復号されたシンボル値となる。図５の例では、バイナリ部＝１，Ｃ＝２，ｋ＝２であるので、シンボル値は９となる。
【００２７】
さて、Ｐ−ＲＧＲ符号について、符号系列を順方向から見て復号する場合と、符号系列を逆方向から見て復号する場合についての復号表を作成すると、図６のようになる。この復号表から見ても分かるように、Ｐ−ＲＧＲ符号は、順方向および逆方向の両方向から見ても同じ構造を有しているため、逆方向からの復号も、図４の手順で、同様に行うことができる。ただし、復号されたシンボル値は、順方向の復号シンボル値とは異なるものになる。ちなみに、図５の例では、逆方向の符号語は「００１１１」であるので、その復号シンボル値は１０となる。
【００２８】
さて、従来のＷ−ＲＧＲ符号は、ユーナリ部で１ビットの伝送誤りが発生した場合、誤りが起きたことが受信側で分かるが、バイナリ部で１ビットの誤りが発生した場合には、誤りが起きたことは受信側では分からない。しかしながら、本発明の実施形態のＰ−ＲＧＲ符号は、ユーナリ部、バイナリ部にかかわらず、どこで誤りが発生しても、１ビットの伝送誤りであれば、誤りが起きたことを受信側は検知することができる。その理由を、以下に具体例を用いて説明する。
【００２９】
この具体例では、シンボル値３，５，８，６という系列を、４次（ｍ＝４）のＷ−ＲＧＲ符号とＰ−ＲＧＲ符号でそれぞれ符号化し、系列中に１ビットの誤りが発生した場合を考える。シンボル値３，５，８，６という系列を、４次（ｍ＝４）のＷ−ＲＧＲ符号とＰ−ＲＧＲ符号でそれぞれ符号化すると、図７（ａ）  に示されているように、Ｗ−ＲＧＲ符号は、「１１００１１１００１０１１０１１」となる。一方、Ｐ−ＲＧＲ符号は、「０１１１１１１１０００１００１０」となる。なお、図では、説明を分かりやすくするために、符号系列の各符号間にスペースが入れてあるが、実際の符号系列には、スペースが入らないことは勿論である。
【００３０】
さて、前記符号系列の先頭から２番目のビットに伝送誤りが発生したとすると、図７（ｂ）  に示されているように、Ｗ−ＲＧＲ符号は、「１０００１１１００１０１１０１１」となり、Ｐ−ＲＧＲ符号は、「００１１１１１１０００１００１０」となる。下線は誤りビットを示している。
【００３１】
この１ビット誤りが起きた符号系列を受信側で復号すると、図７（ｃ）  に示されているように、Ｗ−ＲＧＲ符号の先頭から１〜３ビットの符号「１００」は符号表中のシンボル「２」に対応するので、これをシンボル値２と復号して、以下５，８、６と復号される。この結果、送信側で送りたいシンボル値は、３，５，８，６であるのに対して、受信側で復号されたシンボル値は、２，５，８，６と変わってしまい、受信側では符号系列にビット誤りが発生したことを検知することができない。
【００３２】
これに対して、本実施形態のＰ−ＲＧＲ符号では、１ビット誤りが起きた符号系列を受信側で復号すると、図７（ｃ）  に示されているように、Ｐ−ＲＧＲ符号の先頭から１〜５ビットの符号「００１１１」は符号表中のシンボル値「１０」に対応するので、これをシンボル値１０と復号し、次の符号「１１１００」はシンボル値９と復号し、さらに次の符号「０１００」はシンボル値７と復号するが、最後に０１という符号語が残る。しかしながら、このような符号語は符号表に存在しないので、これにより、伝送中に誤りが起きたことが受信側で分かる。
【００３３】
これを一般的に述べると、Ｐ−ＲＧＲ符号では、同一符号語長の符号間でハミング距離は必ず２以上になっているので、１ビットの誤りが発生すると、同一符号長の他の符号語に復号されることは決してなく、必ずワード同期がずれることになる。そして、一度ワード同期がずれたら、再同期がかかることは決して起きない。
【００３４】
しかしながら、従来のＷ−ＲＧＲ符号は、バイナリ部で誤りが起きると、必ず同一符号長の他の符号に復号されるので、符号語の同期ずれは起こらず、誤りが起きたことが分からない。なお、ユーナリ部で誤りが起きた場合は、符号語の同期がずれるので、Ｐ−ＲＧＲ符号と同様に、誤り検出が可能である。
【００３５】
さて、一つの符号語中で、バイナリ部とユーナリ部の占めるビット数の割合を考えると、符号長が短い符号語ほどバイナリ部の占める割合が大きくなる。すなわち、符号語長が短い符号語に誤りが起きた場合は、その誤りはバイナリ部に発生する確率が高くなる。また、データ圧縮符号化を行う場合、出現確率の高いシンボルには短い符号語長の符号語が割り当てられるので、符号系列中では、短い符号語の出現確率が高くなる。したがって、実際のデータ圧縮符号化においては、バイナリ部のビット数が占める割合が大きくなるので、Ｗ−ＲＧＲ符号ではバイナリ部で１ビット誤りが起きる確率が高くなり、誤りを検出できない確率が高くなる。この結果、本発明のＰ−ＲＧＲ符号は、従来のＷ−ＲＧＲ符号に比べて、信頼性の高い符号であるということができる。
【００３６】
【発明の効果】
以上の説明から明らかなように、本発明によれば、１ビット誤りが符号系列中のどの部分に生じても必ず検出が可能となり、符号化データの伝送の信頼性を高めることができる。また、順方向、逆方向共、同一のアルゴリズムで復号が可能となるという利点がある。
【図面の簡単な説明】
【図１】本発明の一実施形態の符号化方法を示すフローチャートである。
【図２】本実施形態の具体例の説明図である。
【図３】本発明の一実施形態の符号化装置の構成を示すブロック図である。
【図４】本発明の一実施形態の復号化方法を示すフローチャートである。
【図５】本実施形態の具体例の説明図である。
【図６】本実施形態のＰ−ＲＧＲ符号化の符号コードと、順、逆方向復号シンボルとを示す図である。
【図７】１ビット誤りが発生した時の、Ｗ−ＲＧＲ符号とＰ−ＲＧＲ符号の誤り検出の説明図である。
【図８】従来のＧＲ符号化方法を示すフローチャートである。
【図９】ＧＲ符号の一例を示す図である。
【図１０】Ｗ−ＲＧＲ符号の一例を示す図である。
【符号の説明】
１…ｎ／ｍ演算部、２…ｋビットの２進数変換部、３…（ｐ＋１）ビットの２進数作成部、４…連結部、５…最初と最後のビット反転部。
【図１】
0003559480.tif 000002
【図２】
0003559480.tif 000003
【図３】
0003559480.tif 000004
【図４】
0003559480.tif 000005
【図５】
0003559480.tif 000006
【図６】
0003559480.tif 000007
【図７】
0003559480.tif 000008
【図８】
0003559480.tif 000009
【図９】
0003559480.tif 000010
【図１０】
0003559480.tif 000011