画像処理装置
【課題】プロセッサを並列に実行してスループットを高めることが可能な画像処理装置を提供する。
【解決手段】この発明の実施の一形態である画像処理方法は、メモリに展開された画像データを縦方向に分割し、それぞれを別のプロセッサで並列にJPEG圧縮処理し、一定量の圧縮データが貯まる度に、非同期に一定量の符号データを書込み、また、メモリ上に自プロセッサが書き込んだことを識別可能な情報を記録することを特徴とする。
【解決手段】この発明の実施の一形態である画像処理方法は、メモリに展開された画像データを縦方向に分割し、それぞれを別のプロセッサで並列にJPEG圧縮処理し、一定量の圧縮データが貯まる度に、非同期に一定量の符号データを書込み、また、メモリ上に自プロセッサが書き込んだことを識別可能な情報を記録することを特徴とする。
【発明の詳細な説明】
【技術分野】
【0001】
この発明は、プロセッサを並列に実行してスループットを高めることが可能な画像処理装置に関する。
【背景技術】
【0002】
MFP(Multi-Functional peripheral、すなわち多機能周辺機器)と称される画像処理装置が広く普及している。
【0003】
MFPにおいては、印刷等の画像処理の高速化、高解像度化がますます要求されつつある。さらに、ファクシミリ、イメージスキャナ等の機能を加えたMFPも数多く市場に供給されており、大容量のデジタル画像データを高速に処理する必要性が大きくなってきている。
【0004】
MFPにおいて行われる各種の画像処理は、一般に、数多くの演算をできるだけ高速に行う必要があり、処理速度の高速化の方法としては、一般に個々の演算処理を並列に実行することにより、全体としてのスループットを向上させる方法が有効であり、既に数多くの装置や方法が提案されている。
【0005】
特許文献1(先行技術文献)には、画像をパケット(画像小区画と属性等とを含むデータ列)として生成し、各パケットを、複数のデータフロー型画像処理部を用いて並列処理する技術が提案されている。
【0006】
特許文献2(先行技術文献)には、描画オブジェクト(図形、テキスト、画像など)毎に複数の処理ユニットに処理を並列実行させる画像処理装置が提案されている。
【0007】
そして、この他にも、大量の画像データの高速処理に有効な方法として、処理ユニットを並列化して実行する方法がいくつか提案されている。これらの方法によれば、複数の画像パケットが個々の画像パケット毎に画像圧縮されるので、生成された個々の圧縮画像パケット(圧縮パケット)は、データ量が小さく、且つ独立して処理可能な1つの処理単位(画像単位)として扱うことが可能である。従って、圧縮画像パケットのデータ量が小さい場合には、MFPにおける利用や格納、或いは、通信ネットワークを介した転送等において利便性が高い。
【0008】
また、画像パケットを圧縮する方法には、各種のアルゴリズムが存在するが、近年、JPEG(Joint Photographic Experts Group)方式が広く普及している。
【0009】
MFPにJPEG方式の画像圧縮を採用する大きな利点としては、市場において標準的に広く使われている方法であり、ハードウェア回路等の利用に際しても、これまでに蓄積された設計開発の過程で改善されたものを採用することができるとともに、信頼性や安定性が高く、装置内部でのデータ転送においてもフォーマットが確定しているので、ハードウェア/ソフトウェアの双方共に、設計信頼性/拡張性/再利用性が高いことが挙げられる。
【0010】
このように、元画像の画像データを複数の画像パケットに分割すると共に、個々の画像パケット毎にJPEG方式による画像圧縮(以下、「JPEG圧縮」と略称する)を施すことによって得られる圧縮画像パケットを用いて、並列処理を行う画像処理装置を用いれば、高速なデータ転送/処理を行うことができ、且つ高効率な容量で扱うことができる。
【0011】
特許文献3(先行技術文献)には、画像データ圧縮処理であるJPEG形式の圧縮に関して、1ページ画像の圧縮に関して、圧縮単位であるMcu(Minimum code unit)をグルーピングし、グループの圧縮符号データを、Mcu間の依存関係をリセットするリスタートマーカーを、圧縮パケットに追加しながら、データを並列に処理する方式が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【0012】
文献1または文献2に示されたJPEG圧縮は、上記のような利点があるが、圧縮データ長が可変であること、また、圧縮されるデータ間に依存関係があるため、圧縮・復号ともに画像先頭からの処理が必要であること、に起因して、複数プロセッサによる並列化での高速化が非常に難しい。
【0013】
一方、文献3が開示する方式では、Mcuグループの符号化データ書出し毎に、符号データ長を一定長に揃えるため、Mcuグループが増えた場合に、データの冗長性が高くなり、圧縮率が低下するという課題がある。また、Mcuグループ毎に、データ処理の終わりを確認せねばならず、処理対象となるデータによってプロセッサ毎の処理時間にバラツキが出た<プロセッサ毎の処理時間が異なる>場合、処理が完了したプロセッサは、他のプロセッサの処理完了を待たねばならず、プロセッサの利用率が低下し、その結果、圧縮・伸張処理の処理時間が増大することが知られている。
【0014】
この発明の目的は、プロセッサを複数持つシステムにおいて、JPEGをベースとした方式で、圧縮率が高く、高速に画像の圧縮・伸長を行うための、手段、画像フォーマットを提供することである。また、この発明の目的は、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことが可能なMFPを提供することである。
【課題を解決するための手段】
【0015】
この発明は、上記問題点に基づきなされたもので、JPEG方式で、互いに直交する2方向についてマトリクス状に分割した複数の領域の画像データを独立して2以上のプロセッサにより並列に圧縮する画像処理方法において、個々の画像データは、その領域の画像データを圧縮した際のプロセッサを特定する情報を含むことを特徴とする画像処理方法を提供するものである。
【発明の効果】
【0016】
この発明の一つの実施の形態によれば、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことができる。
【0017】
すなわち、本発明の画像圧縮・伸張方式を適用することにより、マルチコアCPUを搭載したシステムにおいて、並列に圧縮・伸張を行う際、各コアで実行する処理の実行率を高く、メモリアクセスに関する同期処理のオーバーヘッドが低く抑えることができる。
【0018】
また、圧縮・伸張処理を別のシステムで実施する場合にも、圧縮・伸張を実行するそれぞれのシステムで、並列度が高いほうのシステムの実行率を高くすることができるため、圧縮・伸張処理トータルでスループットを向上させることができ。
【0019】
また、複数のコアから共通にアクセスされる2次キャッシュメモリと、コアが内部に持つ1次キャッシュメモリ、共有される2次キャッシュメモリ間のスワップ動作の回数を抑えることで、処理速度が低下することを抑止できる。
【0020】
また、2次キャッシュメモリと共有メモリ間のDMA転送のデータ転送を適切なサイズで実施することにより、処理速度が低下することが防止出来る。
【0021】
従って、マルチコアCPUによる圧縮・伸張処理を、画質を損なうことなく、高速に処理させることができる。
【図面の簡単な説明】
【0022】
【図1】本発明が適用される可変長画像圧縮の一例を示す概略図。
【図2】本発明の複数PEでの圧縮・伸長処理が可能な圧縮方式を説明する概略図。
【図3】本発明の実施形態に関わるシステム全体のブロック図。
【図4】本発明の実施形態に関わる全体処理のフローチャート。
【図5】本発明の実施形態に関わる圧縮処理のフローチャート。
【図6】本発明の実施形態に関わる伸長処理のフローチャート。
【図7】本発明の別の(第2の)実施形態に関わるシステム全体のブロック図。
【図8A】図7に示した(第2の)実施形態に関わるシステムにおける1次、2次キャッシュ間メモリ操作を説明する概略図。
【図8B】図7に示した(第2の)実施形態に関わるシステムにおける1次、2次キャッシュ間メモリ操作を説明する概略図。
【図9】本発明の別の(第3の)実施形態に関わるシステム全体のブロック図。
【図10】図9に示した(第3の)実施形態における並列分割数決定方法、ならびに圧縮データの配列例を説明する概略図。
【図11】図9に示した(第3の)システムにおいて、分割数よりも少ないコア数のCPUによる処理の例を説明する概略図。
【図12】図9に示した(第3の)システムにおいて、分割数よりも少ないコア数のCPUによる処理の別の(本願の特徴的な改良結果を含む)例を説明する概略図。
【図13】図9に示した(第3の)システムにおいて、クライアントPC内処理のフローチャート。
【図14】図13に示したクライアントPC内処理における「並列分割数決定処理」を説明するフローチャート。
【図15】図9に示した(第3の)システムにおいて、プリンタコントローラ内処理のフローチャート。
【図16】本発明の別の(第4の)実施形態に関する処理のメモリ利用イメージ。
【図17】図16に示した方式によりコアの1つが共有メモリ上に配置するデータ(のイメージ)を説明する概略図。
【図18】図16に示した(第4の)システムにおいて実行される「分割数決定処理」を説明するフローチャート。
【発明を実施するための形態】
【0023】
以下、図面を参照して、本発明の実施の形態について説明する。
【0024】
図1は、この発明が適用可能な画像処理装置(MFP、Multi-Functional Peripheral)の実施形態に関わる最も基本となるシステムのブロック図を示す。
【0025】
図1に示す画像処理装置(以下、システムと称する)1は、システムバス11を介して相互に接続する複数のデバイス、例えばCPU(主制御装置)21、共有メモリ23、HDD(Hard Disc Drive、大容量記憶装置)25、ならびにn(nは正の整数)個のPE(演算ユニット)PE1〜PEnを含む。
【0026】
システムバス11は、外部とのデータ入出力や、内部のデータ通信に利用される。
【0027】
共有メモリ23については、システム内で結合されているそれぞれのプロセッサPE1〜PEnからの書込み、および読込みが可能である。
【0028】
次に、図1に示すシステム1に適用可能な広く利用されているJPEG(Joint Photographic Experts Group)圧縮方式、およびそれをより高速度化可能な本提案(本願)の圧縮方式について説明する。
【0029】
図2は、JPEG圧縮の符号化方式を簡単に説明するものである。
【0030】
JPEG圧縮では、画像データは、Mcu(Minimum code unit)と呼ばれる圧縮の最小単位の画素のまとまり毎に圧縮される。図2の例では、高さ(方向)16ピクセル、幅(方向)16ピクセルの画像圧縮を、高さ8ピクセル、幅8ピクセルのMcu単位で圧縮するものとする。
【0031】
圧縮される画像データは、Mcuの行単位に処理される。
【0032】
処理は、Mcuブロック内の64画素を、RGBカラーの入力画像データを、YCCの輝度色差カラーデータに色変換処理し、YCCの成分毎にDCT処理して周波数成分に変換した後、周波数成分毎に量子化テーブルを用いて量子化し、最後に量子化された値をハフマン符号化により符号化するものである。
【0033】
この処理の中で、ハフマン符号化の符号を格納する際、DCT変換後に生成されるMcuブロック内の直流成分信号の格納に関しては、前のMcuを圧縮した際の直流成分との差分値として値が格納される。この場合、隣接するMcu間では、画像の直流成分は比較的似ることから、差分値の値が小さくなり格納されるデータ長が短くなり圧縮率が高くなる効果がある。
【0034】
しかし、この方式によりMcu圧縮符号の間に依存関係が生じ、16×16画像のMcu符号データ間には、図示するとおり、特有の依存関係(「Mcu(0,0)」に隣接して「Mcu(0,1)」が位置し、「Mcu(0,1)」の「Mcu(0,0)」とは逆側に「Mcu(1,0)」が位置する)が存在する。
【0035】
このように圧縮された画像データを伸長する際には、圧縮された画像の先頭のMcuブロックに該当する符号データから順に、ハフマン復号化、隣接Mcu直流成分より直流成分算出、逆量子化、逆DCT変換、YCCカラーデータからRGBへの色変換が順に行われる。
【0036】
図3は、広く利用されている上述のJPEG圧縮方式の処理において実績があるハードウェア回路や装置内部におけるデータ転送のフォーマットの一部または多くの要素を共通化でき、より高速度化可能な圧縮方式とその圧縮されたデータの伸長処理を実現するもので、図1に示したn個のプロセッサPE1〜PEnの内、2つのプロセッサPE1、およびPE2により、圧縮・伸長を、並行に処理することで、より処理速度を向上できる処理の一例を示す。
【0037】
それぞれのプロセッサPE1,PE2は、画像データメモリに展開したときにアドレスが連続する画像方向を横方向としたとき、それに垂直な方向を縦方向としたとき、画像データを縦方向に一定間隔で分けて、分かれた領域をプロセッサの1つに割り当てて圧縮させる。
【0038】
それぞれのプロセッサPE1,PE2は、圧縮の際、上述のJPEGとは異なり、Mcu直流成分の差分を振り分けられた領域に閉じた形で、領域終端に来たところで、領域内の次のMcu行の先頭に当たる要素の計算のベースとして演算する。
【0039】
これにより、分けられた領域間のデータの依存関係が無くなる。
【0040】
それぞれのプロセッサPE1,PE2が上記のように割り当てられた領域を圧縮する際、圧縮データ長は、圧縮する画像データによって変わるため、同じ速度で動作するプロセッサ同士でも、ローカルメモリ(ローカルバッファと称する場合もある)に、データが貯まっていく速度が異なる。
【0041】
本発明では、領域を担当するそれぞれのプロセッサは、ローカルメモリにある一定量の圧縮データが貯まった段階で書込みを行うため、使用するローカルメモリが少なくても実装できる。前記書き出しを行う一定量であるが、これについては、そのシステムが書き出すメディアに対して最適化された値がよい。
【0042】
図3から明らかであるが、システム1のHDD25に圧縮データを書き出す場合、システム1がHDD25にデータを書き込む際の大きさ、例えばシステム1がHDD25にデータを書き込む際に2kバイト([kb])ずつデータを書き込むのであれば、上記ローカルバッファに貯める圧縮データの量を2kバイト([kb])とする。
【0043】
前記ローカルバッファに蓄積された圧縮データを書き込む際、どのプロセッサが書き込みを行ったかを判別可能なデータを、同じように書き出す。このデータは、符号データとは異なる領域に記憶され、画像全体の圧縮処理が完了するまで保持される。
【0044】
プロセッサが割り当てられた領域の画像をすべて圧縮したあと、残った圧縮データを上記のように書き出して処理を完了する。
【0045】
すべて領域の圧縮処理が完了すると、蓄積された書込みPEデータ、および圧縮画像パラメータ(幅、高さ、カラー/モノクロ)と、書込みPEデータが書き込まれたオフセットが書き出される。
【0046】
これにより、画像を縦に帯状に分けて圧縮されたデータの入った圧縮ファイルが完成する。
【0047】
次に、前記圧縮された画像ファイルの伸張処理について説明する。
【0048】
伸張処理では、それぞれのプロセッサが、書込みPEデータが書き込まれたオフセットを、ファイル終端部分から読み取り、続いて、書込みPEデータを読み込む。各プロセッサは、書込みPEデータを参照し、自プロセッサが書き込んだ符号化データを読み込み、順次、ハフマン復号、隣接Mcuの直流成分から自Mcuの直流成分算出、逆量子化、逆DCT、YCCからRGBへの色変換処理を行う。
【0049】
処理の際、圧縮データが不足した際には、書込みPEデータを参照し、次の自PEが書き出した圧縮データを読み込む。
【0050】
復号された画像データは、各プロセッサからアクセス可能なメモリ領域(共有メモリ)23に書き込まれる。
【0051】
より詳細には、図示のように、
圧縮<1> → 各PEが画像を縦方向に圧縮
PE1 CodeMcu(0,0) CodeMcu(1,0)
PE2 CodeMcu(0,1) CodeMcu(1,1)
圧縮<2> → 各PEが、A[kb]分圧縮する度、符号データを書き出す
により、圧縮が行われる。
【0052】
一方、伸長の場合は、
伸長<1>書き込みPEデータに従い、A[kb]ずつデータをロード
伸長<2>復号処理、及び復号画像書き出し
PE1 書き込みPEデータ
PE2 書き込みPEデータ
となる。
【0053】
図4は、本発明の実施形態に関わる、全体処理のフローチャートである。
【0054】
システムは、画像の入力処理か、出力処理を、外部から受ける[ACT01]。
【0055】
入力処理を受け付けた場合[ACT01−YES]、入力される画像ファイルに関する情報を、圧縮ファイルのヘッダ部分に書き出す[ACT02]。
【0056】
次に、画像領域を縦方向に分けて、それを各プロセッサに割り当てて、この領域情報と、圧縮処理の開始を指示する[ACT03]。
【0057】
この後、それぞれのプロセッサは、図5を用いて以下に説明するフローチャートに示す処理を行い、割り当てられた領域を圧縮処理する[ACT04]。
【0058】
圧縮を行うプロセッサは、圧縮コードとともに、書出しPEデータを書き出す[ACT05]。
【0059】
全プロセッサの処理完了後、このデータは圧縮コードに引き続いて書き込まれ、最後に、この書出しPEデータが書き込まれているオフセット情報を書き出し、圧縮処理は完了する[ACT06]。
【0060】
出力処理を受け付けた場合[ACT01−NO]、各プロセッサに復号処理を指示する[ACT07]。この後、復号処理を指示されたプロセッサは図6により後段に説明するフローチャートの処理を行って画像(データ)の伸長を行う。
【0061】
すなわち、
画像のヘッダ情報をファイルに書き出し
各PEに縦分割領域をアサインし、圧縮処理開始を指示
各プロセッサでの圧縮終了待ち
書き込みPEデータを書き出し
書き込みPEデータオフセットを書き出し
各PEに伸長処理開始を指示
が、順に実行される。
【0062】
図5は、図4を用いて説明した圧縮時の各プロセッサでの処理に関するフローチャートを示す。
【0063】
各プロセッサは、自プロセッサが圧縮処理する画像の領域を示す情報を取得する。領域の指定に関しては、x列目〜y列目という形で指定される[ACT11]。
【0064】
共有メモリ上の画像データから、処理する対象となる画像データをローカルメモリにコピーして圧縮処理を行う。圧縮処理は、領域左端の8×8領域(図2におけるMcu(0,0))から始め、それを画像横方向に処理していき、領域の端(図2におけるMcu(0,1))に達したら、画像左端で、高さをMcuの高さ8だけ下方にずらした位置(図2におけるMcu(1,0))から再び処理を進めるという順序で行われる。処理に際して、圧縮された符号データは、一旦、ローカルメモリに格納される。
【0065】
一定量(A[kb])のMcuデータを圧縮する毎に、ローカルメモリに書き出した符号量をチェックし、一定量を超えていれば、符号データの書き出しを行う。この際、他のプロセッサと同じ領域にデータを書き込んでしまわないよう、書込み管理用のセマフォ(semaphore)を用いて排他的にデータを書き込む[ACT12]〜[ACT13−YES]〜[ACT16−YES]〜[ACT17]〜[ACT18−NO]。
【0066】
圧縮対象となる画像データの圧縮処理が完了した場合[ACT14−YES]は、符号バッファに書き込まれている符号量をチェックし、一定量に足りていない場合には、不足分を無効データの書き込みにより埋めた後、データを書き込む[ACT15]。
【0067】
すなわち、
処理する画像列情報を取得
圧縮処理
圧縮データがA[kb]以上 ?
圧縮完了 ?
A[kb]まで無効データを詰める
データ書き込み可能か ?
A[kb]圧縮データ、書き込みPEデータ書き出し
圧縮完了 ?
のルーチンが実行される。
【0068】
図6に、図4を用いて説明した各プロセッサでの処理により圧縮された符号データの伸張時の各プロセッサでの処理に関するフローチャートを示す。
【0069】
伸張処理では、各プロセッサが圧縮データに書き込まれた画像情報を読み込む。このデータには、画像に関する(幅、高さ、カラー/モノクロ)の情報や、圧縮(どのプロセッサが、どの領域を圧縮)に関わる情報が含まれる[ACT21]。
【0070】
次に、データ終端に書き込まれた書込みPEデータのオフセット情報、ならびに、オフセット情報を元にロードした書込みPEデータをロードする[ACT22]。画像情報と書込みPEデータから、自プロセッサが、画像のどの領域を伸張処理するかを読み取り、書込みPEデータをもとにして処理すべき圧縮データをロードしながら画像を復号処理する[ACT23],[ACT24]。
【0071】
復号処理の過程では、Mcu単位で画像が復元され、各プロセッサは、一定のライン数N分画像をローカルメモリに復元した後[ACT25],[ACT26]、画像データを共有のメモリに書き込む[ACT27]。
【0072】
すべてのプロセッサの処理が完了すれば、共有メモリ上に画像が展開され、処理は終了である[ACT28−YES]。
【0073】
換言すると、
画像情報を取得
書き込みPEデータ読み込み
A[kb]圧縮データ読み込み
信号処理
圧縮データなし ?
Nライン分書き出し
復号完了 ?
の順で、処理が行われる。
【0074】
このように、入力画像の圧縮に関して、画像メモリ上に展開される画像を副走査方向に分割し、それぞれの領域をプロセッサに割り当て並列に符号化処理させることで、メニーコアプロセッサや、マルチCPU環境で、従来の方式に比べて高速な圧縮処理が実現できる。また、圧縮データ書き出しも、各プロセッサで圧縮された符号データが保存に適したサイズまでたまった段階ですぐに書き込むことができ、オーバーヘッドが少なく、高速化が実現できる。
【0075】
図7は、この発明が適用可能な画像処理装置(MFP)に適用可能な別の画像圧縮方式を実現するためのシステムのブロック図である。なお、図7に示すシステムは、図1〜図6を用いて前述した画像処理において、各プロセッサが画像圧縮データを書き出す際のデータサイズが、キャッシュメモリライン長のn倍(n≧1)であることを特徴とするものである。
【0076】
図7において、システム101は、それぞれが1次キャッシュメモリを有する複数(n個(nは正の整数))のプロセッサコアPE1,PE2,・・・,PEn−1,PEn、各プロセッサコアPE1〜PEnから直接接続され、データの読み出しと書き込みが行なわれる2次キャッシュメモリ111a,・・・,111n(nは正の整数)、それぞれのメモリへのデータ書込み、読出しを制御するメモリコントローラ103、システム101内に存在する全プロセッサコアPE1〜PEnから1次、2次キャッシュメモリ111a〜111nを介してアクセスされる共有メモリ105、画像データ、圧縮された画像データである符号化データ、圧縮処理に関するパラメータ、並びにプロセッサコアで実行されるプログラムを格納するHDD107、および2次キャッシュメモリ、HDD、および共有メモリ間でのデータの送受信を実現するシステムバス109からなる。なお、2次キャッシュメモリ111a〜111nは、一例ではあるが、それぞれ2つのプロセッサコアを単位としてシステムバス109と接続するものとする。
【0077】
本実施形態において処理される画像データ、並びに画像データを圧縮した符号化データは、共有メモリ上105に格納される。
【0078】
1次キャッシュメモリ、2次キャッシュメモリ、共有メモリは、この順に従って、CPUからのアクセス速度が遅くなり、また、格納出来るデータ容量が大きいものとする。
【0079】
キャッシュメモリは、一定長データをラインとしてデータを格納し、このラインデータを最小単位として読出し書込みを行う。1バイト分のデータの書換えを行う場合、アクセスする1バイトのデータと同じラインに存在するデータと共に読み込みを行い、プロセッサコア内のレジスタ上で、このライン上の必要なバイトデータの書換えが行われた後、再び、同ラインのデータと共に書込みが行われる。
【0080】
複数のプロセッサコアからなるシステムにおいて、メモリコントローラ103はメモリ上に保持されたデータがプログラムに記載されたとおりに保持されるような一貫性を保つためにコヒーレント処理という処理を実施する。
【0081】
図8Aは、図7に示したシステムを用いた1次、2次キャッシュメモリ間のメモリ操作に関する一例を示す。
【0082】
例えば、プロセッサコア1とプロセッサコア2が、図7における左から1番目と2番目のプロセッサコアPE1,PE2であるとしたとき、プロセッサコア1(PE1)とプロセッサコア2(PE2)が、アドレスが隣接するデータを読み込んだものとする。また、このとき、隣接する2つのデータが、アドレス的に2次キャッシュメモリ上の同ライン上に存在したとする。
【0083】
この同一ライン上にあるデータは、プロセッサコア1とプロセッサコア2内の1次キャッシュメモリ上に同じデータとしてコピーされる。
【0084】
この後、プロセッサコア1このデータを書換えたとき、プロセッサコア1とプロセッサコア2が1次キャッシュメモリとして保持しているデータに違いが発生し、状態として、プロセッサコア2のデータは、プロセッサコア1が行った変更が反映されていない古いデータが存在することになる。
【0085】
このため、メモリコントローラ103は、各プロセッサコアからのメモリへのアクセスをチェックしながら、上記のようにメモリ上のデータの書換えが行われた場合、一貫性が保たれていないデータ領域の書換え処理を行う。すなわち、プロセッサコア1(PE1)が1次キャッシュメモリを書換えた場合、メモリコントローラ103は、プロセッサコア2(PE2)内にコピーされたデータに一貫性が保たれていないことを検出し、プロセッサコア1(PE1)内の1次キャッシュメモリの該当するキャッシュラインのデータを、プロセッサコア2(PE2)の1次キャッシュのデータに上書きする。
【0086】
このように、キャッシュメモリの一貫性を保つためのコヒーレント処理は、ラインと呼ばれるデータ単位で処理される。
【0087】
しかし、実際には、データを共有しない処理を、プロセッサコア1、2が実施する際、これらのデータが同一のキャッシュラインに存在する場合には、前述のコヒーレント処理が実施される(ことになる)。論理的には問題がないが、コヒーレント処理は、異なるメモリ間におけるデータコピー処理が行われ、かつこのコヒーレント処理の間は、プロセッサコアからのこの領域へのアクセスができない状態になる。
【0088】
このため、上述のようなデータを共有しない処理に対するコヒーレント処理の実行は、オーバーヘッドが大きく、論理的には、必要のないデータのコピーであるから、フォルスシェアリング(false sharing)と呼ばれる。
【0089】
図8Bは、図7に示したシステムを用いた1次、2次キャッシュメモリ間のメモリ操作に関する別の一例を示す。すなわち、図8Bは、図8Aにより説明した実施形態において生じるフォルスシェアリングに関連して各プロセッサコアの実行効率が低下することを避けるため、圧縮データを書き込む際のサイズを、2次キャッシュメモリのキャッシュラインサイズのN倍とすることを特徴とするものである。
【0090】
図8Bにおいては、図8Aにより説明した符号化データ書込みのサイズを、キャッシュメモリのラインサイズの整数倍にとることにより、共有メモリ上で、メモリを共有する複数のコアが利用する領域が、それぞれ、キャッシュラインをまたぐことがなくなる。これにより、お互いがメモリにアクセスする際に、他のプロセッサが利用するデータを読み込まずに済む。従って、メモリコントローラ103が実施するコヒーレント操作が発生しなくなり、無駄なオーバーヘッドが発生せず、処理が高速に実現できる。
【0091】
より詳細には、図8Bにおいて、プロセッサコア1(PE1)、およびプロセッサコア2(PE2)が、割り当てられた領域の圧縮処理を、並列に実行している場合、プロセッサコア1は、プロセッサコア1による圧縮処理が進行し、符号化データがキャッシュラインサイズに達した段階で、符号化データをキャッシュラインサイズ分だけメモリに書き込む。これにより、符号化データが2次キャッシュメモリに書き出される。
【0092】
この書き込みサイズがキャッシュラインサイズに合っていない(一致しない)場合は、前述のように、符号化データを記載する他のCPUコアに対してコヒーレント処理が発生して性能、特に処理速度が大幅に低下するが、図8Bに示した本方式では、メモリ書込みサイズをキャッシュラインサイズの整数倍に制限したことにより、コヒーレント動作が発生せず、各プロセッサ間の同期処理に伴うオーバーヘッドを低減することができる。
【0093】
図9は、この発明が適用可能な画像処理装置(MFP)に適用可能な、さらに別の画像圧縮方式を実現するためのシステムのブロック図である。
【0094】
図9に示す実施形態は、圧縮処理、伸張処理を実施する装置の両方、もしくは、いずれかがマルチコアのプロセッサを具備する際、画像データの並列分割数を、これらのプロセッサ数に応じて切替えることにより、高いスループットを実現することを特徴とするものである。
【0095】
図9に示すシステム201は、クライアントPC(データ供給元)221とプリンタエンジン(MFPを含む)231が、ネットワーク(例えば、LAN)により、相互に接続された状態において、クライアントPC221およびプリンタエンジン231へ画像出力のための画像データを入力するプリンタコントローラ233のそれぞれが、画像圧縮、伸張処理を受け持つマルチコアCPUを含むことを特徴とする。
【0096】
このシステムでは、ユーザが印刷する文書中のイメージデータは、クライアントPC側のマルチコアにより圧縮される。
【0097】
文書中の画像が圧縮された状態のデータは、ネットワークを介してプリンタエンジン231と接続するプリンタコントローラ233に送信される。
【0098】
プリンタコントローラ233では、印刷データの受信後、このデータを画像形成処理するが、この際、受信された印刷データ中の圧縮されたイメージデータの伸張処理を自身のマルチコアにより伸張処理する。
【0099】
このように、文書中に含まれるイメージデータの圧縮、伸張処理をマルチコアで実現することにより並列処理し、印刷データ量のデータサイズを減らしてクライアントPCと、コントローラ間の通信時間を短縮することにより、プリントのスループットを向上させることが出来る。
【0100】
本実施形態に関するイメージデータ圧縮の並列化処理のための、分割サイズの決定方法について説明する。
【0101】
図10に、クライアントPCと、プリンタコントローラのCPU(プロセッサ)コア数に違いがある場合の並列分割の決定方法の例を示す。
【0102】
ここで、クライアントPCのCPUコア数が2、プリンタコントローラのCPUコア数が4であるとする。本実施形態における並列分割数は、圧縮処理、伸張処理を実施するCPUのコア数を比較し数が多いものを採用する。
【0103】
図10の場合、圧縮側がコア数2、伸張側がコア数4であるため、並列化のための画像領域の分割数は4となる。このように分割数を決定された際、圧縮処理側、伸張処理側でコア数が異なる場合には、どちらかの側が実際のCPUコア数よりも多く画像を分割する形になる。
【0104】
図11および図12に、図10に示したクライアントPCと、プリンタコントローラのプロセッサコア数に違いがある場合において、CPUコア数が分割数よりも少ない場合における処理例を示す。
【0105】
CPUコア数が少ない場合には、1つのプロセッサコアに対して、複数の画像分割領域が処理対象として割り当てられる。
【0106】
図11は、CPUコア数が2に対して、並列分割数が3に設定された場合であり、この際、CPUコア1に対しては、領域Aと領域C、CPUコア2に対しては、領域Bが割り当てられたものとする。
【0107】
この場合、本発明第1実施形態の方式をそのまま、この圧縮に用いると、図11(a)のような処理の流れとなる。すなわち、初めに、コアが割り当てられた領域A,Bの処理が実施され、圧縮データには、これらの領域の符号化データが、書込み量に達した段階で随時書き込まれていき、領域Aの書込みが完了した段階で、CPUコア1が領域Cの圧縮処理を実施する。
【0108】
このように、圧縮処理を実施した場合、符号化されたデータは、図11(b)に示すように、はじめにCPUコアが割り当てられる領域の圧縮データである「領域A符号データ」と「領域B符号データ」の組に対して、そうでない領域の圧縮データである「領域C符号データ」が、データ中の離れた位置に格納されることになる。
【0109】
このような符号化データを本発明の方式の装置において復号する際には、近接領域のデータがファイル上の離れた位置に格納するため、メモリ、キャッシュメモリ上に同時に両方のデータが格納できず、ディスクスワップが発生して性能が極端に低下してしまうことになる。
【0110】
これに対して、本実施形態の方式においては、図12(a)に示すように、あらかじめ領域処理に関して処理ライン数の閾値を決めておき、ライン数が一定を超えて、かつ、符号量が書込み量に達した段階、すなわちバンドラインを超え符号化データ量が達した時点で、書き込み、一旦その領域の処理を中断し、割り当てられた別の領域の処理に移行するものとする。
【0111】
これにより、同じラインに属する符号データを、図12(b)に模式的に示すように、圧縮データの中で近接させて格納することができるため、効率的にメモリアクセスを実施することができ、処理を高速に実施することができる。
【0112】
図9に示すシステムにおいては、図10により前述した分割数決定方式、ならびに図12を用いて説明した処理方式を用い、図13、図14および図15に示す、圧縮側、伸張側の処理フローにより処理を実現するものである。
【0113】
図13は、図12に示した「並列分割を伴う処理」を説明するフローチャートである。
【0114】
図13においては、最初に、図14を用いて後段に説明する「並列分割数決定処理」が実行され、「並列分割を伴う処理」を実行する際の分割数が設定される[ACT31]。
【0115】
印刷(画像出力)対象のページを記述する際に、記述対象が圧縮画像を含むか否かがチェックされる[ACT33]。
【0116】
記述対象が圧縮画像を含む場合[ACT33−YES]、処理対象領域が指示され[ACT34]、符号化処理後、符号化データが書き出される[ACT35]。
【0117】
続いて、書き込みPEデータが書き出され[ACT36]、記述すべき残りページ(印刷対象)がなくなるまで[ACT32−YES]、記述対象が圧縮画像を含むか否かのチェック([ACT33])、記述対象が圧縮画像を含む場合の処理対象領域の指示([ACT34])、符号化処理後、符号化データの書き出し([ACT35])が繰り返される。
【0118】
なお、記述対象が圧縮画像を含まない場合[ACT33−NO]、次の記述対象に対する記述が繰り返される[ACT37]。一方、記述すべき残りページ(印刷対象)がなくなった場合には、処理終了となる[ACT32−YES]。
【0119】
すなわち、
並列分離数決定処理
印刷全ページ記述完<記述終了> ?
記述対象が圧縮画像 ?
処理対象領域指示
符号化処理、符号化データ書き出し
書き込みPEデータ書き出し
記述処理
の各工程が実施される。
【0120】
図14は、「並列分割数決定処理」を説明するフローチャートである。
【0121】
図14に示す「並列分割数決定処理」では、はじめにプリンタコントローラCPUコア数がチェックされる(プリンタコントローラCPUコア数取得)[ACT41]。
【0122】
続いて、クライアント(PC)CPUコア数がチェックされる(クライアントCPUコア数取得)[ACT42]。
【0123】
以下、取得したプリンタコントローラCPUコア数とクライアントCPUコア数とが比較され[ACT43]、CPUコア数の多い方に従い、分割数が設定される。すなわち、プリンタコントローラCPUコア数が多い場合[ACT43−YES]、分割数はプリンタコントローラCPUコア数に設定される[ACT44]。一方、クライアント(PC)CPUコア数が多い場合[ACT43−NO]、分割数はクライアント(PC)CPUコア数に設定される[ACT45]。
【0124】
すなわち、
プリンタコントローラCPUコア数取得
クライアント<PC>CPUコア数取得
<CPUコア数比較>
<コントローラCPUコア数[大]>
分割数=コントローラCPUコア数
<PC<クライアント>CPUコア数[大]>
分割数=PCCPUコア数
が順に実行される。
【0125】
図15は、図14により説明したクライアントPC(CPUコア)内の処理に対応するプリンタコントローラ側の処理の一例を示す。
【0126】
図15から明らかなように、描画対象が圧縮画像を含むか否かがチェックされ[ACT52]、その対象が圧縮画像を含む場合[ACT52−YES]、並列分割数を取得し[ACT53]、処理対象領域が指示される[ACT54]。
【0127】
以下、復号処理が実行され[ACT55]、描画すべき残りページ(印刷対象)がなくなるまで[ACT51−YES]、描画対象が圧縮画像を含むか否かのチェック([ACT53])、描画対象が圧縮画像を含む場合の処理対象領域の指示([ACT54])、復号処理([ACT55])が繰り返される。
【0128】
なお、描画対象が圧縮画像を含まない場合[ACT53−NO]、次の描画対象に対する描画が繰り返される[ACT56]。また、描画すべき残りページ(印刷対象)がなくなった場合には、処理終了となる[ACT51−YES]。
【0129】
図16は、この発明が適用可能な画像処理装置(MFP)に適用可能なまたさらに別の画像圧縮方式を実現するためのシステムのブロック図である。なお、図16に示す例は、実質的に、図7に示したシステムのうちの2つのプロセッサコアPE1,PE2、2次キャッシュメモリ111A、および共有メモリ105を抜き出した状態と等しい。
【0130】
図16に示すシステムにおいては、共有メモリ105の利用効率の最適化のために、並列分割数を決定し処理を実施することにより、メモリにおいて生じるとされるボトルネックを解消し、処理を高速に実現することである。図16において、処理パラメータが、それぞれのコアが持つ1次キャッシュメモリからスワップアウトされることなく、また、処理データの2次キャッシュと共有メモリ間の転送に関する読み/書きのデータ量が転送に最適なサイズで行われ、オーバーヘッドが少なく、DMA転送が最適な条件で実行できるため、スループットを向上させることができる。なお、図17に、図16に示す実施形態により実現するコアの1つが共有メモリ上に配置するデータ構造の一例を示す。
【0131】
図16に示す例では、各コアプロセッサPE1,PE2が利用するシステム上のメモリ(共有メモリ105)がシステムバス109と接続した状態において、処理の際に、コアプロセッサPE1,PE2のそれぞれのメモリ(1次キャッシュメモリ)に格納されるデータはJPEGデータであり、メモリ(共有メモリ105)上には、圧縮・伸張のパラメータ、具体的には、量子化テーブル、ハフマンテーブル、色差(U,V成分)の間引き率、などが格納される。また、各プロセッサPE1,PE2と共有メモリ105との間に位置する2次キャッシュメモリ111a上のデータにおいては、個々の処理データの先頭(ヘッダ)に、パラメータが付属する。なお、各プロセッサPE1,PE2内の1次キャッシュメモリ上の個々のデータにおいてもは、ワーク領域の先頭に、パラメータが付属する。
【0132】
これらのパラメータは、あらかじめ決められた値を利用するものとする。また、処理の対象となる画像データと、それを圧縮した符号化データもメモリに格納され、これらはワーク用として確保された領域に格納される。
【0133】
圧縮されるデータのサイズは、圧縮パラメータと、圧縮されるデータの内容に依存して決まるため、正確にどの程度必要かは決めることができない。通常、この領域サイズを小さくしすぎると、共有メモリと、キャッシュメモリ間のデータ転送の回数が増加し、転送によるオーバーヘッドによりパフォーマンスが低下する。また、ワーク領域のサイズを大きくとりすぎると、1次キャッシュのデータがあふれ、2次キャッシュへのスワップ操作が発生し、これもパフォーマンスを低下させる一因となる。ここで、図17に示すが、任意のPEが共有メモリ上に定義するDMA最小転送サイズを最適化することで、DMA転送のオーバーヘッドを、平均的な画像の圧縮において最適に抑えることにより、多くの使用用途に関して、高いオーバーヘッドを実現できる。
【0134】
なお、図17は、任意のPEが共有メモリ上に定義するDMA最小転送サイズの構成の一例を示す。
【0135】
図17から明らかな通り、任意のPEが共有メモリ上に定義するDMA最小転送サイズは、パラメータ、入力データと出力データからなる処理データを含む。
【0136】
このように、図16および図17に示した通り、共有メモリが保持するデータは、前述のようにメモリ間のスワップ処理やDMA転送のオーバーヘッドを、平均的な画像の圧縮において最適に抑えることにより、多くの使用用途に関して、高いオーバーヘッドを実現することを可能とするものである。
【0137】
本実施形態は、図18により以下に説明するが、あらかじめサンプルチャートなどを、方式で採用するパラメータと同じ値によって圧縮し、平均の圧縮率を算出しておき、これを基にワークメモリサイズを予測させることで、平均的な利用シーンで、メモリスワップや、DMAによるオーバーヘッドが起こらないよう並列分割数を調整するものである。
【0138】
図18は、図16に示したシステムにおける並列分割数の決定方法について説明する一例を示す。
【0139】
処理に当り、システムは、キャッシュメモリを共有するプロセッサのグループの情報を取得する。例えば、4コアのCPUコアを有するプロセッサであって、それぞれ、2コアずつが2次キャッシュを共有するプロセッサの場合、グループの数は2であり、それぞれのグループが有するプロセッサコア数は2となる。この際、各コアが共有する共有キャッシュメモリのサイズ情報も取得する[ACT101]。
【0140】
プロセッサコア数の算出処理は、このグループ毎に実施され、はじめに全プロセッサグループに関する処理が完了したか、すなわちグループ数回ループしたか、の確認処理を実施する[ACT102]。
【0141】
次に、共有グループに属するCPUコア数を、そのグループの分割数に設定する。すなわち、「グループ内分割数 ← 共有グループ内のプロセッサ数」がセットされる[ACT103]。
【0142】
続いて、この分割数でこのグループの共有キャッシュサイズを割り、1コアに割り当てる共有キャッシュ上の領域のサイズを算出する[ACT104]。このとき、処理パラメータのデータサイズの情報を取得して、1プロセッサコアに割り当てられるキャッシュサイズから引くことにより、ワーク領域として利用できるメモリサイズを算出する[ACT105]。
【0143】
ここで算出したワークサイズに関して、平均圧縮率を取得し[ACT106]、これをワークサイズに掛けることにより、画像、および、符号化領域として利用される予測のサイズを算出する。すなわち、固定処理パラメータサイズを算出する[ACT107]。
【0144】
なお、ワーク領域では、符号化されるデータの領域のほうが少ないため、これをワークメモリの最小領域サイズとする[ACT108]。
【0145】
ここで、このワークメモリの最小領域サイズと2次キャッシュと共有メモリ間のDMA転送の最小転送サイズとを比較し[ACT109]、ワークメモリの最小領域サイズよりも共有メモリ間のDMA転送の最小転送サイズ小さい場合[ACT109−YES]、グループの分割数を1小さくし[ACT110]、改めて、ワークメモリの最小領域サイズを算出し、比較を行う[ACT111−YES]〜[ACT104],・・・,[ACT109]。
【0146】
ワークサイズが最小DMAサイズよりも大きい場合[ACT109−NO]、このプロセッサの分割数を並列処理の分割数に加え、つぎのプロセッサグループの分割数決定処理に移行する[ACT112]。
【0147】
すなわち、
キャッシュ共有プロセッサグループ情報取得
プロセッサ供給グループ数だけ処理した(グループ数回ループしたか) ?
グループ内分割数 ← 共有グループ内のプロセッサ数
キャッシュ共有プロセッサ数算出
平均圧縮率データ取得
固定処理パラメータサイズ算出
ワーク領域サイズ算出
ワーク領域内最小データ領域サイズ算出
最小データ領域サイズ > DMA最小転送サイズ ?
グループ内分割数 ← グループ内分割数−1
グループ内分割数 ≠ 1 ?
分割数 ← 分割数+グループ内分割数
の各工程が実施される。
【0148】
他のプロセッサグループに関する並列分割数決定の処理方法も、前記と同様に実施される。
【0149】
以上説明したように、この発明によれば、複写機(MFP)内部など、高解像度の巨大な画像を格納するシステムにおいて、格納領域を節約するため画像データを圧縮して格納する際に、近年のプリンタエンジンの高速化や、外部デバイスであるコンピュータ等の高速化に伴う、画像データのより高速な圧縮・伸長が可能となる。すなわち、CPUを複数持つマルチプロセッサシステムや、1つのCPUの中に複数のCPUを持つメニーコアプロセッサの普及が目ざましく、このようなプロセッサを用いて、前記巨大画像の圧縮・高速化に関する、方法、システムを、特に圧縮率の高いJPEG圧縮については、適用することができる。すなわち、本発明の実施形態を適用することで、複数のプロセッサを用いて、1枚の画像をJPEG方式のベースとした圧縮・伸長を高速に行うことができるシステムが実現できる。
【0150】
本発明の画像処理装置(MFP)では、圧縮の際、メモリに展開された画像データを縦方向に分割し、それぞれを別のプロセッサで並列にJPEG圧縮処理してゆく。個々のプロセッサはローカルメモリを持ち、一定量の圧縮データが貯まる度に、非同期に一定量の符号データを書込み、また、メモリ上に自プロセッサが書き込んだ旨の情報を記録する。全プロセッサの処理終了後、この書込み順データを圧縮画像データの後ろにつけて圧縮画像ファイルとする。復号時には、個々のプロセッサが、上記書込み順データを下に、一定量ずつ圧縮データを読み込みながら、画像データをメモリ上に復号していく。上記のように、本発明によると、圧縮データの依存関係は、各プロセッサの処理する領域に閉じられるため、他のプロセッサと同期をとらずに処理できるため、圧縮・伸長処理ともに、並列度に応じた性能が得られる。
【0151】
従って、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことができる。
【0152】
すなわち、本発明の画像圧縮・伸張方式を適用することにより、マルチコアCPUを搭載したシステムにおいて、並列に圧縮・伸張を行う際、各コアで実行する処理の実行率を高く、メモリアクセスに関する同期処理のオーバーヘッドが低く抑えることができる。
【0153】
また、圧縮・伸張処理を別のシステムで実施する場合にも、圧縮・伸張を実行するそれぞれのシステムで、並列度が高いほうのシステムの実行率を高くすることができるため、圧縮・伸張処理トータルでスループットを向上させることができ。
【0154】
また、複数のコアから共通にアクセスされる2次キャッシュメモリと、コアが内部に持つ1次キャッシュメモリ、共有される2次キャッシュメモリ間のスワップ動作の回数を抑えることで、処理速度が低下することを抑止できる。
【0155】
また、2次キャッシュメモリと共有メモリ間のDMA転送のデータ転送を適切なサイズで実施することにより、処理速度が低下することが防止出来る。
【0156】
従って、マルチコアCPUによる圧縮・伸張処理を、画質を損なうことなく、高速に処理させることができる。
【0157】
なお、この発明は、上述した各実施の形態に限定されるものではなく、その実施の段階ではその要旨を逸脱しない範囲で種々な変形もしくは変更が可能である。また、各実施の形態は、可能な限り適宜組み合わせて、もしくは一部を削除して実施されてもよく、その場合は、組み合わせもしくは削除に起因したさまざまな効果が得られる。
【0158】
例えば、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に画像分割を行い、その画像分割された個々の領域について、それぞれ、異なるプロセッサにより、色変換、DCT変換、量子化、ハフマン符号化し、それぞれのプロセッサで、ハフマン符号化データが一定量を超えた場合に、一定量分ずつそれぞれのプロセッサから書出された符号化データと、上記符号化データ作成時に、それぞれのプロセッサが書き込みを行う際に書出されたプロセッサを識別可能な書込みPEデータと、からなり、
前記符号化データに続いて書込みPEデータが連続する画像圧縮フォーマットとして、実現できる。
【0159】
また、ローカルメモリを持つ複数のプロセッサと、
各プロセッサがアクセス可能な共有メモリと、
入力画像の一部ずつ、または画像の全体をメモリに格納するメモリ制御部と、
格納された入力画像の一部、または、全体を、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に沿って画像領域を分割し、それぞれの分割領域の画像データを、前記プロセッサのいずれか1つに割り当てる形で、色変換、DCT、量子化、ハフマン符号処理を行い、処理の結果生成されるハフマン符号データが一定量を超えた場合には、一定量のハフマン符号データを書出し、書出したプロセッサを識別可能なデータをメモリに書き込み、全プロセッサの圧縮処理が完了した段階で、前記プロセッサを識別可能な書込みPEデータを書き出し、前記フォーマットの圧縮データ中から、書込みPEデータを読み込み、処理を行っているプロセッサに該当するデータだけを順に読み込みながら、ハフマン復号、逆量子化、逆DCT、逆色変換処理を行い圧縮画像を伸長処理するプログラムにより動作する画像処理部と、
を含む画像処理装置が実現できる。
【符号の説明】
【0160】
1、101…画像処理装置(画像処理システム)、11…システムバス、21…CPU(主制御装置)、23…共有メモリ、25…HDD(画像データ記憶装置)、103…メモリコントローラ、105…共有メモリ、107…HDD(画像データ記憶装置)、109…システムバス、111a〜111n…2次キャッシュメモリ、PE1〜PEn…演算ユニット(プロセッサコア、コアプロセッサ、単位処理装置)。
【先行技術文献】
【特許文献】
【0161】
【特許文献1】特開平05−143552号公報
【特許文献2】特開平11−170657号公報
【特許文献3】特開2003−348355号公報
【技術分野】
【0001】
この発明は、プロセッサを並列に実行してスループットを高めることが可能な画像処理装置に関する。
【背景技術】
【0002】
MFP(Multi-Functional peripheral、すなわち多機能周辺機器)と称される画像処理装置が広く普及している。
【0003】
MFPにおいては、印刷等の画像処理の高速化、高解像度化がますます要求されつつある。さらに、ファクシミリ、イメージスキャナ等の機能を加えたMFPも数多く市場に供給されており、大容量のデジタル画像データを高速に処理する必要性が大きくなってきている。
【0004】
MFPにおいて行われる各種の画像処理は、一般に、数多くの演算をできるだけ高速に行う必要があり、処理速度の高速化の方法としては、一般に個々の演算処理を並列に実行することにより、全体としてのスループットを向上させる方法が有効であり、既に数多くの装置や方法が提案されている。
【0005】
特許文献1(先行技術文献)には、画像をパケット(画像小区画と属性等とを含むデータ列)として生成し、各パケットを、複数のデータフロー型画像処理部を用いて並列処理する技術が提案されている。
【0006】
特許文献2(先行技術文献)には、描画オブジェクト(図形、テキスト、画像など)毎に複数の処理ユニットに処理を並列実行させる画像処理装置が提案されている。
【0007】
そして、この他にも、大量の画像データの高速処理に有効な方法として、処理ユニットを並列化して実行する方法がいくつか提案されている。これらの方法によれば、複数の画像パケットが個々の画像パケット毎に画像圧縮されるので、生成された個々の圧縮画像パケット(圧縮パケット)は、データ量が小さく、且つ独立して処理可能な1つの処理単位(画像単位)として扱うことが可能である。従って、圧縮画像パケットのデータ量が小さい場合には、MFPにおける利用や格納、或いは、通信ネットワークを介した転送等において利便性が高い。
【0008】
また、画像パケットを圧縮する方法には、各種のアルゴリズムが存在するが、近年、JPEG(Joint Photographic Experts Group)方式が広く普及している。
【0009】
MFPにJPEG方式の画像圧縮を採用する大きな利点としては、市場において標準的に広く使われている方法であり、ハードウェア回路等の利用に際しても、これまでに蓄積された設計開発の過程で改善されたものを採用することができるとともに、信頼性や安定性が高く、装置内部でのデータ転送においてもフォーマットが確定しているので、ハードウェア/ソフトウェアの双方共に、設計信頼性/拡張性/再利用性が高いことが挙げられる。
【0010】
このように、元画像の画像データを複数の画像パケットに分割すると共に、個々の画像パケット毎にJPEG方式による画像圧縮(以下、「JPEG圧縮」と略称する)を施すことによって得られる圧縮画像パケットを用いて、並列処理を行う画像処理装置を用いれば、高速なデータ転送/処理を行うことができ、且つ高効率な容量で扱うことができる。
【0011】
特許文献3(先行技術文献)には、画像データ圧縮処理であるJPEG形式の圧縮に関して、1ページ画像の圧縮に関して、圧縮単位であるMcu(Minimum code unit)をグルーピングし、グループの圧縮符号データを、Mcu間の依存関係をリセットするリスタートマーカーを、圧縮パケットに追加しながら、データを並列に処理する方式が提案されている。
【発明の概要】
【発明が解決しようとする課題】
【0012】
文献1または文献2に示されたJPEG圧縮は、上記のような利点があるが、圧縮データ長が可変であること、また、圧縮されるデータ間に依存関係があるため、圧縮・復号ともに画像先頭からの処理が必要であること、に起因して、複数プロセッサによる並列化での高速化が非常に難しい。
【0013】
一方、文献3が開示する方式では、Mcuグループの符号化データ書出し毎に、符号データ長を一定長に揃えるため、Mcuグループが増えた場合に、データの冗長性が高くなり、圧縮率が低下するという課題がある。また、Mcuグループ毎に、データ処理の終わりを確認せねばならず、処理対象となるデータによってプロセッサ毎の処理時間にバラツキが出た<プロセッサ毎の処理時間が異なる>場合、処理が完了したプロセッサは、他のプロセッサの処理完了を待たねばならず、プロセッサの利用率が低下し、その結果、圧縮・伸張処理の処理時間が増大することが知られている。
【0014】
この発明の目的は、プロセッサを複数持つシステムにおいて、JPEGをベースとした方式で、圧縮率が高く、高速に画像の圧縮・伸長を行うための、手段、画像フォーマットを提供することである。また、この発明の目的は、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことが可能なMFPを提供することである。
【課題を解決するための手段】
【0015】
この発明は、上記問題点に基づきなされたもので、JPEG方式で、互いに直交する2方向についてマトリクス状に分割した複数の領域の画像データを独立して2以上のプロセッサにより並列に圧縮する画像処理方法において、個々の画像データは、その領域の画像データを圧縮した際のプロセッサを特定する情報を含むことを特徴とする画像処理方法を提供するものである。
【発明の効果】
【0016】
この発明の一つの実施の形態によれば、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことができる。
【0017】
すなわち、本発明の画像圧縮・伸張方式を適用することにより、マルチコアCPUを搭載したシステムにおいて、並列に圧縮・伸張を行う際、各コアで実行する処理の実行率を高く、メモリアクセスに関する同期処理のオーバーヘッドが低く抑えることができる。
【0018】
また、圧縮・伸張処理を別のシステムで実施する場合にも、圧縮・伸張を実行するそれぞれのシステムで、並列度が高いほうのシステムの実行率を高くすることができるため、圧縮・伸張処理トータルでスループットを向上させることができ。
【0019】
また、複数のコアから共通にアクセスされる2次キャッシュメモリと、コアが内部に持つ1次キャッシュメモリ、共有される2次キャッシュメモリ間のスワップ動作の回数を抑えることで、処理速度が低下することを抑止できる。
【0020】
また、2次キャッシュメモリと共有メモリ間のDMA転送のデータ転送を適切なサイズで実施することにより、処理速度が低下することが防止出来る。
【0021】
従って、マルチコアCPUによる圧縮・伸張処理を、画質を損なうことなく、高速に処理させることができる。
【図面の簡単な説明】
【0022】
【図1】本発明が適用される可変長画像圧縮の一例を示す概略図。
【図2】本発明の複数PEでの圧縮・伸長処理が可能な圧縮方式を説明する概略図。
【図3】本発明の実施形態に関わるシステム全体のブロック図。
【図4】本発明の実施形態に関わる全体処理のフローチャート。
【図5】本発明の実施形態に関わる圧縮処理のフローチャート。
【図6】本発明の実施形態に関わる伸長処理のフローチャート。
【図7】本発明の別の(第2の)実施形態に関わるシステム全体のブロック図。
【図8A】図7に示した(第2の)実施形態に関わるシステムにおける1次、2次キャッシュ間メモリ操作を説明する概略図。
【図8B】図7に示した(第2の)実施形態に関わるシステムにおける1次、2次キャッシュ間メモリ操作を説明する概略図。
【図9】本発明の別の(第3の)実施形態に関わるシステム全体のブロック図。
【図10】図9に示した(第3の)実施形態における並列分割数決定方法、ならびに圧縮データの配列例を説明する概略図。
【図11】図9に示した(第3の)システムにおいて、分割数よりも少ないコア数のCPUによる処理の例を説明する概略図。
【図12】図9に示した(第3の)システムにおいて、分割数よりも少ないコア数のCPUによる処理の別の(本願の特徴的な改良結果を含む)例を説明する概略図。
【図13】図9に示した(第3の)システムにおいて、クライアントPC内処理のフローチャート。
【図14】図13に示したクライアントPC内処理における「並列分割数決定処理」を説明するフローチャート。
【図15】図9に示した(第3の)システムにおいて、プリンタコントローラ内処理のフローチャート。
【図16】本発明の別の(第4の)実施形態に関する処理のメモリ利用イメージ。
【図17】図16に示した方式によりコアの1つが共有メモリ上に配置するデータ(のイメージ)を説明する概略図。
【図18】図16に示した(第4の)システムにおいて実行される「分割数決定処理」を説明するフローチャート。
【発明を実施するための形態】
【0023】
以下、図面を参照して、本発明の実施の形態について説明する。
【0024】
図1は、この発明が適用可能な画像処理装置(MFP、Multi-Functional Peripheral)の実施形態に関わる最も基本となるシステムのブロック図を示す。
【0025】
図1に示す画像処理装置(以下、システムと称する)1は、システムバス11を介して相互に接続する複数のデバイス、例えばCPU(主制御装置)21、共有メモリ23、HDD(Hard Disc Drive、大容量記憶装置)25、ならびにn(nは正の整数)個のPE(演算ユニット)PE1〜PEnを含む。
【0026】
システムバス11は、外部とのデータ入出力や、内部のデータ通信に利用される。
【0027】
共有メモリ23については、システム内で結合されているそれぞれのプロセッサPE1〜PEnからの書込み、および読込みが可能である。
【0028】
次に、図1に示すシステム1に適用可能な広く利用されているJPEG(Joint Photographic Experts Group)圧縮方式、およびそれをより高速度化可能な本提案(本願)の圧縮方式について説明する。
【0029】
図2は、JPEG圧縮の符号化方式を簡単に説明するものである。
【0030】
JPEG圧縮では、画像データは、Mcu(Minimum code unit)と呼ばれる圧縮の最小単位の画素のまとまり毎に圧縮される。図2の例では、高さ(方向)16ピクセル、幅(方向)16ピクセルの画像圧縮を、高さ8ピクセル、幅8ピクセルのMcu単位で圧縮するものとする。
【0031】
圧縮される画像データは、Mcuの行単位に処理される。
【0032】
処理は、Mcuブロック内の64画素を、RGBカラーの入力画像データを、YCCの輝度色差カラーデータに色変換処理し、YCCの成分毎にDCT処理して周波数成分に変換した後、周波数成分毎に量子化テーブルを用いて量子化し、最後に量子化された値をハフマン符号化により符号化するものである。
【0033】
この処理の中で、ハフマン符号化の符号を格納する際、DCT変換後に生成されるMcuブロック内の直流成分信号の格納に関しては、前のMcuを圧縮した際の直流成分との差分値として値が格納される。この場合、隣接するMcu間では、画像の直流成分は比較的似ることから、差分値の値が小さくなり格納されるデータ長が短くなり圧縮率が高くなる効果がある。
【0034】
しかし、この方式によりMcu圧縮符号の間に依存関係が生じ、16×16画像のMcu符号データ間には、図示するとおり、特有の依存関係(「Mcu(0,0)」に隣接して「Mcu(0,1)」が位置し、「Mcu(0,1)」の「Mcu(0,0)」とは逆側に「Mcu(1,0)」が位置する)が存在する。
【0035】
このように圧縮された画像データを伸長する際には、圧縮された画像の先頭のMcuブロックに該当する符号データから順に、ハフマン復号化、隣接Mcu直流成分より直流成分算出、逆量子化、逆DCT変換、YCCカラーデータからRGBへの色変換が順に行われる。
【0036】
図3は、広く利用されている上述のJPEG圧縮方式の処理において実績があるハードウェア回路や装置内部におけるデータ転送のフォーマットの一部または多くの要素を共通化でき、より高速度化可能な圧縮方式とその圧縮されたデータの伸長処理を実現するもので、図1に示したn個のプロセッサPE1〜PEnの内、2つのプロセッサPE1、およびPE2により、圧縮・伸長を、並行に処理することで、より処理速度を向上できる処理の一例を示す。
【0037】
それぞれのプロセッサPE1,PE2は、画像データメモリに展開したときにアドレスが連続する画像方向を横方向としたとき、それに垂直な方向を縦方向としたとき、画像データを縦方向に一定間隔で分けて、分かれた領域をプロセッサの1つに割り当てて圧縮させる。
【0038】
それぞれのプロセッサPE1,PE2は、圧縮の際、上述のJPEGとは異なり、Mcu直流成分の差分を振り分けられた領域に閉じた形で、領域終端に来たところで、領域内の次のMcu行の先頭に当たる要素の計算のベースとして演算する。
【0039】
これにより、分けられた領域間のデータの依存関係が無くなる。
【0040】
それぞれのプロセッサPE1,PE2が上記のように割り当てられた領域を圧縮する際、圧縮データ長は、圧縮する画像データによって変わるため、同じ速度で動作するプロセッサ同士でも、ローカルメモリ(ローカルバッファと称する場合もある)に、データが貯まっていく速度が異なる。
【0041】
本発明では、領域を担当するそれぞれのプロセッサは、ローカルメモリにある一定量の圧縮データが貯まった段階で書込みを行うため、使用するローカルメモリが少なくても実装できる。前記書き出しを行う一定量であるが、これについては、そのシステムが書き出すメディアに対して最適化された値がよい。
【0042】
図3から明らかであるが、システム1のHDD25に圧縮データを書き出す場合、システム1がHDD25にデータを書き込む際の大きさ、例えばシステム1がHDD25にデータを書き込む際に2kバイト([kb])ずつデータを書き込むのであれば、上記ローカルバッファに貯める圧縮データの量を2kバイト([kb])とする。
【0043】
前記ローカルバッファに蓄積された圧縮データを書き込む際、どのプロセッサが書き込みを行ったかを判別可能なデータを、同じように書き出す。このデータは、符号データとは異なる領域に記憶され、画像全体の圧縮処理が完了するまで保持される。
【0044】
プロセッサが割り当てられた領域の画像をすべて圧縮したあと、残った圧縮データを上記のように書き出して処理を完了する。
【0045】
すべて領域の圧縮処理が完了すると、蓄積された書込みPEデータ、および圧縮画像パラメータ(幅、高さ、カラー/モノクロ)と、書込みPEデータが書き込まれたオフセットが書き出される。
【0046】
これにより、画像を縦に帯状に分けて圧縮されたデータの入った圧縮ファイルが完成する。
【0047】
次に、前記圧縮された画像ファイルの伸張処理について説明する。
【0048】
伸張処理では、それぞれのプロセッサが、書込みPEデータが書き込まれたオフセットを、ファイル終端部分から読み取り、続いて、書込みPEデータを読み込む。各プロセッサは、書込みPEデータを参照し、自プロセッサが書き込んだ符号化データを読み込み、順次、ハフマン復号、隣接Mcuの直流成分から自Mcuの直流成分算出、逆量子化、逆DCT、YCCからRGBへの色変換処理を行う。
【0049】
処理の際、圧縮データが不足した際には、書込みPEデータを参照し、次の自PEが書き出した圧縮データを読み込む。
【0050】
復号された画像データは、各プロセッサからアクセス可能なメモリ領域(共有メモリ)23に書き込まれる。
【0051】
より詳細には、図示のように、
圧縮<1> → 各PEが画像を縦方向に圧縮
PE1 CodeMcu(0,0) CodeMcu(1,0)
PE2 CodeMcu(0,1) CodeMcu(1,1)
圧縮<2> → 各PEが、A[kb]分圧縮する度、符号データを書き出す
により、圧縮が行われる。
【0052】
一方、伸長の場合は、
伸長<1>書き込みPEデータに従い、A[kb]ずつデータをロード
伸長<2>復号処理、及び復号画像書き出し
PE1 書き込みPEデータ
PE2 書き込みPEデータ
となる。
【0053】
図4は、本発明の実施形態に関わる、全体処理のフローチャートである。
【0054】
システムは、画像の入力処理か、出力処理を、外部から受ける[ACT01]。
【0055】
入力処理を受け付けた場合[ACT01−YES]、入力される画像ファイルに関する情報を、圧縮ファイルのヘッダ部分に書き出す[ACT02]。
【0056】
次に、画像領域を縦方向に分けて、それを各プロセッサに割り当てて、この領域情報と、圧縮処理の開始を指示する[ACT03]。
【0057】
この後、それぞれのプロセッサは、図5を用いて以下に説明するフローチャートに示す処理を行い、割り当てられた領域を圧縮処理する[ACT04]。
【0058】
圧縮を行うプロセッサは、圧縮コードとともに、書出しPEデータを書き出す[ACT05]。
【0059】
全プロセッサの処理完了後、このデータは圧縮コードに引き続いて書き込まれ、最後に、この書出しPEデータが書き込まれているオフセット情報を書き出し、圧縮処理は完了する[ACT06]。
【0060】
出力処理を受け付けた場合[ACT01−NO]、各プロセッサに復号処理を指示する[ACT07]。この後、復号処理を指示されたプロセッサは図6により後段に説明するフローチャートの処理を行って画像(データ)の伸長を行う。
【0061】
すなわち、
画像のヘッダ情報をファイルに書き出し
各PEに縦分割領域をアサインし、圧縮処理開始を指示
各プロセッサでの圧縮終了待ち
書き込みPEデータを書き出し
書き込みPEデータオフセットを書き出し
各PEに伸長処理開始を指示
が、順に実行される。
【0062】
図5は、図4を用いて説明した圧縮時の各プロセッサでの処理に関するフローチャートを示す。
【0063】
各プロセッサは、自プロセッサが圧縮処理する画像の領域を示す情報を取得する。領域の指定に関しては、x列目〜y列目という形で指定される[ACT11]。
【0064】
共有メモリ上の画像データから、処理する対象となる画像データをローカルメモリにコピーして圧縮処理を行う。圧縮処理は、領域左端の8×8領域(図2におけるMcu(0,0))から始め、それを画像横方向に処理していき、領域の端(図2におけるMcu(0,1))に達したら、画像左端で、高さをMcuの高さ8だけ下方にずらした位置(図2におけるMcu(1,0))から再び処理を進めるという順序で行われる。処理に際して、圧縮された符号データは、一旦、ローカルメモリに格納される。
【0065】
一定量(A[kb])のMcuデータを圧縮する毎に、ローカルメモリに書き出した符号量をチェックし、一定量を超えていれば、符号データの書き出しを行う。この際、他のプロセッサと同じ領域にデータを書き込んでしまわないよう、書込み管理用のセマフォ(semaphore)を用いて排他的にデータを書き込む[ACT12]〜[ACT13−YES]〜[ACT16−YES]〜[ACT17]〜[ACT18−NO]。
【0066】
圧縮対象となる画像データの圧縮処理が完了した場合[ACT14−YES]は、符号バッファに書き込まれている符号量をチェックし、一定量に足りていない場合には、不足分を無効データの書き込みにより埋めた後、データを書き込む[ACT15]。
【0067】
すなわち、
処理する画像列情報を取得
圧縮処理
圧縮データがA[kb]以上 ?
圧縮完了 ?
A[kb]まで無効データを詰める
データ書き込み可能か ?
A[kb]圧縮データ、書き込みPEデータ書き出し
圧縮完了 ?
のルーチンが実行される。
【0068】
図6に、図4を用いて説明した各プロセッサでの処理により圧縮された符号データの伸張時の各プロセッサでの処理に関するフローチャートを示す。
【0069】
伸張処理では、各プロセッサが圧縮データに書き込まれた画像情報を読み込む。このデータには、画像に関する(幅、高さ、カラー/モノクロ)の情報や、圧縮(どのプロセッサが、どの領域を圧縮)に関わる情報が含まれる[ACT21]。
【0070】
次に、データ終端に書き込まれた書込みPEデータのオフセット情報、ならびに、オフセット情報を元にロードした書込みPEデータをロードする[ACT22]。画像情報と書込みPEデータから、自プロセッサが、画像のどの領域を伸張処理するかを読み取り、書込みPEデータをもとにして処理すべき圧縮データをロードしながら画像を復号処理する[ACT23],[ACT24]。
【0071】
復号処理の過程では、Mcu単位で画像が復元され、各プロセッサは、一定のライン数N分画像をローカルメモリに復元した後[ACT25],[ACT26]、画像データを共有のメモリに書き込む[ACT27]。
【0072】
すべてのプロセッサの処理が完了すれば、共有メモリ上に画像が展開され、処理は終了である[ACT28−YES]。
【0073】
換言すると、
画像情報を取得
書き込みPEデータ読み込み
A[kb]圧縮データ読み込み
信号処理
圧縮データなし ?
Nライン分書き出し
復号完了 ?
の順で、処理が行われる。
【0074】
このように、入力画像の圧縮に関して、画像メモリ上に展開される画像を副走査方向に分割し、それぞれの領域をプロセッサに割り当て並列に符号化処理させることで、メニーコアプロセッサや、マルチCPU環境で、従来の方式に比べて高速な圧縮処理が実現できる。また、圧縮データ書き出しも、各プロセッサで圧縮された符号データが保存に適したサイズまでたまった段階ですぐに書き込むことができ、オーバーヘッドが少なく、高速化が実現できる。
【0075】
図7は、この発明が適用可能な画像処理装置(MFP)に適用可能な別の画像圧縮方式を実現するためのシステムのブロック図である。なお、図7に示すシステムは、図1〜図6を用いて前述した画像処理において、各プロセッサが画像圧縮データを書き出す際のデータサイズが、キャッシュメモリライン長のn倍(n≧1)であることを特徴とするものである。
【0076】
図7において、システム101は、それぞれが1次キャッシュメモリを有する複数(n個(nは正の整数))のプロセッサコアPE1,PE2,・・・,PEn−1,PEn、各プロセッサコアPE1〜PEnから直接接続され、データの読み出しと書き込みが行なわれる2次キャッシュメモリ111a,・・・,111n(nは正の整数)、それぞれのメモリへのデータ書込み、読出しを制御するメモリコントローラ103、システム101内に存在する全プロセッサコアPE1〜PEnから1次、2次キャッシュメモリ111a〜111nを介してアクセスされる共有メモリ105、画像データ、圧縮された画像データである符号化データ、圧縮処理に関するパラメータ、並びにプロセッサコアで実行されるプログラムを格納するHDD107、および2次キャッシュメモリ、HDD、および共有メモリ間でのデータの送受信を実現するシステムバス109からなる。なお、2次キャッシュメモリ111a〜111nは、一例ではあるが、それぞれ2つのプロセッサコアを単位としてシステムバス109と接続するものとする。
【0077】
本実施形態において処理される画像データ、並びに画像データを圧縮した符号化データは、共有メモリ上105に格納される。
【0078】
1次キャッシュメモリ、2次キャッシュメモリ、共有メモリは、この順に従って、CPUからのアクセス速度が遅くなり、また、格納出来るデータ容量が大きいものとする。
【0079】
キャッシュメモリは、一定長データをラインとしてデータを格納し、このラインデータを最小単位として読出し書込みを行う。1バイト分のデータの書換えを行う場合、アクセスする1バイトのデータと同じラインに存在するデータと共に読み込みを行い、プロセッサコア内のレジスタ上で、このライン上の必要なバイトデータの書換えが行われた後、再び、同ラインのデータと共に書込みが行われる。
【0080】
複数のプロセッサコアからなるシステムにおいて、メモリコントローラ103はメモリ上に保持されたデータがプログラムに記載されたとおりに保持されるような一貫性を保つためにコヒーレント処理という処理を実施する。
【0081】
図8Aは、図7に示したシステムを用いた1次、2次キャッシュメモリ間のメモリ操作に関する一例を示す。
【0082】
例えば、プロセッサコア1とプロセッサコア2が、図7における左から1番目と2番目のプロセッサコアPE1,PE2であるとしたとき、プロセッサコア1(PE1)とプロセッサコア2(PE2)が、アドレスが隣接するデータを読み込んだものとする。また、このとき、隣接する2つのデータが、アドレス的に2次キャッシュメモリ上の同ライン上に存在したとする。
【0083】
この同一ライン上にあるデータは、プロセッサコア1とプロセッサコア2内の1次キャッシュメモリ上に同じデータとしてコピーされる。
【0084】
この後、プロセッサコア1このデータを書換えたとき、プロセッサコア1とプロセッサコア2が1次キャッシュメモリとして保持しているデータに違いが発生し、状態として、プロセッサコア2のデータは、プロセッサコア1が行った変更が反映されていない古いデータが存在することになる。
【0085】
このため、メモリコントローラ103は、各プロセッサコアからのメモリへのアクセスをチェックしながら、上記のようにメモリ上のデータの書換えが行われた場合、一貫性が保たれていないデータ領域の書換え処理を行う。すなわち、プロセッサコア1(PE1)が1次キャッシュメモリを書換えた場合、メモリコントローラ103は、プロセッサコア2(PE2)内にコピーされたデータに一貫性が保たれていないことを検出し、プロセッサコア1(PE1)内の1次キャッシュメモリの該当するキャッシュラインのデータを、プロセッサコア2(PE2)の1次キャッシュのデータに上書きする。
【0086】
このように、キャッシュメモリの一貫性を保つためのコヒーレント処理は、ラインと呼ばれるデータ単位で処理される。
【0087】
しかし、実際には、データを共有しない処理を、プロセッサコア1、2が実施する際、これらのデータが同一のキャッシュラインに存在する場合には、前述のコヒーレント処理が実施される(ことになる)。論理的には問題がないが、コヒーレント処理は、異なるメモリ間におけるデータコピー処理が行われ、かつこのコヒーレント処理の間は、プロセッサコアからのこの領域へのアクセスができない状態になる。
【0088】
このため、上述のようなデータを共有しない処理に対するコヒーレント処理の実行は、オーバーヘッドが大きく、論理的には、必要のないデータのコピーであるから、フォルスシェアリング(false sharing)と呼ばれる。
【0089】
図8Bは、図7に示したシステムを用いた1次、2次キャッシュメモリ間のメモリ操作に関する別の一例を示す。すなわち、図8Bは、図8Aにより説明した実施形態において生じるフォルスシェアリングに関連して各プロセッサコアの実行効率が低下することを避けるため、圧縮データを書き込む際のサイズを、2次キャッシュメモリのキャッシュラインサイズのN倍とすることを特徴とするものである。
【0090】
図8Bにおいては、図8Aにより説明した符号化データ書込みのサイズを、キャッシュメモリのラインサイズの整数倍にとることにより、共有メモリ上で、メモリを共有する複数のコアが利用する領域が、それぞれ、キャッシュラインをまたぐことがなくなる。これにより、お互いがメモリにアクセスする際に、他のプロセッサが利用するデータを読み込まずに済む。従って、メモリコントローラ103が実施するコヒーレント操作が発生しなくなり、無駄なオーバーヘッドが発生せず、処理が高速に実現できる。
【0091】
より詳細には、図8Bにおいて、プロセッサコア1(PE1)、およびプロセッサコア2(PE2)が、割り当てられた領域の圧縮処理を、並列に実行している場合、プロセッサコア1は、プロセッサコア1による圧縮処理が進行し、符号化データがキャッシュラインサイズに達した段階で、符号化データをキャッシュラインサイズ分だけメモリに書き込む。これにより、符号化データが2次キャッシュメモリに書き出される。
【0092】
この書き込みサイズがキャッシュラインサイズに合っていない(一致しない)場合は、前述のように、符号化データを記載する他のCPUコアに対してコヒーレント処理が発生して性能、特に処理速度が大幅に低下するが、図8Bに示した本方式では、メモリ書込みサイズをキャッシュラインサイズの整数倍に制限したことにより、コヒーレント動作が発生せず、各プロセッサ間の同期処理に伴うオーバーヘッドを低減することができる。
【0093】
図9は、この発明が適用可能な画像処理装置(MFP)に適用可能な、さらに別の画像圧縮方式を実現するためのシステムのブロック図である。
【0094】
図9に示す実施形態は、圧縮処理、伸張処理を実施する装置の両方、もしくは、いずれかがマルチコアのプロセッサを具備する際、画像データの並列分割数を、これらのプロセッサ数に応じて切替えることにより、高いスループットを実現することを特徴とするものである。
【0095】
図9に示すシステム201は、クライアントPC(データ供給元)221とプリンタエンジン(MFPを含む)231が、ネットワーク(例えば、LAN)により、相互に接続された状態において、クライアントPC221およびプリンタエンジン231へ画像出力のための画像データを入力するプリンタコントローラ233のそれぞれが、画像圧縮、伸張処理を受け持つマルチコアCPUを含むことを特徴とする。
【0096】
このシステムでは、ユーザが印刷する文書中のイメージデータは、クライアントPC側のマルチコアにより圧縮される。
【0097】
文書中の画像が圧縮された状態のデータは、ネットワークを介してプリンタエンジン231と接続するプリンタコントローラ233に送信される。
【0098】
プリンタコントローラ233では、印刷データの受信後、このデータを画像形成処理するが、この際、受信された印刷データ中の圧縮されたイメージデータの伸張処理を自身のマルチコアにより伸張処理する。
【0099】
このように、文書中に含まれるイメージデータの圧縮、伸張処理をマルチコアで実現することにより並列処理し、印刷データ量のデータサイズを減らしてクライアントPCと、コントローラ間の通信時間を短縮することにより、プリントのスループットを向上させることが出来る。
【0100】
本実施形態に関するイメージデータ圧縮の並列化処理のための、分割サイズの決定方法について説明する。
【0101】
図10に、クライアントPCと、プリンタコントローラのCPU(プロセッサ)コア数に違いがある場合の並列分割の決定方法の例を示す。
【0102】
ここで、クライアントPCのCPUコア数が2、プリンタコントローラのCPUコア数が4であるとする。本実施形態における並列分割数は、圧縮処理、伸張処理を実施するCPUのコア数を比較し数が多いものを採用する。
【0103】
図10の場合、圧縮側がコア数2、伸張側がコア数4であるため、並列化のための画像領域の分割数は4となる。このように分割数を決定された際、圧縮処理側、伸張処理側でコア数が異なる場合には、どちらかの側が実際のCPUコア数よりも多く画像を分割する形になる。
【0104】
図11および図12に、図10に示したクライアントPCと、プリンタコントローラのプロセッサコア数に違いがある場合において、CPUコア数が分割数よりも少ない場合における処理例を示す。
【0105】
CPUコア数が少ない場合には、1つのプロセッサコアに対して、複数の画像分割領域が処理対象として割り当てられる。
【0106】
図11は、CPUコア数が2に対して、並列分割数が3に設定された場合であり、この際、CPUコア1に対しては、領域Aと領域C、CPUコア2に対しては、領域Bが割り当てられたものとする。
【0107】
この場合、本発明第1実施形態の方式をそのまま、この圧縮に用いると、図11(a)のような処理の流れとなる。すなわち、初めに、コアが割り当てられた領域A,Bの処理が実施され、圧縮データには、これらの領域の符号化データが、書込み量に達した段階で随時書き込まれていき、領域Aの書込みが完了した段階で、CPUコア1が領域Cの圧縮処理を実施する。
【0108】
このように、圧縮処理を実施した場合、符号化されたデータは、図11(b)に示すように、はじめにCPUコアが割り当てられる領域の圧縮データである「領域A符号データ」と「領域B符号データ」の組に対して、そうでない領域の圧縮データである「領域C符号データ」が、データ中の離れた位置に格納されることになる。
【0109】
このような符号化データを本発明の方式の装置において復号する際には、近接領域のデータがファイル上の離れた位置に格納するため、メモリ、キャッシュメモリ上に同時に両方のデータが格納できず、ディスクスワップが発生して性能が極端に低下してしまうことになる。
【0110】
これに対して、本実施形態の方式においては、図12(a)に示すように、あらかじめ領域処理に関して処理ライン数の閾値を決めておき、ライン数が一定を超えて、かつ、符号量が書込み量に達した段階、すなわちバンドラインを超え符号化データ量が達した時点で、書き込み、一旦その領域の処理を中断し、割り当てられた別の領域の処理に移行するものとする。
【0111】
これにより、同じラインに属する符号データを、図12(b)に模式的に示すように、圧縮データの中で近接させて格納することができるため、効率的にメモリアクセスを実施することができ、処理を高速に実施することができる。
【0112】
図9に示すシステムにおいては、図10により前述した分割数決定方式、ならびに図12を用いて説明した処理方式を用い、図13、図14および図15に示す、圧縮側、伸張側の処理フローにより処理を実現するものである。
【0113】
図13は、図12に示した「並列分割を伴う処理」を説明するフローチャートである。
【0114】
図13においては、最初に、図14を用いて後段に説明する「並列分割数決定処理」が実行され、「並列分割を伴う処理」を実行する際の分割数が設定される[ACT31]。
【0115】
印刷(画像出力)対象のページを記述する際に、記述対象が圧縮画像を含むか否かがチェックされる[ACT33]。
【0116】
記述対象が圧縮画像を含む場合[ACT33−YES]、処理対象領域が指示され[ACT34]、符号化処理後、符号化データが書き出される[ACT35]。
【0117】
続いて、書き込みPEデータが書き出され[ACT36]、記述すべき残りページ(印刷対象)がなくなるまで[ACT32−YES]、記述対象が圧縮画像を含むか否かのチェック([ACT33])、記述対象が圧縮画像を含む場合の処理対象領域の指示([ACT34])、符号化処理後、符号化データの書き出し([ACT35])が繰り返される。
【0118】
なお、記述対象が圧縮画像を含まない場合[ACT33−NO]、次の記述対象に対する記述が繰り返される[ACT37]。一方、記述すべき残りページ(印刷対象)がなくなった場合には、処理終了となる[ACT32−YES]。
【0119】
すなわち、
並列分離数決定処理
印刷全ページ記述完<記述終了> ?
記述対象が圧縮画像 ?
処理対象領域指示
符号化処理、符号化データ書き出し
書き込みPEデータ書き出し
記述処理
の各工程が実施される。
【0120】
図14は、「並列分割数決定処理」を説明するフローチャートである。
【0121】
図14に示す「並列分割数決定処理」では、はじめにプリンタコントローラCPUコア数がチェックされる(プリンタコントローラCPUコア数取得)[ACT41]。
【0122】
続いて、クライアント(PC)CPUコア数がチェックされる(クライアントCPUコア数取得)[ACT42]。
【0123】
以下、取得したプリンタコントローラCPUコア数とクライアントCPUコア数とが比較され[ACT43]、CPUコア数の多い方に従い、分割数が設定される。すなわち、プリンタコントローラCPUコア数が多い場合[ACT43−YES]、分割数はプリンタコントローラCPUコア数に設定される[ACT44]。一方、クライアント(PC)CPUコア数が多い場合[ACT43−NO]、分割数はクライアント(PC)CPUコア数に設定される[ACT45]。
【0124】
すなわち、
プリンタコントローラCPUコア数取得
クライアント<PC>CPUコア数取得
<CPUコア数比較>
<コントローラCPUコア数[大]>
分割数=コントローラCPUコア数
<PC<クライアント>CPUコア数[大]>
分割数=PCCPUコア数
が順に実行される。
【0125】
図15は、図14により説明したクライアントPC(CPUコア)内の処理に対応するプリンタコントローラ側の処理の一例を示す。
【0126】
図15から明らかなように、描画対象が圧縮画像を含むか否かがチェックされ[ACT52]、その対象が圧縮画像を含む場合[ACT52−YES]、並列分割数を取得し[ACT53]、処理対象領域が指示される[ACT54]。
【0127】
以下、復号処理が実行され[ACT55]、描画すべき残りページ(印刷対象)がなくなるまで[ACT51−YES]、描画対象が圧縮画像を含むか否かのチェック([ACT53])、描画対象が圧縮画像を含む場合の処理対象領域の指示([ACT54])、復号処理([ACT55])が繰り返される。
【0128】
なお、描画対象が圧縮画像を含まない場合[ACT53−NO]、次の描画対象に対する描画が繰り返される[ACT56]。また、描画すべき残りページ(印刷対象)がなくなった場合には、処理終了となる[ACT51−YES]。
【0129】
図16は、この発明が適用可能な画像処理装置(MFP)に適用可能なまたさらに別の画像圧縮方式を実現するためのシステムのブロック図である。なお、図16に示す例は、実質的に、図7に示したシステムのうちの2つのプロセッサコアPE1,PE2、2次キャッシュメモリ111A、および共有メモリ105を抜き出した状態と等しい。
【0130】
図16に示すシステムにおいては、共有メモリ105の利用効率の最適化のために、並列分割数を決定し処理を実施することにより、メモリにおいて生じるとされるボトルネックを解消し、処理を高速に実現することである。図16において、処理パラメータが、それぞれのコアが持つ1次キャッシュメモリからスワップアウトされることなく、また、処理データの2次キャッシュと共有メモリ間の転送に関する読み/書きのデータ量が転送に最適なサイズで行われ、オーバーヘッドが少なく、DMA転送が最適な条件で実行できるため、スループットを向上させることができる。なお、図17に、図16に示す実施形態により実現するコアの1つが共有メモリ上に配置するデータ構造の一例を示す。
【0131】
図16に示す例では、各コアプロセッサPE1,PE2が利用するシステム上のメモリ(共有メモリ105)がシステムバス109と接続した状態において、処理の際に、コアプロセッサPE1,PE2のそれぞれのメモリ(1次キャッシュメモリ)に格納されるデータはJPEGデータであり、メモリ(共有メモリ105)上には、圧縮・伸張のパラメータ、具体的には、量子化テーブル、ハフマンテーブル、色差(U,V成分)の間引き率、などが格納される。また、各プロセッサPE1,PE2と共有メモリ105との間に位置する2次キャッシュメモリ111a上のデータにおいては、個々の処理データの先頭(ヘッダ)に、パラメータが付属する。なお、各プロセッサPE1,PE2内の1次キャッシュメモリ上の個々のデータにおいてもは、ワーク領域の先頭に、パラメータが付属する。
【0132】
これらのパラメータは、あらかじめ決められた値を利用するものとする。また、処理の対象となる画像データと、それを圧縮した符号化データもメモリに格納され、これらはワーク用として確保された領域に格納される。
【0133】
圧縮されるデータのサイズは、圧縮パラメータと、圧縮されるデータの内容に依存して決まるため、正確にどの程度必要かは決めることができない。通常、この領域サイズを小さくしすぎると、共有メモリと、キャッシュメモリ間のデータ転送の回数が増加し、転送によるオーバーヘッドによりパフォーマンスが低下する。また、ワーク領域のサイズを大きくとりすぎると、1次キャッシュのデータがあふれ、2次キャッシュへのスワップ操作が発生し、これもパフォーマンスを低下させる一因となる。ここで、図17に示すが、任意のPEが共有メモリ上に定義するDMA最小転送サイズを最適化することで、DMA転送のオーバーヘッドを、平均的な画像の圧縮において最適に抑えることにより、多くの使用用途に関して、高いオーバーヘッドを実現できる。
【0134】
なお、図17は、任意のPEが共有メモリ上に定義するDMA最小転送サイズの構成の一例を示す。
【0135】
図17から明らかな通り、任意のPEが共有メモリ上に定義するDMA最小転送サイズは、パラメータ、入力データと出力データからなる処理データを含む。
【0136】
このように、図16および図17に示した通り、共有メモリが保持するデータは、前述のようにメモリ間のスワップ処理やDMA転送のオーバーヘッドを、平均的な画像の圧縮において最適に抑えることにより、多くの使用用途に関して、高いオーバーヘッドを実現することを可能とするものである。
【0137】
本実施形態は、図18により以下に説明するが、あらかじめサンプルチャートなどを、方式で採用するパラメータと同じ値によって圧縮し、平均の圧縮率を算出しておき、これを基にワークメモリサイズを予測させることで、平均的な利用シーンで、メモリスワップや、DMAによるオーバーヘッドが起こらないよう並列分割数を調整するものである。
【0138】
図18は、図16に示したシステムにおける並列分割数の決定方法について説明する一例を示す。
【0139】
処理に当り、システムは、キャッシュメモリを共有するプロセッサのグループの情報を取得する。例えば、4コアのCPUコアを有するプロセッサであって、それぞれ、2コアずつが2次キャッシュを共有するプロセッサの場合、グループの数は2であり、それぞれのグループが有するプロセッサコア数は2となる。この際、各コアが共有する共有キャッシュメモリのサイズ情報も取得する[ACT101]。
【0140】
プロセッサコア数の算出処理は、このグループ毎に実施され、はじめに全プロセッサグループに関する処理が完了したか、すなわちグループ数回ループしたか、の確認処理を実施する[ACT102]。
【0141】
次に、共有グループに属するCPUコア数を、そのグループの分割数に設定する。すなわち、「グループ内分割数 ← 共有グループ内のプロセッサ数」がセットされる[ACT103]。
【0142】
続いて、この分割数でこのグループの共有キャッシュサイズを割り、1コアに割り当てる共有キャッシュ上の領域のサイズを算出する[ACT104]。このとき、処理パラメータのデータサイズの情報を取得して、1プロセッサコアに割り当てられるキャッシュサイズから引くことにより、ワーク領域として利用できるメモリサイズを算出する[ACT105]。
【0143】
ここで算出したワークサイズに関して、平均圧縮率を取得し[ACT106]、これをワークサイズに掛けることにより、画像、および、符号化領域として利用される予測のサイズを算出する。すなわち、固定処理パラメータサイズを算出する[ACT107]。
【0144】
なお、ワーク領域では、符号化されるデータの領域のほうが少ないため、これをワークメモリの最小領域サイズとする[ACT108]。
【0145】
ここで、このワークメモリの最小領域サイズと2次キャッシュと共有メモリ間のDMA転送の最小転送サイズとを比較し[ACT109]、ワークメモリの最小領域サイズよりも共有メモリ間のDMA転送の最小転送サイズ小さい場合[ACT109−YES]、グループの分割数を1小さくし[ACT110]、改めて、ワークメモリの最小領域サイズを算出し、比較を行う[ACT111−YES]〜[ACT104],・・・,[ACT109]。
【0146】
ワークサイズが最小DMAサイズよりも大きい場合[ACT109−NO]、このプロセッサの分割数を並列処理の分割数に加え、つぎのプロセッサグループの分割数決定処理に移行する[ACT112]。
【0147】
すなわち、
キャッシュ共有プロセッサグループ情報取得
プロセッサ供給グループ数だけ処理した(グループ数回ループしたか) ?
グループ内分割数 ← 共有グループ内のプロセッサ数
キャッシュ共有プロセッサ数算出
平均圧縮率データ取得
固定処理パラメータサイズ算出
ワーク領域サイズ算出
ワーク領域内最小データ領域サイズ算出
最小データ領域サイズ > DMA最小転送サイズ ?
グループ内分割数 ← グループ内分割数−1
グループ内分割数 ≠ 1 ?
分割数 ← 分割数+グループ内分割数
の各工程が実施される。
【0148】
他のプロセッサグループに関する並列分割数決定の処理方法も、前記と同様に実施される。
【0149】
以上説明したように、この発明によれば、複写機(MFP)内部など、高解像度の巨大な画像を格納するシステムにおいて、格納領域を節約するため画像データを圧縮して格納する際に、近年のプリンタエンジンの高速化や、外部デバイスであるコンピュータ等の高速化に伴う、画像データのより高速な圧縮・伸長が可能となる。すなわち、CPUを複数持つマルチプロセッサシステムや、1つのCPUの中に複数のCPUを持つメニーコアプロセッサの普及が目ざましく、このようなプロセッサを用いて、前記巨大画像の圧縮・高速化に関する、方法、システムを、特に圧縮率の高いJPEG圧縮については、適用することができる。すなわち、本発明の実施形態を適用することで、複数のプロセッサを用いて、1枚の画像をJPEG方式のベースとした圧縮・伸長を高速に行うことができるシステムが実現できる。
【0150】
本発明の画像処理装置(MFP)では、圧縮の際、メモリに展開された画像データを縦方向に分割し、それぞれを別のプロセッサで並列にJPEG圧縮処理してゆく。個々のプロセッサはローカルメモリを持ち、一定量の圧縮データが貯まる度に、非同期に一定量の符号データを書込み、また、メモリ上に自プロセッサが書き込んだ旨の情報を記録する。全プロセッサの処理終了後、この書込み順データを圧縮画像データの後ろにつけて圧縮画像ファイルとする。復号時には、個々のプロセッサが、上記書込み順データを下に、一定量ずつ圧縮データを読み込みながら、画像データをメモリ上に復号していく。上記のように、本発明によると、圧縮データの依存関係は、各プロセッサの処理する領域に閉じられるため、他のプロセッサと同期をとらずに処理できるため、圧縮・伸長処理ともに、並列度に応じた性能が得られる。
【0151】
従って、メニーコアや、マルチプロセッサシステムで、サイズの大きい画像データを、並列処理により、圧縮・伸長を高速に行うことができる。
【0152】
すなわち、本発明の画像圧縮・伸張方式を適用することにより、マルチコアCPUを搭載したシステムにおいて、並列に圧縮・伸張を行う際、各コアで実行する処理の実行率を高く、メモリアクセスに関する同期処理のオーバーヘッドが低く抑えることができる。
【0153】
また、圧縮・伸張処理を別のシステムで実施する場合にも、圧縮・伸張を実行するそれぞれのシステムで、並列度が高いほうのシステムの実行率を高くすることができるため、圧縮・伸張処理トータルでスループットを向上させることができ。
【0154】
また、複数のコアから共通にアクセスされる2次キャッシュメモリと、コアが内部に持つ1次キャッシュメモリ、共有される2次キャッシュメモリ間のスワップ動作の回数を抑えることで、処理速度が低下することを抑止できる。
【0155】
また、2次キャッシュメモリと共有メモリ間のDMA転送のデータ転送を適切なサイズで実施することにより、処理速度が低下することが防止出来る。
【0156】
従って、マルチコアCPUによる圧縮・伸張処理を、画質を損なうことなく、高速に処理させることができる。
【0157】
なお、この発明は、上述した各実施の形態に限定されるものではなく、その実施の段階ではその要旨を逸脱しない範囲で種々な変形もしくは変更が可能である。また、各実施の形態は、可能な限り適宜組み合わせて、もしくは一部を削除して実施されてもよく、その場合は、組み合わせもしくは削除に起因したさまざまな効果が得られる。
【0158】
例えば、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に画像分割を行い、その画像分割された個々の領域について、それぞれ、異なるプロセッサにより、色変換、DCT変換、量子化、ハフマン符号化し、それぞれのプロセッサで、ハフマン符号化データが一定量を超えた場合に、一定量分ずつそれぞれのプロセッサから書出された符号化データと、上記符号化データ作成時に、それぞれのプロセッサが書き込みを行う際に書出されたプロセッサを識別可能な書込みPEデータと、からなり、
前記符号化データに続いて書込みPEデータが連続する画像圧縮フォーマットとして、実現できる。
【0159】
また、ローカルメモリを持つ複数のプロセッサと、
各プロセッサがアクセス可能な共有メモリと、
入力画像の一部ずつ、または画像の全体をメモリに格納するメモリ制御部と、
格納された入力画像の一部、または、全体を、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に沿って画像領域を分割し、それぞれの分割領域の画像データを、前記プロセッサのいずれか1つに割り当てる形で、色変換、DCT、量子化、ハフマン符号処理を行い、処理の結果生成されるハフマン符号データが一定量を超えた場合には、一定量のハフマン符号データを書出し、書出したプロセッサを識別可能なデータをメモリに書き込み、全プロセッサの圧縮処理が完了した段階で、前記プロセッサを識別可能な書込みPEデータを書き出し、前記フォーマットの圧縮データ中から、書込みPEデータを読み込み、処理を行っているプロセッサに該当するデータだけを順に読み込みながら、ハフマン復号、逆量子化、逆DCT、逆色変換処理を行い圧縮画像を伸長処理するプログラムにより動作する画像処理部と、
を含む画像処理装置が実現できる。
【符号の説明】
【0160】
1、101…画像処理装置(画像処理システム)、11…システムバス、21…CPU(主制御装置)、23…共有メモリ、25…HDD(画像データ記憶装置)、103…メモリコントローラ、105…共有メモリ、107…HDD(画像データ記憶装置)、109…システムバス、111a〜111n…2次キャッシュメモリ、PE1〜PEn…演算ユニット(プロセッサコア、コアプロセッサ、単位処理装置)。
【先行技術文献】
【特許文献】
【0161】
【特許文献1】特開平05−143552号公報
【特許文献2】特開平11−170657号公報
【特許文献3】特開2003−348355号公報
【特許請求の範囲】
【請求項1】
JPEG方式で、互いに直交する2方向についてマトリクス状に分割した複数の領域の画像データを独立して2以上のプロセッサにより並列に圧縮する画像処理方法において、
個々の画像データは、その領域の画像データを圧縮した際のプロセッサを特定する情報を含むことを特徴とする画像処理方法。
【請求項2】
JPEG方式で、互いに直交する2方向についてマトリクス状に分割された複数の領域毎に圧縮された画像データを伸長し、画像データに付属する圧縮時の情報に基づいて、分割前の位置に戻す、2以上のプロセッサにより並列して伸長する画像処理方法において、
個々の画像データに付属する圧縮時の情報は、圧縮時のプロセッサを特定可能な情報を含むことを特徴とする画像処理方法。
【請求項3】
ローカルメモリを持つ複数のプロセッサと、
前記プロセッサのそれぞれがアクセス可能な共有メモリと、
入力画像の一部、または、画像の全体を前記プロセッサの固有情報とともにメモリに格納する記憶制御部と、
格納された入力画像の一部または全体を、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に沿って画像領域を分割し、それぞれの分割領域の画像データを、前記プロセッサのいずれか1つに割り当て、色変換、DCT、量子化、ハフマン符号処理を行い、処理の結果生成されるハフマン符号データが一定量を超えた場合には、一定量のハフマン符号データを書出し、書出したプロセッサを識別可能なデータをメモリに書き込み、全てのプロセッサによる圧縮処理が完了した段階で、前記プロセッサを識別可能な書込み時プロセッサ情報を書き出し、圧縮データから、書込み時プロセッサ情報を読み込み、処理を行っているプロセッサに該当するデータだけを順に読み込みながら、ハフマン復号、逆量子化、逆DCT、逆色変換処理を行い圧縮画像を伸長処理する画像処理部と、
を具備することを特徴とする画像処理装置。
【請求項4】
入力バッファ上の画像データを、縦方向に分割しそれぞれを異なるプロセッサで並列に処理させることを特徴とする請求項3記載の画像処理装置。
【請求項5】
上記並列に圧縮処理する際、プロセッサが持つローカルメモリに一定量の圧縮データが溜まったら他のプロセッサとの同期を取らずに書き込むことを特徴とする請求項3記載の画像処理装置。
【請求項6】
上記圧縮時、プロセッサが符号データ書込み時に、各プロセッサは、自身がデータを書き込んだことを識別できるデータを書き込むことを特徴とする請求項3記載の画像処理装置。
【請求項7】
画像データの復号の際、入力データに書き込まれた圧縮時の書込み時プロセッサ情報をもとにデータを順次よみながら複数プロセッサで並列画像復元ができることを特徴とする請求項3記載の画像処理装置。
【請求項1】
JPEG方式で、互いに直交する2方向についてマトリクス状に分割した複数の領域の画像データを独立して2以上のプロセッサにより並列に圧縮する画像処理方法において、
個々の画像データは、その領域の画像データを圧縮した際のプロセッサを特定する情報を含むことを特徴とする画像処理方法。
【請求項2】
JPEG方式で、互いに直交する2方向についてマトリクス状に分割された複数の領域毎に圧縮された画像データを伸長し、画像データに付属する圧縮時の情報に基づいて、分割前の位置に戻す、2以上のプロセッサにより並列して伸長する画像処理方法において、
個々の画像データに付属する圧縮時の情報は、圧縮時のプロセッサを特定可能な情報を含むことを特徴とする画像処理方法。
【請求項3】
ローカルメモリを持つ複数のプロセッサと、
前記プロセッサのそれぞれがアクセス可能な共有メモリと、
入力画像の一部、または、画像の全体を前記プロセッサの固有情報とともにメモリに格納する記憶制御部と、
格納された入力画像の一部または全体を、画像データをメモリ展開してアドレスが連続する方向に向かって垂直方向に沿って画像領域を分割し、それぞれの分割領域の画像データを、前記プロセッサのいずれか1つに割り当て、色変換、DCT、量子化、ハフマン符号処理を行い、処理の結果生成されるハフマン符号データが一定量を超えた場合には、一定量のハフマン符号データを書出し、書出したプロセッサを識別可能なデータをメモリに書き込み、全てのプロセッサによる圧縮処理が完了した段階で、前記プロセッサを識別可能な書込み時プロセッサ情報を書き出し、圧縮データから、書込み時プロセッサ情報を読み込み、処理を行っているプロセッサに該当するデータだけを順に読み込みながら、ハフマン復号、逆量子化、逆DCT、逆色変換処理を行い圧縮画像を伸長処理する画像処理部と、
を具備することを特徴とする画像処理装置。
【請求項4】
入力バッファ上の画像データを、縦方向に分割しそれぞれを異なるプロセッサで並列に処理させることを特徴とする請求項3記載の画像処理装置。
【請求項5】
上記並列に圧縮処理する際、プロセッサが持つローカルメモリに一定量の圧縮データが溜まったら他のプロセッサとの同期を取らずに書き込むことを特徴とする請求項3記載の画像処理装置。
【請求項6】
上記圧縮時、プロセッサが符号データ書込み時に、各プロセッサは、自身がデータを書き込んだことを識別できるデータを書き込むことを特徴とする請求項3記載の画像処理装置。
【請求項7】
画像データの復号の際、入力データに書き込まれた圧縮時の書込み時プロセッサ情報をもとにデータを順次よみながら複数プロセッサで並列画像復元ができることを特徴とする請求項3記載の画像処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8A】
【図8B】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【公開番号】特開2010−73210(P2010−73210A)
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願番号】特願2009−216016(P2009−216016)
【出願日】平成21年9月17日(2009.9.17)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(000003562)東芝テック株式会社 (5,631)
【Fターム(参考)】
【公開日】平成22年4月2日(2010.4.2)
【国際特許分類】
【出願日】平成21年9月17日(2009.9.17)
【出願人】(000003078)株式会社東芝 (54,554)
【出願人】(000003562)東芝テック株式会社 (5,631)
【Fターム(参考)】
[ Back to top ]