(57)【要約】画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化を用いて圧縮されたブロック圧縮データを複数含む圧縮データを伸長する際に、圧縮データに含まれるブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかのブロック圧縮データの途中情報を記憶する準備工程と、画像の任意の領域を伸長する際に、記憶された途中情報を用いて任意の領域に対応するブロック圧縮データを伸長する伸長工程とを有する伸長方法を提供する。ブロック圧縮データを全てではなく部分的に復号して途中情報を記憶しておくことにより、この途中情報を元に画像データを任意の位置から伸長することが可能であり、記憶容量の少ない印刷装置でも画像データを出力できる。
2003034709.tif 000002
【特許請求の範囲】
【請求項１】
画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとし、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化を用いて圧縮されたブロック圧縮データを複数含む圧縮データを伸長する方法であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかの前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
前記画像の任意の領域を伸長する際に、記憶された前記途中情報を用いて、前記任意の領域に対応する前記ブロック圧縮データを伸長する伸長工程とを有する伸長方法。
【請求項２】
前記ブロック圧縮データには、２次元画像の前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、さらに、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備工程では、先行する前記ブロック圧縮データを部分的に伸長した際に前記離散コサイン係数を含む前記途中情報を取得する、請求項１の伸長方法。
【請求項３】
前記圧縮データには、２次元画像の前記ブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されており、
前記準備工程では、前記ブロック圧縮データが含まれる前記スキャン単位および／またはフレーム単位の階層化情報を含む前記途中情報を取得する、請求項１の伸長方法。
【請求項４】
前記準備工程では、２次元画像のスキャン方向または前記スキャン方向に直交するサブスキャン方向に並んだ前記ブロック圧縮データの前記途中情報を記憶し、
前記伸長工程では、前記スキャン方向またはサブスキャン方向に並んだ前記画素ブロックを伸長すると共に、前記サブスキャン方向またはスキャン方向にそれぞれ連続する前記ブロック圧縮データの前記途中情報を取得し、記憶する、請求項１の伸長方法。
【請求項５】
前記伸長工程では、前記画像の異なる領域を伸長する際に、事前に伸長した領域と重複する部分については伸長を行わず、残りの部分を伸長する、請求項１の伸長方法。
【請求項６】
前記圧縮データはＪＰＥＧ方式で圧縮されている、請求項１の伸長方法。
【請求項７】
画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとし、その画素ブロック内に含まれる画像データが少なくともエントロピー符号化により圧縮されたブロック圧縮データを複数含む圧縮データを印刷する方法であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかの前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
前記画像の任意の領域を伸長する際に、記憶された前記途中情報を用いて、前記任意の領域に対応する前記ブロック圧縮データを伸長して印刷する印刷工程とを有する印刷方法。
【請求項８】
前記ブロック圧縮データには、２次元画像の前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、さらに、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備工程では、前記スキャン方向に先行する前記ブロック圧縮データを部分的に伸長した際の離散コサイン係数を含む前記途中情報を取得する、請求項７の印刷方法。
【請求項９】
前記圧縮データには、２次元画像の前記ブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されており、
前記準備工程では、前記ブロック圧縮データが含まれる前記スキャン単位および／またはフレーム単位の階層化情報を含む前記途中情報を取得する、請求項７の印刷方法。
【請求項１０】
前記準備工程では、２次元画像のスキャン方向または前記スキャン方向に直交するサブスキャン方向に並んだ前記ブロック圧縮データの前記途中情報を記憶し、
前記印刷工程では、前記スキャン方向またはサブスキャン方向に並んだ前記画素ブロックを伸長および印刷すると共に、前記サブスキャン方向またはスキャン方向にそれぞれ連続する前記ブロック圧縮データの前記途中情報を取得し、記憶する、請求項７の印刷方法。
【請求項１１】
前記印刷工程では、前記画像の異なる領域を印刷する際に、事前に印刷した領域と重複する部分については伸長を行わず、残りの部分を伸長する、請求項７の印刷方法。
【請求項１２】
画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画像データが少なくともエントロピー符号化により圧縮されたブロック圧縮データを含む圧縮データを表示する方法であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかの前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
前記画像の任意の領域を伸長する際に、記憶された前記途中情報を用いて、前記任意の領域に対応する前記ブロック圧縮データを伸長して表示する工程とを有する表示方法。
【請求項１３】
前記表示する工程では、前記画像の異なる領域を伸長する際に、事前に表示した領域と重複した部分については伸長を行わず、残りの部分を伸長する、請求項１２の表示方法。
【請求項１４】
画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化により圧縮されたブロック圧縮データを含む圧縮データを伸長するプログラムであって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかの前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
前記画像の任意の領域を伸長する際に、記憶された前記途中情報を用いて、前記任意の領域に対応する前記ブロック圧縮データを伸長する伸長工程とを実行する命令を有するプログラム。
【請求項１５】
前記ブロック圧縮データには、２次元画像の前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備工程では、先行する前記ブロック圧縮データを部分的に伸長した際に前記離散コサイン係数を含む前記途中情報を取得する、請求項１４のプログラム。
【請求項１６】
前記圧縮データには、２次元画像の前記ブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されており、
前記準備工程では、前記ブロック圧縮データを前記スキャン方向に順番に伸長し、前記ブロック圧縮データが含まれる前記スキャン単位および／またはフレーム単位の階層化情報を含む前記途中情報を取得する、請求項１４のプログラム。
【請求項１７】
前記準備工程では、２次元画像のスキャン方向または前記スキャン方向に直交するサブスキャン方向に並んだ前記ブロック圧縮データの前記途中情報を記憶し、
前記伸長工程では、前記スキャン方向またはサブスキャン方向に並んだ前記画素ブロックを伸長および印刷すると共に、前記サブスキャン方向またはスキャン方向にそれぞれ連続する前記ブロック圧縮データの前記途中情報を取得し、記憶する、請求項１４のプログラム。
【請求項１８】
前記伸長工程では、前記画像の異なる領域を伸長する際に、事前に伸長された領域と重複した部分については伸長を行わず、残りの部分を伸長する、請求項１４のプログラム。
【請求項１９】
画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化により圧縮されたブロック圧縮データを含む圧縮データを伸長するデータ処理装置であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかの前記ブロック圧縮データの前記途中情報を記憶する準備手段と、
前記画像の任意の領域を伸長する際に、記憶された前記途中情報を用いて、前記任意の領域に対応する前記ブロック圧縮データを伸長する伸長手段とを有するデータ処理装置。
【請求項２０】
前記ブロック圧縮データには、２次元画像の前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、さらに、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備手段は、先行する前記ブロック圧縮データを部分的に伸長した際に前記離散コサイン係数を含む前記途中情報を取得する、請求項１９のデータ処理装置。
【請求項２１】
前記準備手段は、２次元画像のスキャン方向または前記スキャン方向に直交するサブスキャン方向に並んだ前記ブロック圧縮データの前記途中情報を記憶し、
前記伸長手段は、前記スキャン方向またはサブスキャン方向に並んだ前記画素ブロックを伸長および印刷すると共に、前記サブスキャン方向またはスキャン方向にそれぞれ連続する前記ブロック圧縮データの前記途中情報を取得し、記憶する、請求項１９のデータ処理装置。
【請求項２２】
前記伸長手段は、前記画像の異なる領域を伸長する際には、事前に伸張された領域と重複した部分については伸長を行わず、残りの部分を伸長する、請求項１９のデータ処理装置。
【請求項２３】
請求項１９に記載のデータ処理装置と、伸長された前記ブロック圧縮データを印刷する手段とを有するプリンタ。
【請求項２４】
請求項１９に記載のデータ処理装置と、伸張された前記ブロック圧縮データを表示する手段とを有する表示装置。
【発明の詳細な説明】
技術分野
本発明は、圧縮データを伸長する方法および装置に関するものである。
背景技術
近年、デジタルカメラの登場により、撮影した画像をデジタル化された画像データとしてパーソナルコンピュータに取り込み、プリンタでその画像データを手軽に印刷できる。撮影した画像は適当な方式で圧縮されたデータ（圧縮データ）としてパーソナルコンピュータに取り込まれる。このため、パーソナルコンピュータで、圧縮データを伸長し、縦横回転、色調整、ディザ化などの画像処理を行なうことにより補正された２次元画像をプリンタで印刷できる。
圧縮方式の一つであるＪＰＥＧ（Ｊｏｉｎｔ  Ｐｈｏｔｏｇｒａｐｈｉｃ  Ｃｏｒｄｉｎｇ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ）方式は、１つの画像を形成するドットマトリクスの情報が、その左側から右側に、そして上から下、すなわち、左上から右下に向って８ドット×８ドットの画素ブロック単位で圧縮格納されている。すなわち、ＪＰＥＧでは、画像を形成するドットマトリクスが、８ドット×８ドットの小さなドットマトリクスに分割され、その小マトリクスを１つの画素ブロックとして圧縮して１つのブロック圧縮データとし、複数のブロック圧縮データの集合で１つの画像を圧縮したデータを形成している。なお、画素ブロックの単位は８ドット×８ドットに限定されずに、１６ドット×１６ドットなどのデータを単位として圧縮することも可能である。
ＪＰＥＧ方式による圧縮では、まず、画像を形成するドットマトリクスの画像データを原色系（ＲＧＢ）の色空間から色差系（ＹＣｂＣｒ）の色空間の画素データに変換する。次に、８ドット×８ドットの画素ブロックに分割し、このブロック単位で変換された画素データを離散コサイン変換（ＤＣＴ：Ｄｉｓｃｒｅｔｅ  Ｃｏｓｉｎｅ  Ｔｒａｎｓｆｏｒｍ）する。さらに、離散コサイン変換時に得られたＤＣＴ係数を量子化テーブルを用いて量子化する。量子化されたＤＣＴ係数は、さらに、エントロピー符号化（ハフマン符号化）により圧縮される。符号化の際、量子化されたＤＣＴ係数のＤＣ成分およびＡＣ成分のうち、ＤＣ係数（成分）は直前の画素ブロックのＤＣ係数に対する差分値が符号化される。
図１７に、ＪＰＥＧ方式により圧縮された画像データ１００のデータフォーマットを示してある。圧縮データ１００は、最上位のイメージまたはルート階層１０１と、このイメージ階層１０１の下位のフレーム階層１０２と、このフレーム階層１０２の下位のスキャン階層１０３とに階層化されている。イメージ階層１０１は、イメージの先頭マーカー（ＳＯＩ：Ｓｔａｒｔ  ｏｆ  Ｉｍａｇｅ）から始まりイメージの終了マーカー（ＥＯＩ：Ｅｎｄ  ｏｆ  Ｉｍａｇｅ）によって終端され、これらのマーカー間に複数のフレーム階層１０２のデータＦ１、Ｆ２〜Ｆｎ、ハフマンテーブル、量子化テーブルなどを含んでいる。
フレーム階層１０２は、フレームの先頭マーカー（ＳＯＦ：Ｓｔａｒｔ  ｏｆ  Ｆｌａｍｅ）から始まり、フレームヘッダやテーブルなどに続いて少なくとも一つのスキャン階層１０３のデータＳｍ（ｍはゼロを除く整数）を含んでいる。
スキャン階層１０３は、スキャンの先頭マーカー（ＳＯＳ：Ｓｔａｒｔ  ｏｆ  Ｓｃａｎ）から始まり、スキャンヘッダ、複数のエントロピー符号化セグメント（ＥＣＳ：Ｅｎｔｒｏｐｙ  Ｃｏｄｅｄ  Ｓｅｇｍｅｎｔ）が入り、さらに、各々のＥＣＳｉ（ｉは０を含む整数）の後にリスタート間隔終端マーカー（ＲＳＴ：Ｒｅｓｔａｒｔ  Ｉｎｔｅｒｖａｌ  Ｔｅｒｍｉｎａｔｉｏｎ）が入っている。そして、ＥＣＳｉに圧縮された画素ブロック、すなわち、ブロック圧縮データが最小符号化単位（ＭＣＵ：Ｍｉｎｉｍｕｍ  Ｃｏｄｅｄ  Ｕｎｉｔ）という形で少なくとも１つが含まれている。
したがって、ＪＰＥＧ圧縮データ１００を復号する際は、これらの階層構造を解析し、各階層のヘッダなどに含まれたデータを利用し、ＭＣＵで圧縮されたデータを、ハフマン復号化、逆量子化、逆ＤＣＴ、ＲＧＢ変換と圧縮したときの逆の手順を経ることで伸長することが可能である。
デジタルカメラで撮影した画像はＪＰＥＧ方式で圧縮されたデータとして提供される。この圧縮データ１００を直にプリンタへ送って印刷することが考えられている。デジタルカメラとプリンタをＵＳＢなどの適当なインターフェイスケーブルで接続したり、メモリスティック、コンパクトフラッシュメモリ、リムーバブルディスクなどのデジタルカメラの記録メディア用のインターフェイスをプリンタに搭載することにより、圧縮されたデータをプリンタに供給できる。したがって、プリンタが圧縮されたデータを伸長して印刷する能力を備えていれば良い。プリンタのハードウェア資源を考慮すると、直にプリンタに圧縮データを送って印刷する方式では、画像の縦横回転やディザ化などの画像補正を行なえないが、デジタルカメラとプリンタさえあれば手軽に印刷することができるので、有用な印刷方法である。
しかしながら、この方法で印刷を行おうとすると、図１８に示すように、ＪＰＥＧ方式のデータフォーマットは階層化されているので、ＪＰＥＧ圧縮されたデータ１００をシーケンシャルに復号し、いったん、全体の画像データを示すドットマトリクス１０９をメモリに収納する必要がある。そして、復号されたドットマトリクス１０９から印刷するデータをプリンタの印刷ヘッドなどに送って印刷する。圧縮データ１００を復号するスピードと印刷速度とが同期できたとしても、圧縮データ１００に含まれたＭＣＵの並びと、プリントアウト７を作成する際の印刷ヘッドの動きの方向が必ずしも一致しないので、事前に全ての画像データを復号しておく必要がある。
このため、ＪＰＥＧ圧縮されたデータをプリンタで直に印刷しようとすると、圧縮されたデータを伸長した後の数Ｍｂ〜数十Ｍｂに及ぶ画像データ（ドットマトリクス）を記録できる容量のＲＡＭをプリンタに搭載する必要があり、プリンタのコストが高くなる。特に、近年のデジタルカメラは数百万画素などの高解像度の画像を撮影できるようになってきており、伸長後の画像データのサイズは非常に大きい。したがって、プリンタに直にＪＰＥＧ圧縮データを送ってプリンタで印刷しようとすると、プリンタに膨大な容量のメモリを搭載する必要がある。ＪＰＥＧ画像を印刷するために開発されたプリンタであれば良いが、家庭やオフィスで使用されるプリンタでＪＰＥＧ画像を印刷する機会はそれほど多くないので、大容量のメモリをプリンタに搭載しても常にそれが有効利用されるとも限らず、過剰投資となる可能性が高い。
また、携帯電話やＰＤＡなどの携帯端末を介してＪＰＥＧ画像を印刷するケースも増加すると考えられるが、これらの携帯端末はサイズの都合からそれほど大容量のメモリを搭載することができない。したがって、今後、デジタルカメラの解像度が高くなれば、携帯端末を介して印刷することも困難になると考えられる。
特開２００１−１１１８４１号公報には、ＪＰＥＧで圧縮された画像を分割印刷する際に、既に取得されたキャッシュデータに基づいて、印刷しようとする領域のデータだけを部分的に復元することが記載されている。しかしながら、特開２００１−１１１８４１号公報に開示された技術では、部分的に復元するためには、事前に画像復元部において、所定のアルゴリズムにしたがってＪＰＥＧ形式の圧縮画像データを全て復元する必要があり、結局、ＪＰＥＧ形式の圧縮画像全体を復元するリソースを有することが要求される。したがって、上記の問題に対する解決手段を提供するものではない。
一方、ＪＰＥＧ画像を表示する場合について考える。カーナビゲーションシステムのように、ＪＰＥＧデータ（地図データ）の一部をモニタに表示させ、車両の移動に追従して表示されるデータをスクロールさせる場合、圧縮された地図データを伸長して全体画像をメモリに展開し、表示させる領域に対応した部分画像のみを表示する。メモリに予め全体画像が展開されるので、モニタに表示する部分の位置を変えるだけで車両の移動に追従してスムーズに表示画面をスクロールさせることができる。しかしながら、スクロールさせる点では良いかもしれないが、全体画像を展開できるだけの容量のメモリが必要になってしまう。また、現時点または直ぐには表示する必要のない範囲の画像がメモリに展開されていることになるので、メモリの利用効率の点でも好ましくない。また、全体画像を地域毎に細分化された複数の地図データに分割しておき、メモリに展開する地図データを頻繁に切り替えるようにすることも考えられる。これにより、全体画像のサイズを小さくでき、表示のためにデータを展開しておくためのメモリ容量も少なくできると考えられる。しかしながら、この場合、メモリに展開する地図データの切り替えが車両の移動に追従して高速に行われないと、表示画面をスムーズにスクロールさせることが難しくなる。したがって、少ないメモリ容量でＪＰＥＧデータを部分的またはフレーム単位でスムーズに移動させながら表示または描画することは非常に難しい。
そこで、本発明においては、少ないメモリでＪＰＥＧ圧縮されたデータを印刷することができる伸長方法を提供することを目的としている。そして、この伸長方法を実現するプログラムあるいは機能を搭載したプリンタを提供することにより、低コストのプリンタであってもＪＰＥＧ圧縮されたデータをパーソナルコンピュータなどのホスト装置を介さずに、直に印刷することができるプリンタを提供することを目的としている。また、印刷に限定されずに、ＪＰＥＧ圧縮されたデータを再生または表示するための伸長方法、すなわち、少ないメモリ容量またはメモリでＪＰＥＧ圧縮されたデータをフレーム単位で再生または表示することが可能な伸長方法を提供することも本発明の目的である。
発明の開示
本発明においては、画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データがブロック圧縮データとして圧縮され、複数のブロック圧縮データを含む圧縮されたデータを伸長する際に、シーケンシャルに全ての画像データを復号するのではなく、ブロック圧縮データを、部分的に（全てではなく）、しかしながら画像全体にわたりシーケンシャルに復号する準備工程を設け、その準備工程で得られた途中情報を元に画像データを任意の位置から伸長できるようにしている。これにより、印刷に必要な領域の画像データを全て復号することにより印刷に必要なメモリを大幅に削減するようにしている。また、画像をフレーム単位で再生または表示する場合にも、表示に必要な領域のみの画像データを全て復号することにより表示に必要なメモリまたはメモリ容量を削減するようにしている。
すなわち、本発明の伸長方法は、画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくともハフマン符号化などのエントロピー符号化により圧縮されたブロック圧縮データを含む圧縮データを伸長方法であって、圧縮データに含まれるブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、少なくとも幾つかのブロック圧縮データの途中情報を記憶する準備工程と、２次元画像の任意の領域を伸長する際に、記憶された途中情報を用いて、任意の領域に対応するブロック圧縮データを伸長する伸長工程とを有する。
エントロピー符号化を用いて圧縮している圧縮データは可変長符号化されており、逆ハフマン符号化（ハフマン復号化）などの逆エントロピー符号化を行わないとブロック圧縮データの単位を把握できない。逆に言うと、逆エントロピー符号化を行うことにより、ブロック圧縮データを全て伸長しなくてもブロック圧縮データのデータ単位は把握することができ、そのブロック圧縮データにアクセスするための位置情報を取得できる。したがって、２次元画像の任意の領域を伸長する際にアクセスすべきブロック圧縮データを見つけることができるので、伸長工程においては、その領域を表示あるいは印刷するために必要な最小限のブロック圧縮データを伸長するだけでよい。そして、準備工程においては、ブロック圧縮データを全て伸長する必要がないので、そのためのハードウェアリソースや処理時間は不要であり、大容量の画像データを圧縮した圧縮データから画像データを部分的に伸長すれば良いアプリケーションを少ないリソースで高速に実行することができる。
したがって、本発明の伸長方法では、準備工程において、短時間に任意のブロック圧縮データを伸長するための途中情報を得ることができるので、伸長工程においては、印刷する方向や領域に画像データを生成するために必要なブロック圧縮データを伸長することができる。また、任意のブロック圧縮データを伸長するために必要な途中情報は限定されているので、画像を構成する全てのブロック圧縮データを伸長するための途中情報を準備工程で取得して記憶したとしても、その容量は、画像を構成する全てのブロック圧縮データを全て伸長した画像データを記憶するために必要な容量をかなり下回る。
本発明の伸長方法を採用することにより、ＪＰＥＧ方式などのエントロピー符号化を利用して圧縮された画像データを、少ない記憶容量で印刷出力することが可能となる。このため、本発明の伸長方法の準備工程と伸長工程とをコンピュータあるいはプロセッサなどで実行可能な命令を有するプログラム（プログラム製品）を提供し、プリンタにインストールすることによりＪＰＥＧ方式などで圧縮されたデータを直に印刷できる低コストのプリンタを提供できる。プログラムまたはプログラム製品は適当な記録媒体に記録して、または、コンピュータネットワークを介して供給することができる。また、本発明の伸長方法の準備工程と伸長工程の処理をハードウェアロジックなどで実行可能な準備手段および伸長手段を備えたデータ処理装置を提供し、そのデータ処理装置をプリンタに搭載することによっても低コストでＪＰＥＧ圧縮されたデータを直に印刷できるプリンタを提供できる。
また、伸長すべき、あるいは表示・印刷に必要な圧縮ブロックデータのみを最後まで伸長すれば良いので、画像データ全体を最後まで伸長するのに比べれば、処理に必要なメモリ装置または記憶装置の容量は少なくて良い。このため、小容量のメモリ装置が搭載されたマイクロプロセッサを用いて処理を行うことが可能である。したがって、プリンタやデータ処理装置に伸長処理を見越した容量のメモリは不要であり、メモリ装置が搭載されたマイクロプロセッサを用いるとしても、プリンタやデータ処理装置のトータルのコストを低減できると考えられる。また、プロセッサ内のメモリ装置を用いることにより、プロセッサ内の高速な幅の広いバスでメモリ装置にアクセスすることが可能であり、キャッシュメモリなどを積まない安価なプロセッサを用いても伸長処理または印刷処理を高速に動作させることが可能である。
上述したように、準備工程で取得する途中情報は、印刷するときに伸長するブロック圧縮データへアクセスするために、そのブロック圧縮データにアクセスするための位置情報を少なくとも含んでいる必要がある。さらに、ブロック圧縮データに、２次元画像の画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮されている場合は、ブロック圧縮データは、量子化された離散コサイン係数の値を差分情報として含むことによりデータ量を減らしている。このため、準備工程では、先行するブロック圧縮データを部分的に伸長した際に離散コサイン係数を含む途中情報を取得することが望ましい。また、圧縮データには、２次元画像のブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されている場合は、準備工程では、ブロック圧縮データをスムーズに伸長するためには、ブロック圧縮データが含まれるスキャン単位および／またはフレーム単位の階層化情報を含む途中情報を取得することが望ましい。
さらに、通常のプリンタでは印刷方向が事前に定まっているので、全てのブロック圧縮データに対応した途中情報を記憶する必要はなく、最初に印刷される領域の画素ブロックを含むブロック圧縮データの途中情報だけを記憶すれば印刷を開始できる。このように準備工程で記憶する途中情報を限定することにより、さらにプリンタで用意する記憶容量を削減することができる。このため、準備工程では、２次元画像を印刷する場合は、印刷方向にあたるスキャン方向またはスキャン方向に直交するサブスキャン方向に並んだブロック圧縮データの途中情報を記憶する。そして、印刷工程では、印刷方向にあたるスキャン方向またはサブスキャン方向に並んだ画素ブロックを途中情報に基づき伸長すると共に、サブスキャン方向またはスキャン方向にそれぞれ連続する、次に伸長すべきブロック圧縮データの途中情報を取得することが望ましい。
また、本発明の伸長方法は、印刷に限らず、画像を表示する処理にも利用することが可能であり、大きな静止画像の任意の領域を表示する場合は、任意の領域またはフレームに対応した途中情報を記憶しておき、この途中情報を活用することにより任意の領域のブロック圧縮データだけを伸長して表示すべき領域の画像のみをフレーム単位で表示できる。このため、伸長後の画像を展開できるだけのメモリ容量は不要である。
したがって、本発明の伸長方法を採用することにより、ＪＰＥＧ方式などにより圧縮された画像データの一部、または指定されたフレームに対応する部分を表示する場合であっても、少ない記憶容量で再生出力することが可能となる。このため、準備工程と伸長工程とをコンピュータで実行可能な命令を有するプログラムをＲＯＭやディスクなどの適当な記録媒体に記録して、あるいはネットワークを介して提供し、パーソナルコンピュータなどのホスト装置にインストールすることにより、ＪＰＥＧ圧縮されたデータを部分的に表示する処理を少ない記憶容量で実行できるホスト装置を提供できる。もちろん、ハードウェアロジックなどで実行可能な準備手段および伸長手段を備えたデータ処理装置を提供することも可能であり、そのデータ処理装置をカーナビゲーションシステムなどの表示装置に搭載することにより、ＪＰＥＧ圧縮された地図データの一部の画像を少ない記憶容量でスムーズに表示できる表示装置を提供できる。
また、カーナビゲーションシステムのように、画像をスクロールさせながら表示する場合は、表示あるいは印刷するために伸長する工程においては、画像の異なる領域を伸長して表示あるいは印刷する際には、事前に表示あるいは印刷などのために伸長された領域と重複した部分については伸長を行わず、残りの部分を伸長すれば良い。これにより、伸長済みの部分を活用して効率の良い表示を行うことが可能であり、表示画像をスムーズにスクロールすることが可能になる。表示または伸長すべき領域は、円、楕円、矩形など様々な形状の領域を含む。
発明を実施するための最良の形態
以下に図面を参照して本発明をさらに詳しく説明する。図１に本発明のデータ処理装置を備えたプリンタとデジタルカメラが接続されたデータ処理システムの一例を示してある。本例では、インクジェットプリンタ２と、デジタルカメラ３がＵＳＢなどの適当なインターフェイスケーブル４によりパーソナルコンピュータを経由させずに直に接続されている。本例のデジタルカメラ３は、Ｅｘｉｆ２．０規格に対応したものであり、撮影された２次元画像を、図１７で説明したＪＰＥＧのデータフォーマットで保存する。そして、デジタルカメラ３からＪＰＥＧ圧縮されたデータ１００がプリンタ２に供給されて印刷される。
図２にプリンタ２の概略を示してある。本例のプリンタ２は、リムーバブルディスク、メモリスティック、コンパクトフラッシュメモリなどのストレージ５に対応するインターフェイス１１が搭載されたインクジェットプリンタである。このため、ケーブル４の代わりに、ストレージ５にＪＰＥＧ方式で圧縮されたデータ（以降ではＪＰＥＧデータ）を格納してプリンタ２に供給することも可能である。プリンタ２は、印刷用紙７にインク滴を吐出する複数のノズル１２を備えた印刷ヘッド１３と、この印刷ヘッド１３をシャフト１４に沿って紙幅方向を印刷時のスキャン方向として往復動するためのモータ１５と、印刷時のスキャン方向と垂直な紙送り方向に印刷用紙７をフィードするためにローラ１６を駆動するためのモータ１７を有している。さらに、プリンタ２は、ＣＰＵ、ＲＡＭ、ＲＯＭなどによって構成される制御部２０を有しており、この制御部２０によりモータ１５および１７やノズル１２からインク滴を吐出するタイミングが制御されるようになっている。また、プリンタ２は、ＪＰＥＧデータ１００を展開したり、途中情報を記憶するためのＲＡＭ２５を備えている。
制御部２０は、ストレージ５またはＲＡＭ２５に保存されたＪＰＥＧデータ１００を取り込んで伸長（伸張）することが可能なデータ処理装置２１と、このデータ処理装置２１から供給された印刷データ３９に基づいてノズル１２を制御して印刷物７を形成するヘッド制御部２９を備えている。データ処理装置２１は、ＪＰＥＧデータ１００をシーケンシャルに部分的に伸長して途中情報３０を取得し、その途中情報３０をＲＡＭ２５に記憶する準備機能２２と、ＲＡＭ２５に記憶された途中情報３０を用いて印刷する領域に対応するブロック圧縮データ（以降ではＭＣＵ）を伸長して印刷データ３９を生成する伸長機能２３とを備えている。伸長機能２３は、次に印刷する領域のＭＣＵを伸長するために途中情報３０も作成しＲＡＭ２５の途中情報３０を更新する。
図３に途中情報３０の詳細を示してある。最初の２つの情報３１ａおよび３１ｂは、任意のＭＣＵにアクセスするための位置情報３１である。ＪＰＥＧデータ１００においては、図１７に示したようにデータフォーマットが決まっているので、フレームヘッダを参照することによりフレームＦｎのデータ長を把握でき、さらに、スキャンヘッダを参照することによりスキャンＳｎのデータ長を把握できる。このため、各々のスキャンＳｍの位置を確定できるので、ＥＣＳ内の先頭のＭＣＵの位置は把握できる。しかしながら、ハフマン符号化されているので各々のＭＣＵのビット数はハフマン復号しないと把握できない。
このため、本例の準備機能２２は、ハフマン復号化、逆量子化、逆ＤＣＴおよび色空間の変換の全ての伸長処理を行なうのではなく、位置情報３１を得るために最小限必要な伸長処理であるハフマン復号化のみを順番に行う。すなわち、各々のＭＣＵを完全に伸長するのではなく、部分的に伸長する。そして、本例では、途中情報３０を記憶するＭＣＵが含まれるＥＣＳまでのバイト数３１ａと、ＥＣＳから記憶すべきＭＣＵまでのビット数３１ｂを位置情報３１として取得し途中情報３０として保存する。
たとえば、図１７に示すＭＣＵ１については、ルート階層１０１のヘッダＳＯＩからフレームＦ１の先頭までのバイト数ａ１と、フレームＦ１の先頭からスキャンＳ１の先頭までのバイト数ｂ１と、スキャンＦ１の先頭からＥＳＣ０の先頭までのバイト数ｃ１とを足し合わせたバイト数３１ａ、すなわち、（ａ１＋ｂ１＋ｃ１）の値を位置情報３１とすることができる。また、ＭＣＵ２については、ＭＣＵ１の先頭からＭＣＵ２の先頭までのビット数ｄ２を取得し、ＭＣＵ１までのバイト数（ａ１＋ｂ１＋ｃ１）をバイト数３１ａとして、また、ビット数ｄ２をビット数３１ｂとすることにより位置情報３１とすることができる。後続のＭＣＵにおいても同様にアクセス位置３１を取得して記憶することができる。そして、ＭＣＵ・３については、ＭＣＵ・１までのバイト数（ａ１＋ｂ１＋ｃ１）と、ＭＣＵ・１の先頭からＭＣＵ・３までのビット数ｄ３を位置情報３１として取得して記憶する。また、スキャンＳ１に含まれる任意のＥＳＣ（ｉ−１）の中の任意のＭＣＵの位置情報３１は、バイト数３１ａが、先頭のＭＣＵまでのバイト数（ａ１＋ｂ１＋ｃｉ１）となり、ビット数３１ｂは、先頭のＭＣＵから任意のＭＣＵまでのビット数となる。さらに、任意のフレームＦｎに含まれるＭＣＵであれば、ヘッダＳＯＩからそのフレームＦｎまでのバイト数が加算され、任意のスキャンＳｍに含まれるＭＣＵであれば、ヘッダＳＯＦからそのスキャンＳｍまでのバイト数が加算される。このように任意のＭＣＵにアクセスするための位置情報３１を取得することが可能であり、アクセスしたいＭＣＵの位置情報３１を途中情報３０に含めて記憶しておくことにより、ＪＰＥＧデータ１００を先頭から順次アクセスしなくても所望のＭＣＵにダイレクトにアクセスすることができる。
図３に示した途中情報３０の３〜５番目のデータ３２ａ、３２ｂおよび３２ｃは、直前のＭＣＵのＤＣ係数３２、すなわち、輝度Ｙと各色ＣｒおよびＣｂのＤＣ係数である。ＪＰＥＧデータ１００では、ＤＣＴ係数のうち、ＤＣ係数は符号付の１６ビットの値であり、直前のＭＣＵとの差分情報として記憶されている。ＤＣ係数は１６ビットに限定されないが、ある程度の分解能を維持しつつ、高速に処理するには１６ビット程度が好ましい値である。位置情報３１で所定のＭＣＵにアクセスできたとしても、色空間を構成する各成分毎のＤＣ係数が差分情報であれば、アクセスしたＭＣＵを伸長することはできない。そこで、本例の準備機能２２は、位置情報３１を得るためにハフマン復号するので、その際に、各々のＭＣＵの差分情報として表されたＤＣ係数が得られることに着目し、それらを累積演算することにより、直前のＭＣＵの輝度Ｙや各色ＣｒおよびＣｂのＤＣ係数の値３２を求め、途中情報３０として記憶できるようにしている。したがって、本例の途中情報３０があれば、位置情報３１に基づいてアクセスしたＭＣＵを独自に伸長することができる。
さらに、本例では、途中情報３０として、スキャン単位および／またはフレーム単位の階層化情報３３として、途中情報３０が記憶されるＭＣＵが属しているスキャンおよび／またはフレームの階層を示す処理ステート３３ａと、ＭＣＵがスキャン内の何番目のＥＣＳに含まれているかを示す情報としてリスタート間隔カウンタ３３ｂとを取得し、記憶する。処理ステート３３ａは、フレーム外の処理中、フレーム内でスキャン外の処理中、スキャン内でＭＣＵ外の処理中、またはＭＣＵの処理中などの階層の深さを示す情報であり、ＥＣＳの先頭のＭＣＵの途中情報３０であれば、スキャン階層の処理でＭＣＵ階層の処理ではなくなり、ＥＣＳの２番目以降のＭＣＵの途中情報３０であれば、ＭＣＵ階層の処理となる。一方、リスタート間隔カウンタ３３ｂは、スキャンヘッダＳＯＳの後の処理済みのＭＣＵの数を示す。スキャンヘッダＳＯＳにはＲＳＴまでのＭＣＵ数が保存されており、このＭＣＵ数とリスタート間隔カウンタ３３ｂとを照らし合わせることによりＲＳＴの位置を特定できる。この階層化情報３３を途中情報３０に含めることにより、次に伸長するＭＣＵが同一のスキャンやフレームに含まれていないときには、処理状態を上位の階層に即座に移すことが可能になる。
このような途中情報３０は一箇所あたり、１０数バイト程度の比較的小さなデータ量で表現でき、複数箇所の途中情報３０を記憶しておいたとしても、ＪＰＥＧデータ１００を伸長した後のデータを記憶しておく場合に比べれば、遥かに少ないメモリ容量で済む。
図４に、伸長機能２３の処理を模式的に示してある。この例では、ＪＰＥＧデータ１００は、画像７のＸ方向に順番に並んだ画素ブロックを圧縮したＭＣＵを含んでおり、プリンタ２では、Ｙ方向に印刷ヘッドを動かして印刷する。すなわち、ＪＰＥＧデータ１００ではＸ方向がスキャン方向となり、そのサブスキャン方向が印刷するときのスキャン方向となっている。以降では、ＪＰＥＧデータ１００のスキャン方向を基準として説明する。
準備機能２２では、まず、ＪＰＥＧデータ１００に含まれるＭＣＵを順番に部分的に伸長し、画像７のスキャン方向Ｘの左端のサブスキャン方向Ｙを構成するＭＣＵの途中情報３０をＲＡＭ２５に記憶する。伸長機能２３は、その途中情報３０に基づき、ＪＰＥＧデータ１００のサブスキャン方向Ｙに並んだＭＣＵにアクセスし、それらを途中情報３０に基づき伸長し、印刷データ３９を生成する。たとえば、図５に示すように、伸長機能２３は、途中情報３０に基づき、ＪＰＥＧデータ１００の中からＭＣＵ１、ＭＣＵ７、ＭＣＵ３３・・・ＭＣＵ１４４だけを抽出して伸長し、印刷データ３９を生成する。印刷ヘッドはサブスキャン方向Ｙにその印刷データ３９を出力することにより印刷を行う。伸長機能２３は、この際、サブスキャン方向Ｙに並んだＭＣＵの各々をハフマン復号化、逆量子化、逆ＤＣＴおよび色変換を行うので、それらに続くＭＣＵの途中情報３０を得ることができる。したがって、ＲＡＭ２５の途中情報３０を更新することにより、次のサブスキャン方向Ｙに並んだＭＣＵを伸長することが可能となる。したがって、ＲＡＭ２５には、常時、サブスキャン方向Ｙに並ぶ１列、もしくは複数列のＭＣＵの途中情報３０が存在するだけで画像７を印刷することが可能となる。
図６に印刷時の処理をフローチャートを用いて示してある。まず、ステップ４１において、ＪＰＥＧデータ１００が供給されると、ステップ４２で準備機能２３によりＪＰＥＧデータ１００をサーチして所定のＭＣＵについて途中情報３０を取得して記憶する。次に、ステップ４３で、再生機能２４によりＲＡＭ２５に記憶された途中情報３０に基づいて、ＪＰＥＧデータ１００の所望のＭＣＵにアクセスし、それらを完全に伸長する。そして、完全に伸長した画素データを印刷データ３９として印刷する。同時に、次のＭＣＵを伸長するための途中情報３０を生成して更新する。
図７に、準備工程であるステップ４２の処理をさらに詳しく示してある。まず、ステップ５１において、途中情報３０を取得するまでのＭＣＵの数を算出する。たとえば、本例であれば、サブスキャン方向Ｙに並んだＭＣＵの途中情報３０を取得する必要があるので、スキャン方向Ｘに並ぶＭＣＵの数を、フレーム階層のヘッダ情報などから得られる１ライン当りの画素数などを元に算出する。そして、ステップ５２で、途中情報３０を取得するＭＣＵになるまで、ステップ５３で順番にＭＣＵをハフマン復号する。途中情報３０を取得するＭＣＵであると、ステップ５５において、位置情報、各成分のＤＣ係数および階層化情報を含む途中情報３０を取得し、ＲＡＭ２５に記憶する。ステップ５４において、途中情報３０を取得すべき全てのＭＣＵ、すなわち、サブスキャン方向Ｙに並ぶ一列のＭＣＵの各々の途中情報３０を保存できると準備工程を終了する。
図８に伸長および印刷工程であるステップ４３の処理をさらに詳しく示してある。ステップ６１において、記憶した途中情報３０を読み込み、ステップ６２において、途中情報３０に基づき所望のＭＣＵにアクセスして、それを伸長して印刷データ３９を生成する。この処理をステップ６３でサブスキャン方向Ｙに並ぶ一列の印刷データ３９が生成されるまで繰り返し、必要なＭＣＵの全てを伸長したら、ステップ６４で印刷データ３９を印刷ヘッド１３に送って印刷する。この画像データを出力するのに前後して、ステップ６６で、図４に示したように、スキャン方向Ｘに連続するＭＣＵの途中情報３０を取得して記憶する処理を行う。そして、ステップ６５で画像７の全領域が印刷されるまで、ステップ６２に戻って処理を繰り返す。
ＪＰＥＧデータ１００は、上述したように階層構造をなしているので、ステップ４２あるいはステップ４３でＭＣＵを部分的に、あるいは全面的に伸長する際に、各階層のヘッダ情報を取得しておく必要がある。すなわち、図９に示すように、同一のスキャン階層７３に含まれるＭＣＵから異なるスキャン階層７３に含まれるＭＣＵの途中情報３０を生成する場合は、フレーム内状態に以降してスキャンヘッダＳＯＳを解析する必要がある。同様に、同一のフレーム階層７２に含まれるＭＣＵから異なるフレーム階層７２に含まれるＭＣＵの途中情報３０を生成するときは、ＲＯＯＴ状態７１に戻ってフレームヘッダＳＯＦを解析する必要がある。このため、１つのＭＣＵを部分的および全面的に伸長する際に、図１０に示すように、ルート状態処理７１と、フレーム内状態処理７２と、スキャン内状態処理７３とを用意している。
図１１は、スキャン内状態処理７３を示している。準備工程４２において連続してＭＣＵを伸長したり、伸長工程４３において連続した複数のＭＣＵを伸長する場合に対応している。まず、ステップ８１でＭＣＵを伸長し次のＭＣＵの位置を更新した際に、ステップ８２でリスタートマーカでなければ、ステップ８３でスキャンカウンタをカウントアップし、ステップ８４でデータ数分だけのＭＣＵを伸長するまでステップ８１に戻って処理を繰り返す。一方、ステップ８２でリスタートマーカの場合は、ステップ８８でリスタートカウンタおよびＭＣＵ状態をクリアし、ステップ８９でフレーム内状態７２へ移行する。また、ステップ８４でデータ数分だけＭＣＵを伸長した後は、ステップ８５でリスタートカウンタをカウントアップし、ステップ８６でリスタートインターバルに到達していればリスタートカウンタおよびＭＣＵ状態をクリアし、リスタートインターバルに到達していなければ、それらの状態を保存する。
図１２は、フレーム内状態処理７２を示している。まず、ステップ９１で１ワード単位で読み出して位置を更新し、ステップ９２でスキャンヘッダＳＯＳであれば、ステップ９３でスキャンヘッダＳＯＳを読み込み、ステップ９４でスキャン内状態処理７３に移行する。一方、スキャンヘッダＳＯＳでないときは、ステップ９５で読み込んだ内容を確認し、テーブル等であれば、ステップ９６でその情報を読み込み、ステップ９７でフレーム階層の終端に到達するまで処理を繰り返す。ステップ９７でフレームの終端に到達すると、ステップ９８でルート内状態処理７１へ移行する。
図１３は、ルート内状態処理７１を示している。まず、ステップ１１１で１ワード単位で読み出して位置を更新し、ステップ１１２でフレームヘッダＳＯＦであれば、ステップ１１３でフレームヘッダＳＯＦを読み込み、ステップ１１４でフレーム内状態処理７２に移行する。一方、フレームヘッダＳＯＦでないときは、ステップ１１５で読み込んだ内容を確認し、テーブル等であれば、ステップ１１６でその情報を読み込み、ステップ１１７でルート階層の終端に到達するまで処理を繰り返す。ステップ１１７でフレームの終端に到達すると、ＪＰＥＧデータ１００の終端であるので、ステップ１１８で画像を印刷するジョブから抜ける。
これらの処理は、上記の各ステップを実行する命令を有するプログラムまたはプログラム製品として提供し、汎用のＣＰＵなどのデータ処理装置あるいはプロセッサにより実行させることができる。プログラムは、プリンタ２のファームウェアとしてＣＤ−ＲＯＭなどの適当な記録媒体に記録して提供したり、インターネットなどのコンピュータネットワークを介して提供することができる。また、上記の各ステップを実行するハードウェアロジックを備えたデータ処理装置として提供することも可能である。
このように、本例のプリンタ２は、ＪＰＥＧデータ１００を全て伸長してから印刷するのではなく、準備工程４２で途中情報３０を取得して記憶しておくことにより、伸長工程４３では途中情報３０を用いて印刷に必要な位置のＭＣＵにダイレクトにアクセスして、そのＭＣＵだけを全面的に伸長するだけで印刷することができる。そして、伸長工程４３の処理を繰り返すことにより、ＪＰＥＧデータ１００で圧縮された画像データを全て伸長し、印刷することができる。このため、圧縮データ１００の全体を事前に完全に伸長する印刷方法に比べて、印刷処理に必要なメモリの容量を格段に少なくできる。すなわち、本例のプリンタ２であれば、たとえば、サブスキャン方向Ｙに並ぶ一列分のＭＣＵの途中情報３０を格納できる程度のＲＡＭ２５があればＪＰＥＧデータ１００を伸長した画像をプリントアウト７として出力できる。したがって、小容量のメモリしかもたない家庭用のプリンタであっても、ＪＰＥＧデータを直に取得して印刷することが可能となり、プリンタ２とデジタルカメラ３という極めてシンプルで安価なシステムによりデジタルカメラ３で取った画像を印刷し楽しむことができる。
さらに、マイクロプロセッサに搭載されているキャッシュなどの小容量のメモリで圧縮データ１００を印刷することも可能であり、プロセッサ外部にメモリのない極めてシンプルなハードウェア構成のプリンタを実現できる。そして、このようなプリンタであれば、プロセッサ内のメモリで圧縮データ１００を部分的に伸長して印刷できるので、プロセッサ外部のメモリを用いる構成に比べて印刷スピードも向上する。
また、本発明の伸長方法では、圧縮データ全体を事前に伸長処理する方式に比べて、途中情報３０を得るためのハフマン復号化する処理が一見、オーバーヘッドになる。しかしながら、逆ＤＣＴや逆量子化の処理が積和演算で比較的時間のかかる処理であるのに対し、逆エントロピー変換であるハフマン復号化は処理時間のかからないビット演算が主な処理である。このため、途中情報３０を取得して記憶する処理時間は短く、圧縮データ全体を伸長処理してから印刷を開始するのに比べて、印刷ヘッド１３で印刷を開始するタイムラグも短い。また、上述したように、プロセッサ内部のメモリを用いて伸長処理を行える可能性も高いので、このタイムラグもいっそう短くできる。
さらに、事前に途中情報３０が得られるので、ＣＰＵの能力が許されるのであれば、複数のＭＣＵの復号化処理を並列に行うことも可能である。たとえば、スキャン方向Ｘに印刷する場合であっても、スキャン方向Ｘに並んだＭＣＵの途中情報３０が事前に得られていることにより、それらのＭＣＵを復号する処理を並列演算で処理することが可能となる。したがって、本発明によりＪＰＥＧデータ１００の復号処理を高速化できる可能性がある。
なお、ＤＨＰ（Ｄｅｆｉｎｅ  Ｈｉｅｒａｒｃｈｉｃａｌ  Ｐｒｏｇｒｅｓｓｉｏｎ）を含む階層符号化型の圧縮データ（ＪＰＥＧ方式で圧縮されたデータ）を説明したが、このＤＨＰマーカが挿入されない形式のＪＰＥＧ方式で圧縮されたデータにも本発明は適用可能である。この形式のデータは、非階層符号化型と呼ばれてはいるが、単一のフレームになっているだけで、このフレームの下位にスキャンおよびデータの階層があり、データそのものとしてみれば階層化されたデータである。また、データフォーマットは一例であり、たとえば、ＳＯＳの位置が画像のスキャンライン毎であることが保証されなかったり、ＲＳＴが入っていない場合なども有りえる。そのようなＪＰＥＧデータに対しても本発明は有効である。さらに、ＪＰＥＧ方式で圧縮されたデータに限らず、請求の範囲に記載したように、２次元画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮されたブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化された圧縮データであれば、本発明を適用できる。
また、サブスキャン方向Ｙに並ぶ一列分のＭＣＵの途中情報を取得し記憶する代わりに、スキャン方向Ｘに並ぶ１ライン分のＭＣＵの途中情報を形成するようにしても良く、印刷ヘッド１３の動きや用紙の向きに応じて途中情報を取得するＭＣＵの位置は自由に設定できる。さらに、インクジェットタイプのプリンタ２を例に説明したが、サーマルタイプやレーザタイプのプリンタであっても良いし、印刷ヘッド１３を移動または走査させながら印刷するタイプに限定されずに、ラインタイプのプリンタでも良い。
さらに、本発明の伸長方法は、使用するメモリ容量を大幅に低減できるので、用途はプリンタに限定されず、携帯端末のようにメモリ容量を大きくできない端末を用いて印刷する場合にも好適である。
また、本発明の伸長方法は、印刷に限定されずに、ＪＰＥＧデータ１００を表示、再生または描画出力する場合にも適用可能である。特に、大きな静止画像の任意の領域または任意のフレームを表示する場合に好適である。図１４にＪＰＥＧデータ１００の任意の領域をディスプレイまたはモニタに表示する装置の例としてカーナビゲーションシステム１２０を示してある。カーナビゲーションシステム１２０は、モニタ１２１と、モニタ１２１に地図（画像）１２５を表示するなどの制御を行うカーナビ本体１２２とを有しており、ＤＶＤなどの記録媒体またはストレージ１２３に記録された地図データ（ＪＰＥＧデータ）１００を伸長してモニタ１２１に表示することができる。カーナビ本体１２２は、ＤＶＤ１２３に対応するインターフェイス１１ａと、ＣＰＵ、ＲＡＭ、ＲＯＭなどによって構成される制御部２０ａと、地図データ１００を展開したり、途中情報３０を記憶するためのＲＡＭ２５とを有しており、制御部２０ａによりモニタ１２１に地図１２５が表示される。
制御部２０ａは、地図データ１００を伸長（伸張）することが可能なデータ処理装置２１ａと、このデータ処理装置２１ａから供給された表示データ１２５ａに基づいてモニタ１２１を制御して地図１２５を表示する表示制御部１２６を備えている。データ処理装置２１ａは、準備機能２２と、途中情報３０を用いて表示する領域に対応するブロック圧縮データを伸長して表示データ１２５ａを生成する伸長機能２３とを備えている。また、ＧＰＳなどの機能を利用して車の現在位置、モニタ１２１に表示する地図の縮尺、ユーザにより指定された地域などに応じてモニタ１２１に表示すべきエリアを認識して伸長機能２３で伸長するブロック圧縮データを決定するエリア判定機能１２７とを備えている。伸長機能２３は、エリア判定機能１２７により決定されたＭＣＵを伸長することにより、モニタ１２１に表示すべき地図データ１２５ａを生成する。したがって、エリア判定機能１２７からの指示により、地図データ１００の全体画像や、この全体画像の所定のエリアを拡大した部分画像を表示でき、さらに、部分画像については車の現在位置やユーザのマニュアル操作などに応じてモニタ１２１に表示される部分画像をスクロールさせることができる。これは、全体画像の一部を領域単位またはフレーム単位でスクロールさせながら表示できることを意味する。
伸長機能２３は、エリア判定機能１２７からの指示に応じて、必要なＭＣＵのみを途中情報３０に基づいて伸長する。すなわち、指定された領域を１つの単位として伸長するサブ伸長ユニット２３ａを備えている。サブ伸長ユニット２３ａは、エリア判定機能１２７により指定されたＭＣＵであっても、既にモニタ１２１に表示されているエリアに対応するＭＣＵについては、再度伸長を行わずに新しく表示すべきエリアに対応するＭＣＵのみを伸長する。したがって、サブ伸長ユニット２３ａは、エリア判定機能１２７により異なる領域の画像を表示する際には、その異なる領域に含まれるＭＣＵであっても、前回に指定された表示済みの領域と重複した部分については伸長を行わず、残りの部分だけを伸長する。
図１５に示すように、モニタ１２１に表示されている地図（部分画像）１２５が地図データ１００を全て伸長したときの地図（全体画像）のうち、実線で示したフレーム１３０ａで囲われた領域であるとしたときに、車両の移動やユーザからの指示に追従して破線で示したフレーム１３０ｂ、１３０ｃ、１３０ｄまたは１３０ｅで囲われた領域の部分画像をモニタ１２１に表示する例を説明すると以下の通りである。サブ伸長部２３ａは、モニタ１２１に表示する部分がフレーム１３０ａからフレーム１３０ｂにスクロールさせるとき、これらのフレームが重複した領域１３１ａについては、伸長を行わずに、フレーム１３０ｂの残りの領域（差分領域）１３２ａに対応するＭＣＵのみを伸長する。また、フレーム１３０ａとフレーム１３０ｃとの関係では、重複した領域１３１ｂについては伸長を行わずに、フレーム１３０ｃの残りの領域（差分領域）１３２ｂに対応するＭＣＵのみを伸長し、フレーム１３０ａとフレーム１３０ｄとの関係では、重複した領域１３１ｃについては伸長を行わずに、フレーム１３０ｄの残りの領域（差分領域）１３２ｃに対応するＭＣＵのみを伸長する。さらに、フレーム１３０ａとフレーム１３０ｅとの関係では、重複した領域１３１ｄについては伸長を行わずに、フレーム１３０ｅの残りの領域１３２ｄに対応するＭＣＵのみを伸長する。このように前回と今回のフレームの差分領域のみを伸長することにより、車両の移動に追従した部分画像１２５のスクロールが実現される。
データ処理装置２１ａでは、まず、準備機能２２により、地図データ１００に含まれるＭＣＵを順番に部分的に伸長し、モニタ１２１に表示すべき部分画像１２５のスキャン方向Ｘの左端のサブスキャン方向Ｙを構成するＭＣＵの途中情報３０をメモリ２５に記憶する。モニタ１２１に表示すべき部分画像１２５のために伸長すべきＭＣＵはエリア判定機能１２７により決定される。次に、伸長機能２３により、これらの途中情報３０に基づき、地図画像１２５のサブスキャン方向Ｙに並んだＭＣＵにアクセスし、それらを途中情報３０に基づき伸長し、地図画像１２５を表示するための地図データ１２５ａを生成する。そして、それらに続くＭＣＵの途中情報３０を更新することにより、次のサブスキャン方向Ｙに並んだＭＣＵを伸長する処理を繰り返し、地図データ１２５ａを生成する。この地図データ１２５ａをモニタ１２１に出力することにより地図データで供給された全画像の部分画像に相当する地図画像１２５が表示される。この地図画像１２５はスクロールでき、その際に、事前に形成された部分画像１２５を表示するためのデータが利用される。
図１６に、モニタ１２１に部分画像１２５をスクロールさせながら表示する処理のフローチャートを示してある。以下では、図１５に示したように、モニタ１２１に表示される部分画像がフレーム１３０ａで囲われた領域からフレーム１３０ｂで囲われた領域にスクロールされるとして説明するが、スクロールされる方向はこの例に限定されるものではない。まず、ステップ１４１において、エリア判定機能１２７により伸長すべき領域１３０ｂに対応するＭＣＵが指定される。次に、ステップ６２において、途中情報３０が読み込まれる。ステップ１４２において、モニタ１２１に表示される画像が変化なければその後の処理は行われなわれず、ステップ１５１でそのまま部分画像１２５が表示される。モニタ１２１に表示すべき領域が異なれば、ステップ１４３において、サブ伸長ユニット２３ａにより共通領域または重複領域のＭＣＵが算出される。ステップ１４４、１４５、１４８および１４９で指定された繰り返し処理により、座標に対応するＭＣＵが、ステップ１４６で共通領域外であるか判断され、ステップ６２において、共通領域外と判断されたＭＣＵのみが伸長される。そして、ステップ１５１で部分画像１２５が表示される。
プリンタ２で説明したように、表示開始位置に対応したＭＣＵの途中情報３０を記憶し、それに基づいて伸長および途中情報３０の更新を繰り返すことにより部分画像１２５を形成しても良い。また、目的のＭＣＵの途中情報がない場合には、目的位置以前のＭＣＵの途中情報からデータ構造を解析していくことにより目的のＭＣＵの途中情報を得ることが可能である。カーナビゲーションシステム１２０のように任意の領域を表示するアプリケーションの場合、表示の開始位置は任意なので、フレーム１３０ａとフレーム１３０ｂの共通領域１３１ａの差分画像のみを伸長し地図データ１２５ａを生成する処理の方が処理時間が短縮される可能性がある。したがって、カーナビゲーションシステム１２０のように、部分画像を動かしながら表示するようなアプリケーションにおいても、本発明を適用することにより全体画像にメモリに展開した状態で保持する必要がなく、少ないハードウェアリソースにより部分画像を高速に表示することができる。
なお、矩形状の部分画像を表示する例を説明したが、円形、楕円など様々な領域を１つの単位として表示することも可能である。また、矩形画像をスクロールする例として、カーナビゲーションシステム１２０を説明したが、パーソナルコンピュータ上で部分画像をディスプレイ上にスクロールさせながら表示させるアプリケーションソフトなど本発明を適用できる範囲は広い。
産業上の利用可能性
本発明の伸長方法およびデータ処理装置は、ＪＰＥＧ形式などにより圧縮されたデータを印刷あるいは表示するのに有効である。したがって、本発明により、少ないハードウェアリソースにより高速で、大容量の画像あるいはその一部を出力可能なプリンタなどの印刷装置、カーナビゲーションシステムなどの表示システムを提供できる。
【図面の簡単な説明】
図１は、本発明に係るデータ処理装置を備えたプリンタとデジタルカメラが接続された様子を示す図である。
図２は、図１に示すプリンタの概略構成を示す図である。
図３は、途中情報の詳細を示す図である。
図４は、伸長機能の処理を模式的に示す図である。
図５は、ＭＣＵが伸長されて印刷データが生成され、その印刷データが印刷される様子を示す図である。
図６は、プリンタにおける印刷時の処理を示すフローチャートである。
図７は、準備工程における処理を示すフローチャートである。
図８は、伸長または印刷工程における処理を示すフローチャートである。
図９は、ＪＰＥＧデータを伸長する際に階層が移り変わる様子を模式的に示す図である。
図１０は、１つのＭＣＵを伸長するさいに行なわれる処理を示すフローチャートである。
図１１は、図１０に示すスキャン内状態処理の詳細を示すフローチャートである。
図１２は、図１０に示すフレーム内状態処理の詳細を示すフローチャートである。
図１３は、図１０に示すルート内状態処理の詳細を示すフローチャートである。
図１４は、本発明に係るカーナビゲーションシステムの概略を示す図である。
図１５は、モニタに表示されている画像をスクロールさせるときの伸長処理を説明するための図である。
図１６は、モニタに表示されている画像をスクロールさせる処理を示すフローチャートである。
図１７は、ＪＰＥＧデータのデータフォーマットを示す図である。
図１８は、ＪＰＥＧデータの印刷方法を説明するための図である。
【図１】
2003034709.tif 000003
【図２】
2003034709.tif 000004
【図３】
2003034709.tif 000005
【図４】
2003034709.tif 000006
【図５】
2003034709.tif 000007
【図６】
2003034709.tif 000008
【図７】
2003034709.tif 000009
【図８】
2003034709.tif 000010
【図９】
2003034709.tif 000011
【図１０】
2003034709.tif 000012
【図１１】
2003034709.tif 000013
【図１２】
2003034709.tif 000014
【図１３】
2003034709.tif 000015
【図１４】
2003034709.tif 000016
【図１５】
2003034709.tif 000017
【図１６】
2003034709.tif 000018
【図１７】
2003034709.tif 000019
【図１８】
2003034709.tif 000020
【手続補正書】
【提出日】平成15年5月29日(2003.5.29)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】特許請求の範囲
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２次元の画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとし、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化を用いて圧縮された複数のブロック圧縮データがＸ方向に並んだ圧縮データを伸長する方法であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、前記Ｘ方向に直交するＹ方向に並んだ一列の前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
記憶された一列の前記途中情報を用いて、前記Ｙ方向に並んだ前記画素ブロックを伸長すると共に、前記Ｘ方向にそれぞれ連続する前記ブロック圧縮データを伸長するための前記途中情報を生成して前記記憶された一列の途中情報を更新する伸長工程とを有し、この伸長工程を繰り返すことにより前記画像の任意の領域を伸長する伸長方法。
【請求項２】
前記ブロック圧縮データには、前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、さらに、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備工程では、先行する前記ブロック圧縮データを部分的に伸長した際に前記離散コサイン係数を含む前記途中情報を取得する、請求項１の伸長方法。
【請求項３】
前記圧縮データには、前記ブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されており、
前記準備工程では、前記ブロック圧縮データが含まれる前記スキャン単位および／またはフレーム単位の階層化情報を含む前記途中情報を取得する、請求項１の伸長方法。
【請求項４】
削除
【請求項５】
前記伸長工程では、前記画像の異なる領域を伸長する際に、事前に伸長した領域と重複する部分については伸長を行わず、残りの部分を伸長する、請求項１の伸長方法。
【請求項６】
前記圧縮データはＪＰＥＧ方式で圧縮されている、請求項１の伸長方法。
【請求項７】
２次元の画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとし、その画素ブロック内に含まれる画像データが少なくともエントロピー符号化により圧縮された複数のブロック圧縮データがＸ方向に並んだ圧縮データを印刷する方法であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、前記Ｘ方向に直交するＹ方向に並んだ一列の前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
記憶された一列の前記途中情報を用いて、前記Ｙ方向に並んだ前記画素ブロックを伸長して印刷すると共に、前記Ｘ方向にそれぞれ連続する前記ブロック圧縮データを伸長するための前記途中情報を生成して前記記憶された一列の途中情報を更新する印刷工程とを有し、この印刷工程を繰り返すことにより前記画像の任意の領域を印刷する印刷方法。
【請求項８】
前記ブロック圧縮データには、前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、さらに、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備工程では、先行する前記ブロック圧縮データを部分的に伸長した際の離散コサイン係数を含む前記途中情報を取得する、請求項７の印刷方法。
【請求項９】
前記圧縮データには、前記ブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されており、
前記準備工程では、前記ブロック圧縮データが含まれる前記スキャン単位および／またはフレーム単位の階層化情報を含む前記途中情報を取得する、請求項７の印刷方法。
【請求項１０】
削除
【請求項１１】
前記印刷工程では、前記画像の異なる領域を印刷する際に、事前に印刷した領域と重複する部分については伸長を行わず、残りの部分を伸長する、請求項７の印刷方法。
【請求項１２】
２次元の画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画像データが少なくともエントロピー符号化により圧縮された複数のブロック圧縮データがＸ方向に並んだ圧縮データを表示する方法であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、前記Ｘ方向に直交するＹ方向に並んだ一列の前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
記憶された一列の前記途中情報を用いて、前記Ｙ方向に並んだ前記画素ブロックを伸長して表示すると共に、前記Ｘ方向にそれぞれ連続する前記ブロック圧縮データを伸長するための前記途中情報を生成して前記記憶された一列の途中情報を更新する表示工程とを有し、この表示工程を繰り返すことにより前記画像の任意の領域を表示する表示方法。
【請求項１３】
前記表示する工程では、前記画像の異なる領域を伸長する際に、事前に表示した領域と重複した部分については伸長を行わず、残りの部分を伸長する、請求項１２の表示方法。
【請求項１４】
２次元の画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化により圧縮された複数のブロック圧縮データがＸ方向に並んだ圧縮データを伸長するプログラムであって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、前記Ｘ方向に直交するＹ方向に並んだ一列の前記ブロック圧縮データの前記途中情報を記憶する準備工程と、
記憶された一列の前記途中情報を用いて、前記Ｙ方向に並んだ前記画素ブロックを伸長すると共に、前記Ｘ方向にそれぞれ連続する前記ブロック圧縮データを伸長するための前記途中情報を生成して前記記憶された一列の途中情報を更新する伸長工程とを実行する命令を有し、前記伸長工程を繰り返すことにより前記画像の任意の領域を伸長するプログラム。
【請求項１５】
前記ブロック圧縮データには、前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備工程では、先行する前記ブロック圧縮データを部分的に伸長した際に前記離散コサイン係数を含む前記途中情報を取得する、請求項１４のプログラム。
【請求項１６】
前記圧縮データには、前記ブロック圧縮データが、スキャン方向に、スキャン単位および／またはフレーム単位で階層化されており、
前記準備工程では、前記ブロック圧縮データを前記スキャン方向に順番に伸長し、前記ブロック圧縮データが含まれる前記スキャン単位および／またはフレーム単位の階層化情報を含む前記途中情報を取得する、請求項１４のプログラム。
【請求項１７】
削除
【請求項１８】
前記伸長工程では、前記画像の異なる領域を伸長する際に、事前に伸長された領域と重複した部分については伸長を行わず、残りの部分を伸長する、請求項１４のプログラム。
【請求項１９】
２次元の画像が複数のマトリクスに分割され、そのマトリクスを１つの画素ブロックとして、その画素ブロック内に含まれる画素データが少なくともエントロピー符号化により圧縮された複数のブロック圧縮データがＸ方向に並んだ圧縮データを伸長するデータ処理装置であって、
前記圧縮データに含まれる前記ブロック圧縮データを順番に部分的に伸長し、そのブロック圧縮データにアクセスするための位置情報を少なくとも含む途中情報を取得し、前記Ｘ方向に直交するＹ方向に並んだ一列の前記ブロック圧縮データの前記途中情報を記憶する準備手段と、
記憶された一列の前記途中情報を用いて、前記Ｙ方向に並んだ前記画素ブロックを伸長すると共に、前記Ｘ方向にそれぞれ連続する前記ブロック圧縮データを伸長するための前記途中情報を生成して前記記憶された一列の途中情報を更新する伸長手段とを有するデータ処理装置。
【請求項２０】
前記ブロック圧縮データには、前記画素ブロック内に含まれる画素データが少なくとも離散コサイン変換、量子化およびハフマン符号化により圧縮され、さらに、前記ブロック圧縮データは、前記量子化された離散コサイン係数の値を差分情報として含んでおり、
前記準備手段は、先行する前記ブロック圧縮データを部分的に伸長した際に前記離散コサイン係数を含む前記途中情報を取得する、請求項１９のデータ処理装置。
【請求項２１】
削除
【請求項２２】
前記伸長手段は、前記画像の異なる領域を伸長する際には、事前に伸張された領域と重複した部分については伸長を行わず、残りの部分を伸長する、請求項１９のデータ処理装置。
【請求項２３】
請求項１９に記載のデータ処理装置と、伸長された前記ブロック圧縮データを印刷する手段とを有するプリンタ。
【請求項２４】
請求項１９に記載のデータ処理装置と、伸張された前記ブロック圧縮データを表示する手段とを有する表示装置。
【国際調査報告】
2003034709.tif 000021
2003034709.tif 000022
2003034709.tif 000023