画像処理装置、画像処理方法、及びプログラム
【課題】多段階圧縮された圧縮データの展開時、メモリアクセス回数が少なくて済み、且つ回路規模も大きくなりすぎない画像処理装置を提供する。
【解決手段】本発明では、N回目の符号化によって得られた代表色を展開すべき位置を、1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、M回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段とを設け、前記代表色復号手段と前記N個の補間色復号手段はそれぞれ独立して動作するように構成する。
【解決手段】本発明では、N回目の符号化によって得られた代表色を展開すべき位置を、1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、M回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段とを設け、前記代表色復号手段と前記N個の補間色復号手段はそれぞれ独立して動作するように構成する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像を所定のブロック単位に圧縮する技術とブロック単位に圧縮された画像の画像処理や復号化処理を行う技術に関する。
【背景技術】
【0002】
従来、高解像度のカラー画像への需要は高く、それらの高画質化への要望へ応えるべくデジタル複合機では1200dpiやそれを超える解像度の画像を扱うことが多くなってきている。画像の高解像度化が進むにつれて、画像処理を必要とする画素数が飛躍的に増え、その処理負荷が増大しているという課題がある。デジタル複合機に限らず、デジタルカメラやファクシミリ装置などの画像処理装置では、メモリ/ハードディスク量の節約やそれらへの書き込み時間を短縮するために、カラー画像データの圧縮を行い、低コスト化や高速化を実現している。
【0003】
カラー静止画像の圧縮方式には、離散コサイン変換を利用したJPEG方式やWavelet変換を利用した方式が多く使われている。この種の符号化方式は、一般的に画像を所定のブロック(例えば8×8や16×16画素単位)に符号化し、離散コサイン変換、量子化及びエントロピー符号化を行うことで高い圧縮効率を達成している。この種の符号化方式は、可変長符号化方式であるので、符号化対象の画像毎に符号量が変化するものである。これらの画像圧縮を用いた場合、その画素データを参照し、その画素データを変換するには、圧縮データの復号処理が必要になる。つまり、圧縮データのままで画像処理を行うことはできず、必ず復号処理が必要になり、高解像度データ全ての画素に対して画素単位に処理を行う必要が出てしまい、処理時間の増大を招く。
【0004】
圧縮処理を行う技術としては、画素データとその連続数を記憶する公知のランレングス圧縮方式やブロック単位でエッジを検出し、そのエッジの持つ2色を記憶することで圧縮する技術が開示されている(例えば、特許文献1、特許文献2)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−271046号公報
【特許文献2】特開平10−257488号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1においては、ブロック内を2色化し、その2色の配置に関する形状情報と2色の色情報を記憶していた。これに対し、さらなる高画質化、処理高速化を図るため、本願出願人による先願である特願2009−221444では、2以上の色数を持つブロックの画質を落とさずに高圧縮化を実現している。特願2009−221444では、まず、画像データをブロック(例えば2×2画素サイズのブロック)毎に分割する。そして、ブロック内の各画素の色データを比較することにより、注目ブロックに含まれる色データの配置パターン情報と、注目ブロックに含まれる色数分の色データ情報とを出力する。そして、出力された色データ情報のうち、各ブロックの予め決められた特定位置の画素に対応する第1の色データ情報と、その他の色データ情報(2×2画素ブロックの場合は第2〜4色の色データ情報)とに分けて、それぞれ異なるメモリ領域にまとめて格納する。したがって、メモリ領域には、配置パターン情報と、第1色の色データ情報と、その他の色データ情報とがそれぞれまとめて格納されることになる。これにより、特定位置の間引き画像データ(すなわち第1色の色データ情報)を連続メモリ領域に置くことになるので、第1色の色データ情報を読み出すだけで、複雑な復号化処理を必要とせずに、半分の解像度の低解像度画像を扱える。
【0007】
一方で、特願2009−221444では、該圧縮技術で圧縮されたデータを展開処理する方法についても述べられている。例えば、図19に示すように、まず注目ブロックの配置パターン情報と第1の色データ情報をメモリから読み込み、更に、配置パターン情報に基づいて、必要な色数分だけその他の色データ情報(第2〜4色の色データ情報)を読込む。そして、配置パターン情報にしたがって、第1の色データ情報とその他の色データ情報とをメモリ上に配置することで、データの展開(復号化)を行う。
【0008】
また、本出願人は、特願2009−221444で提案している圧縮技術を複数回繰り返し適用することにより、多段階圧縮することも考えている。多段階圧縮の手法については、後述する実施形態で詳述するが、簡単に説明すると次のようになる。すなわち、元の画像データに対して上述した圧縮処理(1段階目の圧縮処理)を適用することにより、1段階目の配置パターン情報と、第1色の色データ情報と、その他の色データ情報とに変換する。そして、更に、1段階目の圧縮処理で得られた第1色の色データ情報を次の処理対象画像として、2段階目の圧縮処理を行う。このような多段階圧縮を行えば、1段階目の圧縮処理で得た第1色の色データ情報が、2段階目の圧縮処理による2段階目の配置パターン情報と2段階目の第1色の色データ情報と2段階目のその他の色データ情報に置き換えられることになる。例えば、ブロックのサイズを2×2画素とした場合、その他の色データ情報は第2〜4色の色データ情報で表わされるため、上述した圧縮処理を2段階繰り返し行うと、図14(b)に示されるような圧縮データが得られる。
【0009】
一方、1つの展開部を用いて、上述したように多段階圧縮されたデータを圧縮時と逆順で段階的に展開するように構成した場合、以下のような課題が生じると考えられる。第1に、多段階展開時、メモリアクセス回数が多くなることでメモリ帯域が圧迫される。例えば、16ブロックの処理対象画像(2×2画素サイズのブロックが4×4個存在する画像)に対して第1段階の圧縮処理後の第1色の色データ情報は、4ブロックの画像(2×2画素サイズのブロックが2×2個存在する画像)で構成されることになる。さらに、この4ブロックの画像に対して第2段階の圧縮処理を行った後の第1色の色データ情報は、1ブロックの画像になる。この1ブロックに圧縮された圧縮データを2段階展開して元の画像に展開する場合、まず、第2段階圧縮データの展開処理(2段階目の配置パターン情報に従って、2段階目の第1色の色データ情報と第2〜4色の色データ情報とを展開する処理)で、少なくとも1ブロックの色データ読み出しと4ブロックの色データ書き込みを行う。さらに、そのデータを処理対象として第1段階圧縮データの展開処理を行った場合、少なくとも4ブロックの色データ読み出しと16ブロックの色データ書き込みを行う。したがって、メモリアクセス回数が大きくなり、メモリ帯域を圧迫する。
【0010】
また、多段階展開のスループットを上げるために、上述した展開部を複数設けてパイプライン化して、段階的に展開するように構成した場合、第1と第2の展開部の間に配置する中間バッファや、展開部の数が多くなることで、回路規模が増大する。例えば、第2段階圧縮データの展開を行う展開部での展開によって、1ブロックの情報は4ブロック分に増加する。したがって、第2段階圧縮データの展開部でのスループットと同じスループットで、第1段階圧縮データの展開部が展開処理するためには、第1段階圧縮データの展開を行う4つの展開部が必要となり、4ブロック分の中間バッファも必要となる。そのため、全体として展開部は5つ必要となり、中間バッファも含め、回路規模は増加する。さらに、3段階以上圧縮されたデータの展開を行う場合、必要な展開部の数は指数関数的に増加し、回路規模が増加するため、実装が難しくなるといった課題がある。
【0011】
つまり、多段階圧縮された圧縮データを、1つの展開部で段階的に展開しようとすると、メインメモリへのアクセス回数が多くなり、メモリ帯域を圧迫する。また、複数の展開部をパイプライン化して段階的に展開を行う場合、中間バッファ等、回路規模が増加してしまい、実装が困難となる。
【課題を解決するための手段】
【0012】
上記課題を解決するために本発明は以下の構成を有する。すなわち、画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号する画像処理装置であって、前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段とを有し、前記代表色復号手段と、前記N個の補間色復号手段は、それぞれ独立して動作することを特徴とする。
【発明の効果】
【0013】
多段階圧縮データの展開時にメモリアクセス回数が少なく、かつ回路規模を増加させることなく高速化のための実装が容易な復号化方法を提供する。
【図面の簡単な説明】
【0014】
【図1】本発明に係るMFPシステムの概要示した図。
【図2】本発明に係るコントローラの概要を示した図。
【図3】画像をブロック分割した際にそのブロックのパターンを列挙した図。
【図4】ブロックのパターンとその識別子を列挙した図。
【図5】第一実施形態に係る画像圧縮のフローを示した図。
【図6】第一実施形態に係る1段階圧縮処理に対する入力と出力の関係を示した図。
【図7】第一実施形態に係る1段階圧縮データのメモリ空間上でのレイアウトを示す図。
【図8】第一実施形態に係る2段階圧縮データのメモリ空間上でのレイアウトを示す図。
【図9】本発明に係る展開部211の詳細なブロック図を示す図。
【図10】本発明に係る1段階圧縮データの展開処理フローを示す図。
【図11】1段階圧縮データのメモリ空間上でのレイアウトの一例を示す図。
【図12】1段階圧縮データの展開時に出力される展開画素位置を示す図。
【図13】本発明に係る2段階圧縮データの展開処理フローを示す図。
【図14】2段階圧縮データのメモリ空間上でのレイアウトの一例を示す図。
【図15】1段階圧縮データの展開時に出力される展開画素位置を示す図。
【図16】従来構成と本発明との展開部によるメモリアクセス量の比較を示す図。
【図17】従来構成と本発明との展開部を並列化して行う場合のブロック図。
【図18】本発明に係る展開部を並列化して行う場合のブロック図。
【図19】従来構成の展開部の詳細なブロック図。
【図20】従来構成の展開部に係る1段階圧縮データの展開処理フローを示す図。
【図21】第二実施形態に係るリピートフラグの画像例を示す図。
【図22】第二実施形態に係るリピートフラグを適用した場合の2段階圧縮データのメモリ空間上でのレイアウトの一例を示した図。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下に示す構成は本発明を実現するための一例であり、構成はこれに限定するものではない。本実施形態では、画像処理装置として、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機(MFP:MultiFunction Peripheral)を例に説明する。
【0016】
[第一実施形態]
図1に示すように、コントローラ101は、画像入力機器であるスキャナ102や画像出力機器であるプリンタ103と接続される。また、コントローラ101はLANや公衆回線(WAN)などのネットワーク104と接続することで、画像情報やデバイス情報の入出力、PDLデータのイメージ展開を行う。CPU105は、後述するHDD記憶部107に格納されたプログラムを実行することにより、MFP全体を制御するプロセッサである。メモリ106は、CPU105が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。HDD記憶部107は、ハードディスクドライブであり、システムソフトウェアやプログラム、画像データなどを格納する。
【0017】
次に、図2に示すコントローラ101の構成例を参照してコントローラ101の各部の詳細な処理を説明する。まず、スキャナ102によってスキャンされた画像データを読み込む場合を説明する。スキャナ102で読み取られたRGB(レッド、グリーン、ブルー)3色の画像データ(ラスタ画像)をスキャナ用画像処理部201が受け取る。そして、その画像データに対してシェーディング処理やフィルタ処理等の画像処理を行い、圧縮部202で圧縮(符号化)処理を行う。そして、圧縮部202で圧縮されたデータ(圧縮データ)は、画像メモリバスを介してメモリ106に格納される。
【0018】
次に、スキャンされた画像データをプリントする場合、メモリ106に格納された圧縮データを、画像メモリバスを介して展開部211へ転送する。展開部211は、圧縮部202で圧縮されたデータを展開(復号化)し、色処理部212へ転送する。そして、色処理部212がCMYK(シアン、マゼンタ、イエロー、ブラック)色空間へ変換する。その後、更に色処理部212がCMYKの各値に対して濃度調整やプリンタガンマ補正などの色処理を行った後、該色処理後のデータを、圧縮部202に転送して改めて圧縮処理を行い、画像メモリバスを介してメモリ106に再度格納する。その後、プリント用の画像処理を行うために、メモリ106に格納されているラスタ画像データを、画像メモリバスを介して展開部211、プリント用画像処理部221の順に転送し、展開処理とプリント用画像処理を行う。プリント用画像処理部221は、入力されたラスタのCMYK画像データを、ディザ法や誤差拡散法による面積階調処理を行い、プリンタ103へ出力する。ここでの面積階調処理については、上記に述べた方法に限定するものではなく、本発明を適用可能であれば他の手法による面積階調処理を適用しても構わない。
【0019】
また、スキャンされた画像データをネットワークへ送信する場合、メモリ106に格納されている圧縮データを、画像メモリバスを介して展開部211に転送する。そして展開されたラスタデータを、色処理部212へ転送する。色処理部212は、ディスプレイガンマ調整や用紙地色調整等を行った後、YCbCr(輝度、BLUE色差、RED色差)色空間へ変換する。そして、色処理部212で処理されたデーを、圧縮部202に転送して改めて圧縮し、再度画像メモリバスを介してメモリ106に格納する。その後、送信用の画像処理を行うために、画像メモリバスを介してメモリ106に格納されている圧縮データを展開部211へ転送する。そして、展開部211が圧縮データをラスタ画像データに展開する。その後、ラスタのYCbCr画像データに対して送信処理部233がカラー画像送信であればJPEG圧縮処理を行い、モノクロの2値画像送信であればYデータに対して2値化を行ってJBIG圧縮等を行い、ネットワーク104へ出力する。
【0020】
また、スキャンされた画像データを保存する場合、メモリ106に格納されている圧縮データを、画像メモリバスを介してディスクスプール高圧縮/展開部242へ転送する。ディスクスプール高圧縮/展開部242では、HDDへの書き込みスピードがメモリへの書き込みスピードに対して遅いため、更に高圧縮のJPEG圧縮を施す。その後、ディスクアクセスコントローラ243を介してHDD記憶部107へ圧縮データを保存する。また、HDD記憶部107に保存されている圧縮データをメモリ106に再度転送する場合には、上述した処理を逆に行えば良い。
【0021】
ここで、図1に示すネットワーク104を介して接続された他の装置から送られてきたPDLデータをメモリ106へ書き込む場合を説明する。図2にはPDL解釈部が図示されていないが、PDL解釈部として機能するCPU105がPDLデータを解釈し、その結果のディスプレイリストをメモリ106に出力する。その後、メモリ106に格納されているディスプレイリストをレンダリング部253がラスタのRGB画像データとしてレンダリングを行い、圧縮部202が当該レンダリングされたRGB画像データ(ラスタ画像データ)に対して画像圧縮処理を行う。そして、画像圧縮処理された後の圧縮データを、画像メモリバスを介してメモリ106に格納する。尚、PDLデータをプリント、ネットワークへ送信、保存する処理は、スキャンされた画像データの場合と同様の処理を行うことで実現可能である。
【0022】
[圧縮処理]
次に、ラスタ画像データの符号化による圧縮処理を詳細に説明する。なお、本実施形態において、すべての圧縮処理は、圧縮部202にて行われるものとするが、この構成に限るものではない。例えば、図2のようにすべての圧縮処理を圧縮部202で行うのではなく、複数の圧縮処理部を設けて、画像パスごとに圧縮部を分散して使用するように構成しても構わない。本実施形態では、まずページ単位のラスタ画像データを、2×2画素単位のブロック毎に分割し、分割して抽出されたブロックを単位にデータの圧縮処理を行う。
【0023】
ここで本実施形態における圧縮処理を説明する前に、2×2画素からなるブロックの中に占める色数に応じてその組み合わせの場合の数を考える。ここで、ブロックに含まれる画素数が4画素なので、各ブロック内に占める色数は最大4色になり、ブロック内では高々1色〜4色の組み合わせしか存在しない。図3は、色数が1色〜4色のそれぞれの場合に、生じうるブロック内の色の配置パターンを示す図である。
【0024】
まず、ブロック内の色数が1色の場合、4画素がすべて同色で構成されていることになるので、その組み合わせは1通りである。
【0025】
次に、ブロック内の色数が2色の場合を考える(各色を第1色と第2色と呼ぶこととする)。ブロック内の予め決められた所定の位置の画素(本実施形態ではブロック内の左上の画素とする)の色データを第1色として考えると、左上画素以外の残りの3画素へ第1色もしくは第2色が入るので、4画素同色の場合を除くと、7通りの組み合わせが考えられる。
【0026】
次に、ブロック内の色数が3色(第1色〜第3色)の場合を考える。3色が4画素内にレイアウトされる場合の組み合わせは、3色のうち1色だけ2度使われる場合の数と言い換えることが可能であり、4画素の座標のうち、2画素が同じ色になる場合の数を求めれば良い。つまり、3色の場合の組み合わせの数は、4つの座標から2つの座標を取る組み合わせとなり、全部で6通りとなる。また、ブロック内の色数が4色(第1色〜第4色)の場合の組み合わせは1通りである。
【0027】
以上により、2×2画素からなるブロック内の色数が1色〜4色の全ての場合の組み合わせ数を合計すると、全部で15通りの配置パターンが考えられる。また、これら全てのパターンを識別するためにフラグ(識別子)を付与することを考えると、フラグのデータ量としては4ビット必要となる。この15通りのパターンとフラグとの関係を図4に示すように定義し、以下、この配置情報を示すフラグを「パターンフラグ」と呼ぶ。また、第1色をそのブロックにおける「代表色」、第2色、第3色、第4色(すなわち、代表色以外の色)をまとめて「補間色」とも呼ぶ。なお、ブロックを構成する画素数は2×2画素に限定されるものではなく、このサイズよりも大きくても構わない。なお、その場合には配置パターンの組み合わせ数が増えるので、4ビットで表現していたパターンフラグのビット数も増加する。
【0028】
[圧縮処理フロー]
上述のように、2×2画素のブロック内において取り得る組み合わせ(色の配置パターン)を踏まえ、圧縮部202で行われる処理を、圧縮部202の圧縮処理フロー(図5)を用いて説明する。本実施形態における入力としては、例えばRGBそれぞれ8ビットの256階調とし、またデータとしては8ビットデータの点順次で1画素当たり24ビットの色値(画素値)を有する画像データとして説明する。本実施形態において、圧縮部202は、図2で示したようにコントローラ101内に存在するものであり、電子回路等のハードウェア(ASICなど)で構成されるものとする。しかし、別の構成として、CPUがプログラムを実行することによりその一部または全部の機能を実現するようにしても構わない。
【0029】
まず、本処理が開始され、2×2画素サイズのブロック毎に分割された画像が、前段のスキャナ用画像処理部201もしくはレンダリング部253から入力される(S501)。そして、圧縮部202は、2×2画素ブロック内の色の減色処理とパターンフラグの算出処理とを行う(S502)。S502における減色処理は、2×2画素の中に色が近い画素値を有する複数の画素が存在した場合に、それらを同一の色(画素値)に変更することで、本圧縮処理の圧縮効率を高めるために行う。ここでの減色処理については、特に限定せず、本発明が適用可能であれば、いずれの方法を用いても構わない。そして、減色処理後の2×2画素からなるブロックの色データを比較することにより、そのブロックにおける減色後の色数と色の配置パターンとを示すパターンフラグが算出される。
【0030】
次に、S502で算出されたパターンフラグに基づいて、圧縮部202は、ブロック内の色数と配置パターンを判定して、各色の色データを抽出する(S503)。図4に示したように、4ビットのパターンフラグに対して、ブロック内を構成する色数と、各色の配置パターンが対応づけられているので、パターンフラグから各ブロックにおける色数と各色の色データを特定することができる。
【0031】
ここで、本実施形態の図4では、全てのパターンにおいて、左上の画素の色(画素値)が第1色(1番目の色データ)となるように定義している。パターンフラグが“0”の場合は、色数が1なので、左上の画素の色(画素値)を第1色として抽出する。また、パターンフラグが1〜7の場合は、色数が2なので、左上の画素の色(画素値)を第1色として抽出し、更に、各パターンフラグに応じて定義されている第2色(2番目の色データ)が存在する位置の画素の色(画素値)を抽出する。例えば、パターンフラグが“1”の場合は、ブロックにおける右上の画素の色を第2色(2番目の色データ)として抽出する。
【0032】
また、パターンフラグが8〜Dの場合は、色数が3であるので、ブロックにおける左上の画素の色(画素値)を第1色として抽出する。更に各パターンフラグに応じて定義されている第2色(2番目の色データ)及び第3色(3番目の色データ)が存在する位置の画素の色(画素値)を抽出する。例えば、パターンフラグが“8”の場合は、ブロックにおける左上の画素の色を第1色、右上の画素の色(画素値)を第2色、右下の画素の色(画素値)を第3色として抽出する。
【0033】
また、パターンフラグが“E”の場合は、色数が4であるので、ブロックにおける左上の画素の色を第1色、右上の画素の色を第2色、左下の画素の色を第3色、右下の画素の色を第4色として抽出する。
【0034】
すなわち、パターンフラグに基づいて、圧縮部202は、ブロック内を構成する色数を特定し(S504、S506、S508)、当該特定した色数それぞれに応じて、パターンフラグと色データとを出力する(S505、S507、S509、S510)。そして、本処理フローを終了する。
【0035】
この出力されるデータを、図6を用いて説明する。ここで、入力データは、2×2画素それぞれが24ビット(RGB各色8ビット)の画素値を有し、1ブロックあたり96ビットのデータ量となる。これに対し、図6に示すように、例えばパターンフラグが“0”(すなわちブロックの4画素が1色で構成されている)の場合(図5のS504でYES)、2色目以降の色データは存在しない。従って、パターンフラグの4ビットと1色目の画素値(24ビット分の色データ)とが出力される(図5のS505)。すなわち、パターンフラグが“0”のブロックは、28ビットのデータ量のデータを出力する。また、パターンフラグが1〜7(即ち4画素が2色で構成されている)の場合(図5のS506でYES)、2色目が存在する画素の座標をパターンフラグから求め、パターンフラグの4ビットと2色分の画素値(48ビット分の色データ)とを出力する(図5のS507)。すなわち、パターンフラグが1〜7のブロックは、52ビットのデータ量のデータを出力する。
【0036】
また、パターンフラグが8〜D(即ち3色)の場合(図5のS508でYES)、1色目と2色目と3色目とが存在する画素の位置をパターンフラグに基づいて求め、パターンフラグの4ビットと3色分の画素値(72ビット分の色データ)とが出力される(図5のS509)。すなわち、パターンフラグが8〜Dのブロックは、76ビットのデータ量のデータを出力する。
【0037】
そして、パターンフラグが“E”(即ち4色)の場合(図5のS508でNO)、パターンフラグの4ビットと4色分の画素値(96ビット分の色データ)とが出力される(図5のS510)。すなわち、パターンフラグが“E”のブロックは、100ビットのデータ量のデータを出力する。
【0038】
言い換えると、各ブロックから出力される色データは、ブロック内の位置順(左上から右上、左下、右下の順に1、2、3、4とする)に走査した場合に、それまでに出現していなかった色データが現れるたびに順に出力していくことに相当する。
【0039】
このように、2×2画素からなるブロックの4色分の色データ(96ビット)を、4ビットのパターンフラグと、当該ブロックに存在する色数分の画素値のデータ(色データ)として出力する。その結果、簡単な処理により出力データ量を削減することが可能になる。特に、2×2画素からなるブロック内で同色の画素が存在するブロック(即ち各ブロック内の色数が少ないブロック)が多いラスタ画像の場合は、出力されるデータ量の圧縮率も大きくなる。また、パターンフラグを参照することで、そのブロック内の色数およびその配置パターンを特定することが可能になる。このような処理を画像ブロック全てに対して行うことで、画像全面をデータ圧縮することが可能になる。
【0040】
[格納方式]
以上に述べた方法による圧縮部202で求めて出力されたパターンフラグと色データとは、メモリ106に書き込まれる(メモリ格納処理)。このとき、圧縮部202は、メモリ106におけるパターンフラグと、第1色のデータと、第2色、第3色、第4色のデータとの書き込み位置を変更する。圧縮部202は、パターンフラグ書き込みのためのメモリ先頭アドレスと、第1色データの書き込みのためのメモリ先頭アドレスと、第2〜4色データの書き込みのためのメモリ先頭アドレスとの、3つのアドレスを指定する。すなわち、各ブロックのパターンフラグはメモリ106上のパターンフラグ格納部(パターンフラグを格納するためのメモリ領域)にまとめて格納されることになる。また、各ブロックの第1色(1色目)の色データは、メモリ106上の第1色格納部(各ブロックの1色目の色データを格納するためのメモリ領域)にまとめて格納されることになる。更に、各ブロックの第2〜4色目の色データは、メモリ106上の第2,3,4色格納部(各ブロックの2〜4色目の色データを格納するためのメモリ領域)にまとめて格納されることになる。
【0041】
図7は、圧縮部202によって圧縮された画像データのメモリ空間への書き込み例を示す図である。尚、サイズがM×N画素のRGB各色8ビットの画像を圧縮部へ2×2画素のブロックごとに入力する場合、パターンフラグのデータが格納されるパターンフラグ格納部のデータサイズは、(M×N/2/2×4/8)バイトとなる。また、第1色のデータが格納される第1色格納部のデータサイズは、(M×N/2/2×24/8)バイトとなる。また、第2色、第3色、第4色のデータが格納される第2,3,4色格納部のデータサイズは、処理対象となるラスタ画像に応じて異なる。これは、第2,3,4色が存在するブロックの数が画像によって異なるためである。つまり、各ブロックに含まれる色数はそのパターンにより異なるため、ブロック数に対して、パターンフラグおよび第1色は必ず1つに特定されるが、第2,3,4色の数は変動する。よって、圧縮部202で圧縮処理された出力データサイズの大小は、メモリ106上の第2,3,4色格納部に格納されるデータ量に依存する。また、第1色書き込み先頭アドレス以降のメモリ領域(第1色格納部、及び第2,3,4色格納部)に関しては、画素の色データがそのままのビット数で格納されている。従って、例えばLUT(ルックアップテーブル)を用いた色変換やガンマ補正処理、行列演算を用いた色空間変換処理等の1画素入力と1画素出力で完結する色処理を行う場合、圧縮データをデコード(復号化)して元のラスタ画像に戻さなくても、圧縮データ中の該当する色データを処理することが可能である。つまり、図7のようにメモリの第1色格納部と第2〜4色格納部に格納されているデータに対して、該当する画素値(色データ)の部分を直接処理することが可能である。
【0042】
また、図7に示すように、画像データ700を、パターンフラグと第1色とその他の色(第2,3,4色)とに分け、離散的にメモリ106上の記憶領域へ格納している。従って、第1色格納部には、ラスタ画像を2×2画素からなるブロックに分割して、各ブロックの左上の画素をサンプリングした場合の画素値(色データ)がメモリ上に連続して存在することになる。
【0043】
[多段階圧縮]
次に、上述した圧縮方式で多段階圧縮を行った場合について説明する。ここでの多段階圧縮とは、同じ画像データに対し、複数回(N回:Nは2以上の整数)の圧縮処理を施すことを意味する。例えば、2段階圧縮とは、入力された画像データに対し、1回目の圧縮処理を施したのち、当該生成された各代表色のみの画像データ(第1色格納部に格納される第1色のデータ)を次の圧縮処理対象画像として2回目の圧縮処理を行うことを意味する。よって、N回目の圧縮処理では、N−1回目の圧縮処理によって得られた代表色で構成される画像データを用いて圧縮処理を行う。上述した圧縮方式によれば、1回目の圧縮処理後の第1色格納部には、圧縮率の高低によらず、図7の白色で示される部分の画素の色データがラスタ順に格納されている。つまり、元の画像データが縦横2画素ごとに間引かれたデータが格納されている。多段階圧縮は、この間引かれて生成された画像データをさらに2×2画素ごとにブロック化して、再度上述した圧縮処理を適用する。
【0044】
すなわち、図8(a)に示すように、第1段階の圧縮処理によって圧縮された画像データのうち、第1色格納部に格納されたデータに注目する。図8(a)の第1段階圧縮処理後のメモリの第1色格納部に格納されている色データは、画像データ800の白色と黒色で示された位置の画素データである。そして、第1色格納部に格納されている画像データ(第1段階圧縮処理後の第1色の色データ)をさらに2×2画素ごとにブロック化し、上述した圧縮処理を行う。この結果、第1段階の圧縮処理結果の第1色の色データは、第2段階の圧縮処理結果のパターンフラグと、第2段階の第1色の色データと、第2段階の第2,3,4色の色データとに圧縮変換される。したがって、図8(b)の第2段階圧縮時メモリ空間に示すような圧縮結果が得られる。ここで、図8(b)に示すように、メモリ空間において、第2段階圧縮時の第1色格納部には、画像データ800の白色で示された位置の色データが格納される。また、第2段階圧縮時の第2,3,4色格納部には、画像データ800の黒色で示された位置の画素に基づいて求めた第1色以外の色データが格納される。ただし、第2段階圧縮時の第2,3,4色格納部には、2×2画素中に存在する同一の色データは複数格納されることはない。このように多段階圧縮されたデータは、図8(b)のように入れ子構造の形式でデータ格納される。なお、他の格納方法として、同一のメモリ領域ではなく、別のメモリ領域を新たに確保して第2段階圧縮データを格納しても良い。
【0045】
[展開処理]
次に、本発明の中核をなす展開部211を説明する。展開部211では、上述したような圧縮処理で生成されたパターンフラグと色データとを、元のラスタ画像データへ戻す処理を行う。図9に本発明における展開部211の詳細なブロック図を示す。本実施形態における展開部211は、図2で示したようにコントローラ101内に存在するものであり、3つのデータ展開部900,910,920で構成されるものとする。なお、本実施形態の展開部211は、電子回路等のハードウェア(ASICなど)で構成されるものとするが、CPUがプログラムを実行することによりその一部または全部の機能を実現するようにしても構わない。
【0046】
まず、1段階の圧縮処理がなされている圧縮データが展開対象である場合について、展開部211の詳細な処理を、図10に示すフローチャートと、図11の圧縮画像例とを用いて説明する。
【0047】
本実施形態では、説明を簡単にするため、図11(a)に示されるような4×4画素からなる画像データの圧縮データを例として、当該圧縮データを展開する場合について述べる。メモリ106の圧縮データ格納に関する一部のメモリマップを抽出したものを図11(b)に示し、さらにメモリ内部のデータ領域を詳細にしたものを図11(c)に示す。画像データ1101は、それぞれ同じパターン(斜線部、白色部、縦線部、格子線部)で表わされた画素は、同一の画素値を有する画素を示している。
【0048】
図11(a)に示した画像データ1101に対して1段階の圧縮処理を適用した場合、該画像データ1101は2×2画素ごとのブロックで黒太線のように分割され、圧縮される。そして、圧縮された結果の各ブロックのパターンフラグ、第1色の色データ、第2〜4色の色データが図11(b)に示すメモリ106上のパターンフラグ格納部1102、第1色格納部1103、第2,3,4色格納部1104にそれぞれ格納されている。画像データ1101の各ブロックのパターンフラグは、図4に示した割り当てにより、左上ブロック、右上ブロック、左下ブロック、右下ブロックの順に、“B”、“5”、“1”、“E”となる。これらの値がパターンフラグ格納部1102に格納され、図11(c)のアドレス0x00,0x01のように配置されている。
【0049】
また、第1色格納部1103には、各ブロックの左上の画素値データが連続して格納される。したがって、図11(c)のアドレス0x10−0x1Bのように、画素00,02,20,22の画素値が格納されている。ただし、本実施形態においては、8bitのRGB画像を扱っているものとし、1画素データのサイズは24bit(3Byte)である。また、図11(c)に示す各アドレスのデータ量は、8bit(1Byte)である。
【0050】
なお、図11(c)において、横方向の値が第1の位のメモリアドレスの値を示し、縦方向の値が第2の位のメモリアドレスの値を指す。すなわち、図11(b)にて示された第1色格納部1103の先頭アドレスである“0x10”は、図11(c)において、横方向の“00”と縦方向の“10”とが交わるアドレスを意味する。
【0051】
最後に、第2,3,4色格納部1104には、各ブロックの左上画素以外の画素値(第1色と異なる色の色データ)が格納されている。ただし、同一ブロックに同色の色が存在した場合、重複して格納はされない。例えば図11(a)に示す画像データ1101の左上ブロックの画素01と画素10は同色であるため、画素01と画素11の画素値(すなわち第1色と異なる色の色データ)だけが第2,3,4色格納部に格納されている。また、同様にして、画像データ1101の右上ブロックの画素02と画素03と画素13は同色(第1色)であるため、画素12の画素値だけが、第2,3,4色格納部に格納されている。したがって、図11の画像データ1101の例において、第2,3,4色格納部に格納される画素値は、画素01,11,12,21,23,32,33の画素値(色データ)であるため、図11(c)のアドレス0x40−0x54のように格納されている。
【0052】
本実施形態において、図11のように1段階の圧縮処理がなされている圧縮データの展開処理は、図9の3つあるデータ展開部900,910,920のうちの2つを使用して行われる。ここでは、データ展開部900が第1色データの展開を行い、データ展開部910が第2,3,4色データの展開を行うものとする。すなわち、データ展開部900は、展開するラスタ画像において、パターンフラグに基づき圧縮データ内の第1色データによって塗りつぶされている画素のみを特定する。そして、読み込んだ第1色データによって当該特定した画素を塗りつぶす。また、データ展開部910は、展開するラスタ画像において、パターンフラグに基づき圧縮データ内の第2,3,4色データによって塗りつぶされている画素のみを特定する。そして、読み込んだ第2,3,4色データによって、当該特定した画素それぞれを塗りつぶす処理を行う。ここで塗りつぶす処理とは、画像データの展開領域(展開用のメモリ領域)において、各画素の値に色データの値を適用する処理を意味する。
【0053】
まず、第1色データを展開するデータ展開部900の動作について図10(a)を用いて説明する。以下、データ出力部904、914、924が1回の展開処理で注目するブロックを注目ブロックと呼ぶ。1段階の圧縮処理がなされている圧縮データの展開処理においては、注目ブロックは、画像データ1101の2×2画素単位のブロックとなる。
【0054】
パターンフラグDMAC901は、パターンフラグ格納部1102の先頭アドレスと画像サイズとが設定され、当該設定されたアドレス(例えば0x00)から順番にパターンフラグを読み込んで、データ出力部904に順次転送する処理を行う(S1001)。並行して、データDMAC903は、第1色格納部1103の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(例えば0x10)から順番に第1色データを読み込んで、データ出力部904に順次転送する処理を行う(S1002)。データ出力部904は、パターンフラグ格納部1102から取得するパターンフラグに基づいて、同時に取得する第1色データで塗りつぶす画素位置を特定する(S1003)。
【0055】
例えば、データ出力部904は、パターンフラグ格納部1102から最初に読み込んだパターンフラグ“B”に対しては、図4に示す対応表から、左上画素の画素00だけを、当該ブロックの第1色の色データで塗りつぶすと判定する。また、次に読みこんだパターンフラグ“5”に対しては、同じく図4に示す対応表から、左上画素、右上画素、右下画素の画素02,画素03,画素13を、当該ブロックの第1色の色データで塗りつぶすと判定する。
【0056】
次に、注目ブロックに塗りつぶす画素がある場合(S1004にてYes)、データ出力部904は、予めデータ出力部904に設定されたラスタ展開後の画像を格納する先頭アドレス、および展開画像のサイズ情報から、第1色の色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1005)。そして、データDMAC903から受信した第1色データを、算出したアドレスのメモリ領域に書き込む(S1006)。
【0057】
S1004〜S1006の処理は、1ブロックの中で、第1色データを書き込む画素数分、繰り返し実行される。すなわち、画像データ1101の左上ブロックにおいては、第1色データを書き込む画素は1画素分なので、S1004〜S1006の処理は1回行われる。また、画像データ1101の右上ブロックにおいては、第1色データを書き込む画素は3画素分なので、S1004〜S1006の処理は3回行われる。このようにして1ブロック分の処理が終わると、S1004において、データ出力部904は、塗りつぶす画素がなくなったと判定し(S1004のNo)、注目ブロックの展開処理を完了する。
【0058】
以上の処理によって、展開用のメモリ上で、各ブロックの第1色の色データが画素値として書き込まれた画素は、図12(a)の斜線部で表わされる。言い換えれば、図12(a)の斜線部で表わされる画素の画素値が、データ展開部900によって展開されることになる。
【0059】
次に、第2,3,4色データを展開するデータ展開部910の動作について図10(b)を用いて説明する。パターンフラグDMAC911は、パターンフラグ格納部1102の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(例えば0x00)から順番にパターンフラグを読み込んで、データ出力部914に順次転送する処理を行う(S1021)。並行して、データDMAC913は、第2,3,4色格納部1104の先頭アドレスと画像サイズが設定され、当該設定されたアドレス0x40から順番に第2,3,4色データを読み込んで、データ出力部914に順次転送する処理を行う(S1022)。データ出力部914は、パターンフラグ格納部1102から取得する注目ブロックのパターンフラグに基づいて、まず、当該注目ブロックに第2,3,4色データがあるか否かを判定する(S1023)。
【0060】
例えば、パターンフラグ“0”を有するブロックがあった場合、その注目ブロックは第1色データのみで構成されるブロックであるので、当該注目ブロックに第2,3,4色データは存在しない(S1023にてNo)。そのため、データ展開部910は、注目ブロックの第2,3,4色の色データによる画素塗りつぶし処理は行わず、次のブロックの処理に移る。それ以外のパターンフラグが読み込まれた場合は、少なくとも第2色データが存在するブロックであると判定される(S1023にてYes)。
【0061】
次に、少なくとも第2色データが存在するブロックであり(S1023にてYes)、かつ注目ブロックにまだ塗りつぶす画素がある場合(S1024にてYes)、データ出力部914は、読み込んだ第2,3,4色データによって塗りつぶされる画素位置を、パターンフラグに基づいて特定する(S1025)。データDMACは1ブロック内の第2,3,4色データをデータ出力部914に順次転送してくるため、データ出力部914は、第2色データで塗りつぶす画素、第3色データで塗りつぶす画素、第4色データで塗りつぶす画素を別々に特定する。さらに、データ出力部914は、予めデータ出力部914に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報から、第2,3,4色の色データそれぞれで塗りつぶす画素に対応するメモリアドレスを算出する(S1026)。
【0062】
そして、データ出力部914は、データDMAC913から受信した第2,3,4色データを、算出したそれぞれのアドレスのメモリ領域に書き込む(S1027)。S1024〜S1026の処理は、1ブロックの中で、第2,3,4色データを書き込む画素数分繰り返される。すなわち、画像データ1101の左上ブロックにおいては、書き込む第2,3,4色データは3画素分なので、S1024〜S1026の処理は3回行われる。また、画像データ1101の右上ブロックにおいては、書き込む第2,3,4色データは1画素分なので、S1024〜S1026の処理は1回行われる。このようにして1ブロック分の処理が終わると、S1024において、データ出力部914は、塗りつぶす画素がなくなったと判定し(S1024にてNo)、注目ブロックの展開処理を終了する。以上の処理によって、展開用のメモリ上で、各ブロックの第2,3,4色の色データが画素値として書き込まれた画素は、図12(b)の斜線部で示される。言い換えれば、図12(b)の斜線部で示される画素の画素データが、データ展開部910によって展開されることになる。
【0063】
1段階圧縮されたデータは、以上のような方法により、展開部211により展開される。なお、各DMACについては、データ読み出しの効率を上げるために使用しているものであり、DMACを削除して、各データ出力部が必要なデータに順次アクセスするような構成を採用しても構わない。
【0064】
[2段階圧縮データに対する展開処理]
次に、2段階の圧縮処理がなされている圧縮データが展開対象である場合について、展開部211の詳細な処理を、図13に示すフローチャートと、図14の圧縮画像例とを用いて説明する。すなわち、図11(a)に示される4×4画素からなる画像データ1101を2段階圧縮した2段階圧縮データ(図14(b))を展開する場合について述べる。
【0065】
画像データ1101は2段階圧縮されると、図14(b)、(c)で示されるような圧縮データとしてメモリ106上に格納される。まずは、この伸張する2段階圧縮データが生成される仕組みについて説明しておく。
【0066】
メモリ106の圧縮データ格納に関する一部のメモリマップを抽出したものを図14(b)に示し、さらにメモリ内部のデータ領域を詳細にしたものを図14(c)に示す。なお、図14(c)において、横方向の値が第1の位のメモリアドレスの値を示し、縦方向の値が第2の位のメモリアドレスの値を指す。すなわち、図14(b)にて示された第2段階第1色格納部1404の先頭アドレスである“0x18”は、図14(c)において、横方向の“08”と縦方向の“10”とが交わるアドレスを意味する。
【0067】
第1段階パターンフラグ格納部1402と、第1段階第2,3,4色格納部1406に格納されているデータ及びその生成方法は、図11(b)のパターンフラグ格納部1102と、第2,3,4色格納部1104とに格納されているデータ及びその生成方法と同じである。よって、説明は割愛する。第1段階の圧縮処理によって、第1色格納部1103に格納された第1色データは、画像データ1101の各ブロックの左上画素が格納されている。つまり、主走査方向、副走査方向それぞれに2画素ごとに間引いた画像データ1401(図14(a))が格納されていることと同義である。
【0068】
そこで、第2段階圧縮は、第1段階圧縮によって間引いて得られた画像データ1401に対して、圧縮処理を行う。このとき、図4に示す割り当てにより、画像データ1401のブロックのパターンフラグは“2”となる。これが第2段階パターンフラグ格納部1403に格納され、図14(c)のアドレス0x10のように配置されている。また、第2段階第1色格納部1404には、第2段階圧縮の処理対象ブロックの左上画素の画素値(色データ)が格納される。従って、図14(c)のアドレス0x18−0x1Aのように、画素00の画素データが格納される。
【0069】
最後に、第2段階第2,3,4色格納部1405には、第2段階圧縮の処理対象の注目ブロックにおける左上画素の色データ(第1色)以外の色データ(第2〜4色)が格納されている。ただし、同一ブロック内に同色の色が存在した場合、その色のデータは重複して格納されない。例えば、画像データ1401のブロックの画素00と画素22は同色の値(第1色の色データ)を有し、かつ、画素02と画素20は同色の値(第2色の色データ)を有するため、画素02の画素値(第2色データ)だけが第2段階第2,3,4色格納部1405に格納される。従って、画像データ1401の中で第2段階第2,3,4色格納部1405に格納される画素データは、画素02のみであるため、図14(c)のアドレス0x20−0x22のように格納されている。
【0070】
2段階の圧縮処理がなされている圧縮データ(図14(b)、(c))の展開処理は、図9に示された3つのデータ展開部900,910,920をすべて使用して行う。ここでは、データ展開部900が第2段階第1色データの展開を行い、データ展開部910が第2段階第2,3,4色データの展開を行い、データ展開部920が第1段階第2,3,4色データの展開を行うものとする。すなわち、データ展開部900は、展開後のラスタ画像において、圧縮データ内の第2段階第1色データによって、展開後のデータサイズにおいて塗りつぶされる画素を第2段階パターンフラグと第1段階パターンフラグとに基づいて特定する。そして、読み込んだ第2段階第1色データによって当該特定した画素を塗りつぶす。また、データ展開部910は、展開後のラスタ画像において、圧縮データ内の第2段階第2,3,4色データによって塗りつぶされる画素を第2段階パターンフラグと第1段階パターンフラグとに基づいて特定する。そして、読み込んだ第2段階第2,3,4色データによって当該特定した画素を塗りつぶす処理を行う。さらに、データ展開部920は、展開後のラスタ画像において、圧縮データ内の第1段階第2,3,4色データによって塗りつぶされる画素を第1段階パターンフラグに基づいて特定する。そして、読み込んだ第1段階第2,3,4色データによって当該特定した画素を塗りつぶす処理を行う。
【0071】
まず、第2段階第1色データを展開するデータ展開部900の動作について図13(a)を用いて説明する。ここで、前述の1段階の圧縮処理がなされている圧縮データの展開処理時とは異なり、2段階の圧縮処理がなされている圧縮データの展開処理において、1回の展開処理で注目する注目ブロックは、画像データ1101における4×4画素単位に相当する。また、以下の説明において、S1301〜S1303の処理は並行して行われるものとして記載されているが、図13(a)に示すように、順番に処理を行うことも可能である。
【0072】
パターンフラグDMAC901は、第1段階パターンフラグ格納部1402の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x00)からパターンフラグを読み込んで、データ出力部904に順次転送する(S1301)。並行して、パターンフラグDMAC902は、第2段階パターンフラグ格納部1403の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x10)からパターンフラグを読み込み、データ出力部904に順次転送する(S1302)。
【0073】
さらに並行して、データDMAC903は、第2段階第1色格納部1404の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x18)から順に第2段階第1色データを読み込んで、データ出力部904に順次転送する(S1303)。
【0074】
データ出力部904は、取得した第1段階パターンフラグと第2段階パターンフラグとに基づいて、展開後の4×4画素サイズの画像データにおいて第2段階第1色データで塗りつぶす画素位置を特定する(S1304)。これにより、第一特定手段を実現する。具体的にいうと、図14(c)の圧縮データの例では、まず、第2段階パターンフラグ(“2”)に基づき、画素00,02,20,22のうち、第2段階第1色データで塗りつぶす画素位置として、画素00,22を特定できる。更に、データ出力部904は、第2段階パターンフラグに基づいて第2段階第1色データで塗りつぶすと特定された画素位置が含まれる第1段階圧縮のブロックについて、第1段階パターンフラグに基づき、第2段階第1色データで塗りつぶす画素位置を特定する。図14(c)の例では、画素00が含まれる第1段階圧縮のブロックにおける第1段階パターンフラグが“B”であり、また、画素22が含まれる第1段階圧縮のブロックにおける第1段階パターンフラグが“E”である。したがって、画素00,22が含まれるブロック(画像データ1101の左上ブロックと右下ブロックに相当するブロック)の画素00,22以外の画素位置に対して、第2段階第1色データで塗りつぶす画素は存在しないと判定する。よって、図14(c)の圧縮データの例では、展開後の4×4画素サイズの画像データにおいて第2段階第1色データで塗りつぶす画素位置は画素00,22のみであると特定できる。
【0075】
次に、S1304で特定された画素のうち、まだ第2段階第1色データの塗りつぶし処理(書き込み処理)を行っていない画素があれば(S1305にてYes)、当該未処理の画素の1つを処理対象としてS1306の処理に進む。データ出力部904は、予めデータ出力部904に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報、当該処理対象の画素の画素位置から、第2段階第1色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1306)。これにより、第一メモリアドレス算出手段を実現する。
【0076】
そして、データ出力部904は、データDMAC903から受信した第2段階第1色データを、算出したアドレスのメモリ領域に書き込む(S1307)。これにより、第一格納手段を実現する。
【0077】
S1306〜S1307の処理は、1ブロックの中で、第2段階第1色データを書き込む画素数分繰り返される。図14(c)の例では、展開後の4×4画素サイズの画像データにおいて、第2段階第1色データは、画素00,22の2画素分書き込まれるので、S1306〜S1307の処理は2回行われる。
【0078】
以上のようにして、1つの注目ブロック分(2段階圧縮のため、4×4画素に相当)の処理が終わると、S1305において、データ出力部904は、第2段階第1色データの塗りつぶし対象画素がなくなった(塗りつぶし処理が終了した)と判定し(S1305にてNo)、注目ブロックに対する処理を終了する。以上の処理によって、図14(c)の圧縮データの場合、メモリ上に展開された画像データにおいて、第2段階第1色データが書き込まれる画素は、図15(a)の斜線部で表される。言い換えれば、図15(a)の斜線部で表される画素の画素データが、データ展開部900によって展開されることになる。
【0079】
次に、第2段階第2,3,4色データを展開するデータ展開部910の動作について図13(b)を用いて説明する。なお、以下の説明において、S1321〜S1323の処理は並行して行われるものとして記載されているが、図13(b)に示すように、順番に処理を行うことも可能である。
【0080】
パターンフラグDMAC911は、第1段階パターンフラグ格納部1402の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x00)からパターンフラグを読み込んで、データ出力部914に順次転送する(S1321)。この処理に並行して、パターンフラグDMAC912は、第2段階パターンフラグ格納部1403の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x10)からパターンフラグを読み込んで、データ出力部914に順次転送する(S1322)。
【0081】
さらに並行して、データDMAC913は、第2段階第2,3,4色格納部1405の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x20)から第2段階第2,3,4色データを読み込んで、データ出力部914に順次転送する(S1323)。
【0082】
データ出力部914は、第2段階パターンフラグ格納部1403から取得する第2段階パターンフラグに基づいて、まず、第2段階第2,3,4色データがあるか否かを判定する(S1324)。例えば、第2段階パターンフラグ“0”のブロックについては、当該注目ブロックの第2段階第2,3,4色データは存在しないと判定される(S1324にてNo)。そのため、データ展開部910は、当該注目ブロックについて、第2段階第2,3,4色データによる画素塗りつぶし処理は行わず、次のブロック処理に移る。それ以外の第2段階パターンフラグが読み込まれた場合は、少なくとも第2段階第2色データが存在するブロックであると判定される(S1324にてYes)。
【0083】
データ展開部910が、当該注目ブロックについて、第2段階第2,3,4色データが存在すると判定した場合(S1324にてYes)、データ展開部910は、注目ブロックに未処理の第2段階第2,3,4色データがあるかどうかを判定する(S1325)。注目ブロックに未処理の第2段階第2,3,4色データがあると判定した場合(S1325にてYes)、データ展開部910は、未処理の第2段階第2,3,4色データのうちの1つを処理対象にする。更に、データ展開部910は、第2段階パターンフラグと第1段階パターンフラグとに基づいて、展開後の4×4画素サイズの画像データにおいて、当該処理対象にした色データで塗りつぶす画素位置を特定する(S1326)。これにより、第二特定手段を実現する。
【0084】
データDMAC913は、1ブロック内の第2段階第2,3,4色データをデータ出力部914に順次転送するため、データ出力部914は、第2段階第2色データで塗りつぶす画素、第3色データで塗りつぶす画素、第4色データで塗りつぶす画素を別々に特定する。したがって、S1326では、未処理の色データのうち、第2段階の第2色データから順に処理対象にしていくものとする。
【0085】
このS1324〜S1326の処理に関して、図14ならびに図11に基づいて、具体的に説明を行う。まず第2段階パターンフラグとして“2”が読み込まれ、図4を参照すれば分かるように、第2色データが存在する配置パターンであると判定される。すなわち、注目ブロックの第2段階圧縮を行った際の配置パターンが画像データ1401のようなパターンだということが判定される。したがって、第2段階第2,3,4色格納部1405には第2色データだけが格納されているため、データ出力部914は、データDMAC913から受信した第2色データで、どこの画素を塗りつぶすかを算出する。つまり、データ出力部914は、第2段階パターンフラグのパターン“2”に基づき、画素02と画素20とを、データDMAC913から読み込んだ第2色データで塗りつぶす対象の画素であると判定する。
【0086】
更に、画素02と画素20はそれぞれ、画像データ1101の右上ブロックおよび左下ブロックの第1色データでもある。よって、これと対応する第1段階パターンフラグのパターン“5”、“1”に基づいて、データ出力部914は、画像データ1101の画素03,13,30,31も塗りつぶし対象画素であると判定する。すなわち、図14(c)の圧縮データの例では、以上で示した画素02,03,13,20,30,31の6画素分を、S1324〜S1326のフローの中で、第2段階第2色データで塗りつぶす対象の画素位置であると特定する(図15(b))。
【0087】
図13(b)の処理フローの説明に戻る。塗りつぶす画素位置が特定されると、予めデータ出力部914に設定されたラスタ展開後の画像データを格納する展開領域の先頭アドレス、展開画像のサイズ情報、当該塗りつぶし対象画素の位置から、データ出力部914は第2段階第2,3,4色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1327)。これにより、第二メモリアドレス算出手段を実現する。
【0088】
そして、データ出力部914は、データDMAC913から受信した第2,3,4色データのうち、S1326で処理対象にした色データを、算出したアドレスのメモリ領域に書き込む(S1328)。これにより第二格納手段を実現する。S1325〜S1328の処理は、注目ブロックの中で、第2,3,4色データを書き出す画素数分繰り返される。すなわち、図14(c)の圧縮データの例では、第2段階第2色データで図15(b)のように6画素分塗りつぶすことになるため、S1325〜S1328の処理は6回行われる。
【0089】
このようにして1つの注目ブロック分の処理が終わると、S1325において、データ出力部914は、塗りつぶす画素がなくなったと判定し(S1325にてNo)、注目ブロックに対する処理を終了する。以上の処理によって、図14(c)の圧縮データの場合、メモリ上に展開された画像データにおいて、第2段階第2色データが書き込まれる画素は、図15(b)の斜線部で表わされる。言い換えれば、図15(b)の斜線部で表される画素の画素値が、データ展開部910によって展開されることになる。
【0090】
最後に、第1段階第2,3,4色データを展開するデータ展開部920の動作について図13(c)を用いて説明する。なお、以下の説明において、S1341〜S1342の処理は並行して行われるものとして記載されているが、図13(c)に示すように、順番に処理を行うことも可能である。なお、第1段階第2,3,4色データを展開する場合は、第2段階パターンフラグは使用しないので、パターンフラグDMAC922は省略しても構わない。
【0091】
パターンフラグDMAC921は、第1段階パターンフラグ格納部1402の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x00)から第1段階パターンフラグを読み込んで、データ出力部914に順次転送する(S1341)。並行して、データDMAC923は、第1段階第2,3,4色格納部1406の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x40)から第1段階第2,3,4色データを読み込んで、データ出力部924に順次転送する(S1342)。
【0092】
データ出力部924は、第1段階パターンフラグ格納部1402から取得する第1段階パターンフラグに基づいて、まず、第1段階第2,3,4色データがあるか否かを判定する(S1343)。例えば、本第1段階パターンフラグ“0”のブロックについては、当該注目ブロックの第1段階第2,3,4色データは存在しないと判定される(S1343にてNo)。そのため、データ展開部920は、当該注目ブロックについて、第1段階第2,3,4色データによる画素塗りつぶし処理は行わず、次のブロック処理に移る。それ以外の第1段階パターンフラグが読み込まれた場合は、データ展開部920は、少なくとも第1段階第2色データが存在するブロックであると判定する(S1343にてYes)。
【0093】
データ展開部920が、当該注目ブロックについて、第1段階第2,3,4色データが存在すると判定した場合(S1343にてYes)、データ出力部924は、注目ブロック内に未処理の第1段階第2,3,4色データが存在するかを判定する(S1344)。注目ブロック内に未処理の第1段階第2,3,4色データが存在すると判定した場合(S1344にてYes)、データ出力部924は、未処理の第1段階第2,3,4色データのうちの1つを処理対象にする。更に、データ出力部924は、第1段階パターンフラグに基づいて、展開後の画像データにおいて、当該処理対象にした色データで塗りつぶす画素位置を特定する(S1345)。
【0094】
データDMAC923は、1ブロック内の第1段階第2,3,4色データをデータ出力部924に順次転送してくるため、データ出力部924は、第1段階第2色データで塗りつぶす画素、第1段階第3色データで塗りつぶす画素、第1段階第4色データで塗りつぶす画素を別々に特定する。
【0095】
このS1343〜S1345の処理に関して、図14ならびに図11に基づいて、具体的に説明を行う。まず第1段階パターンフラグとして、最初にパターン“B”が読み込まれた場合、図4を参照すれば分かるように、第2色データと第3色データとが存在する配置パターンであると判定される。すなわち、注目ブロックの第1段階圧縮を行った際の配置パターンは、まず画像データ1101の左上ブロックのようなパターンであると判定される。したがって、第1段階第2,3,4色格納部1406には、第2色データと第3色データが格納されているので、データDMAC923から受信した第2色データと第3色データで、どの画素を塗りつぶすかが算出される。つまり、データ出力部924は、第1段階パターンフラグのパターン“B”に基づいて、画素01と画素10とを、データDMAC923から読み込んだ第2色データによって塗りつぶす対象の画素であると判定する。また、画素11は、同じくデータDMAC923から読み込んだ第3色データによって塗りつぶす対象の画素であると判定される。
【0096】
図13(c)のフローの説明に戻る。塗りつぶす画素位置が特定されると、予めデータ出力部924に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報、当該塗りつぶし対象画素の位置から、データ出力部924は、第1段階第2,3,4色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1346)。
【0097】
そして、データ出力部924は、データDMAC923から受信した第2,3,4色データのうち、S1345で処理対象にした色データを、算出したアドレスのメモリ領域に転送して書き込む(S1347)。S1344〜S1347の処理は、注目ブロックの中で、第1段階第2,3,4色データを書き出す画素数分繰り返される。
【0098】
このようにして1ブロック分の処理が終わると、S1344において、データ出力部924は、塗りつぶす画素がなくなったと判定し(S1344にてNo)、注目ブロックに対する展開処理を終了する。以上の処理によって、図14(c)の圧縮データの場合、メモリ106上に展開された画像データにおいて、第1段階第2,3,4色データが書き込まれる画素は、展開後の各ブロックにおいて図15(c)の斜線部で表わされる。言い換えれば、図15(c)の斜線部で表される画素の画素値が、データ展開部920によって展開される。
【0099】
[アクセス数における対比]
本発明の展開部211の特徴として、データ展開部900、910、920のように並列に配置して、それぞれを独立して動作させることができ、メモリアクセスを効率化できる点にある。
【0100】
2段階圧縮データの展開処理に必要なメモリアクセス量について、展開部211を上記の本発明に基づいた構成にした場合(図9)と、特願2009−221444で述べた図19のような構成で圧縮時と逆順で段階的に展開するように構成した場合(以下では従来構成と呼ぶ)とを、それぞれ図16(a)、(b)に示す。また、従来構成としての処理フローを図20に示す。図16(a)は、画像データ1101が2段階圧縮されたデータ(図14(b))を、本発明の展開部(図9)によってラスタデータに展開する時のメモリアクセス量を示す。また、図16(b)は、画像データ1101が2段階圧縮されたデータ(図14(b))を、従来構成の展開部(図19)によってラスタデータに展開する時のメモリアクセス量を示す。図16(a)に示す本発明と図16(b)に示す従来構成とのアクセス種の差分として、本発明においては「第1段階第1色データ読み込み(図16(b)の1613に対応)」の処理が不要であるため、その項目が無くなっている。
【0101】
まず、本発明の展開部211は、第2段階第1色データ、第2段階第2,3,4色データ、第1段階第2,3,4色データをそれぞれデータDMAC903、913、923にて読み込む。それぞれの読み込むトータルのデータ量は、図14(c)の圧縮データ例の場合、それぞれ3byte(1603)、3byte(1604)、21byte(1602)である。また、第1段階パターンフラグは、パターンフラグDMAC901、911、921それぞれによって読み込まれ、第2段階パターンフラグは、パターンフラグDMAC902、912によって読み込まれる。それぞれの読み込むデータ量は、図14(c)の圧縮データ例の場合、それぞれ2byteが3モジュール分(1600)、1byteが2モジュール分(1601)である。また、出力データの書き込みは、データ出力部904、914、924のトータルで、画像データ1101のラスタデータ量分となるため、3byteの16画素分(1605)となる。総計のメモリアクセス量(読み込みと書き込みのデータ量)は、83byteとなる。
【0102】
一方、従来構成の展開部1900の場合、まず第2段階圧縮データを第1段階圧縮データに展開する最初の段階と、その後、当該第1段階圧縮データを更にラスタデータに展開する次の段階とに分けて展開することになる。よって、展開時の最初の段階では、第2段階パターンフラグと、第2段階第1色データと、第2段階第2,3,4色データとを読み込む。図14(c)の圧縮データ例の場合、それぞれのメモリアクセス量は、1byte(1611)、3byte(1614)、3byte(1615)となる。また、第2段階圧縮データを1段階展開した後の第1段階圧縮データは、図11(c)のようになる。そのため、この第1段階圧縮データをラスタデータに展開する次の展開段階では、第1段階パターンフラグと、第1段階第1色データと、第1段階第2,3,4色データとを読み込む。図11(c)の圧縮データ例の場合、それぞれのメモリアクセス量は、2byte(1610)、3byteの4画素分(1612)、21byte(1613)となる。
【0103】
また、出力データの書き込みは、第2段階圧縮データを展開した結果を第1色格納部1103に書き込む処理と、第1段階圧縮データを展開した結果のラスタデータを書き込む処理の2段階で行われ、それぞれ画像データ1401、画像データ1101のラスタデータ量分、データ出力されるのに等しい。そのため、それぞれのメモリアクセス量は、3byteの4画素分と、3byteの16画素分となる(1616)。よって、総計のメモリアクセス量(読み込みと書き込みのデータ量)は、102byteとなる。なお、従来構成においては、本発明のようなメモリにアクセスするそれぞれ部位ごとの役割分担は特定せず、総じて展開部1900が行っているものとする。
【0104】
図9の展開部は、複数のデータ展開部で同一のパターンフラグを読み込んで使用する。したがって、図19の展開部よりもパターンフラグに関するメモリアクセス量が増加している(1600、1601、1610、1611)。一方で、本実施形態では、2段階圧縮データを直接ラスタデータに展開してメモリに書き戻す。そのため、第2段階の圧縮データから第1段階への圧縮データへ展開して出力する時のメモリへのデータ書き戻しと、第1段階への圧縮データの読み込みが一部不要になる(1612、1605、1616)。パターンフラグのデータ量と比較して、画素データのデータ量は大きいため、図9の本実施形態によるトータルのメモリアクセス量は、図19のように段階的に展開する場合のメモリアクセス量よりも20%削減されることがわかる。
【0105】
また、第2段階圧縮データの第1段階圧縮データへの展開用と、第1段階圧縮データのラスタデータへの展開用とで、図19の展開部を複数用意し、その間に中間バッファを設けるように構成すれば、システムメモリへのメモリアクセス回数を減らせる。しかしながら、このような構成にすると回路規模が大きくなってしまう。一方で、図9の本実施形態によるデータ展開部900、910、920は、2段階圧縮データを直接ラスタ画像に展開できるため、このような中間バッファは必要ない。
【0106】
さらに、3段階以上の圧縮データを扱う場合、図19に示す展開部1900を使用すると、データ展開の各段階で展開部を必要とするため、ラスタ画像まで効率良く展開するためには、更に多くの展開部と中間バッファを必要とする。例えば3段階圧縮されたデータを展開する場合、図17(a)のように、多くの展開部(1+4+16個)と、その間の中間バッファ(4+16個)とを必要とする。一方、本発明では、図9のデータ展開部900、910、920に対して、図17(b)のようにデータ展開部を1つ追加すれば良い。
【0107】
より詳細には、図18のように、各データ圧縮部を3段階圧縮データの展開のために、3段階におけるパターンフラグを読み込めるように変更を行う。そして、データ出力部における内部のアルゴリズムは、パターンフラグによる塗りつぶし画素位置の判定を1段階分増やせば良い。このような変更を行い、第3段階第1色データ、第3段階第2,3,4色データ、第2段階第2,3,4色データ、第1段階第2,3,4色データを、それぞれモジュール(データ展開部)1801、1802、1803、1804で処理する。これによって、第3段階圧縮データの展開への拡張が中間バッファの追加を抑えながら可能となる。
【0108】
つまり、N段階の圧縮処理を行った圧縮画像データを展開する場合には、N+1個のデータ展開部を備えればよい。この多重化した構成により、N回目の圧縮処理によって得られた代表色を1〜N回目の符号化によって得られたパターンフラグを用いて展開するための代表色復号手段と、1〜M回目(Mは1〜Nのいずれかの整数)の圧縮処理それぞれによって得られた補間色を用いて展開するためのN個の補間色復号手段を実現している。
【0109】
また、本発明の展開部においては、画像によっては、一部のデータ展開部に処理が集中する場合がある。このような状況に対し、各データ展開部を同一構成にすれば、いずれのデータ展開部においても使用可能なデータ展開部として機能させることが可能になり、負荷分散するように構成しても構わない。
【0110】
[第二実施形態]
第一実施形態においては、各ブロックを圧縮したデータを出力する場合、パターンフラグに加えて、必ず第1色データが出力され、メモリに書き出される。本発明で記載している圧縮形態においては、図4のパターンフラグの定義に加え、リピートフラグというパターンフラグ“F”を定義して使用することも可能である。これは、ブロック圧縮時に1回前に処理を行ったブロックと同一の色の配置(配置パターン)のブロックに対しては、パターンフラグとしてリピートフラグ“F”を出力するが、第1色データおよび第2,3,4色データはメモリへ出力しないようにする。
【0111】
これによって、圧縮後のメモリ出力するデータ量をさらに削減することができる。なお、ここでの1回前のブロックとは、例えばラスタ順でブロック処理している場合、着目ブロックに隣接した処理済みのブロックとなる。このとき、処理の順番が基準となるため、例えば着目ブロックの上に位置するなど着目ブロックに対していずれの位置にあっても構わない。また、パターンフラグにリピートフラグを追加する場合、本実施形態においてパターンフラグを4ビットで表しているが、通常のパターンフラグ15種に加え、リピートフラグ1種を加えても、パターンフラグのデータ量(4ビット)に変動は生じない。
【0112】
第二実施形態では、このリピートフラグが混在した圧縮データの展開フローについて説明を行う。また、第二実施形態では、圧縮時に、最終圧縮段階においてのみリピートフラグを付加され、且つ、主走査ラインの先頭ブロックにはリピートフラグは付加しないものとする。すなわち、2段階で圧縮するように構成した場合、図21の画像データ2100を例とすると、第1段階圧縮した後の第1段階圧縮ブロックである画像データ2101にはリピートフラグは設定されない。一方、これを第2段階圧縮(最終段階の圧縮)する際に左隣のブロックと同じ色配置のブロックがあれば、当該ブロックに対するパターンフラグにリピートフラグ“F”が設定される。例えば、図21の第2段階圧縮ブロック2102で、“R”と記載されたブロックがリピートフラグ“F”が設定されたブロックであったとする。すなわち、リピートフラグ“F”により、ブロックS2_04はブロックS2_00の繰り返しであることを意味し、また、ブロックS2_44はブロックS2_40の繰り返しであることを意味している。ここで、第2段階圧縮ブロックのブロックS2_44は、第1段階圧縮時に生成された第1色を元にリピートフラグを付与すべきブロックであるか判定される。すなわち、ブロックS2_40とブロックS2_44は、図21の画像データ2100に示されるように、元の画像パターンが異なるにもかかわらず、第1段階圧縮後の第1色で構成される画像データ2101におけるブロックの色配置が同じため、ブロックS2_44にリピートフラグが設定される。この第2段階圧縮ブロック化された時のメモリ上の圧縮データの状態は図22(a)、(b)のように表される。
【0113】
第1段階圧縮時の処理対象となる画像データ2100において、各ブロックの左上画素の画素値を第1色データとすると、第1段階第2,3,4色データは画素23,27,43,45,47,63,65,67の画素値が第1段階第2,3,4色格納部2205に格納される。また、第1段階圧縮時のパターンフラグは第1段階パターンフラグ格納部2201に格納される。また、第2段階圧縮時の処理対象となる画像データ2101において、各ブロックの左上画素の画素値を第1色とするが、左上ブロックと右上ブロックは同じ色配置になっており、左下ブロックと右下ブロックも同じ色配置となっている。したがって、第2段階第1色データは、画素00,40の画素値のみが第2段階第1色格納部2203に格納され、同一色を有しリピートフラグが付与されるブロックの画素04,44の画素値は格納されない。
【0114】
第2段階第2,3,4色データは、画素22の画素値は第2段階第2,3,4色格納部2204に格納されるが、リピートフラグが付加されるブロックの画素26の画素値はメモリ格納されない。また、第2段階圧縮時のパターンフラグは第2段階パターンフラグ格納部2202に格納され、このとき同じ色配置と判定されたブロックについてはリピートフラグ“F”が付与される。
【0115】
このようにして多段階圧縮された圧縮データを、図9の展開部211で展開する時の動作について説明する。なお、フローの説明は、既に説明済みの図13を元に、差分だけを詳細に説明する。ここで、各データ展開部900,910,920は、リピートフラグ処理のために、前に処理されたブロックの画素値を保持するためのバッファを有するものとする。
【0116】
まず、第2段階第1色を展開するデータ展開部900は、S1304の塗りつぶし画素の特定時に、第2段階パターンフラグがリピートフラグか否かを判定し、リピートフラグでなかった場合は、第一実施形態で説明した通常処理を行う。リピートフラグだった場合、データ展開部900は以下のように動作する。
【0117】
第2段階第1色の展開を行うデータ展開部900は、リピートフラグを受信すると、データDMAC903から受信したデータではなく、バッファに格納された前ブロックの第1色データをS1307の転送データとして使用する。第2段階第2,3,4色の展開を行うデータ展開部910は、リピートフラグを受信すると、データDMAC913から受信したデータではなく、バッファに格納された前ブロックの第2,3,4色データをS1328の転送データとして使用する。一方、第1段階第2,3,4色の展開を行うデータ展開部920は、第2段階リピートフラグを読み込まず、それに依存した処理を行わないので、第一実施形態と同じ処理を行う。
【0118】
以上の処理によって、リピートフラグが混在する圧縮データに対しても、図9の展開部211は圧縮データの展開処理を行うことができる。これにより、第一実施形態と同様の効果を得ることができる。
【0119】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、画像を所定のブロック単位に圧縮する技術とブロック単位に圧縮された画像の画像処理や復号化処理を行う技術に関する。
【背景技術】
【0002】
従来、高解像度のカラー画像への需要は高く、それらの高画質化への要望へ応えるべくデジタル複合機では1200dpiやそれを超える解像度の画像を扱うことが多くなってきている。画像の高解像度化が進むにつれて、画像処理を必要とする画素数が飛躍的に増え、その処理負荷が増大しているという課題がある。デジタル複合機に限らず、デジタルカメラやファクシミリ装置などの画像処理装置では、メモリ/ハードディスク量の節約やそれらへの書き込み時間を短縮するために、カラー画像データの圧縮を行い、低コスト化や高速化を実現している。
【0003】
カラー静止画像の圧縮方式には、離散コサイン変換を利用したJPEG方式やWavelet変換を利用した方式が多く使われている。この種の符号化方式は、一般的に画像を所定のブロック(例えば8×8や16×16画素単位)に符号化し、離散コサイン変換、量子化及びエントロピー符号化を行うことで高い圧縮効率を達成している。この種の符号化方式は、可変長符号化方式であるので、符号化対象の画像毎に符号量が変化するものである。これらの画像圧縮を用いた場合、その画素データを参照し、その画素データを変換するには、圧縮データの復号処理が必要になる。つまり、圧縮データのままで画像処理を行うことはできず、必ず復号処理が必要になり、高解像度データ全ての画素に対して画素単位に処理を行う必要が出てしまい、処理時間の増大を招く。
【0004】
圧縮処理を行う技術としては、画素データとその連続数を記憶する公知のランレングス圧縮方式やブロック単位でエッジを検出し、そのエッジの持つ2色を記憶することで圧縮する技術が開示されている(例えば、特許文献1、特許文献2)。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2008−271046号公報
【特許文献2】特開平10−257488号公報
【発明の概要】
【発明が解決しようとする課題】
【0006】
特許文献1においては、ブロック内を2色化し、その2色の配置に関する形状情報と2色の色情報を記憶していた。これに対し、さらなる高画質化、処理高速化を図るため、本願出願人による先願である特願2009−221444では、2以上の色数を持つブロックの画質を落とさずに高圧縮化を実現している。特願2009−221444では、まず、画像データをブロック(例えば2×2画素サイズのブロック)毎に分割する。そして、ブロック内の各画素の色データを比較することにより、注目ブロックに含まれる色データの配置パターン情報と、注目ブロックに含まれる色数分の色データ情報とを出力する。そして、出力された色データ情報のうち、各ブロックの予め決められた特定位置の画素に対応する第1の色データ情報と、その他の色データ情報(2×2画素ブロックの場合は第2〜4色の色データ情報)とに分けて、それぞれ異なるメモリ領域にまとめて格納する。したがって、メモリ領域には、配置パターン情報と、第1色の色データ情報と、その他の色データ情報とがそれぞれまとめて格納されることになる。これにより、特定位置の間引き画像データ(すなわち第1色の色データ情報)を連続メモリ領域に置くことになるので、第1色の色データ情報を読み出すだけで、複雑な復号化処理を必要とせずに、半分の解像度の低解像度画像を扱える。
【0007】
一方で、特願2009−221444では、該圧縮技術で圧縮されたデータを展開処理する方法についても述べられている。例えば、図19に示すように、まず注目ブロックの配置パターン情報と第1の色データ情報をメモリから読み込み、更に、配置パターン情報に基づいて、必要な色数分だけその他の色データ情報(第2〜4色の色データ情報)を読込む。そして、配置パターン情報にしたがって、第1の色データ情報とその他の色データ情報とをメモリ上に配置することで、データの展開(復号化)を行う。
【0008】
また、本出願人は、特願2009−221444で提案している圧縮技術を複数回繰り返し適用することにより、多段階圧縮することも考えている。多段階圧縮の手法については、後述する実施形態で詳述するが、簡単に説明すると次のようになる。すなわち、元の画像データに対して上述した圧縮処理(1段階目の圧縮処理)を適用することにより、1段階目の配置パターン情報と、第1色の色データ情報と、その他の色データ情報とに変換する。そして、更に、1段階目の圧縮処理で得られた第1色の色データ情報を次の処理対象画像として、2段階目の圧縮処理を行う。このような多段階圧縮を行えば、1段階目の圧縮処理で得た第1色の色データ情報が、2段階目の圧縮処理による2段階目の配置パターン情報と2段階目の第1色の色データ情報と2段階目のその他の色データ情報に置き換えられることになる。例えば、ブロックのサイズを2×2画素とした場合、その他の色データ情報は第2〜4色の色データ情報で表わされるため、上述した圧縮処理を2段階繰り返し行うと、図14(b)に示されるような圧縮データが得られる。
【0009】
一方、1つの展開部を用いて、上述したように多段階圧縮されたデータを圧縮時と逆順で段階的に展開するように構成した場合、以下のような課題が生じると考えられる。第1に、多段階展開時、メモリアクセス回数が多くなることでメモリ帯域が圧迫される。例えば、16ブロックの処理対象画像(2×2画素サイズのブロックが4×4個存在する画像)に対して第1段階の圧縮処理後の第1色の色データ情報は、4ブロックの画像(2×2画素サイズのブロックが2×2個存在する画像)で構成されることになる。さらに、この4ブロックの画像に対して第2段階の圧縮処理を行った後の第1色の色データ情報は、1ブロックの画像になる。この1ブロックに圧縮された圧縮データを2段階展開して元の画像に展開する場合、まず、第2段階圧縮データの展開処理(2段階目の配置パターン情報に従って、2段階目の第1色の色データ情報と第2〜4色の色データ情報とを展開する処理)で、少なくとも1ブロックの色データ読み出しと4ブロックの色データ書き込みを行う。さらに、そのデータを処理対象として第1段階圧縮データの展開処理を行った場合、少なくとも4ブロックの色データ読み出しと16ブロックの色データ書き込みを行う。したがって、メモリアクセス回数が大きくなり、メモリ帯域を圧迫する。
【0010】
また、多段階展開のスループットを上げるために、上述した展開部を複数設けてパイプライン化して、段階的に展開するように構成した場合、第1と第2の展開部の間に配置する中間バッファや、展開部の数が多くなることで、回路規模が増大する。例えば、第2段階圧縮データの展開を行う展開部での展開によって、1ブロックの情報は4ブロック分に増加する。したがって、第2段階圧縮データの展開部でのスループットと同じスループットで、第1段階圧縮データの展開部が展開処理するためには、第1段階圧縮データの展開を行う4つの展開部が必要となり、4ブロック分の中間バッファも必要となる。そのため、全体として展開部は5つ必要となり、中間バッファも含め、回路規模は増加する。さらに、3段階以上圧縮されたデータの展開を行う場合、必要な展開部の数は指数関数的に増加し、回路規模が増加するため、実装が難しくなるといった課題がある。
【0011】
つまり、多段階圧縮された圧縮データを、1つの展開部で段階的に展開しようとすると、メインメモリへのアクセス回数が多くなり、メモリ帯域を圧迫する。また、複数の展開部をパイプライン化して段階的に展開を行う場合、中間バッファ等、回路規模が増加してしまい、実装が困難となる。
【課題を解決するための手段】
【0012】
上記課題を解決するために本発明は以下の構成を有する。すなわち、画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号する画像処理装置であって、前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段とを有し、前記代表色復号手段と、前記N個の補間色復号手段は、それぞれ独立して動作することを特徴とする。
【発明の効果】
【0013】
多段階圧縮データの展開時にメモリアクセス回数が少なく、かつ回路規模を増加させることなく高速化のための実装が容易な復号化方法を提供する。
【図面の簡単な説明】
【0014】
【図1】本発明に係るMFPシステムの概要示した図。
【図2】本発明に係るコントローラの概要を示した図。
【図3】画像をブロック分割した際にそのブロックのパターンを列挙した図。
【図4】ブロックのパターンとその識別子を列挙した図。
【図5】第一実施形態に係る画像圧縮のフローを示した図。
【図6】第一実施形態に係る1段階圧縮処理に対する入力と出力の関係を示した図。
【図7】第一実施形態に係る1段階圧縮データのメモリ空間上でのレイアウトを示す図。
【図8】第一実施形態に係る2段階圧縮データのメモリ空間上でのレイアウトを示す図。
【図9】本発明に係る展開部211の詳細なブロック図を示す図。
【図10】本発明に係る1段階圧縮データの展開処理フローを示す図。
【図11】1段階圧縮データのメモリ空間上でのレイアウトの一例を示す図。
【図12】1段階圧縮データの展開時に出力される展開画素位置を示す図。
【図13】本発明に係る2段階圧縮データの展開処理フローを示す図。
【図14】2段階圧縮データのメモリ空間上でのレイアウトの一例を示す図。
【図15】1段階圧縮データの展開時に出力される展開画素位置を示す図。
【図16】従来構成と本発明との展開部によるメモリアクセス量の比較を示す図。
【図17】従来構成と本発明との展開部を並列化して行う場合のブロック図。
【図18】本発明に係る展開部を並列化して行う場合のブロック図。
【図19】従来構成の展開部の詳細なブロック図。
【図20】従来構成の展開部に係る1段階圧縮データの展開処理フローを示す図。
【図21】第二実施形態に係るリピートフラグの画像例を示す図。
【図22】第二実施形態に係るリピートフラグを適用した場合の2段階圧縮データのメモリ空間上でのレイアウトの一例を示した図。
【発明を実施するための形態】
【0015】
以下、本発明を実施するための形態について図面を用いて説明する。なお、以下に示す構成は本発明を実現するための一例であり、構成はこれに限定するものではない。本実施形態では、画像処理装置として、スキャン、プリント、コピーなどの複数の機能を有するデジタル複合機(MFP:MultiFunction Peripheral)を例に説明する。
【0016】
[第一実施形態]
図1に示すように、コントローラ101は、画像入力機器であるスキャナ102や画像出力機器であるプリンタ103と接続される。また、コントローラ101はLANや公衆回線(WAN)などのネットワーク104と接続することで、画像情報やデバイス情報の入出力、PDLデータのイメージ展開を行う。CPU105は、後述するHDD記憶部107に格納されたプログラムを実行することにより、MFP全体を制御するプロセッサである。メモリ106は、CPU105が動作するためのシステムワークメモリであり、画像データを一時記憶するための画像メモリでもある。HDD記憶部107は、ハードディスクドライブであり、システムソフトウェアやプログラム、画像データなどを格納する。
【0017】
次に、図2に示すコントローラ101の構成例を参照してコントローラ101の各部の詳細な処理を説明する。まず、スキャナ102によってスキャンされた画像データを読み込む場合を説明する。スキャナ102で読み取られたRGB(レッド、グリーン、ブルー)3色の画像データ(ラスタ画像)をスキャナ用画像処理部201が受け取る。そして、その画像データに対してシェーディング処理やフィルタ処理等の画像処理を行い、圧縮部202で圧縮(符号化)処理を行う。そして、圧縮部202で圧縮されたデータ(圧縮データ)は、画像メモリバスを介してメモリ106に格納される。
【0018】
次に、スキャンされた画像データをプリントする場合、メモリ106に格納された圧縮データを、画像メモリバスを介して展開部211へ転送する。展開部211は、圧縮部202で圧縮されたデータを展開(復号化)し、色処理部212へ転送する。そして、色処理部212がCMYK(シアン、マゼンタ、イエロー、ブラック)色空間へ変換する。その後、更に色処理部212がCMYKの各値に対して濃度調整やプリンタガンマ補正などの色処理を行った後、該色処理後のデータを、圧縮部202に転送して改めて圧縮処理を行い、画像メモリバスを介してメモリ106に再度格納する。その後、プリント用の画像処理を行うために、メモリ106に格納されているラスタ画像データを、画像メモリバスを介して展開部211、プリント用画像処理部221の順に転送し、展開処理とプリント用画像処理を行う。プリント用画像処理部221は、入力されたラスタのCMYK画像データを、ディザ法や誤差拡散法による面積階調処理を行い、プリンタ103へ出力する。ここでの面積階調処理については、上記に述べた方法に限定するものではなく、本発明を適用可能であれば他の手法による面積階調処理を適用しても構わない。
【0019】
また、スキャンされた画像データをネットワークへ送信する場合、メモリ106に格納されている圧縮データを、画像メモリバスを介して展開部211に転送する。そして展開されたラスタデータを、色処理部212へ転送する。色処理部212は、ディスプレイガンマ調整や用紙地色調整等を行った後、YCbCr(輝度、BLUE色差、RED色差)色空間へ変換する。そして、色処理部212で処理されたデーを、圧縮部202に転送して改めて圧縮し、再度画像メモリバスを介してメモリ106に格納する。その後、送信用の画像処理を行うために、画像メモリバスを介してメモリ106に格納されている圧縮データを展開部211へ転送する。そして、展開部211が圧縮データをラスタ画像データに展開する。その後、ラスタのYCbCr画像データに対して送信処理部233がカラー画像送信であればJPEG圧縮処理を行い、モノクロの2値画像送信であればYデータに対して2値化を行ってJBIG圧縮等を行い、ネットワーク104へ出力する。
【0020】
また、スキャンされた画像データを保存する場合、メモリ106に格納されている圧縮データを、画像メモリバスを介してディスクスプール高圧縮/展開部242へ転送する。ディスクスプール高圧縮/展開部242では、HDDへの書き込みスピードがメモリへの書き込みスピードに対して遅いため、更に高圧縮のJPEG圧縮を施す。その後、ディスクアクセスコントローラ243を介してHDD記憶部107へ圧縮データを保存する。また、HDD記憶部107に保存されている圧縮データをメモリ106に再度転送する場合には、上述した処理を逆に行えば良い。
【0021】
ここで、図1に示すネットワーク104を介して接続された他の装置から送られてきたPDLデータをメモリ106へ書き込む場合を説明する。図2にはPDL解釈部が図示されていないが、PDL解釈部として機能するCPU105がPDLデータを解釈し、その結果のディスプレイリストをメモリ106に出力する。その後、メモリ106に格納されているディスプレイリストをレンダリング部253がラスタのRGB画像データとしてレンダリングを行い、圧縮部202が当該レンダリングされたRGB画像データ(ラスタ画像データ)に対して画像圧縮処理を行う。そして、画像圧縮処理された後の圧縮データを、画像メモリバスを介してメモリ106に格納する。尚、PDLデータをプリント、ネットワークへ送信、保存する処理は、スキャンされた画像データの場合と同様の処理を行うことで実現可能である。
【0022】
[圧縮処理]
次に、ラスタ画像データの符号化による圧縮処理を詳細に説明する。なお、本実施形態において、すべての圧縮処理は、圧縮部202にて行われるものとするが、この構成に限るものではない。例えば、図2のようにすべての圧縮処理を圧縮部202で行うのではなく、複数の圧縮処理部を設けて、画像パスごとに圧縮部を分散して使用するように構成しても構わない。本実施形態では、まずページ単位のラスタ画像データを、2×2画素単位のブロック毎に分割し、分割して抽出されたブロックを単位にデータの圧縮処理を行う。
【0023】
ここで本実施形態における圧縮処理を説明する前に、2×2画素からなるブロックの中に占める色数に応じてその組み合わせの場合の数を考える。ここで、ブロックに含まれる画素数が4画素なので、各ブロック内に占める色数は最大4色になり、ブロック内では高々1色〜4色の組み合わせしか存在しない。図3は、色数が1色〜4色のそれぞれの場合に、生じうるブロック内の色の配置パターンを示す図である。
【0024】
まず、ブロック内の色数が1色の場合、4画素がすべて同色で構成されていることになるので、その組み合わせは1通りである。
【0025】
次に、ブロック内の色数が2色の場合を考える(各色を第1色と第2色と呼ぶこととする)。ブロック内の予め決められた所定の位置の画素(本実施形態ではブロック内の左上の画素とする)の色データを第1色として考えると、左上画素以外の残りの3画素へ第1色もしくは第2色が入るので、4画素同色の場合を除くと、7通りの組み合わせが考えられる。
【0026】
次に、ブロック内の色数が3色(第1色〜第3色)の場合を考える。3色が4画素内にレイアウトされる場合の組み合わせは、3色のうち1色だけ2度使われる場合の数と言い換えることが可能であり、4画素の座標のうち、2画素が同じ色になる場合の数を求めれば良い。つまり、3色の場合の組み合わせの数は、4つの座標から2つの座標を取る組み合わせとなり、全部で6通りとなる。また、ブロック内の色数が4色(第1色〜第4色)の場合の組み合わせは1通りである。
【0027】
以上により、2×2画素からなるブロック内の色数が1色〜4色の全ての場合の組み合わせ数を合計すると、全部で15通りの配置パターンが考えられる。また、これら全てのパターンを識別するためにフラグ(識別子)を付与することを考えると、フラグのデータ量としては4ビット必要となる。この15通りのパターンとフラグとの関係を図4に示すように定義し、以下、この配置情報を示すフラグを「パターンフラグ」と呼ぶ。また、第1色をそのブロックにおける「代表色」、第2色、第3色、第4色(すなわち、代表色以外の色)をまとめて「補間色」とも呼ぶ。なお、ブロックを構成する画素数は2×2画素に限定されるものではなく、このサイズよりも大きくても構わない。なお、その場合には配置パターンの組み合わせ数が増えるので、4ビットで表現していたパターンフラグのビット数も増加する。
【0028】
[圧縮処理フロー]
上述のように、2×2画素のブロック内において取り得る組み合わせ(色の配置パターン)を踏まえ、圧縮部202で行われる処理を、圧縮部202の圧縮処理フロー(図5)を用いて説明する。本実施形態における入力としては、例えばRGBそれぞれ8ビットの256階調とし、またデータとしては8ビットデータの点順次で1画素当たり24ビットの色値(画素値)を有する画像データとして説明する。本実施形態において、圧縮部202は、図2で示したようにコントローラ101内に存在するものであり、電子回路等のハードウェア(ASICなど)で構成されるものとする。しかし、別の構成として、CPUがプログラムを実行することによりその一部または全部の機能を実現するようにしても構わない。
【0029】
まず、本処理が開始され、2×2画素サイズのブロック毎に分割された画像が、前段のスキャナ用画像処理部201もしくはレンダリング部253から入力される(S501)。そして、圧縮部202は、2×2画素ブロック内の色の減色処理とパターンフラグの算出処理とを行う(S502)。S502における減色処理は、2×2画素の中に色が近い画素値を有する複数の画素が存在した場合に、それらを同一の色(画素値)に変更することで、本圧縮処理の圧縮効率を高めるために行う。ここでの減色処理については、特に限定せず、本発明が適用可能であれば、いずれの方法を用いても構わない。そして、減色処理後の2×2画素からなるブロックの色データを比較することにより、そのブロックにおける減色後の色数と色の配置パターンとを示すパターンフラグが算出される。
【0030】
次に、S502で算出されたパターンフラグに基づいて、圧縮部202は、ブロック内の色数と配置パターンを判定して、各色の色データを抽出する(S503)。図4に示したように、4ビットのパターンフラグに対して、ブロック内を構成する色数と、各色の配置パターンが対応づけられているので、パターンフラグから各ブロックにおける色数と各色の色データを特定することができる。
【0031】
ここで、本実施形態の図4では、全てのパターンにおいて、左上の画素の色(画素値)が第1色(1番目の色データ)となるように定義している。パターンフラグが“0”の場合は、色数が1なので、左上の画素の色(画素値)を第1色として抽出する。また、パターンフラグが1〜7の場合は、色数が2なので、左上の画素の色(画素値)を第1色として抽出し、更に、各パターンフラグに応じて定義されている第2色(2番目の色データ)が存在する位置の画素の色(画素値)を抽出する。例えば、パターンフラグが“1”の場合は、ブロックにおける右上の画素の色を第2色(2番目の色データ)として抽出する。
【0032】
また、パターンフラグが8〜Dの場合は、色数が3であるので、ブロックにおける左上の画素の色(画素値)を第1色として抽出する。更に各パターンフラグに応じて定義されている第2色(2番目の色データ)及び第3色(3番目の色データ)が存在する位置の画素の色(画素値)を抽出する。例えば、パターンフラグが“8”の場合は、ブロックにおける左上の画素の色を第1色、右上の画素の色(画素値)を第2色、右下の画素の色(画素値)を第3色として抽出する。
【0033】
また、パターンフラグが“E”の場合は、色数が4であるので、ブロックにおける左上の画素の色を第1色、右上の画素の色を第2色、左下の画素の色を第3色、右下の画素の色を第4色として抽出する。
【0034】
すなわち、パターンフラグに基づいて、圧縮部202は、ブロック内を構成する色数を特定し(S504、S506、S508)、当該特定した色数それぞれに応じて、パターンフラグと色データとを出力する(S505、S507、S509、S510)。そして、本処理フローを終了する。
【0035】
この出力されるデータを、図6を用いて説明する。ここで、入力データは、2×2画素それぞれが24ビット(RGB各色8ビット)の画素値を有し、1ブロックあたり96ビットのデータ量となる。これに対し、図6に示すように、例えばパターンフラグが“0”(すなわちブロックの4画素が1色で構成されている)の場合(図5のS504でYES)、2色目以降の色データは存在しない。従って、パターンフラグの4ビットと1色目の画素値(24ビット分の色データ)とが出力される(図5のS505)。すなわち、パターンフラグが“0”のブロックは、28ビットのデータ量のデータを出力する。また、パターンフラグが1〜7(即ち4画素が2色で構成されている)の場合(図5のS506でYES)、2色目が存在する画素の座標をパターンフラグから求め、パターンフラグの4ビットと2色分の画素値(48ビット分の色データ)とを出力する(図5のS507)。すなわち、パターンフラグが1〜7のブロックは、52ビットのデータ量のデータを出力する。
【0036】
また、パターンフラグが8〜D(即ち3色)の場合(図5のS508でYES)、1色目と2色目と3色目とが存在する画素の位置をパターンフラグに基づいて求め、パターンフラグの4ビットと3色分の画素値(72ビット分の色データ)とが出力される(図5のS509)。すなわち、パターンフラグが8〜Dのブロックは、76ビットのデータ量のデータを出力する。
【0037】
そして、パターンフラグが“E”(即ち4色)の場合(図5のS508でNO)、パターンフラグの4ビットと4色分の画素値(96ビット分の色データ)とが出力される(図5のS510)。すなわち、パターンフラグが“E”のブロックは、100ビットのデータ量のデータを出力する。
【0038】
言い換えると、各ブロックから出力される色データは、ブロック内の位置順(左上から右上、左下、右下の順に1、2、3、4とする)に走査した場合に、それまでに出現していなかった色データが現れるたびに順に出力していくことに相当する。
【0039】
このように、2×2画素からなるブロックの4色分の色データ(96ビット)を、4ビットのパターンフラグと、当該ブロックに存在する色数分の画素値のデータ(色データ)として出力する。その結果、簡単な処理により出力データ量を削減することが可能になる。特に、2×2画素からなるブロック内で同色の画素が存在するブロック(即ち各ブロック内の色数が少ないブロック)が多いラスタ画像の場合は、出力されるデータ量の圧縮率も大きくなる。また、パターンフラグを参照することで、そのブロック内の色数およびその配置パターンを特定することが可能になる。このような処理を画像ブロック全てに対して行うことで、画像全面をデータ圧縮することが可能になる。
【0040】
[格納方式]
以上に述べた方法による圧縮部202で求めて出力されたパターンフラグと色データとは、メモリ106に書き込まれる(メモリ格納処理)。このとき、圧縮部202は、メモリ106におけるパターンフラグと、第1色のデータと、第2色、第3色、第4色のデータとの書き込み位置を変更する。圧縮部202は、パターンフラグ書き込みのためのメモリ先頭アドレスと、第1色データの書き込みのためのメモリ先頭アドレスと、第2〜4色データの書き込みのためのメモリ先頭アドレスとの、3つのアドレスを指定する。すなわち、各ブロックのパターンフラグはメモリ106上のパターンフラグ格納部(パターンフラグを格納するためのメモリ領域)にまとめて格納されることになる。また、各ブロックの第1色(1色目)の色データは、メモリ106上の第1色格納部(各ブロックの1色目の色データを格納するためのメモリ領域)にまとめて格納されることになる。更に、各ブロックの第2〜4色目の色データは、メモリ106上の第2,3,4色格納部(各ブロックの2〜4色目の色データを格納するためのメモリ領域)にまとめて格納されることになる。
【0041】
図7は、圧縮部202によって圧縮された画像データのメモリ空間への書き込み例を示す図である。尚、サイズがM×N画素のRGB各色8ビットの画像を圧縮部へ2×2画素のブロックごとに入力する場合、パターンフラグのデータが格納されるパターンフラグ格納部のデータサイズは、(M×N/2/2×4/8)バイトとなる。また、第1色のデータが格納される第1色格納部のデータサイズは、(M×N/2/2×24/8)バイトとなる。また、第2色、第3色、第4色のデータが格納される第2,3,4色格納部のデータサイズは、処理対象となるラスタ画像に応じて異なる。これは、第2,3,4色が存在するブロックの数が画像によって異なるためである。つまり、各ブロックに含まれる色数はそのパターンにより異なるため、ブロック数に対して、パターンフラグおよび第1色は必ず1つに特定されるが、第2,3,4色の数は変動する。よって、圧縮部202で圧縮処理された出力データサイズの大小は、メモリ106上の第2,3,4色格納部に格納されるデータ量に依存する。また、第1色書き込み先頭アドレス以降のメモリ領域(第1色格納部、及び第2,3,4色格納部)に関しては、画素の色データがそのままのビット数で格納されている。従って、例えばLUT(ルックアップテーブル)を用いた色変換やガンマ補正処理、行列演算を用いた色空間変換処理等の1画素入力と1画素出力で完結する色処理を行う場合、圧縮データをデコード(復号化)して元のラスタ画像に戻さなくても、圧縮データ中の該当する色データを処理することが可能である。つまり、図7のようにメモリの第1色格納部と第2〜4色格納部に格納されているデータに対して、該当する画素値(色データ)の部分を直接処理することが可能である。
【0042】
また、図7に示すように、画像データ700を、パターンフラグと第1色とその他の色(第2,3,4色)とに分け、離散的にメモリ106上の記憶領域へ格納している。従って、第1色格納部には、ラスタ画像を2×2画素からなるブロックに分割して、各ブロックの左上の画素をサンプリングした場合の画素値(色データ)がメモリ上に連続して存在することになる。
【0043】
[多段階圧縮]
次に、上述した圧縮方式で多段階圧縮を行った場合について説明する。ここでの多段階圧縮とは、同じ画像データに対し、複数回(N回:Nは2以上の整数)の圧縮処理を施すことを意味する。例えば、2段階圧縮とは、入力された画像データに対し、1回目の圧縮処理を施したのち、当該生成された各代表色のみの画像データ(第1色格納部に格納される第1色のデータ)を次の圧縮処理対象画像として2回目の圧縮処理を行うことを意味する。よって、N回目の圧縮処理では、N−1回目の圧縮処理によって得られた代表色で構成される画像データを用いて圧縮処理を行う。上述した圧縮方式によれば、1回目の圧縮処理後の第1色格納部には、圧縮率の高低によらず、図7の白色で示される部分の画素の色データがラスタ順に格納されている。つまり、元の画像データが縦横2画素ごとに間引かれたデータが格納されている。多段階圧縮は、この間引かれて生成された画像データをさらに2×2画素ごとにブロック化して、再度上述した圧縮処理を適用する。
【0044】
すなわち、図8(a)に示すように、第1段階の圧縮処理によって圧縮された画像データのうち、第1色格納部に格納されたデータに注目する。図8(a)の第1段階圧縮処理後のメモリの第1色格納部に格納されている色データは、画像データ800の白色と黒色で示された位置の画素データである。そして、第1色格納部に格納されている画像データ(第1段階圧縮処理後の第1色の色データ)をさらに2×2画素ごとにブロック化し、上述した圧縮処理を行う。この結果、第1段階の圧縮処理結果の第1色の色データは、第2段階の圧縮処理結果のパターンフラグと、第2段階の第1色の色データと、第2段階の第2,3,4色の色データとに圧縮変換される。したがって、図8(b)の第2段階圧縮時メモリ空間に示すような圧縮結果が得られる。ここで、図8(b)に示すように、メモリ空間において、第2段階圧縮時の第1色格納部には、画像データ800の白色で示された位置の色データが格納される。また、第2段階圧縮時の第2,3,4色格納部には、画像データ800の黒色で示された位置の画素に基づいて求めた第1色以外の色データが格納される。ただし、第2段階圧縮時の第2,3,4色格納部には、2×2画素中に存在する同一の色データは複数格納されることはない。このように多段階圧縮されたデータは、図8(b)のように入れ子構造の形式でデータ格納される。なお、他の格納方法として、同一のメモリ領域ではなく、別のメモリ領域を新たに確保して第2段階圧縮データを格納しても良い。
【0045】
[展開処理]
次に、本発明の中核をなす展開部211を説明する。展開部211では、上述したような圧縮処理で生成されたパターンフラグと色データとを、元のラスタ画像データへ戻す処理を行う。図9に本発明における展開部211の詳細なブロック図を示す。本実施形態における展開部211は、図2で示したようにコントローラ101内に存在するものであり、3つのデータ展開部900,910,920で構成されるものとする。なお、本実施形態の展開部211は、電子回路等のハードウェア(ASICなど)で構成されるものとするが、CPUがプログラムを実行することによりその一部または全部の機能を実現するようにしても構わない。
【0046】
まず、1段階の圧縮処理がなされている圧縮データが展開対象である場合について、展開部211の詳細な処理を、図10に示すフローチャートと、図11の圧縮画像例とを用いて説明する。
【0047】
本実施形態では、説明を簡単にするため、図11(a)に示されるような4×4画素からなる画像データの圧縮データを例として、当該圧縮データを展開する場合について述べる。メモリ106の圧縮データ格納に関する一部のメモリマップを抽出したものを図11(b)に示し、さらにメモリ内部のデータ領域を詳細にしたものを図11(c)に示す。画像データ1101は、それぞれ同じパターン(斜線部、白色部、縦線部、格子線部)で表わされた画素は、同一の画素値を有する画素を示している。
【0048】
図11(a)に示した画像データ1101に対して1段階の圧縮処理を適用した場合、該画像データ1101は2×2画素ごとのブロックで黒太線のように分割され、圧縮される。そして、圧縮された結果の各ブロックのパターンフラグ、第1色の色データ、第2〜4色の色データが図11(b)に示すメモリ106上のパターンフラグ格納部1102、第1色格納部1103、第2,3,4色格納部1104にそれぞれ格納されている。画像データ1101の各ブロックのパターンフラグは、図4に示した割り当てにより、左上ブロック、右上ブロック、左下ブロック、右下ブロックの順に、“B”、“5”、“1”、“E”となる。これらの値がパターンフラグ格納部1102に格納され、図11(c)のアドレス0x00,0x01のように配置されている。
【0049】
また、第1色格納部1103には、各ブロックの左上の画素値データが連続して格納される。したがって、図11(c)のアドレス0x10−0x1Bのように、画素00,02,20,22の画素値が格納されている。ただし、本実施形態においては、8bitのRGB画像を扱っているものとし、1画素データのサイズは24bit(3Byte)である。また、図11(c)に示す各アドレスのデータ量は、8bit(1Byte)である。
【0050】
なお、図11(c)において、横方向の値が第1の位のメモリアドレスの値を示し、縦方向の値が第2の位のメモリアドレスの値を指す。すなわち、図11(b)にて示された第1色格納部1103の先頭アドレスである“0x10”は、図11(c)において、横方向の“00”と縦方向の“10”とが交わるアドレスを意味する。
【0051】
最後に、第2,3,4色格納部1104には、各ブロックの左上画素以外の画素値(第1色と異なる色の色データ)が格納されている。ただし、同一ブロックに同色の色が存在した場合、重複して格納はされない。例えば図11(a)に示す画像データ1101の左上ブロックの画素01と画素10は同色であるため、画素01と画素11の画素値(すなわち第1色と異なる色の色データ)だけが第2,3,4色格納部に格納されている。また、同様にして、画像データ1101の右上ブロックの画素02と画素03と画素13は同色(第1色)であるため、画素12の画素値だけが、第2,3,4色格納部に格納されている。したがって、図11の画像データ1101の例において、第2,3,4色格納部に格納される画素値は、画素01,11,12,21,23,32,33の画素値(色データ)であるため、図11(c)のアドレス0x40−0x54のように格納されている。
【0052】
本実施形態において、図11のように1段階の圧縮処理がなされている圧縮データの展開処理は、図9の3つあるデータ展開部900,910,920のうちの2つを使用して行われる。ここでは、データ展開部900が第1色データの展開を行い、データ展開部910が第2,3,4色データの展開を行うものとする。すなわち、データ展開部900は、展開するラスタ画像において、パターンフラグに基づき圧縮データ内の第1色データによって塗りつぶされている画素のみを特定する。そして、読み込んだ第1色データによって当該特定した画素を塗りつぶす。また、データ展開部910は、展開するラスタ画像において、パターンフラグに基づき圧縮データ内の第2,3,4色データによって塗りつぶされている画素のみを特定する。そして、読み込んだ第2,3,4色データによって、当該特定した画素それぞれを塗りつぶす処理を行う。ここで塗りつぶす処理とは、画像データの展開領域(展開用のメモリ領域)において、各画素の値に色データの値を適用する処理を意味する。
【0053】
まず、第1色データを展開するデータ展開部900の動作について図10(a)を用いて説明する。以下、データ出力部904、914、924が1回の展開処理で注目するブロックを注目ブロックと呼ぶ。1段階の圧縮処理がなされている圧縮データの展開処理においては、注目ブロックは、画像データ1101の2×2画素単位のブロックとなる。
【0054】
パターンフラグDMAC901は、パターンフラグ格納部1102の先頭アドレスと画像サイズとが設定され、当該設定されたアドレス(例えば0x00)から順番にパターンフラグを読み込んで、データ出力部904に順次転送する処理を行う(S1001)。並行して、データDMAC903は、第1色格納部1103の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(例えば0x10)から順番に第1色データを読み込んで、データ出力部904に順次転送する処理を行う(S1002)。データ出力部904は、パターンフラグ格納部1102から取得するパターンフラグに基づいて、同時に取得する第1色データで塗りつぶす画素位置を特定する(S1003)。
【0055】
例えば、データ出力部904は、パターンフラグ格納部1102から最初に読み込んだパターンフラグ“B”に対しては、図4に示す対応表から、左上画素の画素00だけを、当該ブロックの第1色の色データで塗りつぶすと判定する。また、次に読みこんだパターンフラグ“5”に対しては、同じく図4に示す対応表から、左上画素、右上画素、右下画素の画素02,画素03,画素13を、当該ブロックの第1色の色データで塗りつぶすと判定する。
【0056】
次に、注目ブロックに塗りつぶす画素がある場合(S1004にてYes)、データ出力部904は、予めデータ出力部904に設定されたラスタ展開後の画像を格納する先頭アドレス、および展開画像のサイズ情報から、第1色の色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1005)。そして、データDMAC903から受信した第1色データを、算出したアドレスのメモリ領域に書き込む(S1006)。
【0057】
S1004〜S1006の処理は、1ブロックの中で、第1色データを書き込む画素数分、繰り返し実行される。すなわち、画像データ1101の左上ブロックにおいては、第1色データを書き込む画素は1画素分なので、S1004〜S1006の処理は1回行われる。また、画像データ1101の右上ブロックにおいては、第1色データを書き込む画素は3画素分なので、S1004〜S1006の処理は3回行われる。このようにして1ブロック分の処理が終わると、S1004において、データ出力部904は、塗りつぶす画素がなくなったと判定し(S1004のNo)、注目ブロックの展開処理を完了する。
【0058】
以上の処理によって、展開用のメモリ上で、各ブロックの第1色の色データが画素値として書き込まれた画素は、図12(a)の斜線部で表わされる。言い換えれば、図12(a)の斜線部で表わされる画素の画素値が、データ展開部900によって展開されることになる。
【0059】
次に、第2,3,4色データを展開するデータ展開部910の動作について図10(b)を用いて説明する。パターンフラグDMAC911は、パターンフラグ格納部1102の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(例えば0x00)から順番にパターンフラグを読み込んで、データ出力部914に順次転送する処理を行う(S1021)。並行して、データDMAC913は、第2,3,4色格納部1104の先頭アドレスと画像サイズが設定され、当該設定されたアドレス0x40から順番に第2,3,4色データを読み込んで、データ出力部914に順次転送する処理を行う(S1022)。データ出力部914は、パターンフラグ格納部1102から取得する注目ブロックのパターンフラグに基づいて、まず、当該注目ブロックに第2,3,4色データがあるか否かを判定する(S1023)。
【0060】
例えば、パターンフラグ“0”を有するブロックがあった場合、その注目ブロックは第1色データのみで構成されるブロックであるので、当該注目ブロックに第2,3,4色データは存在しない(S1023にてNo)。そのため、データ展開部910は、注目ブロックの第2,3,4色の色データによる画素塗りつぶし処理は行わず、次のブロックの処理に移る。それ以外のパターンフラグが読み込まれた場合は、少なくとも第2色データが存在するブロックであると判定される(S1023にてYes)。
【0061】
次に、少なくとも第2色データが存在するブロックであり(S1023にてYes)、かつ注目ブロックにまだ塗りつぶす画素がある場合(S1024にてYes)、データ出力部914は、読み込んだ第2,3,4色データによって塗りつぶされる画素位置を、パターンフラグに基づいて特定する(S1025)。データDMACは1ブロック内の第2,3,4色データをデータ出力部914に順次転送してくるため、データ出力部914は、第2色データで塗りつぶす画素、第3色データで塗りつぶす画素、第4色データで塗りつぶす画素を別々に特定する。さらに、データ出力部914は、予めデータ出力部914に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報から、第2,3,4色の色データそれぞれで塗りつぶす画素に対応するメモリアドレスを算出する(S1026)。
【0062】
そして、データ出力部914は、データDMAC913から受信した第2,3,4色データを、算出したそれぞれのアドレスのメモリ領域に書き込む(S1027)。S1024〜S1026の処理は、1ブロックの中で、第2,3,4色データを書き込む画素数分繰り返される。すなわち、画像データ1101の左上ブロックにおいては、書き込む第2,3,4色データは3画素分なので、S1024〜S1026の処理は3回行われる。また、画像データ1101の右上ブロックにおいては、書き込む第2,3,4色データは1画素分なので、S1024〜S1026の処理は1回行われる。このようにして1ブロック分の処理が終わると、S1024において、データ出力部914は、塗りつぶす画素がなくなったと判定し(S1024にてNo)、注目ブロックの展開処理を終了する。以上の処理によって、展開用のメモリ上で、各ブロックの第2,3,4色の色データが画素値として書き込まれた画素は、図12(b)の斜線部で示される。言い換えれば、図12(b)の斜線部で示される画素の画素データが、データ展開部910によって展開されることになる。
【0063】
1段階圧縮されたデータは、以上のような方法により、展開部211により展開される。なお、各DMACについては、データ読み出しの効率を上げるために使用しているものであり、DMACを削除して、各データ出力部が必要なデータに順次アクセスするような構成を採用しても構わない。
【0064】
[2段階圧縮データに対する展開処理]
次に、2段階の圧縮処理がなされている圧縮データが展開対象である場合について、展開部211の詳細な処理を、図13に示すフローチャートと、図14の圧縮画像例とを用いて説明する。すなわち、図11(a)に示される4×4画素からなる画像データ1101を2段階圧縮した2段階圧縮データ(図14(b))を展開する場合について述べる。
【0065】
画像データ1101は2段階圧縮されると、図14(b)、(c)で示されるような圧縮データとしてメモリ106上に格納される。まずは、この伸張する2段階圧縮データが生成される仕組みについて説明しておく。
【0066】
メモリ106の圧縮データ格納に関する一部のメモリマップを抽出したものを図14(b)に示し、さらにメモリ内部のデータ領域を詳細にしたものを図14(c)に示す。なお、図14(c)において、横方向の値が第1の位のメモリアドレスの値を示し、縦方向の値が第2の位のメモリアドレスの値を指す。すなわち、図14(b)にて示された第2段階第1色格納部1404の先頭アドレスである“0x18”は、図14(c)において、横方向の“08”と縦方向の“10”とが交わるアドレスを意味する。
【0067】
第1段階パターンフラグ格納部1402と、第1段階第2,3,4色格納部1406に格納されているデータ及びその生成方法は、図11(b)のパターンフラグ格納部1102と、第2,3,4色格納部1104とに格納されているデータ及びその生成方法と同じである。よって、説明は割愛する。第1段階の圧縮処理によって、第1色格納部1103に格納された第1色データは、画像データ1101の各ブロックの左上画素が格納されている。つまり、主走査方向、副走査方向それぞれに2画素ごとに間引いた画像データ1401(図14(a))が格納されていることと同義である。
【0068】
そこで、第2段階圧縮は、第1段階圧縮によって間引いて得られた画像データ1401に対して、圧縮処理を行う。このとき、図4に示す割り当てにより、画像データ1401のブロックのパターンフラグは“2”となる。これが第2段階パターンフラグ格納部1403に格納され、図14(c)のアドレス0x10のように配置されている。また、第2段階第1色格納部1404には、第2段階圧縮の処理対象ブロックの左上画素の画素値(色データ)が格納される。従って、図14(c)のアドレス0x18−0x1Aのように、画素00の画素データが格納される。
【0069】
最後に、第2段階第2,3,4色格納部1405には、第2段階圧縮の処理対象の注目ブロックにおける左上画素の色データ(第1色)以外の色データ(第2〜4色)が格納されている。ただし、同一ブロック内に同色の色が存在した場合、その色のデータは重複して格納されない。例えば、画像データ1401のブロックの画素00と画素22は同色の値(第1色の色データ)を有し、かつ、画素02と画素20は同色の値(第2色の色データ)を有するため、画素02の画素値(第2色データ)だけが第2段階第2,3,4色格納部1405に格納される。従って、画像データ1401の中で第2段階第2,3,4色格納部1405に格納される画素データは、画素02のみであるため、図14(c)のアドレス0x20−0x22のように格納されている。
【0070】
2段階の圧縮処理がなされている圧縮データ(図14(b)、(c))の展開処理は、図9に示された3つのデータ展開部900,910,920をすべて使用して行う。ここでは、データ展開部900が第2段階第1色データの展開を行い、データ展開部910が第2段階第2,3,4色データの展開を行い、データ展開部920が第1段階第2,3,4色データの展開を行うものとする。すなわち、データ展開部900は、展開後のラスタ画像において、圧縮データ内の第2段階第1色データによって、展開後のデータサイズにおいて塗りつぶされる画素を第2段階パターンフラグと第1段階パターンフラグとに基づいて特定する。そして、読み込んだ第2段階第1色データによって当該特定した画素を塗りつぶす。また、データ展開部910は、展開後のラスタ画像において、圧縮データ内の第2段階第2,3,4色データによって塗りつぶされる画素を第2段階パターンフラグと第1段階パターンフラグとに基づいて特定する。そして、読み込んだ第2段階第2,3,4色データによって当該特定した画素を塗りつぶす処理を行う。さらに、データ展開部920は、展開後のラスタ画像において、圧縮データ内の第1段階第2,3,4色データによって塗りつぶされる画素を第1段階パターンフラグに基づいて特定する。そして、読み込んだ第1段階第2,3,4色データによって当該特定した画素を塗りつぶす処理を行う。
【0071】
まず、第2段階第1色データを展開するデータ展開部900の動作について図13(a)を用いて説明する。ここで、前述の1段階の圧縮処理がなされている圧縮データの展開処理時とは異なり、2段階の圧縮処理がなされている圧縮データの展開処理において、1回の展開処理で注目する注目ブロックは、画像データ1101における4×4画素単位に相当する。また、以下の説明において、S1301〜S1303の処理は並行して行われるものとして記載されているが、図13(a)に示すように、順番に処理を行うことも可能である。
【0072】
パターンフラグDMAC901は、第1段階パターンフラグ格納部1402の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x00)からパターンフラグを読み込んで、データ出力部904に順次転送する(S1301)。並行して、パターンフラグDMAC902は、第2段階パターンフラグ格納部1403の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x10)からパターンフラグを読み込み、データ出力部904に順次転送する(S1302)。
【0073】
さらに並行して、データDMAC903は、第2段階第1色格納部1404の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x18)から順に第2段階第1色データを読み込んで、データ出力部904に順次転送する(S1303)。
【0074】
データ出力部904は、取得した第1段階パターンフラグと第2段階パターンフラグとに基づいて、展開後の4×4画素サイズの画像データにおいて第2段階第1色データで塗りつぶす画素位置を特定する(S1304)。これにより、第一特定手段を実現する。具体的にいうと、図14(c)の圧縮データの例では、まず、第2段階パターンフラグ(“2”)に基づき、画素00,02,20,22のうち、第2段階第1色データで塗りつぶす画素位置として、画素00,22を特定できる。更に、データ出力部904は、第2段階パターンフラグに基づいて第2段階第1色データで塗りつぶすと特定された画素位置が含まれる第1段階圧縮のブロックについて、第1段階パターンフラグに基づき、第2段階第1色データで塗りつぶす画素位置を特定する。図14(c)の例では、画素00が含まれる第1段階圧縮のブロックにおける第1段階パターンフラグが“B”であり、また、画素22が含まれる第1段階圧縮のブロックにおける第1段階パターンフラグが“E”である。したがって、画素00,22が含まれるブロック(画像データ1101の左上ブロックと右下ブロックに相当するブロック)の画素00,22以外の画素位置に対して、第2段階第1色データで塗りつぶす画素は存在しないと判定する。よって、図14(c)の圧縮データの例では、展開後の4×4画素サイズの画像データにおいて第2段階第1色データで塗りつぶす画素位置は画素00,22のみであると特定できる。
【0075】
次に、S1304で特定された画素のうち、まだ第2段階第1色データの塗りつぶし処理(書き込み処理)を行っていない画素があれば(S1305にてYes)、当該未処理の画素の1つを処理対象としてS1306の処理に進む。データ出力部904は、予めデータ出力部904に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報、当該処理対象の画素の画素位置から、第2段階第1色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1306)。これにより、第一メモリアドレス算出手段を実現する。
【0076】
そして、データ出力部904は、データDMAC903から受信した第2段階第1色データを、算出したアドレスのメモリ領域に書き込む(S1307)。これにより、第一格納手段を実現する。
【0077】
S1306〜S1307の処理は、1ブロックの中で、第2段階第1色データを書き込む画素数分繰り返される。図14(c)の例では、展開後の4×4画素サイズの画像データにおいて、第2段階第1色データは、画素00,22の2画素分書き込まれるので、S1306〜S1307の処理は2回行われる。
【0078】
以上のようにして、1つの注目ブロック分(2段階圧縮のため、4×4画素に相当)の処理が終わると、S1305において、データ出力部904は、第2段階第1色データの塗りつぶし対象画素がなくなった(塗りつぶし処理が終了した)と判定し(S1305にてNo)、注目ブロックに対する処理を終了する。以上の処理によって、図14(c)の圧縮データの場合、メモリ上に展開された画像データにおいて、第2段階第1色データが書き込まれる画素は、図15(a)の斜線部で表される。言い換えれば、図15(a)の斜線部で表される画素の画素データが、データ展開部900によって展開されることになる。
【0079】
次に、第2段階第2,3,4色データを展開するデータ展開部910の動作について図13(b)を用いて説明する。なお、以下の説明において、S1321〜S1323の処理は並行して行われるものとして記載されているが、図13(b)に示すように、順番に処理を行うことも可能である。
【0080】
パターンフラグDMAC911は、第1段階パターンフラグ格納部1402の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x00)からパターンフラグを読み込んで、データ出力部914に順次転送する(S1321)。この処理に並行して、パターンフラグDMAC912は、第2段階パターンフラグ格納部1403の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x10)からパターンフラグを読み込んで、データ出力部914に順次転送する(S1322)。
【0081】
さらに並行して、データDMAC913は、第2段階第2,3,4色格納部1405の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x20)から第2段階第2,3,4色データを読み込んで、データ出力部914に順次転送する(S1323)。
【0082】
データ出力部914は、第2段階パターンフラグ格納部1403から取得する第2段階パターンフラグに基づいて、まず、第2段階第2,3,4色データがあるか否かを判定する(S1324)。例えば、第2段階パターンフラグ“0”のブロックについては、当該注目ブロックの第2段階第2,3,4色データは存在しないと判定される(S1324にてNo)。そのため、データ展開部910は、当該注目ブロックについて、第2段階第2,3,4色データによる画素塗りつぶし処理は行わず、次のブロック処理に移る。それ以外の第2段階パターンフラグが読み込まれた場合は、少なくとも第2段階第2色データが存在するブロックであると判定される(S1324にてYes)。
【0083】
データ展開部910が、当該注目ブロックについて、第2段階第2,3,4色データが存在すると判定した場合(S1324にてYes)、データ展開部910は、注目ブロックに未処理の第2段階第2,3,4色データがあるかどうかを判定する(S1325)。注目ブロックに未処理の第2段階第2,3,4色データがあると判定した場合(S1325にてYes)、データ展開部910は、未処理の第2段階第2,3,4色データのうちの1つを処理対象にする。更に、データ展開部910は、第2段階パターンフラグと第1段階パターンフラグとに基づいて、展開後の4×4画素サイズの画像データにおいて、当該処理対象にした色データで塗りつぶす画素位置を特定する(S1326)。これにより、第二特定手段を実現する。
【0084】
データDMAC913は、1ブロック内の第2段階第2,3,4色データをデータ出力部914に順次転送するため、データ出力部914は、第2段階第2色データで塗りつぶす画素、第3色データで塗りつぶす画素、第4色データで塗りつぶす画素を別々に特定する。したがって、S1326では、未処理の色データのうち、第2段階の第2色データから順に処理対象にしていくものとする。
【0085】
このS1324〜S1326の処理に関して、図14ならびに図11に基づいて、具体的に説明を行う。まず第2段階パターンフラグとして“2”が読み込まれ、図4を参照すれば分かるように、第2色データが存在する配置パターンであると判定される。すなわち、注目ブロックの第2段階圧縮を行った際の配置パターンが画像データ1401のようなパターンだということが判定される。したがって、第2段階第2,3,4色格納部1405には第2色データだけが格納されているため、データ出力部914は、データDMAC913から受信した第2色データで、どこの画素を塗りつぶすかを算出する。つまり、データ出力部914は、第2段階パターンフラグのパターン“2”に基づき、画素02と画素20とを、データDMAC913から読み込んだ第2色データで塗りつぶす対象の画素であると判定する。
【0086】
更に、画素02と画素20はそれぞれ、画像データ1101の右上ブロックおよび左下ブロックの第1色データでもある。よって、これと対応する第1段階パターンフラグのパターン“5”、“1”に基づいて、データ出力部914は、画像データ1101の画素03,13,30,31も塗りつぶし対象画素であると判定する。すなわち、図14(c)の圧縮データの例では、以上で示した画素02,03,13,20,30,31の6画素分を、S1324〜S1326のフローの中で、第2段階第2色データで塗りつぶす対象の画素位置であると特定する(図15(b))。
【0087】
図13(b)の処理フローの説明に戻る。塗りつぶす画素位置が特定されると、予めデータ出力部914に設定されたラスタ展開後の画像データを格納する展開領域の先頭アドレス、展開画像のサイズ情報、当該塗りつぶし対象画素の位置から、データ出力部914は第2段階第2,3,4色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1327)。これにより、第二メモリアドレス算出手段を実現する。
【0088】
そして、データ出力部914は、データDMAC913から受信した第2,3,4色データのうち、S1326で処理対象にした色データを、算出したアドレスのメモリ領域に書き込む(S1328)。これにより第二格納手段を実現する。S1325〜S1328の処理は、注目ブロックの中で、第2,3,4色データを書き出す画素数分繰り返される。すなわち、図14(c)の圧縮データの例では、第2段階第2色データで図15(b)のように6画素分塗りつぶすことになるため、S1325〜S1328の処理は6回行われる。
【0089】
このようにして1つの注目ブロック分の処理が終わると、S1325において、データ出力部914は、塗りつぶす画素がなくなったと判定し(S1325にてNo)、注目ブロックに対する処理を終了する。以上の処理によって、図14(c)の圧縮データの場合、メモリ上に展開された画像データにおいて、第2段階第2色データが書き込まれる画素は、図15(b)の斜線部で表わされる。言い換えれば、図15(b)の斜線部で表される画素の画素値が、データ展開部910によって展開されることになる。
【0090】
最後に、第1段階第2,3,4色データを展開するデータ展開部920の動作について図13(c)を用いて説明する。なお、以下の説明において、S1341〜S1342の処理は並行して行われるものとして記載されているが、図13(c)に示すように、順番に処理を行うことも可能である。なお、第1段階第2,3,4色データを展開する場合は、第2段階パターンフラグは使用しないので、パターンフラグDMAC922は省略しても構わない。
【0091】
パターンフラグDMAC921は、第1段階パターンフラグ格納部1402の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x00)から第1段階パターンフラグを読み込んで、データ出力部914に順次転送する(S1341)。並行して、データDMAC923は、第1段階第2,3,4色格納部1406の先頭アドレスと画像サイズが設定され、当該設定されたアドレス(0x40)から第1段階第2,3,4色データを読み込んで、データ出力部924に順次転送する(S1342)。
【0092】
データ出力部924は、第1段階パターンフラグ格納部1402から取得する第1段階パターンフラグに基づいて、まず、第1段階第2,3,4色データがあるか否かを判定する(S1343)。例えば、本第1段階パターンフラグ“0”のブロックについては、当該注目ブロックの第1段階第2,3,4色データは存在しないと判定される(S1343にてNo)。そのため、データ展開部920は、当該注目ブロックについて、第1段階第2,3,4色データによる画素塗りつぶし処理は行わず、次のブロック処理に移る。それ以外の第1段階パターンフラグが読み込まれた場合は、データ展開部920は、少なくとも第1段階第2色データが存在するブロックであると判定する(S1343にてYes)。
【0093】
データ展開部920が、当該注目ブロックについて、第1段階第2,3,4色データが存在すると判定した場合(S1343にてYes)、データ出力部924は、注目ブロック内に未処理の第1段階第2,3,4色データが存在するかを判定する(S1344)。注目ブロック内に未処理の第1段階第2,3,4色データが存在すると判定した場合(S1344にてYes)、データ出力部924は、未処理の第1段階第2,3,4色データのうちの1つを処理対象にする。更に、データ出力部924は、第1段階パターンフラグに基づいて、展開後の画像データにおいて、当該処理対象にした色データで塗りつぶす画素位置を特定する(S1345)。
【0094】
データDMAC923は、1ブロック内の第1段階第2,3,4色データをデータ出力部924に順次転送してくるため、データ出力部924は、第1段階第2色データで塗りつぶす画素、第1段階第3色データで塗りつぶす画素、第1段階第4色データで塗りつぶす画素を別々に特定する。
【0095】
このS1343〜S1345の処理に関して、図14ならびに図11に基づいて、具体的に説明を行う。まず第1段階パターンフラグとして、最初にパターン“B”が読み込まれた場合、図4を参照すれば分かるように、第2色データと第3色データとが存在する配置パターンであると判定される。すなわち、注目ブロックの第1段階圧縮を行った際の配置パターンは、まず画像データ1101の左上ブロックのようなパターンであると判定される。したがって、第1段階第2,3,4色格納部1406には、第2色データと第3色データが格納されているので、データDMAC923から受信した第2色データと第3色データで、どの画素を塗りつぶすかが算出される。つまり、データ出力部924は、第1段階パターンフラグのパターン“B”に基づいて、画素01と画素10とを、データDMAC923から読み込んだ第2色データによって塗りつぶす対象の画素であると判定する。また、画素11は、同じくデータDMAC923から読み込んだ第3色データによって塗りつぶす対象の画素であると判定される。
【0096】
図13(c)のフローの説明に戻る。塗りつぶす画素位置が特定されると、予めデータ出力部924に設定されたラスタ展開後の画像を格納する先頭アドレス、展開画像のサイズ情報、当該塗りつぶし対象画素の位置から、データ出力部924は、第1段階第2,3,4色データで塗りつぶす画素に対応するメモリアドレスを算出する(S1346)。
【0097】
そして、データ出力部924は、データDMAC923から受信した第2,3,4色データのうち、S1345で処理対象にした色データを、算出したアドレスのメモリ領域に転送して書き込む(S1347)。S1344〜S1347の処理は、注目ブロックの中で、第1段階第2,3,4色データを書き出す画素数分繰り返される。
【0098】
このようにして1ブロック分の処理が終わると、S1344において、データ出力部924は、塗りつぶす画素がなくなったと判定し(S1344にてNo)、注目ブロックに対する展開処理を終了する。以上の処理によって、図14(c)の圧縮データの場合、メモリ106上に展開された画像データにおいて、第1段階第2,3,4色データが書き込まれる画素は、展開後の各ブロックにおいて図15(c)の斜線部で表わされる。言い換えれば、図15(c)の斜線部で表される画素の画素値が、データ展開部920によって展開される。
【0099】
[アクセス数における対比]
本発明の展開部211の特徴として、データ展開部900、910、920のように並列に配置して、それぞれを独立して動作させることができ、メモリアクセスを効率化できる点にある。
【0100】
2段階圧縮データの展開処理に必要なメモリアクセス量について、展開部211を上記の本発明に基づいた構成にした場合(図9)と、特願2009−221444で述べた図19のような構成で圧縮時と逆順で段階的に展開するように構成した場合(以下では従来構成と呼ぶ)とを、それぞれ図16(a)、(b)に示す。また、従来構成としての処理フローを図20に示す。図16(a)は、画像データ1101が2段階圧縮されたデータ(図14(b))を、本発明の展開部(図9)によってラスタデータに展開する時のメモリアクセス量を示す。また、図16(b)は、画像データ1101が2段階圧縮されたデータ(図14(b))を、従来構成の展開部(図19)によってラスタデータに展開する時のメモリアクセス量を示す。図16(a)に示す本発明と図16(b)に示す従来構成とのアクセス種の差分として、本発明においては「第1段階第1色データ読み込み(図16(b)の1613に対応)」の処理が不要であるため、その項目が無くなっている。
【0101】
まず、本発明の展開部211は、第2段階第1色データ、第2段階第2,3,4色データ、第1段階第2,3,4色データをそれぞれデータDMAC903、913、923にて読み込む。それぞれの読み込むトータルのデータ量は、図14(c)の圧縮データ例の場合、それぞれ3byte(1603)、3byte(1604)、21byte(1602)である。また、第1段階パターンフラグは、パターンフラグDMAC901、911、921それぞれによって読み込まれ、第2段階パターンフラグは、パターンフラグDMAC902、912によって読み込まれる。それぞれの読み込むデータ量は、図14(c)の圧縮データ例の場合、それぞれ2byteが3モジュール分(1600)、1byteが2モジュール分(1601)である。また、出力データの書き込みは、データ出力部904、914、924のトータルで、画像データ1101のラスタデータ量分となるため、3byteの16画素分(1605)となる。総計のメモリアクセス量(読み込みと書き込みのデータ量)は、83byteとなる。
【0102】
一方、従来構成の展開部1900の場合、まず第2段階圧縮データを第1段階圧縮データに展開する最初の段階と、その後、当該第1段階圧縮データを更にラスタデータに展開する次の段階とに分けて展開することになる。よって、展開時の最初の段階では、第2段階パターンフラグと、第2段階第1色データと、第2段階第2,3,4色データとを読み込む。図14(c)の圧縮データ例の場合、それぞれのメモリアクセス量は、1byte(1611)、3byte(1614)、3byte(1615)となる。また、第2段階圧縮データを1段階展開した後の第1段階圧縮データは、図11(c)のようになる。そのため、この第1段階圧縮データをラスタデータに展開する次の展開段階では、第1段階パターンフラグと、第1段階第1色データと、第1段階第2,3,4色データとを読み込む。図11(c)の圧縮データ例の場合、それぞれのメモリアクセス量は、2byte(1610)、3byteの4画素分(1612)、21byte(1613)となる。
【0103】
また、出力データの書き込みは、第2段階圧縮データを展開した結果を第1色格納部1103に書き込む処理と、第1段階圧縮データを展開した結果のラスタデータを書き込む処理の2段階で行われ、それぞれ画像データ1401、画像データ1101のラスタデータ量分、データ出力されるのに等しい。そのため、それぞれのメモリアクセス量は、3byteの4画素分と、3byteの16画素分となる(1616)。よって、総計のメモリアクセス量(読み込みと書き込みのデータ量)は、102byteとなる。なお、従来構成においては、本発明のようなメモリにアクセスするそれぞれ部位ごとの役割分担は特定せず、総じて展開部1900が行っているものとする。
【0104】
図9の展開部は、複数のデータ展開部で同一のパターンフラグを読み込んで使用する。したがって、図19の展開部よりもパターンフラグに関するメモリアクセス量が増加している(1600、1601、1610、1611)。一方で、本実施形態では、2段階圧縮データを直接ラスタデータに展開してメモリに書き戻す。そのため、第2段階の圧縮データから第1段階への圧縮データへ展開して出力する時のメモリへのデータ書き戻しと、第1段階への圧縮データの読み込みが一部不要になる(1612、1605、1616)。パターンフラグのデータ量と比較して、画素データのデータ量は大きいため、図9の本実施形態によるトータルのメモリアクセス量は、図19のように段階的に展開する場合のメモリアクセス量よりも20%削減されることがわかる。
【0105】
また、第2段階圧縮データの第1段階圧縮データへの展開用と、第1段階圧縮データのラスタデータへの展開用とで、図19の展開部を複数用意し、その間に中間バッファを設けるように構成すれば、システムメモリへのメモリアクセス回数を減らせる。しかしながら、このような構成にすると回路規模が大きくなってしまう。一方で、図9の本実施形態によるデータ展開部900、910、920は、2段階圧縮データを直接ラスタ画像に展開できるため、このような中間バッファは必要ない。
【0106】
さらに、3段階以上の圧縮データを扱う場合、図19に示す展開部1900を使用すると、データ展開の各段階で展開部を必要とするため、ラスタ画像まで効率良く展開するためには、更に多くの展開部と中間バッファを必要とする。例えば3段階圧縮されたデータを展開する場合、図17(a)のように、多くの展開部(1+4+16個)と、その間の中間バッファ(4+16個)とを必要とする。一方、本発明では、図9のデータ展開部900、910、920に対して、図17(b)のようにデータ展開部を1つ追加すれば良い。
【0107】
より詳細には、図18のように、各データ圧縮部を3段階圧縮データの展開のために、3段階におけるパターンフラグを読み込めるように変更を行う。そして、データ出力部における内部のアルゴリズムは、パターンフラグによる塗りつぶし画素位置の判定を1段階分増やせば良い。このような変更を行い、第3段階第1色データ、第3段階第2,3,4色データ、第2段階第2,3,4色データ、第1段階第2,3,4色データを、それぞれモジュール(データ展開部)1801、1802、1803、1804で処理する。これによって、第3段階圧縮データの展開への拡張が中間バッファの追加を抑えながら可能となる。
【0108】
つまり、N段階の圧縮処理を行った圧縮画像データを展開する場合には、N+1個のデータ展開部を備えればよい。この多重化した構成により、N回目の圧縮処理によって得られた代表色を1〜N回目の符号化によって得られたパターンフラグを用いて展開するための代表色復号手段と、1〜M回目(Mは1〜Nのいずれかの整数)の圧縮処理それぞれによって得られた補間色を用いて展開するためのN個の補間色復号手段を実現している。
【0109】
また、本発明の展開部においては、画像によっては、一部のデータ展開部に処理が集中する場合がある。このような状況に対し、各データ展開部を同一構成にすれば、いずれのデータ展開部においても使用可能なデータ展開部として機能させることが可能になり、負荷分散するように構成しても構わない。
【0110】
[第二実施形態]
第一実施形態においては、各ブロックを圧縮したデータを出力する場合、パターンフラグに加えて、必ず第1色データが出力され、メモリに書き出される。本発明で記載している圧縮形態においては、図4のパターンフラグの定義に加え、リピートフラグというパターンフラグ“F”を定義して使用することも可能である。これは、ブロック圧縮時に1回前に処理を行ったブロックと同一の色の配置(配置パターン)のブロックに対しては、パターンフラグとしてリピートフラグ“F”を出力するが、第1色データおよび第2,3,4色データはメモリへ出力しないようにする。
【0111】
これによって、圧縮後のメモリ出力するデータ量をさらに削減することができる。なお、ここでの1回前のブロックとは、例えばラスタ順でブロック処理している場合、着目ブロックに隣接した処理済みのブロックとなる。このとき、処理の順番が基準となるため、例えば着目ブロックの上に位置するなど着目ブロックに対していずれの位置にあっても構わない。また、パターンフラグにリピートフラグを追加する場合、本実施形態においてパターンフラグを4ビットで表しているが、通常のパターンフラグ15種に加え、リピートフラグ1種を加えても、パターンフラグのデータ量(4ビット)に変動は生じない。
【0112】
第二実施形態では、このリピートフラグが混在した圧縮データの展開フローについて説明を行う。また、第二実施形態では、圧縮時に、最終圧縮段階においてのみリピートフラグを付加され、且つ、主走査ラインの先頭ブロックにはリピートフラグは付加しないものとする。すなわち、2段階で圧縮するように構成した場合、図21の画像データ2100を例とすると、第1段階圧縮した後の第1段階圧縮ブロックである画像データ2101にはリピートフラグは設定されない。一方、これを第2段階圧縮(最終段階の圧縮)する際に左隣のブロックと同じ色配置のブロックがあれば、当該ブロックに対するパターンフラグにリピートフラグ“F”が設定される。例えば、図21の第2段階圧縮ブロック2102で、“R”と記載されたブロックがリピートフラグ“F”が設定されたブロックであったとする。すなわち、リピートフラグ“F”により、ブロックS2_04はブロックS2_00の繰り返しであることを意味し、また、ブロックS2_44はブロックS2_40の繰り返しであることを意味している。ここで、第2段階圧縮ブロックのブロックS2_44は、第1段階圧縮時に生成された第1色を元にリピートフラグを付与すべきブロックであるか判定される。すなわち、ブロックS2_40とブロックS2_44は、図21の画像データ2100に示されるように、元の画像パターンが異なるにもかかわらず、第1段階圧縮後の第1色で構成される画像データ2101におけるブロックの色配置が同じため、ブロックS2_44にリピートフラグが設定される。この第2段階圧縮ブロック化された時のメモリ上の圧縮データの状態は図22(a)、(b)のように表される。
【0113】
第1段階圧縮時の処理対象となる画像データ2100において、各ブロックの左上画素の画素値を第1色データとすると、第1段階第2,3,4色データは画素23,27,43,45,47,63,65,67の画素値が第1段階第2,3,4色格納部2205に格納される。また、第1段階圧縮時のパターンフラグは第1段階パターンフラグ格納部2201に格納される。また、第2段階圧縮時の処理対象となる画像データ2101において、各ブロックの左上画素の画素値を第1色とするが、左上ブロックと右上ブロックは同じ色配置になっており、左下ブロックと右下ブロックも同じ色配置となっている。したがって、第2段階第1色データは、画素00,40の画素値のみが第2段階第1色格納部2203に格納され、同一色を有しリピートフラグが付与されるブロックの画素04,44の画素値は格納されない。
【0114】
第2段階第2,3,4色データは、画素22の画素値は第2段階第2,3,4色格納部2204に格納されるが、リピートフラグが付加されるブロックの画素26の画素値はメモリ格納されない。また、第2段階圧縮時のパターンフラグは第2段階パターンフラグ格納部2202に格納され、このとき同じ色配置と判定されたブロックについてはリピートフラグ“F”が付与される。
【0115】
このようにして多段階圧縮された圧縮データを、図9の展開部211で展開する時の動作について説明する。なお、フローの説明は、既に説明済みの図13を元に、差分だけを詳細に説明する。ここで、各データ展開部900,910,920は、リピートフラグ処理のために、前に処理されたブロックの画素値を保持するためのバッファを有するものとする。
【0116】
まず、第2段階第1色を展開するデータ展開部900は、S1304の塗りつぶし画素の特定時に、第2段階パターンフラグがリピートフラグか否かを判定し、リピートフラグでなかった場合は、第一実施形態で説明した通常処理を行う。リピートフラグだった場合、データ展開部900は以下のように動作する。
【0117】
第2段階第1色の展開を行うデータ展開部900は、リピートフラグを受信すると、データDMAC903から受信したデータではなく、バッファに格納された前ブロックの第1色データをS1307の転送データとして使用する。第2段階第2,3,4色の展開を行うデータ展開部910は、リピートフラグを受信すると、データDMAC913から受信したデータではなく、バッファに格納された前ブロックの第2,3,4色データをS1328の転送データとして使用する。一方、第1段階第2,3,4色の展開を行うデータ展開部920は、第2段階リピートフラグを読み込まず、それに依存した処理を行わないので、第一実施形態と同じ処理を行う。
【0118】
以上の処理によって、リピートフラグが混在する圧縮データに対しても、図9の展開部211は圧縮データの展開処理を行うことができる。これにより、第一実施形態と同様の効果を得ることができる。
【0119】
<その他の実施形態>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号する画像処理装置であって、
前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、
前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段と
を有し、
前記代表色復号手段と、前記N個の補間色復号手段は、それぞれ独立して動作することを特徴とする画像処理装置。
【請求項2】
前記代表色復号手段は、
前記符号化手段によるN回の符号化によって取得された前記配置情報それぞれを用いて、展開後の画像における前記代表色を展開すべき位置を特定する第一特定手段と、
前記第一特定手段にて特定した前記代表色を展開すべき位置に対応する、前記展開後の画像のデータが格納される展開領域のメモリアドレスを算出する第一メモリアドレス算出手段と、
前記第一メモリアドレス算出手段にて算出した展開領域のメモリアドレスに前記代表色を格納する第一格納手段と
を有することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記M回目の符号化によって得られた補間色を展開する補間色復号手段は、
前記符号化手段による1〜M回の符号化によって取得された前記配置情報それぞれを用いて、展開後の画像における前記補間色を展開すべき位置を特定する第二特定手段と、
前記第二特定手段によって特定した前記補間色を展開すべき位置に対応する、前記展開後の画像のデータが格納される展開領域のメモリアドレスを算出する第二メモリアドレス算出手段と、
前記第二メモリアドレス算出手段にて算出した展開領域のメモリアドレスに前記M回目の符号化によって得られた補間色を格納する第二格納手段と
を有することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号する画像処理方法であって、
代表色復号手段が、前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号工程と、
N個の補間色復号手段それぞれが、前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開する補間色復号工程と
を有し、
前記代表色復号手段により実行される前記代表色復号工程と、前記N個の補間色復号手段により実行される前記補間色復号工程は、それぞれ独立して行われることを特徴とする画像処理方法。
【請求項5】
画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号するために、
コンピュータを、
前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段、
前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段
として機能させ、
前記代表色復号手段と、前記N個の補間色復号手段は、それぞれ独立して動作させることを特徴とするプログラム。
【請求項1】
画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号する画像処理装置であって、
前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段と、
前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段と
を有し、
前記代表色復号手段と、前記N個の補間色復号手段は、それぞれ独立して動作することを特徴とする画像処理装置。
【請求項2】
前記代表色復号手段は、
前記符号化手段によるN回の符号化によって取得された前記配置情報それぞれを用いて、展開後の画像における前記代表色を展開すべき位置を特定する第一特定手段と、
前記第一特定手段にて特定した前記代表色を展開すべき位置に対応する、前記展開後の画像のデータが格納される展開領域のメモリアドレスを算出する第一メモリアドレス算出手段と、
前記第一メモリアドレス算出手段にて算出した展開領域のメモリアドレスに前記代表色を格納する第一格納手段と
を有することを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記M回目の符号化によって得られた補間色を展開する補間色復号手段は、
前記符号化手段による1〜M回の符号化によって取得された前記配置情報それぞれを用いて、展開後の画像における前記補間色を展開すべき位置を特定する第二特定手段と、
前記第二特定手段によって特定した前記補間色を展開すべき位置に対応する、前記展開後の画像のデータが格納される展開領域のメモリアドレスを算出する第二メモリアドレス算出手段と、
前記第二メモリアドレス算出手段にて算出した展開領域のメモリアドレスに前記M回目の符号化によって得られた補間色を格納する第二格納手段と
を有することを特徴とする請求項1または2に記載の画像処理装置。
【請求項4】
画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号する画像処理方法であって、
代表色復号手段が、前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号工程と、
N個の補間色復号手段それぞれが、前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開する補間色復号工程と
を有し、
前記代表色復号手段により実行される前記代表色復号工程と、前記N個の補間色復号手段により実行される前記補間色復号工程は、それぞれ独立して行われることを特徴とする画像処理方法。
【請求項5】
画像データを2×2画素サイズのブロックごとに分割し、当該分割された各ブロックにおける所定の位置の画素の画素値を代表色、前記各ブロックにおける代表色以外の画素値を補間色、前記各ブロックにおける前記代表色と前記補間色の配置パターンを配置情報として取得し、前記代表色と前記補間色と前記配置情報とをそれぞれ異なる記憶領域に記憶する符号化手段により、N−1回目(Nは2以上の整数)の符号化により得られた代表色からなる画像データに対してN回目の符号化を行うことで得られた圧縮データを復号するために、
コンピュータを、
前記符号化手段によるN回目の符号化によって得られた代表色を展開すべき位置を、前記符号化手段による1〜N回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記代表色を展開する代表色復号手段、
前記符号化手段によるM回目(Mは1〜Nのいずれかの整数)の符号化によって得られた補間色を展開すべき位置を、前記符号化手段による1〜M回目の符号化によって得られた配置情報それぞれに基づいて特定し、当該特定した位置に前記M回目の符号化によって得られた補間色を展開するN個の補間色復号手段
として機能させ、
前記代表色復号手段と、前記N個の補間色復号手段は、それぞれ独立して動作させることを特徴とするプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【公開番号】特開2012−95227(P2012−95227A)
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願番号】特願2010−242649(P2010−242649)
【出願日】平成22年10月28日(2010.10.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年5月17日(2012.5.17)
【国際特許分類】
【出願日】平成22年10月28日(2010.10.28)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]