(57)【要約】  【課題】  エラー耐性の高い制御コードを付加することができるデータ符号化装置等を提供する。  【解決手段】  固定長Ｄビットの符号化対象データをゴロムライス符号化する際に、ビット０の連続でなる可変長符号の符号長が所定のプレフィックス最大長max_prefix以上になるとプレフィックス長算出部１およびプレフィックス長判定部２により判定された場合には、該ゴロムライス符号化に代えて、プレフィクス生成部５がプレフィックス最大長max_prefixのビット０の連続でなるプレフィックスを生成して符号生成部７が符号化対象データの上位に付加するだけの第２の符号化を行い、さらに、リスタートマーカ等の制御符号を付加する場合には、マーカ生成部３がビット０が（max_prefix＋２×Ｄ）の長さ以上連続するコードを制御符号として生成するようにしたデータ符号化装置。【選択図】図１
2006339990.tif 000002
【特許請求の範囲】
【請求項１】
固定長Ｄ（Ｄは１以上の整数）ビットの符号化対象データを符号化するためのデータ符号化装置であって、
上記符号化対象データから、ビット「０」とビット「１」との何れか一方を少なくとも１ビット以上含む符号化データを生成する符号化手段と、
連続する２つの任意の符号化データにおけるビット「０」とビット「１」との何れか他方の最大連続数よりも長く、ビット「０」とビット「１」との何れか他方が連続する制御コードを、上記符号化データに付加する制御コード付加手段と、
を具備したことを特徴とするデータ符号化装置。
【請求項２】
上記符号化手段は、上記符号化対象データを上位ビットと下位ビットとに２分割し、上位ビットを該上位ビットの値の長さだけビット「０」とビット「１」との何れか他方を連続したプレフィックスに符号化するとともに、上記下位ビットをサフィックスとし、上位側のプレフィックスと下位側のサフィックスとの間に１ビット分のビット「０」とビット「１」との何れか一方を識別符号として付加する第１の符号化を行うことにより、上記符号化データを生成するものであることを特徴とする請求項１に記載のデータ符号化装置。
【請求項３】
上記符号化手段は、上記上位ビットの値が、所定のプレフィックス最大長max_prefix（max_prefixは１以上の整数）未満であるときは上記第１の符号化により上記符号化データを生成し、上記プレフィックス最大長max_prefix以上であるときは第２の符号化により上記符号化データを生成するものであって、該第２の符号化は、上記プレフィックス最大長max_prefixの長さだけビット「０」とビット「１」との何れか他方を連続したものをプレフィックスとするとともに、上記下位ビットをサフィックスとし、上位側のプレフィックスと下位側のサフィックスとの間に上記上位ビットを識別符号として付加する符号化であり、
上記制御コード付加手段は、ビット「０」とビット「１」との何れか他方を、（max_prefix＋２×Ｄ）の長さ以上連続させることにより、上記制御コードを生成するものであることを特徴とする請求項２に記載のデータ符号化装置。
【請求項４】
上記制御コードは、リスタートマーカであることを特徴とする請求項３に記載のデータ符号化装置。
【請求項５】
上記制御コード付加手段は、上記制御コードの最下位の下に、ビット「０」とビット「１」との何れか一方により全てのビットの値が構成される１ビット以上のコードを、該制御コード終端を示すコードとしてさらに付加するものであることを特徴とする請求項３に記載のデータ符号化装置。
【請求項６】
上記制御コードおよび上記制御コード終端を示すコードは、リスタートマーカであることを特徴とする請求項５に記載のデータ符号化装置。
【請求項７】
固定長Ｄ（Ｄは１以上の整数）ビットの符号化対象データを符号化するためのデータ符号化方法であって、
上記符号化対象データから、ビット「０」とビット「１」との何れか一方を少なくとも１ビット以上含む符号化データを生成する符号化ステップと、
連続する２つの任意の符号化データにおけるビット「０」とビット「１」との何れか他方の最大連続数よりも長く、ビット「０」とビット「１」との何れか他方が連続する制御コードを、上記符号化データに付加する制御コード付加ステップと、
を有することを特徴とするデータ符号化方法。
【請求項８】
固定長Ｄ（Ｄは１以上の整数）ビットの符号化対象データをコンピュータに符号化させるためのプログラムであって、
上記符号化対象データから、ビット「０」とビット「１」との何れか一方を少なくとも１ビット以上含む符号化データを生成する符号化ステップと、
連続する２つの任意の符号化データにおけるビット「０」とビット「１」との何れか他方の最大連続数よりも長く、ビット「０」とビット「１」との何れか他方が連続する制御コードを、上記符号化データに付加する制御コード付加ステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、固定長の符号化対象データを符号化するためのデータ符号化装置、データ符号化方法、プログラムに関する。
【背景技術】
【０００２】
一般的に、符号化されたデータは、固定長で格納されているデータに対して、伝送時等にエラーが混入した場合には、それ以降のデータ伸張が不可能となる場合があることが知られている。
【０００３】
そのために、ＪＰＥＧ等の国際標準符号化方式には、符号化データ内に適宜間隔でリスタートマーカを付加し、一部にエラーが混入したとしても、それ以降のリスタートマーカ位置から符号化データの伸張を再開することが可能となるようにする技術が規定されている。このような技術としては、特開平９−２４７４２３号公報に記載されたものが一例として挙げられる。
【０００４】
リスタートマーカを設けると、エラー耐性が高まるという利点が生じる以外にも、データの所望の一部分のみを高速に伸張することが可能になるという利点や、符号化データをリスタートマーカで区分される部分毎に並列して伸張することが可能となり、処理時間の短縮を図り得るという利点などが生じる。
【０００５】
ところで、従来より、ＪＰＥＧ−ＬＳ等においては、ゴロムライス符号化が採用されている。このゴロムライス符号化したデータにリスタートマーカを埋め込む場合には、順次読み込みだけではリスタートマーカであるか否かを判断することができないために、リスタートマーカの位置を示すオフセット情報を別途設ける必要があった。そして、オフセット情報としては、あるリスタートマーカから次のリスタートマーカまでのバイト数等で示されるような、いわゆるチェーン構造をなすものが考えられる。このような技術を用いれば、符号化データ中のあるビット位置のデータが書き換えられてしまったとしても、その後のリスタートマーカの位置から再び復号化することが可能となる。
【特許文献１】特開平９−２４７４２３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述したような、オフセット情報を用いてゴロムライス符号化データにリスタートマーカを制御コードとして埋め込む技術では、途中でデータ抜けやエラー情報の付加等が発生すると、リスタートマーカの位置がオフセット情報で示される位置とずれることがあるために、リスタートマーカが存在しても該リスタートマーカの位置を特定することができなくなって、情報の復号化が不可能となる可能性があった。さらに、オフセット情報がチェーン構造をとっている場合には、あるリスタートマーカの位置情報が損なわれると、それ以降のリスタートマーカの位置情報も同様に損なわれることになってしまっていた。
【０００７】
こうして、ゴロムライス符号化等に適用し得る従来のリスタートマーカは、エラーに対する耐性が十分に高いとはいえなかった。このような理由から、オフセット情報に依存することのない、エラー耐性のより高いリスタートマーカの付加技術が望まれていた。
【０００８】
本発明は上記事情に鑑みてなされたものであり、エラー耐性の高い制御コードを付加することができるデータ符号化装置、データ符号化方法、プログラムを提供することを目的としている。
【課題を解決するための手段】
【０００９】
上記の目的を達成するために、第１の発明によるデータ符号化装置は、固定長Ｄ（Ｄは１以上の整数）ビットの符号化対象データを符号化するためのデータ符号化装置であって、上記符号化対象データからビット「０」とビット「１」との何れか一方を少なくとも１ビット以上含む符号化データを生成する符号化手段と、連続する２つの任意の符号化データにおけるビット「０」とビット「１」との何れか他方の最大連続数よりも長くビット「０」とビット「１」との何れか他方が連続する制御コードを上記符号化データに付加する制御コード付加手段と、を具備したものである。
【００１０】
また、第２の発明によるデータ符号化装置は、上記第１の発明によるデータ符号化装置において、上記符号化手段が、上記符号化対象データを上位ビットと下位ビットとに２分割し、上位ビットを該上位ビットの値の長さだけビット「０」とビット「１」との何れか他方を連続したプレフィックスに符号化するとともに、上記下位ビットをサフィックスとし、上位側のプレフィックスと下位側のサフィックスとの間に１ビット分のビット「０」とビット「１」との何れか一方を識別符号として付加する第１の符号化を行うことにより、上記符号化データを生成するものである。
【００１１】
さらに、第３の発明によるデータ符号化装置は、上記第２の発明によるデータ符号化装置において、上記符号化手段が、上記上位ビットの値が、所定のプレフィックス最大長max_prefix（max_prefixは１以上の整数）未満であるときは上記第１の符号化により上記符号化データを生成し、上記プレフィックス最大長max_prefix以上であるときは第２の符号化により上記符号化データを生成するものであって、該第２の符号化は、上記プレフィックス最大長max_prefixの長さだけビット「０」とビット「１」との何れか他方を連続したものをプレフィックスとするとともに、上記下位ビットをサフィックスとし、上位側のプレフィックスと下位側のサフィックスとの間に上記上位ビットを識別符号として付加する符号化であり、上記制御コード付加手段は、ビット「０」とビット「１」との何れか他方を、（max_prefix＋２×Ｄ）の長さ以上連続させることにより、上記制御コードを生成するものである。
【００１２】
第４の発明によるデータ符号化装置は、上記第３の発明によるデータ符号化装置において、上記制御コードが、リスタートマーカである。
【００１３】
第５の発明によるデータ符号化装置は、上記第３の発明によるデータ符号化装置において、上記制御コード付加手段が、上記制御コードの最下位の下に、ビット「０」とビット「１」との何れか一方により全てのビットの値が構成される１ビット以上のコードを、該制御コード終端を示すコードとしてさらに付加するものである。
【００１４】
第６の発明によるデータ符号化装置は、上記第５の発明によるデータ符号化装置において、上記制御コードおよび上記制御コード終端を示すコードが、リスタートマーカである。
【００１５】
第７の発明によるデータ符号化方法は、固定長Ｄ（Ｄは１以上の整数）ビットの符号化対象データを符号化するためのデータ符号化方法であって、上記符号化対象データからビット「０」とビット「１」との何れか一方を少なくとも１ビット以上含む符号化データを生成する符号化ステップと、連続する２つの任意の符号化データにおけるビット「０」とビット「１」との何れか他方の最大連続数よりも長くビット「０」とビット「１」との何れか他方が連続する制御コードを上記符号化データに付加する制御コード付加ステップと、を有する方法である。
【００１６】
第８の発明によるプログラムは、固定長Ｄ（Ｄは１以上の整数）ビットの符号化対象データをコンピュータに符号化させるためのプログラムであって、上記符号化対象データからビット「０」とビット「１」との何れか一方を少なくとも１ビット以上含む符号化データを生成する符号化ステップと、連続する２つの任意の符号化データにおけるビット「０」とビット「１」との何れか他方の最大連続数よりも長くビット「０」とビット「１」との何れか他方が連続する制御コードを上記符号化データに付加する制御コード付加ステップと、をコンピュータに実行させるためのプログラムである。
【発明の効果】
【００１７】
本発明のデータ符号化装置、データ符号化方法、プログラムによれば、エラー耐性の高い制御コードを付加することが可能となる。
【発明を実施するための最良の形態】
【００１８】
以下、図面を参照して本発明の実施の形態を説明する。
【００１９】
［実施形態１］
図１から図１２は本発明の実施形態１を示したものであり、図１はデータ符号化装置の構成を示すブロック図、図２は符号化の処理を示すフローチャート、図３はプレフィックス長算出の処理を示すフローチャート、図４はプレフィックス長判定の処理を示すフローチャート、図５はマーカ生成の処理を示すフローチャート、図６はプレフィックス生成の処理を示すフローチャート、図７は識別符号生成の処理を示すフローチャート、図８はサフィックス生成の処理を示すフローチャート、図９は符号生成の処理を示すフローチャート、図１０はリスタートマーカの構成を示す図、図１１は符号化対象データの上位ビットの値がプレフィックス最大長未満であるときの符号化例を示す図、図１２は符号化対象データの上位ビットの値がプレフィックス最大長以上であるときの符号化例を示す図、図１３はゴロムライス符号化および第２の符号化における上位側および下位側のビット「０」の最大連続数を示す図表である。
【００２０】
まず、符号化しようとするデータは、固定長（Ｄ（Ｄは１以上の整数）ビットであるとする）の符号化対象データを１以上含むものであるとする。具体例としては、符号化しようとするデータが画像データであるとすると、符号化対象データは例えば画像データを構成する画素データであり、この画素データの固定長Ｄは、該画素データのダイナミックレンジ、つまり、例えば２５６階調の画素データである場合には８ビットとなる。
【００２１】
そして、このデータ符号化装置は、改良ゴロムライス符号化により符号化を行うものとなっていて、オフセット情報を用いることなく、順次に読み込んだ符号化データからリスタートマーカ等の制御コードを判別することができるような符号化データを生成するものとなっている。ここに、改良ゴロムライス符号化は、符号化対象データを、基本的にゴロムライス符号化（第１の符号化）により符号化するが、該ゴロムライス符号化による符号長が所定の符号長以上になる場合には、後述するような第２の符号化を適用するようにしたものである。また、ゴロムライス符号化における固定長符号部分の符号長（ビット数）は、ｋパラメータk_param （k_param は整数であって、０≦k_param ≦Ｄを満たす）により与えられるものとし、符号化対象データの固定長符号部分を下位ビット、該符号化対象データの固定長符号以外の部分を上位ビットと呼ぶことにする。
【００２２】
このデータ符号化装置は、図１に示すように、符号化手段たるプレフィックス長算出部１と、符号化手段たるプレフィックス長判定部２と、制御コード付加手段たるマーカ生成部３と、符号化手段たるプレフィックス生成部４と、符号化手段たる識別符号生成部５と、符号化手段たるサフィックス生成部６と、符号化手段であり制御コード付加手段たる符号生成部７と、を含んで構成されている。
【００２３】
プレフィックス長算出部１は、符号化対象データdataの上位ビットの値に基づき、該上位ビットを可変長符号化したときのプレフィックス（図１１参照）のビット長であるプレフィックス長を算出するものである。
【００２４】
プレフィックス長判定部２は、プレフィックス長算出部１により算出されたプレフィックス長が、所定のプレフィックス最大長以上であるか否かを判定するものである。
【００２５】
マーカ生成部３は、符号化対象データdataがリスタートマーカを付加する符号化対象データであるときに、マーカデータを生成するものである。
【００２６】
プレフィックス生成部４は、プレフィックス長判定部２の判定結果に基づいて、ゴロムライス符号化によるプレフィックス、または第２の符号化によるプレフィックスを生成するものである。
【００２７】
識別符号生成部５は、プレフィックス長判定部２の判定結果に基づいて、ゴロムライス符号化による識別符号、または第２の符号化による識別符号を生成するものである。
【００２８】
サフィックス生成部６は、ゴロムライス符号化によるサフィックス、または第２の符号化によるサフィックスを生成するものである。このサフィックスは、後述するように、ゴロムライス符号化と第２の符号化との何れにおいても、上述した下位ビット部分をそのまま用いるものとなっている。
【００２９】
符号生成部７は、マーカ生成部３により必要に応じて生成されたマーカデータと、プレフィックス生成部４により生成されたプレフィックスと、識別符号生成部５により生成された識別符号と、サフィックス生成部６により生成されたサフィックスと、をこの順に連結して、符号化データを生成し、出力するものである。
【００３０】
なお、図１において、各ブロック間の相互の動作タイミングの調整は、図示しないタイミング調整回路により行うようになっている。
【００３１】
この図１に示したようなデータ符号化装置の詳細について、作用に沿ってさらに説明する。
【００３２】
まず、図２を参照して、符号化処理の流れについて説明する。
【００３３】
この処理を開始すると、まず、プレフィックス長算出部１がプレフィックス長を算出する（ステップＳ１）。
【００３４】
次に、プレフィックス長判定部２が、プレフィックス長算出部１により算出されたプレフィックス長が所定のプレフィックス最大長以上であるか否かを判定する（ステップＳ２）。
【００３５】
続いて、マーカ生成部３が、マーカ生成信号を受けたときに、マーカデータを生成する（ステップＳ３）。
【００３６】
そして、プレフィックス生成部４が、プレフィックス長判定部２の判定結果に応じて、ゴロムライス符号化に対応するプレフィックス、または第２の符号化に対応するプレフィックスを生成する（ステップＳ４）。
【００３７】
さらに、識別符号生成部５が、プレフィックス長判定部２の判定結果に応じて、ゴロムライス符号化に対応する識別符号、または第２の符号化に対応する識別符号を生成する（ステップＳ５）。
【００３８】
その後、サフィックス生成部６が、サフィックスを生成する（ステップＳ６）。
【００３９】
こうして、符号生成部７が、プレフィックス、識別符号、およびサフィックスと、必要に応じてマーカデータと、を連結して、符号化データを生成し（ステップＳ７）、終了する。
【００４０】
次に、図３を参照して、ステップＳ１のプレフィックス長算出の処理の詳細について説明する。
【００４１】
プレフィックス長算出部１には、符号化対象データdataと、ｋパラメータk_param とが入力される。そして、プレフィックス長算出部１は、符号化対象データdataを、ｋパラメータk_param に示される値だけ右へビットシフトし（図３においては、これを記号「data>>k_param 」として示している。）、その結果をプレフィックス長prefix_length に格納し（ステップＳ１１）、図２に示した処理にリターンする。なお、ここでは、符号化対象データdataのビット長（固定長Ｄ）が「１５」である場合を例に取って説明する。
【００４２】
続いて、図４を参照して、ステップＳ２のプレフィックス長判定の処理の詳細について説明する。
【００４３】
プレフィックス長判定部２には、プレフィックス長算出部１により算出されたプレフィックス長prefix_length と、予め定められたプレフィックス最大長max_prefix（max_prefixは１以上の整数）と、が入力される。プレフィックス長判定部２は、プレフィックス長prefix_length がプレフィックス最大長max_prefix未満であるか否かを判定し（ステップＳ２１）、プレフィックス最大長max_prefix未満である場合にはプレフィックスフラグprefix_flag に「０」を設定する（ステップＳ２２）。一方、プレフィックス最大長max_prefix以上である場合にはプレフィックスフラグprefix_flag に「１」を設定する（ステップＳ２３）。こうして、ステップＳ２２またはステップＳ２３の処理が終了したら、図２に示した処理にリターンする。
【００４４】
次に、図５を参照して、ステップＳ３のマーカ生成の処理の詳細について説明する。
【００４５】
マーカ生成部３には、予め定められたリスタートマーカ長が入力される。ここでは、リスタートマーカ長は、後述するような理由から、「４８」であるものとする。マーカ生成部３は、４８ビット分のビット「０」（図５および後述する図９において、記号「０ｘ００００００００００００」（「０ｘ」は１６進数であることを意味する）により示し、図１０において、６つ分の記号「０ｘ００」により示している）をリスタートマーカとして出力し（ステップＳ３１）、さらに、リスタートマーカ長である「４８」を出力して（ステップＳ３２）、図２に示した処理にリターンする。
【００４６】
続いて、図６を参照して、ステップＳ４のプレフィックス生成の処理の詳細について説明する。
【００４７】
プレフィックス生成部４には、プレフィックス長算出部１により算出されたプレフィックス長prefix_length と、プレフィックス長判定部２から出力されたプレフィックスフラグprefix_flag と、予め定められたプレフィックス最大長max_prefixと、が入力される。プレフィックス生成部４は、まず、プレフィックスフラグprefix_flag の判定を行い（ステップＳ４１）、プレフィックスフラグprefix_flag が「０」である場合には、プレフィックス長prefix_length 分だけビット「０」を出力し（ステップＳ４２）、プレフィックス長prefix_length を出力する（ステップＳ４３）。一方、プレフィックス生成部４は、プレフィックスフラグprefix_flag が「１」である場合には、プレフィックス最大長max_prefix分だけビット「０」を出力し（ステップＳ４４）、プレフィックス最大長max_prefixを出力する（ステップＳ４５）。こうして、ステップＳ４３またはステップＳ４５の処理が終了したら、図２に示した処理にリターンする。
【００４８】
次に、図７を参照して、ステップＳ５の識別符号生成の処理の詳細について説明する。
【００４９】
識別符号生成部５には、プレフィックス長算出部１により算出されたプレフィックス長prefix_length と、プレフィックス長判定部２から出力されたプレフィックスフラグprefix_flag と、ｋパラメータk_param と、が入力される。識別符号生成部５は、まず、プレフィックスフラグprefix_flag の判定を行い（ステップＳ５１）、プレフィックスフラグprefix_flag が「０」である場合には、識別符号として１ビット分だけビット「１」を出力し（ステップＳ５２）、識別符号の符号長を示す「１」を出力する（ステップＳ５３）。一方、識別符号生成部５は、プレフィックスフラグprefix_flag が「１」である場合には、識別符号としてプレフィックス長prefix_length を出力し（ステップＳ５４）、識別符号の符号長を示す「１５−k_param 」を出力する（ステップＳ５５）。こうして、ステップＳ５３またはステップＳ５５の処理が終了したら、図２に示した処理にリターンする。
【００５０】
続いて、図８を参照して、ステップＳ６のサフィックス生成の処理の詳細について説明する。
【００５１】
サフィックス生成部６には、符号化対象データdataと、ｋパラメータk_param と、が入力される。サフィックス生成部６は、符号化対象データdataの下位k_param ビット分をサフィックスデータsuffixとして（ステップＳ６１）、このサフィックスデータsuffixを出力するとともに（ステップＳ６２）、サフィックスの符号長を示すｋパラメータk_param を出力して（ステップＳ６３）、図２に示した処理にリターンする。
【００５２】
次に、図９を参照して、ステップＳ７の符号生成の処理の詳細について説明する。
【００５３】
符号生成部７には、マーカ生成部３からマーカデータおよびマーカの符号長が、プレフィックス生成部４からプレフィックスデータおよびプレフィックスの符号長が、識別符号生成部５から識別符号データおよび識別符号の符号長が、サフィックス生成部６からサフィックスデータおよびサフィックスの符号長が、それぞれ入力されるとともに、必要に応じて、マーカ生成信号が入力されるようになっている。符号生成部７は、まず、マーカ生成信号の判定を行い（ステップＳ７１）、ビットが立っている（「１」になっている）場合には、前画素までのデータをバイト単位で終了させるパッキングを行うために、バイト単位位置までビット「１」を出力する（ステップＳ７２）。なお、ここでビット「１」を出力したのは、次のマーカデータの先頭位置を明確にするため（マーカデータの先頭位置が明確になれば、マーカデータの符号長が分かっているためにマーカデータの終端位置も明確になり、続く符号化データの先端位置が明確になるため）である。次に、マーカの符号長分だけマーカデータ（上述したように、４８ビット分のビット「０」）を出力する（ステップＳ７３）。このステップＳ７３が終了するか、またはステップＳ７１においてマーカ生成信号が「０」になっている場合には、次に、プレフィックスの符号長分だけプレフィックスデータを出力する（ステップＳ７４）。そして、識別符号の符号長分だけ識別符号データを出力し（ステップＳ７５）、サフィックスの符号長分だけサフィックスデータを出力して（ステップＳ７６）、図２に示した処理にリターンする。
【００５４】
次に、図１１を参照して、符号化対象データの上位ビットの値がプレフィックス最大長max_prefix未満であるときの符号化例について説明する。
【００５５】
符号化対象データdataの固定長Ｄは上述したように１５ビットであって、ここでは十進数で示して「３７４」であるときの例について説明する。また、ｋパラメータk_param は「５」、プレフィックス最大長max_prefixは「１２」、にそれぞれ設定されているものとする。この符号化対象データを２進数で表すと「００００００１０１１１０１１０」となるために、上位ビットは「００００００１０１１」、下位ビットは「１０１１０」となる。ここで、上位ビットを十進数で表すと「１１」であるために、プレフィックス最大長max_prefix未満となり、プレフィックスフラグprefix_flag は「０」となる。従って、ステップＳ４２において、プレフィックスとして、上位ビットの値である「１１」（十進数）個分だけビット「０」を出力することになり、プレフィックスとしては「０００００００００００」が出力される。さらに、このときには、識別符号として１ビット分のビット「１」が出力される。また、サフィックスは下位ビットがそのまま充てられる。従って、符号生成部７により生成される符号は、「０００００００００００１１０１１０」となり、符号長が１７ビットとなる符号が得られる。このように、符号化対象データdataの上位ビットの値がプレフィックス最大長max_prefix未満であるときには、ゴロムライス符号化が行われる。なお、プレフィックスの符号長の最大値は（max_prefix−１）、識別符号の符号長は１、サフィックスの符号長はk_param であるために、このゴロムライス符号化が適用される場合の最大符号長は（max_prefix＋k_param ）となる。
【００５６】
続いて、図１２を参照して、符号化対象データdataの上位ビットの値がプレフィックス最大長max_prefix以上であるときの符号化例について説明する。
【００５７】
ここでは、符号化対象データdataが、十進数で示して「１１４２」であるときの例について説明する。なお、符号化対象データdataの固定長Ｄ、ｋパラメータk_param の値、プレフィックス最大長max_prefixの値は、上述と同様である。この符号化対象データdataを２進数で表すと「００００１０００１１１０１１０」となるために、上位ビットは「００００１０００１１」、下位ビットは「１０１１０」となる。ここで、上位ビットを十進数で表すと「３５」であるために、プレフィックス最大長max_prefix以上となり、プレフィックスフラグprefix_flag は「１」となる。従って、ステップＳ４４において、プレフィックスとして、プレフィックス最大長max_prefixである「１２」（十進数）個分だけビット「０」を出力することになり、プレフィックスとしては「００００００００００００」が出力される。さらに、このときには、識別符号としてプレフィックス長prefix_length である「００００１０００１１」（これは、上位ビットと同一となる。）が出力される。また、サフィックスは下位ビットがそのまま充てられる。従って、符号生成部７により生成される符号は、「００００００００００００００００１０００１１１０１１０」となり、符号長が２７ビットとなる符号が得られる。これは、符号化対象データdataそのものの上位に、プレフィックス「００００００００００００」を加えたものと同一である。なお、プレフィックスの符号長はmax_prefix、識別符号とサフィックスとを足し合わせた符号長はｋパラメータk_param の値に依存することなく符号化対象データdataの固定長Ｄ、となるために、この第２の符号化が適用される場合の符号長は（max_prefix＋Ｄ）の固定となる。
【００５８】
ここで、図１７を参照して、図１２と同一の符号化対象データ「１１４２」（十進数）を、従来と同様にゴロムライス符号化したときの状態について、比較するために説明する。ここに、図１７は、上位ビットの値がプレフィックス最大長以上となる符号化対象データを従来のゴロムライス符号化により符号化する例を示す図である。
【００５９】
上述したように、上位ビットは「３５」（十進数）であるために、可変長符号化を行うと、「０００００００００００００００００００００００００００００００００００」となる。従って、識別符号、およびサフィックスを加えて合成すると、符号化されたデータは、「０００００００００００００００００００００００００００００００００００１１０１１０」となり、４１ビットの符号長となる。従って、本実施形態のように、プレフィックス最大長max_prefixによって可変長符号の符号長を制限することにより、上位ビットの値が大きいときに符号長が長くなるのを規制することが可能となっている。
【００６０】
さらに、このような可変長符号の符号長の制限により、ビット「０」の連続数に図１３に示すような上限が生じることになる。
【００６１】
まず、図１１に示したようなゴロムライス符号化の場合には、識別符号がビット「１」となるために、上位側におけるビット「０」の最大連続数はプレフィックスの符号長である（max_prefix−１）となる。
【００６２】
また、ゴロムライス符号化の場合の下位側におけるビット「０」の最大連続数は符号化対象データdataの固定長Ｄと同一である。この具体的な例は、ｋパラメータk_param が符号化対象データdataの固定長Ｄに等しく、符号化対象データdataが０（つまり、全ビットが０）となるときである。このときには１ビットの識別符号「１」の後に、ビット「０」がＤ個連続することになる。
【００６３】
次に、図１２に示したような第２の符号化の場合には、上位側におけるビット「０」の最大連続数は（max_prefix＋Ｄ−１）となる。この具体的な例は、ｋパラメータk_param が０となっていて、プレフィックス最大長max_prefixが１であり、符号化対象データdataが１（つまり、上位の（Ｄ−１）ビットが全て０で、最下位の１ビットのみが１）であるときである。このときには、ｋパラメータk_param が０であるために全てが上位ビットとなり、この上位ビットの値はプレフィックス最大長max_prefixである１以上であるために、図１２に示したような第２の符号化が適用され、符号化対象データdataの前にmax_prefixビット分のビット「０」がプレフィックスとして付加されることになる。従って、符号化されたデータは、上述したように、上位側において、ビット「０」が（max_prefix＋Ｄ−１）だけ連続することになる。
【００６４】
また、第２の符号化の場合の下位側におけるビット「０」の最大連続数は（Ｄ−１）である。この具体的な例は、符号化対象データdataが、最上位の１ビットのみが１で、それ以外の（Ｄ−１）ビットが全て０となるときである。
【００６５】
そして、ゴロムライス符号化と第２の符号化との何れにおいても、符号化データ中には必ずビット「１」が含まれている（より詳しくは、符号化データの識別符号中に、必ずビット「１」が含まれている）ために、３つ以上の符号化データに渡ってビット「０」が連続することはなく、最大でも２つの符号化データに渡るのみである。各符号化対象データに関して、適用可能な符号化はゴロムライス符号化と第２の符号化との２つであるために、連続する２つの符号化対象データにおける符号化の組み合わせとしては４通りある。これらの内の、前の符号化データにおける下位側のビット「０」の最大連続数と、後の符号化データにおける上位側のビット「０」の最大連続数と、の組み合わせの内の最大となるものを、まず求める。図１３を見ると、下位側におけるビット「０」の最大連続数としては（Ｄ−１）よりもＤの方が大きい。同様に、上位側におけるビット「０」の最大連続数としては（max_prefix−１）よりも（max_prefix＋Ｄ−１）の方が大きい。従って、大きいもの同士を組み合わせると、（max_prefix＋２×Ｄ−１）となる。上述したように、k_param ≦Ｄであって、かつＤは１以上の整数であるために、この（max_prefix＋２×Ｄ−１）は、ゴロムライス符号化の最大符号長（max_prefix＋k_param ）以上であり、かつ第２の符号化の符号長（max_prefix＋Ｄ）以上であることが分かる。従って、（max_prefix＋２×Ｄ−１）は、１つの符号化対象データをゴロムライス符号化して得られる符号化データ中に含まれるビット「０」の最大連続数よりも大きく、かつ、１つの符号化対象データを第２の符号化して得られる符号化データ中に含まれるビット「０」の最大連続数よりも大きい。こうして、この改良ゴロムライス符号化におけるビット「０」の最大連続数は、（max_prefix＋２×Ｄ−１）であることが保証される。なお、上述したような、符号化対象データdataの固定長Ｄが１５であって、かつプレフィックス最大長max_prefixが１２であるケースでは、１２＋２×１５−１＝４１がビット「０」の最大連続数となる。
【００６６】
上述したような理由から、符号化データと完全に識別可能なリスタートマーカ等の制御コードとしては、次の数式１に示すようなビット数以上、ビット「０」が連続するようなものを用いれば良い。  
［数１］
max_prefix＋２×Ｄ
【００６７】
従って、上記例では、４２ビット以上、ビット「０」が連続するようなものを制御コードとして用いれば良い。
【００６８】
ただし、実用上は、制御コードとしてバイト単位のものを用いることが望ましいために、例えば次の数式２で示されるようなバイト分だけビット「０」が連続するようなものを制御コードとして用いることが考えられる。  
［数２］
［（max_prefix＋２×Ｄ）／８］＋１
ここに、記号［］は、ここでは床関数（［］内の数を超えない最大の整数を与える関数）を表すものとする。
【００６９】
従って、上述した例では、［４２／８］＋１＝５＋１＝６となって、６バイト（つまり、４８ビット）だけビット「０」が連続するものを、リスタートマーカとして用いていたのである。
【００７０】
このような実施形態１によれば、ゴロムライス符号化におけるプレフィックス長を制限するようにしたために、上位ビットの値が大きいときに符号化データが巨大化するのを規制することができ、データ量の増大を抑制することが可能となる。そして、符号化データ中には存在しないデータを制御コードとして用いるようにしたために、オフセットアドレス等を用いることなく、順次読み込みにおいて制御コードを識別することが可能となり、エラー耐性も高まる。さらに、制御コードとして、ｋパラメータやプレフィックス最大長を種々の値に変更したときにも、符号化データ中には存在しないデータを用いるようにしたために、適応的なｋパラメータの変更や、適応的なプレフィックス最大長の変更にも対応することが可能となる。
【００７１】
［実施形態２］
図１４から図１６は本発明の実施形態２を示したものであり、図１４はリスタートマーカの構成を示す図、図１５はマーカ生成の処理を示すフローチャート、図１６は符号生成の処理を示すフローチャートである。
【００７２】
この実施形態２において、上述の実施形態１と同様である部分については同一の符号を付して説明を省略し、主として異なる点についてのみ説明する。
【００７３】
この実施形態２は、リスタートマーカの終端位置が明確になるように、リスタートマーカの構成をやや異ならせたものとなっている。
【００７４】
すなわち、本実施形態で用いるリスタートマーカは、図１４に示すように、４８ビットで構成されるリスタートマーカの内の、上位４７ビットが０（制御コード）、最下位の１ビットが１（制御コード終端を示すコード）となるように構成されたものとなっている。なお、本実施形態においても、符号化対象データdataの固定長Ｄが１５、ｋパラメータk_param が５、プレフィックス最大長max_prefixが１２であるものとする。なお、より一般的には、リスタートマーカを、上位（［（max_prefix＋２×Ｄ）／８］×８＋７）ビットが０（制御コード）、最下位の１ビットが１（制御コード終端を示すコード）となるように構成することになる。ここに、記号［］は、上述と同様に床関数を表している。
【００７５】
この実施形態のデータ符号化装置の構成は、図１に示したものと同様であり、符号化処理の流れも図２に示したものと同様である。
【００７６】
図１５を参照して、図２のステップＳ３におけるマーカ生成の、本実施形態における処理の詳細について説明する。
【００７７】
この処理を開始すると、マーカ生成部３は、４７ビット分のビット「０」と１ビット分のビット「１」とをリスタートマーカとして出力し（ステップＳ３１ａ）、その後は上述したステップＳ３２の処理を行って、図２に示した処理にリターンする。
【００７８】
次に、図１６を参照して、図２のステップＳ７における符号生成の、本実施形態における処理の詳細について説明する。
【００７９】
上述したステップＳ７１において、マーカ生成信号が「１」になっていると判定された場合には、まず、前画素までのデータをバイト単位で終了させるパッキングを行うために、バイト単位位置までビット「０」を出力する（ステップＳ７２ａ）。なお、上述した実施形態１の図９に示した処理においては、マーカデータの先頭位置を明確にするために、バッキングのためのビットを「１」にする必要があったが、本実施形態のリスタートマーカでは上述したようにリスタートマーカの終端位置が明確であるために、ビット「０」を用いることが可能となっている。なお、本実施形態のリスタートマーカを用いれば、バッキングのためのビットを「１」とすることも勿論可能である。
【００８０】
次に、マーカの符号長分だけマーカデータ（ここでは、４７ビット分のビット「０」および１ビット分のビット「１」を出力する（ステップＳ７３ａ）。
【００８１】
このステップＳ７３ａが終了するか、またはステップＳ７１においてマーカ生成信号が「０」になっている場合には、上述したステップＳ７４〜Ｓ７６の処理を行って、図２に示した処理にリターンする。
【００８２】
なお、制御コード終端を示すコードは、制御コードと異なるビット値をもった１ビットデータで十分であるために、上述した例では１ビットとしているが、制御コードと異なるビット値を複数ビット分並べるようにしても構わない。
【００８３】
このような実施形態２によれば、上述した実施形態１とほぼ同様の効果を奏するとともに、リスタートマーカ等の制御コードの終端位置を明確にして、続く符号化データの先頭位置を明瞭にすることができる。
【００８４】
なお、上述では、符号化対象データが画像データを構成する画素データである場合を例に挙げたが、データ符号化装置により処理し得るデータは、これに限るものではないことは勿論である。
【００８５】
また、上述では、プレフィックスや制御コードとしてビット「０」を用いるようにしているが、これに代えて、ビット「１」を用いるようにすることも可能である。このときには、制御コード終端を示すコードや１ビットで構成される識別符号のビット値も、上述とは異なるビット値を用いることになる。
【００８６】
さらに、上述では、制御コードとしてリスタートマーカを例に挙げているが、その他の用途に用いる制御コードを、上述したような技術を用いて符号化データ中に埋め込むようにしても構わない。
【００８７】
そして、上述では、データ符号化装置により処理を行う例について説明しているが、既存の演算器等にデータ符号化方法を適用することにより処理するようにしても構わないし、データ符号化装置と同等の処理を行うためのプログラムにより、コンピュータで処理させるようにしても良い。
【００８８】
なお、本発明は上述した実施形態に限定されるものではなく、発明の主旨を逸脱しない範囲内において種々の変形や応用が可能であることは勿論である。
【産業上の利用可能性】
【００８９】
本発明は、固定長の符号化対象データを符号化するためのデータ符号化装置、データ符号化方法、プログラムに好適に利用することができる。
【図面の簡単な説明】
【００９０】
【図１】本発明の実施形態１におけるデータ符号化装置の構成を示すブロック図。
【図２】上記実施形態１における符号化の処理を示すフローチャート。
【図３】上記実施形態１におけるプレフィックス長算出の処理を示すフローチャート。
【図４】上記実施形態１におけるプレフィックス長判定の処理を示すフローチャート。
【図５】上記実施形態１におけるマーカ生成の処理を示すフローチャート。
【図６】上記実施形態１におけるプレフィックス生成の処理を示すフローチャート。
【図７】上記実施形態１における識別符号生成の処理を示すフローチャート。
【図８】上記実施形態１におけるサフィックス生成の処理を示すフローチャート。
【図９】上記実施形態１における符号生成の処理を示すフローチャート。
【図１０】上記実施形態１におけるリスタートマーカの構成を示す図。
【図１１】上記実施形態１における、符号化対象データの上位ビットの値がプレフィックス最大長未満であるときの符号化例を示す図。
【図１２】上記実施形態１における、符号化対象データの上位ビットの値がプレフィックス最大長以上であるときの符号化例を示す図。
【図１３】上記実施形態１において、ゴロムライス符号化および第２の符号化における上位側および下位側のビット「０」の最大連続数を示す図表。
【図１４】本発明の実施形態２におけるリスタートマーカの構成を示す図。
【図１５】上記実施形態２におけるマーカ生成の処理を示すフローチャート。
【図１６】上記実施形態２における符号生成の処理を示すフローチャート。
【図１７】上位ビットの値がプレフィックス最大長以上となる符号化対象データを従来のゴロムライス符号化により符号化する例を示す図。
【符号の説明】
【００９１】
１…プレフィックス長算出部（符号化手段）
２…プレフィックス長判定部（符号化手段）
３…マーカ生成部（制御コード付加手段）
４…プレフィックス生成部（符号化手段）
５…識別符号生成部（符号化手段）
６…サフィックス生成部（符号化手段）
７…符号生成部（符号化手段、制御コード付加手段）
【図１】
2006339990.tif 000003
【図２】
2006339990.tif 000004
【図３】
2006339990.tif 000005
【図４】
2006339990.tif 000006
【図５】
2006339990.tif 000007
【図６】
2006339990.tif 000008
【図７】
2006339990.tif 000009
【図８】
2006339990.tif 000010
【図９】
2006339990.tif 000011
【図１０】
2006339990.tif 000012
【図１１】
2006339990.tif 000013
【図１２】
2006339990.tif 000014
【図１３】
2006339990.tif 000015
【図１４】
2006339990.tif 000016
【図１５】
2006339990.tif 000017
【図１６】
2006339990.tif 000018
【図１７】
2006339990.tif 000019