(57)【特許請求の範囲】
【請求項１】
画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを可逆的に圧縮符号化する符号化方法において、
画素データをＬＳＢ側の８ビットからなる第１の部分と、該第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離する分離のステップと、
上記第１の部分に対して可逆的な第１の圧縮符号化を行う第１の圧縮符号化のステップと、
上記第２の部分に対して上記第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行う第２の圧縮符号化のステップと
を有し、
上記第２の圧縮符号化は、
隣接画素による複数の上記第２の部分からなる所定バイトに対して、該所定バイト内で上記第２の部分単位で比較する第１のランレングス処理と、該所定バイト単位で比較する第２のランレングス処理とを組み合わせてなる
符号化方法。
【請求項２】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化は、
隣接画素の上記第１の部分の差分に対してエントロピー符号化を施してなる
符号化方法。
【請求項３】
請求項１に記載の符号化方法において、
上記第１のランレングス処理は、
上記所定バイト内に含まれる複数の上記第２の部分が全て一致する場合に行う
符号化方法。
【請求項４】
請求項３に記載の符号化方法において、
上記第１のランレングス処理が行われた場合に、ラン数を出力しない
符号化方法。
【請求項５】
請求項１に記載の符号化方法において、
上記第１のランレングス処理が行われなかった場合、上記第２のランレングス処理を行わない
符号化方法。
【請求項６】
請求項１に記載の符号化方法において、
上記第２の圧縮符号化のステップは、
上記第１のランレングス処理を行ったか否かを示す第１のフラグと、
上記第２のランレングス処理を行ったか否かを示す第２のフラグと
を出力すると共に、
上記第１のフラグが上記第１のランレングス処理を行ったことを示している場合、さらに上記第１のランレングス処理によるランのレベルを出力し、
上記第１のフラグが上記第１のランレングス処理を行っていないことを示している場合、さらに上記複数の第２の部分からなる所定バイトを出力し、
上記第２のフラグが上記第２のランレングス処理を行ったことを示している場合、さらに上記第２のランレングス処理によるラン数を出力する
符号化方法。
【請求項７】
請求項１に記載の符号化方法において、
上記第２の圧縮符号化のステップは、
上記第１のランレングス処理を行ったか否かを示す第１のフラグを出力すると共に、
上記第１のフラグが上記第１のランレングス処理を行ったことを示している場合、さらに上記第１のランレングス処理によるランのレベルと、上記第２のランレングス処理を行ったか否かを示す第２のフラグとを出力し、
上記第１のフラグが上記第１のランレングス処理を行っていないことを示している場合、さらに上記複数の第２の部分からなる所定バイトを出力し、
上記第２のフラグが上記第２のランレングス処理を行ったことを示している場合、さらに上記第２のランレングス処理によるラン数を出力する
符号化方法。
【請求項８】
請求項１に記載の符号化方法において、
上記所定バイトは１バイトであって、画素データの量子化ビット数が９ビット以上且つ１２ビット以下の画像データに対して圧縮符号化を行う
符号化方法。
【請求項９】
請求項１に記載の符号化方法において、
上記所定バイトは２バイトであって、画素データの量子化ビット数が９ビット以上且つ１５ビット以下の画像データに対して圧縮符号化を行う
符号化方法。
【請求項１０】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化のステップおよび上記第２の圧縮符号化のステップは、それぞれ並列的に実行される
符号化方法。
【請求項１１】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化のステップおよび上記第２の圧縮符号化のステップのそれぞれは、赤色、緑色および青色それぞれの画素、または、輝度Ｙ、色差Ｃｂおよび色差Ｃｒそれぞれの画素に対して並列的に実行される
符号化方法。
【請求項１２】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化のステップおよび上記第２の圧縮符号化のステップのそれぞれは、フレームが所定に分割された各領域のそれぞれに対して並列的に実行される
符号化方法。
【請求項１３】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化のステップによる出力と、上記第２の圧縮符号化のステップによる出力とが所定単位でインターリーブされて１系統で出力される
符号化方法。
【請求項１４】
請求項１３に記載の符号化方法において、
上記第２の圧縮符号化が隣接画素による複数の上記第２の部分からなる所定バイトを単位としてなされ、
上記第２の圧縮符号化のステップによる上記複数の第２の部分からなる所定バイトに対する出力と、該第２の圧縮符号化のステップによる該出力に対応する上記第１の圧縮符号化のステップによる出力とがインターリーブされて１系統で出力される
符号化方法。
【請求項１５】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化のステップによる出力と、上記第２の圧縮符号化のステップによる出力とがそれぞれ纏められて１系統で出力される
符号化方法。
【請求項１６】
請求項１に記載の符号化方法において、
上記第１の圧縮符号化のステップによる出力と、上記第２の圧縮符号化のステップによる出力とがそれぞれ独立的に２系統で出力される
符号化方法。
【請求項１７】
画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを可逆的に圧縮符号化する符号化方法をコンピュータ装置に実行させる符号化プログラムにおいて、
上記符号化方法は、
画素データをＬＳＢ側の８ビットからなる第１の部分と、該第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離する分離のステップと、
上記第１の部分に対して可逆的な第１の圧縮符号化を行う第１の圧縮符号化のステップと、
上記第２の部分に対して上記第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行う第２の圧縮符号化のステップと
を有し、
上記第２の圧縮符号化は、
隣接画素による複数の上記第２の部分からなる所定バイトに対して、該所定バイト内で上記第２の部分単位で比較する第１のランレングス処理と、該所定バイト単位で比較する第２のランレングス処理とを組み合わせてなる
符号化プログラム。
【請求項１８】
請求項１７に記載の符号化プログラムにおいて、
上記第１の圧縮符号化のステップおよび上記第２の圧縮符号化のステップを、それぞれ異なるプロセッサに実行させるようにした
符号化プログラム。
【請求項１９】
請求項１７に記載の符号化プログラムにおいて、
上記第１の圧縮符号化のステップおよび上記第２の圧縮符号化のステップのそれぞれによる、赤色、緑色および青色それぞれの画素、または、輝度Ｙ、色差Ｃｂおよび色差Ｃｒそれぞれの画素に対する処理を、それぞれ異なるプロセッサに実行させるようにした
符号化プログラム。
【請求項２０】
請求項１７に記載の符号化プログラムにおいて、
上記第１の圧縮符号化のステップおよび上記第２の圧縮符号化のステップのそれぞれによる、フレームが所定に分割された各領域のそれぞれに対する処理を、それぞれ異なるプロセッサに実行させるようにした
符号化プログラム。
【請求項２１】
画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを可逆的に圧縮符号化する符号化装置において、
画素データをＬＳＢ側の８ビットからなる第１の部分と、該第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離する分離部と、
上記第１の部分に対して可逆的な第１の圧縮符号化を行う第１の圧縮符号化部と、
上記第２の部分に対して上記第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行う第２の圧縮符号化部と
を有し、
上記第２の圧縮符号化は、
隣接画素による複数の上記第２の部分からなる所定バイトに対して、該所定バイト内で上記第２の部分単位で比較する第１のランレングス処理と、該所定バイト単位で比較する第２のランレングス処理とを組み合わせてなる
符号化装置。
【請求項２２】
請求項２１に記載の符号化装置において、
上記第１の圧縮符号化部による第１の圧縮符号化および上記第２の圧縮符号化部による第２の圧縮符号化は、並列的に行われる
符号化装置。
【請求項２３】
請求項２１に記載の符号化装置において、
上記第１の圧縮符号化部および上記第２の圧縮符号化部をそれぞれ複数、有し、
上記第１の圧縮符号化部および上記第２の圧縮符号化部のそれぞれによる、赤色、緑色および青色それぞれの画素、または、輝度Ｙ、色差Ｃｂおよび色差Ｃｒそれぞれの画素に対する処理を、それぞれ異なる上記第１の圧縮符号化部および上記第２の圧縮符号化部に実行させるようにした
符号化装置。
【請求項２４】
請求項２１に記載の符号化装置において、
上記第１の圧縮符号化部および上記第２の圧縮符号化部をそれぞれ複数、有し、
上記第１の圧縮符号化部および上記第２の圧縮符号化部のそれぞれによる、フレームが所定に分割された各領域のそれぞれに対する処理を、それぞれ異なる上記第１の圧縮符号化部および上記第２の圧縮符号化部に実行させるようにした
符号化装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、特に画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データに対する可逆的な圧縮符号化を効率的に行う符号化方法、符号化プログラムおよび符号化装置に関する。
【背景技術】
【０００２】
近年では、映画館などにおいて、例えば映像サーバに蓄積された映像データを再生し、スクリーンに投影して映画の上映を行うようにした、ディジタルシネマシステムが開発されている。このシステムによれば、圧縮符号化された映像データが、ネットワークを介して配信されたり、大容量光ディスクなどの記録媒体に記録されて映像サーバに供給される。そして、映像サーバからプロジェクタに対してこの映像データが伝送され、プロジェクタによりスクリーンに映像が投影される。
【０００３】
このようなディジタルシネマシステムにおいて供給される映像データなどのように、高品質が要求される映像データは、圧縮符号化処理によるデータの損失が無く、符号化前のベースバンドのディジタルビデオデータが復号時に完全に復元可能な、所謂ロスレス圧縮符号化を用いて圧縮符号化するのが好ましい。
【０００４】
特許文献１には、このようなロスレス圧縮符号化の一例として、画像データに対し、１つ前のデータからの差分値をビット単位で所定に並べ替え、ランレングス処理やハフマン符号化を用いて圧縮符号化するようにした技術が記載されている。
【特許文献１】特開平１０−１９０４７８号公報
【０００５】
また、高品質が要求される映像データは、１画素の階調情報についても高解像度が要求される。画素の階調情報は、一般的には、画素の量子化ビット数で表され、例えば、パーソナルコンピュータなどで一般的に用いられる画素の量子化ビット数が８ビットであるのに対し、１画素の量子化ビット数が１０ビット、１２ビットなどの、量子化ビット数が８ビットを超える解像度が要求される。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、従来では、画素の量子化ビット数が８ビットを超える画像データに対してロスレス圧縮符号化処理を行う符号化方式が存在しなかったという問題点があった。
【０００７】
すなわち、従来のロスレス圧縮符号化方式は、データを８ビット単位で圧縮符号化していくようにされており、データ単位が８ビットを超えるデータに対しては、１６ビットであることを利用せず通常の８ビット単位での圧縮符号化を行う方法や、８ビット単位の圧縮符号化方式を１６ビット単位に単に拡張し、８ビット単位の場合と同様の処理を２並列的に行う方法が一般的であった。後者をより具体的に説明すると、例えば、データをＬＳＢ(Least Significant Bit)側の８ビットの部分と、ビット位置が９ビット目からＭＳＢ(Most Significant Bit)での部分とに分け、それぞれの部分に対して共通の圧縮符号方式で圧縮符号化を行う。
【０００８】
そのため、この方法で８ビットを超えるデータ単位のデータに対して圧縮符号化を行うと、１バイト単位で圧縮符号化を行う場合に対して、２倍の処理時間を要してしまうという問題点があった。
【０００９】
また、この方法では、圧縮効率的にも最適化されていないという問題点があった。すなわち、データを上述のようにＬＳＢ側とＭＳＢ側とに分けた場合、ＭＳＢ側のデータは、上位側のビットが全て値"０"となり、この部分も含めて圧縮符号化を行うのは、無駄であると考えられる。
【００１０】
したがって、この発明の目的は、画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを効率的に圧縮符号化する符号化方法、符号化プログラムおよび符号化装置を提供することにある。
【課題を解決するための手段】
【００１１】
この発明は、上述した課題を解決するために、画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを可逆的に圧縮符号化する符号化方法において、画素データをＬＳＢ側の８ビットからなる第１の部分と、第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離する分離のステップと、第１の部分に対して可逆的な第１の圧縮符号化を行う第１の圧縮符号化のステップと、第２の部分に対して第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行う第２の圧縮符号化のステップとを有し、第２の圧縮符号化は、隣接画素による複数の上記第２の部分からなる所定バイトに対して、所定バイト内で第２の部分単位で比較する第１のランレングス処理と、所定バイト単位で比較する第２のランレングス処理とを組み合わせてなる符号化方法である。
【００１２】
また、この発明は、画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを可逆的に圧縮符号化する符号化方法をコンピュータ装置に実行させる符号化プログラムにおいて、符号化方法は、画素データをＬＳＢ側の８ビットからなる第１の部分と、第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離する分離のステップと、第１の部分に対して可逆的な第１の圧縮符号化を行う第１の圧縮符号化のステップと、第２の部分に対して第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行う第２の圧縮符号化のステップとを有し、第２の圧縮符号化は、隣接画素による複数の上記第２の部分からなる所定バイトに対して、所定バイト内で第２の部分単位で比較する第１のランレングス処理と、所定バイト単位で比較する第２のランレングス処理とを組み合わせてなる符号化プログラムである。
【００１３】
また、この発明は、画素データの量子化ビット数が８ビットを超え１６ビット未満の画像データを可逆的に圧縮符号化する符号化装置において、画素データをＬＳＢ側の８ビットからなる第１の部分と、第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離する分離部と、第１の部分に対して可逆的な第１の圧縮符号化を行う第１の圧縮符号化部と、第２の部分に対して第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行う第２の圧縮符号部とを有し、第２の圧縮符号化は、隣接画素による複数の上記第２の部分からなる所定バイトに対して、所定バイト内で第２の部分単位で比較する第１のランレングス処理と、所定バイト単位で比較する第２のランレングス処理とを組み合わせてなる符号化装置である。
【００１４】
上述したように、この発明は、画素データをＬＳＢ側の８ビットからなる第１の部分と、第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離し、分離された第１の部分に対して可逆的な第１の圧縮符号化を行うと共に、分離された第２の部分に対して第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行うようにしているため、第１および第２の圧縮符号化を、第１および第２の部分各々のデータの特徴に適した方法でそれぞれ行うことで、より効率的に圧縮符号を行うことができる。
【発明の効果】
【００１５】
この発明は、上述のように、画素データをＬＳＢ側の８ビットからなる第１の部分と、第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離し、分離された第１の部分に対して可逆的な第１の圧縮符号化を行うと共に、分離された第２の部分に対して第１の圧縮符号化とは異なる可逆的な第２の圧縮符号化を行うようにしているため、第１および第２の圧縮符号化を、第１および第２の部分各々のデータの特徴に適した方法でそれぞれ行うことで、画素データの量子化ビット数が９ビット以上１６ビット未満の画像データに対する圧縮符号化処理を効率的に行うことができる効果がある。
【００１６】
また、画素データをＬＳＢ側の８ビットからなる第１の部分と、第１の部分を除いたＭＳＢ側のビットからなる第２の部分とに分離し、分離された第１および第２の部分に対してそれぞれ圧縮符号化を行うようにしているので、第１および第２の部分に対する圧縮符号化処理を並列的に行うことができ、処理をより高速化できる効果がある。
【発明を実施するための最良の形態】
【００１７】
以下、この発明について、下記の順序に従い説明する。
１．この発明の実施の第１の形態について
１−１．実施の第１の形態による符号化処理について
１−１−１−１．符号化装置について
１−１−１−２．データ構造について
１−１−１−３．符号化処理について
１−１−１−４．符号化処理の具体的な例
１−１−１−５．出力形式について
１−１−２．実施の第１の形態の第１の変形例について（第１の異なる出力形式）
１−１−３．実施の第１の形態の第２の変形例について（第２の異なる出力形式）
１−１−４．実施の第１の形態の第３の変形例について（異なる符号化単位）
１−２．実施の第１の形態による復号化処理について
１−２−１−１．復号化装置について
１−２−１−２．復号化処理について
１−２−１−３．復号化処理の具体的な例
１−２−２．実施の第１の形態の第１の変形例による復号化処理について
１−２−２−１．復号化装置について
１−２−２−２．復号化処理について
１−２−２−３．復号化処理の具体的な例
１−２−３．実施の第１の形態の第２の変形例による復号化処理について
１−２−３．実施の第１の形態の第３の変形例による復号化処理について
２．この発明の実施の第２の形態について
２−１．実施の第２の形態による符号化処理について
２−１−１−２．データ構造について
２−１−１−３．符号化処理について
２−１−１−４．符号化処理の具体的な例
２−１−１−５．出力形式について
２−１−２．実施の第２の形態の第１の変形例について（第１の異なる出力形式）
２−１−３．実施の第２の形態の第２の変形例について（第２の異なる出力形式）
２−１−４．実施の第２の形態の第３の変形例について（異なる符号化単位）
２−２．実施の第２の形態による復号化処理について
２−２−１−２．復号化処理について
２−２−１−３．復号化処理の具体的な例
２−２−２．実施の第２の形態の第１の変形例による復号化処理について
２−２−２−２．復号化処理について
２−２−２−３．復号化処理の具体的な例
２−２−３．実施の第２の形態の第２の変形例による復号化処理について
２−２−４．実施の第２の形態の第３の変形例による復号化処理について
３．実施の第１および第２の形態に共通して適用可能なハードウェア構成について
３−１．ハードウェア構成の例
３−２．符号化処理に対する適用例
３−３．復号化処理に対する適用例
４．この発明の実施の第３の形態について（複数のＣＰＵを持つハードウェア構成）
４−１．ハードウェア構成の例
４−２．符号化処理に対する適用例
４−３．復号化処理に対する適用例
【００１８】
１．この発明の実施の第１の形態について
１−１−１−１．符号化装置について
先ず、この発明の実施の第１の形態を、図面を参照しながら説明する。図１は、この発明の実施の第１の形態による符号化装置１Ａの機能を示す一例の機能ブロック図を示し、この図１を用いてこの発明による圧縮符号化処理を概略的に説明する。
【００１９】
詳細は後述するが、図１に示す符号化装置１Ａや、後述する符号化装置１Ｂ、符号化装置１Ｃは、実際には、図示されないＣＰＵ(Central Processing Unit)により、所定のプログラムに従い全体の動作が制御される。図１に示される各部は、図示されないメモリと、ＣＰＵ上で動作されるプログラムで実現されるようにしてもよいし、各部がそれぞれ独立したハードウェアから成りこれらのハードウェアの動作をＣＰＵにより制御するようにしてもよい。
【００２０】
入力された画像データは、入力データ用メモリ１０に一旦、格納される。入力画像データは、Ｒ（赤色）を表示する画素、Ｇ（緑色）を表示する画素およびＢ（青色）を表示する画素それぞれが８ビットを超え１６ビット未満、さらに好ましくは、８ビットを超え１３ビット未満の量子化ビット数を有するデータである。なお、画像データは、ＲＧＢの三原色によるもの限らず、例えば輝度Ｙ、色差Ｃｂ、Ｃｒによるものでもよい。以下に説明する圧縮符号化処理は、これらＲ、ＧおよびＢそれぞれの画素データ、あるいは、輝度Ｙ、色差Ｃｂおよび色差Ｃｒそれぞれの画素データに対して、独立的に行われる。
【００２１】
入力データ用メモリ１０に格納された画像データは、データ分離部１１で、画素毎に、ＬＳＢ(Least Significant Bit)側の８ビット（以下、「ＬＳＢ側ビット」と呼ぶ）と、ＬＳＢ側ビットを除いたＭＳＢ側の残りのビット（以下、「ＭＳＢ側ビット」と呼ぶ）とに分離される。この発明では、このように分離されたＬＳＢ側ビットとＭＳＢ側ビットとに対して、それぞれ異なる圧縮符号方式で以て圧縮符号化を行う。
【００２２】
図２は、このデータ分離部１１による一例のデータ分離処理を概略的に示す。例えば、画素の量子化ビット数が１０ビットであり１画素のデータが１０ビットのデータ長を有する場合、図２Ａに一例が示されるように、ＬＳＢから８ビット目までがＬＳＢ側ビット、９ビット目からＭＳＢ（この例では１０ビット目）までの２ビットがＭＳＢ側ビットとされる。このＬＳＢ側ビットおよびＭＳＢ側ビットの分離は、画素毎になされ、分離されたＬＳＢ側ビット（図２Ｂの上側参照）は、ＬＳＢ側データ用メモリ１２に格納され、分離されたＭＳＢ側ビット（図２Ｂの下側参照）は、ＭＳＢ側データ用メモリ１６に格納される。
【００２３】
なお、ＬＳＢ側ビットおよびＭＳＢ側ビットは、例えば、画面の左上隅の画素を先頭に、水平ラインの左端から右端に向けた画素の配列順に対応して、ライン単位で順次並べられて、ＬＳＢ側データ用メモリ１２およびＭＳＢ側データ用メモリ１６に格納される。
【００２４】
ＬＳＢ側データ用メモリ１２に格納されたＬＳＢ側ビット（図３Ａ参照）は、ＤＰＣＭ部１３でＤＰＣＭ(Defferential Pulse Code Modulation)処理により、例えば直前に処理したＬＳＢ側ビットと現在のＬＳＢ側ビットとの差分がとられる（図３Ｂ参照）。フレームの最初のＬＳＢ側ビットは、元のデータがそのまま用いられる。この差分データに対して、ハフマン符号化部１４により所定のハフマンテーブルに基づきハフマン符号化を施し、可変長符号により圧縮符号化する（図３Ｃ参照）。ハフマン符号化部１４から出力されたデータは、出力データ用メモリ１５に格納される。なお、ＤＰＣＭ処理およびハフマン符号化処理については、周知であるため詳細な説明を省略する。
【００２５】
一方、ＭＳＢ側データ用メモリ１６に格納されたＭＳＢ側ビットは、１重目ランレングス処理部１７および２重目ランレングス処理部で２重にランレングス処理を施されて圧縮符号化され、出力データ用メモリ１５に格納される。なお、詳細は後述するが、１重目ランレングス処理部１７は、ＭＳＢ側ビット単位でのランレングス処理がＭＳＢ側ビットの所定バイト分毎に行われ、２重目ランレングス処理部１８では、所定数のＭＳＢ側ビットからなる所定バイト分のビット列を単位としてランレングス処理が行われる。
【００２６】
すなわち、この発明では、ＭＳＢ側ビットは、所定バイトを単位として圧縮符号化が施される。このとき、１重目ランレングス処理部１７では、所定バイト内でのランレングス処理を行い、２重目ランレングス処理部１８では、所定バイト単位でランレングス処理を行う。なお、以下では、所定バイトを１バイトとして説明する。
【００２７】
１重目ランレングス処理部１７および２重目ランレングス処理部１８の処理結果がＭＳＢ側ビットの圧縮符号化出力として出力データ用メモリ１５に格納される。出力データ用メモリ１５に格納されたＬＳＢ側ビットの圧縮符号化出力と、ＭＳＢ側ビットの圧縮符号化出力とが、入力画像データが圧縮符号化された圧縮符号化データとして出力される。この図１の例では、出力データは、ＭＳＢ側ビットが圧縮符号化されたＭＳＢ側圧縮符号化データと、ＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データとが画素単位でインタリーブされて出力される。出力データは、例えば出力ファイル１９に格納される。
【００２８】
このように、画素データを、ＬＳＢ側とＭＳＢ側とに分離し、分離されたＬＳＢ側データとＭＳＢ側データとに対して、それぞれのデータの特徴に応じて異なる方式で圧縮符号化を行うことで、より効率的且つ高速に圧縮符号化処理を行うことができる。
【００２９】
すなわち、画素データにおいて、ＭＳＢ側のビットは、その画素を特徴付ける情報を有し、画像の相関性から、隣接する画素においてはＭＳＢ側のビットの値が近似している可能性が高い。そこで、ＭＳＢ側のビットを、その特徴に適応した方式で圧縮符号化することで、圧縮率を高めることができる。
【００３０】
また、画素データをＬＳＢ側の８ビットと、当該ＬＳＢ側の８ビットを除いたＭＳＢ側とのビットに分離してそれぞれ圧縮符号化することで、各々の圧縮符号化処理を８ビット乃至８ビット以下のデータ単位で行うことができると共に、それぞれの処理を並列的に行うことができるので、圧縮符号化処理を高速化することができる。
【００３１】
次に、上述の１重目ランレングス処理部１７および２重目ランレングス処理部１８における処理について、より詳細に説明する。図４は、データ分離部１１および１重目ランレングス処理部１７における処理を、画素データが９ビット、１０ビット、１１ビットおよび１２ビットの量子化ビット数を有する場合について、概略的に示す。データ分離部１１では、画素毎に、画素データをＬＳＢ側の８ビットと、当該ＬＳＢ側の８ビットを除いたＭＳＢ側のビットとに分離する。
【００３２】
すなわち、画素データの量子化ビット数が９ビットの例では、ＭＳＢ側ビットは、ＭＳＢの１ビットとなる。画素データの量子化ビット数が１０ビットの例では、ＭＳＢ側ビットは、ＭＳＢ側の２ビットとなる。同様に、画素データの量子化ビット数が１１ビットおよび１２ビットの例では、ＭＳＢ側ビットは、それぞれＭＳＢ側の３ビットおよび４ビットとなる。
【００３３】
１重目ランレングス処理部１７では、ＭＳＢ側データ用メモリ１６に格納されたＭＳＢ側ビットの所定バイト分（この例では１バイト分＝８ビット分）からなるビット列に対して、ＭＳＢ側ビットのビット数単位でビット列を比較してランレングス処理を行う。
【００３４】
すなわち、画素データの量子化ビット数が９ビットの場合には、隣接する８画素分のＭＳＢ側ビットからなる１バイトのデータ列が１重目ランレングス処理部１７の処理対象とされる。画素データの量子化ビット数が１０ビットの場合には、隣接する４画素分のＭＳＢ側ビットからなる１バイトのデータ列が１重目ランレングス処理部１７の処理対象とされる。また、画素データの量子化ビット数が１１ビットおよび１２ビットの場合には、隣接する２画素分のＭＳＢ側ビットからなる１バイトのデータ列が処理対象とされる。
【００３５】
なお、画素データの量子化ビット数が１１ビットの場合のように、ＭＳＢ側ビットのビット数のの整数倍が８ビットにならない場合には、所定のスタッフィングビットを付加して、全体のデータ長が１バイトとなるようにされる。例えば、画素データの量子化ビット数が１１ビットの場合、ＬＳＢ側の８ビットを除いたＭＳＢ側のビットは、３ビットとなる。この３ビットをＭＳＢ側ビットとして、２画素分のＭＳＢ側ビットに対して１重目ランレングス処理部１７の処理を行う。これに限らず、１画素におけるＭＳＢ側の３ビットに対してスタッフィングビットを付加した４ビットを、ＭＳＢ側ビットと見なしてもよい。
【００３６】
画素データの量子化ビット数が１０ビットであって１画素が１０ビットのデータ長を持つ場合を例にとると、ＭＳＢ側ビットが２ビットであって、隣接する４画素分のＭＳＢ側ビットからなる所定バイトすなわち１バイト（＝８ビット）のビット列に対して、ＭＳＢ側ビット単位すなわち２ビット単位で比較がなされる。比較の結果、当該所定バイトのビット列がＭＳＢ側ビットのビット数単位の繰り返しから成っていると判断されれば、繰り返されたＭＳＢ側ビットのビット列がランレングスのレベルとして出力される。
【００３７】
例えば、ある画素に対応するＭＳＢ側ビットのビット列が「０１」であって、当該画素に隣接する３画素に対応するＭＳＢ側ビットのビット列も、それぞれ「０１」であれば、１重目ランレングス処理部１７の処理対象のデータ列がＭＳＢ側ビットのビット列「０１」の繰り返しからなると判断される。このときのランレングスのレベルは、繰り返されたＭＳＢ側ビットのビット列である「０１」とされる。
【００３８】
同様に、画素データの量子化ビット数が９ビットであって１画素が９ビットのデータ長を持つ場合、ＭＳＢ側ビットが１ビットとなるため、隣接する８画素分のＭＳＢ側ビットからなる所定バイト（１バイト＝８ビット）のビット列に対して、ＭＳＢ側ビットに対応して１ビット単位で比較がなされる。また、画素データの量子化ビット数が１２ビットであって１画素が１２ビットのデータ長を持つ場合、ＭＳＢ側ビットが４ビットとなるため、隣接する２画素分のＭＳＢ側ビットからなる所定バイト（１バイト＝８ビット）のデータ列に対して、ＭＳＢ側ビット単位すなわち４ビット単位で比較がなされる。また、スタッフィングビットを用いた場合、スタッフィングビットを含めた単位で処理を行うことができる。
【００３９】
一方、当該所定バイトのビット列がＭＳＢ側ビットのビット数単位の繰り返しではないと判断されれば、当該所定バイトの値がそのまま出力される。例えば、当該所定バイトに含まれる各ＭＳＢ側ビットのビット列がそれぞれ例えば「０１」、「０１」、「１１」、「０１」であれば、同一のＭＳＢ側ビットの繰り返しではないと判断され、これら４個のＭＳＢ側ビットからなるビット列「０１０１１１０１」が１重目ランレングス処理部１７の出力とされる。
【００４０】
また、１重目ランレングス処理部１７では、全体の長さが所定バイトとなる隣接する所定数のＭＳＢ側ビットが同一ビット列の繰り返しからなるか否かを示す第１のフラグが設定される。この第１のフラグは、１重目ランレングス処理部１７における処理の制御に用いられると共に、出力データに埋め込まれて用いられる。
【００４１】
詳細は後述するが、例えば、第１のフラグの値が"１"であれば、隣接する所定数のＭＳＢ側ビットが同一ビット列の繰り返しからなることを示し、１重目ランレングス処理部１７での処理においては、隣接する所定数のＭＳＢ側ビットに対するランレングス処理が可能であることが示される。一方、第１のフラグの値が"０"であれば、隣接する所定数のＭＳＢ側ビットが同一ビット列の繰り返しではないことを示し、１重目ランレングス処理部１７での処理においては、隣接する所定数のＭＳＢ側ビットに対するランレングス処理ができないことが示される。
【００４２】
なお、当該所定バイト内におけるＭＳＢ側ビットの繰り返し数は、図４の右端欄に示すように、入力画像データにおける画素データの量子化ビット数に応じて固定的となるため、特に出力する必要はない。
【００４３】
２重目ランレングス処理部１８では、ＭＳＢ側データ用メモリ１６に格納されたＭＳＢ側ビットの所定バイト分すなわち１バイト分（＝８ビット分）からなるビット列を単位として、ランレングス処理を行う。より具体的には、ＭＳＢ側データ用メモリ１６に格納されたデータに対して、所定バイト分のビット列を単位として、隣接するビット列が同一ビット列の繰り返しであるか否かがビット列毎に順次、判断され、繰り返しの回数が計数される。この繰り返し回数の計数値が、所定バイト単位のラン数として２重目ランレングス処理部１８から出力される。隣接するビット列が同一ビット列の繰り返しではない場合には、所定バイト単位のラン数が出力されない。
【００４４】
また、２重目ランレングス処理部１８では、所定数のＭＳＢ側ビットからなる所定バイト分のビット列が繰り返されるか否かを示す第２のフラグが設定される。この第２のフラグは、２重目ランレングス処理部１８における処理の制御に用いられると共に、出力データに埋め込まれて用いられる。
【００４５】
詳細は後述するが、例えば、第２のフラグの値が"１"であれば、所定数のＭＳＢ側ビットからなる所定バイト分のビット列が繰り返されることを示し、２重目ランレングス処理部１８での処理においては、所定数のＭＳＢ側ビットからなる次の所定バイト分のビット列に対して繰り返しの判断を行うことが示される。一方、第２のフラグの値が"０"であれば、所定数のＭＳＢ側ビットからなる所定バイト分のビット列が繰り返されていないことを示し、２重目ランレングス処理部１８での処理においては、所定数のＭＳＢ側ビットからなる次の所定バイト分のビット列に対して繰り返しの判断を行わないことが示される。
【００４６】
１−１−１−２．データ構造について
図５は、１重目ランレングス処理部１７および２重目ランレングス処理部１８の出力に基づく、ＭＳＢ側の出力データの一例の構造を示す。ＭＳＢ側の出力データは、図５に例示されるように、データ先頭側の固定長の部分と、この固定長の部分に続く可変長の部分とからなる。固定長の部分には、先頭から、第２のフラグおよび第１のフラグの順に配置される。
【００４７】
また、可変長の部分は、１重目ランレングス処理部１７の処理結果に基づくデータが配置される第１の領域と、２重目ランレングス処理部１８の処理結果に基づくデータが配置される第２の領域とからなる。
【００４８】
第１の領域は、第１のフラグの値に応じて格納されるデータが決められ、データ長が割り当てられる。すなわち、第１のフラグが、ＭＳＢ側ビットのビット列を単位としたランレングス処理を行ったことを示していれば、第１の領域には、データ長がＭＳＢ側ビットのビット数に応じて割り当てられ、ランレングスのレベルが格納される。上述した画素データの量子化ビット数が１０ビットの例では、第１の領域に対してＭＳＢ側ビットのデータ長である２ビットが割り当てられ、例えば「０１」といった、ランレングスのレベルが格納される。
【００４９】
一方、第１のフラグが、ＭＳＢ側ビットのビット列を単位としたランレングス処理を行っていないことを示していれば、第１の領域には、所定数のＭＳＢ側ビットのビット数のサイズが割り当てられ、所定数のＭＳＢ側ビットからなるビット列が格納される。上述した画素データの量子化ビット数が１０ビットの例では、第１の領域に対して所定バイトすなわち１バイト（＝８ビット）が割り当てられ、例えば「０１０１１１０１」といった、４個分のＭＳＢ側ビットのビット列からなるビット列が格納される。
【００５０】
第２の領域は、２重目ランレングス処理部１８の処理結果に基づく所定バイト単位のランレングス処理によるラン数が配置される領域で、第２のフラグの値に応じて第２の領域を割り当てるか否かが決められる。すなわち、第２のフラグが所定バイト分のビット列が繰り返されていることを示している場合、第２の領域に対して所定ビット数が割り当てられ、２重目ランレングス処理部１８によるランレングス処理結果である繰り返し回数（ラン数）が格納される。
【００５１】
一方、第２のフラグが、所定バイト分のビット列が繰り返されていないことを示していれば、第２の領域を割り当てない。すなわち、この場合には、第２の領域が出力されない。
【００５２】
若しくは、可変長の領域は、ＭＳＢ側ビット単位でのランレングス処理および所定バイト単位のランレングス処理が共に行われていない場合に、圧縮符号化がなされていない所定バイト分のビット列が配置される。
【００５３】
なお、第１のフラグおよび第２のフラグは、この出力データの構造においては、それぞれ、ＭＳＢ側ビット単位のランレングス処理が行われたか否か、所定バイト単位のランレングス処理が行われたか否かを示すことになる。
【００５４】
１−１−１−３．符号化処理について
図６〜図１０のフローチャートを用い、この発明の実施の第１の形態による圧縮符号化処理について、より具体的に説明する。なお、図６〜図１０の各フローチャートにおける各処理は、例えば図示されないＣＰＵにより所定のプログラムに基づき制御することができる。これに限らず、図１に例示される符号化装置１を構成する各部が互いに連携して適宜、実行するようにもできる。なお、以下では、圧縮符号化処理が画像データの１フレーム毎に行われるものとして説明する。
【００５５】
図６は、この発明の実施の第１の形態による圧縮符号化方法の全体の流れを概略的に示すフローチャートである。既に説明したように、この発明の実施の第１の形態では、画像データに対し、画素毎に、画素データをＬＳＢ側の８ビットと、当該ＬＳＢ側の８ビットを除くＭＳＢ側のビットとに分離し（ステップＳ１）、分離されたＬＳＢ側ビットに対する圧縮符号化（ステップＳ２）と、ＭＳＢ側ビットに対する圧縮符号化（ステップＳ３）とをそれぞれ行う。ステップＳ２によるＬＳＢ側ビットの圧縮符号化データと、ステップＳ３によるＭＳＢ側ビットの圧縮符号化データは、所定にインターリーブされて出力される（ステップＳ４）。
【００５６】
図７は、上述のステップＳ２におけるＬＳＢ側ビットに対する圧縮符号化の一例の処理を示すフローチャートである。上述した図３Ａも参照し、ＤＰＣＭ部１３は、ＬＳＢ側データ用メモリ１２に格納されたＬＳＢ側ビットに対して１画素分毎にＤＰＣＭ処理を行い、差分データを出力する（ステップＳ１０）。次のステップＳ１１で、ハフマン符号化部１４は、ＤＰＣＭ部１３から出力された差分データに対してハフマン符号化による圧縮符号化処理を施し、出力する（図３Ｂ参照）。圧縮符号化されたＬＳＢ側ビットの出力データは、出力データ用メモリ１５に所定に書き込まれる。１フレーム分の処理が終了したら（ステップＳ１２）、図６のステップＳ４に処理が移行される。
【００５７】
図８は、上述のステップＳ３におけるＭＳＢ側ビットに対する圧縮符号化の一例の処理を示すフローチャートである。ステップＳ２０では、１フレーム分の処理が終了したか否かが判断される。若し、終了したと判断されれば、図６のステップＳ４に処理が移行される。終了していなければ、処理はステップＳ２１に移行される。
【００５８】
ステップＳ２１では、第３のフラグに基づきＭＳＢ側データ用メモリ１６から所定バイト分すなわち１バイト分のビット列を読み込むか否かが判断される。なお、第３のフラグは、例えば値が"１"でビット列を読み込むことを示し、値が"０"でビット列を読み込まないことを示す。第３のフラグの初期値は、"１"とする。第３のフラグの値が"０"であれば、ビット列を読み込まないと判断され、処理はステップＳ２３に移行される。
【００５９】
一方、第３のフラグの値が"１"であれば、ビット列を読み込むと判断され、処理はステップＳ２２に移行する。ステップＳ２２では、ＭＳＢ側データ用メモリ１６から所定バイト分のビット列が読み込まれ、処理がステップＳ２３に移行される。読み込まれたビット列は、例えば図示されないメモリやレジスタに保持される。
【００６０】
ステップＳ２３では、ＭＳＢ側ビットの所定バイト分のビット列に対し、ＭＳＢ側ビット単位でのランレングス処理を行うか否かが判断される。すなわち、このステップＳ２３では、後続する処理で、ＭＳＢ側ビット単位でのランレングス処理を行うか、所定バイト単位でのランレングス処理を行うかが判断される。このステップＳ２３における判断は、図９および図１０で詳細を説明する、ステップＳ２４およびステップＳ２５の処理結果に応じてなされる。
【００６１】
ここでは、便宜上、第４のフラグを定義し、第４のフラグの値が"０"であれば、後続する処理でＭＳＢ側ビット単位でのランレングス処理を行い、第４のフラグの値が"１"であれば、後続する処理で所定バイト単位でのランレングス処理を行うものとする。また、第４のフラグは、初期値を"０"とする。すなわち、初期状態では、後続する処理でＭＳＢ側ビット単位のランレングス処理が行われるようにされる。
【００６２】
ステップＳ２３で、ＭＳＢ側ビット単位でのランレングス処理を行うと判断されれば、処理がステップＳ２４に移行される。ステップＳ２４では、１重目ランレングス処理部１７において、図示されないメモリやレジスタに保持されているＭＳＢ側ビットの所定バイト分のビット列に対して、ＭＳＢ側ビット単位でのランレングス処理が行われる。また、処理に伴い、第１のフラグの値が所定に設定されると共に、第３のフラグの値が"１"に設定される。ステップＳ２４の処理が終了すると、処理はステップＳ２０に戻される。
【００６３】
一方、ステップＳ２３で、ＭＳＢ側ビット単位でのランレングス処理を行わないと判断されれば、処理がステップＳ２５に移行される。ステップＳ２５では、２重目ランレングス処理部１８において、図示されないメモリやレジスタに保持されているＭＳＢ側ビットの所定バイト分のビット列を単位として、ランレングス処理が行われる。また、処理に伴い、第２のフラグの値および第３のフラグの値が所定に設定される。ステップＳ２５の処理が終了すると、処理はステップＳ２０に戻される。
【００６４】
図９は、上述した図８のステップＳ２４におけるＭＳＢ側ビット単位での一例のランレングス処理をより詳細に示すフローチャートである。先ず、最初のステップＳ３０で、所定数のＭＳＢ側ビットからなる所定バイト分のビット列を、ＭＳＢ側ビット単位で比較する。この比較結果に基づき、ステップＳ３１で、当該所定バイト分のビット列がＭＳＢ側ビット単位でランレングス処理可能か否かが判断される。すなわち、当該所定バイト分のビット列が、ＭＳＢ側ビットの所定回数の繰り返しで構成されていれば、ＭＳＢ側ビット単位でのランレングス処理が可能であると判断される。
【００６５】
ステップＳ３１で、ＭＳＢ側ビット単位でのランレングス処理が可能であると判断されれば、処理はステップＳ３２に移行される。ステップＳ３２では、第１のフラグの値が"１"に設定され、次のステップＳ３３で、ＭＳＢ側ビット単位でのランレングス処理が行われる。このランレングス処理の結果、ランレングスのレベルが出力される。出力されたランレングスのレベルは、例えば図示されないメモリやレジスタに保持される。
【００６６】
次のステップＳ３４で、２重目ランレングス処理部１８において行われる所定バイト単位のランレングス処理によるラン数を「０」に設定して初期化すると共に、第３のフラグの値を"１"に設定する。さらに、次のステップＳ３５で、次の処理を所定バイト単位のランレングス処理とするように所定に設定する。例えば、上述した第４のフラグの値を"１"に設定する。ステップＳ３５の処理が終了すると、処理は図８のステップＳ２０に戻される。
【００６７】
一方、上述のステップＳ３１で、ＭＳＢ側ビット単位でのランレングス処理が可能ではないと判断されれば、処理はステップＳ３６に移行される。ステップＳ３６では、第１のフラグの値が"０"に設定され、次のステップＳ３７で、現在読み込まれている所定バイト分のビット列がそのまま出力される。出力されたビット列は、例えば図示されないメモリやレジスタに保持される。
【００６８】
次のステップＳ３８で、第２のフラグの値を"０"に設定すると共に第３のフラグの値を"１"に設定し、さらに、次のステップＳ３９で、次の処理をＭＳＢ側ビット単位のランレングス処理とするように所定に設定する。例えば、上述した第４のフラグの値を"０"に設定する。これは、所定バイト分のビット列に対してＭＳＢ側ビット単位でのランレングス処理ができない場合には、所定バイト単位でのランレングス処理ができる可能性が低いと考えられるからである。ステップＳ３９の処理が終了されると、処理は図８のステップＳ２０に戻される。
【００６９】
図１０は、上述した図８のステップＳ２５におけるＭＳＢ側ビットの所定バイト分のビット列を単位とした一例のランレングス処理をより詳細に示すフローチャートである。先ず、最初のステップＳ４０で、現在読み込まれている所定バイト分のビット列に隣接する所定バイト分のビット列がＭＳＢ側データ用メモリ１６から読み込まれ、現在読み込まれている所定バイト分のビット列と、新たに読み込まれた所定バイト分のビット列とが比較される。
【００７０】
ステップＳ４０での比較結果に基づき、次のステップＳ４１で、所定バイト単位のランレングス処理が可能か否かが判断される。すなわち、読み込まれている所定バイト分のビット列と、新たに読み込まれた所定バイト分のビット列とが一致していれば、バイト単位でのランレングス処理が可能であると判断される。ランレングス処理が可能であると判断されれば、処理はステップＳ４２に移行される。
【００７１】
ステップＳ４２では、所定バイト単位でのランレングス処理が行われる。ランレングス処理は、例えば、現在読み込まれている所定バイト分のビット列（参照ビット列とする）と、新たに読み込まれた所定バイト分のビット列（比較ビット列とする）とが比較され、一致していればラン数が例えば１だけインクリメントされる。
【００７２】
ここで、ランレングス処理は、比較ビット列に参照ビット列と異なるビット列が現れるまで繰り返される。例えば、比較ビット列と参照ビット列とが一致すると、当該比較ビット列の次の所定バイトが新たな比較ビット列としてＭＳＢ側データ用メモリ１６から読み込まれる。この新たな比較ビット列と参照ビット列とが一致するか否かを判断する。一致すれば、ラン数を１だけインクリメントして、当該新たな比較ビット列の次の所定バイトを、より新たな比較ビット列として読み込み、参照ビット列との比較を行う。
【００７３】
または、このステップＳ４２のランレングス処理において、参照ビット列に対して異なる比較ビット列が現れない状態でラン数が限界値に達するまで、ランレングス処理が繰り返され、ラン数がインクリメントされる。ラン数の限界値は、例えば図５を用いて説明したように、ＭＳＢ側の出力データに割り当てられた第２の領域のサイズに基づく。例えば第２の領域に４ビットが割り当てられていれば、値「００００」を１としてラン数の限界値は、「１６」となる。なお、ラン数の限界値は、「１６」に限定されるものではない。
【００７４】
ステップＳ４２でのランレングス処理が終了すると、ステップＳ４３で第３のフラグの値が"１"に設定され、さらにステップＳ４４で、次の処理を所定バイト単位のランレングス処理とするように所定に設定される。例えば、上述の第４のフラグの値が"１"に設定される。ステップＳ４４の処理が終了すると、処理は図８のステップＳ２０に戻される。
【００７５】
一方、上述のステップＳ４１の判断で、ランレングス処理が可能ではない、すなわち、現在読み込まれている所定バイト分のビット列と、新たに読み込まれた所定バイト分のビット列とが一致しないと判断されれば、処理はステップＳ４５に移行される。ステップＳ４５では、２重目ランレングス処理部１８における所定バイト単位のランレングス処理によるラン数が「０」であるか否かが判断される。
【００７６】
若し、ステップＳ４５により当該ラン数が「０」であると判断されれば、処理はステップＳ４６に移行され、第２のフラグの値が"０"に設定される。一方、ステップＳ４５により、当該ラン数が「１」以上であって「０」ではないと判断されれば、処理はステップＳ４７に移行され、第２のフラグの値が"１"に設定される。
【００７７】
ステップＳ４６またはステップＳ４７で第２のフラグの値が所定に設定されると、処理はステップＳ４８に移行され、ランレングス処理の結果が出力される。ここでは、図５を用いて説明したように、ステップＳ４６およびステップＳ４７により設定された第２のフラグの値に応じて、出力が制御される。すなわち、ステップＳ４６で第２のフラグの値が"０"に設定されていれば、データが出力されない。また、ステップＳ４７で第２のフラグの値が"１"に設定されていれば、現在保持されているラン数が出力される。
【００７８】
ステップＳ４８でランレングス処理の結果が出力されると、次のステップＳ４９で、第３のフラグの値が"０"に設定され、さらにステップＳ５０で、次の処理をＭＳＢ側ビット単位のランレングス処理とするように所定に設定される。例えば、上述した第４のフラグの値を"０"に設定する。ステップＳ５０の処理が終了すると、処理は図８のステップＳ２０に戻される。
【００７９】
１−１−１−４．符号化処理の具体的な例
上述の図６〜図１０の処理のうち、ＭＳＢ側ビットの符号化処理について、図１１を参照しながら具体的な例を用いて説明する。ここでは、画素データの量子化ビット数が１０ビットであって画素データが１０ビットのデータ長を持つものとして説明する。すなわち、ＭＳＢ側ビットのデータ長が２ビットとされる。
【００８０】
図１１Ａは、図６のステップＳ１により分離されたＭＳＢ側ビットの例を示す。２ビットからなるＭＳＢ側ビットが画素毎に分離され、画面の左上隅の画素に対応するデータを先頭に、ラインの左端から右端に向けた画素の配列に対応してライン毎に並べられてＭＳＢ側データ用メモリ１６に格納される。この図１１Ａの例では、最初の１６画素までは、ＭＳＢ側ビットの値が全て「００」とされ、１７画素目から２０画素目までが「１０」の繰り返しで、２１画素目から２４画素目までは、「１１」、「０１」、「０１」、「０１」のビット列となっている。
【００８１】
当初、第３のフラグの値は"１"に設定されているので、図８のステップＳ２１から処理がステップＳ２２に移行し、所定バイト分のビット列がＭＳＢ側データ用メモリ１６から読み込まれる。この例では所定バイトが１バイトなので、図１１Ｂにビット列（ａ）で示されるように、４画素分のＭＳＢ側ビット「００００００００」がＭＳＢ側データ用メモリ１６から読み込まれる。
【００８２】
ステップＳ２３では、後続する処理でＭＳＢ側ビット単位でのランレングス処理を行うか、所定バイト単位でのランレングス処理を行うかが例えば第４のフラグに基づき判断される。上述したように、初期状態では、ＭＳＢ側ビット単位でのランレングス処理を行うようにされているので、ステップＳ２４（図９のステップＳ３０）に処理が移行し、ＭＳＢ側データ用メモリ１６から読み込まれた、４画素分のＭＳＢ側ビットによる所定バイト分のビット列（ａ）について、ＭＳＢ側ビット単位で比較がなされる。
【００８３】
すなわち、図１１Ｃに一例が示されるように、ビット列（ａ）におけるＭＳＢ側ビットＡの他のビットが２ビット単位でＭＳＢ側ビットＡとそれぞれ比較され、両者が一致するか否かが判断される。
【００８４】
ビット列（ａ）は、ＭＳＢ側ビットのビット列「００」が４回繰り返されているので、ランレングス処理が可能と判断され（ステップＳ３１）、ステップＳ３２で第１のフラグが"１"に設定される。そして、次のステップＳ３３でビット列（ａ）に対してＭＳＢ側ビット単位でランレングス処理がなされ、繰り返されたＭＳＢ側ビットのビット列「００」がランレングスのレベルとして出力されると共に、第１のフラグが出力される。
【００８５】
このステップＳ３２およびステップＳ３３で、図１１Ｄに示す出力データ１００Ａ（第１のフラグ）および出力データ１０１Ｂ（ランレングスのレベル）が確定される。なお、上述したように、ＭＳＢ側ビット単位のランレングス処理による繰り返し数は、画素データの量子化ビット数に基づき固定的に決まるため、出力する必要が無い。
【００８６】
次に、所定バイト単位でのランレングス処理におけるラン数が「０」に設定され初期化されると共に、第３のフラグの値が"１"に設定され（ステップＳ３４）、さらに、次の処理が所定バイト単位のランレングス処理に決められ（ステップＳ３５）、処理が図８のステップＳ２０に戻される。この時点では、第１のフラグの値が"１"、第３のフラグの値が"１"、ラン数が「０」となっている。
【００８７】
図８のステップＳ２０において、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行される。上述したように図９のステップＳ３４で第３のフラグの値が"１"に設定されているので、処理はステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から、ビット列（ａ）に隣接する次の所定バイト分のビット列（ｂ）「００００００００」が読み込まれる。次のステップＳ２３では、上述したように図９のステップＳ３５で次の処理が所定バイト単位のランレングス処理に決められているため、処理がステップＳ２５（図１０のステップＳ４０）に移行される。
【００８８】
図１０のステップＳ４０で、前回読み込まれたビット列（ａ）と、今回読み込まれたビット列（ｂ）とが比較される。ビット列（ａ）とビット列（ｂ）とが一致するため、ランレングス処理が可能と判断され（ステップＳ４１）、ステップＳ４２で、１バイト単位のランレングス処理が行われ、ラン数がインクリメントされる。先ず、ビット列（ａ）とビット列（ｂ）とが一致するので、ラン数がインクリメントされ、「１」とされる。
【００８９】
ビット列（ａ）とビット列（ｂ）とが一致すると、ビット列（ｂ）に隣接する次のビット列（ｃ）「００００００００」とビット列（ａ）とがさらに較される。この図１１Ｂに示される例では、ビット列（ｃ）とビット列（ａ）とが一致するので、ラン数がさらにインクリメントされ、「２」とされる。ビット列（ａ）とビット列（ｃ）とが一致すると、ビット列（ｃ）に隣接する次のビット列（ｄ）「００００００００」とビット列（ａ）とがさらにまた、比較される。この図１１Ｂに示される例では、ビット列（ｄ）とビット列（ａ）とが一致するので、ラン数がさらにまたインクリメントされ、「３」とされる。
【００９０】
ビット列（ａ）とビット列（ｄ）とが一致すると、ビット列（ｄ）に隣接するビット列（ｅ）「１０１０１０１０」とビット列（ａ）とがさらに比較される。この図１１Ｂに示される例では、ビット列（ｅ）とビット列（ａ）とは一致しないので、ランレングス処理が終了される。ラン数は、保持される。
【００９１】
ランレングス処理が終了されると、次のステップＳ４３で第３のフラグの値が"１"に設定され、さらに次のステップＳ３５で、次の処理を所定バイト単位のランレングス処理に決められる。そして、処理は図８のステップＳ２０に戻される。この時点では、第１のフラグの値が"１"、第３のフラグの値が"１"、ラン数が「３」となっている。
【００９２】
次の図８のステップＳ２０において、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行される。上述したように図９のステップＳ３４で第３のフラグの値が"１"に設定されているので、処理はステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から、前回所定バイト単位でのランレングス処理が終了したビット列（ｄ）に隣接する次の１バイト分のビット列（ｅ）「１０１０１０１０」が読み込まれる。次のステップＳ２３では、上述したように図９のステップＳ３５で次の処理が所定バイト単位のランレングス処理に決められているため、処理がステップＳ２５（図１０のステップＳ４０）に移行される。
【００９３】
図１０のステップＳ４０で、前回読み込まれたビット列（ｄ）と、今回読み込まれたビット列（ｅ）とが比較される。ビット列（ｄ）とビット列（ｅ）とが一致しないので、ランレングス処理が可能ではないと判断され（ステップＳ４１）、処理がステップＳ４５に移行され、ラン数が「０」か否かが判断される。上述のステップＳ４２で、ラン数が「３」となっているので、処理がステップＳ４７に移行されて第２のフラグの値が"１"に設定され、次のステップＳ４８で、ランレングス処理の結果が出力される。ここで出力されるランレングス処理の結果は、ラン数「３（４ビットのバイナリ表記で「００１１」）」と、第２のフラグの値"１"である。すなわち、このステップＳ４８で、図１１Ｄに示す出力データ１０２Ａ（第２のフラグ）および出力データ１０３（ラン数）が確定される。
【００９４】
上述のステップＳ３２とこのステップＳ４８により、上述した図５に示すＭＳＢ側のデータ構造を単位とする処理が完結し、図１１Ｂに示されるビット列（ａ）〜ビット列（ｄ）までの符号化が終了したことになる。この例では、全て値が"０"である３２ビットのビット列が８ビットのビット列「１１００００１１」に圧縮符号化されている。
【００９５】
次のステップＳ４９で、第３のフラグの値が"０"に設定され、さらに次のステップＳ５０で、次の処理がＭＳＢ側ビット単位のランレングス処理に決められる。
【００９６】
処理はステップＳ２０に戻され、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行される。上述のステップＳ４９で第３のフラグの値が"０"に設定されているので、新たなデータを読み込むことなく処理はステップＳ２３に移行される。上述のステップＳ５０で次の処理がＭＳＢ側ビット単位のランレングス処理に決められているので、処理はステップＳ２３からステップＳ２４（図９のステップＳ３０）に移行される。
【００９７】
図９のステップＳ３０では、現在読み込まれている所定バイト分のビット列に対してＭＳＢ側ビット単位で比較がなされる。この時点では、上述のステップＳ２２でビット列（ｅ）「１０１０１０１０」が読み込まれているので、このビット列（ｅ）が処理対象とされる。ビット列（ｅ）において、図１１Ｃに示すＭＳＢ側ビットＢ「１０」に対して比較がなされる。この例ではＭＳＢ側のビット列Ｂ「１０」が４回繰り返されているので、ランレングス処理が可能と判断され（ステップＳ３１）、ステップＳ３２で第１のフラグの値が"１"に設定される。そして、次のステップＳ３３でビット列（ｅ）に対してＭＳＢ側ビット単位でランレングス処理がなされ、繰り返されたＭＳＢ側ビットのビット列「１０」がランレングスのレベルとして出力されると共に、第１のフラグが出力される。
【００９８】
このステップＳ３２およびステップＳ３３で、図１１Ｄに示す出力データ１００Ｂ（第１のフラグ）および出力データ１０１Ｂ（ランレングスのレベル）が確定される。
【００９９】
次に、所定バイト単位でのランレングス処理におけるラン数が「０」に設定され初期化されると共に、第３のフラグの値が"１"に設定され（ステップＳ３４）、さらに、次の処理が所定バイト単位のランレングス処理に決められ（ステップＳ３５）、処理が図８のステップＳ２０に戻される。この時点では、第１のフラグの値が"１"、第２のフラグの値が"１"、第３のフラグの値が"１"、ラン数が「０」となっている。
【０１００】
図８のステップＳ２０において、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行される。上述したように図９のステップＳ３４で第１のフラグの値が"１"に設定されているので、処理はステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から、ビット列（ｅ）に隣接する次の所定バイト分のビット列（ｆ）「１１０１０１０１」が読み込まれる。次のステップＳ２３では、上述したように図９のステップＳ３５で次の処理が所定バイト単位のランレングス処理に決められているため、処理がステップＳ２５（図１０のステップＳ４０）に移行される。
【０１０１】
図１０のステップＳ４０で、前回読み込まれたビット列（ｅ）と、今回読み込まれたビット列（ｆ）とが比較される。ビット列（ｅ）とビット列（ｆ）とが一致しないので、ランレングス処理が可能ではないと判断され（ステップＳ４１）、処理がステップＳ４５に移行され、ラン数が「０」であるか否かが判断される。上述したように、この時点ではラン数が「０」となっているので、処理がステップＳ４６に移行され第２のフラグの値が"０"に設定され、次のステップＳ４８でランレングス処理の結果が出力される。ここで出力されるランレングス処理の結果は、ラン数「０」と、第２のフラグの値"０"である。
【０１０２】
図５を用いて説明したように、第２のフラグの値が"０"の場合には、ラン数が出力されないため、このステップＳ４８で、図１１Ｄに示す出力データ１０２Ｂ（第２のフラグ）が確定される。また、ラン数が出力されないため、図５に示す第２の領域が割り当てられないことが確定される。このステップＳ４８の時点で、上述した図５に示すＭＳＢ側のデータ構造を単位とする処理が完結し、ビット列（ｅ）の符号化処理が終了したことになる。８ビットのビット列「１０１０１０１０」が４ビットのビット列「０１１０」に圧縮符号化されている。
【０１０３】
次のステップＳ４９で、第３のフラグの値が"０"に設定され、さらに次のステップＳ５０で、次の処理がＭＳＢ側ビット単位のランレングス処理に決められる。
【０１０４】
処理は図８のステップＳ２０に戻され、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行される。上述のステップＳ４９で第３のフラグの値が"０"に設定されているので、処理はステップＳ２３に移行される。上述のステップＳ５０で次の処理がＭＳＢ側ビット単位のランレングス処理に決められているので、処理はステップＳ２４（図９のステップＳ３０）に移行される。
【０１０５】
図９のステップＳ３０では、現在読み込まれている所定バイト分のビット列に対してＭＳＢ側ビット単位で比較がなされる。この時点では、上述のステップＳ２２でビット列（ｆ）「１１０１０１０１」が読み込まれているので、このビット列（ｆ）が処理対象とされる。ビット列（ｆ）において、図１１Ｃに示すＭＳＢ側ビットＣ「１１」に対して比較がなされる。ビット列（ｆ）は、ＭＳＢ側ビットＣ「１１」が繰り返されていないため、ランレングス処理が可能ではないと判断され（ステップＳ３１）、ステップＳ３６で第１のフラグの値が"０"に設定され、ステップＳ３７で、ビット列（ｆ）がそのまま出力される。さらにステップＳ３８で、第２のフラグの値が"０"に設定されると共に、第３のフラグの値が"１"に設定される。
【０１０６】
このステップＳ３６〜ステップＳ３８で、図１１Ｄに示す出力データ１０２Ｃ（第２のフラグ）、出力データ１００Ｃ（第１のフラグ）および出力データ１０４（ビット列（ｆ））が確定される。この時点で、上述した図５に示すＭＳＢ側のデータ構造を単位とする処理が完結し、ビット列（ｆ）の符号化処理が終了したことになる。この場合は、ＭＳＢ側ビット単位および所定バイト単位のランレングス処理が共に行われず、ＭＳＢ側ビットの圧縮符号化がなされていないため、８ビットのビット列「１１０１０１０１」に対して第１および第２のフラグが付加され、１０ビットのビット列「００１１０１０１０１」となっている。
【０１０７】
そして、次のステップＳ３９で、所定バイト分のビット列に対してＭＳＢ側ビット単位でのランレングス処理ができないので所定バイト単位でのランレングス処理ができる可能性も低いとして、次の処理がＭＳＢ側ビット単位のランレングス処理に決められる。
【０１０８】
処理は図８のステップＳ２０に戻され、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行され、上述したように図９のステップＳ３８で第３のフラグの値が"１"に設定されているので、処理はステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から、ビット列（ｆ）に隣接する次の所定バイト分のビット列（ｇ）「１０１０１０１０」が読み込まれる。次のステップＳ２３では、上述したように図９のステップＳ３９で次の処理がＭＳＢ側ビット単位のランレングス処理に決められているため、処理がステップＳ２４（図９のステップＳ３０）に移行される。
【０１０９】
図９のステップＳ３０では、現在読み込まれている所定バイト分のビット列に対してＭＳＢ側ビット単位で比較がなされる。この時点では、上述のステップＳ２２でビット列（ｇ）「１０１０１０１０」が読み込まれているので、このビット列（ｇ）が処理対象とされる。ビット列（ｇ）において、先頭のＭＳＢ側ビットのビット列「１０」に対して比較がなされる。この例では、ＭＳＢ側ビットのビット列「１０」が４回繰り返されているので、ランレングス処理が可能と判断され（ステップＳ３１）、ステップＳ３２で第１のフラグの値が"１"に設定される。そして、次のステップＳ３３デビット列（ｇ）に対してＭＳＢ側ビット単位でランレングス処理がなされ、繰り返されたＭＳＢ側ビットのビット列「１０」がランレングスのレベルとして出力されると共に、第１のフラグが出力される。
【０１１０】
次に、所定バイト単位でのランレングス処理におけるラン数が「０」に設定され初期化されると共に、第１のフラグの値が１に設定され（ステップＳ３４）、さらに、次の処置が所定バイト単位のランレングス処理に決められ（ステップＳ３５）、処理が図８のステップＳ２０に戻される。
【０１１１】
以上のような処理を、１フレーム分の全ての画素データに対して順次、行う。
【０１１２】
ＭＳＢ側ビットに対するランレングス処理を、所定バイト単位とＭＳＢ側ビット単位とで２重に行うため、高い圧縮率が期待できる。
【０１１３】
また、隣接ライン上の画素や、処理が終了した画素を参照せずに、ライン上で一方向的に圧縮符号化処理を行うため、高速な処理が可能である。
【０１１４】
さらに、ＭＳＢ側ビット単位でランレングス処理を行う際には、所定数のＭＳＢ側ビットにおいて、ＭＳＢ側ビットのビット列が全て繰り返している場合のみ、ランレングス処理を行う。さらにこのとき、画素データの量子化ビット数の情報に基づき、ラン数を出力しないようにしているため、圧縮率をさらに高めることができる。さらにまた、ＭＳＢ側ビットのビット列が所定数のＭＳＢ側ビットにおいて全て繰り返していないとされた場合に、当該所定数のＭＳＢ側ビットをそのまま出力するようにしているため、高速に処理することができる。
【０１１５】
１−１−１−５．出力形式について
図１２は、上述したＬＳＢ側ビットおよびＭＳＢ側ビットに対する圧縮符号化処理により得られた出力データの、一例の出力形式を示す。なお、この図１２の例は、上述した図１１Ｄに示したデータ出力に対応している。上述したように、この発明の実施の第１の形態では、圧縮符号化されたＬＳＢ側ビットとＭＳＢ側ビットとを、インターリーブして出力する。インターリーブの単位は、所定バイト単位のＭＳＢ側ビットが復号可能なデータ構造に基づき決めることができる。なお、復号化処理については、後述する。
【０１１６】
例えば、ＭＳＢ側ビットの上述した図５の構造を単位として、ＭＳＢ側ビットの圧縮符号化データと、ＬＳＢ側ビットの圧縮符号化データとが交互に配置される。ここで、ＬＳＢ側ビットは、画素単位で圧縮符号化されているのに対し、ＭＳＢ側ビットは、ＭＳＢ側ビット単位のランレングス処理により画素間での圧縮符号化もなされている。そのため、ＭＳＢ側ビットの圧縮符号化データに含まれるＭＳＢ側ビットに対応するＬＳＢ側ビットの圧縮符号化データが、ＭＳＢ側ビットの圧縮符号化データに続けて配置される。
【０１１７】
図１２の例では、先頭側に配置されるＭＳＢ側圧縮符号化データ１１０は、図１１Ｄの出力データ１００Ａ、１０１Ａ、１０２Ａおよび１０３に対応し、図１１Ａおよび図１１Ｂをさらに参照し、１６画素分のＭＳＢ側ビットが圧縮符号化されたものである。したがって、このＭＳＢ側圧縮符号化データ１１０に続けて、対応する１６画素分のＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データ１１１が配置される。
【０１１８】
また、次のＭＳＢ側圧縮符号化データ１１２は、図１１Ｄの出力データ１００Ｂ、１０１Ｂおよび１０２Ｂに対応し、図１１Ａおよび図１１Ｂをさらに参照し、４画素分のＭＳＢ側ビットが圧縮符号化されたものである。したがって、このＭＳＢ側圧縮符号化データ１１２に続けて、対応する４画素分のＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データ１１３が配置される。
【０１１９】
同様に、さらに次のＭＳＢ側圧縮符号化データ１１４は、図１１Ｄの出力データ１００Ｃおよび１０３、ならびに、値が"０"となっている第２のフラグに対応し、図１１Ａおよび図１１Ｂをさらに参照し、４画素分のＭＳＢ側ビットに対応している。したがって、このＭＳＢ側圧縮符号化データ１１４に続けて、対応する４画素分のＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データ１１５が配置される。
【０１２０】
このように、この実施の第１の形態では、圧縮符号化されたデータを、ＭＳＢ側ビットとＬＳＢ側ビットとでインターリーブして出力する。出力データは、例えばファイルに格納される。これに限らず、出力データをストリームデータとして所定の伝送路に対して出力してもよい。ＭＳＢ側ビットとＬＳＢ側ビットとが複数画素単位でインターリーブされているため、受信側では、全てのデータの受信が完了しなくても、復号化を開始できる利点がある。
【０１２１】
１−１−２．実施の第１の形態の第１の変形例について（第１の異なる出力形式）
次に、この発明の実施の第１の形態の第１の変形例について説明する。この実施の第１の形態の第１の形態は、上述した実施の第１の形態に対して、出力データの形式を異ならせたもので、それに伴い、符号化装置も部分的に変更されている。すなわち、上述の実施の第１の形態では、ＭＳＢ側ビットとＬＳＢ側ビットとをインターリーブして出力していた。これに対して、この実施の第１の形態の第１の変形例では、出力データを、１の出力系統に対してＬＳＢ側ビットとＭＳＢ側ビットとに分離して出力する。
【０１２２】
図１３は、この実施の第１の形態の第１の変形例による一例の符号化装置１Ｂの機能を示す一例の機能ブロック図である。なお、図１３において、上述した図１の構成と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１２３】
図１３の構成で、ＤＰＣＭ部１３およびハフマン符号化部１４におけるＬＳＢ側ビットの圧縮符号化処理と、１重目ランレングス処理部１７および２重目ランレングス処理部１８におけるＭＳＢ側ビットの圧縮符号化処理は、上述した実施の第１の形態における処理と同一である。
【０１２４】
図１３に示されるように、この実施の第１の形態の第１の変形例による符号化装置１Ｂは、上述した図１に示す、実施の第１の形態による符号化装置１Ａに対して、ＬＳＢ側ビットの圧縮符号化を行う部分に圧縮長計算部２０が追加された構成となっている。圧縮長計算部２０は、ハフマン符号化部１３で可変長符号により圧縮符号化されて供給される符号の符号長を、符号化の区切りに応じて累積する。累積されたＬＳＢ側ビットの圧縮符号データ長情報は、出力データ用メモリ１５に記憶される。出力データ用メモリ１５から読み出された出力データは、例えば出力ファイル２１に格納される。
【０１２５】
例えば出力データをファイルに格納する場合、１ファイルに格納する分の画素データに対する圧縮符号化が符号化の区切りとされ、１ファイルに格納する分の画素データについて、ＬＳＢ側ビットを圧縮符号化した符号化データの符号量を累積する。これに限らず、例えば１フレーム分の画素データに対する圧縮符号化を符号化の区切りとしてもよいし、１ライン分や複数フレーム分の画素データに対する圧縮符号化を符号化の区切りとすることもできる。また、画面を所定に分割したそれぞれを、符号化の区切りとすることもできる。
【０１２６】
図１４は、この実施の第１の形態の第１の変形例による、ＭＳＢ側ビットおよびＬＳＢ側ビットが圧縮符号化されて出力される際の、一例の出力形式を示す。先頭に圧縮符号データ長情報が配置される。圧縮符号データ長情報は、例えばデータ長が所定バイトの固定長とされる。この圧縮符号データ長情報の後ろに、ＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データが配置される。このとき、符号化の区切りに応じた画素分のＬＳＢ側圧縮符号化データが全て、纏めて配置される。ＬＳＢ側圧縮符号化データの後ろに、符号化の区切りに応じた画素分全ての、ＭＳＢ側ビットが圧縮符号化されたＭＳＢ側圧縮符号化データが纏めて配置される。
【０１２７】
先頭に配置される、圧縮符号データ長情報を固定長のデータとするとき、当該圧縮符号データ長情報の後端から圧縮符号データ長情報分、後方に移動した位置がＭＳＢ側圧縮符号化データの先頭位置とされる。
【０１２８】
なお、ここでは、ＬＳＢ側圧縮符号化データを出力データの前側に配置し、ＭＳＢ側圧縮符号化データを後側に配置しているが、これはこの例に限定されない。すなわち、ＭＳＢ側圧縮符号化データを前側に配置し、ＬＳＢ側圧縮符号化データを後側に配置することも考えられる。この場合、例えば、圧縮長計算部２０を２重目ランレングス処理部１８の後ろに配置してＭＳＢ側圧縮符号化データの符号長を累積し、累積されたＭＳＢ側ビットの圧縮符号データ長情報を出力データの先頭に配置し、次にＭＳＢ側圧縮符号化データを配置し、次にＬＳＢ側圧縮符号化データを配置する。
【０１２９】
１−１−３．実施の第１の形態の第２の変形例について（第２の異なる出力形式）
次に、この発明の実施の第１の形態の第２の変形例について説明する。この実施の第１の形態の第１の形態は、上述した実施の第１の形態の第１の変形例において１系統で出力していたＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとを、それぞれ独立的に出力する。
【０１３０】
図１５は、この実施の第１の形態の第２の変形例による一例の符号化装置１Ｃの機能を示す一例の機能ブロック図である。なお、図１５において、上述した図１の構成と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０１３１】
図１５の構成で、ＤＰＣＭ部１３およびハフマン符号化部１４におけるＬＳＢ側ビットの圧縮符号化処理と、１重目ランレングス処理部１７および２重目ランレングス処理部１８におけるＭＳＢ側ビットの圧縮符号化処理は、上述した実施の第１の形態における処理と同一である。
【０１３２】
図１５に示されるように、この実施の第１の形態の第２の変形例による符号化装置１Ｃは、ＬＳＢ側およびＭＳＢ側に、出力データ用メモリ１５Ａおよび１５Ｂをそれぞれ有し、ＬＳＢ側ビットの圧縮符号化出力であるハフマン符号化部１４の出力を出力データ用メモリ１５Ａに格納し、ＭＳＢ側ビットの圧縮符号化出力である２重目ランレングス処理部１８の出力を出力データ用メモリ１５Ｂに格納する。
【０１３３】
ＬＳＢ側ビットの圧縮符号化出力およびＭＳＢ側ビットの圧縮符号化出力は、出力データ用メモリ１５Ａおよび１５Ｂからそれぞれ独立的に読み出され、図１６に一例が示されるように、出力データ２２Ａおよび出力データ２２Ｂの２系統のデータとして出力される。出力データ２２Ａおよび出力データ２２Ｂは、例えばそれぞれ異なるファイルに格納される。
【０１３４】
１−１−４．実施の第１の形態の第３の変形例について（異なる符号化単位）
次に、この発明の実施の第１の形態の第３の変形例について説明する。上述した実施の第１の形態では、所定バイトを１バイトとして、ＭＳＢ側ビットのランレングス処理を１バイトを単位として行っていた。これに対して、この実施の第１の形態の第３の変形例は、所定バイトを２バイトとして、ＭＳＢ側ビットのランレングス処理を、２バイトを単位として行う。すなわち、ＭＳＢ側ビット単位のランレングス処理を、２バイト分のＭＳＢ側ビットからなるビット列について行うと共に、所定バイト単位のランレングス処理を、２バイト単位で行う。
【０１３５】
なお、この実施の第１の形態の第３の変形例では、上述した実施の第１の形態による符号化装置１Ａ（図１参照）をそのまま適用できると共に、図６〜図１０のフローチャートを用いて説明した符号化処理も、基本的に、そのまま適用できる。そのため、これらの詳細な説明については、繁雑さを避けるために省略する。また、ＬＳＢ側ビットに対する圧縮符号化処理は、実施の第１の形態で説明したのと同様にして、ＤＰＣＭおよびハフマン符号化により行うので、説明を省略する。さらに、以下において、所定バイトは２バイトである。
【０１３６】
図１７は、この実施の第１の形態の第３の変形例による、データ分離部１１および１重目ランレングス処理部１７における処理を、画素データが９ビット、１０ビット、１１ビットおよび１２ビットの量子化ビット数である場合について、概略的に示す。上述した実施の第１の形態と同様に、データ分離部１１では、画素毎に、ＬＳＢ側の８ビットと、当該ＬＳＢ側の８ビットを除いたＭＳＢ側のビットとを分離し、ＭＳＢ側ビットとＬＳＢ側ビットとを形成する。１重目ランレングス処理部１７では、ＭＳＢ側データ用メモリ１６に格納されたＭＳＢ側ビットの所定バイト分（この例では２バイト分）からなるビット列に対して、ＭＳＢ側ビットのビット数単位でビット列を比較してランレングス処理を行う。
【０１３７】
すなわち、１画素のデータが９ビットの場合には、隣接する１６画素分のＭＳＢ側ビットからなる所定バイトのデータ列が１重目ランレングス処理部１７の処理対象とされる。画素データの量子化ビット数が１０ビットの場合には、隣接する８画素分のＭＳＢ側ビットからなる所定バイトのデータ列が１重目ランレングス処理部１７の処理対象とされる。また、画素データの量子化ビット数が１１ビットおよび１２ビットの場合には、隣接する４画素分のＭＳＢ側ビットからなる所定バイトのデータ列が処理対象とされる。
【０１３８】
なお、画素データの量子化ビット数が１１ビットの場合のように、ＭＳＢ側ビットのビット数の整数倍が所定バイトにならない場合は、所定のスタッフィングビットが用いられる。
【０１３９】
画素データの量子化ビット数が１０ビットであって１画素が１０ビットのデータ長を持つ場合を例にとると、ＭＳＢ側ビットが２ビットであって、隣接する８画素分のＭＳＢ側ビットからなる所定バイトのビット列に対して、ＭＳＢ側ビットに対応して２ビット単位で比較がなされる。比較の結果、当該所定バイトのビット列がＭＳＢ側ビット単位の繰り返しから成っていると判断されれば、繰り返されたＭＳＢ側ビットのビット列がランレングスのレベルとして出力される。
【０１４０】
画素データの量子化ビット数が９ビットであって１画素が９ビットのデータ長を持つ場合も同様にして、隣接する１６画素分のＭＳＢ側ビットからなる所定バイトのビット列に対して、ＭＳＢ側ビットに対応して１ビット単位で比較がなされる。また、画素データの量子化ビット数が１２ビットであって１画素が１２ビットのデータ長を持つ場合、隣接する４画素分のＭＳＢ側ビットからなる所定バイトのデータ列に対して、ＭＳＢ側ビットに対応して４ビット単位で比較がなされる。
【０１４１】
画素データの量子化ビット数が１１ビットであって１画素が１１ビットのデータ長を持つ場合は、ＭＳＢ側ビットのデータ長が３ビットであるので、所定バイトに対して５個のＭＳＢ側ビットを配置することができる。３ビットのＭＳＢ側ビットにそれぞれ１ビットのスタッフィングビットを付加する場合は、隣接する４画素分の、スタッフィングビットを含むＭＳＢ側ビットからなる１６ビットのビット列に対して、ＭＳＢ側ビットに対応して４ビット乃至３ビット単位で比較がなされる。一方、３ビットのＭＳＢ側ビットを５個、所定バイト内に配置する場合は、隣接する５画素分の、３ビットのＭＳＢ側ビットからなる１５ビットのビット列に対して、ＭＳＢ側ビットに対応して３ビット単位で比較がなされる。
【０１４２】
１重目ランレングス処理部１７では、上述の実施の第１の形態と同様にして、隣接する所定数のＭＳＢ側ビットが、当該所定バイトすなわち所定バイト内で同一ビットの繰り返しからなるか否かを示す第１のフラグが設定される。
【０１４３】
２重目ランレングス処理部１８では、所定バイト単位すなわち２バイト単位でランレングス処理がなされる。より具体的には、ＭＳＢ側データ用メモリ１６に格納されたデータに対して、所定バイト分のビット列を単位として、隣接するビット列が同一ビット列の繰り返しであるか否かがビット列毎に順次、判断され、繰り返しの回数が計数される。この繰り返し回数の計数値が、所定バイト単位のラン数として２重目ランレングス処理部１８から出力される。隣接する１６ビット列が同一ビット列の繰り返しではない場合には、所定バイト単位のラン数が出力されない。
【０１４４】
また、２重目ランレングス処理部１８では、所定数のＭＳＢ側ビットからなる所定バイトすなわち２バイト分のビット列が繰り返されるか否かを示す第２のフラグが設定される。
【０１４５】
図１８は、この実施の第１の形態の第３の変形例における、１重目ランレングス処理部１７および２重目ランレングス処理部１８の出力に基づく、ＭＳＢ側の出力データの一例の構成を示す。この出力データの構成は、基本的には、上述した実施の第１の形態で図５を用いて説明した構成と、同様である。すなわち、出力データは、それぞれ１ビットからなる第１のフラグおよび第２のフラグが配置される、先頭側の固定長の部分と、１重目ランレングス処理部１７の処理結果に基づくデータが配置される第１の領域と、２重目ランレングス処理部１８の処理結果に基づくデータが配置される第２の領域とが配置される可変長の部分とからなる。
【０１４６】
可変長の部分における第１の領域は、第１のフラグの値に応じて格納されるデータが決められる。すなわち、第１のフラグが、ＭＳＢ側ビットのビット列を単位としたランレングス処理を行ったことを示していれば、第１の領域には、データ長がＭＳＢ側ビットのビット数に応じて割り当てられ、ランレングスのレベルが格納される。一方、第１のフラグが、ＭＳＢ側ビットのビット列を単位としたランレングス処理を行っていないことを示していれば、第１の領域には、所定バイトのサイズが割り当てられる。
【０１４７】
第２の領域は、２重目ランレングス処理部１８の処理結果に基づく所定バイト単位のラン数が配置される領域で、第２のフラグの値に応じて第２の領域を割り当てるか否かが決められる。すなわち、第２のフラグが、所定バイト分のビット列が繰り返されていることを示している場合、第２の領域に対して所定ビット数のサイズが割り当てられ、２重目ランレングス処理部１８によるランレングス処理結果である繰り返し回数（ラン数）が格納される。一方、第２のフラグが、所定バイト分のビット列が繰り返されていないことを示していれば、第２の領域を割り当てない。
【０１４８】
図１９は、この実施の第１の形態の第３の変形例による、所定バイトを２バイトとし、２バイトを単位とした場合の、ＭＳＢ側ビットの圧縮符号化処理を概略的に示す。ここでは、画素データの量子化ビット数が１０ビットであって１画素が１０ビットのデータ長を持つものとする。図１９Ａは、データ分離部１１で分離されたＭＳＢ側ビットの例を示す。２ビットからなるＭＳＢ側ビットが画素毎に分離され、画面の左上隅の画素に対応するデータを先頭に、ラインの左端から右端に向けた画素の配列に対応してライン毎に並べられてＭＳＢ側データ用メモリ１６に格納される。このＭＳＢ側ビットの８画素分からなる所定バイトすなわち２バイトのビット列を単位として、ランレングス処理が行われる。
【０１４９】
例えば、図１９Ｂに例示される所定バイトのビット列（Ａ）「００００００００００００００００」は、先頭のＭＳＢ側ビットのビット列「００」が８回繰り返されてなると共に、隣接する所定バイトのビット列（Ｂ）「００００００００００００００００」と一致する。このビット列（Ａ）において、先頭のＭＳＢ側ビットＤのビット列「００」について、ＭＳＢ側ビット単位でランレングス処理が行われる。また、ビット列（Ａ）に隣接する所定バイトのビット列（Ｂ）が当該ビット列（Ａ）と比較されて、所定バイト単位でランレングス処理が行われる（図１９Ｃ参照）。これらの、ＭＳＢ側ビット単位のランレングス処理および所定バイト単位のランレングス処理の結果、第１および第２のフラグが設定されると共に、この例では、ＭＳＢ側ビット単位のランレングス処理におけるランレングスのレベルと、所定バイト単位のランレングス処理におけるラン数とが出力される（図１９Ｄ参照）。
【０１５０】
また、図１９Ｂに例示される所定バイトのビット列（Ｃ）「１０１０１０１０１１０１０１０１」については、先頭のＭＳＢ側ビットＥのビット列「１０」の繰り返しとなっていないので、ＭＳＢ側ビット単位のランレングス処理が行われず、それに伴い、隣接する所定バイトのビット列との所定バイト単位の比較もなされない（図９のフローチャートのステップＳ３０、ステップＳ３１、ステップＳ３６〜ステップＳ３９など参照）。その結果、第１および第２のフラグが設定されると共に、この所定バイトのビット列（Ｃ）がそのまま出力される（図１９Ｄ参照）。
【０１５１】
この実施の第１の形態の第３の変形例によれば、ＭＳＢ側ビットのランレングス処理を２バイトのビット列について行うため、上述した実施の第１の形態によるＭＳＢ側ビットのランレングス処理を１バイトのビット列について行う例に対して、画素データのＭＳＢ側ビットがより高い連続性を有する場合に、用いて好適である。例えばアニメーションなど比較的平坦な画像に対してこの実施の第１の形態の第３の変形例による圧縮符号化方式を適用すると、高圧縮率と高速な符号化が期待できる。
【０１５２】
また、上述の実施の第１の形態などによる、ＭＳＢ側ビットのランレングス処理を１バイトのビット列について行う例は、画素データの量子化ビット数が８ビットを超え１２ビット以下の場合に、高圧縮率が期待できる。これは、画素データの量子化ビット数が１３ビット以上１６ビット未満の場合には、ＭＳＢ側ビット単位でのランレングス処理によるランのレベルが５ビット以上となってしまい、所定バイト（１バイト）内にＭＳＢ側ビットが１個しか入らず、所定バイト内におけるＭＳＢ側ビット単位でのランレングス処理が成り立たなくなってしまうからである。
【０１５３】
これに対し、この実施の第１の形態の第３の変形例では、ＭＳＢ側ビットのランレングス処理を２バイトのビット列について行うため、画素データの量子化ビット数が１３ビット以上、１６ビット未満の場合でも、高圧縮率が期待できる。これは、画素データの量子化ビット数が１３ビット以上１６ビット未満でも、所定バイト（２バイト）内に少なくとも２個のＭＳＢ側ビットが入ることになるので、ＭＳＢ側ビット単位でのランレングス処理を効率的に行うことができるからである。すなわち、この実施の第１の形態の第３の変形例は、例えば画素データの量子化ビット数が１３ビット、１４ビット、１５ビットといった、画素の階調に関してより高解像度の画像データに対する圧縮符号化処理に用いて好適である。
【０１５４】
なお、この実施の第１の形態の第３の変形例にも、図１２を用いて説明した、実施の第１の形態による、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとをインターリーブした出力形態や、図１３および図１４を用いて説明した、実施の第１の形態の第１の変形例による、１の出力系統に対してＬＳＢ側ビットとＭＳＢ側ビットに分離して出力する出力形態、さらに、図１５および図１６を用いて説明した、実施の第１の形態の第２の変形例による、ＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとをそれぞれ独立的に出力する出力形態の何れをも適用することが可能である。
【０１５５】
また、この実施の第１の形態の第３の変形例では、ＭＳＢ側ビットのランレングス処理を２バイトのビット列について行っているが、これはこの例に限らず、ＭＳＢ側ビットのランレングス処理を３バイト若しくはそれ以上のデータ長のビット列について行ってもよい。
【０１５６】
１−２．実施の第１の形態による復号化処理について
１−２−１−１．復号化装置について
次に、上述した実施の第１の形態による、圧縮符号化されたＬＳＢ側ビットとＭＳＢ側ビットとをインターリーブして出力する例に対応した一例の復号化処理について説明する。図２０は、この実施の第１の形態による復号化を行う復号化装置２Ａの機能を示す一例の機能ブロック図である。
【０１５７】
詳細は後述するが、図１に示す復号化装置２Ａや、後述する復号化装置２Ｂ、復号化装置２Ｃは、実際には、図示されないＣＰＵにより、所定のプログラムに従い全体の動作が制御される。図２０に示される各部は、図示されないメモリと、ＣＰＵ上で動作されるプログラムで実現されるようにしてもよいし、各部がそれぞれ独立したハードウェアから成りこれらのハードウェアの動作をＣＰＵにより制御するようにしてもよい。
【０１５８】
上述した符号化装置１Ａで圧縮符号化され、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとが所定にインターリーブされた圧縮符号化データが、入力メモリ３０に格納される。なお、符号化装置１Ａで圧縮符号化された画素データの元の量子化ビット数は、予め復号化装置２Ａに対して設定されるものとする。また、以下の記述で、所定バイトは１バイトである。入力メモリ３０からのデータの読み出しは、メモリ制御部３１により制御される。
【０１５９】
先ず、ＭＳＢ側圧縮符号化データの復号化処理について説明する。１重目復号化部３２は、ＭＳＢ側ビット単位のランレングス処理に対するデコードを行う。また、２重目復号化部３３は、所定バイトすなわち１バイト単位のランレングス処理に対するデコードを行う。１重目復号化部３２および２重目復号化部３３は、メモリ制御部３１に対して読み出し要求を送信し、第１のフラグおよび第２のフラグをそれぞれ読み込む。
【０１６０】
１重目復号化部３２は、読み込んだ第１のフラグの値に基づき、メモリ制御部３１に対してＭＳＢ側ビットまたは次の所定バイトの読み出しを要求する。ＭＳＢ側ビットの読み出しを要求した場合は、要求に応じて読み込まれたＭＳＢ側ビットを、元の画素データの量子化ビット数に応じた回数で繰り返して出力する。次の所定バイトの読み出しを要求した場合は、要求に応じて読み込まれた所定バイトのデータをそのまま出力する。出力されたデータは、２重目復号化部３３に供給される。
【０１６１】
２重目復号化部３３は、読み込んだ第２のフラグに基づき、メモリ制御部３１に対して所定バイト単位のランレングス処理のラン数の読み出しを要求するか、または、メモリ制御部３１に対するデータの読み出しを要求しない。所定バイト単位のランレングス処理のラン数の読み出しを要求した場合には、１重目復号化部３２から供給された所定バイト分のデータをラン数分、繰り返して出力する。一方、メモリ制御部３１に対してデータの読み出しを要求しない場合は、１重目復号化部３２から供給された所定バイト分のデータをそのまま出力する。
【０１６２】
２重目復号化部３３の出力は、ベースバンドのＭＳＢ側ビットである。このベースバンドのＭＳＢ側ビットは、ＭＳＢ側出力メモリ３４に所定に格納される。
【０１６３】
また、２重目復号化部３３は、デコードしたサンプル数（画素データ数）を計数する。計数されたデコード済みサンプル数は、ハフマン復号化部３５およびデータ統合部３８に供給される。
【０１６４】
次に、ＬＳＢ側圧縮符号化データに対する復号化処理について説明する。ハフマン復号化部３５は、２重目復号化部３３から供給されたデコード済みサンプル数に応じた数のサンプル数に対応するＬＳＢ側圧縮符号化データの読み出しを、メモリ制御部３１に対して要求する。この要求に応じて、メモリ制御部３１からハフマン復号化部３５に対して、ＬＳＢ側圧縮符号化データが読み込まれる。
【０１６５】
ハフマン復号化部３５は、符号化装置１Ａのハフマンテーブルと対応する所定のハフマンテーブルを有し、読み込まれたＬＳＢ側圧縮符号化データのハフマン符号をを当該ハフマンテーブルを参照しながら復号化する。復号化されたデータは、画素毎に８ビットのデータ長を固定的に有する。ハフマン復号化部３５の出力は、ＤＰＣＭ復号化部３６に供給される。ＤＰＣＭ復号化部３６は、供給された８ビットのデータと直前に処理した８ビットのデータとを加算して、ＤＰＣＭ符号の復号化を行う。
【０１６６】
ＤＰＣＭ復号化部３６の出力は、バースバンドのＬＳＢ側ビットである。このベースバンドのＬＳＢ側ビットは、ＬＳＢ側出力メモリ３７に格納される。
【０１６７】
データ統合部３８は、２重目復号化部３３から供給されたデコード済みサンプル数に基づき、ＭＳＢ側出力メモリ３４およびＬＳＢ側出力メモリ３７からベースバンドのＭＳＢ側ビットおよびＬＳＢ側ビットをそれぞれ読み出し、１画素の画素データを構成するようにデータの統合を行う。例えば、データ統合部３８は、２重目復号化部３３から供給されたデコード済みサンプル数分のＭＳＢ側ビットおよびＬＳＢ側ビットが、ＭＳＢ側出力メモリ３４およびＬＳＢ側出力メモリ３７にそれぞれ溜め込まれると、互いに対応するＭＳＢ側ビットとＬＳＢ側ビットとを接続して１画素のデータを生成する。この画素データが出力される。
【０１６８】
１−２−１−２．復号化処理について
図２１〜図２３は、この実施の第１の形態に対応する復号化装置２Ａにおける一例の復号化処理を示すフローチャートである。なお、図２１〜図２３の各フローチャートにおける各処理は、例えば図示されないＣＰＵにより所定のプログラムに基づき制御することができる。これに限らず、図２０に例示される復号化装置２Ａを構成する各部が互いに連携して適宜、実行するようにもできる。
【０１６９】
図２１は、実施の第１の形態による復号化方法の全体の流れを概略的に示すフローチャートである。なお、ここでは、符号化装置１Ａで１フレーム分の画素データに対する圧縮符号化が行われ、この１フレーム分の圧縮符号化データに対する復号化処理を行うものとして説明する。
【０１７０】
先ず、ステップＳ６０で、符号化装置１Ａで圧縮符号化される前の、ベースバンドの画像データにおける画素データのビット数が設定され、次のステップＳ６１で、符号化装置１Ａで圧縮符号化された圧縮符号化データが格納されるファイルが読み込まれる。ファイルから読み込まれた圧縮符号化データは、入力メモリ３０に格納される。なお、圧縮符号化データは、ファイルに格納されて供給されるのに限らず、例えばストリームデータとして供給され、入力メモリ３０に格納されるようにしてもよい。
【０１７１】
次のステップＳ６２で、１重目復号化部３２および２重目復号化部３３において、ＭＳＢ側圧縮符号化データに対する復号化処理が行われ、復号化されたベースバンドのＭＳＢ側ビットがＭＳＢ側出力メモリ３４に格納される。また、２重目復号化部３３からデコード済みサンプル数が出力され、ハフマン復号化部３５およびデータ統合部３８に供給される。
【０１７２】
次のステップＳ６３で、ＬＳＢ側ビットとＭＳＢ側ビットとの統合処理がデコード済みサンプル数分、行われたか否かが判断される。若し、行われたと判断されれば、処理はステップＳ６６に移行され、１フレーム分のデータについて処理が終了したか否かが判断される。若し、１フレーム分のデータについて処理が終了したと判断されれば、一連の復号化処理が終了される。一方、１フレーム分のデータについての処理が未だ終了していないと判断されれば、処理はステップＳ６２に戻される。
【０１７３】
上述のステップＳ６３で、デコード済みサンプル数分の統合処理が未だ行われていないと判断されれば、処理はステップＳ６４に移行される。ステップＳ６４では、ハフマン復号化部３５およびＤＰＣＭ復号化部３６において、ＬＳＢ側圧縮符号化データに対する復号化処理が行われ、復号化されたベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納される。
【０１７４】
１画素分のＬＳＢ側ビットが復号化されたら、処理はステップＳ６５に移行される。ステップＳ６５では、データ統合部３８において、上述のステップＳ６２で復号化されたＭＳＢ側ビットの１画素分と、当該ＭＳＢ側ビットに対応する、ステップＳ６４で復号化された１画素分のＬＳＢ側ビットとが統合され、１画素分の画素データが復元される。１画素分の画素データが統合されたら、処理はステップＳ６３に戻される。
【０１７５】
図２２は、上述した図２１のフローチャートにおけるステップＳ６２の、ＭＳＢ側圧縮符号化データの一例の号化処理をより詳細に示すフローチャートである。図５を用いて説明したＭＳＢ側の出力データのデータ構造を参照し、最初ステップＳ８０で、先頭の１ビットが読み込まれて２重目復号化部３３に第２のフラグが取得され、ステップＳ８１で、次の１ビットが読み込まれて１重目復号化部３２に第１のフラグが取得される。
【０１７６】
次のステップＳ８２で、１重目復号化部３２において、取得された第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われているか否かが判断される。若し、第１のフラグの値が"１"であり、ＭＳＢ側ビット単位でのランレングス処理が行われてると判断されれば、処理はステップＳ８３に移行され、１重目復号化部３２により第１のフラグの次の２ビット、すなわちランレングスのレベルが読み込まれる。そして、所定バイトになるまで、読み込まれた２ビットの値が繰り返し出力される。
【０１７７】
一方、第１のフラグの値が"０"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていないと判断されれば、処理はステップＳ８８に移行され、第１のフラグに続く所定バイトすなわち１バイト（＝８ビット）が読み込まれ、出力される。そして、処理はステップＳ８９に移行される。
【０１７８】
次のステップＳ８４で、２重目復号化部３３において、取得された第２のフラグの値に基づき所定バイト単位でのランレングス処理が行われているか否かが判断される。若し、第２のフラグの値が"１"であり、所定バイト単位でのランレングス処理が行われていると判断されれば、処理はステップＳ８５に移行され、第１のフラグに続く４ビットが読み込まれ、所定バイト単位でのランレングス処理によるラン数が取得される。
【０１７９】
一方、ステップＳ８４で、所定バイト単位でのランレングス処理が行われていないと判断されれば、処理はステップＳ８９に移行される。ステップＳ８９では、デコード済みサンプル数が取得される。
【０１８０】
次のステップＳ８６で、２重目復号化部３３は、上述したステップＳ８３で１重目復号化部３２から出力された所定バイト分のデータを、ステップＳ８５で取得されたラン数分、繰り返して出力する。そして、ステップＳ８７で、デコード済みのサンプル数が取得される。
【０１８１】
図２３は、上述のステップＳ８７およびステップＳ８９におけるデコード済みサンプル数の取得を行うための一例の処理を概念的に示すフローチャートである。すなわち、この図２３のフローチャートに示されるように、ＭＳＢ側ビット単位でのランレングス処理に対する復号化がなされ（ステップＳ１３０）、画素データの量子化ビット数に基づきＭＳＢ側ビットの繰り返し数が分かる。このＭＳＢ側ビットの繰り返し数がデコード済みのサンプル数Ｎとされる（ステップＳ１３１）。
【０１８２】
例えば、画素データの量子化ビット数が１０ビットで、１バイトを単位としてランレングス処理を行う場合、ＭＳＢ側ビット単位でランレングス処理されていれば、このＭＳＢ側ビット単位のランレングス処理の復号化によりデコードされたデコード済みサンプル数Ｎは、４個となる。
【０１８３】
所定バイト単位でのランレングス処理が行われていなければ（ステップＳ１３２）、このデコード済みサンプル数Ｎが出力される。一方、所定バイト単位でのランレングス処理が行われていれば、ラン数に基づき所定バイト数単位のランレングス処理に対する復号化が行われる（ステップＳ１３３）。このときのラン数と、上述のデコード済みサンプル数Ｎとに基づき、下記の式（１）によりデコード済みサンプル数が求められる。
デコード済みサンプル数＝Ｎ×(所定バイト数単位のランレングス処理のラン数＋１）    ・・・（１）
【０１８４】
図２４は、上述した図２１のフローチャートにおけるステップＳ６４の、ＬＳＢ側圧縮符号化データの一例の復号化処理をより詳細に示すフローチャートである。先ず、２重目復号化部３３から供給されたデコード済みサンプル数に基づき、ハフマン復号化部３５からメモリ制御部３１に対して、ＬＳＢ側圧縮符号化データの読み出しが要求される。この要求に応じて、入力メモリ３０からＬＳＢ側圧縮符号化データが読み出され、ハフマン復号化部３５に供給される。
【０１８５】
このとき、図２１および図２２で説明したＭＳＢ側圧縮符号化データの復号化処理が終了したＭＳＢ側ビットに対応するＬＳＢ側圧縮符号化データが、入力メモリ３０から読み出される。より具体的には、この実施の第１の形態による符号化装置１Ａにおいて、出力データは、図１２を用いて説明したように、先ずＭＳＢ側圧縮符号化データが配置され、次に対応するＬＳＢ側圧縮符号化データが配置され、その次に、次のＭＳＢ側圧縮符号化データが配置され、さらにその次に、当該次のＭＳＢ側圧縮符号化データに対応するＬＳＢ側圧縮符号化データが配置される。そこで、メモリ制御部３１は、ハフマン復号化部３５による読み出し要求に対して、直前に読み出されたＭＳＢ側圧縮符号化データの直後に配置されるＬＳＢ側圧縮符号化データから、読み出しを開始する。
【０１８６】
ハフマン復号化部３５は、所定のハフマンテーブルを参照し、供給されたＬＳＢ側圧縮符号化データのハフマン符号を復号化する。ハフマン復号化部３５は、復号されたデータを所定バイト毎に出力し、ＤＰＣＭ復号化部３６に供給する。
【０１８７】
例えば、メモリ制御部３１は、入力メモリ３０から１ビット乃至所定ビット毎にデータを読み出してハフマン復号化部３５に供給する。ハフマン復号化部３５は、供給されたデータを逐次的にハフマンテーブルと比較し、復号化を行う。復号化されて得られたビット列のデータ長が所定バイトになったら、１画素分のＬＳＢ側圧縮符号化データについてハフマン符号の復号化が完了したとされ、当該データが出力される。
【０１８８】
ＤＰＣＭ復号化部３６では、供給された所定バイトのデータがフレームの先頭のデータであると判断されれば（ステップＳ７１）、これをそのまま、ＬＳＢ側圧縮符号化データが復号化されたベースバンドのＬＳＢ側ビットとして出力する（ステップＳ７３）と共に、図示されないメモリに保持する。一方、ステップＳ７１で、供給された所定バイトのデータがフレームの先頭のデータではないと判断されれば、ＤＰＣＭの復号化が行われる（ステップＳ７２）。例えば、供給されたデータがメモリに保持されると共に、当該データを直前に処理されメモリに保持されている所定バイトのデータに加算する。加算結果がＬＳＢ側圧縮符号化データが復号化されたベースバンドのＬＳＢ側ビットとして出力される。
【０１８９】
１−２−１−３．復号化処理の具体的な例
上述した図２１〜図２４のフローチャート、ならびに、図２５〜図３０を用いて、この実施の第１の形態による復号化処理を、具体的な例を挙げて説明する。ここでは、画素データの量子化ビット数を１０ビットとし、所定バイトが１バイトであって、１バイトを単位として符号化がなされているものとする。
【０１９０】
ＭＳＢ側圧縮符号化データが図２５Ａに一例が示されるビット列「１１００００１１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図２５Ａに示すビット列は、ＭＳＢ側ビット単位でのランレングス処理と、所定バイト単位でのランレングス処理とが共に行われる例である。
【０１９１】
先ず、図２２のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第２のフラグが取得される。図２５Ａの例では、第２のフラグの値が"１"であって、所定バイト単位すなわち１バイト単位でのランレングス処理が行われていることが示される（図２５Ｂの復号手順（１））。そして、ステップＳ８１に従い次の１ビットが読み込まれて第１のフラグが取得される。この図２５Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図２５Ｂの復号手順（２））。
【０１９２】
図２２のステップＳ８２の判断では、第１のフラグの値が"１"なのでＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、図２２のステップＳ８３に従い、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれたランレングスのレベルのビット列が１バイトの長さになるまで繰り返される。図２５Ａの例では、ランレングスのレベルを示すビット列が「００」となっているので、このビット列「００」が４回繰り返され、ビット列「００００００００」が出力される（図２５Ｂの復号手順（３））。
【０１９３】
さらに、図２２のステップＳ８４の判断では、第２のフラグの値が"１"なので所定バイト単位のランレングス処理が行われたと判断され、図２２のステップＳ８５に従い、ランレングスのレベルを示す２ビットのビット列の次に配置される、ランレングスのラン数を示す４ビットのビット列が読み込まれる。図２５Ａの例では、ラン数を示すビット列が「００１１」となっているので、ラン数が「３」であるとされ、直前に出力されたビット列「００００００００」が３回繰り返されて出力される（図２５Ｂの復号手順（４））。
【０１９４】
この復号手順（１）〜復号手順（４）までで、上述した図５に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので（図２２のステップＳ８７）、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０１９５】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が行われる。この統合処理は、図２１のフローチャートで説明したように、１画素分のＬＳＢ側ビットが復号化される毎に行われる。
【０１９６】
図２６を用いて、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理について説明する。図２６Ａは、復号化装置２Ａに供給される一例の圧縮符号化データを示す。この圧縮符号化データの先頭に配置されるＭＳＢ側圧縮符号化データ（１）は、上述の図２５Ａに示したＭＳＢ側圧縮符号化データに対応する。
【０１９７】
このＭＳＢ側圧縮符号化データから、図２５を用いて説明したような処理により、ＭＳＢ側ビットのビット列「００」がＭＳＢ側ビット単位のランレングス処理の復号化により４回繰り返され、さらに所定バイト単位のランレングス処理の復号化により３回繰り返されたビット列「００００００００００００００００００００００００００００００００」が得られる（図２６Ｂ左側参照）。このビット列は、ＭＳＢ側出力メモリ３４に格納される。デコード済みサンプル数は、図２３のフローチャートを用いて説明したように、（ＭＳＢ側ビット単位のデコード済みサンプル数Ｎ）×（所定バイト単位のランレングス処理のラン数＋１）＝４×（３＋１）＝１６となる。
【０１９８】
一方、ＬＳＢ側圧縮符号化データは、例えば１画素分のＬＳＢ側ビットが復号化される毎にＬＳＢ側出力メモリ３７に格納される（図２６Ｂ右側参照）。
【０１９９】
データ統合部３８は、ＭＳＢ側出力メモリ３４に格納したビット列を、ＭＳＢ側ビット毎すなわち２ビット毎に、ＬＳＢ側出力メモリ３７に格納した、デコード済みサンプル数分のＬＳＢ側ビットの１画素分すなわち８ビットに対して、ＭＳＢ側ビットとＬＳＢ側ビットとが対応するようにそれぞれ接続してＭＳＢ側ビットとＬＳＢ側ビットとを統合して、デコード済みサンプル数分の画素データを得る（図２６Ｃ）。
【０２００】
すなわち、この図２６の例では、図２６Ｂの左側に示される、復号化されたＭＳＢ側ビットによるビット列「００００００００００００００００００００００００００００００００」の先頭から２ビットずつビット列が取り出される。そして、取り出された１６個の２ビットのビット列「００」、「００」、・・・、「００」が順次、画素が対応するＬＳＢ側ビットに接続され、元の１０ビットの量子化ビット数を持つ画素データが得られる。この図２６の例では、１６サンプルすなわち１６画素分の画素データが得られる。
【０２０１】
なお、データ統合部３８におけるこの統合処理は、ＬＳＢ側出力メモリ３７に対してデコード済みサンプル数分のＬＳＢ側ビットが格納されてから行ってもよい。
【０２０２】
ＭＳＢ側圧縮符号化データが図２７Ａに一例が示されるビット列「０１１０」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図２７Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理が行われ、所定バイト単位でのランレングス処理が行われない例である。
【０２０３】
先ず、図２２のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第２のフラグが取得される。図２７Ａの例では、第２のフラグの値が"０"であって、所定バイト単位でのランレングス処理が行われていないことが示される（図２７Ｂの復号手順（１））。次にステップＳ８１に従い次の１ビットが読み込まれて第１のフラグが取得される。この図２７Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図２７Ｂの復号手順（２））。
【０２０４】
図２２のステップＳ８２の判断では、第１のフラグの値が"１"なのでＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、次のステップＳ８３に従い、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれたランレングスのレベルのビット列が１バイトの長さになるまで繰り返される。図２７Ａの例では、ランレングスのレベルを示すビット列が「１０」となっているので、このビット列「１０」が４回繰り返され、ビット列「１０１０１０１０」が出力される（図２７Ｂの復号手順（３））。
【０２０５】
次のステップＳ８４の判断では、第２のフラグの値が"０"なので、所定バイト単位のランレングス処理が行われていないと判断され、処理はステップＳ８９に移行される。この図２７Ａのビット列の場合は、この復号手順（１）〜復号手順（３）までで、ＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０２０６】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が、１画素分のＬＳＢ側ビット毎に行われる。
【０２０７】
この場合のＭＳＢ側ビットとＬＳＢ側ビットとの統合処理は、図２６を用いて説明した処理と略同様である。すなわち、図２８に一例が示されるように、図２８Ａに示すＭＳＢ側圧縮符号化データ（２）から、図２７を用いて説明した処理により、ＭＳＢ側ビットのビット列「１０」がＭＳＢ側ビット単位のランレングス処理の復号化により４回繰り返された「１０１０１０１０」が得られる（図２８Ｂ左側参照）。このビット列がＭＳＢ側出力メモリ３４に格納され、デコード済みサンプル数が（ＭＳＢ側ビット単位のデコード済みサンプル数Ｎ）×（所定バイト単位のランレングス処理のラン数＋１）＝４×（０＋１）＝４と求められる。
【０２０８】
一方、ＬＳＢ側圧縮符号化データは、例えば１画素分のＬＳＢ側ビットが復号化される毎にＬＳＢ側出力メモリ３７に格納される（図２８Ｂ右側参照）。
【０２０９】
データ統合部３８は、ＭＳＢ側出力メモリ３４に格納したビット列を、ＭＳＢ側ビット毎すなわち２ビット毎に、ＬＳＢ側出力メモリ３７に格納した、デコード済みサンプル数分のＬＳＢ側ビットの１画素分すなわち８ビットに対して、ＭＳＢ側ビットとＬＳＢ側ビットとが対応するようにそれぞれ接続してＭＳＢ側ビットとＬＳＢ側ビットとを統合して、デコード済みサンプル数分の画素データを得る（図２８Ｃ）。
【０２１０】
すなわち、この図２８の例では、図２８Ｂの左側に示される、ＭＳＢ側ビットによるビット列「１０１０１０１０」の先頭から２ビットずつビット列が取り出される。そして、取り出された４個の２ビットのビット列「１０」、「１０」、「１０」、「１０」が順次、画素が対応するＬＳＢ側ビットに接続され、元の１０ビットの量子化ビット数を持つ画素データが得られる。この図２８の例では、４サンプルすなわち４画素分の画素データが得られる。
【０２１１】
ＭＳＢ側圧縮符号化データが図２９Ａに一例が示されるビット列「００１１０１０１０１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図２９Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理と所定バイト単位でのランレングス処理とが行われない例である。
【０２１２】
図２２のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第２のフラグが取得され、この第２のフラグの値"０"に基づき、所定バイト単位でのランレングス処理が行われていないことが示される（図２９Ｂの復号手順（１））。次の１ビットがステップＳ８１に従い読み込まれて第１のフラグが取得され、この第１のフラグの値０に基づき、ＭＳＢ側ビット単位でのランレングス処理が行われていないことが示される。
【０２１３】
第２のフラグの値"０"に基づき、ステップＳ８２でＭＳＢ側ビット単位でのランレングス処理が行われていないと判断され、処理がステップＳ８８に移行され、第２および第１のフラグの次に配置される所定バイトすなわち１バイト分のビット列「１１０１０１０１」が出力される（図２９Ｂの復号手順（３））。
【０２１４】
この復号手順（１）〜復号手順（３）までで、上述した図５に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０２１５】
復号化されたＭＳＢ側ビットとＬＳＢ側ビットとの、データ統合部３８における統合処理は、図２６および図２８を用いて説明した処理と略同様である。すなわち、図３０に一例が示されるように、図３０Ａに示すＭＳＢ側圧縮符号化データ（３）から、図２９を用いて説明した処理により、第１のフラグの次に配置される所定バイトすなわち１バイト分のビット列「１１０１０１０１」が得られ（図３０左側参照）、このビット列がＭＳＢ側メモリ３４に格納される。
【０２１６】
この例では、所定バイト単位でのランレングス処理が行われていないので、上述した図２３のフローチャートのステップＳ１３２の判断に従い、ＭＳＢ側ビットの繰り返し数「４」がデコード済みのサンプル数Ｎとされる。
【０２１７】
一方、ＬＳＢ側圧縮符号化データは、例えば１画素分のＬＳＢ側ビットが復号化される毎にＬＳＢ側出力メモリ３７に格納される（図３０Ｂ右側参照）。
【０２１８】
データ統合部３８は、ＭＳＢ側出力メモリ３４に格納したビット列を、ＭＳＢ側ビット毎すなわち２ビット毎に、ＬＳＢ側出力メモリ３７に格納した、デコード済みサンプル数分のＬＳＢ側ビットの１画素分すなわち８ビットに対して、ＭＳＢ側ビットとＬＳＢ側ビットとが対応するようにそれぞれ接続してＭＳＢ側ビットとＬＳＢ側ビットとを統合して、デコード済みサンプル数分の画素データを得る（図３０Ｃ）。
【０２１９】
すなわち、この図３０の例では、図３０Ｂの左側に示される、ＭＳＢ側ビットによるビット列「１１０１０１０１」の先頭から２ビットずつビット列が取り出される。そして、取り出された２ビットのビット列「１１」、「０１」、「０１」、「０１」が順次、画素が対応するＬＳＢ側ビットに接続され、元の１０ビットの量子化ビット数を持つ画素データが得られる。この図３０の例では、４サンプルすなわち４画素分の画素データが得られる。
【０２２０】
１−２−２．実施の第１の形態の第１の変形例による復号化処理について
１−２−２−１．復号化装置について
次に、上述した実施の第１の形態の第１の変形例による、１の出力系統に対して圧縮符号化されたＬＳＢ側ビットと圧縮符号化されたＭＳＢ側ビットに分離して出力する例に対応した一例の復号化処理について説明する。図３１は、この実施の第１の形態の第１の変形例による復号化を行う復号化装置２Ｂの機能を示す一例の機能ブロック図である。なお、図３１において、上述した図２０の構成と共通する部分には同一の符号を付し、詳細な説明を省略する。また、符号化装置１Ｂで圧縮符号化された画素データの元の量子化ビット数は、予め復号化装置２Ｂに対して設定されるものとする。さらに、以下の記述で、所定バイトは１バイトである。
【０２２１】
図１４で例示したような出力形式の圧縮符号化データが入力メモリ３０に格納される。メモリ制御部３１は、入力メモリ３０から、圧縮符号化データの先頭に配置される圧縮符号データ長情報を読み込み、読み込まれた圧縮符号データ長情報に基づき入力メモリ３０に格納された圧縮符号化データを読み込む。
【０２２２】
すなわち、図１４を参照し、ハフマン復号化部３５からメモリ制御部３１に対して読み出し要求があった場合には、圧縮符号データ長情報の直後からビット列を読み込むように制御する。一方、１重目復号化部３２や２重目復号化部３３から読み出し要求があった場合には、圧縮符号データ長情報で示される位置に基づきビット列を読み込むように制御する。
【０２２３】
ＬＳＢ側圧縮符号化データに対する復号化処理では、ハフマン符号化部３５の読み出し要求に応じて、メモリ制御部３１は、圧縮符号データ長情報の直後から圧縮符号データ長情報で示される位置まで、１ビット乃至所定ビットずつデータを読み出し、ハフマン復号化部３５に供給する。ハフマン復号化部３５は、供給されたデータを逐次的にハフマンテーブルと比較し、ハフマン符号の復号化を行う。復号化されて得られたビット列のデータ長が８ビットになったら、当該ビット列がＤＰＣＭ復号化部３６に供給される。ＤＰＣＭ復号化部３６は、供給された８ビットのデータと直前に処理した８ビットのデータとを加算して、ＤＰＣＭの復号化を行う。ＤＰＣＭ復号化部３６から出力されたベースバンドのＬＳＢ側ビットは、ＬＳＢ側出力メモリ３７に格納される。
【０２２４】
一方、ＭＳＢ側圧縮符号化データに対する復号化処理では、１重目復号化部３２および２重目復号化部３３により、メモリ制御部３１に対してデータの読み出しを要求する。メモリ制御部３１は、この読み出し要求に応じて、圧縮符号データ長情報に示される位置に基づき入力メモリ３０からデータを読み出し、１重目復号化部３２または２重目復号化部３３に供給する。１重目復号化部３２は、供給されたデータに含まれる第１のフラグに基づきＭＳＢ側ビット単位のランレングス処理に対する復号化を行い、２重目復号化部３３は、供給されたデータに含まれる第２のフラグに基づき所定バイト単位のランレングス処理に対する復号化を行う。２重目復号化部３３から出力されたベースバンドのＭＳＢ側ビットは、ＭＳＢ側出力メモリ３４に格納される。
【０２２５】
データ統合部３８は、ＭＳＢ側出力メモリ３４およびＬＳＢ側出力メモリ３７からベースバンドのＭＳＢ側ビットおよびＬＳＢ側ビットをそれぞれ読み出し、１画素の画素データを構成するようにデータの統合を行う。ＭＳＢ側ビットとＬＳＢ側ビットとが統合されて生成された１画素の画素データが出力画素データとして出力される。
【０２２６】
１−２−２−２．復号化処理について
図３２〜図３４は、この実施の第１の形態の第１の変形例に対応する復号化装置２Ｂにおける一例の復号化処理を示すフローチャートである。なお、図３２〜図３４の各フローチャートにおける各処理は、例えば図示されないＣＰＵにより所定のプログラムに基づき制御することができる。これに限らず、図３１に例示される復号化装置２Ｂを構成する各部が互いに連携して適宜、実行することもできる。
【０２２７】
図３２は、実施の第１の形態の第１の変形例に対応する復号化方法の全体の流れを概略的に示すフローチャートである。なお、ここでは、符号化装置１Ｂで１フレーム分の画素データに対する圧縮符号化が行われ、この１フレーム分の圧縮符号化データに対する復号化処理を行うものとして説明する。
【０２２８】
先ず、ステップＳ９０で、符号化装置１Ｂで圧縮符号化される前の、ベースバンドの画像データにおける画素データのビット数が設定され、次のステップＳ９１で、符号化装置１Ｂで圧縮符号化された圧縮符号化データが格納されるファイルが読み込まれる。ファイルから読み込まれた圧縮符号化データは、入力メモリ３０に格納される。なお、圧縮符号化データは、ファイルに格納されて供給されるのに限らず、例えばストリームデータとして供給され、入力メモリ３０に格納されるようにしてもよい。
【０２２９】
次のステップＳ９２で、メモリ制御部３１によりＬＳＢ側の圧縮符号データ長情報が取得される。例えば、メモリ制御部３１は、入力メモリ３０に格納されたデータの先頭の所定バイトを読み出し、ＬＳＢ側の圧縮符号データ長情報を取得する。そして、ステップＳ９３およびステップＳ９４で、ＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データがそれぞれ復号化される。
【０２３０】
すなわち、ステップＳ９３において、ハフマン復号化部３５からメモリ制御部３１に対してデータの読み出しが要求される。メモリ制御部３１は、この要求に応じて、入力メモリ３０に格納された圧縮符号化データの、圧縮符号データ長情報の直後から圧縮符号データ長情報で示される位置までの読み出しを行う。読み出されたデータは、ハフマン復号化部３５およびＤＰＣＭ復号化部３６で復号化され、ベースバンドのＬＳＢ側ビットとされてＬＳＢ側出力メモリ３７に格納される。
【０２３１】
一方、ステップＳ９４では、１重目復号化部３２および２重目復号化部２２からメモリ制御部３１に対してデータの読み出しが要求される。メモリ制御部３１は、この要求に応じて、入力メモリ３０に格納された圧縮符号化データを、圧縮符号データ長情報で示される位置から読み出す。１重目復号化部３２および２重目復号化部３３は、読み出されたデータに基づきＭＳＢ側圧縮符号化データの復号化を行い、復号化されたベースバンドのＭＳＢ側ビットがＭＳＢ側出力メモリ３４に格納される。
【０２３２】
ステップＳ９３およびステップＳ９４で、１フレーム分のＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データに対する復号化処理が終了すると、処理はステップＳ９５に移行される。ステップＳ９５では、データ統合部３８において、ステップＳ９３で復号化されたベースバンドのＬＳＢ側ビットと、ステップＳ９４で復号化されたベースバンドのＭＳＢ側ビットとが統合され、１フレーム分の画素データが復元される。
【０２３３】
図３３は、上述した図３２のフローチャートにおけるステップＳ９３の、ＬＳＢ側圧縮符号化データの復号化処理を、より詳細に示す一例のフローチャートである。この図３３のフローチャートによる処理は、１フレーム分の画素に対応するＬＳＢ側圧縮符号化データの復号化処理が終了するまで繰り返される（ステップＳ１００）。
【０２３４】
ステップＳ１０１で、ハフマン復号化部３５からメモリ制御部３１に対して、入力メモリ３０に格納されているＬＳＢ側圧縮符号化データの読み出しが要求される。メモリ制御部３１は、この要求に応じて、入力メモリ３０に格納されている圧縮符号化データの先頭に配置された圧縮符号データ長情報の直後から、当該圧縮符号データ長情報で示される位置まで、１ビット毎乃至所定ビット毎にデータを読み出して、ハフマン復号化部３５に供給する。ハフマン復号化部３５は、供給されたデータを逐次的にハフマンテーブルと比較し、復号化を行う。復号化されて得られたビット列のデータ長が所定バイトになったら、１画素分のＬＳＢ側圧縮符号化データについてハフマン符号の復号化が完了したとされ、当該データが出力される。
【０２３５】
ＤＰＣＭ復号化部３６では、供給された所定バイトのデータがフレームの先頭のデータであると判断されれば（ステップＳ１０２）、これをそのまま、ＬＳＢ側圧縮符号化データが復号化されたベースバンドのＬＳＢ側ビットとして出力する（ステップＳ１０３）と共に、図示されないメモリに保持する。一方、ステップＳ１０３で、供給された所定バイトのデータがフレームの先頭のデータではないと判断されれば、ＤＰＣＭの復号化が行われる（ステップＳ１０４）。例えば、供給されたデータがメモリに保持されると共に、当該データを直前に処理されメモリに保持されている所定バイトのデータに加算する。加算結果がＬＳＢ側圧縮符号化データが復号化されたベースバンドのＬＳＢ側ビットとして出力される。
【０２３６】
ステップＳ１０３またはステップＳ１０４の処理が終了したら、処理はステップＳ１００に戻され、１フレーム分の復号化が終了するまでこれらの処理が繰り返される。
【０２３７】
図３４は、上述した図３２のフローチャートにおけるステップＳ９４の、ＭＳＢ側圧縮符号化データの一例の復号化処理をより詳細に示すフローチャートである。この図３４のフローチャートによる処理は、１フレーム分の画素に対応するＭＳＢ側圧縮符号化データの復号化処理が終了するまで繰り返される（ステップＳ１１０）。
【０２３８】
繰り返しの最初の回のステップＳ１１１において、入力メモリ３０に格納された圧縮符号化データに対し、圧縮符号データ長情報に示される位置から１ビットの読み込みがなされて２重目復号化部３３に第２のフラグが取得され、ステップＳ１１２で次の１ビットが読み込まれて１重目復号化部３２に第１のフラグが取得される。
【０２３９】
なお、繰り返しの最初の回以外の回におけるステップＳ１１１では、直前に読み出されたビットの次の１ビットが読み込まれることになる。
【０２４０】
次のステップＳ１１３で、１重目復号化部３２において、取得された第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われているか否かが判断される。若し、第１のフラグの値が"１"であり、ＭＳＢ側ビット単位でのランレングス処理が行われてると判断されれば、処理はステップＳ１１４に移行され、１重目復号化部３２により第１のフラグの次の２ビット、すなわちランレングスのレベルが読み込まれる。そして、所定バイトになるまで、読み込まれた２ビットの値が繰り返し出力される。
【０２４１】
一方、第１のフラグの値が"０"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていないと判断されれば、処理はステップＳ１１８に移行され、第１のフラグに続く所定バイトすなわち１バイト（＝８ビット）が読み込まれ、出力される。そして、処理はステップＳ１１０に戻される。
【０２４２】
次のステップＳ１１５で、２重目復号化部３３において、取得された第２のフラグの値に基づき所定バイト単位でのランレングス処理が行われているか否かが判断される。若し、第２のフラグの値が"１"であり、所定バイト単位でのランレングス処理が行われていると判断されれば、処理はステップＳ１１６に移行され、第１のフラグに続く４ビットが読み込まれ、所定バイト単位でのランレングス処理によるラン数が取得される。
【０２４３】
一方、ステップＳ１１５で、所定バイト単位でのランレングス処理が行われていないと判断されれば、処理はステップＳ１１０に戻される。
【０２４４】
次のステップＳ１１７で、２重目復号化部３３は、上述したステップＳ１１４で１重目復号化部３２から出力された所定バイト分のデータを、ステップＳ１１６で取得されたラン数分、繰り返して出力する。
【０２４５】
１−２−２−３．復号化処理の具体的な例
上述した図３２〜図３４のフローチャート、ならびに、図３５および図３６を用いて、この実施の一形態の第１の変形例による復号化処理を、具体的な例を挙げて説明する。ここでは、画素データの量子化ビット数を１０ビットとし、所定バイトが１バイトであって、１バイトを単位として符号化がなされているものとする。
【０２４６】
ＭＳＢ側圧縮符号化データが図３５Ａに一例が示されるビット列「１１００００１１０１１０００１１０１０１０１・・・」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。
【０２４７】
先ず、図３４のフローチャートのステップＳ１１１に従い先頭の１ビットが読み込まれて第２のフラグが取得され、取得された第２のフラグの値が"１"であるので、所定バイト単位でのランレングス処理が行われていることが示される（図３５Ｂの復号手順（１））。次のステップＳ１１２に従い次の１ビットが読み込まれて第１のフラグが取得され、取得された第１のフラグの値が"１"であるので、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図３５Ｂの復号手順（２））。
【０２４８】
第１のフラグの値が"１"なので、ステップＳ１１３により、第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれた２ビットのビット列「００」が４回繰り返され（ステップＳ１１４）、所定バイト（１バイト）のデータ列「００００００００」が出力される（図３５Ｂの復号手順（３））。
【０２４９】
さらに、ステップＳ１１５により、第２のフラグの値に基づき所定バイト単位でのランレングス処理が行われたと判断され、ステップＳ１１６に従い、ランレングスのレベルを示す２ビットのビット列の次に配置される、ランレングスのラン数を示す４ビットのビット列「００１１」が読み込まれる。読み込まれたビット列に基づきラン数が「３」であることが分かるので、直前に出力されたビット列「００００００００」が３回繰り返されて出力される（図３５Ｂの復号手順（４））。
【０２５０】
処理がステップＳ１１０に戻され、未だ１フレーム分の処理が終了していないので、次のステップＳ１１１に従い、直前に読み込まれたランレングスのラン数を示す４ビットのビット列「００１１」の次の１ビットが読み込まれ、第２のフラグが取得される。図３５Ａの例では、取得された第２のフラグの値が"０"であって所定バイト単位でのランレングス処理が行われていないことが示される（図３５Ｂの復号手順（５））。次のステップＳ１１２に従い次の１ビットが読み込まれて第１のフラグが取得され、取得された第１のフラグの値が"１"であるので、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図３５Ｂの復号手順（６））。
【０２５１】
ステップＳ１１３により、第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれた２ビットのビット列「１０」が４回繰り返され（ステップＳ１１４）、所定バイト（１バイト）のデータ列「１０１０１０１０」が出力される（図３５Ｂの復号手順（７））。
【０２５２】
次のステップＳ１１５の判断では、第２のフラグの値が"０"なので、所定バイト単位のランレングス処理が行われていないと判断され、処理がステップＳ１１０に戻される。
【０２５３】
未だ１フレーム分の処理が終了していないので、処理はステップＳ１１０からステップＳ１１１に移行され、直前に読み込まれたランレングスのレベルを示す２ビットのビット列「１０」の次の１ビットが読み込まれ、第２のフラグが取得される。図３５Ａの例では、取得された第２のフラグの値が"０"であって、所定バイト単位でのランレングス処理が行われていないことが示される（図３５Ｂの復号手順（８））。次のステップＳ１１２に従い次の１ビットが読み込まれて第１のフラグが取得され、取得された第１のフラグの値が"０"であるので、ＭＳＢ側ビット単位でのランレングス処理が行われていないことが示される（図３５Ｂの復号手順（９））。
【０２５４】
ステップＳ１１３により、第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われていないと判断され、処理がステップＳ１１８に移行される。ステップＳ１１８では、直前に読み込まれた第１のフラグの次の所定バイトすなわち１バイトが読み込まれ、この１バイトのビット列「１１０１０１０１」が出力される。
【０２５５】
上述のような処理を、１フレーム分の画素について終了するまで、例えばファイルから読み出され入力メモリ３０に格納された圧縮符号化データにおける末尾のビットが読み出されるまで繰り返す。
【０２５６】
図３６を用いて、データ統合部３８で行われるＭＳＢ側ビットとＬＳＢ側ビットとの統合処理について説明する。図３６Ａは、ＬＳＢ側出力メモリ３７に格納される、ベースバンドのＬＳＢ側ビットを示す。１画素分が所定バイトすなわち１バイト（＝８ビット）からなるＬＳＢ側ビットが、例えば画面の左上隅の画素を先頭に、水平ラインの左端から右端に向けた画素の配列順に対応して、ライン単位で順次並べられる。図３６Ｂは、ＭＳＢ側出力メモリ３４に格納される、ベースバンドのＭＳＢ側ビットを示す。１画素分が２ビットからなるＭＳＢ側ビットが、例えばＬＳＢ側ビットと同様の順序で並べられる。
【０２５７】
データ統合部３８は、例えばベースバンドのＬＳＢ側ビットおよびＭＳＢ側ビットが１フレーム分、ＬＳＢ側出力メモリ３７およびＭＳＢ側出力メモリ３４にそれぞれ格納されると、データのＬＳＢ側出力メモリ３７およびＭＳＢ側出力メモリ３４からの読み出しと、読み出されたデータの統合処理を開始する。一例として、先ず、ＬＳＢ側出力メモリ３７に格納されたデータを８ビット分、読み出し、次に、ＭＳＢ側出力メモリ３４格納されたデータを２ビット分、読み出す。読み出されたこれら８ビット分のビット列と２ビット分のデータ列とを接続することで、１０ビットの量子化ビット数を持つ画素データが復号化される。
【０２５８】
１画素分の画素データが得られたら、ＬＳＢ側出力メモリ３７から次の８ビット分のデータを読み出し、さらにＭＳＢ側出力メモリ３４から次の２ビット分のデータを読み出す。そして、読み出されたこれら８ビットのビット列と２ビットのビット列とを接続することで、１０ビットの量子化ビット数を持つ次の画素データが復号化される。データ統合部３８は、このようなＬＳＢ側出力メモリ３７およびＭＳＢ側出力メモリ３４からのデータの読み出しおよび読み出されたデータの統合を、１フレーム分の画素について全て完了するまで、繰り返し行い、復号化された画素データを得る（図３６Ｃ参照）。
【０２５９】
なお、上述したＬＳＢ側圧縮符号化データの復号化処理と、ＭＳＢ側圧縮符号化データの復号化処理とは、復号化装置２Ｂにおいて並列的に行うことができる。これに限らず、ＬＳＢ側圧縮符号化データの復号化処理およびＭＳＢ側圧縮符号化データの復号化処理は、一方の処理が完了後に他方の処理を行うようにしてもよい。
【０２６０】
また、上述では、データ統合部３８におけるＬＳＢ側ビットとＭＳＢ側ビットとの統合処理が、ＬＳＢ側圧縮符号化データの復号化処理およびＭＳＢ側圧縮符号化データの復号化処理が終了してから行われるように説明したが、これはこの例に限定されない。例えば、データ統合部３８は、ＬＳＢ側圧縮符号化データの復号化処理およびＭＳＢ側圧縮符号化データの復号化処理により、統合可能なベースバンドのＬＳＢ側ビットとベースバンドのＭＳＢ側ビットとが復号化されたら順次、ＬＳＢ側ビットおよびＭＳＢ側ビットに対するデータ統合処理を行うようにすることもできる。
【０２６１】
１−２−３．実施の第１の形態の第２の変形例による復号化処理について
次に、上述した実施の第１の形態の第２の変形例による、圧縮符号化されたＬＳＢ側ビットと圧縮符号化されたＭＳＢ側ビットとをそれぞれ独立的に出力する例に対応した一例の復号化処理について説明する。図３７は、この実施の第１の形態の第２の変形例による復号化を行う復号化装置２Ｃの機能を示す一例の機能ブロック図である。なお、図３７において、上述した図２０の構成と共通する部分には同一の符号を付し、詳細な説明を省略する。また、符号化装置１Ｃで圧縮符号化された画素データの元の量子化ビット数は、予め復号化装置２Ｃに対して設定されるものとする。さらに、以下の記述で、所定バイトは１バイトである。
【０２６２】
図３７に示される復号化装置２Ｃは、ＭＳＢ側圧縮符号化データおよびＬＳＢ側圧縮符号化データにそれぞれ対応する２系統の入力系統を有し、それぞれＭＳＢ側入力メモリ３０ＡおよびＬＳＢ側入力メモリ３０Ｂの２つの入力データ用メモリと、これらＭＳＢ側入力メモリ３０ＡおよびＬＳＢ側入力メモリ３０Ｂを制御するためのメモリ制御部３１Ａおよび３１Ｂとを有する。
【０２６３】
図１６で例示した出力形式を参照し、ＭＳＢ側の出力データ２２Ｂ（ＭＳＢ側圧縮符号化データ）がＭＳＢ側入力メモリ３０Ａに格納される。メモリ制御部３１Ａは、１重目復号化部３２および２重目復号化部３３からの、ＭＳＢ側入力メモリ３０Ａに格納されたＭＳＢ側の出力データ２２Ｂの読み出し要求に応じて、ＭＳＢ側入力メモリ３０Ａから所定にデータを読み出す。読み出されたデータは、１重目復号化部３２および／または２重目復号化部３３に供給される。
【０２６４】
また、ＬＳＢ側の出力データ２２Ａ（ＬＳＢ側圧縮符号化データ）がＬＳＢ側入力メモリ３０Ｂに格納される。メモリ制御部３１Ｂは、ハフマン復号化部３５からの、ＬＳＢ側入力メモリ３０Ｂに格納されたＬＳＢ側の出力データ２２Ａの読み出し要求に応じて、ＬＳＢ側入力メモリ３０Ｂから所定にデータを読み出す。読み出されたデータは、ハフマン復号化部３５に供給される。
【０２６５】
なお、図３７の構成における以降の処理、すなわち、１重目復号化部３２および２重目復号化部３３によるＭＳＢ側圧縮符号化データの復号化処理、ハフマン復号化部３５およびＤＰＣＭ復号化部３６によるＬＳＢ側圧縮符号化データの復号化処理、ならびに、データ統合部３８によるＭＳＢ側ビットとＬＳＢ側ビットとの統合処理は、上述した実施の第１の形態の第１の変形例の場合と同様であるので、繁雑さを避けるために、詳細な説明を省略する。
【０２６６】
すなわち、図３８のフローチャートに復号化装置２Ｃによる一例の復号化処理の全体の流れが示されるように、ステップＳ１２０で、符号化装置１Ｃで圧縮符号化される前の、ベースバンドの画像データにおける画素データの量子化ビット数が設定される。
【０２６７】
ステップＳ１２１で、ＬＳＢ側圧縮符号化データが格納されたファイルが読み込まれ、読み込まれたＬＳＢ側圧縮符号化データがＬＳＢ側入力メモリ３０Ｂに格納される。そして、ステップＳ１２２で、ハフマン復号化部３５の読み出し要求に応じてメモリ制御部３１ＢによりＬＳＢ側入力メモリ３０Ｂに格納されたＬＳＢ側圧縮符号化データが読み出され、読み出されたＬＳＢ側圧縮符号化データが復号化される。ＬＳＢ側圧縮符号化データが復号化されたベースバンドのＬＳＢ側ビットは、ＬＳＢ側出力メモリ３７に格納される。
【０２６８】
一方、ステップＳ１２３で、ＭＳＢ側圧縮符号化データが格納されたファイルが読み込まれ、読み込まれたＭＳＢ側圧縮符号化データがＭＳＢ側入力メモリ３０Ａに格納される。そして、ステップＳ１２４で、１重目復号化部３２および／または２重目復号化部３３の読み出し要求に応じてメモリ制御部３１ＡによりＭＳＢ側入力メモリ３０Ａに格納されたＭＳＢ側圧縮符号化データが読み出され、読み出されたＭＳＢ側圧縮符号化データが復号化される。ＭＳＢ側圧縮符号化データが復号化されたベースバンドのＭＳＢ側ビットは、ＭＳＢ側出力メモリ３４に格納される。
【０２６９】
ステップＳ１２２およびステップＳ１２４で、１フレーム分のＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データに対する復号化処理が終了すると、処理はステップＳ１２５に移行される。ステップＳ１２５では、データ統合部３８において、ステップＳ１２２で復号化されたベースバンドのＬＳＢ側ビットと、ステップＳ１２４で復号化されたベースバンドのＭＳＢ側ビットとが統合され、１フレーム分の画素データが復号化される。
【０２７０】
なお、この図３８のフローチャートにおけるステップＳ１２２のＬＳＢ側圧縮符号化データの復号化処理の詳細は、上述の実施の第１の形態の第１の変形例による、図３３および図３４のフローチャートにそれぞれ示した処理をそのまま適用できるので、ここでは、繁雑さを避けるために説明を省略する。また、データ統合部３８によるデータ統合処理も、上述の実施の第１の形態の第１の変形例による、図３６を用いて説明した処理がそのまま適用できるので、ここでは、繁雑さを避けるために説明を省略する。
【０２７１】
１−２−３．実施の第１の形態の第３の変形例による復号化処理について
次に、上述した実施の第１の形態の第３の変形例による、所定バイトを２バイトとし、ＭＳＢ側ビットのランレングス処理を２バイトを単位として行った圧縮符号化データに対する復号化処理について説明する。なお、この実施の第１の形態の第３の変形例では、上述した実施の第１の形態の符号化装置１Ａに対応する復号化装置２Ａ（図２０参照）をそのまま適用できると共に、図２１〜図２４のフローチャートを用いて説明した復号化処理も、基本的に、そのまま適用できる。そのため、これらの詳細な説明については、繁雑さを避けるために省略する。
【０２７２】
また、ＬＳＢ側圧縮符号化データに対する復号化処理は、実施の第１の形態による復号化処理で説明した、１バイトのビット列についてＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データに対する復号化処理を同一であるので、説明を省略する。
【０２７３】
図３９は、この実施の第１の形態の第３の変形例による復号化処理における一例の復号化手順を示す。この図３９と、上述した図２１〜図２４とを用いて、この実施の第１の形態の第３の変形例による復号化処理について説明する。なお、ここでは、圧縮符号化データの出力形式が、実施の第１の形態において図１２を用いて説明した、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとがインターリーブされた形式とする。また、以下において、所定バイトは２バイトである。
【０２７４】
ＭＳＢ側圧縮符号化データが図３９Ａに一例が示されるビット列「１１０００００１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図３９に示すビット列は、ＭＳＢ側ビット単位でのランレングス処理と、所定バイトすなわち２バイト単位でのランレングス処理とが共に行われる例である。
【０２７５】
先ず、図２２のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第２のフラグが取得される。図３９Ａの例では、第２のフラグの値が"１"であって、所定バイト単位すなわち２バイト単位でのランレングス処理が行われていることが示される（図３９Ｂの復号手順（１））。そして、ステップＳ８１に従い次の１ビットが読み込まれて第１のフラグが取得される。この図３９Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図３９Ｂの復号手順（２））。
【０２７６】
図２２のステップＳ８２の判断では、第１のフラグの値が"１"なのでＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、図２２のステップＳ８３に従い、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれたランレングスのレベルのビット列が所定バイトの長さになるまで繰り返される。図３９Ａの例では、ランレングスのレベルを示すビット列が「００」となっているので、このビット列「００」が８回繰り返され、ビット列「００００００００００００００００」が出力される（図３９Ｂの復号手順（３））。
【０２７７】
さらに、図２２のステップＳ８４の判断では、第２のフラグの値が"１"なので所定バイト単位のランレングス処理が行われたと判断され、図２２のステップＳ８５に従い、ランレングスのレベルを示す２ビットのビット列の次に配置される、ランレングスのラン数を示す４ビットのビット列が読み込まれる。図３９Ａの例では、ラン数を示すビット列が「０００１」となっているので、ラン数が「１」であるとされ、直前に出力されたビット列「００００００００００００００００」が１回繰り返されて出力される（図３９Ｂの復号手順（４））。
【０２７８】
この復号手順（１）〜復号手順（４）までで、上述した図１８に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので（図２２のステップＳ８７）、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０２７９】
デコード済みサンプル数は、上述した式（１）に基づき、
デコード済みサンプル数＝ＭＳＢ側ビットの繰り返し数（ＭＳＢ側ビット単位でのデコード済みのサンプル数）Ｎ×(所定バイト数単位のランレングス処理のラン数＋１）＝８×（１＋１）＝１６
このように求められる。
【０２８０】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が行われる。この統合処理は、図２１のフローチャートで説明したように、１画素分のＬＳＢ側ビットが復号化される毎に行われる。
【０２８１】
ＭＳＢ側圧縮符号化データが図４０Ａに一例が示されるビット列「００１０１０１０１０１１０１０１０１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図４０Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理と所定バイト単位でのランレングス処理とが行われない例である。
【０２８２】
図２２のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第２のフラグが取得され、この第２のフラグの値"０"に基づき、所定バイト単位でのランレングス処理が行われていないことが示される（図４０Ｂの復号手順（１））。次の１ビットがステップＳ８１に従い読み込まれて第１のフラグが取得され、この第１のフラグの値"０"に基づき、ＭＳＢ側ビット単位でのランレングス処理が行われていないことが示される。
【０２８３】
第１のフラグの値"０"に基づき、ステップＳ８２でＭＳＢ側ビット単位でのランレングス処理が行われていないと判断され、処理がステップＳ８８に移行され、第２および第１のフラグの次に配置される所定バイト分のビット列「１０１０１０１０１１０１０１０１」が出力される（図４０Ｂの復号手順（３））。
【０２８４】
この復号手順（１）〜復号手順（３）までで、上述した図１８に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。この例では、所定バイト単位でのランレングス処理が行われていないので、上述した図２３のフローチャートのステップＳ１３２の判断に従い、ＭＳＢ側ビットの繰り返し数「８」がデコード済みのサンプル数Ｎとされる。
【０２８５】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が行われる。この統合処理は、図２１のフローチャートで説明したように、１画素分のＬＳＢ側ビットが復号化される毎に行われる。
【０２８６】
なお、この実施の第１の形態の第３の変形例による復号化処理は、図１２を用いて説明した、実施の第１の形態によるＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとをインターリーブした出力形式に適用できるのに限らず、図１４を用いて説明した、実施の第１の形態の第１の変形例による１の出力系統に対してＬＳＢ側ビットとＭＳＢ側ビットに分離して出力する出力形式に適用することが可能である。この場合、復号化処理は図３１に示した復号化装置２Ｂが用いられ、図３２〜図３４のフローチャートに準じた復号化処理がなされる。
【０２８７】
同様に、この実施の第１の形態の第３の変形例による復号化処理は、図１６を用いて説明した、実施の第１の形態の第２の変形例によるＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとをそれぞれ独立的に出力する出力形式にも適用することが可能である。この場合、復号化処理は図３７に示した復号化装置２Ｃが用いられ、図３８、ならびに、図３３および図３４のフローチャートに準じた復号化処理がなされる。
【０２８８】
また、圧縮符号化が３バイト若しくはそれ以上のデータ長を単位としてなされる場合についても、この実施の第１の形態の第３の変形例による復号化処理を同様に適用することができる。
【０２８９】
２．この発明の実施の第２の形態について
次に、この発明の実施の第２の形態について説明する。この実施の第２の形態では、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加するようにした例である。復号化処理において第２のフラグに基づく判断が必要ない場合に、当該第２のフラグを付加しないようにできるため、より高い圧縮率を達成することができる。
【０２９０】
なお、この実施の第２の形態、ならびに、後述する実施の第２の形態の第１の変形例、第２の変形例および第３の変形例における符号化装置および復号化装置は、それぞれ上述した実施の第１の形態による符号化装置１Ａ、１Ｂおよび１Ｃ、ならびに、復号化装置２Ａ、２Ｂおよび２Ｃをそれぞれそのまま適用することができるため、これらについては、詳細な説明を省略する。
【０２９１】
すなわち、この実施の第２の形態は、上述した実施の第１の形態に対応し、符号化処理は、図１で説明した符号化装置１Ａで行うことができ、圧縮符号化された出力データは、ＭＳＢ側ビットが圧縮符号化されたＭＳＢ側圧縮符号化データと、ＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データとがインターリーブされた構造とされる。
【０２９２】
２−１．実施の第２の形態による符号化処理について
２−１−１−２．データ構造について
図４１は、この実施の第２の形態によるＭＳＢ側の出力データの一例の構造を示す。この実施の第２の形態によるＭＳＢ側の出力データは、図４１に例示されるように、データ先頭の１ビットのデータ長を持つ固定長の部分と、この固定長の部分に続く可変長の部分とからなる。固定長の部分には、第１のフラグが配置される。
【０２９３】
一方、可変長の部分には、先頭側から、ＭＳＢ側ビット単位のランレングス処理によるランレングスのレベルが格納される第１の領域と、第２のフラグと、１バイト単位のランレングス処理によるラン数が格納される第２の領域とが配置される。
【０２９４】
第１の領域は、第１のフラグの値に応じて格納されるデータが決められ、データ長が割り当てられる。すなわち、第１のフラグの値が"１"であれば、第１の領域には、データ長がＭＳＢ側ビットのビット数に応じて割り当てられ、ランレングスのレベルが格納される。一方、第１のフラグの値が"０"であれば、第１の領域には、ＭＳＢ側ビット単位でのランレングス処理および所定バイト単位のランレングス処理が行われない場合の、圧縮符号化がなされていない１バイト分のビット列が配置される。
【０２９５】
第１の領域に続けて第２のフラグが配置される。この実施の第２の形態では、第２のフラグが割り当てられるか否かは、第１のフラグの値に応じて決められる。すなわち、第１のフラグの値が"０"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていないことを示していれば、第２のフラグが出力されない。一方、第１のフラグの値が"１"であれば、第２のフラグに１ビットが割り当てられる。
【０２９６】
第２の領域は、２重目ランレングス処理部１８の処理結果に基づくバイト単位のラン数が配置される領域で、第２のフラグの値に応じて第２の領域を割り当てるか否かが決められる。すなわち、第２のフラグの値が"１"であれば、第２の領域に対して所定ビット数が割り当てられ、２重目ランレングス処理部１８によるランレングス処理結果である繰り返し回数が格納される。一方、第２のフラグの値が"０"であれば、第２の領域が割り当てられない。
【０２９７】
２−１−１−３．符号化処理について
次に、この実施の第２の形態による圧縮符号化処理について説明する。この実施の第２の形態による圧縮符号化処理は、基本的には、図６〜図１０のフローチャートを用いて説明した、上述の実施の第１の形態による圧縮符号化処理と同様である。以下、これら図６〜図１０のフローチャートを適宜、参照しながら説明する。
【０２９８】
すなわち、全体的には、図６で説明したように、画素データをＬＳＢ側の８ビットと、当該ＬＳＢ側の８ビットを除くＭＳＢ側のビットとに分離し（ステップＳ１）、分離されたＬＳＢ側ビットに対する圧縮符号化（ステップＳ２）と、ＭＳＢ側ビットに対する圧縮符号化（ステップＳ３）とをそれぞれ行い、圧縮符号化されたＬＳＢ側ビットの圧縮符号化データとるＭＳＢ側ビットの圧縮符号化データとがインターリーブされて出力される（ステップＳ４）。
【０２９９】
また、上述のステップＳ２におけるＬＳＢ側ビットに対する圧縮符号化は、ＤＰＣＭ部１３によりＬＳＢ側データ用メモリ１２に格納されたＬＳＢ側ビットに対して１バイト毎ＤＰＣＭ処理を行って差分データを出力し（ステップＳ１０）、この差分データに対して、ステップＳ１１でハフマン符号化部１４によりハフマン符号化による圧縮符号化処理を施して出力する。
【０３００】
ステップＳ３におけるＭＳＢ側ビットに対する圧縮符号化処理が、上述の実施の第１の形態とこの実施の第２の形態とで異なる。図４２は、この実施の第２の形態による、ＭＳＢ側ビットに対する一例の圧縮符号化処理を示すフローチャートである。この図４２に示す処理において、ステップＳ３１でＭＳＢ側ビット単位でのランレングス処理が行えないと判断された後に、第２のフラグの値を"０"に設定するステップＳ３７１が設けられている点が、上述した実施の第１の形態における図９の処理と異なる点である。
【０３０１】
すなわち、ステップＳ３０において所定数のＭＳＢ側ビットからなる所定バイト分のビット列をＭＳＢ側ビット単位で比較し、比較結果に基づきステップＳ３１で、当該所定バイト分のビット列がＭＳＢ側ビット単位でランレングス処理可能であるか否かが判断される。処理可能であると判断されれば、処理はステップＳ３２に移行される。ステップＳ３２以降の処理は、上述の実施の第１の形態における図９のステップＳ３２以降の処理と同一であるので、説明を省略する。
【０３０２】
一方、ステップＳ３１で、所定バイト分のビット列がＭＳＢ側ビット単位でランレングス処理できないと判断されると、処理はステップＳ３６に移行される。ステップＳ３６では、第１のフラグの値が"０"に設定され、次のステップＳ３７で、現在読み込まれている所定バイト分のビット列がそのまま出力される。出力されたビット列は、例えば図示されないメモリやレジスタに記憶される。
【０３０３】
そして、次のステップＳ３７１で、第２のフラグの値が"０"に設定される。ここで第２のフラグの値を"０"に設定することで、所定バイト単位でのランレングス処理が行われていないことが示されると共に、出力データにおいて、第２のフラグおよび第２の領域が出力されない。第２のフラグが出力されないため、上述の実施の第１の形態に対して圧縮率の点で有利となる。
【０３０４】
ステップＳ３７１で第２のフラグの値が"０"に設定されると、次のステップＳ３８で第３のフラグの値が"１"に設定され、さらに、次のステップＳ３９で次の処理をＭＳＢ側ビット単位のランレングス処理とするように設定される。
【０３０５】
２−１−１−４．符号化処理の具体的な例
この実施の第２の形態によるＭＳＢ側ビットの符号化処理について、図４３を参照しながら具体的な例を用いて説明する。ここでは、画素データの量子化ビット数が１０ビットであって１画素が１０ビットのデータ長を持ちＭＳＢ側ビットのデータ長が２ビットであるものとして説明する。
【０３０６】
図４３Ａは、図６のステップＳ１により分離されたＭＳＢ側ビットの例を示す。２ビットからなるＭＳＢ側ビットが画素毎に分離され、表示順に並べられてＭＳＢ側データ用メモリ１６に格納される。ビット列の構成は、上述した図１１Ａに示す構成と同一である。以下、上述の実施の第１の形態で図６〜図８、図１０、ならびに、図１１を用いて説明した部分と共通する部分は、適宜、省略しながら説明を行う。
【０３０７】
最初は、図８のステップＳ２１から処理がステップＳ２２に移行し、所定バイト分（この例では１バイト分）のビット列（ａ）がＭＳＢ側データ用メモリ１６から読み込まれる。次のステップＳ２３で、例えばＭＳＢ側ビット単位でのランレングス処理を行うようにされ、ステップＳ２４（図４２のステップＳ３０）に処理が移行される。読み込まれた所定バイト分のビット列（ａ）について、ＭＳＢ側ビット単位で比較がなされ、ビット列（ａ）の例ではランレングス処理が可能と判断され（ステップＳ３１）、ステップＳ３２で第１のフラグが"１"に設定される。
【０３０８】
そして、次のステップＳ３３でビット列（ａ）に対してＭＳＢ側ビット単位でランレングス処理がなされ、ランレングスのレベルを示すビット列「００」が出力されると共に、第１のフラグが出力される。そして、所定バイト単位でのランレングス処理におけるラン数が「０」に設定されると共に、第３のフラグの値が"１"に設定され（ステップＳ３４）、次の処理が所定バイト単位のランレングス処理に決められ（ステップＳ３５）、処理が図８のステップＳ２０に戻される。
【０３０９】
図８のステップＳ２０からステップＳ２１に処理が移行され、第３のフラグの値に基づき処理はステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から、ビット列（ａ）に隣接する次の所定バイト分のビット列（ｂ）「００００００００」が読み込まれる。次の処理が所定バイト単位のランレングス処理に決められているため、ステップＳ２３からステップＳ２５（図１０のステップＳ４０）に処理が移行される。
【０３１０】
図１０のステップＳ４０の、前回読み込まれたビット列（ａ）と、今回読み込まれたビット列（ｂ）との比較結果に基づきランレングス処理が可能と判断され（ステップＳ４１）、ステップＳ４２で、所定バイト単位のランレングス処理が行われ、ラン数がインクリメントされる。所定バイト分のビット列の比較が、ビット列同士が一致しなくなるまで繰り返され、ラン数のインクリメントが行われる。この図４３Ａの例では、ビット列（ｄ）までが一致しており、ビット列（ｄ）とビット列（ｅ）との比較で処理が終了され、ラン数が「３」とされる。
【０３１１】
ランレングス処理が終了されると、次のステップＳ４３で第３のフラグの値が"１"に設定され、さらに次のステップＳ３５で、次の処理を所定バイト単位のランレングス処理に決められ、処理は図８のステップＳ２０に戻される。
【０３１２】
ステップＳ２０からステップＳ２１に処理が移行され、第３のフラグの値に基づき処理がステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から次の所定バイト分のビット列（ｅ）「１０１０１０１０」が読み込まれ、次の処理が所定バイト単位のランレングス処理に決められているため、処理がステップＳ２３からステップＳ２５（図１０のステップＳ４０）に移行される。
【０３１３】
図１０のステップＳ４０で、前回読み込まれたビット列（ｄ）と、今回読み込まれたビット列（ｅ）とが比較され、比較結果に基づきランレングス処理が可能ではないと判断され（ステップＳ４１）、処理がステップＳ４５に移行され、ラン数が「０」か否かが判断される。上述のステップＳ４２でラン数が「３」となっているので、処理がステップＳ４７に移行されて第２のフラグの値が"１"に設定され、次のステップＳ４８で、ランレングス処理の結果が出力される。ここで出力されるランレングス処理の結果は、ラン数「３（４ビットのバイナリ表記で「００１１」）」と、第２のフラグの値"１"である。すなわち、このステップＳ４８で、図４３Ｄに示す出力データ１０２Ａ’（第２のフラグ）および出力データ１０３’（ラン数）が確定される。
【０３１４】
上述のステップＳ３２とこのステップＳ４８により、図４３Ｂに示されるビット列（ａ）〜ビット列（ｄ）までの符号化が終了される。圧縮符号化されたデータは、図４３Ｄに一例が示されるように、第１のフラグによる出力データ１０２Ａ’、ランレングスのレベルによる出力データ１００Ａ’、第２のフラグによる出力データ１０１Ａ’および１バイト単位でのランレングス処理のラン数による出力データ１０３’の順に出力される。この例では、全て値が"０"である３２ビットのビット列が８ビットのビット列「１００１００１１」に圧縮符号化されている。
【０３１５】
次のステップＳ４９で第３のフラグの値が"０"に設定され、さらに次のステップＳ５０で、次の処理がＭＳＢ側ビット単位のランレングス処理に決められ、処理はステップＳ２０に戻される。
【０３１６】
ステップＳ２０からステップＳ２１に処理が移行され、上述のステップＳ４９で第３のフラグの値が"０"に設定されているので、新たなデータを読み込むことなく処理はステップＳ２３に移行される。上述のステップＳ５０で次の処理がＭＳＢ側ビット単位のランレングス処理に決められているので、処理はステップＳ２３からステップＳ２４（図４２のステップＳ３０）に移行される。
【０３１７】
図４２のステップＳ３０では、現在読み込まれている所定バイト分のビット列（ｅ）「１０１０１０１０」に対してＭＳＢ側ビット単位で比較がなされ、比較結果に基づきランレングス処理が可能と判断され（ステップＳ３１）、ステップＳ３２で第１のフラグの値が"１"に設定される。そして、次のステップＳ３３でビット列（ｅ）に対してＭＳＢ側ビット単位でランレングス処理がなされ、繰り返されたＭＳＢ側ビットのビット列「１０」がランレングスのレベルとして出力されると共に、第１のフラグが出力される。このステップＳ３２およびステップＳ３３で、図４３Ｄに示す出力データ１００Ｂ’（第１のフラグ）および出力データ１０１Ｂ’（ランレングスのレベル）が確定される。
【０３１８】
次に、所定バイト単位でのランレングス処理におけるラン数が「０」に設定されると共に、第３のフラグの値が"１"に設定され（ステップＳ３４）、さらに、次の処理が所定バイト単位のランレングス処理に決められ（ステップＳ３５）、処理が図８のステップＳ２０に戻される。
【０３１９】
ステップＳ２０からステップＳ２１に処理が移行され、第３のフラグの値に基づき処理がさらにステップＳ２２に移行され、ＭＳＢ側データ用メモリ１６から、ビット列（ｅ）に隣接する次の所定バイト分のビット列（ｆ）「１１０１０１０１」が読み込まれる。次のステップＳ２３では、上述したように図４２のステップＳ３５で次の処理が所定バイト単位のランレングス処理に決められているため、処理がステップＳ２５（図１０のステップＳ４０）に移行される。
【０３２０】
図１０のステップＳ４０で、前回読み込まれたビット列（ｅ）と、今回読み込まれたビット列（ｆ）とが比較され、比較結果に基づきランレングス処理が可能ではないと判断され（ステップＳ４１）、処理がステップＳ４５に移行され、ラン数が「０」であるか否かが判断される。ラン数は「０」となっているので、処理がステップＳ４６に移行され第２のフラグの値が"０"に設定され、次のステップＳ４８でランレングス処理の結果が出力される。ここで出力されるランレングス処理の結果は、ラン数「０」と、第２のフラグの値"０"である。
【０３２１】
図４１を用いて説明したように、第２のフラグの値が"０"の場合には、ラン数が出力されないため、このステップＳ４８で、図４３Ｄに示す出力データ１０２Ｂ（第２のフラグ）が確定される。また、ラン数が出力されないため、図４１に示す第２の領域が割り当てられないことが確定される。
【０３２２】
このステップＳ４８の時点で、ビット列（ｅ）の符号化処理が終了したことになる。圧縮符号化されたデータは、図４３Ｄに一例が示されるように、第１のフラグによる出力データ１０２Ｂ’、ランレングスのレベルによる出力データ１００Ｂ’、第２のフラグによる出力データ１０１Ｂ’の順に出力される。８ビットのビット列「１０１０１０１０」が４ビットのビット列「１１００」に圧縮符号化されている。
【０３２３】
次のステップＳ４９で、第３のフラグの値が"０"に設定され、さらに次のステップＳ５０で、次の処理がＭＳＢ側ビット単位のランレングス処理に決められ、処理が図８のステップＳ２０に戻される。
【０３２４】
ステップＳ２０からステップＳ２１に処理が移行され、第３のフラグの値に基づき処理がステップＳ２３に移行され、上述のステップＳ５０で次の処理がＭＳＢ側ビット単位のランレングス処理に決められているので、処理はステップＳ２４（図４２のステップＳ３０）に移行される。
【０３２５】
図４２のステップＳ３０では、現在読み込まれている１バイト分のビット列（ｆ）「１１０１０１０１」が読み込まれているので、このビット列（ｆ）において、図４３Ｃに示すＭＳＢ側ビットＣ「１１」に対して比較がなされる。比較結果に基づきランレングス処理が可能ではないと判断され（ステップＳ３１）、ステップＳ３６で第１のフラグの値が"０"に設定され、ステップＳ３７で、ビット列（ｆ）がそのまま出力される。さらに、ステップＳ３７１で第２のフラグの値が"０"に設定される。
【０３２６】
このステップＳ３６、ステップＳ３７およびステップＳ３７１で、図４３Ｄに示す出力データ１００Ｃ（第１のフラグ）および出力データ１０４（ビット列（ｆ））とが確定される。また、ステップＳ３６で第１のフラグの値が"０"に設定されているため、図４１のデータ構造の説明に従い、第２のフラグが出力されない。
【０３２７】
この時点で、上述した図４１に示すＭＳＢ側のデータ構造を単位とする処理が完結し、ビット列（ｆ）の符号化処理が終了したことになる。この場合は、ＭＳＢ側ビット単位および所定バイト単位のランレングス処理が共に行われず、ＭＳＢ側ビットの圧縮符号化がなされていないため、８ビットのビット列「１１０１０１０１」に対して第１のフラグが付加され、９ビットのビット列「０１１０１０１０１」となっている。ＭＳＢ側ビット単位および所定バイト単位のランレングス処理が共に行われない場合のデータ長が上述した実施の第１の形態の場合に比べて、１ビット分、短縮される。
【０３２８】
次のステップＳ３８で第３のフラグの値が"１"に設定され、次のステップＳ３９で、次の処理がＭＳＢ側ビット単位のランレングス処理に決められる。これは、１バイト分のビット列に対してＭＳＢ側ビット単位でのランレングス処理ができない場合には、所定バイト単位でのランレングス処理ができる可能性が低いと考えられるからである。
【０３２９】
処理は図８のステップＳ２０に戻され、１フレーム分の処理が未だ終了していないので処理がステップＳ２１に移行される。以下、処理が同様にして繰り返される。
【０３３０】
２−１−１−５．出力形式について
図４４は、上述した、この実施の第２の形態によるＬＳＢ側ビットおよびＭＳＢ側ビットに対する圧縮符号化処理により得られた出力データの、一例の出力形式を示す。なお、この図４４の例は、上述した図４３Ｄに示したデータ出力に対応している。上述したように、この発明の実施の第２の形態では、圧縮符号化されたＬＳＢ側ビットとＭＳＢ側ビットとを、インターリーブして出力する。インターリーブの単位は、所定バイト単位のＭＳＢ側ビットが復号可能なデータ構造に基づき決めることができる。なお、実施の第２の形態による復号化処理については、後述する。
【０３３１】
例えば、ＭＳＢ側ビットの上述した図４１の構造を単位として、ＭＳＢ側ビットの圧縮符号化データと、ＬＳＢ側ビットの圧縮符号化データとが交互に配置される。ＭＳＢ側ビットの圧縮符号化データに含まれるＭＳＢ側ビットに対応するＬＳＢ側ビットの圧縮符号化データが、ＭＳＢ側ビットの圧縮符号化データに続けて配置される。
【０３３２】
ＭＳＢ側圧縮符号化データにおいては、第１のフラグの値が"１"であれば、少なくとも第１のフラグ、ＭＳＢ側ビット単位のランレングス処理のレベルおよび第２のフラグが順に出力され、第２のフラグの値が"１"であれば、さらに所定バイト単位のランレングス処理のラン数が出力される。図４４のＭＳＢ側圧縮符号化データ１１０’は、第１および第２のフラグの値がそれぞれ"１"であり、ＭＳＢ側ビット単位のランレングス処理のレベルと、所定バイト単位のランレングス処理のラン数とが出力されている例である。また、ＭＳＢ側圧縮符号化データ１１２’は、第１のフラグの値が"１"、第２のフラグの値が"０"であって、所定バイト単位のランレングス処理のラン数が出力されていない例である。
【０３３３】
一方、ＭＳＢ側圧縮符号化データ１１４’は、第１のフラグの値が"０"であり、第１のフラグと、圧縮符号化されていないＭＳＢ側ビットの所定バイト分のビット列とが出力されている例である。
【０３３４】
２−１−２．実施の第２の形態の第１の変形例について（第１の異なる出力形式）
次に、この発明の実施の第２の形態の第１の変形例について説明する。この実施の第２の形態の第１の変形例は、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、出力データを、１の出力系統に対してＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとに分離して出力するようにした例である。
【０３３５】
なお、この実施の第２の形態の第１の変形例において、符号化処理は、上述した実施の第１の形態の第１の変形例による符号化装置１Ｂにより行うことができると共に、符号化装置１Ｂにより行われる圧縮符号化処理は、上述した実施の第２の形態による処理と同一の処理で行われるため、符号化装置および符号化処理についての詳細な説明は、繁雑さを避けるために省略する。また、以下において、所定バイトは１バイトである。
【０３３６】
すなわち、この実施の第２の形態の第１の変形例では、符号化装置１Ｂは、ＬＳＢ側ビットの圧縮符号化処理は、上述した実施の第１の形態の第１の変形例と同様に、ＤＰＣＭ符号化部１３により直前に処理したＬＳＢ側ビットと現在のＬＳＢ側ビットとの差分をとり、この差分データに対してハフマン符号化部１４でハフマンテーブルを用いて可変長の圧縮符号化を行い、圧縮長計算部２０でハフマン符号化部１４による符号化の際の符号長を求める。
【０３３７】
また、ＭＳＢ側ビットの圧縮符号化は、１重目ランレングス処理部１７と２重目ランレングス処理部１８とにより、実施の第２の形態で図６〜図８、図１０および図４２を用いて説明したようにして、ＭＳＢ側ビット単位のランレングス処理および所定バイト単位でのランレングス処理を行い、第１および第２のフラグをそれぞれ設定する。
【０３３８】
図４５は、この実施の第２の形態の第１の変形例による、ＭＳＢ側ビットおよびＬＳＢ側ビットが圧縮符号化されて出力される際の、一例の出力形式を示す。圧縮符号データ長情報、ＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データの配置は、図１４を用いて説明した実施の第１の形態の第１の変形例の場合の配置と同様である。すなわち、先頭に圧縮符号データ長情報が配置され、圧縮符号データ長情報の後ろから圧縮符号データ長情報で示される位置までＬＳＢ側圧縮符号化データが配置され、当該圧縮符号化データ情報で示される位置から後ろにＭＳＢ側圧縮符号化データが配置される。ＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データは、それぞれ符号化の区切りに応じた画素分のデータが全て配置される。
【０３３９】
ＭＳＢ側圧縮符号化データは、図４４を用いて説明した実施の第２の形態による出力形式と同様に、第１のフラグの値が"１"であれば、少なくとも第１のフラグ、ＭＳＢ側ビット単位のランレングス処理のレベルおよび第２のフラグが順に出力され、第２のフラグの値が"１"であれば、さらに所定バイト単位のランレングス処理のラン数が出力される。また、第１のフラグの値が"０"であれば、第１のフラグと、圧縮符号化されていないＭＳＢ側ビットの所定バイト分のビット列とが出力される。このようなデータ構造が連続的に出力される。
【０３４０】
なお、この実施の第２の形態の第１の変形例においても、ＭＳＢ側圧縮符号化データを前側に配置し、ＬＳＢ側圧縮符号化データを後側に配置することもできる。
【０３４１】
２−１−３．実施の第２の形態の第２の変形例について（第２の異なる出力形式）
次に、この発明の実施の第２の形態の第２の変形例について説明する。この実施の第２の形態の第１の変形例は、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、出力データを、ＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとをそれぞれ独立的に出力するようにした例である。
【０３４２】
なお、この実施の第２の形態の第１の変形例において、符号化処理は、上述した実施の第１の形態の第２の変形例による符号化装置１Ｃにより行うことができると共に、符号化装置１Ｃにより行われる圧縮符号化処理は、上述した実施の第２の形態の第１の変形例による処理と同一の処理で行われるため、符号化装置および符号化処理についての詳細な説明は、繁雑さを避けるために省略する。また、以下において、所定バイトは１バイトである。
【０３４３】
すなわち、この実施の第２の形態の第２の変形例では、ＬＳＢ側ビットの圧縮符号化出力およびＭＳＢ側ビットの圧縮符号化出力は、出力データ用メモリ１５Ａおよび１５Ｂからそれぞれ独立的に読み出され、図４６に一例が示されるように、出力データ２２Ａおよび出力データ２２Ｂ’の２系統のデータとして出力される。
【０３４４】
ＭＳＢ側圧縮符号化データが出力される出力データ２２Ｂ’は、上述の実施の第２の形態の第１の変形例と同様に、第１のフラグの値が"１"であれば、少なくとも第１のフラグ、ＭＳＢ側ビット単位のランレングス処理のレベルおよび第２のフラグが順に出力され、第２のフラグの値が"１"であれば、さらに所定バイト単位のランレングス処理のラン数が出力される。また、第１のフラグの値が"０"であれば、第１のフラグと、圧縮符号化されていないＭＳＢ側ビットの所定バイト分のビット列とが出力される。このようなデータ構造が連続的に出力される。
【０３４５】
出力データ２２Ａおよび出力データ２２Ｂ’は、例えばそれぞれ異なるファイルに格納される。
【０３４６】
２−１−４．実施の第２の形態の第３の変形例について（異なる符号化単位）
次に、この発明の実施の第２の形態の第３の変形例について説明する。この実施の第２の形態の第３の変形例は、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、所定バイトを２バイトとし、ＭＳＢ側ビット単位のランレングス処理を２バイトを単位として行う例である。
【０３４７】
なお、この実施の第２の形態の第３の変形例では、実施の第２の形態と同様に、上述した実施の第１の形態による符号化装置１Ａ（図１参照）をそのまま適用できると共に、実施の第２の形態による図６〜図８、図１０、ならびに、図４２のフローチャートを用いて説明した符号化処理が、基本的に、そのまま適用できる。そのため、これらの詳細な説明については、繁雑さを避けるために省略する。また、ＬＳＢ側ビットに対する圧縮符号化処理は、実施の第１の形態で説明した、１バイトのビット列についてＬＳＢ側ビットのランレングス処理を行う場合と同一であるので、説明を省略する。
【０３４８】
また、データ分離部１１および１重目ランレングス処理部１７における概略的な処理は、図１７を用いて説明した実施の第１の形態の第３の変形例による処理と同様なので、詳細な説明を省略する。すなわち、データ分離部１１では、画素データ毎に、ＬＳＢ側の８ビットと当該ＬＳＢ側の８ビットを除いたＭＳＢ側のビットとを分離する。そして、１重目ランレングス処理部１７では、ＭＳＢ側ビットの所定バイトすなわち２バイト分からなるビット列に対して、ＭＳＢ側ビットのビット数単位でビット列を比較してランレングス処理を行う。
【０３４９】
図４７は、この実施の第２の形態の第３の変形例によるＭＳＢ側の出力データの一例の構造を示す。図４７に示されるように、実施の第２の形態の第３の変形例に適用可能なデータ構造は、基本的には、図４１に示した実施の第２の形態に適用可能なデータ構造と同様である。すなわち、出力データは、データ先頭の１ビットのデータ長を持つ固定長の部分と、この固定長の部分に続く可変長の部分とからなる。固定長の部分には、第１のフラグが配置される。
【０３５０】
また、可変長の部分には、先頭側から、ＭＳＢ側ビット単位のランレングス処理によるランレングスのレベルが格納される第１の領域と、所定バイトすなわち２バイト単位でのランレングス処理を行ったか否かを示す第２のフラグと、所定バイト単位のランレングス処理によるラン数が格納される第２の領域とが配置される。若しくは、可変長の部分には、ＭＳＢ側ビット単位でのランレングス処理および所定バイト単位のランレングス処理が行われない場合の、圧縮符号化がなされていない所定バイト分のビット列が配置される。
【０３５１】
第１の領域は、第１のフラグの値が"１"であれば、ＭＳＢ側ビットのビット数に応じたデータ長が割り当てられ、ランレングスのレベルが格納される。一方、第１のフラグの値が"０"であれば、第１の領域には、所定バイトのデータ長が割り当てられ、所定数のＭＳＢ側ビットからなるビット列が格納される。
【０３５２】
第１の領域の次に、上述の実施の第２の形態と同様に、第１のフラグの値に応じて第２のフラグが配置される。すなわち、第１のフラグの値が"１"であれば、第１の領域に続けて１ビットが割り当てられ第２のフラグが配置される。一方、第１のフラグの値が"０"であれば、第２のフラグは出力されない。また、第２のフラグの次に、第２のフラグの値に応じて第２の領域が割り当てられる。すなわち、第２のフラグの値が"１"であれば、第２の領域に対して所定ビット数が割り当てられ、２重目ランレングス処理部１８によるランレングス処理のラン数が格納される。一方、第２のフラグの値が"０"であれば、第２の領域が割り当てられない。
【０３５３】
図４８は、この実施の第２の形態の第３の変形例による、ＭＳＢ側ビットの一例の圧縮符号化処理を概略的に示す。ここでは、画素データの量子化ビット数が１０ビットであって１画素が１０ビットのデータ長を持つものとする。図４８Ａに一例が示されるように、データ分離部１１において、２ビットからなるＭＳＢ側ビットが画素毎に分離され、表示順に並べられてＭＳＢ側データ用メモリ１６に格納される。このＭＳＢ側ビットの８画素分からなる所定バイトすなわち２バイトのビット列を単位として、ランレングス処理が行われる。
【０３５４】
例えば、図４８Ｂに例示される所定バイトのビット列（Ａ）「００００００００００００００００」は、先頭のＭＳＢ側ビットのビット列「００」が８回繰り返されてなると共に、隣接する所定バイトのビット列（Ｂ）「００００００００００００００００」と一致する。このビット列（Ａ）に対し、先頭のＭＳＢ側ビットのビット列「００」について、ＭＳＢ側ビット単位でランレングス処理が行われ、第１のフラグの値が"１"に設定される。また、ビット列（Ａ）に隣接する所定バイトのビット列（Ｂ）が当該ビット列（Ａ）と比較されて、所定バイト単位でランレングス処理が行われ（図４８Ｃ参照）、第２のフラグの値が"１"に設定される。
【０３５５】
第１のフラグの値が"１"なので、第１の領域に２ビットが割り当てられランレングスのレベルが格納されると共に、第２のフラグの１ビットが第１の領域の後ろに割り当てられる。第２のフラグの値が"１"なので、第２の領域に対して４ビットが割り当てられ、所定バイト単位でのランレングス処理のラン数が格納される（図４８Ｄ参照）。
【０３５６】
また、図４８Ｂに例示される所定バイトのビット列（Ｃ）「１０１０１０１０１１０１０１０１」については、先頭のＭＳＢ側ビットのビット列「１０」の繰り返しとなっていないので、ＭＳＢ側ビット単位のランレングス処理が行われず、第１のフラグの値が"０"に設定される。それに伴い、隣接する所定バイトのビット列との所定バイト単位の比較もなされず（図４２のフローチャートのステップＳ３０、ステップＳ３１、ステップＳ３６〜ステップＳ３９など参照）、第２のフラグの値が"０"に設定される（図４２のステップＳ３７１参照）。第１のフラグの値が"０"なので、第１の領域に所定バイトが割り当てられ、ビット列（Ｃ）がこの第１の領域にそのまま格納される。また、第２のフラグの値が"０"なので、第２の領域が出力されず、さらに、第１のフラグの値が"０"なので、第２のフラグも出力されない（図４８Ｄ参照）。
【０３５７】
なお、この実施の第２の形態の第３の変形例にも、図４４を用いて説明した、実施の第２の形態による、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとをインターリーブした出力形態や、図４５を用いて説明した、実施の第２の形態の第１の変形例による、１の出力系統に対してＬＳＢ側ビットとＭＳＢ側ビットに分離して出力する出力形態、さらに、図４６を用いて説明した、実施の第２の形態の第２の変形例による、ＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとをそれぞれ独立的に出力する出力形態の何れをも適用することが可能である。
【０３５８】
また、この実施の第２の形態の第３の変形例では、ＭＳＢ側ビットのランレングス処理を２バイトのビット列について行っているが、これはこの例に限らず、ＭＳＢ側ビットのランレングス処理を３バイト若しくはそれ以上のデータ長のビット列について行ってもよい。
【０３５９】
２−２．実施の第２の形態による復号化処理について
次に、上述した実施の第２の形態による、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、ＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとがインターリーブされて出力する例に対応した一例の復号化処理について説明する。
【０３６０】
なお、この実施の第２の形態では、上述した実施の第１の形態による復号化処理を行う復号化装置２Ａをそのまま適用することができるため、復号化装置の詳細な説明を省略する。
【０３６１】
２−２−１−２．復号化処理について
この実施の第２の形態による復号化処理は、全体的な流れ、ＬＳＢ側圧縮符号化データの復号化処理およびデコード済みサンプル数の算出処理については、図２１、図２３および図２４を用いて説明した、上述の実施の第１の形態による復号化処理と同様である。この実施の第２の形態による復号化処理では、第２のフラグの位置が変更されたのに伴い、ＭＳＢ側圧縮符号化データの復号化処理が変更されている。以下、図２１、図２３および図２４のフローチャートを適宜、参照しながら説明する。
【０３６２】
すなわち、全体的には、図２１で説明したように、ステップＳ６０で圧縮符号化前のベースバンドの画素データのビット数が設定され、次のステップＳ６１で、この実施の第２の形態による、図６〜図８および図１０、ならびに、図４２に示した符号化処理で圧縮符号化された圧縮符号化データが、例えばファイルを介して読み込まれる。ステップＳ６２で、後述する図４９に一例が示されるフローチャートに従いＭＳＢ側圧縮符号化データの復号化処理が行われ、ステップＳ６３を介して処理がステップＳ６４に移行される。
【０３６３】
ステップＳ６４で、図２４に一例が示される処理によりＬＳＢ側圧縮符号化データの復号化が行われ、ステップＳ６５で、復号化されたＭＳＢ側ビットとＬＳＢ側ビットとが統合される。ステップＳ６３で、ＬＳＢ側圧縮符号化データに関して、図２３に一例が示される処理により求められるデコード済みのサンプル数分を全て処理していると判断されれば、ステップＳ６６で１フレーム分の処理が終了したか否かが判断され、終了していなければ、ステップＳ６２からの処理が繰り返される。
【０３６４】
図４９は、この実施の第２の形態によるＭＳＢ側ビットに対する一例の復号化処理を示すフローチャートである。この図４９に示すフローチャートは、図２２を用いて説明した、上述の実施の第１の形態による復号化処理に対して、第２のフラグを取得するステップの位置が異ならされ、第１のフラグの値に基づく判断の後に、第２のフラグが取得されるようになっている。
【０３６５】
すなわち、図４９のフローチャートにおいて、図４１を用いて説明したＭＳＢ側の出力データのデータ構造を参照し、最初のステップＳ８０で先頭の１ビットが読み込まれて１重目復号化部３２に第１のフラグが取得される。次のステップＳ８２で、取得された第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われているか否かが判断される。若し、第１のフラグの値が"１"であり、ＭＳＢ側ビット単位でのランレングス処理が行われていると判断されれば、処理はステップＳ８３に移行され、１重目復号化部３２により第１のフラグの次の２ビット、すなわちランレングスのレベルが読み込まれる。そして、所定バイト数（この例では１バイト）になるまで、読み込まれた２ビットの値が繰り返し出力される。
【０３６６】
一方、ステップＳ８２で、若し第１のフラグの値が"０"であり、ＭＳＢ側ビット単位でのランレングス処理が行われていないと判断されれば、処理はステップＳ８８に移行され、第１のフラグに続く所定バイトすなわち１バイトが読み込まれ、出力される。そして、処理はステップＳ８９に移行され、デコード済みサンプル数が取得される。
【０３６７】
ステップＳ８３でのランレングスのレベルによる出力が終了したら、処理は次のステップＳ８３１に移行される。このステップＳ８３１では、ランレングスのレベルの次の１ビットが読み込まれ、２重目復号化部３３に第２のフラグが取得される。そして、次のステップＳ８４で、取得された第２のフラグの値に基づき所定バイト単位でのランレングス処理が行われているか否かが判断される。
【０３６８】
若し、第２のフラグの値が"１"であり、所定バイト単位でのランレングス処理が行われていると判断されれば、処理はステップＳ８５に移行され、第２のフラグの次の４ビットが読み込まれ、所定バイト単位でのランレングス処理によるラン数が取得される。そして、次のステップＳ８６で、２重目復号化部３３は、上述したステップＳ８３で１重目復号化部３２から出力された所定バイト分のデータが、取得されたラン数分、繰り返して出力され、次のステップＳ８７でデコード済みサンプル数が取得される。
【０３６９】
２−２−１−３．復号化処理の具体的な例
上述した図２１、図２３、図２４および図４９のフローチャート、ならびに、図５０〜図５５を用いて、この実施の第２の形態による復号化処理を、具体的な例を挙げて説明する。ここでは、画素データの量子化ビット数を１０ビットとし、所定バイトが１バイトであって、１バイトを単位として符号化がなされているものとする。
【０３７０】
ＭＳＢ側圧縮符号化データが図５０Ａに示されるビット列「１００１００１１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図５０Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理と、所定バイト単位でのランレングス処理とが共に行われている例である。
【０３７１】
先ず、図４９のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第１のフラグが取得される。図５０Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図５０Ｂの復号手順（１））。ステップＳ８２の判断に従い処理がステップＳ８３に移行され、第１のフラグの次に配置される、ランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれたランレングスのレベルのビットが所定バイトの長さになるまで繰り返し出力される。図５０Ａの例では、ランレングスのビットを示すビット列が「００」となっているので、このビット列「００」が４回繰り返され、ビット列「００００００００」が出力される（図５０Ｂの復号手順（２））。
【０３７２】
次に、第１のフラグの値が"１"であれば、ランレングスのレベルを示す２ビットの次に、１ビットの第２のフラグが配置されていることになる。ステップＳ８３１で、ランレングスのレベルを示す２ビットの次の１ビットが読み込まれ、第２のフラグが取得される。この図５０Ａの例では、第２のフラグの値が"１"であって、所定バイト単位でのランレングス処理が行われていることが示される（図５０Ｂの復号手順（３））。
【０３７３】
次のステップＳ８４の判断では、第２のフラグの値が"１"なので所定バイト単位でのランレングス処理が行われたと判断され、図４９のステップＳ８５に従い第２のフラグの次の、所定バイト単位でのランレングス処理のラン数を示す４ビットのビット列が読み込まれる。図５０Ａの例では、ラン数を示すビット列が「００１１」となっているので、ラン数が「３」であるとされ、直前に出力されたビット列「００００００００」が３回繰り返されて出力される（図５０Ｂの復号手順（４））。
【０３７４】
この復号手順（１）〜復号手順（４）までで、上述した図４１に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、デコード済みサンプル数が分かるので（図４９のステップＳ８７）、個のデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０３７５】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が行われる。この統合処理は、図２１のフローチャートで説明したように、１画素分のＬＳＢ側ビットが復号化される毎に行われる。
【０３７６】
図５１を用いて、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理について説明する。この統合処理は、基本的には、上述した実施の第１の形態において図２６を用いて説明した処理と同様である。図５１Ａの先頭に配置されるＭＳＢ側圧縮符号化データ（１）から、図５０を用いて説明したような処理より、ＭＳＢ側ビットのビット列「００」がＭＳＢ側ビット単位のランレングス処理の復号化により４回繰り返され、さらに所定バイト単位のランレングス処理の復号化により３回繰り返されたビット列「００００００００００００００００」が得られ（図５１Ｂ左側参照）、ＭＳＢ側出力メモリ３４に格納される。デコード済みサンプル数は、（ＭＳＢ側ビット単位のデコード済みサンプル数Ｎ）×（所定バイト単位のランレングス処理のラン数＋１）＝４×（３＋１）＝１６となる。
【０３７７】
一方、ＬＳＢ側圧縮符号化データは、例えば１画素分のＬＳＢ側ビットが復号化される毎にＬＳＢ側出力メモリ３７に格納される（図５１Ｂ右側参照）。
【０３７８】
データ統合部３８は、ＭＳＢ側出力メモリ３４に格納したビット列「００００００００００００００００」を、ＭＳＢ側ビット毎すなわち２ビットのビット列「００」毎に、ＬＳＢ側出力メモリ３７に格納した、デコード済みサンプル数分のＬＳＢ側ビットの１画素分すなわち８ビットに対して、ＭＳＢ側ビットとＬＳＢ側ビットとが対応するようにそれぞれ接続してＭＳＢ側ビットとＬＳＢ側ビットとを統合して、デコード済みサンプル数分すなわち１６サンプル分の画素データを得る（図５１Ｃ）。
【０３７９】
ＭＳＢ側圧縮符号化データが図５２Ａに一例が示されるビット列「１１００」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図５２Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理が行われ、所定バイト単位でのランレングス処理が行われない例である。
【０３８０】
先ず、図４９のフローチャートのステップＳ８０に従い先頭が１ビットが読み込まれて第１のフラグが取得される。図５２Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図５２Ｂの復号手順（２））。次のステップＳ８２の判断では、第１のフラグの値が"１"なのでＭＳＢ側ビット単位でのランレングス処理が行われていると判断され、次のステップＳ８３に従い、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列が読み込まれ、読み込まれたランレングスのレベルのビット列が所定バイトの長さになるまで繰り返される。図５２Ａの例では、ランレングスのレベルを示すビット列が「１０」となっているので、このビット列「１０」が４回繰り返され、ビット列「１０１０１０１０」が出力される（図５２Ｂの復号手順（２））。
【０３８１】
次に、第１のフラグの値が"１"であれば、ランレングスのレベルを示す２ビットの次に、１ビットの第２のフラグが配置されていることになる。ステップＳ８３１で、ランレングスのレベルを示す２ビットの次の１ビットが読み込まれ、第２のフラグが取得される。この図５２Ａの例では、第２のフラグの値が"０"であって、所定バイト単位でのランレングス処理が行われていないことが示される（図５２Ｂの復号手順（３））。
【０３８２】
次のステップＳ８４の判断では、第２のフラグの値が０なので、１バイト単位のランレングス処理が行われていないと判断され、処理はステップＳ８９に移行される。この図５２Ａのビット列の場合は、この復号手順（１）〜復号手順（３）までで、図４１に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０３８３】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が、１画素分のＬＳＢ側ビット毎に行われる。
【０３８４】
この場合のＭＳＢ側ビットとＬＳＢ側ビットとの統合処理は、図５１を用いて説明した処理と略同様である。すなわち、図５３に一例が示されるように、図５３Ａに示すＭＳＢ側圧縮符号化データ（２）から、図５２を用いて説明した処理により、ＭＳＢ側ビットのビット列「１０」がＭＳＢ側ビット単位のランレングス処理の復号化により４回繰り返された「１０１０１０１０」が得られる（図５３Ｂ左側参照）。このビット列がＭＳＢ側出力メモリ３４に格納され、デコード済みサンプル数が（ＭＳＢ側ビット単位のデコード済みサンプル数Ｎ）×（所定バイト単位のランレングス処理のラン数＋１）＝４×（０＋１）＝４と求められる。
【０３８５】
一方、ＬＳＢ側圧縮符号化データは、例えば１画素分のＬＳＢ側ビットが復号化される毎にＬＳＢ側出力メモリ３７に格納される（図２８Ｂ右側参照）。
【０３８６】
データ統合部３８は、ＭＳＢ側出力メモリ３４に格納したビット列「１０１０１０１０」を、ＭＳＢ側ビット毎すなわち２ビット毎「１０」、「１０」、「１０」、「１０」に、ＬＳＢ側出力メモリ３７に格納した、デコード済みサンプル数分のＬＳＢ側ビットの１画素分すなわち８ビットに対して、ＭＳＢ側ビットとＬＳＢ側ビットとが対応するようにそれぞれ接続してＭＳＢ側ビットとＬＳＢ側ビットとを統合して、デコード済みサンプル数分すなわち４画素分の画素データを得る（図５３Ｃ）。
【０３８７】
ＭＳＢ側圧縮符号化データが図５４Ａに一例が示されるビット列「０１１０１０１０１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図５４Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理と所定バイト単位でのランレングス処理とが行われない例である。
【０３８８】
図４９のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれて第１のフラグが取得され、この第１のフラグの値"０"に基づき、ＭＳＢ側ビット単位でのランレングス処理が行われていないことが示される（図５４Ｂの復号手順（１））。この第１のフラグの値"０"に基づき、ステップＳ８２でＭＳＢ側ビット単位でのランレングス処理が行われていないと判断され、処理がステップＳ８８に移行され、第１のフラグの次に配置される所定バイト分のビット列「１１０１０１０１」が出力される（図５４Ｂの復号手順（２））。
【０３８９】
この復号手順（１）および復号手順（２）まで、上述した図４１に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０３９０】
復号化されたＭＳＢ側ビットとＬＳＢ側ビットとの、データ統合部３８における統合処理は、図５１および図５３を用いて説明した処理と略同様である。すなわち、図５５に一例が示されるように、図５５Ａに示すＭＳＢ側圧縮符号化データ（３）から、図５４を用いて説明した処理により、第１のフラグの次に配置される所定バイト分のビット列「１１０１０１０１」が得られ（図５５Ｂ左側参照）、このビット列がＭＳＢ側メモリ３４に格納される。
【０３９１】
この例では、所定バイト単位でのランレングス処理が行われていないので、上述した図２３のフローチャートのステップＳ１３２の判断に従い、ＭＳＢ側ビットの繰り返し数「４」がデコード済みのサンプル数Ｎとされる。
【０３９２】
一方、ＬＳＢ側圧縮符号化データは、例えば１画素分のＬＳＢ側ビットが復号化される毎にＬＳＢ側出力メモリ３７に格納される（図５５Ｂ右側参照）。
【０３９３】
データ統合部３８は、ＭＳＢ側出力メモリ３４に格納したビット列「１１０１０１０１」を、ＭＳＢ側ビット毎すなわち２ビット毎「１１」、「０１」、「０１」、「０１」に、ＬＳＢ側出力メモリ３７に格納した、デコード済みサンプル数分のＬＳＢ側ビットの１画素分すなわち８ビットに対して、ＭＳＢ側ビットとＬＳＢ側ビットとが対応するようにそれぞれ接続してＭＳＢ側ビットとＬＳＢ側ビットとを統合して、デコード済みサンプル数分の画素データを得る（図５５Ｃ）。
【０３９４】
２−２−２．実施の第２の形態の第１の変形例による復号化処理について
次に、上述した実施の第２の形態の第１の変形例による、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、１の出力系統に対してＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとに分離して出力する例に対応した一例の復号化処理について説明する。
【０３９５】
なお、この実施の第２の形態の第１の変形例では、上述した実施の第１の形態の第１の変形例による復号化処理を行う復号化装置２Ｂをそのまま適用することができるため、復号化装置の詳細な説明を省略する。また、以下において、所定バイトは１バイトである。
【０３９６】
２−２−２−２．復号化処理について
この実施の第２の形態の第１の変形例による復号化処理は、全体的な流れおよびＬＳＢ側圧縮符号化データの復号化処理については、図３２および図３３を用いて説明した、上述の実施の第１の形態の第１の変形例による復号化処理と同様である。この実施の第２の形態の第１の変形例による復号化処理では、第２のフラグの位置が変更されたのに伴い、ＭＳＢ側圧縮符号化データの復号化処理が変更されている。以下、図３２および図３３のフローチャートを適宜、参照しながら説明する。
【０３９７】
すなわち、全体的には、図３２で説明したように、ステップＳ９０で圧縮符号化前のベースバンドの画素データのビット数が設定され、次のステップＳ９１で、図６〜図８および図１０、ならびに、図４２に示した符号化処理で圧縮符号化され、この実施の第２の形態の第１の変形例による、１の出力系統に対してＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとに分離して出力された圧縮符号化データが、例えばファイルを介して読み込まれ、入力メモリ３０Ｂに格納される。
【０３９８】
次のステップＳ９２で、メモリ制御部３１によりＬＳＢ側の圧縮符号データ長情報が取得される。ステップＳ９３で上述した図３３のフローチャートに従いＬＳＢ側圧縮符号化データの復号化が行われる。また、ステップＳ９４で、入力メモリ３０に格納された圧縮符号化データが圧縮符号データ長情報に示される位置から読み出され、後述する図５６のフローチャートに従いＭＳＢ側圧縮符号化データの復号化が行われる。
【０３９９】
ステップＳ９３およびステップＳ９４で、１フレーム分のＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データに対する復号化処理が終了すると、ステップＳ９５で、データ統合部３８において、ステップＳ９３で復号化されたベースバンドのＬＳＢ側ビットとステップＳ９４で復号化されたベースバンドのＭＳＢ側ビットとが統合され、１フレーム分の画素データが復元される。
【０４００】
図５６は、この実施の第２の形態の第１の変形例によるＭＳＢ側ビットに対する一例の復号化処理を示すフローチャートである。この図５６に示すフローチャートは、図３４を用いて説明した、上述の実施の第１の形態の第１の変形例による復号化処理に対して、第２のフラグを取得するステップの位置が異ならされ、第１のフラグの値に基づく判断の後に、第２のフラグが取得されるようになっている。
【０４０１】
すなわち、図５６のフローチャートにおいて、ステップＳ１１０で１フレーム分の復号化処理が終了していないとされれば、図４１を用いて説明したＭＳＢ側の出力データのデータ構造を参照し、ステップＳ１１１で先頭の１ビットが読み込まれて１重目復号化部３２に第１のフラグが取得される。次のステップＳ１１３で、取得された第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われているか否かが判断される。若し、第１のフラグの値が"１"であり、ＭＳＢ側ビット単位でのランレングス処理が行われていると判断されれば、処理はステップＳ１１４に移行され、１重目復号化部３２により第１のフラグの次の２ビット、すなわちランレングスのレベルが読み込まれる。そして、所定バイト数（この例では１バイト）になるまで、読み込まれた２ビットの値が繰り返し出力される。
【０４０２】
一方、ステップＳ１１３で、若し第１のフラグの値が"０"であり、ＭＳＢ側ビット単位でのランレングス処理が行われていないと判断されれば、処理はステップＳ１１８に移行され、第１のフラグに続く所定バイトすなわち１バイトが読み込まれ、出力される。
【０４０３】
ステップＳ１１４でのランレングスのレベルによる出力が終了したら、処理は次のステップＳ１１４１に移行される。このステップＳ１１４１では、ランレングスのレベルの次の１ビットが読み込まれ、２重目復号化部３３に第２のフラグが取得される。そして、次のステップＳ１１５で、取得された第２のフラグの値に基づき所定バイト単位でのランレングス処理が行われているか否かが判断される。
【０４０４】
若し、第２のフラグの値が"１"であり、所定バイト単位でのランレングス処理が行われていると判断されれば、処理はステップＳ１１６に移行され、第２のフラグの次の４ビットが読み込まれ、所定バイト単位でのランレングス処理によるラン数が取得される。そして、次のステップＳ１１７で、２重目復号化部３３は、上述したステップＳ１１４で１重目復号化部３２から出力された所定バイト分のデータが、取得されたラン数分、繰り返して出力される。
【０４０５】
２−２−２−３．復号化処理の具体的な例
上述した図３２、図３３および図５６のフローチャート、ならびに、図５７を用いて、実施の第２の形態の第１の変形例による復号化処理について、具体的な例を挙げて説明する。ここでは、画素データの量子化ビット数を１０ビットとし、所定バイトが１バイトであって、１バイトを単位として符号化がなされているものとする。
【０４０６】
ＭＳＢ側圧縮符号化データが図５７Ａに一例が示されるビット列「１００１００１１１１０００１１０１０１０１・・・」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。
【０４０７】
先ず、図５６のフローチャートのステップＳ１１１に従い先頭の１ビットが読み込まれて第１のフラグが取得され、読み込まれた第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図５７Ｂの復号手順（１））。第１のフラグの値が"１"なので、ステップＳ１１３により、ＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、ステップＳ１１４で第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列「００」が読み込まれる。読み込まれた２ビットのビット列「００」が４回繰り返されて所定バイトのビット列「００００００００」が出力される（図５７Ｂの復号手順（２））。
【０４０８】
第１のフラグの値が"１"なので、ランレングスのレベルの次の１ビットは、第２のフラグとなる。次のステップＳ１１４１で、ランレングスのレベルの次の１ビットが読み込まれて第２のフラグが取得され、第２のフラグの値が"１"であって、所定バイト単位でのランレングス処理が行われていることが示される（図５７Ｂの復号手順（３））。ステップＳ１１５により、第２のフラグの値に基づき所定バイト単位でのランレングス処理が行われたと判断され、ステップＳ１１６に従い、第２のフラグの次に配置される、ランレングスのラン数を示す４ビットのビット列「００１１」が読み込まれる。読み込まれたビット列に基づきラン数が「３」であることが分かるので、直前に出力されたビット列「００００００００」が３回繰り返されて出力される（図５７の復号手順（４））。
【０４０９】
処理がステップＳ１１０に戻され、未だ１フレーム分の処理が終了していないので、次のステップＳ１１１に従い、直前に読み込まれたランレングスのラン数を示す４ビットのビット列「００１１」の次の１ビットが読み込まれ、第１のフラグが取得される。図５７Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図５７Ｂの復号手順（５））。ステップＳ１１３により、第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、第１のフラグの次に配置されるランレングスのレベルを示す２ビットのビット列「１０」が読み込まれ、読み込まれたビット列「１０」が４回繰り返され（ステップＳ１１４）、所定バイトのビット列「１０１０１０１０」が出力される（図５７Ｂの復号手順（６））。
【０４１０】
第１のフラグの値が"１"なので、ランレングスのレベルの次の１ビットは、第２のフラグとなる。次のステップＳ１１４１で、ランレングスのレベルの次の１ビットが読み込まれて第２のフラグが取得され、第２のフラグの値が"０"であって、所定バイト単位でのランレングス処理が行われていないことが示される（図５７Ｂの復号手順（７））。次のステップＳ１１５の判断では、第２のフラグの値が"０"なので、所定バイト単位のランレングス処理が行われていないと判断され、処理がステップＳ１１０に戻される。
【０４１１】
未だ１フレームが終了していないので、処理はステップＳ１１０からステップＳ１１１に移行され、直前に読み込まれた第２のフラグの次の１ビットが読み込まれ、第１のフラグが取得される。図５７Ａの例では、取得された第１のフラグの値が"０"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていないことが示される。したがって、次のステップＳ１１３により、第１のフラグの値に基づきＭＳＢ側ビット単位でのランレングス処理が行われていないと判断され、処理がステップＳ１１８に移行され、直前に読み込まれた第１のフラグの次の所定バイトが読み込まれ、この所定バイトのビット列「１１０１０１０１」が出力される。
【０４１２】
上述のような処理を、１フレーム分の画素について終了するまで、例えばファイルから読み出され入力メモリ３０に格納された圧縮符号化データにおける末尾のビットが読み出されるまで繰り返す。
【０４１３】
なお、データ統合部３８による復号化されたベースバンドのＬＳＢ側ビットおよびＭＳＢ側ビットの統合処理は、図３６を用いて説明した、実施の第１の形態の第１の変形例による処理と同一なので、繁雑さを避けるために、詳細な説明を省略する。
【０４１４】
２−２−３．実施の第２の形態の第２の変形例による復号化処理について
次に、上述した実施の第２の形態の第２の変形例による、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、圧縮符号化されたＬＳＢ側ビットおよびＭＳＢ側ビットをそれぞれ独立的に出力する例に対応した一例の復号化処理について説明する。
【０４１５】
なお、この実施の第２の形態の第２の変形例では、上述した実施の第１の形態の第２の変形例による復号化処理を行う復号化装置２Ｃをそのまま適用することができるため、復号化装置の詳細な説明を省略する。また、以下において、所定バイトは１バイトである。
【０４１６】
この実施の第２の形態の第２の変形例による復号化処理は、全体的な流れおよびＬＳＢ側圧縮符号化データの復号化処理については、図３８および図３３を用いて説明した、上述の実施の第１の形態の第２の変形例による復号化処理と同様である。この実施の第２の形態の第２の変形例による復号化処理では、第２のフラグの位置が変更されたのに伴い、ＭＳＢ側圧縮符号化データの復号化処理が変更されている。以下、図３８および図３３のフローチャートを適宜、参照しながら説明する。
【０４１７】
すなわち、全体的には、図３８で説明したように、ステップＳ１２０で圧縮符号化前のベースバンドの画素データのビット数が設定される。そして、図６〜図８および図１０、ならびに、図４２に示した符号化処理で圧縮符号化されたＬＳＢ側圧縮符号化データが、ステップＳ１２１で例えばファイルを介して読み込まれ、ＬＳＢ側入力メモリ３０Ａに格納される。また、同様の符号化処理で圧縮符号化されたＭＳＢ側圧縮符号化データが、ステップＳ１２３で例えばファイルを介して読み込まれ、ＭＳＢ側入力メモリ３０Ａに格納される。
【０４１８】
入力メモリ３０Ｂに格納されたＬＳＢ側圧縮符号化データは、ステップＳ１２２で、上述した図５６のフローチャートに従い復号化される。ステップＳ１２２およびステップＳ１２４で、１フレーム分のＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データに対する復号化処理が終了すると、ステップＳ１２５で、データ統合部３８において、ステップＳ１２２で復号化されたベースバンドのＬＳＢ側ビットとステップＳ１２４で復号化されたベースバンドのＭＳＢ側ビットとが統合され、１フレーム分の画素データが復元される。
【０４１９】
なお、データ統合部３８による復号化されたベースバンドのＬＳＢ側ビットおよびＭＳＢ側ビットの統合処理は、図３６を用いて説明した、実施の第１の形態の第１の変形例による処理と同一なので、繁雑さを避けるために、詳細な説明を省略する。
【０４２０】
２−２−４．実施の第２の形態の第３の変形例による復号化処理について
次に、上述した実施の第２の形態の第３の変形例による、所定バイト単位のビット列が繰り返されるか否かを示す第２のフラグについて、出力データ上の位置を変更し、必要な場合のみ当該第２のフラグを付加する場合において、所定バイトを２バイトとし、ＭＳＢ側ビットのランレングス処理を２バイトのビット列について行った圧縮符号化データに対する復号化処理について説明する。
【０４２１】
なお、この実施の第２の形態の第３の変形例では、上述した実施の第１の形態の符号化装置１Ａに対応する復号化装置２Ａ（図２０参照）をそのまま適用できる。また、復号化処理は、全体的な流れおよびＬＳＢ側圧縮符号化データの復号化処理は、上述の実施の第１の形態で図２１、図２３および図２４を用いて説明した復号化処理をそのまま適用できる。また、ＭＳＢ側圧縮符号化データの復号化処理は、上述の実施の第２の形態で図４９を用いて説明した復号化処理が略適用できる。そのため、これらの詳細な説明については、繁雑さを避けるために省略する。また、以下において、所定バイトは２バイトである。
【０４２２】
また、ＬＳＢ側圧縮符号化データに対する復号化処理は、実施の第１の形態による復号化処理で説明した、１バイトのビット列についてＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データに対する復号化処理と同一であるので、説明を省略する。
【０４２３】
図５８および図５９は、この実施の第２の形態の第３の変形例による復号化処理における一例の復号化手順を示す。この図５８および図５９と、上述した図４９のフローチャートとを用いて、この実施の第２の形態の第３の変形例による復号化処理について説明する。なお、ここでは、圧縮符号化データの出力形式が、実施の第１の形態において図１２を用いて説明した、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとがインターリーブされた形式とする。
【０４２４】
ＭＳＢ側圧縮符号化データが図５８Ａに一例が示されるビット列「１００１０００１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図５８Ａに示すビット列は、ＭＳＢ側ビット単位でのランレングス処理と、所定バイト単位でのランレングス処理とが共に行われている例である。
【０４２５】
先ず、図４９のフローチャートのステップＳ８０に従い先頭のビットが読み込まれて第１のフラグが取得される。図５８Ａの例では、第１のフラグの値が"１"であって、ＭＳＢ側ビット単位でのランレングス処理が行われていることが示される（図５８Ｂの復号手順（１））。図４９のステップＳ８２の判断では、第１のフラグの値が"１"なのでＭＳＢ側ビット単位でのランレングス処理が行われたと判断され、図４９のステップＳ８３に従い、第１のフラグの次に配置される、ランレングスのレベルを示す２ビットのビット列「００」が読み込まれ、読み込まれた２ビットのビット列が所定バイトの長さになるまで繰り返される。図５８Ａの例では、ランレングスのレベルを示す２ビットのビット列「００」が８回繰り返され、ビット列「００００００００００００００００」が出力される（図５８Ｂの復号手順（２））。
【０４２６】
第１のフラグの値が"１"なので、次に、図４９のステップＳ８３１で、直前に読み込まれたランレングスのレベルの次の１ビットは、第２のフラグとなる。次のステップＳ８３１で、ランレングスのレベルの次の１ビットが読み込まれて第２のフラグが取得され、第２のフラグの値が１であって、２バイト単位のランレングス処理が行われていることが示される（図５８Ｂの復号手順（３））。ステップＳ８４により、第２のフラグの値に基づき２バイト単位でのランレングス処理が行われたと判断され、ステップＳ８５に従い、第２のフラグの次に配置される、ランレングスのラン数を示す４ビットのビット列「０００１」が読み込まれる。読み込まれたビット列に基づきラン数が「１」であることが分かるので、直前に出力されたビット列「００００００００００００００００」が１回繰り返されて出力される（図５８Ｂの復号手順（４））。
【０４２７】
この復号手順（１）〜復号手順（４）までで、上述した図４７に示すＭＳＢ側の出力データのデータ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので（図４９のステップＳ８７）、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化が行われる。
【０４２８】
ＭＳＢ側圧縮符号化データが図５９Ａに一例が示される「０１０１０１０１０１１０１０１０１」からなる場合の、ＭＳＢ側圧縮符号化データの復号化処理について説明する。この図５９Ａに示されるビット列は、ＭＳＢ側ビット単位でのランレングス処理と、所定バイト単位でのランレングス処理とが行われない例である。
【０４２９】
図４９のフローチャートのステップＳ８０に従い先頭の１ビットが読み込まれ、第１のフラグが取得され、この第１のフラグの値"０"に基づき、ＭＳＢ側ビット単位でのランレングス処理が行われていないことが示される（図５９Ｂの復号手順（１））。次のステップＳ８２で、第１のフラグの値"０"に基づきＭＳＢ側ビット単位でのランレングス処理が行われていないと判断され、処理がステップＳ８８に移行され、第１のフラグの次に配置される所定バイトのビット列「１０１０１０１０１１０１０１０１」が出力される（図５９Ｂの復号手順（２））。
【０４３０】
個の復号手順（１）および復号手順（２）までで、上述した図４７に示すＭＳＢ側の出力データ構造を単位とする処理が完結したことになる。この時点で、復号化したデコード済みサンプル数が分かるので、このデコード済みサンプル数に基づきＬＳＢ側圧縮符号化データの復号化処理が行われる。この例では、２バイト単位でのランレングス処理が行われていないので、上述した図２３のフローチャートのステップＳ１３２の判断に従い、ＭＳＢ側ビットの繰り返し数「８」がデコード済みのサンプル数Ｎとされる。
【０４３１】
ＬＳＢ側圧縮符号化データの復号化されベースバンドのＬＳＢ側ビットがＬＳＢ側出力メモリ３７に格納されると、データ統合部３８で、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理が行われる。この統合処理は１画素分のＬＳＢ側ビットが復号化される毎に行われる。
【０４３２】
なお、この実施の第２の形態の第３の変形例による復号化処理は、上述のように実施の第２の形態によるＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとをインターリーブした出力形式に適用できるのに限らず、実施の第２の形態の第１の変形例による１の出力系統に対してＬＳＢ側ビットとＭＳＢ側ビットに分離して出力する出力形式に適用することが可能である。この場合、復号化処理は図３１に示した復号化装置２Ｂが用いられ、図３２、図３３および図５６のフローチャートに準じた復号化処理がなされる。
【０４３３】
同様に、この実施の第２の形態の第３の変形例による復号化処理は、実施の第２の形態の第２の変形例によるＬＳＢ側圧縮符号化データとＭＳＢ側圧縮符号化データとをそれぞれ独立的に出力する出力形式にも適用することが可能である。この場合、復号化処理は図３７に示した復号化装置２Ｃが用いられ、図３８、ならびに、図３３および図５６のフローチャートに準じた復号化処理がなされる。
【０４３４】
また、圧縮符号化が３バイト若しくはそれ以上のデータ長を単位としてなされる場合についても、この実施の第２の形態の第３の変形例による復号化処理を同様に適用することができる。
【０４３５】
３．実施の第１および第２の形態に共通して適用可能なハードウェア構成について
３−１．ハードウェア構成の例
次に、上述した実施の第１および第２の形態による符号化装置１Ａ、１Ｂおよび１Ｃ、ならびに、復号化装置２Ａ、２Ｂおよび２Ｃに共通して適用可能なハードウェア構成について、図６０を用いて説明する。この図６０に一例が示されるように、符号化装置１Ａ、１Ｂおよび１Ｃ、ならびに、復号化装置２Ａ、２Ｂおよび２Ｃは、コンピュータ装置と同等の構成により実現可能である。
【０４３６】
ブリッジ２０１は、ＣＰＵ２０３、ＲＡＭ(Random Access Memory)２０４およびＧＰＵ(Graphic Processing Unit)２０５に対するデータ転送を制御する。ＲＡＭ２０４は、ＣＰＵ２０３のワークメモリとして用いられる。ＧＰＵ２０５は、ＣＰＵ２０３から供給された表示制御命令に基づき、ディスプレイ２０８に所定の表示を行わせるための表示信号を生成し出力する。
【０４３７】
ブリッジ２０１とバス２０９を介して接続されるブリッジ２０２は、ハードディスクドライブ（ＨＤＤ）２０６、ＵＳＢ(Universal Serial Bus)インターフェイス（Ｉ／Ｆ）２０７およびバス２０８に対するデータ転送を制御する。ブリッジ２０２に対してＩＥＥＥ(Institute Electrical and Electronics Engineers)１３９４規格に準じたインターフェイスを接続することもできる。ハードディスクドライブ２０６は、ＣＰＵ２０３が動作するためのプログラムデータが格納される。また、ハードディスクドライブ２０６は、ＣＰＵ２０３によって生成されたデータや、各インターフェイスを介して外部から供給されたデータを格納することができる。さらに、ハードディスクドライブ２０６は、ＣＰＵ２０３のワークメモリとして用いることもできる。
【０４３８】
バス２０８は、例えばＰＣＩ(Peripheral Component Interconnect)バスであって、入力インターフェイス（Ｉ／Ｆ）２１０およびドライブ装置２１１が接続される。入力Ｉ／Ｆ２１０は、例えばマウス２１３といったポインティングデバイスや、キーボード２１４が接続され、ユーザによるマウス２１３やキーボード２１４に対してなされた入力操作に応じた信号を出力する。ドライブ装置２１１は、例えばＣＤ−ＲＯＭ(Compact Disc-Read Only Memory)、ＤＶＤ−ＲＯＭ(Digital Versatile Disc-ROM)などの記録媒体を再生する。また、ドライブ装置２１１として、ＣＤ−Ｒ(Compact Disc-Recordable)、ＣＤ−ＲＷ(Compact Disc-ReWritable)、ＤＶＤ−Ｒ(DVD Recordable)、ＤＶＤ−ＲＷ(DVD Re-recordable)、ＤＶＤ＋Ｒ(DVD +R format)、ＤＶＤ＋ＲＷ(DVD +RW format)、Ｂｌｕ−ｒａｙ  Ｄｉｓｃといった、書き込み可能な記録媒体に対応したものを用いることもできる。
【０４３９】
バス２０８に対して、ビデオＩ／Ｆ２２０がさらに接続される。ビデオＩ／Ｆ２２０は、例えばべースバンドのディジタルビデオデータの入出力が行われる。
【０４４０】
バス２０８に対して、さらに外部との通信を行うための通信Ｉ／Ｆ２１５を接続することができる。通信Ｉ／Ｆ２１５は、例えばＴＣＰ／ＩＰ(Transmission Control Protocol/Internet Protocol)といった所定のプロトコルで外部の機器と通信し、データのやりとりを行うことができるようにされる。
【０４４１】
ＣＰＵ２０３は、ＲＡＭ２０４をワークメモリとして用いて、ＨＤＤ２０６に予め格納されているプログラムに従い所定に処理を実行して各種命令やデータを生成し、生成した命令やデータをこの装置の各部に供給する。また、この装置の各部で生成されたデータがＣＰＵ２０３に供給される。
【０４４２】
３−２．符号化処理に対する適用例
上述した符号化装置１Ａ、１Ｂおよび１Ｃの構成は、プログラムに従いＣＰＵ２０３上で動作するソフトウェアとして構成される。図１を用いて説明した符号化装置１Ａを例にとると、入力データ用メモリ１０および出力データ用メモリ１５、ならびに、ＬＳＢ側データ用メモリ１２およびＭＳＢ側データ用メモリ１６は、それぞれＲＡＭ２０４の所定領域が用いられる。これに限らず、ハードディスクドライブ２０６の所定領域をこれら入力データ用メモリ１０および出力データ用メモリ１５、ならびに、ＬＳＢ側データ用メモリ１２およびＭＳＢ側データ用メモリ１６として用いることも可能である。また、データ分離部１１や、ＬＳＢ側ビットの圧縮符号化を行うＤＰＣＭ部１３およびハフマン符号化部１４、ならびに、ＭＳＢ側ビットの圧縮符号化を行う１重目ランレングス処理部１７および２重目ランレングス処理部１８は、ＣＰＵ２０３上で動作するソフトウェアとして構成される。
【０４４３】
このような装置による画像データの一例の符号化処理について、概略的に説明する。圧縮符号化すべきベースバンドのディジタルビデオデータが外部からビデオＩ／Ｆ２２０に対して供給される。ビデオＩ／Ｆ２２０に供給されたディジタルビデオデータは、例えばハードディスクドライブ２０６に格納される。ＣＰＵ２０３は、ハードディスクドライブ２０６に格納されたディジタルビデオデータを例えばフレーム単位で読み出し、ＲＡＭ２０４に転送する。ディジタルビデオデータは、ＲＡＭ２０４上に入力データ用メモリ１０として割り当てられた第１の領域に格納される。
【０４４４】
なお、ディジタルビデオデータは、ＵＳＢ  Ｉ／Ｆ２０７や通信Ｉ／Ｆ２１５から供給することもできる。さらに、ベースバンドのディジタルビデオデータが記録された記録媒体をドライブ装置２１１で再生して供給することもできる。
【０４４５】
ＣＰＵ２０３は、ＲＡＭ２０４の第１の領域に格納された１フレーム分のディジタルビデオデータを、例えば画面の左上隅に対応する画素から順に、水平方向に読み出す。このとき、例えばディジタルビデオデータがＲ、ＧおよびＢ各色それぞれの画素データからなる場合、各色毎に読み出しがなされる。ＣＰＵ２０３は、読み出した画素データに対して、上述の実施の第１の形態、実施の第１の形態の第１の変形例、実施の第１の形態の第２の変形例、あるいは、実施の第１の形態の第３の変形例、若しくは、実施の第２の形態、実施の第２の形態の第１の変形例、実施の第２の形態の第２の変形例、または、実施の第２の形態の第３の変形例による符号化方法により、圧縮符号化を施す。
【０４４６】
すなわち、実施の第１の形態による符号化装置１Ａにおける処理を例にとると、ＣＰＵ２０３は、読み出した画素データをＬＳＢ側の８ビットと、ＬＳＢ側の８ビットを除いたＭＳＢ側ビットとに分解する。なお、画素データの量子化ビット数は、例えばキーボード２１４からの入力などにより、予め設定されているものとする。ＣＰＵ２０３は、ＬＳＢ側ビットに対して、上述したように、ＤＰＣＭ符号化処理およびハフマン符号化処理を施して圧縮符号化し、圧縮符号化されたＬＳＢ側圧縮符号化データを、ＲＡＭ２０４上の出力データ用メモリ１５として割り当てられた第２の領域に所定に格納する。ＭＳＢ側ビットに対しても同様に、ＭＳＢ側ビット単位および所定バイト単位のランレングス処理を所定に行い圧縮符号化し、圧縮符号化されたＭＳＢ側圧縮符号化データを、ＲＡＭ２０４上の第２の領域に所定に格納する。
【０４４７】
１フレーム分の圧縮符号化処理が終了すると、ＲＡＭ２０４上の第２の領域から、圧縮符号化データが所定に読み出され出力される。例えば、ＲＡＭ２０４から読み出された圧縮符号化データは、ハードディスクドライブ２０６に一旦、格納される。ハードディスクドライブ２０６に格納された圧縮符号化データは、ＵＳＢ  Ｉ／Ｆ２０７や通信Ｉ／Ｆ２１５を介して外部に出力される。これに限らず、ハードディスクドライブ２０９から読み出された圧縮符号化データを、ドライブ装置２１１に装填された記録可能な記録媒体に記録することもできる。
【０４４８】
上述のような処理において、ＣＰＵ２０３が複数の処理を並列的に実行可能であれば、ＬＳＢ側ビットに対する圧縮符号化処理と、ＭＳＢ側ビットに対する圧縮符号化処理とをそれぞれ並列的に行うことができる。また、Ｒ、ＧおよびＢ各色の画素データそれぞれに対する処理を並列的に行うことも可能である。一例として、ＣＰＵ２０３は、プログラムに従い時分割的に処理が制御され、時分割されたそれぞれのスレッドにおいて、ＭＳＢ側ビットおよびＬＳＢ側ビット、Ｒ、ＧおよびＢ各色の画素データのそれぞれに対する処理を実行することが考えられる。
【０４４９】
３−３．復号化処理に対する適用例
復号化装置および復号化処理についても、同様である。すなわち、上述した復号化装置２Ａ、２Ｂおよび２Ｃの構成は、プログラムに従いＣＰＵ２０３上で動作するソフトウェアとして構成される。図２０を用いて説明した復号化装置２Ａを例にとると、入力メモリ３０、ＭＳＢ側出力メモリ３４およびＭＳＢ側出力メモリ３７は、それぞれＲＡＭ２０４の所定領域が用いられる。これに限らず、ハードディスクドライブ２０６の所定領域を、これら入力メモリ３０、ＭＳＢ側出力メモリ３４およびＭＳＢ側出力メモリ３７として用いることも可能である。メモリ制御部３１は、ブリッジ２０１に対応する。メモリ制御部３１の機能を、ＣＰＵ２０３上で動作するソフトウェアとして実現することも可能である。また、ＭＳＢ側圧縮符号化データの復号化を行う１重目復号化部３２および２重目復号化部３３、ＬＳＢ側圧縮符号化データの復号化処理を行うハフマン復号化部３５およびＤＰＣＭ復号化部３６、ならびに、復号化されたＬＳＢ側ビットとＭＳＢ側ビットとを統合するデータ統合部３８は、ＣＰＵ２０３上で動作するソフトウェアとして構成される。
【０４５０】
復号化処理は、このような装置による、画像データが圧縮符号化された圧縮符号化データの一例の復号化処理について、概略的に説明する。復号化すべき圧縮符号化データが、例えばＵＳＢ  Ｉ／Ｆ２０７を介して供給され、ハードディスクドライブ２０６に格納される。圧縮符号化データは、これに限らず、通信Ｉ／Ｆ２１５から供給するようにもできる。また、圧縮符号化データが記録された記録媒体をドライブ装置２１１で再生することで、圧縮符号化データを供給することもできる。
【０４５１】
ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとが１系統で供給される場合は、１のファイルとしてハードディスクドライブ２０６に格納される。ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとがそれぞれ独立的に供給される場合は、ＭＳＢ側圧縮符号化データが格納されるファイルと、ＬＳＢ側圧縮符号化データが格納されるファイルとの２ファイルがハードディスクドライブ２０６に格納される。なお、ここでは、ファイルには、１フレーム分の圧縮符号化データが格納されているものとする。ＣＰＵ２０３は、ハードディスクドライブ２０６に格納された圧縮符号化データを読み出し、ＲＡＭ２０４に転送する。圧縮符号化データは、ＲＡＭ２０４上の入力メモリ３０として割り当てられた第１の領域に格納される。
【０４５２】
ＣＰＵ２０３は、ＲＡＭ２０４上の第１の領域に格納された圧縮符号化データを所定に読み込み、ＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データのそれぞれに対して、圧縮符号化データの符号化方法に応じて、上述の実施の第１の形態、実施の第１の形態の第１の変形例、実施の第１の形態の第２の変形例、あるいは、実施の第１の形態の第３の変形例、若しくは、実施の第２の形態、実施の第２の形態の第１の変形例、実施の第２の形態の第２の変形例、または、実施の第２の形態の第３の変形例による復号化方法により、復号化を施す。なお、圧縮符号化データの符号化方法は、予め分かっているものとする。
【０４５３】
実施の第１の形態による復号化装置２Ａにおける処理を例にとると、ＣＰＵ２０３は、例えばブリッジ２０１に対して、ＲＡＭ２０４上の第１の領域に格納されたＭＳＢ側圧縮符号化データおよびＬＳＢ側圧縮符号化データを、それぞれビット単位で所定に読み出すように要求する。ＣＰＵ２０３は、ＲＡＭ２０４から読み出されたＭＳＢ側圧縮符号化データに対して、上述したようにＭＳＢ側ビット単位および所定バイト単位のランレングス処理に対する復号化処理を施し、復号化されたＭＳＢ側ビットを、ＲＡＭ２０４上のＭＳＢ側出力メモリ３４として割り当てられた第２の領域に所定に格納する。ＬＳＢ側圧縮符号化データに対しても同様に、ＲＡＭ２０４から読み出されたＬＳＢ側圧縮符号化データに対して、上述したようにハフマン符号の復号化処理およびＤＰＣＭの復号化処理を施し、復号化されたＬＳＢ側ビットを、ＲＡＭ２０４上のＬＳＢ側出力メモリ３７として割り当てられた第３の領域に所定に格納する。
【０４５４】
例えば１フレーム分の復号化処理が終了すると、ＣＰＵ２０３は、ＲＡＭ２０４上の第２および第３の領域に格納された、復号化されたＭＳＢ側ビットおよびＬＳＢ側ビットをそれぞれ所定に読み出し、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理を行う。統合処理され元の量子化ビット数が復元され復号化された画素データは、例えばハードディスクドライブ２０６に一旦、格納される。ハードディスクドライブ２０６に格納された、復号化された画素データは、ＵＳＢ  Ｉ／Ｆ２０７や通信Ｉ／Ｆ２１５を介して外部に出力される。これに限らず、ハードディスクドライブ２０９から読み出された、復号化された画素データを、ドライブ装置２１１に装填された記録可能な記録媒体に記録することもできる。
【０４５５】
上述のような処理において、ＣＰＵ２０３が複数の処理を並列的に実行可能であれば、ＬＳＢ側圧縮符号化データに対する復号化処理と、ＭＳＢ側圧縮符号化データに対する復号化処理とをそれぞれ並列的に行うことができる。また、Ｒ、ＧおよびＢ各色の画素データが圧縮符号化された圧縮符号化データそれぞれに対する処理を、並列的に行うことも可能である。
【０４５６】
なお、上述では、この発明の実施の第１の形態、実施の第１の形態の第１の変形例、実施の第１の形態の第２の変形例、あるいは、実施の第１の形態の第３の変形例、若しくは、実施の第２の形態、実施の第２の形態の第１の変形例、実施の第２の形態の第２の変形例、または、実施の第２の形態の第３の変形例による符号化方法および復号化方法を、図６０に示すコンピュータ装置と同等の構成を有するハードウェアで実行するように説明したが、これはこの例に限られない。すなわち、符号化装置や復号化装置において、それぞれの機能を実行する部分を各々独立的なハードウェアで構成し、ＣＰＵの制御に基づき統合的に動作させることができる。
【０４５７】
４．この発明の実施の第３の形態について（複数のＣＰＵを持つハードウェア構成）
次に、この発明の実施の第３の形態について説明する。この実施の第３の形態では、上述の実施の第１の形態、実施の第１の形態の第１の変形例、実施の第１の形態の第２の変形例、あるいは、実施の第１の形態の第３の変形例、若しくは、実施の第２の形態、実施の第２の形態の第１の変形例、実施の第２の形態の第２の変形例、または、実施の第２の形態の第３の変形例による符号化方法および復号化方法を、それぞれ独立的に動作可能な複数のコアを持つＣＰＵを用いて実行する例である。
【０４５８】
４−１．ハードウェア構成の例
図６１は、この実施の第３の形態に適用可能な一例のハードウェア構成を示す。この図６１に一例が示されるハードウェア構成は、上述した実施の第１および第２の形態による符号化装置１Ａ、１Ｂおよび１Ｃ、ならびに、復号化装置２Ａ、２Ｂおよび２Ｃに共通して適用可能である。
【０４５９】
なお、この図６１に示す構成において、上述した図６０に示す構成と共通する部分には同一の符号を付し、詳細な説明を省略する。
【０４６０】
この実施の第３の形態によるハードウェア構成は、図６１に示されるように、マイクロプロセッサ２３０は、複数のＣＰＵコア２３１、ならびに、２３２Ａ〜２３２Ｈを有すると共に、Ｉ／Ｏ(Input/Output)コントローラ２３３およびメモリコントローラ２３４を有し、これらが内部バス２４０で接続された構成を有する。なお、図６１では、マイクロプロセッサ２３０が８個のサブＣＰＵコア２３２Ａ〜２３２Ｈを有する構成となっているが、これはこの例に限られず、マイクロプロセッサ２３０は、さらに多数のサブＣＰＵコアを有することもできるし、サブＣＰＵの数を８個より少なくしてもよい。
【０４６１】
メインＣＰＵコア２３１は、ＯＳ(Operating System)などの基本プログラムが実行される。メインＣＰＵコア２３１と内部バス２４０で接続される８個のサブＣＰＵコア２３２Ａ〜２３２Ｈは、例えばＲＩＳＣ(Reduced Instruction Set Computer)タイプの信号処理プロセッサである。メインＣＰＵコア２３１と、サブＣＰＵコア２３２Ａ〜２３２Ｈは、バス２４０を介して互いに通信しながら、それぞれ並列的に動作可能とされている。
【０４６２】
Ｉ／Ｏコントローラ２３３は、ブリッジ２０２に接続され、メインＣＰＵコア２３１およびサブＣＰＵコア２３２Ａ〜２３２Ｈと、ブリッジ２０２との間の入出力を制御する。メモリコントローラ２３４は、マイクロプロセッサ２３０によるＸＤＲ(Extreme Data Rate)−ＲＡＭ２３６に対するアクセスを制御する。ＸＤＲ−ＲＡＭ２３６は、このマイクロプロセッサ２３０全体のワークメモリとして用いられ、マイクロプロセッサ２３０が有する複数のＣＰＵコアからのアクセスに応じられるように、データ転送速度を非常に高速としたタイプのＲＡＭである。
【０４６３】
このような構成において、８個のサブＣＰＵコア２３２Ａ〜２３２Ｈは、それぞれ独立的に符号化処理または復号化処理を行うことができる。また、メインＣＰＵコア２３１は、サブＣＰＵコア２３２Ａ〜２３２Ｈが受け持つ処理以外の処理を実行する。例えば、メインＣＰＵコア２３１は、サブＣＰＵコア２３２Ａ〜２３２Ｈそれぞれに対する動作制御や、ブリッジ２０２からＩ／Ｏコントローラ２３３を介して入力される信号に応じた処理などを行う。
【０４６４】
４−２．符号化処理に対する適用例
上述した符号化装置１Ａ、１Ｂおよび１Ｃの構成は、プログラムに従いマイクロプロセッサ２３０上で動作するソフトウェアとして構成される。図１を用いて説明した符号化装置１Ａを例にとると、入力データ用メモリ１０および出力データ用メモリ１５、ならびに、ＬＳＢ側データ用メモリ１２およびＭＳＢ側データ用メモリ１６は、それぞれＸＤＲ−ＲＡＭ２３６の所定領域が用いられる。ハードディスクドライブ２０６の所定領域をこれらのメモリとして用いることも考えられる。
【０４６５】
ここで、上述したように、サブＣＰＵコア２３２Ａ〜２３２Ｈは、それぞれ独立的に動作可能であるので、符号化処理において独立的に処理可能な処理のそれぞれを、サブＣＰＵコア２３２Ａ〜２３２Ｈに対して分散的に割り当てると、処理を高速化することができる。処理のサブＣＰＵコア２３２Ａ〜２３２Ｈに対する割り当ては、プログラムによって指定することができる。
【０４６６】
例えば、画素データをデータ分離部１１で分離した後の、ＬＳＢ側ビットおよびＭＳＢ側ビットに対する圧縮符号化処理は、それぞれ独立的に処理可能である。また、Ｒ、ＧおよびＢ各色の画素データに対する圧縮符号化処理は、各色毎の独立的な処理が可能である。また、画面を所定に分割した各領域に対して圧縮符号化を行う場合、分割された各領域に対する圧縮符号化処理は、それぞれ独立的に処理可能である。
【０４６７】
このような、独立的に処理可能なそれぞれの処理に対して、サブＣＰＵコア２３２Ａ〜２３２Ｈをそれぞれ割り当てる。以下では、Ｒ、ＧおよびＢ各色それぞれの画素データについて、ＭＳＢ側ビットおよびＬＳＢ側ビットのそれぞれに対してサブＣＰＵコアを割り当てるものとする。
【０４６８】
例えば、Ｒ、ＧおよびＢ色の画素データそれぞれのＭＳＢ側ビットに対する圧縮符号化処理を、サブＣＰＵコア２３２Ａ、２３２Ｂおよび２３２Ｃにそれぞれ割り当てる。すなわち、これらサブＣＰＵコア２３２Ａ、２３２Ｂおよび２３２Ｃのそれぞれにおいて、ＭＳＢ側ビットの圧縮符号化を行う１重目ランレングス処理部１７および２重目ランレングス処理部１８による処理がソフトウェア的に実行される。
【０４６９】
同様に、Ｒ、ＧおよびＢ色の画素データそれぞれのＬＳＢ側ビットに対する圧縮符号化処理を、サブＣＰＵコア２３２Ｄ、２３２Ｅおよび２３２Ｆにそれぞれ割り当てる。すなわち、これらサブＣＰＵコア２３２Ｄ、２３２Ｅおよび２３２Ｆのそれぞれにおいて、ＬＳＢ側ビットの圧縮符号化を行うＤＰＣＭ部１３およびハフマン符号化部１４による処理がソフトウェア的に実行される。
【０４７０】
データ分離部１１における、画素データに対するＭＳＢ側ビットとＬＳＢ側ビットとの分離処理は、メインＣＰＵコア２３１において行うことができる。符号化処理が割り当てられていないサブＣＰＵコア２３２Ｇ、２３２Ｈなどに、この分離処理を割り当ててもよい。また、サブＣＰＵコア２３２Ａ〜２３２Ｆそれぞれの符号化処理をメインＣＰＵコア２３１により監視および制御することができる。
【０４７１】
この図６１の構成の装置による画像データの符号化処理について、概略的に説明する。図６０を用いて説明した場合と同様に、圧縮符号化すべきベースバンドのディジタルビデオデータが外部からビデオＩ／Ｆ２２０に対して供給され、例えばハードディスクドライブ２０６に格納される。マイクロプロセッサ２３０中のメインＣＰＵコア２３１は、ハードディスクドライブ２０６に格納されたディジタルビデオデータを例えばフレーム単位で読み出てＸＤＲ−ＲＡＭ２３６に転送し、ＸＤＲ−ＲＡＭ２３６上に入力データ用メモリ１０として割り当てられた第１の領域に格納される。
【０４７２】
サブＣＰＵコア２３２Ａ〜２３２Ｆのそれぞれは、ＸＤＲ−ＲＡＭ２３６上の第１の領域に格納された１フレーム分のディジタルビデオデータを、例えば画面の左上隅の対応する画素から順に、水平方向に読み出す。例えば、サブＣＰＵコア２３２Ａ〜２３２Ｆのそれぞれは、自分が処理するデータをＸＤＲ−ＲＡＭ２３６から読み出すように、メモリコントローラ２３４に対して要求する。メモリコントローラ２３４は、この要求に応じて、ＸＤＲ−ＲＡＭ２３６から所定にデータを読み出し、読み出したデータを対応するサブＣＰＵコア２３２Ａ〜２３２Ｆに対してそれぞれ供給する。
【０４７３】
サブＣＰＵコア２３２Ａ〜２３２Ｆのそれぞれは、供給されたデータに対して、上述の実施の第１の形態、実施の第１の形態の第１の変形例、実施の第１の形態の第２の変形例、あるいは、実施の第１の形態の第３の変形例、若しくは、実施の第２の形態、実施の第２の形態の第１の変形例、実施の第２の形態の第２の変形例、または、実施の第２の形態の第３の変形例による符号化方法により、圧縮符号化を施す。符号化処理は、サブＣＰＵコア２３２Ａ〜２３２Ｃ、ならびに、サブＣＰＵコア２３２Ｄ〜２３２Ｆにおいて、それぞれ並列的に行うことができる。
【０４７４】
一例として、Ｒ色の画素データに基づくＭＳＢ側ビットの圧縮符号化を行うサブＣＰＵコア２３２Ａは、供給されたＲ色の画素データに基づくＭＳＢ側ビットのデータに対して、ＭＳＢ側ビット単位および所定バイト単位のランレングス処理を所定に行い圧縮符号化する。圧縮符号化されたＭＳＢ側圧縮符号化データは、メモリコントローラ２３４の制御に基づきＸＤＲ−ＲＡＭ２３６に出力データ用メモリ１５として割り当てられた第２の領域の所定のアドレス、例えば、サブＣＰＵコア２３２Ａに対して割り当てられたアドレスに書き込まれる。
【０４７５】
他の例として、Ｒ色の画素データに基づくＬＳＢ側ビットの圧縮符号化を行うサブＣＰＵコア２３２Ｄは、供給されたＲ色の画素データに基づくＬＳＢ側ビットのデータに対して、ＤＰＣＭ符号化処理およびハフマン符号化処理を施して圧縮符号化する。圧縮符号化されたＬＳＢ側圧縮符号化データは、メモリコントローラ２３４の制御に基づきＸＤＲ−ＲＡＭ２３６に出力データ用メモリ１５として割り当てられた第２の領域の所定のアドレス、例えば、サブＣＰＵコア２３２Ｄに対して割り当てられたアドレスに書き込まれる。
【０４７６】
１フレーム分の圧縮符号化処理が終了すると、ＸＤＲ−ＲＡＭ２３６上の第２の領域から、圧縮符号化データが所定に読み出され出力される。例えば、ＸＤＲ−ＲＡＭ２３６から読み出された圧縮符号化データは、ハードディスクドライブ２０９に一旦、格納され、ＵＳＢ  Ｉ／Ｆ２０７や通信Ｉ／Ｆ２１５を介して外部に出力されたり、ドライブ装置２１１に装填された記録可能な記録媒体に記録される。
【０４７７】
このように、この実施の第３の形態では、画像データに対する圧縮符号化処理を、複数のサブＣＰＵコア２３２Ａ〜２３２Ｈにより、画像データの所定の単位毎に並列的に行うようにしている。そのため、画像データの圧縮符号化処理を、例えば図６０を用いて説明した、１個のＣＰＵ２０３により処理を行う場合に比べて、極めて高速に行うことができる。
【０４７８】
４−３．復号化処理に対する適用例
復号化装置および復号化処理についても、同様である。すなわち、復号化装置２Ａ、２Ｂおよび２Ｃの構成は、プログラムに従いマイクロプロセッサ２３０上で動作するソフトウェアとして構成される。図２０を用いて説明した復号化装置２Ａを例にとると、入力メモリ３０、ＭＳＢ側出力メモリ３４およびＭＳＢ側出力メモリ３７は、それぞれＸＤＲ−ＲＡＭ２３６の所定領域が用いられる。ハードディスクドライブ２０６の所定領域をこれらのメモリとして用いることも考えられる。
【０４７９】
ここで、上述したように、サブＣＰＵコア２３２Ａ〜２３２Ｈは、それぞれ独立的に動作可能であるので、復号化処理において独立的に処理可能な処理のそれぞれを、サブＣＰＵコア２３２Ａ〜２３２Ｈに対して分散的に割り当てると、処理を高速化することができる。
【０４８０】
例えば、ＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データに対する復号化処理は、それぞれ独立的に処理可能である。また、圧縮符号化の際に、Ｒ、ＧおよびＢ各色の画素データをそれぞれ符号化した場合、これら圧縮符号化されたＲ、ＧおよびＢ各色の圧縮符号化データに対する復号化処理は、それぞれ独立的に処理可能である。また、圧縮符号化の際に、画面を所定に分割して分割された各領域に対してそれぞれ符号化した場合、分割された各領域の圧縮符号化データに対する復号化処理は、それぞれ独立的に処理可能である。
【０４８１】
上述した符号化処理の場合と同様に、このような独立的に処理可能なそれぞれの処理に対して、サブＣＰＵコア２３２Ａ〜２３２Ｈをそれぞれ割り当てる。処理のサブＣＰＵコア２３２Ａ〜２３２Ｈに対する割り当ては、プログラムによって指定することができる。以下では、Ｒ、ＧおよびＢ各色それぞれの画素データに基づくＬＳＢ側ビットおよびＭＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データのそれぞれに対して、サブＣＰＵコアを割り当てるものとする。
【０４８２】
例えば、Ｒ、ＧおよびＢ色の画素データそれぞれのＭＳＢ側ビットが圧縮符号化されたＭＳＢ側圧縮符号化データに対する復号化処理を、サブＣＰＵコア２３２Ａ、２３２Ｂおよび２３２Ｃにそれぞれ割り当てる。すなわち、これらサブＣＰＵコア２３２Ａ、２３２Ｂおよび２３２Ｃのそれぞれにおいて、ＭＳＢ側圧縮符号化データの復号化処理を行う１重目復号化部３２および２重目復号化部３３による処理がソフトウェア的に実行される。
【０４８３】
同様に、Ｒ、ＧおよびＢ色の画素データそれぞれのＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データに対する復号化処理を、サブＣＰＵコア２３２Ｄ、２３２Ｅおよび２３２Ｆにそれぞれ割り当てる。すなわち、これらサブＣＰＵコア２３２Ｄ、２３２Ｅおよび２３２Ｆのそれぞれにおいて、ＬＳＢ側圧縮符号化データの復号化処理を行うハフマン復号化部３５およびＤＰＣＭ復号化部３６による処理がソフトウェア的に実行される。
【０４８４】
メモリ制御部３１における、入力メモリ３０からのデータの読み出し制御や、データ統合部３８における復号化されたＭＳＢ側ビットとＬＳＢ側ビットとの統合処理は、例えばメインＣＰＵコア２３１の制御に基づきメモリコントローラ２３４において行うことができる。また、サブＣＰＵコア２３２Ａ〜２３２Ｆそれぞれの復号化処理をメインＣＰＵコア２３１により監視および制御することができる。
【０４８５】
この図６１の構成の装置による、画像データが圧縮符号化された圧縮符号化データの復号化処理について、概略的に説明する。図６０を用いて説明した場合と同様に、復号化すべき圧縮符号化データが、例えばＵＳＢ  Ｉ／Ｆ２０７や通信Ｉ／Ｆ２１５、圧縮符号化データが記録された記録媒体を介して供給され、ハードディスクドライブ２０６に格納される。
【０４８６】
ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとが１系統で供給される場合は、１のファイルとしてハードディスクドライブ２０６に格納される。ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとがそれぞれ独立的に供給される場合は、ＭＳＢ側圧縮符号化データが格納されるファイルと、ＬＳＢ側圧縮符号化データが格納されるファイルとの２ファイルがハードディスクドライブ２０６に格納される。例えばメインＣＰＵコア２３１は、ハードディスクドライブ２０６に格納された圧縮符号化データを、例えばフレーム単位で読み出し、ＸＤＲ−ＲＡＭ２３６に転送する。圧縮符号化データは、ＸＤＲ−ＲＡＭ２３６上の入力メモリ３０として割り当てられた第１の領域に格納される。
【０４８７】
サブＣＰＵコア２３２Ａ〜２３２Ｆは、ＸＤＲ−ＲＡＭ２３６上の第１の領域に格納された圧縮符号化データを所定に読み込み、ＬＳＢ側圧縮符号化データおよびＭＳＢ側圧縮符号化データのそれぞれに対して、圧縮符号化データの符号化方法に応じて、上述の実施の第１の形態、実施の第１の形態の第１の変形例、実施の第１の形態の第２の変形例、あるいは、実施の第１の形態の第３の変形例、若しくは、実施の第２の形態、実施の第２の形態の第１の変形例、実施の第２の形態の第２の変形例、または、実施の第２の形態の第３の変形例による復号化方法により、復号化を施す。なお、圧縮符号化データの符号化方法は、予め分かっているものとする。
【０４８８】
ＸＤＲ−ＲＡＭ２３６からの圧縮符号化データの読み出しに際して、上述の実施の第１の形態や実施の第２の形態のように、圧縮符号化データがＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとがインターリーブされて供給される場合の制御は、例えば以下のようになされる。すなわち、ＭＳＢ側圧縮符号データを復号化するサブＣＰＵコア２３２Ａ〜２３２Ｃによるデータの読み出しと、ＬＳＢ側圧縮符号化データを復号化するサブＣＰＵコア２３２Ｄ〜２３２Ｆによるデータの読み出しとが所定単位で交互に行われるように、例えばサブＣＰＵコア２３２Ａ〜２３２Ｃ、ならびに、サブＣＰＵコア２３２Ｄ〜２３２Ｆの読み出し要求に応じて、メインＣＰＵコア２３１により制御される。
【０４８９】
また、上述の実施の第１の形態の第１の変形例や、実施の第２の形態の第２の変形例のように、１系統にＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとが分離して供給される場合のＸＤＲ−ＲＡＭ２３６からの圧縮符号化データの読み出し制御は、例えば下記のようになされる。すなわち、メモリコントローラ２３４は、サブＣＰＵコア２３２Ａ〜２３２Ｃ、ならびに、サブＣＰＵコア２３２Ｄ〜２３２Ｆの読み出し要求に応じたメインＣＰＵコア２３１の制御に基づき、データの先頭に配置された圧縮符号データ長情報に基づきＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとをそれぞれ読み出し、ＭＳＢ側圧縮符号化データをサブＣＰＵコア２３２Ａ〜２３２Ｃに供給し、ＬＳＢ側圧縮符号化データをサブＣＰＵコアＤ〜２３２Ｆに供給する。
【０４９０】
さらに、上述の実施の第１の形態の第２の変形例や、実施の第２の形態の第２の変形例のように、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとがそれぞれ独立して供給される場合のＸＤＲ−ＲＡＭ２３６からの圧縮符号化データの読み出し制御は、例えば下記のようになされる。すなわち、メモリコントローラ２３４は、サブＣＰＵコア２３２Ａ〜２３２Ｃ、ならびに、サブＣＰＵコア２３２Ｄ〜２３２Ｆの読み出し要求に応じたメインＣＰＵコア２３１の制御に基づき、ＭＳＢ側圧縮符号化データとＬＳＢ側圧縮符号化データとをそれぞれ読み出し、ＭＳＢ側圧縮符号化データをサブＣＰＵコア２３２Ａ〜２３２Ｃに供給し、ＬＳＢ側圧縮符号化データをサブＣＰＵコアＤ〜２３２Ｆに供給する。
【０４９１】
サブＣＰＵコア２３２Ａ〜２３２Ｃ、ならびに、サブＣＰＵコア２３２Ｄ〜２３２Ｆは、供給された圧縮符号化データをそれぞれ所定に復号化する。復号化処理は、サブＣＰＵコア２３２Ａ〜２３２Ｃ、ならびに、サブＣＰＵコア２３２Ｄ〜２３２Ｆにおいて、それぞれ並列的に行うことができる。
【０４９２】
サブＣＰＵコアにおける復号化処理の一例として、Ｒ色の画素データに基づくＭＳＢ側ビットが圧縮符号化されたＭＳＢ側圧縮符号化データを復号化するサブＣＰＵコア２３２Ａは、供給されたＭＳＢ側圧縮符号化データに対してＭＳＢ側ビット単位および所定バイト単位のランレングス処理に対する復号化処理を施し、復号化されたＭＳＢ側ビットを、ＸＤＲ−ＲＡＭ２３６上のＭＳＢ側出力メモリ３４として割り当てられた第２の領域に所定に格納する。
【０４９３】
サブＣＰＵコアにおける復号化処理の他の例として、Ｒ色の画素データに基づくＬＳＢ側ビットが圧縮符号化されたＬＳＢ側圧縮符号化データを復号化するサブＣＰＵコア２３２Ｄは、供給されたＬＳＢ側圧縮符号化データに対してハフマン符号の復号化処理およびＤＰＣＭの復号化処理を施し、復号化されたＬＳＢ側ビットを、ＸＤＲ−ＲＡＭ２３６上のＬＳＢ側出力メモリ３７として割り当てられた第３の領域に所定に格納する。
【０４９４】
例えば１フレーム分の復号化処理が終了すると、メインＣＰＵコア２３１は、ＸＤＲ−ＲＡＭ２３６上の第２および第３の領域に格納された、復号化されたＭＳＢ側ビットおよびＬＳＢ側ビットをそれぞれ所定に読み出すようにメモリコントローラ２３４を制御し、ＭＳＢ側ビットとＬＳＢ側ビットとの統合処理を行う。統合処理され元の量子化ビット数が復元され復号化された画素データは、例えばハードディスクドライブ２０６に一旦、格納され、ＵＳＢ  Ｉ／Ｆ２０７や通信Ｉ／Ｆ２１５、ドライブ装置２１１に装填された記録可能な記録媒体を介して出力される。
【０４９５】
このように、この実施の第３の形態では、画像データが圧縮符号化された圧縮符号化データに対する復号化処理を、複数のサブＣＰＵコア２３２Ａ〜２３２Ｈにより、圧縮符号化データの所定の単位毎に並列的に行うようにしている。そのため、圧縮符号化データの復号化処理を、例えば図６０を用いて説明した、１個のＣＰＵ２０３により処理を行う場合に比べて、極めて高速に行うことができる。
【図面の簡単な説明】
【０４９６】
【図１】この発明の実施の第１の形態による符号化装置の機能を示す一例の機能ブロック図である。
【図２】データ分離部による一例のデータ分離処理を概略的に示す略線図である。
【図３】ＬＳＢ側ビットの圧縮符号化を説明するための略線図である。
【図４】データ分離部および１重目ランレングス処理部における処理を説明するための略線図である。
【図５】実施の第１の形態によるＭＳＢ側の出力データの一例の構造を示す略線図である。
【図６】この発明の実施の第１の形態による圧縮符号化処理を示す一例のフローチャートである。
【図７】この発明の実施の第１の形態による圧縮符号化処理を示す一例のフローチャートである。
【図８】この発明の実施の第１の形態による圧縮符号化処理を示す一例のフローチャートである。
【図９】この発明の実施の第１の形態による圧縮符号化処理を示す一例のフローチャートである。
【図１０】この発明の実施の第１の形態による圧縮符号化処理を示す一例のフローチャートである。
【図１１】ＭＳＢ側ビットの符号化処理を具体的な例を用いて説明するための略線図である。
【図１２】実施の第１の形態によるＬＳＢ側ビットおよびＭＳＢ側ビットに対する圧縮符号化処理により得られた出力データの一例の出力形式を示す略線図である。
【図１３】実施の第１の形態の第１の変形例による一例の符号化装置の機能を示す一例の機能ブロック図である。
【図１４】実施の第１の形態の第１の変形例によるＭＳＢ側ビットおよびＬＳＢ側ビットが圧縮符号化されて出力される際の一例の出力形式を示す略線図である。
【図１５】実施の第１の形態の第２の変形例による一例の符号化装置の機能を示す一例の機能ブロック図である。
【図１６】実施の第１の形態の第２の変形例によるＭＳＢ側ビットおよびＬＳＢ側ビットが圧縮符号化されて出力される際の一例の出力形式を示す略線図である。
【図１７】実施の第１の形態の第３の変形例によるデータ分離部および１重目ランレングス処理部における処理を説明するための略線図である。
【図１８】実施の第１の形態の第３の変形例によるＭＳＢ側の出力データの一例の構造を示す略線図である。
【図１９】２バイトを単位とした場合のＭＳＢ側ビットの圧縮符号化処理を概略的に示す略線図である。
【図２０】実施の第１の形態による復号化を行う復号化装置の機能を示す一例の機能ブロック図である。
【図２１】実施の第１の形態に対応する復号化装置における一例の復号化処理を示すフローチャートである。
【図２２】実施の第１の形態に対応する復号化装置における一例の復号化処理を示すフローチャートである。
【図２３】実施の第１の形態に対応する復号化装置における一例の復号化処理を示すフローチャートである。
【図２４】ＬＳＢ側圧縮符号化データの一例の復号化処理をより詳細に示すフローチャートである。
【図２５】実施の第１の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図２６】実施の第１の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図２７】実施の第１の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図２８】実施の第１の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図２９】実施の第１の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図３０】実施の第１の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図３１】実施の第１の形態の第１の変形例による復号化を行う復号化装置の機能を示す一例の機能ブロック図である。
【図３２】実施の第１の形態の第１の変形例に対応する復号化装置における一例の復号化処理を示すフローチャートである。
【図３３】実施の第１の形態の第１の変形例に対応する復号化装置における一例の復号化処理を示すフローチャートである。
【図３４】実施の第１の形態の第１の変形例に対応する復号化装置における一例の復号化処理を示すフローチャートである。
【図３５】実施の一形態の第１の変形例による復号化処理を具体的な例を挙げて説明するための略線図である。
【図３６】実施の一形態の第１の変形例による復号化処理を具体的な例を挙げて説明するための略線図である。
【図３７】実施の第１の形態の第２の変形例による復号化を行う復号化装置の機能を示す一例の機能ブロック図である。
【図３８】実施の第１の形態の第２の変形例による復号化を行う復号化装置による一例の復号化処理の全体の流れを示すフローチャートである。
【図３９】実施の第１の形態の第３の変形例による復号化処理における一例の復号化手順を示す略線図である。
【図４０】実施の第１の形態の第３の変形例による復号化処理における一例の復号化手順を示す略線図である。
【図４１】実施の第２の形態によるＭＳＢ側の出力データの一例の構造を示す略線図である。
【図４２】実施の第２の形態によるＭＳＢ側ビットに対する一例の圧縮符号化処理を示すフローチャートである。
【図４３】実施の第２の形態によるＭＳＢ側ビットの符号化処理について具体的な例を用いて説明するための略線図である。
【図４４】実施の第２の形態によるＬＳＢ側ビットおよびＭＳＢ側ビットに対する圧縮符号化処理により得られた出力データの一例の出力形式を示す略線図である。
【図４５】実施の第２の形態の第１の変形例によるＭＳＢ側ビットおよびＬＳＢ側ビットが圧縮符号化されて出力される際の一例の出力形式を示す略線図である。
【図４６】実施の第２の形態の第２の変形例によるＭＳＢ側ビットおよびＬＳＢ側ビットが圧縮符号化されて出力される際の一例の出力形式を示す略線図である。
【図４７】実施の第２の形態の第３の変形例によるＭＳＢ側の出力データの一例の構造を示す略線図である。
【図４８】実施の第２の形態の第３の変形例によるＭＳＢ側ビットの一例の圧縮符号化処理を概略的に示す略線図である。
【図４９】実施の第２の形態によるＭＳＢ側ビットに対する一例の復号化処理を示すフローチャートである。
【図５０】実施の第２の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図５１】実施の第２の形態によるＭＳＢ側ビットとＬＳＢ側ビットとの統合処理について説明するための略線図である。
【図５２】実施の第２の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図５３】実施の第２の形態によるＭＳＢ側ビットとＬＳＢ側ビットとの統合処理について説明するための略線図である。
【図５４】実施の第２の形態による復号化処理を具体的な例を挙げて説明するための略線図である。
【図５５】実施の第２の形態によるＭＳＢ側ビットとＬＳＢ側ビットとの統合処理について説明するための略線図である。
【図５６】実施の第２の形態の第１の変形例による一例の復号化処理を示すフローチャートである。
【図５７】実施の第２の形態の第１の変形例による復号化処理について具体的な例を挙げて説明するための略線図である。
【図５８】実施の第２の形態の第３の変形例による復号化処理における一例の復号化手順を示す略線図である。
【図５９】実施の第２の形態の第３の変形例による復号化処理における一例の復号化手順を示す略線図である。
【図６０】実施の第１および第２の形態に共通して適用可能な一例のハードウェア構成を示すブロック図である。
【図６１】実施の第３の形態に適用可能な一例のハードウェア構成を示すブロック図である。
【符号の説明】
【０４９７】
１Ａ，１Ｂ，１Ｃ  符号化装置
２Ａ，２Ｂ，２Ｃ  復号化装置
１０  入力データ用メモリ
１１  データ分離部
１２  ＬＳＢ側データ用メモリ
１３  ＤＰＣＭ部
１４  ハフマン符号化部
１５  出力データ用メモリ
１６  ＭＳＢ側データ用メモリ
１７  １重目ランレングス処理部
１８  ２重目ランレングス処理部
２０  圧縮長計算部
３１  メモリ制御部
３２  １重目復号化部
３３  ２重目復号化部
３４  ＭＳＢ側出力メモリ
３５  ハフマン復号化部
３６  ＤＰＣＭ復号化部
３７  ＬＳＢ側出力メモリ
３８  データ統合部
２０１，２０２  ブリッジ
２０３  ＣＰＵ
２０４  ＲＡＭ
２０６  ハードディスクドライブ
２２０  ビデオＩ／Ｆ
２３０  マイクロプロセッサ
２３１  メインＣＰＵコア
２３２Ａ〜２３２Ｈ  サブＣＰＵコア
２３３  Ｉ／Ｏコントローラ
２３４  メモリコントローラ
２３６  ＸＤＲ−ＲＡＭ
【図１】
0004434155.tif 000002
【図２】
0004434155.tif 000003
【図３】
0004434155.tif 000004
【図４】
0004434155.tif 000005
【図５】
0004434155.tif 000006
【図６】
0004434155.tif 000007
【図７】
0004434155.tif 000008
【図８】
0004434155.tif 000009
【図９】
0004434155.tif 000010
【図１０】
0004434155.tif 000011
【図１１】
0004434155.tif 000012
【図１２】
0004434155.tif 000013
【図１３】
0004434155.tif 000014
【図１４】
0004434155.tif 000015
【図１５】
0004434155.tif 000016
【図１６】
0004434155.tif 000017
【図１７】
0004434155.tif 000018
【図１８】
0004434155.tif 000019
【図１９】
0004434155.tif 000020
【図２０】
0004434155.tif 000021
【図２１】
0004434155.tif 000022
【図２２】
0004434155.tif 000023
【図２３】
0004434155.tif 000024
【図２４】
0004434155.tif 000025
【図２５】
0004434155.tif 000026
【図２６】
0004434155.tif 000027
【図２７】
0004434155.tif 000028
【図２８】
0004434155.tif 000029
【図２９】
0004434155.tif 000030
【図３０】
0004434155.tif 000031
【図３１】
0004434155.tif 000032
【図３２】
0004434155.tif 000033
【図３３】
0004434155.tif 000034
【図３４】
0004434155.tif 000035
【図３５】
0004434155.tif 000036
【図３６】
0004434155.tif 000037
【図３７】
0004434155.tif 000038
【図３８】
0004434155.tif 000039
【図３９】
0004434155.tif 000040
【図４０】
0004434155.tif 000041
【図４１】
0004434155.tif 000042
【図４２】
0004434155.tif 000043
【図４３】
0004434155.tif 000044
【図４４】
0004434155.tif 000045
【図４５】
0004434155.tif 000046
【図４６】
0004434155.tif 000047
【図４７】
0004434155.tif 000048
【図４８】
0004434155.tif 000049
【図４９】
0004434155.tif 000050
【図５０】
0004434155.tif 000051
【図５１】
0004434155.tif 000052
【図５２】
0004434155.tif 000053
【図５３】
0004434155.tif 000054
【図５４】
0004434155.tif 000055
【図５５】
0004434155.tif 000056
【図５６】
0004434155.tif 000057
【図５７】
0004434155.tif 000058
【図５８】
0004434155.tif 000059
【図５９】
0004434155.tif 000060
【図６０】
0004434155.tif 000061
【図６１】
0004434155.tif 000062