(57)【特許請求の範囲】
【請求項１】
ブロック単位で符号化され、所定のビットパターンで始るマーカコード、並びに、符号語が前記マーカコードの前記所定ビットパターンと同じになった場合に、前記マーカコードと区別するために前記符号語に後続してエミュレーション防止バイトを示す識別データが挿入された符号化画像データを復号する画像復号装置であって、
前記符号化画像データを復号するとともに、符号長を出力する復号手段と、
前記符号化画像データに挿入された前記マーカコード、前記識別データを検出して、該マーカコードの位置情報、識別データの位置情報を出力するとともに、前記符号化画像データに挿入された前記識別データを削除して出力する識別データ削除手段と、
前記復号手段を制御し、前記識別データ削除手段によって識別データが削除された符号化画像データを復号するとともに、符号長を出力させる第１の復号制御手段と、
前記識別データ削除手段から出力された前記識別データの位置情報に基づいて、前記第１の復号制御手段の下で復号された符号化画像データに、前記識別データが含まれていたか否かを判定し、前記識別データが含まれていると判定した場合、第１の復号制御手段の制御の下で前記復号手段が出力した符号長に前記識別データの長さを加算する識別データ判定手段と、
前記識別データ削除手段から出力された前記マーカコードの位置情報に基づいて、マーカコードの長さを検出するマーカコード長検出手段と、
前記識別データ判定手段によって識別データの長さを加算した符号長と、前記マーカコード長検出手段によって検出されたマーカコードの長さとを累算し、ブロック単位で出力する累算手段と、
前記累積手段によって出力される符号長に基づき、前記符号化画像データ中の、所定のブロックに対応する符号化データの格納アドレス情報を、復号のための復号テーブルに登録する登録手段と、
前記復号手段を制御し、前記登録手段によって復号テーブルに登録されたアドレス情報に従って、所定のブロックの位置から所定のブロック数の符号化画像データを復号させる第２の復号制御手段とを備える
ことを特徴とする画像復号装置。
【請求項２】
復号対象の前記符号化画像データが水平方向にＭ個（Ｍ＞１）、垂直方向にＮ個（Ｎ＞１）のブロックで構成され、前記第２の復号制御手段が水平方向にＬ個（Ｌ＜Ｍ）、垂直方向にＮ個のブロックで表わされるサイズの領域の画像を復号する場合、
前記登録手段は、水平方向にＬ個の間隔に位置する各ブロックに対応する符号化データの格納アドレス情報を前記復号テーブルに登録することを特徴とする請求項１に記載の画像復号装置。
【請求項３】
更に、前記第２の復号制御手段で復号した水平方向にＬ個、垂直方向にＮ個のブロックから成る領域の画像を単位に印刷処理する印刷処理手段を備えることを特徴とする請求項１又は２に記載の画像復号装置。
【請求項４】
前記符号化画像データを復号するとともに、符号長を出力する復号手段を有し、ブロック単位で符号化され、所定のビットパターンで始るマーカコード、並びに、符号語が前記マーカコードの前記所定ビットパターンと同じになった場合に、前記マーカコードと区別するために前記符号語に後続してエミュレーション防止バイトを示す識別データが挿入された符号化画像データを復号する画像復号装置の制御方法であって、
前記符号化画像データに挿入された前記マーカコード、前記識別データを検出して、該マーカコードの位置情報、識別データの位置情報を出力するとともに、前記符号化画像データに挿入された前記識別データを削除して出力する識別データ削除工程と、
前記復号手段を制御し、前記識別データ削除工程によって識別データが削除された符号化画像データを復号するとともに、符号長を出力させる第１の復号制御工程と、
前記識別データ削除工程から出力された前記識別データの位置情報に基づいて、前記第１の復号制御工程の下で復号された符号化画像データに、前記識別データが含まれていたか否かを判定し、前記識別データが含まれていると判定した場合、第１の復号制御工程の制御の下で前記復号手段が出力した符号長に前記識別データの長さを加算する識別データ判定工程と、
前記識別データ削除工程から出力された前記マーカコードの位置情報に基づいて、マーカコードの長さを検出するマーカコード長検出工程と、
前記識別データ判定工程によって識別データの長さを加算した符号長と、前記マーカコード長検出工程によって検出されたマーカコードの長さとを累算し、ブロック単位で出力する累算工程と、
前記累積工程によって出力される符号長に基づき、前記符号化画像データ中の、所定のブロックに対応する符号化データの格納アドレス情報を、復号のための復号テーブルに登録する登録工程と、
前記復号手段を制御し、前記登録工程によって復号テーブルに登録されたアドレス情報に従って、所定のブロックの位置から所定のブロック数の符号化画像データを復号させる第２の復号制御工程と
を備えることを特徴とする画像復号装置の制御方法。
【請求項５】
ブロック単位で符号化され、所定のビットパターンで始るマーカコード、並びに、符号語が前記マーカコードの前記所定ビットパターンと同じになった場合に、前記マーカコードと区別するために前記符号語に後続してエミュレーション防止バイトを示す識別データが挿入された複数の符号化画像データを復号する画像復号装置であって、
前記符号化画像データに挿入された前記マーカコード、前記識別データを検出して該マーカコードの位置情報、識別データの位置情報を出力するとともに、該符号化画像データに挿入された前記識別データを削除して出力する識別データ削除手段と、
前記識別データ削除手段によって識別データが削除された符号化画像データを復号するとともに、符号長を出力する第１の復号手段と、
前記識別データ削除手段から出力された識別データの位置情報に基づいて、前記第１の復号手段によって復号された符号化画像データに、前記識別データが含まれていたか否かを判定し、前記識別データが含まれていると判定した場合、第１の復号手段から出力された符号長に前記識別データの長さを加算する識別データ判定手段と、
前記識別データ削除手段から出力されたマーカコードの位置情報に基づいて、マーカコードの長さを検出する付加データ長検出部と、
前記識別データ判定手段によって識別データの長さを加算した符号長と、前記付加データ長検出部によって検出されたマーカコードの長さとを累算し、ブロック単位で出力する累算手段と、
前記累積手段によって出力される符号長に基づき、前記符号化画像データ中の、所定のブロックに対応する符号化データの格納アドレス情報を、復号のための復号テーブルに登録する登録手段と、
前記登録手段によって復号テーブルに登録されたアドレス情報に従って、所定のブロックの位置から所定のブロック数の符号化画像データを復号する、前記第１の復号手段とは独立した第２の復号手段と、
前記第１の復号手段、前記第２の復号手段を制御し、前記第１の復号手段による着目符号化画像データの復号処理と、前記第２の符号化手段による前記着目符号化画像データの１つ前の符号化画像データを復号処理を並列して実行させる制御手段と
を備えることを特徴とする画像復号装置。
【請求項６】
ブロック単位で符号化され、所定のビットパターンで始るマーカコード、並びに、符号語が前記マーカコードの前記所定ビットパターンと同じになった場合に、前記マーカコードと区別するために前記符号語に後続してエミュレーション防止バイトを示す識別データが挿入された複数の符号化画像データを復号する画像復号装置の制御方法であって、
前記符号化画像データに挿入された前記マーカコード、前記識別データを検出して該マーカコードの位置情報、識別データの位置情報を出力するとともに、該符号化画像データに挿入された前記識別データを削除して出力する識別データ削除工程と、
前記識別データ削除工程によって識別データが削除された符号化画像データを復号するとともに、符号長を出力する第１の復号工程と、
前記識別データ削除工程から出力された識別データの位置情報に基づいて、前記第１の復号工程によって復号された符号化画像データに、前記識別データが含まれていたか否かを判定し、前記識別データが含まれていると判定した場合、第１の復号工程から出力された符号長に前記識別データの長さを加算する識別データ判定工程と、
前記識別データ削除工程から出力されたマーカコードの位置情報に基づいて、マーカコードの長さを検出する付加データ長検出部と、
前記識別データ判定工程によって識別データの長さを加算した符号長と、前記付加データ長検出部によって検出されたマーカコードの長さとを累算し、ブロック単位で出力する累算工程と、
前記累積工程によって出力される符号長に基づき、前記符号化画像データ中の、所定のブロックに対応する符号化データの格納アドレス情報を、復号のための復号テーブルに登録する登録工程と、
前記登録工程によって復号テーブルに登録されたアドレス情報に従って、所定のブロックの位置から所定のブロック数の符号化画像データを復号する、前記第１の復号工程とは独立した第２の復号工程と、
前記第１の復号工程、前記第２の復号工程を制御し、前記第１の復号工程による着目符号化画像データの復号処理と、前記第２の符号化工程による前記着目符号化画像データの１つ前の符号化画像データを復号処理を並列して実行させる制御工程と
を備えることを特徴とする画像復号装置の制御方法。
【請求項７】
コンピュータに読み込ませ実行させることで、前記コンピュータを請求項１乃至３、５のいずれか１項に記載の画像復号装置として機能させることを特徴とするコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ブロック単位に符号化された画像データを復号する技術に関するものである。
【背景技術】
【０００２】
近年普及しているディジタルカメラの多くは、撮影した静止画を圧縮符号化する技術としてＪＰＥＧを利用している。
【０００３】
ＪＰＥＧの符号化技術を簡単に説明すると、次の通りである。先ず、符号化しようとする画像データを８×８画素のブロック単位に分割する。そして、分割したブロックについて離散コサイン変換（ＤＣＴ）を行ない、変換係数ブロックを生成する。その後、この変換係数ブロック内の各変換係数を量子化する。そして、量子化後の変換係数を一定の順序で走査し、変換係数が連続して０となる個数と、変換係数が０以外の値の組に対して、可変長符号語を割り当てて符号化する。この処理を各ブロックについて実行することで、ＪＰＥＧ符号化画像データ（以下、ＪＰＥＧ画像データという）を生成する。
【０００４】
ところで、ＪＰＥＧ画像データを復号する際、その画像を所定の角度だけ回転させたい場合がある。例えば、一般に、ディジタルカメラに搭載された撮像素子の水平方向の画素数は垂直方向の画素数よりも多く、ＪＰＥＧ符号化処理時には、８×８画素のブロックを単位とするラスタースキャンして符号化を行なう。一方、プリンタで印刷する場合、その装置の大型化を防ぐため（コスト削減のため）、記録可能な幅は、最大記録可能な記録紙の短辺としている。つまり、プリンタで印刷する場合、ディジタルカメラで撮像したＪＰＥＧ画像データを９０度回転させて印刷処理することになる。これ以外にも、記録紙の余白（切り取り線）の設定によっては、ＪＰＥＧ画像データを１８０°、あるいは２７０°回転させた状態で出力させる場合もある。
【０００５】
このような要望に対して単純に考えられる方法は、対象となるＪＰＥＧ画像データの全体を先ず復号し、しかる後に所定の角度だけ回転処理を施すことである。
【０００６】
しかし、この方法によると、復号した画像の全体を一時的に保持するための大容量メモリが必要となるばかりでなく、大容量の画像データを回転処理するために回転処理の所要時間も増大するという問題が生ずる。
【０００７】
かかる問題を解決する技術を開示する文献として、特許文献１が挙げられる。
【０００８】
この文献によると、まず、符号化画像データを最初から順番に仮復号処理を行ない、原画像中に予め定めた起点ブロックを復号するために必要とされる復号情報を保持するテーブル（以下、復号テーブルと記す）を得る。しかる後に、復号テーブルを利用して、符号化画像データを起点ブロックから復号し、所定の角度だけ回転させて画像バッファに出力する。以上の処理を行なうことにより、原画像を所定の角度だけ回転させた状態とした時に、記録紙の紙送りの先頭に位置するブロックから順に復号した結果を出力可能となる。
【０００９】
ここで、予め定めた起点ブロックを復号するために必要とされる復号情報は、起点ブロックのファイルポインタと、起点ブロックを復号するために必要な予測値である。ＪＰＥＧ符号化方式においては、予測値として起点ブロックの直前に位置するブロックのＤＣ成分値が必要とされる。
【特許文献１】特開２００１−８６３１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
ところで、例えばＪＰＥＧ符号化方式を代表とする符号化画像データには、データ誤りからの復帰に用いられるＲＳＴマーカや、符号化画像データの終端を表すＥＯＩマーカといった符号が付加されるのが一般的である。なお、以降の説明では、これらの符号を「マーカコード」と記す。
【００１１】
マーカコードは符号化画像データ中のバイト境界に挿入される。また、マーカコードのエミュレーションを防止するために、画像データを表す符号化データ列の中に所定のバイト値が挿入される。例えば、ＪＰＥＧ符号化方式では、マーカコードは“0xFF”で始まる符号となっている（"0x"は１６進数表記を示す）。ＲＳＴマーカの符号は“0xFFD0”〜“0xFFD7”であり、ＥＯＩマーカの符号は“0xFFD9”である。画像データを表すデータ列中に、バイト境界に“0xFF”が出現した場合は、これらのマーカコードとのエミュレーションを防ぐために、“0x00”が“0xFF”の後に挿入される。なお、以降の説明では、“0xFF”の後に挿入される“0x00”を、「エミュレーション防止バイト」と記す。
【００１２】
従来技術においては、エミュレーション防止バイトに対する具体的な処理方法は明らかではない。例えば、ＪＰＥＧ画像が図４（ａ）に示すように、水平方向に４つ、垂直方向に３つの画素ブロック（それぞれ８×８画素）の場合を考察する。ここで、図４（ａ）におけるマス目の中に記述された数字は、この順番に符号化されていることを示している。さて、図４（ａ）のＪＰＥＧ画像の場合、出力する領域の幅が水平方向に２ブロックを単位とする場合、図４（ｂ）の０乃至ｅで示される位置（ファイルポインタ）を求めることが必要になる。すなわち、図４（ｃ）に示す復号テーブルを作成する必要がある。
【００１３】
しかしながら、もし、エミュレーション防止バイトの直前（図５（ｂ）のb,e）が設定された場合は、画像復号装置には“0xFF”は入力されず、“0x00”が起点ブロックに対応する符号化画像データの開始点として設定されてしまう。この場合は、画像復号装置は入力された“0x00”がエミュレーション防止バイトであるのか符号語であるのかを判別できなくなってしまう。
【００１４】
しかしながら、従来技術においては、起点ブロックのファイルポインタに図４（ｂ）のa〜eで示される位置を設定するための具体的な解決策が示されていない。
【００１５】
ここで、図１４に示す構成の画像復号装置を用いてエミュレーション防止バイトを処理する場合を考える。図示において、４０１は符号化画像データ入力部であり、符号化データをビット順に入力する。４０２は、符号化画像データを頭出しするシフタである。４０３は、エミュレーション防止バイトが存在するか否を判定する００判定部である。４０４は、復号を行ない、符号語長を出力する符号テーブルである。４０５は、復号された変換係数の個数を計数し、ブロックの終端を復号したか否かを判定するカウンタである。
【００１６】
図４の０乃至ｅで示される位置にファイルポインタを設定するためには、まずブロックの終端を復号したか否かを判定する。該ブロック終端の符号語の直後にエミュレーション防止バイトが存在するか否かを００判定部４０３が判定して、該判定結果に基づいてシフタ４０２が符号化画像データの頭出しを行なう必要がある。このような構成では、ＬＳＩに実装する場合にはクリティカル・パスが長くなり、高い周波数で高速に動作させることが難しいという問題がある。
【００１７】
また、従来技術においては、マーカコードに対する具体的な処理方法は明らかではなかった。図１１（ａ）の符号化画像データに対して、同図（ｂ）に示すようにファイルポインタを設定するため、同図（ｃ）に示すように、マーカコードの直前に位置するファイルポインタを復号テーブルに登録した場合を考える。もしもマーカコード“0xFFD1”及び“0xFFD3”の直後に位置するブロック（図１１（ａ）のブロック（７）及びブロック（１３)）を起点として部分的に復号を行なった場合、マーカコードを再び復号することになり、復号処理時間の増大を招く。
【００１８】
本発明はかかる問題点に鑑みなされたものであり、ブロック単位に可変長符号化され、かつ、マーカコードが挿入された符号化画像データから、ランダムにブロック単位の復号処理を効率良く実行することを可能ならしめる復号技術を提供しようとするものである。
【課題を解決するための手段】
【００１９】
かかる課題を解決するため、例えば本発明の画像復号装置は以下の構成を備える。すなわち、
ブロック単位で符号化され、所定のビットパターンで始るマーカコード、並びに、符号語が前記マーカコードの前記所定ビットパターンと同じになった場合に、前記マーカコードと区別するために前記符号語に後続してエミュレーション防止バイトを示す識別データが挿入された符号化画像データを復号する画像復号装置であって、
前記符号化画像データを復号するとともに、符号長を出力する復号手段と、
前記符号化画像データに挿入された前記マーカコード、前記識別データを検出して、該マーカコードの位置情報、識別データの位置情報を出力するとともに、前記符号化画像データに挿入された前記識別データを削除して出力する識別データ削除手段と、
前記復号手段を制御し、前記識別データ削除手段によって識別データが削除された符号化画像データを復号するとともに、符号長を出力させる第１の復号制御手段と、
前記識別データ削除手段から出力された前記識別データの位置情報に基づいて、前記第１の復号制御手段の下で復号された符号化画像データに、前記識別データが含まれていたか否かを判定し、前記識別データが含まれていると判定した場合、第１の復号制御手段の制御の下で前記復号手段が出力した符号長に前記識別データの長さを加算する識別データ判定手段と、
前記識別データ削除手段から出力された前記マーカコードの位置情報に基づいて、マーカコードの長さを検出するマーカコード長検出手段と、
前記識別データ判定手段によって識別データの長さを加算した符号長と、前記マーカコード長検出手段によって検出されたマーカコードの長さとを累算し、ブロック単位で出力する累算手段と、
前記累積手段によって出力される符号長に基づき、前記符号化画像データ中の、所定のブロックに対応する符号化データの格納アドレス情報を、復号のための復号テーブルに登録する登録手段と、
前記復号手段を制御し、前記登録手段によって復号テーブルに登録されたアドレス情報に従って、所定のブロックの位置から所定のブロック数の符号化画像データを復号させる第２の復号制御手段とを備える。
【発明の効果】
【００２０】
本発明によれば、ブロック単位に可変長符号化され、かつ、マーカコードが挿入された符号化画像データから、ランダムにブロック単位の復号処理を効率良く実行することが可能になる。
【発明を実施するための最良の形態】
【００２１】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００２２】
［第１の実施形態］
第１の実施形態の画像復号装置を、プリンタに搭載した例を説明する。図２は、そのプリンタのブロック構成図である。
【００２３】
図２において、１１は符号化画像データのファイルを格納するバッファである。１０は画像復号部であり、符号化画像データバッファ１１から入力された符号化画像データを復号する。
【００２４】
画像復号部１０は、ＪＰＥＧ画像データを復号する。ＪＰＥＧ符号化では、少なくとも１つの変換係数ブロックから成るＭＣＵ（Minimum Coded Unit）と呼ばれるブロックを処理単位として符号化及び復号が行なわれる。なお、本実施形態では、復号対象の符号化画像データはＪＰＥＧ符号化画像データを例にして説明するが、この符号化の種類によって本発明が限定されるものではない。例えば、ＭＰＥＧ符号化方式で符号化された画像データを処理してもよい。要は、ＭＣＵ等の画素ブロックを単位に、可変長符号化された画像であれば適用できる。画像復号部１０は、復号処理を行なっていく中で、復号された画像データと、ＤＣ予測値と累積符号長を出力する。
【００２５】
１２は、画像復号部１０と復号テーブル作成部１４を制御する制御部である。また、この制御部１２は、外部装置からのＪＰＥＧ符号化データの入力、及び、バッファ１１への格納処理も行なう。ＪＰＥＧ符号化データの入力源は、本装置が接続されるホストコンピュータであっても良いし、メモリカードスロットに接続されたメモリカードでも構わない。
【００２６】
１３は、画像復号部１０によって復号された画像データを格納する復号画像データバッファである。１４は、画像復号部１０から出力されたＤＣ予測値（着目画素ブロックの直前の画素ブロックのＤＣ値）と累積符号長を基に、ＭＣＵのファイルポインタとＤＣ予測値を保持する復号テーブルを作成する復号テーブル作成部である。１５は、復号テーブル作成部１４によって作成された復号テーブルを格納する復号テーブル格納部である。
【００２７】
ＪＰＥＧ符号化においては、変換係数のうちのＤＣ成分に関しては、直前のＭＣＵを構成する変換係数ブロックのＤＣ成分を予測値とし、その予測値と着目ＭＣＵの変換係数ブロックのＤＣ成分との差分を符号化する。従って、画像の途中にある或るＭＣＵから復号する場合は、そのＭＣＵのファイルポインタのみならず、直前のＭＣＵを構成する変換係数ブロックのＤＣ成分値をＤＣ予測値として保持しておく必要がある。
【００２８】
画像復号部１０は、復号テーブルを作成するために符号化画像データに対して１回目の復号処理を行なった後、制御部１２の指示に基づいて、該復号テーブルを用いて所定のＭＣＵから部分的に２回目以降の復号処理を行なう。なお、復号テーブルを用いて所定のＭＣＵから部分的に復号処理を行なう方法については、従来技術において周知であるので、ここでは説明しない。
【００２９】
１６は、本実施形態の画像復号装置によって復号された画像データに対し、印刷のための諸々の画像処理を行なう画像処理部である。画像処理部１６によって行なわれる画像処理は、例えば回転処理、色変換やハーフ・トーン化などが挙げられるが、当業者には周知であるので、ここでは説明しない。また、本発明は画像処理部１６によって実行される画像処理の方法に限定されないことは言うまでもない。１７は、画像処理部１６から出力された画像データを印刷する印刷部である。なお、本実施形態では印刷部１７に画像データが出力されるが、本発明は無論これに限定されるものではなく、例えば表示装置に画像データが出力されてもよい。
【００３０】
多くのディジタルカメラでは、カメラを正立状態（ランドスケープ撮影状態）にしたときの撮像素子の水平方向の画素数をＷ、垂直方向の画素数をＨとすると、Ｗ＞Ｈの関係にある。また、符号化順は、この水平方向を基準とするラスタースキャン順である。
【００３１】
一方、一般にプリンタ装置は、その装置の印刷可能な記録紙の最大サイズが仮にＡ４であるとした場合、記録ヘッドの走査運動による記録できる範囲は、コスト削減、並びに、装置の小型化のため、Ａ４の短辺を基準に設計されている。これは、実施形態における印刷部１７でも同じである。従って、少ないメモリを利用して、一回の記録ヘッドの走査運動によって印刷される符号化画像データのみを復号するためには、ＭＣＵを部分的に復号することが必要になる。つまり、実施形態における特徴部分は画像復号部１０にある。
【００３２】
そこで、画像復号部１０の詳細ブロック構成図を図１に示し、その処理の内容を更に詳しく説明する。
【００３３】
１０１は、バッファ１１から符号化画像データを入力する符号化画像データ入力部である。１０２は、符号化画像データ入力部１０１を介して入力された符号化画像データに対して、バイト境界に出現する“0xFF”に続く“0x00”（エミュレーション防止バイト）を検出して削除する００削除部である。この００削除部は、エミュレーション防止バイトである識別データを削除する識別データ削除手段として機能するものである。例えば、図３（ａ）に示すエミュレーション防止バイトが存在した場合、００削除部１０２は、エミュレーション防止バイトを削除した符号化画像データ（図３（ｂ））と、“0x00”の直前の位置(“0xFF”のLSB)を示すエミュレーション防止バイト位置データとを出力する。エミュレーション防止バイト位置データは、“0x00”の直前のビット位置（“0xFF”のLSB）の値を“１”とし、それ以外を“０”としたものであり、図３（ｃ）に示すようになる。
【００３４】
本第１の実施形態において、00削除部１０２は、符号化画像データを２バイトずつ処理する。００削除部１０２は、エミュレーション防止バイトを検出した場合は、当該バイトを削除するので、後述するシフタ１０３及びシフタ１０４へ各々上記２種類のデータを１バイトずつ出力する。そうでない場合は、００削除部１０２は、上記２つのデータを２バイトずつ出力する。なお、本発明は実施形態の００削除部１０２によって処理されるバイト数に限定されるものではなく、例えば４バイトずつ処理してもよい。
【００３５】
１０３は、エミュレーション防止バイト削除後の符号化画像データを頭出しするシフタである。１０４は、エミュレーション防止バイト位置データを頭出しするシフタである。
【００３６】
１０５は、シフタ１０４によって頭出しされたエミュレーション防止バイト削除後の符号化画像データに対して復号を行ない、ＤＣ予測値を含む復号データと符号長とを出力する符号テーブルである。符号テーブル１０５から出力された符号長は、シフタ１０３及びシフタ１０４に各々入力され、エミュレーション防止バイト削除後の符号化画像データ及びエミュレーション防止バイト位置データが夫々頭出しされる。
【００３７】
１０７は、符号テーブル１０５によって復号された符号化画像データの中に、エミュレーション防止バイトが含まれているか否かを判定する符号長算出部である。符号長算出部１０７は、シフタ１０４から出力されるエミュレーション防止バイト位置データを参照する。具体的には、エミュレーション防止バイト位置データのうち、符号テーブル１０５から出力された符号長で示されるビット数の中に、“１”が存在するか否かを判定する。“１”が存在する場合は、符号テーブル１０５によって復号された符号データの中に、エミュレーション防止バイトが含まれているので、符号テーブル１０５から出力された符号長に８（エミュレーション防止コードのデータ長（ビット数））を加算する。加算された値は符号長累算部１０８へ出力される。そうでなければ、符号テーブル１０５によって復号された符号データの中に、エミュレーション防止バイトが含まれていないので、符号テーブル１０５から出力された符号長を、そのまま出力する。
【００３８】
例えば、図３（ｂ）に示したＭＣＵの最後の符号の符号長が２４ビットであるとする。図３（ｃ）に示したエミュレーション防止バイト位置データの２４ビット目に“１”が存在するので、符号テーブル１０５によって復号された符号データには、エミュレーション防止バイトが含まれていると判定される。よって、符号長累算部１０８へは、２４＋８＝３２が符号長として符号長算出部１０７から出力される。一方、シフタ１０３及びシフタ１０４は、エミュレーション防止バイト削除後のデータを保持しているので、エミュレーション防止バイトを加算する前の符号長が符号テーブル１０５から入力される。
【００３９】
なお、符号テーブル１０５から出力された符号長で示されるビット数の中に、“１”がｎ個（ｎは１以上）含まれる場合、符号テーブル１０５から出力された符号長に８×ｎが加算される。即ち、復号された符号の中にエミュレーション防止バイトがｎ個含まれる場合は、８×ｎビットが符号テーブル１０５によって復号された符号長に加算される。
【００４０】
１０８は、符号長算出部１０７から出力された符号長を累算する符号長累算部である。１０６は、符号テーブル１０５によって復号された変換係数の個数を計数するカウンタである。カウンタ１０６は、復号された変換係数がＭＣＵを構成する変換係数の個数に達すると、符号長累算部１０８にその旨を通知する。符号長累算部１０８は、累算された符号長を図２の復号テーブル作成部１４へＭＣＵ毎に出力する。
【００４１】
次に、本実施形態の画像復号装置によって作られる復号テーブルを、図４を用いて説明する。
【００４２】
図４（ａ）に示された画像データは、説明の為に画像データを構成するＭＣＵに対して各々番号を付与したものである。図４（ｂ）に示された符号化画像データは、図４（ａ）に示された画像データを構成する各々のＭＣＵに対応するデータを示したものである。ＭＣＵ４及びＭＣＵ１０の最後の符号化画像データは、バイト境界に位置する“0xFF”で終了している。よって、エミュレーション防止バイトである“0x00”が該“0xFF”の直後に付加される。図４（ｃ）に示された復号テーブルは、本実施形態の画像復号装置によって作られる復号テーブルを示したものである。該復号テーブルの0〜eは、符号化画像データの0〜eの位置（ファイルポインタ）と、画像データのＭＣＵ１,３,５,７,９,１１に各々対応している。
【００４３】
本実施形態の画像復号装置では、00削除部１０２によって検出されたエミュレーション防止バイト位置データを基に、符号長算出部１０７が符号長を算出し、符号長累算部１０８へ出力する。符号テーブル１０５によって復号された符号データの中に、エミュレーション防止バイトが含まれている場合は、エミュレーション防止バイトのビット長である“８”が加算された符号長が符号長累算部１０８によって累算される。よって、復号テーブル作成部１４は、図４（ｂ）及び（ｃ）に示すように、ＭＣＵバイト境界の“0xFF”で終了している場合に、後続する“0x00”の直後の位置を復号テーブルに登録することができる。
【００４４】
なお、本発明の画像復号装置は、図２に示される実施形態に限定されるものではない。図６に示すように画像復号部１０（第１の復号部）とは別の画像復号部１８（第２の復号部）が、復号テーブルを参照し所定のMCUを起点として部分的に復号を行なうようにしてもよい。この場合、複数の符号化画像データに対して、復号テーブルを作成する処理と、該復号テーブルを参照して所定のMCUを起点として部分的に復号を行なう処理を、パイプライン化して行なうことができる。例えば、画像復号部１８が第１の符号化画像データを部分的に復号している間に、画像復号部１０と復号テーブル作成部１４が第２の符号化画像データの復号テーブルを作成することが可能である。
【００４５】
＜第２の実施形態＞
第２の実施形態の画像復号装置の構成を、図２及び図７のブロック図を参照して説明する。
【００４６】
本第２の実施形態の画像復号装置の構成は、図２に示す画像復号部１０の内部の詳細な構成を除いて先に説明した第１の実施形態と同様である。画像復号部１０の詳細な構成を、図７を参照して説明する。
【００４７】
図７において、２０１は、符号化画像データを入力する符号化画像データ入力部である。２０２は、符号化画像データ入力部を介して入力された符号化画像データにおいて、バイト境界に出現するマーカコードを検出し、マーカコード位置データを出力するマーカ位置検出部である。マーカコードはバイト境界に存在する“0xFF”と、それに続く“0x00”以外の８ビットの符号から成る。図８にマーカコードと、マーカコード位置データの例を示す。図８（ａ）は、入力される符号化画像データを例示したものである。マーカコードは“0xFFD0”である。マーカコードをバイト境界に整列させるために、直前に０〜７ビットのパディング・ビットが付加される。パディング・ビットの値は“１”である。図８（ａ）では、６ビットのパディング・ビットが付加されている。図８（ｂ）は、図８（ａ）の符号化画像データに対応するマーカコード位置データを例示したものである。マーカコード位置データは、マーカコードを構成するビット列のうち、最初の８ビットである“0xFF”に対応するビット位置の値を“１”とし、それ以外を“０”としたものである。
【００４８】
２０３は、符号化画像データを頭出しするシフタである。２０４は、マーカコード位置データを頭出しするシフタである。
【００４９】
２０５は、シフタ２０３によって頭出しされた符号化画像データを復号し、DC予測値を含む復号データと符号長とを出力する符号テーブルである。符号テーブル２０５から出力された符号長は、制御部２０６と符号長選択部２０８へ出力される。
【００５０】
２０７は、シフタ２０３が保持するデータの先頭(MSB)にマーカコードまたはパディング・ビットが存在するか否かを判定し、存在すると判定した場合はそのビット長を出力するマーカ長検出部である。マーカ長検出部２０７は、シフタ２０４によって頭出しされたマーカコード位置データと、シフタ２０３によって頭出しされた符号化画像データを基に、マーカコードまたはパディング・ビットが存在するか否かを判定する。具体的には、マーカコード位置データによって示されるマーカ位置がＭＳＢにあるか、頭出しされた符号化画像データのうち該マーカ位置より左側にあるビットが全て“１”である場合は、それらが存在すると判定する。例えば、図９（ａ）において、頭出しされた符号化画像データのうちマーカ位置（図９（ｂ））より左側にある６ビットが全て“１”であるので、マーカコードまたはパディング・ビットが存在すると判定される。
【００５１】
マーカ長検出部２０７は、マーカコードまたはパディング・ビットが存在する場合は、それらの合計ビット長を制御部２０６と符号長選択部２０８に出力する。そうでない場合は、０を出力する。
【００５２】
２０８は、制御部２０６からの指示に基づいて、符号テーブル２０５から出力された符号長と、マーカ長検出部２０７から出力された合計ビット長のいずれかを選択する符号長選択部である。符号長選択部２０８から出力されたビット長は、符号長累算部２１０、シフタ２０３及びシフタ２０４へ入力される。シフタ２０３及びシフタ２０４は、該ビット長を頭出し量として各々の保持するデータの頭出しを行なう。
【００５３】
２０６は、符号長選択部２０８と符号長累算部２１０とを制御する制御部である。制御部２０６は、マーカコードまたはパディング・ビットが存在する場合に、マーカ長検出部２０７から出力された合計ビット長を符号長選択部２０８に選択させる。そうでない場合は、符号テーブル２０５から出力された符号長を選択させる。さらに、シフタ２０３が保持する有効ビット長と、マーカコード及びパディング・ビットの合計最大長（１５ビット）とを比較する。シフタ２０３が保持する有効ビット長が、上記最大長を超えた場合は、制御部２０６はその旨を符号長累算部２１０に通知する。
【００５４】
２１０は、符号長選択部２０８によって選択された符号長あるいはビット長を累算する符号長累算部である。２０９は、符号テーブル２０５によって復号された変換係数の個数を計数するカウンタである。復号された変換係数がMCUを構成する変換係数の個数に達すると、符号長累算部２１０に通知する。符号長累算部２１９は、カウンタ２０９及び制御部２０６から上記通知を受けたときに、累算された符号長を図２の復号テーブル作成部１４へＭＣＵ毎に出力する。
【００５５】
次に、本第２の実施形態の画像復号装置によって作られる復号テーブルを、図１０を用いて説明する。
【００５６】
図１０（ａ）に示された画像データは、説明の為に画像データを構成するＭＣＵに対して各々番号を付与したものである。図１０（ｂ）に示された符号化画像データは、図１０（ａ）に示された画像データを構成する各々のＭＣＵに対応するデータを示したものである。ＭＣＵ７及びＭＣＵ１３の符号化画像データの直前には、マーカコードである“0xFFD1”と“0xFFD3”が各々挿入されている。図１０（ｃ）に示された復号テーブルは、本実施形態の画像復号装置によって作られる復号テーブルを示したものである。該復号テーブルの0〜gは、夫々符号化画像データの0〜gの位置（ファイルポインタ）と、画像データのＭＣＵ１,３,５,７,９,１１,１３,１５に対応している。
【００５７】
本第２の実施形態の画像復号装置では、シフタ２０３が保持する有効ビット長と、マーカコード及びパディング・ビットの合計最大長（１５ビット）とが比較される。上記最大長を超えた場合は、制御部２０６はその旨を符号長累算部２１０に通知し、しかる後に符号長累算部２１０は累算された符号長を復号テーブル作成部１４へＭＣＵ毎に出力する。即ち、ＭＣＵの直後にマーカコードが存在するか否かが制御部２０６によって判定された後に、累算された符号長が符号長累算部２１０から出力される。
【００５８】
ゆえに、図１０（ｂ）及び図１０（ｃ）に示したように、マーカコードの直後の位置c及びfが、復号テーブルに登録される。ＭＣＵ７やＭＣＵ１３を起点として部分的に復号する場合には、図１０（ｂ）のcやfの位置から符号化画像データが画像復号部１０に入力され、復号処理が開始される。よって、本実施形態の画像復号装置では、ＭＣＵ７やＭＣＵ１３の直前のマーカコードに対する処理が１回で済むので、所定のＭＣＵを起点として部分的に復号する際のオーバーヘッドが削減される。
【００５９】
＜第３の実施形態＞
本発明の第３の実施形態の画像復号装置の構成を、図２及びの図１２のブロック図を参照して説明する。
【００６０】
本実施形態の画像復号装置の構成は、図２に示す画像復号部１０の内部の詳細な構成を除いて第１の実施形態と同様である。画像復号部１０の詳細な構成を図１２を参照して説明する。
【００６１】
３０１は、符号化画像データを入力する符号化画像データ入力部である。３０２は、符号化画像データ入力部を介して入力された符号化画像データに対して、エミュレーション防止バイトとマーカコードを検出する00削除・マーカ位置処理部である。00削除・マーカ位置処理部３０２は、エミュレーション防止バイトを削除した符号化画像データ（図３（ｂ））と、“0x00”の直前の位置(“0xFF”のLSB)を示すエミュレーション防止バイト位置データ（図３（ｃ））とを出力する。さらに、00削除・マーカ位置処理部３０２は、図８（ｂ）に示すマーカコード位置データを出力する。
【００６２】
３０３は、エミュレーション防止バイト削除後の符号化画像データを頭出しするシフタである。３０４は、エミュレーション防止バイト位置データを頭出しするシフタである。３０５は、マーカコード位置データを頭出しするシフタである。
【００６３】
３０６は、シフタ３０４によって頭出しされたエミュレーション防止バイト削除後の符号化画像データに対して復号を行ない、ＤＣ予測値を含む復号データと符号長とを出力する符号テーブルである。符号テーブル３０６から出力された符号長は、シフト量選択部３１０と符号長算出部３０７へ入力される。
【００６４】
３０７は、符号テーブル３０６によって復号された符号化画像データの中に、エミュレーション防止バイトが含まれているか否かを判定する符号長算出部である。符号長算出部３０７は、シフタ３０４から出力されるエミュレーション防止バイト位置データを参照し、符号テーブル３０６によって復号された符号の符号長にエミュレーション防止バイトの長さを加算する。
【００６５】
３０８は、シフタ３０３が保持するデータの先頭(MSB)にマーカコードまたはパディング・ビットが存在するか否かを判定し、存在すると判定した場合はそのビット長を出力するマーカ長検出部である。マーカ長検出部３０８は、シフタ３０５によって頭出しされたマーカコード位置データと、シフタ３０３によって頭出しされた符号化画像データを基に、マーカコードまたはパディング・ビットが存在するか否かを判定する。マーカコードまたはパディング・ビットが存在する場合は、それらの合計ビット長を制御部３０９、シフト量選択部３１０と符号長選択部３１１とに出力する。そうでない場合は、０を出力する。
【００６６】
３１０は、制御部３０９からの指示に基づいて、符号テーブル３０６から出力された符号長と、マーカ長検出部３０８から出力された合計ビット長のいずれかを選択するシフト量選択部である。シフト量選択部３１０によって選択されたビット長は、シフタ３０３、シフタ３０４及びシフタ３０５に対して、頭出しするビット数として入力される。
【００６７】
３１１は、制御部３０９からの指示に基づいて、符号長算出部３０７から出力された符号長と、マーカ長検出部３０８から出力された合計ビット長のいずれかを選択する符号長選択部である。
【００６８】
３０９は、符号長選択部３１１と符号長累算部３１３とを制御する制御部である。制御部３０９は、マーカコードまたはパディング・ビットが存在する場合に、マーカ長検出部３０８から出力された合計ビット長を符号長選択部３１１に選択させる。そうでない場合は、符号長算出部３０７から出力された符号長を選択させる。制御部３０９は、さらに、シフタ３０３が保持する有効ビット長と、マーカコード及びパディング・ビットの合計最大長（１５ビット）とを比較する。シフタ３０３が保持する有効ビット長が上記最大長を超えた場合は、制御部３０９はその旨を符号長累算部３１３に通知する。
【００６９】
３１３は、符号長選択部３１１によって選択された符号長あるいはビット長を累算する符号長累算部である。３１２は、符号テーブル３０６によって復号された変換係数の個数を計数するカウンタである。復号された変換係数がＭＣＵを構成する変換係数の個数に達すると、符号長累算部３１３にその旨を通知する。符号長累算部３１３は、カウンタ３１２及び制御部３０９から上記通知を受けたときに、累算された符号長を図２の復号テーブル作成部１４へＭＣＵ毎に出力する。
【００７０】
次に、本第３の実施形態の画像復号装置によって作られる復号テーブルを、図１３を用いて説明する。
【００７１】
図１３（ａ）に例示する画像データは、説明の為に画像データを構成するＭＣＵに対して各々番号付けを行なったものである。図１３（ｂ）に例示する符号化画像データは、図１３（ａ）に例示された画像データを構成する各々のＭＣＵに対応する符号化データを示したものである。ＭＣＵ３及びＭＣＵ１０の最後の符号化画像データは、バイト境界に位置する“0xFF”で終了している。よって、エミュレーション防止バイトである“0x00”が該“0xFF”の直後に付加されている。さらに、ＭＣＵ７の符号化画像データの直前には、マーカコードである“0xFFD1”が挿入されている。
【００７２】
図１３（ｃ）に例示する復号テーブルは、本第３の実施形態の画像復号装置によって作られる復号テーブルを示したものである。該復号テーブルの0〜eは、夫々符号化画像データの0〜eの位置（ファイルポインタ）と、画像データのＭＣＵ１,３,５,７,９,１１に対応している。
【００７３】
本第３の実施形態の画像復号装置では、00削除・マーカ位置処理部３０２によって検出されたエミュレーション防止バイト位置データを基に、符号長算出部３０７が符号長を算出し、符号長累算部３１３へ出力する。符号テーブル３０６によって復号された符号データの中に、エミュレーション防止バイトが含まれている場合は、エミュレーション防止バイトのビット長である８が加算された符号長が符号長累算部３１３によって累算される。よって、復号テーブル作成部１４は、図１３（ｂ）に示すように、ＭＣＵがバイト境界の“0xFF”で終了している場合に、後続する“0x00”の直後の位置を復号テーブルに登録することができる。
【００７４】
さらに、本第３の実施形態の画像復号装置では、シフタ３０３が保持する有効ビット長と、マーカコード及びパディング・ビットの合計最大長（１５ビット）とが比較される。上記最大長を超えた場合は、制御部３０９はその旨を符号長累算部３１３に通知し、しかる後に符号長累算部３１３は累算された符号長を復号テーブル作成部１４へＭＣＵ毎に出力する。即ち、ＭＣＵの直後にマーカコードが存在するか否かが制御部３０９によって判定された後に、累算された符号長が符号長累算部３１３から出力される。
【００７５】
ゆえに、図１３（ｂ）及び図１３（ｃ）に示したように、マーカコードの直後の位置cが、復号テーブルに登録される。ＭＣＵ７を起点として部分的に復号する場合には、図１３（ｂ）のcの位置から符号化画像データが画像復号部１０に入力され、復号処理が開始される。よって、本第３の実施形態の画像復号装置では、ＭＣＵ７の直前のマーカコードに対する処理が１回で済むので、所定のＭＣＵを起点として部分的に復号する際のオーバーヘッドが削減される。
【００７６】
以上説明したように本実施形態によれば、識別データ位置情報に基づいて、復号された符号化画像データに、識別データが含まれていたか否かを判定する。該判定結果を基に、復号された符号長に識別データの長さを予め加算してから累算し、ブロック単位で出力する。よって、ブロックの終端の符号語であるか否かを判定することなく、識別データの直後の位置を確実に復号テーブルに登録できるので、高速に復号処理を行なうことが可能となる。さらに、マーカコードの直後の位置が復号テーブルに格納されるため、マーカコードに対する処理が復号テーブル作成時の１回で済むので、復号処理時間が短縮される。
【００７７】
従って、本第１乃至第３の実施形態によれば、ＪＰＥＧ符号化画像データの様に、ブロック単位に可変長符号化され、かつ、マーカコードが挿入された符号化画像データから、ランダムにブロック単位の復号処理を効率良く実行することが可能になる。
【００７８】
＜その他の実施形態＞
なお、上記の各実施形態では、復号しようとする画像データが、水平方向に４個の、垂直方向に３個又は３個のＭＣＵ（ブロック）で構成される例を示したが、これは説明を分かりやすくするためのものである。
【００７９】
すなわち、復号対象の画像データが水平方向にＭ個（Ｍ＞１）、垂直方向にＮ個（Ｎ＞１）のブロックで構成されるものと定義し、且つ、復号処理では水平方向にＬ個（Ｌ＜Ｍ）、垂直方向にＮ個のブロックで表わされるサイズの領域の画像を復号する場合、復号のためのテーブルには、水平方向にＬ個のブロック間隔に位置するブロックの符号化データの格納アドレス情報を登録すれば良い。そして、各登録したアドレス情報で示されるブロックからＬ個のブロック数の符号化データを復号すればよい。
【００８０】
また、本発明は、上記第１乃至第３の実施形態と同等の処理を、コンピュータプログラムでも実現できる。この場合、図１をはじめとする構成要素の各々は関数、もしくはサブルーチンとして機能すれば良い。
【００８１】
また、通常、コンピュータプログラムは、ＣＤ−ＲＯＭ等のコンピュータ可読記憶媒体に格納されており、それを、コンピュータが有する読取り装置（ＣＤ−ＲＯＭドライブ等）にセットし、システムにコピーもしくはインストールすることで実行可能になる。従って、かかるコンピュータ可読記憶媒体も本発明の範疇にあることは明らかである。
【図面の簡単な説明】
【００８２】
【図１】第１の実施形態の画像復号装置の画像復号部のブロック構成図である。
【図２】実施形態が適用するプリンタのブロック構成図である。
【図３】第１の実施形態の画像復号装置の00削除部が出力するデータを例示する図である。
【図４】第１の実施形態の画像復号装置によって作られる復号テーブルとその作成の原理を示す図である。
【図５】従来技術の画像復号装置によって作られる復号テーブルについての問題点を説明するための図である。
【図６】第１の実施形態における他のプリンタのブロック構成図である。
【図７】第２の実施形態の画像復号装置の画像復号部のブロック構成図である。
【図８】第２の実施形態の画像復号装置のマーカ位置検出部が出力するデータを例示する図である。
【図９】第２の実施形態の画像復号装置のマーカ位置検出部が出力するデータを例示する図である。
【図１０】第２の実施形態の画像復号装置によって作られる復号テーブルとその作成の原理を示す図である。
【図１１】従来技術の画像復号装置によって作られる復号テーブルとその問題点を示す図である。
【図１２】第３の実施形態の画像復号装置の画像復号部のブロック構成図である。
【図１３】第３の実施形態の画像復号装置によって作られる復号テーブルとその作成の原理を示す図である。
【図１４】従来技術の画像復号装置のブロック構成図である。
【図１】
0005173547.tif 000002
【図２】
0005173547.tif 000003
【図３】
0005173547.tif 000004
【図４】
0005173547.tif 000005
【図５】
0005173547.tif 000006
【図６】
0005173547.tif 000007
【図７】
0005173547.tif 000008
【図８】
0005173547.tif 000009
【図９】
0005173547.tif 000010
【図１０】
0005173547.tif 000011
【図１１】
0005173547.tif 000012
【図１２】
0005173547.tif 000013
【図１３】
0005173547.tif 000014
【図１４】
0005173547.tif 000015