(57)【特許請求の範囲】
【請求項１】
画像を領域ごとに第１の方式により圧縮された第１のデータと、前記画像における一部領域について、前記第１の方式とは異なる第２の方式により圧縮された第２のデータが混在するデータを復号し、前記画像を出力する画像復号装置であって、
前記第１のデータを復号し、画像を構成する各画素の画素データを出力する第１の復号手段と、
前記第２の方式によって圧縮された圧縮領域を示す境界情報に基づき、前記圧縮領域の前記第２のデータを復号する第２の復号手段と、
前記第２の復号手段から得られる前記画像を構成する各画素の画素データをメモリに書き込む書き込み手段とを有し、
前記第１の復号手段は、前記各画素の画素データを前記第２の復号手段に出力し、
前記第２の復号手段は、
前記境界情報に基づいて処理対象画素が前記圧縮領域かどうかを判定し、
前記圧縮領域を除く画素については前記第１の復号手段から取得した画素データを前記書き込み手段に出力し、前記圧縮領域に含まれる画素については前記第２の復号手段が復号して得られる画素データを前記書き込み手段に出力する
ことを特徴とする画像復号装置。
【請求項２】
前記第１の復号手段から得られる画素データのうち、前記圧縮領域に含まれる画素の画素データは、前記メモリに格納されないことを特徴とする請求項１に記載の画像復号装置。
【請求項３】
前記書き込み手段は、前記画像を構成する各画素について、１回ずつ画素データを前記メモリに書き込むことを特徴とする請求項１に記載の画像復号装置。
【請求項４】
前記第２の復号手段は、
新規境界情報として前記境界情報を取得する取得手段と、
継続境界情報として前記境界情報を保持する保持手段と、
前記新規境界情報と前記継続境界情報の一方を、後続する前記圧縮領域を示す後続境界情報として選択する選択手段と、
前記後続境界情報を前記保持手段に入力し、前記後続境界情報に基づき前記圧縮領域の前記第２のデータの復号および前記画素データの選択を行う制御手段と
を有することを特徴とする請求項１乃至３のいずれか１項に記載の画像復号装置。
【請求項５】
前記境界情報は、ラインごとに前記圧縮領域の左端を示す開始情報および前記圧縮領域の右端を示す終端情報を含み、
前記制御手段は、前記ラインごとに、前記後続境界情報が示す前記開始情報および前記終端情報に基づき前記圧縮領域の前記第２のデータの復号および前記画素データの選択を行う
ことを特徴とする請求項４に記載の画像復号装置。
【請求項６】
前記境界情報は、さらに、前記圧縮領域の色情報を含み、
前記制御手段は、前記圧縮領域の前記第２のデータの復号として、前記開始情報が示す画素の座標から前記終端情報が示す画素の座標まで、前記画素データとして前記色情報を出力する
ことを特徴とする請求項５に記載の画像復号装置。
【請求項７】
前記保持手段は、前記後続境界情報の入力の数を管理するための第１のカウンタ、および、注目ラインに関して保持する前記継続境界情報の数を管理するための第２のカウンタを有する
ことを特徴とする請求項４乃至６のいずれか１項に記載の画像復号装置。
【請求項８】
前記保持手段は、前記継続境界情報を入力の順に出力し、前記後続境界情報として前記継続境界情報が選択されると前記第２のカウンタをデクリメントする
ことを特徴とする請求項７に記載の画像復号装置。
【請求項９】
前記後続境界情報として前記新規境界情報が選択され、前記新規境界情報が示す前記圧縮領域の先頭ラインと前記注目ラインが１致しない第１の場合、前記後続境界情報として前記継続境界情報が選択され、前記第２のカウンタが0を示す第２の場合、あるいは、前記後続境界情報として選択すべき境界情報が存在しない第３の場合、前記保持手段は前記第１のカウンタの情報を前記第２のカウンタにコピーして前記第１のカウンタをクリアし、前記制御手段は前記注目ラインの座標をインクリメントする
ことを特徴とする請求項８に記載の画像復号装置。
【請求項１０】
前記第１の場合、前記制御手段は、前記注目ラインの座標が前記後続境界情報が示す前記圧縮領域の先頭ラインに達しない間、前記注目ラインの座標のインクリメントと、前記第１の復号手段が復号した画素データの選択を繰り返す
ことを特徴とする請求項９に記載の画像復号装置。
【請求項１１】
前記第３の場合、前記制御手段は、前記注目ラインの座標が前記画像の最終ラインの座標に達するまで、前記注目ラインの座標のインクリメントと、前記第１の復号手段が復号した画素データの選択を繰り返す
ことを特徴とする請求項９又は１０に記載の画像復号装置。
【請求項１２】
前記取得手段は、前記画像に含まれる前記圧縮領域の数を取得して、前記圧縮領域の残数を管理するための第３のカウンタを有し、前記後続境界情報として前記新規境界情報が選択されると前記第３のカウンタをデクリメントする
ことを特徴とする請求項４乃至１１のいずれか１項に記載の画像復号装置。
【請求項１３】
前記取得手段は、前記デクリメントの後、前記第３のカウンタが前記圧縮領域の存在を示す場合、前記新規境界情報の取得を行う
ことを特徴とする請求項１２に記載の画像復号装置。
【請求項１４】
前記第１の方式はロッシー圧縮方式であり、前記第２の方式はロスレス圧縮方式であることを特徴とする請求項１乃至１３のいずれか１項に記載の画像復号装置。
【請求項１５】
前記第２の復号手段は、連続する２つの前記境界情報に基づき、前記第１のデータの選択を行うことを特徴とする請求項４に記載の画像復号装置。
【請求項１６】
前記第２のデータを選択する領域では、前記第１のデータは破棄されることを特徴とする請求項１５に記載の画像復号装置。
【請求項１７】
前記第１の復号手段は、専用ハードウェアによって構成され、
前記第２の復号手段は、専用のワークメモリを有するプロセッサによって構成され、前記プロセッサが前記第２の復号手段として機能させるためのプログラムを実行する
ことを特徴とする請求項１乃至１６のいずれか１項に記載の画像復号装置。
【請求項１８】
請求項１乃至１７のいずれか１項に記載の画像復号装置を用いてレンダリングを行う画像処理装置。
【請求項１９】
画像を領域ごとに第１の方式により圧縮された第１のデータと、前記画像における一部領域について、前記第１の方式とは異なる第２の方式により圧縮された第２のデータが混在するデータを復号し、前記画像を出力する画像復号装置の制御方法であって。
第１の復号手段が、前記第１のデータを復号し、画像を構成する各画素の画素データを出力し、
第２の復号手段が、前記第２の方式によって圧縮された圧縮領域を示す境界情報に基づき、前記圧縮領域の前記第２のデータを復号し、
書き込み手段が、前記第２のデータの復号で得られる前記画像を構成する各画素の画素データをメモリに書き込み、
前記第１のデータの復号で得られた各画素の画素データは前記第２のデータの復号処理に渡され、
前記第２のデータの復号では、
前記境界情報に基づいて処理対象画素が前記圧縮領域かどうかを判定し、
前記圧縮領域を除く画素については前記第１のデータの復号で得られた画素データが前記書き込み対象として出力され、前記圧縮領域に含まれる画素については前記第２のデータの復号で得られた画素データが前記書き込み対象として出力される
を特徴とする画像復号方法。
【請求項２０】
コンピュータを請求項１乃至１７のいずれか１項に記載の画像復号装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、圧縮された画像データの復号処理に関する。
【背景技術】
【０００２】
データ量が膨大な高解像度の画像データには、より少ないメモリ資源で画像データを記憶したり、より短時間にネットワーク転送するために画像圧縮技術が適用される。一方、画像圧縮技術には、画像品位を損わないことが求められる。特許文献１は、データ量をより小さくし、画像品位をより損わない画像圧縮技術として、画像を一つ以上の画素からなる一つ以上の領域に分割して、領域ごとにデータ圧縮方式を切り換える技術を開示する。
【０００３】
画像を一つ以上の領域に分割し、データ圧縮方式を切り替える技術として、画像データを、領域の境界データ（以下、領域境界データ）と、領域の圧縮データ（以下、領域圧縮データ）に符号化する技術が存在する。領域境界データは、境界の座標を特定する情報と、境界の右側の領域のデータ圧縮方式と領域圧縮データを特定する属性情報を含む。
【０００４】
上記の技術は、データ圧縮方式として、ロスレス圧縮方式のランレングス符号化と、ロッシー圧縮方式のJPEGを採用する。従って、ロッシー圧縮方式を適用する領域（以下、ロッシー圧縮領域）は、例えば水平、垂直とも八画素からなる最小符号化単位(MCU)の整数倍のサイズでなければならないという制約がある。このため、ロッシー圧縮領域は、ロスレス圧縮方式が適用された領域（以下、ロスレス圧縮領域）と重複する不要な画素を含む。
【０００５】
そのため、ロッシー圧縮領域とロスレス圧縮領域が混在する符号データを復号する装置は、次の二段階のステップを実行する。第一のステップにおいて、ロッシー圧縮領域のデータ（以下、ロッシー圧縮データ）を復号してメモリに書き出す。次の第二のステップにおいて、境界の座標を特定し、ロスレス圧縮領域のデータ（以下、ロスレス圧縮データ）を復号してメモリに書き出すが、その際、第一のステップにおいてロスレス圧縮領域に書き出された画素データに上書きする。
【０００６】
このように、ロッシー圧縮データとロスレス圧縮データを有する圧縮画像の伸長結果をメモリに書き出す際、ロッシー圧縮データの伸長結果をロスレス圧縮データの伸長結果で上書きする画素が存在する。その結果、システムバス帯域およびメモリ帯域を余分に消費することになる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】米国特許第5,883,976号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００８】
本発明は上記問題に鑑みなされたものである。そして、本願発明は、第１の方式により圧縮された第１の画像データと、第２の方式により圧縮された第２の画像データが混在する場合、第１の画像データの伸長結果に第２の画像データの伸長結果を上書きすることなく、画像データを復号する技術を提供する。
【課題を解決するための手段】
【０００９】
本発明は、前記の目的を達成する一手段として、以下の構成を備える。
【００１０】
画像を領域ごとに第１の方式により圧縮された第１のデータと、前記画像における一部領域について、前記第１の方式とは異なる第２の方式により圧縮された第２のデータが混在するデータを復号し、前記画像を出力する画像復号装置であって、
前記第１のデータを復号し、画像を構成する各画素の画素データを出力する第１の復号手段と、
前記第２の方式によって圧縮された圧縮領域を示す境界情報に基づき、前記圧縮領域の前記第２のデータを復号する第２の復号手段と、
前記第２の復号手段から得られる前記画像を構成する各画素の画素データをメモリに書き込む書き込み手段とを有し、
前記第１の復号手段は、前記各画素の画素データを前記第２の復号手段に出力し、
前記第２の復号手段は、
前記境界情報に基づいて処理対象画素が前記圧縮領域かどうかを判定し、
前記圧縮領域を除く画素については前記第１の復号手段から取得した画素データを前記書き込み手段に出力し、前記圧縮領域に含まれる画素については前記第２の復号手段が復号して得られる画素データを前記書き込み手段に出力することを特徴とする。
【発明の効果】
【００１１】
本発明によれば、第１の方式により圧縮された第１の画像データと、第２の方式により圧縮された第２の画像データが混在する場合、第１の画像データの伸長結果に第２の画像データの伸長結果を上書きすることなく、画像データを復号することができる。
【図面の簡単な説明】
【００１２】
【図１】ソースビットマップデータのメモリイメージを示す図。
【図２】16×16画素の矩形領域の一例を示す図。
【図３】矩形領域の境界情報およびロスレス圧縮データのフォーマット例を示す図。
【図４】矩形領域のロスレス圧縮データを説明する図。
【図５】実施例の画像復号装置の構成例を示すブロック図。
【図６】ロスレス復号部の構成例を示すブロック図。
【図７】ロスレス復号部の復号処理を含む、画素データの出力処理を説明するフローチャート。
【図８】後続境界の取得処理を説明するフローチャート。
【図９】ラインが未終了の場合の処理領域と継続境界キューの更新処理を説明するフローチャート。
【図１０】ラインが終了の場合の処理領域と継続境界キューの更新処理を説明するフローチャート。
【図１１】ロスレス圧縮領域の復号処理を説明するフローチャート。
【図１２】ビットマップデータの一例を示す図。
【図１３】画像復号装置を含む画像処理装置のシステム構成例を示すブロック図。
【図１４】ロスレス復号部の各パラメータを説明する図。
【図１５】画像復号装置の変形例を示すブロック図。
【図１６】画像復号装置を適用したレンダリングシステムを有する画像処理装置の構成例を示すブロック図。
【発明を実施するための形態】
【００１３】
以下、本発明にかかる実施例の画像復号装置および画像復号方法を図面を参照して詳細に説明する。なお、実施例は特許請求の範囲にかかる本発明を限定するものではなく、また、実施例において説明する構成の組み合わせのすべてが本発明の解決手段に必須とは限らない。なお、以下では、画素の走査方向が、左から右、かつ、上から下に向かうラスタースキャンであるものとして説明するが、走査方向に制限はない。
【００１４】
［符号データの構造］
画像復号装置について説明する前に、符号データの構造を説明する。図1に、ソースビットマップデータのメモリイメージ10を示す。メモリイメージ10は、ページやフレームなどの描画領域に含まれるビットマップデータであり、ビットマップヘッダ11と圧縮データ12を含む。
【００１５】
ビットマップヘッダ11は、ページやフレームなどの描画領域に含まれるビットマップ（ビットマップ1、2、…、B）ごとに定義されるヘッダの集合である。例えば、ビットマップ1のヘッダには、ビットマップサイズ111、チャネル数112、ビット精度113、ロスレス圧縮データのポインタの集合であるポインタマップ114、ロッシー圧縮データのポインタの集合であるポインタマップ115が含まれる。なお、以下では、ロスレス圧縮データを「ロスレスデータ」、ロッシー圧縮データを「ロッシーデータ」と呼ぶ場合がある。
【００１６】
圧縮データ12は、ページやフレームなどの描画領域に含まれるビットマップ（ビットマップ1、2、…、B）ごとの圧縮データの集合である。そして、ビットマップ1の圧縮データは、矩形領域1、2、…、WHのロスレスデータ117、118、…、119、および、矩形領域1、2、…、WHのロッシーデータ120、121、…、122を含む。
【００１７】
各ビットマップは、m×m画素（例えば64×64画素）の矩形領域に分割され、例えばビットマップ1はW×H個の矩形領域を含む。ビットマップのサイズがm×m画素の整数倍ではない場合は、m×m画素の整数倍になるように、ビットマップの外側にパディングが付加され、その後、ビットマップが矩形領域に分割され、矩形領域にデータ圧縮が施される。
【００１８】
ビットマップサイズ111は、対応するビットマップの幅と高さがm×m画素の矩形領域の何倍かを示す。チャネル数112は、色成分の数を示し、RGBデータは3チャネル、CMYKデータは4チャネル、YUVデータは3チャネル、白黒(BW)は1チャネルである。ビット精度113は、1チャネル当りのビット深さを示す。
【００１９】
ポインタマップ114は、ロスレスデータのポインタの集合であり、各ポインタは対応する矩形領域のロスレスデータの先頭アドレスを示す。ポインタマップ115は、ロッシーデータのポインタの集合であり、各ポインタは対応する矩形領域のロッシーデータの先頭アドレスを示す。
【００２０】
ロスレスデータ117、118、…、119は、ビットマップ1の各矩形領域の少なくとも一部の画像データをロスレス圧縮して得られるデータである。各ロスレスデータは、対応する矩形領域内の境界情報と、単色領域の色情報を含む。
【００２１】
ロッシーデータ120、121、…、122は、ビットマップ1の各矩形領域の画像データをロッシー圧縮して得られるデータである。各ロッシーデータは、対応する矩形領域の最小符号化単位(MCU)ごとの圧縮データの集合である。実施例のロッシー圧縮には、例えば、JPEGを用いるとする。JPEGのMCUは8×8画素であり、矩形領域が64×64画素とすると、各ロッシーデータは8×8=64のMCUそれぞれに対応するJPEGデータの集合である。
【００２２】
図2は、m=16とした場合の、16×16画素の矩形領域20の一例を示す。図2において、太実線は矩形領域20の端（画素集合の境界）を示し、水平、垂直の破線はJPEGのMCUに相当する8×8画素の境界を示す。矩形領域20は、例えば、次の領域を含む。
第一の領域21：ロスレス圧縮領域、
第二の領域22：ロッシー圧縮領域、
第三の領域23：ロスレス圧縮領域、
第四の領域24：ロスレス圧縮領域、
第五の領域25：ロッシー圧縮領域、
第六の領域26：ロスレス圧縮領域、
第七の領域27：ロスレス圧縮領域、
第八の領域28：ロッシー圧縮領域。
【００２３】
矩形領域20において、隣接する同一色の画素はロスレス圧縮領域に区分される。ただし、実施例で用いるJPEGは、所定の矩形領域ごとに符号化する方式である。そこで図2に示す矩形領域20の場合、次のように二つの圧縮方式によって圧縮される。矩形領域20のデータのうち、ロスレス圧縮領域の画素のデータがロスレス圧縮方式で符号化（以下、ロスレス符号化）される。また、ロスレス圧縮領域の全画素を、圧縮効率を考慮して設定された所定の画素値で置き換えた後、矩形領域20のデータはロッシー圧縮方式で符号化（以下、ロッシー符号化）される。
【００２４】
図3により矩形領域20の境界情報およびロスレス圧縮データ41のフォーマット例を説明する。図3(A)は境界情報を示し、太実線は水平方向ライン（以下、ライン）上のロスレス圧縮領域の開始画素を示す属性「開始境界」に対応し、太破線はライン上のロスレス圧縮領域の終端画素を示す属性「終端境界」に対応する。つまり、あるロスレス圧縮領域は、各ラインについて、開始境界の画素から始まり、終端境界の画素で終わる。
【００２５】
開始境界と終端境界は、符号化装置によって、互いに交わらないように生成される。また、開始境界と終端境界は、一対の境界情報として生成される。ロスレス圧縮領域における、図3(A)に示す開始境界と終端境界の各対と、図2に示す領域の間の対応関係は次のようになる。
開始境界31と終端境界32：第一の領域21、
開始境界33と終端境界34：第三の領域23、
開始境界35と終端境界36：第四の領域24、
開始境界37と終端境界38：第六の領域26、
開始境界39と終端境界40：第七の領域27。
【００２６】
図3(B)はロスレス圧縮データ41のフォーマット例を示す。ロスレス圧縮データ41は、矩形領域20のロスレス圧縮データに相当する。境界数411は、矩形領域20における開始境界と終端境界の対の数Eを示す。境界0のヘッダ412は、一番目のロスレス圧縮領域の開始境界と終端境界のヘッダ情報である。境界E-1のヘッダ413は、E-1番目のロスレス圧縮領域の開始境界と終端境界のヘッダ情報である。
【００２７】
境界0の軌跡データ414は、境界0の水平方向座標X（以下、座標X）を特定するためのデータであり、関数、各ラインにおける座標X、各ラインにおける座標Xの差分などを用いることができる。境界E-1の軌跡データ415は、境界E-1の座標Xを特定するためのデータである。エッジヘッダ42は、各ヘッダ情報412、413のフォーマットを示し、次の値が格納される。
領域色(RegionColour)421：ロスレス圧縮領域の色、
先頭Y座標(Start Y-Position)422：開始境界の開始点の垂直方向座標Y（以下、座標Y）、
開始X座標(Enabling X-Position)423：開始境界の開始点の水平方向座標X、
末尾Y座標(End Y-Position)424：開始境界の終端点の垂直方向座標Y、
終端X座標(Disabling X-Position)425：終端境界の開始点の水平方向座標X。
【００２８】
なお、終端境界の開始点および終端点の座標Yは、対をなす開始境界の開始点および終端点の座標Yに等しい。また、境界ヘッダ412、413は、先頭Y座標422の昇順にソートされる。先頭Y座標422が同じヘッダは、開始X座標423の昇順にソートされる。言い替えれば、矩形領域20を左上から右下に向かって走査する順に、境界ヘッダが整列されて、メモリに格納される。
【００２９】
各ラインにおいて、ロスレス圧縮領域の開始情報を示す開始境界の座標Xから、ロスレス圧縮領域の終端情報を示す終端境界の座標Xまでは、領域色421に定義された色の画素になる。一つのライン上で終端境界と次の開始境界の間にギャップがなければ、ロスレス圧縮領域が隣接していることが示される。また、一つのライン上で終端境界と次の開始境界の間にギャップがある場合は、ロスレス圧縮領域の間にロッシー圧縮領域があり、終端境界の右隣から次の開始境界の左隣までが、ロッシー圧縮データを伸長して得られる画素になる。
【００３０】
また、ラインの左端（X=0）に開始座標が存在しない場合は、ラインの左端（X=0）から最初に出現する開始境界の座標Xの左隣までが、ロッシー圧縮データを伸長して得られる画素になる。ライン上に開始座標が存在しない場合は、当該ラインはすべてロッシー圧縮領域であり、ラインの左端（X=0）から右端（例えばX=15）までが、ロッシー圧縮データを伸長して得られる画素になる。
【００３１】
矩形領域20のロッシー圧縮領域の画像データのデータ圧縮方式がJPEGの場合、前述のとおり、ロッシー圧縮データは8×8画素のMCUが垂直、水平に二つずつ並んだ合計四つMCUからなり、矩形領域20の全画素を含む。従って、ロッシー圧縮データを伸長すると、図2に示すロスレス圧縮領域21、23、24、26、27と重複する画素が復号されることになる。ただし、ロッシー圧縮データを復号して得られるロスレス圧縮領域21、23、24、26、27の画素値は、置き換えた所定の画素値であることに注意されたい。
【００３２】
図4により矩形領域20のロスレス圧縮データを説明する。なお、以下の説明では、色成分のチャネル数が３であり、色空間がRGBであるものとして説明する。矩形領域20にはロスレス圧縮領域21、23、24、26、27に対応する五対の開始境界と終端境界があるので、境界数E=5である。境界0は第一の領域21に対応する。境界0のヘッダには、図4に示すように、領域色「0xFF0000」として設定されている。つまり、第一の領域21は、R=255、G=00、B=00の色の画素で構成されていることを示す。また、開始境界31と終端境界32の先頭Y座標「0」、開始境界31の開始X座標「0」、開始境界31と終端境界32の末尾Y座標「9」、終端境界32の終端X座標「2」が設定される。
【００３３】
同様に、境界1は第三の領域23に、境界2は第四の領域24に、境界3は第六の領域26に、境界4は第七の領域27にそれぞれ対応し、境界1から境界4の各ヘッダには図4に示すデータが設定される。
【００３４】
境界0の開始境界の軌跡は、ラインY=0からラインY=9の間にあり、ラインのY座標の昇順に、X座標は0、0、0、0、0、0、1、2、3、4である。境界0の開始境界の軌跡データとして、走査順のライン間のX座標の差分「0、0、0、0、0、+1、+1、+1、+1」が設定される。また、境界0の終端境界の軌跡は、ラインY=0からラインY=9の間にあり、ラインのY座標の昇順に、X座標は2、5、5、6、7、6、6、6、5、5である。境界0の終端境界の軌跡データとして、走査順のライン間のX座標の差分「+3、0、+1、+1、-1、0、0、-1、0」が設定される。このようにして、第一の領域21の非線形な境界が定義できることになる。
【００３５】
境界1は、第三の領域23に対応する。それ故、境界1の開始境界および終端境界の軌跡はラインY=0からラインY=11の間にある。
境界2は、第四の領域24に対応する。それ故、境界2の開始境界および終端境界の軌跡はラインY=2からラインY=9の間にある。
境界3は、第六の領域26に対応する。それ故、境界3の開始境界および終端境界の軌跡はラインY=7からラインY=13の間にある。
境界4は、第七の領域27に対応する。それ故、境界4の開始境界および終端境界の軌跡はラインY=11からラインY=13の間にある。
以上のようにして、図4に示すような、軌跡データが設定される。
【００３６】
以下では、境界情報を参照することで、ロッシー圧縮方式により圧縮された画像データと、ロスレス圧縮方式により圧縮された画像データが混在する画像データの復号を、画素データの上書きなしに行う復号処理を説明する。
【００３７】
［第1実施例］
［画像復号装置の構成］
図5のブロック図により実施例の画像復号装置の構成例を示す。制御部51は、メモリ55に格納されたソースビットマップデータ、および、復号結果の画素を書き込むためのバッファ領域のアドレスとサイズを示すバッファ情報を読み込む。制御部51は、ビットマップヘッダ11を解釈して、ロッシー復号部52、ロスレス復号部53、および、書出処理部54を制御する。なお、メモリ44に格納される復号対象のソースビットマップデータの発生源は問わないので、図示していない。
【００３８】
ロッシー復号部52は、制御部51の制御に従い、メモリ55に格納されたロッシー圧縮データを読み込み、ロッシー圧縮データを復号して、復号結果の画素データをロスレス復号部53に出力する。ロッシー復号部52は、例えばJPEGデコーダと16×8画素分のバッファ56を備え、垂直1×水平2のMCUの復号結果の並べ替え処理を行って、矩形領域内の画素データを16画素のラインごとに、順次、ロスレス復号部53に出力する。ロッシー復号部52は、バッファ56に画素データが格納されている状態を有効とする。本実施例においてロッシー復号部52は、専用の回路によって実現されるものとする。ロッシー復号部52から出力される各画素データは、メモリ55に格納されることなくロスレス復号部53に出力される。
【００３９】
ロスレス復号部53は、制御部51の制御に従い、メモリ55に格納されたロスレス圧縮データを復号することで矩形領域の画素データを生成する。ロスレス復号部53は、ロッシー復号部52から出力される画素データを入力し、各画素につきロッシー復号部52から出力される画素データまたはロスレス圧縮データを復号した画素データのいずれかを選択し、書出処理部54に出力する。
【００４０】
本実施例においてロスレス復号部53は、CPUとは別に設けられ、かつ専用のワークメモリを有するプロセッサが、専用のプログラムメモリまたは共用のシステムメモリからプログラムを読み出して実行するソフト処理によって実現されるものとする。ロスレス復号部53を実現するプロセッサは、他の構成とデータ送受信を行うための１つ以上のインタフェースを有している。特にロスレス復号部53とロッシー復号部52とを接続するインタフェースは、ロッシー復号部52からは、前述の有効を通知するvalid信号、およびロスレス復号部53がロッシー復号部52のバッファ56から画素データを読み込もうとしているready状態を示すready信号を有する。また、インターフェースはロッシー復号部52からのデータ転送を行うデータ信号を有する。
【００４１】
書出処理部54は、制御部51の制御に従い、ロスレス復号部53から出力される画素データを書き込むべきアドレスを計算し、画素データをメモリ55のバッファ領域に書き出す。なお本実施形態では、書出処理部54も、ロスレス復号部53を実現するプロセッサが、プログラムを読み出して実行するソフト処理によって実現されるものとする。
【００４２】
●ロスレス復号部
図6のブロック図によりロスレス復号部53の構成例を示す。復号制御部73は、後述するロスレス復号部53の各構成を制御して、画像復号処理を行う。なお、画像復号処理の詳細は後述する。
【００４３】
境界読込部61は、後述する「新規境界」（または新規境界情報）としてメモリ55から読み出された境界データを一時記憶する新規境界バッファと、未処理の新規境界の数を示すカウンタである境界残数RNを有す。境界読込部61は、メモリ55に格納されたロスレス圧縮データから境界数E（図4参照）を読み込み、読み込んだ境界数Eをカウンタである境界残数RNに設定する。また、境界ヘッダと、対応する軌跡データの集合（以下、境界データ）を読み込み、読み込んだ境界データを新規境界バッファに格納する。新規境界バッファから境界データが出力される際に、境界残数RNはデクリメントされ、当該境界データが新規境界バッファから削除される。以下では、新規境界バッファに格納された境界データが示す開始境界と終端境界の対を「新規境界」（または新規境界情報）と呼ぶ。
【００４４】
継続境界キュー62は、後述する「後続境界」（または後続境界情報）として選択された境界データが入力されるFIFOと、FIFOから取り出された境界データを一時記憶する継続境界バッファを備える。以下では、継続境界バッファに格納された境界データが示す開始境界と終端境界の対を「継続境界」（または継続境界情報）と呼ぶ。
【００４５】
また、継続境界キュー62は、FIFO内の境界データの数を管理するための変数として、注目ライン上の境界の数を示すカウンタである境界残数RLcと、次ライン上の境界の数を示すカウンタである境界残数CLnを有す。詳細は後述するが、境界残数RLcは、継続境界バッファから境界データが読み出される際にデクリメントされる。また、境界残数CLnは、FIFOに境界データが入力される際にインクリメントされる。そして、注目ラインがインクリメントされる際、境界残数CLnが境界残数RLcにコピーされて、境界残数CLnがクリアされる。
【００４６】
境界比較部63は、新規境界と継続境界を比較して、Y座標が小さい境界データ、または、Y座標が同じ場合はX座標が小さい境界データを選択する選択情報を生成する。また、新規境界が存在し、かつ、継続境界が存在しない場合は、新規境界を選択する選択情報を生成する。他方、新規境界が存在せず、かつ、継続境界が存在する場合は継続境界を選択する選択情報を生成する。
【００４７】
境界選択部64は、境界比較部63から入力される選択情報に従い新規境界または継続境界を後続境界として選択し、選択した後続境界を後続境界記憶部65に格納する。処理領域記憶部66は、後続境界から取得される処理領域を記憶する。処理領域は、注目ラインのロスレス圧縮領域であり、画素データを復号する領域である。
【００４８】
画素数計算部67は、後続境界記憶部65に記憶された後続境界と、処理領域記憶部66に記憶された処理領域に基づき、注目ラインにおけるロスレス圧縮領域の画素数N1やロッシー圧縮領域の画素数N2を計算する。
【００４９】
画素選択制御部69は、画素数計算部67によって計算された画素数N1、N2に従い画素を処理するための画素選択情報を生成する。領域色抽出部70は、後続境界記憶部65に記憶された後続境界が示す境界色を画素データとして画素選択部72に出力する。
【００５０】
画素読込部71は、画素選択情報に基づき、ロッシー復号部52が出力する画素データを読み込み、読み込んだ画素データを画素選択部72に出力する。画素読込部71は、画素選択情報に基づいてロッシー復号部52のバッファ56から画素を読み込むため、前述のインタフェースを介してready信号をアサートしてロッシー復号部52にready状態であることを通知する。valid信号とready信号が共にアサートされているとき、すなわちロッシー復号部52が有効状態でありロスレス復号部53がready状態のとき、画素読込部71はバッファ56から画素データを読み込む。なお、インターフェースを介してvalid信号かつready信号の両方がアサートされていない場合は、valid信号かつready信号の両方がアサートされるまで待機する。
【００５１】
画素選択部72は、画素選択情報に基づき、領域色抽出部70が出力する画素データ、または、画素読込部71が出力する画素データを選択的に書出処理部54に出力する。従って画素選択部72は、各画素につき、領域色抽出部70が出力する画素データ、または、画素読込部71が出力する画素データのいずれかのデータを出力する。ここで領域色抽出部70が出力する画素データを選択された画素における、画素読込部71が出力する画素データは、破棄される。
【００５２】
●ロスレス復号部の動作の概要
詳細は後述するが、図2に示す矩形領域20を例に、ロスレス復号部53の処理手順の概要を説明する。図14によりロスレス復号部53の各パラメータを説明する。境界読込部61は、境界数E=5を境界残数RNに設定し、第一のロスレス圧縮領域21の境界データ（以下、境界データ21）を読み込み、新規境界バッファに格納する。この時点で、継続境界キュー62と継続境界バッファは空である（図14の状態0）。
【００５３】
境界比較部63は、継続境界バッファが空であるから、後続境界として新規境界を選択する。その結果、継続境界キュー62のFIFOに境界データ21が入力され、境界残数RNがデクリメントされる（状態1）。復号制御部73は、境界データ21を参照して、矩形領域20の先頭ライン（ライン0）の左端から三画素分の画素データとして0xFF0000を出力する。
【００５４】
境界読込部61は、第二のロスレス圧縮領域23の境界データ（以下、境界データ23）を読み込み、新規境界バッファに格納する。一方、継続境界キュー62は、FIFOから取り出した境界データ21を継続境界バッファに格納する（状態2）。
【００５５】
境界比較部63は、新規境界（境界データ23）と継続境界（境界データ21）を比較して、後続境界として新規境界を選択する。その結果、FIFOに境界データ23が入力され、境界残数RNがデクリメントされる（状態3）。復号制御部73は、境界データ23を参照して、先頭ライン（ライン0）の四画素目から七画素分の画素データとして画素読込部71が読み込んだ画素データを出力する。さらに、11画素目から右端までの画素データとして0x00FF00を出力し、注目ラインをインクリメントする。
【００５６】
境界読込部61は、第三のロスレス圧縮領域24の境界データ（以下、境界データ24）を読み込み、新規境界バッファに格納する。一方、継続境界バッファには境界データ21が格納されたままである（状態4）。
【００５７】
境界比較部63は、新規境界（境界データ24）と継続境界（境界データ21）を比較して、後続境界として継続境界を選択する。その結果、FIFOに境界データ21が入力される（状態5）。復号制御部73は、境界データ21を参照して、注目ライン（ライン1）の左端から六画素分の画素データとして0xFF0000を出力する。
【００５８】
継続境界キュー62は、継続境界バッファに境界データ23を格納する。一方、新規境界バッファは境界データ24が格納されたままである（状態6）。
【００５９】
境界比較部63は、新規境界（境界データ24）と継続境界（境界データ23）を比較して、後続境界として継続境界を選択する。その結果、FIFOに境界データ23が入力される（状態7）。復号制御部73は、境界データ23を参照して、注目ライン（ライン1）の七画素目から三画素分の画素データとして画素読込部71が読み込んだ画素データを出力する。さらに、10画素目から右端までの画素データとして0x00FF00を出力し、注目ラインをインクリメントする。
【００６０】
継続境界キュー62は、継続境界バッファには境界データ21を格納する。一方、新規境界バッファは境界データ24が格納されたままである（状態8）。
【００６１】
境界比較部63は、新規境界（境界データ24）と継続境界（境界データ21）を比較して、後続境界として継続境界を選択する。その結果、FIFOに境界データ21が入力される（状態9）。復号制御部73は、境界データ21を参照して、注目ライン（ライン2）の左端から六画素分の画素データとして0xFF0000を出力する。
【００６２】
継続境界キュー62は、継続境界バッファに境界データ23を格納する。一方、新規境界バッファは境界データ24が格納されたままである（状態10）。
【００６３】
境界比較部63は、新規境界（境界データ24）と継続境界（境界データ23）を比較して、後続境界として新規境界を選択する。その結果、FIFOに境界データ24が入力される（状態11）。復号制御部73は、境界データ24を参照して、注目ライン（ライン2）の八画素目から二画素分の画素データとして画素読込部71が読み込んだ画素データを出力する。さらに、九画素目から二画素分の画素データとして0x0000FFを出力する。
【００６４】
境界読込部61は、境界残数RNをデクリメントし、第四のロスレス圧縮領域26の境界データ（以下、境界データ26）を読み込み、新規境界バッファに格納する。一方、継続境界バッファには境界データ23が格納されたままである（状態12）。
【００６５】
境界比較部63は、新規境界（境界データ26）と継続境界（境界データ23）を比較して、後続境界として継続境界を選択する。その結果、継続境界キュー62のFIFOに境界データ23が入力される（状態13）。復号制御部73は、境界データ23を参照して、注目ライン（ライン2）の12画素目から右端までの画素データとして0x00FF00を出力し、注目ラインをインクリメントする。
【００６６】
継続境界キュー62は、継続境界バッファに境界データ21を格納する。一方、新規境界バッファは境界データ26が格納されたままである（状態14）。以降の説明は省略するが、矩形領域20の最終ラインまで上記の処理手順が繰り返され、矩形領域20の復号が完了する。また、上記では、境界残数RLc、RLnの変化の説明を省略したが、詳細は後述する。 
【００６７】
●復号処理
図7のフローチャートによりロスレス復号部53の復号処理を含む、画素データの出力処理を説明する。なお、図7に示す処理は、一つの矩形領域分の処理を示し、矩形領域の数分、繰り返し実行される。復号制御部73は、ロスレス復号部53を初期化する(S61)。初期化には、ソースビットマップデータのアドレスの記憶、境界読込部61による境界数Eの取得と境界残数RNの設定、継続境界キュー62の境界残数RLc、RLnのクリア、注目ラインのX座標の初期化などが含まれる。
【００６８】
次に、復号制御部73は、注目ラインが矩形領域の最終ラインか否かを判定し(S62)、注目ラインが最終ラインの場合は当該矩形領域の復号処理を終了する。注目ラインが最終ラインではない場合、復号制御部73は、境界読込部61、継続境界キュー62、境界判定部63を用いて、後述する後続境界の取得(S63)を実行する。
【００６９】
次に、復号制御部73は、取得した後続境界が注目ラインにおける一番目の境界に対応するか否かを判定する(S64)。後続境界が一番目の境界であれば後続境界の左側はロッシー圧縮領域である。この場合、復号制御部73は、画素数計算部67、画素選択部72を用いて、左側ロッシー圧縮領域の処理を行う(S65)。
【００７０】
左側ロッシー圧縮領域の処理は、注目ライン上の、後続境界の開始境界のX座標に基づきロッシー圧縮領域の画素数N2を算出し、画素読込部71が読み込んだ画素データのうち、画素数N2分の画素データを書出処理部54に出力する処理である。言い替えれば、注目ラインの左端から開始境界の直前までの画素データが出力される。ただし、一番目の境界の開始境界のX座標が0の場合はロスレス圧縮領域の左側にロッシー圧縮領域は存在しないが、画素数N2=0になるため、実質的にステップS65の処理は行われない。
【００７１】
次に、復号制御部73は、後述するライン終了フラグを判定し(S66)、ライン終了フラグが真の場合はラインが終了の場合の処理領域と継続境界キューの更新を行う(S67)。また、ライン終了フラグが偽の場合はラインが未終了の場合の処理領域と継続境界キューの更新を行う(S68)。続いて、復号制御部73は、ロスレス圧縮領域の復号(S69)を行う。ステップS67、S68、S69の処理の詳細は後述する。
【００７２】
次に、復号制御部73は、処理領域が注目ラインの右端に達したか否かを判定する(S70)。処理領域が注目ラインの右端に達していない場合は注目ラインの境界残数RLc＞0か否かを判定する(S71)。処理領域が注目ラインの右端に達せず、かつ、境界残数RLc＞0の場合は処理領域の右側にロスレス圧縮領域が存在するため、復号制御部73は、処理をステップS63に戻す。
【００７３】
また、処理領域が注目ラインの右端に達せず、境界残数RLc=0の場合は処理領域の右側にはロッシー圧縮領域だけが存在する。この場合、復号制御部73は、画素数計算部67、画素選択部72を用いて、右側ロッシー圧縮領域の処理を行う(S72)。
【００７４】
右側ロッシー圧縮領域の処理は、注目ライン上の、後続境界の終端境界のX座標に基づきロッシー圧縮領域の画素数N2を算出し、画素読込部71が読み込んだ画素データのうち、画素数N2分の画素データを書出処理部54に出力する処理である。言い替えれば、注目ラインの終端境界の直後から右端までの画素データが出力される。
【００７５】
処理領域が注目ラインの右端に達した場合、または、右側ロッシー圧縮領域の処理を行った後、復号制御部73は、処理をステップS62に戻す。
【００７６】
●後続境界の取得処理
図8のフローチャートにより後続境界の取得処理(S63)を説明する。復号制御部73は、ライン終了フラグを偽に初期化する(S81)。次に、境界読込部61は、境界データを取得する必要性を判定するために境界残数RNと新規境界バッファの状態を判定する(S82)。そして、境界残数RN＞0、かつ、新規境界バッファが空の場合はメモリ55から境界データを取得して、取得した境界データを新規境界バッファに格納する(S83)。
【００７７】
一方、継続境界キュー62は、継続境界データを設定する必要性を判定するために注目ラインの境界残数RLcと継続境界バッファの状態を判定する(S84)。そして、境界残数RLc＞0、かつ、継続境界バッファが空の場合は、FIFOから取り出した境界データを継続境界バッファに格納する(S85)。
【００７８】
次に、境界比較部63は、境界選択部64を制御して後続境界を選択する(S86)。後続境界が新規境界に等しい場合は後続境界として新規境界が選択され、新規境界が後続境界記憶部に格納される(S87)。「後続境界＝新規境界」とは、新規境界バッファが空ではなく継続境界バッファが空の場合、または、注目ラインにおいて新規境界のX座標が継続境界のX座標より小さい場合である。この場合、境界読込部61は、境界残数RNをデクリメントし、新規境界バッファを空にする(S88)。
【００７９】
また、後続境界が継続境界に等しい場合は後続境界として継続境界が選択され、継続境界が後続境界記憶部に格納される(S89)。「後続境界＝継続境界」とは、継続境界バッファが空ではなく新規境界バッファが空の場合、または、注目ラインにおいて継続境界のX座標が新規境界のX座標より小さい場合である。この場合、継続境界キュー62は、注目ラインの境界残数RLcをデクリメントし、継続境界バッファを空にする(S90)。
【００８０】
また、新規境界バッファが空、かつ、継続境界バッファが空の場合、境界比較部63は、後続境界が存在しないことを示すために後続境界記憶部65を空にする(S91)。
【００８１】
「後続境界＝新規境界」の場合、復号制御部73は、新規境界の先頭Y座標と注目ラインのY座標を判定する(S92)。両者が一致する場合、注目ラインに後続境界が存在し、後続境界の取得処理が終了する。
【００８２】
また「後続境界＝継続境界」の場合、復号制御部73は、境界残数RLcを判定する(S93)。境界残数RLcが1以上（RLc＞0）場合は注目ライン上に未処理の境界が存在する。この場合、復号制御部73は、後続境界の取得処理を終了する。また、境界残数RLcが0（RLc=0）場合は後続境界が注目ライン上の最後の境界である。
【００８３】
下記の何れかの場合は注目ラインに後続境界が存在せず、復号制御部73は、ライン終了フラグを真に設定し(S94)、後続境界の取得処理を終了する。
・後続境界記憶部65を空にした場合(S91)、
・新規境界の先頭Y座標≠注目ラインのY座標の場合(S92)、
・注目ラインの境界残数RLc=0の場合(S93)。
●ラインが未終了の場合の処理領域と継続境界キューの更新
図9のフローチャートによりラインが未終了の場合の処理領域と継続境界キュー62の更新処理(S68)を説明する。復号制御部73は、更新後の処理領域として、注目ラインの、後続境界の開始境界のX座標から終端境界のX座標を設定する(S101)。
【００８４】
次に、復号制御部73は、処理領域記憶部66に記憶された更新前の処理領域の右端と、更新後の処理領域の左端が連続するか否かを判定する(S102)。両者が連続しない場合は更新前の処理領域と更新後の処理領域の間にロッシー圧縮領域が存在する。この場合、復号制御部73は、画素数計算部67、画素選択制御部69、画素読込部71、画素選択部72を用いて、中間ロッシー圧縮領域の処理を行う(S103)。
【００８５】
中間ロッシー圧縮領域の処理は、注目ライン上の、更新前後の処理領域のX座標に基づきロッシー圧縮領域の画素数N2を算出し、画素読込部71が読み込んだ画素データのうち、画素数N2分の画素データを書出処理部54に出力する処理である。言い替えれば、更新前の処理領域と更新後の処理領域の間の画素データが出力される。
【００８６】
次に、復号制御部73は、更新後の処理領域を処理領域記憶部66に格納し(S104)、後続境界の末尾Y座標と注目ラインのY座標が一致するか否かを判定する(S105)。
【００８７】
後続境界の末尾Y座標と注目ラインのY座標が一致する場合、次のロスレス圧縮領域の復号(S69)によって、当該後続境界の復号処理が完了するため、当該後続境界を継続境界キュー62に保持する必要がない。一方、後続境界の末尾Y座標と注目ラインのY座標が一致しない場合は当該後続境界を継続境界キュー62に保持する必要がある。従って、後続境界の末尾Y座標と注目ラインのY座標が一致しない場合、復号制御部73は、後続境界を継続境界キュー62のFIFOに入力し、次ラインの境界残数RLnをインクリメントする(S106)。
【００８８】
以上で、ラインが未終了の場合の処理領域と継続境界キュー62の更新処理が終了する。
【００８９】
●ラインが終了の場合の処理領域と継続境界キューの更新
図10のフローチャートによりラインが終了の場合の処理領域と継続境界キュー62の更新処理(S67)を説明する。復号制御部73は、注目ラインのY座標をインクリメントし(S111)、継続境界キュー62の次ラインの境界残数RLnを注目ラインの境界残数RLcにコピーして(S112)、境界残数RLnをクリアする(S113)。
【００９０】
次に、復号制御部73は、後続境界として新規境界が選択されたか否かの判定(S114)、継続境界が選択されたか否かの判定(S115)を行い、判定結果に基づき処理を分岐する。
【００９１】
「後続境界＝新規境界」の場合は注目ラインから新規境界の先頭Y座標の前ラインまでロスレス圧縮領域が存在しない。この場合、復号制御部73は、更新Y座標として後続境界の先頭Y座標を設定する(S116)。そして、条件（注目ラインのY座標＜更新Y座標）が満たされる間、ラインのロッシー圧縮領域の処理と、注目ラインのインクリメントを繰り返す(S117)。
【００９２】
ラインのロッシー圧縮領域の処理は、条件を満たすラインについて、矩形領域の幅をロッシー圧縮領域の画素数N2として、画素読込部71が読み込んだ画素データのうち、画素数N2分の画素データを書出処理部54に出力する処理である。言い替えれば、ライン全体の画素データが出力される。
【００９３】
次に、復号制御部73は、注目ラインの、後続境界の開始境界のX座標から終端境界のX座標を更新後の処理領域に設定し、更新後の処理領域を処理領域記憶部66に格納し(S118)、処理をステップS123に進める。
【００９４】
また「後続境界＝継続境界」の場合、復号制御部73は、注目ラインの、後続境界の開始境界のX座標から矩形領域の右端のX座標を更新後の処理領域に設定し、更新後の処理領域を処理領域記憶部66に格納し(S119)、処理をステップS123に進める。
【００９５】
また、後続境界として何れの新規境界も継続境界も選択されなかった場合、言い替えれば、後続境界が存在しない場合、注目ラインから矩形領域の最終ラインまでロスレス圧縮領域が存在しない。この場合、復号制御部73は、更新Y座標として最終ラインのY座標を設定する(S120)。そして、条件（注目ラインのY座標≦更新Y座標）が満たされる間、ステップS117と同様に、ラインのロッシー圧縮領域の処理と、注目ラインのインクリメントを実行する(S121)。続いて、復号制御部73は、処理領域記憶部66を空にして(S122)、処理領域と継続境界キュー62の更新処理を終了する。
【００９６】
後続境界が存在する場合、復号制御部73は、後続境界を継続境界キュー62のFIFOに入力し、次ラインの境界残数RLnをインクリメントして(S123)、処理領域と継続境界キュー62の更新処理を終了する。
【００９７】
●ロスレス圧縮領域の復号
図11のフローチャートによりロスレス圧縮領域の復号処理(S69)を説明する。復号制御部73は、処理領域記憶部66が空か否かを判定し(S131)、処理領域記憶部66が空の場合（処理領域が設定されていない）場合は、ロスレス圧縮領域の復号処理を終了する。
【００９８】
処理領域記憶部66に処理領域が格納されている場合、復号制御部73は、画素数計算部67、画素選択制御部69、領域色抽出部70、画素選択部72を用いて、処理領域の、後続境界が示す領域色の画素データを書出処理部54に出力する(S132)。また、復号制御部73は、処理領域において、画素読込部71が入力した画素データを削除する(S133)。これにより、注目ラインの処理領域（ロスレス圧縮領域）の画素データが復号される。
【００９９】
［画像復号動作］
以下では、上記の画像復号装置を含むシステムにおける画像復号動作について説明する。
●ビットマップデータの構成
図12にビットマップデータの一例を示す。図12(A)はビットマップデータのメモリイメージを示す。図12(A)は、ビットマップデータが一つのビットマップ1を含み、ビットマップ1が、水平、垂直方向それぞれ二つの矩形領域（矩形領域1、矩形領域2、矩形領域3、矩形領域4）を含む場合のビットマップデータの一例を示す。つまり、ビットマップ1のヘッダが記憶され、ヘッダの後に、矩形領域のロスレス圧縮データと、矩形領域のロッシー圧縮データが記憶されている。
【０１００】
図12(B)はビットマップ1のヘッダの構成例を示す。「ビットマップサイズ」フィールドが示すように、ビットマップ1は、水平方向Wが2、垂直方向Hが2の計4個の矩形領域から構成される。「チャネル数」フィールドが示すように、ビットマップ1は、RGB3チャネルを有す。「ビット精度」フィールドが示すように、各チャネルは8ビットである。
【０１０１】
ロスレス圧縮データのポインタマップは、上から順に、矩形領域1のロスレス圧縮データの先頭アドレス、…、矩形領域4のロスレス圧縮データ先頭アドレスを示す。ロッシー圧縮データのポインタマップは、上から順に、矩形領域1のロッシー圧縮データの先頭アドレス、…、矩形領域4のロッシー圧縮データ先頭アドレスを示す。
【０１０２】
●画像処理装置の構成
図13のブロック図により上記の画像復号装置を含む画像処理装置のシステム構成例を示す。
【０１０３】
CPU141は、RAM142をワークメモリとして、ROMやフラッシュメモリなどを含む記憶部143に格納されたOSや各種プログラムを実行してシステム全体を制御する。外部インタフェイス（外部I/F）144は、外部の装置（例えば情報処理装置やスキャナ）と接続するためのUSBカードや、ネットワークに接続するためのEthernet（登録商標）カードなど通信インタフェイスである。
【０１０４】
画像復号装置145は、上述した画像復号装置であり、外部I/F144を介して入力される符号化圧縮された画像データの復号処理を行う。画像処理装置146は、画像復号装置145が復号した画像データに例えば高画質化処理を施したり、画像データを印刷装置147の入力データフォーマットに変換するなどの画像処理を行う。印刷装置147は、入力される画像データに基づき、記録材（トナーやインク）を用いて記録媒体に画像を形成する。
【０１０５】
インターコネクト148は、共有バスやスイッチなどによって構成された、CPU141、RAM142、記憶部143、外部I/F144、画像復号装置145、画像処理装置146、印刷装置147の間のデータ転送路である。
【０１０６】
外部I/F144は、図示しない情報処理装置やプリントサーバからシリアルバスやネットワークを介して、ソースビットマップデータを受信する。外部I/F144は、割込信号などによって、データを受信したことをCPU141に通知する。CPU141は、外部I/F144を制御して、ソースビットマップデータをRAM142に転送する。図12(A)は、RAM142に記憶されたソースビットマップデータのメモリイメージを示している。
【０１０７】
CPU141は、ソースビットマップデータの先頭アドレス0x3000_0000と、復号指示を画像復号装置145に通知する。復号指示の通知方法として、画像復号装置145が、ソースビットマップデータのアドレスと復号指示を受信する制御レジスタを備え、CPU141が当該制御レジスタにソースビットマップデータのアドレスと復号指示を書き込む手法が知られている。また、CPU141は、画像復号装置145に、復号データを書き込むバッファの先頭アドレスを通知する。
【０１０８】
復号指示を受けた画像復号装置145の（図5に示す）制御部51は、アドレス0x3000_0000から、ビットマップ1のヘッダを読み込み、ビットマップサイズ(W、H)に基づき、四つ矩形領域の存在を認識する。そして、制御部51は、矩形領域の数4、チャネル数3、ビット精度8をロッシー復号部52、ロスレス復号部53、書出処理部54に通知する。この通知により、ロッシー復号部52、ロスレス復号部53、書出処理部54は、復号結果を3チャネル、各チャネル8ビットとして転送するように設定される。
【０１０９】
次に制御部51は、図2(B)に示すロスレス圧縮データのポインタマップから矩形領域1のロスレスデータのポインタを読み出し、当該ポインタをロスレス復号部53に転送する。また、ロッシー圧縮データのポインタマップから矩形領域1のロッシーデータのポインタを読み出し、当該ポインタをロッシー復号部52に転送する。
【０１１０】
ロッシー復号部52は、ポインタが示すアドレス0x3000_0410からロッシーデータを読み出して、当該データを復号し、復号結果の画素データをライン順（Y座標の昇順）かつX座標の昇順にロスレス復号部53に転送する。
【０１１１】
ロスレス復号部53は、ポインタが示すアドレス0x3000_0010からロスレスデータを読み出し、当該データを復号し、復号結果の画素データをライン順（Y座標の昇順）かつX座標の昇順に書出処理部54に転送する。
【０１１２】
このように、任意の境界を挟んでロッシー圧縮領域とロスレス圧縮領域が混在する矩形領域において、境界情報を参照しながらラスタ順にロッシー圧縮データの伸長結果またはロスレス圧縮データの伸長結果を出力する。そのため、ロッシー圧縮データの伸長結果の全てをメモリに格納しロスレス圧縮領域はロスレス圧縮データの伸長結果により上書きすることなく、当該矩形領域の符号化圧縮された画像データを得られる。言い替えれば、インターコネクト148を介してRAM142に転送される画素データは、ロッシー圧縮データから復号されたロッシー圧縮領域の画素データ、および/または、ロスレス圧縮データから復号されたロスレス圧縮領域の画素データである。つまり、ロッシー圧縮データから復号されたロスレス圧縮領域の画素データのインターコネクト148を介した転送が不要になり、システムバス帯域およびメモリ帯域の余分な消費を防ぐことができる。
【０１１３】
［変形例］
図15のブロック図により画像復号装置の変形例を示す。図15に示す画像復号装置は、画素数計算部67の代わりに、座標管理部74を備える。座標管理部74は、ビットマップデータにおける復号中の画素の座標を管理し、画素の座標が、開始境界を右端とするロスレス圧縮領域に属すか、終端境界を右端とするロッシー圧縮領域に属すかを示す制御情報を生成する。つまり、一画素ごとに判定処理を行う。
【０１１４】
座標管理部74は、復号対象のビットマップデータ（水平、垂直の画素数をそれぞれH、Wとする）の原点座標(0, 0)から、座標(W-1, H-1)まで逐次カウントアップする。つまり(0, 0)、…、(W-1, 0)、(0, 1)、…、(W-1, 1)、…、(0, H-1)、…、(W-1, H-1)のように、主走査線方向に座標をカウントアップし、右端に達すると副走査線方向に座標をカウントアップする。つまり、座標管理部７４はラスタースキャン順に座標を示すデータを生成する。そして、座標管理部74は、画素選択制御部69に対して、常に一画素を処理する制御情報を生成する。
【０１１５】
［第2実施例］
以下、本発明にかかる第2実施例の画像復号装置および画像復号方法を説明する。なお、第2実施例において、第1実施例と略同様の構成については、同一の符号を付して、その詳細な説明を省略する場合がある。
【０１１６】
図16のブロック図により第2実施例の画像復号装置を適用したレンダリングシステムを有する画像処理装置の構成例を示す。なお、図13に示す構成と略同様の構成には同一符号を付して、その詳細説明を省略する。
【０１１７】
図16に示すレンダリングシステムは、ページ記述言語(PDL)によって記述された印刷データを、中間データに変換し、中間データに基づいてレンダリングを行い、ビットマップデータを生成する。印刷データは一個以上の描画要素を含み、描画要素はテキスト、グラフィック図形、ビットマップイメージを含む。
【０１１８】
中間データ生成部151は、CPU141が実行するソフトウェアとして実装され、RAM142から読み出した印刷データを中間データに変換し、中間データをRAM142に書き込む。生成される中間データは、レンダラ制御情報、各描画要素の境界情報、塗り情報および合成（ブレンド）情報、並びに、ビットマップイメージを含む。また、中間データに含まれるビットマップイメージは、多くの場合、符号化圧縮されている。
【０１１９】
レンダラ制御部152は、中間データに含まれるレンダラ制御情報に基づきレンダラ155を制御する。レンダラ制御部152は、画像復号装置の制御部51の機能を包含するとともに、描画要素処理部153、レンダラ書出処理部154に制御情報を出力する。
【０１２０】
描画要素処理部153は、中間データに含まれる描画要素の境界情報、塗り情報および合成情報を読み込み、ページを構成する画素データを生成し、レンダラ書出処理部154に出力する。描画要素がビットマップイメージの場合、描画要素処理部153は、制御情報に基づき、RAM142からビットマップイメージを読み込み、必要に応じて補間処理を行ったビットマップイメージにグラフィック図形やテキストの画素を合成する。
【０１２１】
レンダラ書出処理部154は、描画要素処理部153から入力される画素データを、RAM142の所定のアドレスに書き込む。
【０１２２】
レンダラ155は、画像復号部と中間データ処理部によって構成される。画像復号部は、レンダラ制御部152、ロッシー復号部52、ロスレス復号部53、書出処理部54によって構成される。中間データ処理部は、レンダラ制御部152、描画要素処理部153、レンダラ書出処理部154によって構成される。前述したように、レンダラ制御部152は、画像復号部と中間データ処理部の構成要素である。
【０１２３】
中間データに符号化圧縮された画像データが含まれる場合、レンダラ制御部152は、中間データのレンダラ制御情報に従い、圧縮符号化された画像データの復号制御情報を画像復号部に出力する。画像復号部は、第１実施例において説明したように符号化圧縮されたビットマップイメージを復号し、復号結果をRAM142に書き込む。
【０１２４】
次に、レンダラ制御部152は、中間データのレンダラ制御情報に従い、中間データ処理部に制御情報を出力する。描画要素処理部153は、画像復号部によって復号され、RAM142に書き込まれたビットマップイメージを読み込み、ビットマップイメージに他の描画要素の画素データを合成する。
【０１２５】
描画要素処理部153は、合成処理によって得た各画素データをレンダラ書出処理部154に出力する。レンダラ書出処理部154は、RAM142の所定のアドレスに画素データを書き込む。以上のレンダリング処理によって、印刷データはビットマップデータに変換され、RAM142に格納される。
【０１２６】
［その他の実施例］
本発明は、上述の実施形態の一以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける一以上のプロセッサがプログラムを読み出し実行する処理でも実現可能である。また、一以上の機能を実現する回路（例えば、ASIC）によっても実現可能である。
【０１２７】
なおロッシー復号部52は、CPUとは別に設けられ、かつ専用のワークメモリを有するプロセッサが、専用のプログラムメモリまたは共用のシステムメモリからプログラムを読み出して実行するソフト処理によっても実現可能である。またロスレス復号部53は、同様の機能を実現する回路によっても実現可能である。さらに、ロッシー復号部52とロスレス復号部53が共にプロセッサであってもよく、ロッシー復号部52とロスレス復号部53が共に専用の回路であってもよい。
【符号の説明】
【０１２８】
52 … ロッシー復号部、53 … ロスレス復号部
【図１】
0006675253.tif 000002
【図２】
0006675253.tif 000003
【図３】
0006675253.tif 000004
【図４】
0006675253.tif 000005
【図５】
0006675253.tif 000006
【図６】
0006675253.tif 000007
【図７】
0006675253.tif 000008
【図８】
0006675253.tif 000009
【図９】
0006675253.tif 000010
【図１０】
0006675253.tif 000011
【図１１】
0006675253.tif 000012
【図１２】
0006675253.tif 000013
【図１３】
0006675253.tif 000014
【図１４】
0006675253.tif 000015
【図１５】
0006675253.tif 000016
【図１６】
0006675253.tif 000017