説明

画像処理装置、プログラム

【課題】画像処理装置において、データ順序を変換させる場合に、特別な専用回路を設けることなく、できる限り処理速度の低下を防ぐ。
【解決手段】画像処理部10は、外部メモリー30と、プロセッサー部20とを備える。プロセッサー部20では、第1の処理部210および第2の処理部230が実現される。第1の処理部210は、外部メモリー30から第1の順序で画像データを読み出して処理し、第1の処理済データを内蔵メモリー22に書き込む。第2の処理部230は、内蔵メモリー22から第1の処理済データを読み出して処理し、第2の処理済データを第2の順序で外部メモリー30に書き込む。第1の順序から第2の順序への変更は、第2の処理部230が、第1の処理済データを第2の順序となるように内蔵メモリー22から読み出すことにより実行される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、データの順序の変換を行う画像処理装置、およびそのプログラムに関する。
【背景技術】
【0002】
画像処理装置は、処理内容に応じてデータの順序(配列)を変換する場合がある。例えば、画像のデータ順序を、点順次から面順次へ、もしくは、面順次から点順次へ、フォーマット変換する場合である。
【0003】
上記のような画像処理装置において、画像データは、例えば、DRAM(Dynamic Random Access Memory)のようなメモリーに記憶される。画像データの順序の変換は、例えば、このメモリーを用いてソフトウェアにより行われる。ソフトウェアによる処理のオーバーヘッドを減らすための技術としては、データの順序を変換する専用ハードウェアを用いるものがある(例えば、特許文献1)。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2000−305891号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、ソフトウェアの処理によりデータの順序を並び替える、より単純な方法として、以下がある。例えば、読み出したデータの順序が変換後の順序となるようにメモリーにアクセスしてデータをメモリーから読み出し、読み出した順序でデータをメモリーに書き込む。または、メモリーに格納されている順序でデータをメモリーから読み出し、書き込むデータの順序が変換後の順序となるようにメモリーにアクセスしてデータを書き込む。
【0006】
しかし、上記の方法では、メモリーへのアクセス順序を、変換後のデータ順序に応じて変化させている。そのため、メモリーに対するランダムなアクセスが多く発生する可能性が高く、メモリーとのデータ転送速度がボトルネックとなって、ソフトウェアの処理速度が低下する。なお、例えば、メモリーとして、ランダムアクセスを高速に実施可能な高価なSRAM(Static Random Access Memory)を用いれば、本問題は回避できるが、画像のように大量のデータを取り扱う場合は安価なDRAMが用いられることが一般的である。また、一般的なシステムでは大量データを取り扱うために、ほとんどDRAMが用いらた構成となっている。
【0007】
上記の特許文献1の技術を用いれば、メモリーへデータを書き込む際、もしくは、メモリーからデータを読み出す際に、専用回路によりデータの並び替えを行うことができる。すなわち、メモリーへのアクセス順序をデータの順序に応じて変化させる必要がないため、メモリーに対するランダムなアクセスを減らすことができる。しかしながら、画像処理装置に専用回路を新たに設ける必要がある。
【0008】
本発明は、画像処理装置において、データ順序を変換させる場合に、特別な専用回路を設けることなく、できる限り処理速度の低下を防ぐための一方法を提供することを目的とする。
【課題を解決するための手段】
【0009】
上記の課題を解決するための本発明の一態様は、画像処理装置であって、外部メモリーと、内蔵メモリーと、第1の処理部と、第2の処理部と、を備え、前記第1の処理部は、前記外部メモリーから第1の順序で画像データを読み出して処理し、第1の処理済データを前記内蔵メモリーに書き込み、前記第2の処理部は、前記内蔵メモリーから前記第1の処理済データを読み出して処理し、第2の処理済データを第2の順序で前記外部メモリーに書き込み、前記第1の順序から第2の順序への変更は、前記第1の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第2の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーから読み出すことにより、行われ、前記内蔵メモリーは、前記画像データを記録するために必要なサイズよりも小さい容量であることを特徴とする。
【0010】
ここで、上記の画像処理装置において、前記画像データは、アドレスが連続するように前記第1の順序で前記外部メモリーに書き込まれており、前記第2の処理済データは、アドレスが連続するように前記第2の順序で前記外部メモリーに書き込まれる、ことを特徴としていてもよい。
【0011】
また、上記の画像処理装置において、前記第1の処理部および前記第2の処理部は、複数のデータを並列して処理する、ことを特徴としていてもよい。
ことを特徴と
【0012】
また、上記の画像処理装置において、前記内蔵メモリーは、少なくとも、並列処理数のn倍(n:各並列処理が1回の処理で処理するデータ数)の容量である、ことを特徴としていてもよい。
【0013】
また、上記の画像処理装置において、前記第1の順序は、点順次、かつ、前記第2の順序は、面順次であり、または、前記第1の順序は、面順次、かつ、前記第2の順序は、点順次である、ことを特徴としていてもよい。
【0014】
また、上記の画像処理装置において、前記外部メモリーは、DRAM(SDRAMを含む)であり、前記内蔵メモリーは、SRAMである、ことを特徴としていてもよい。
【0015】
上記の課題を解決するための本発明の他の態様は、外部メモリーと内蔵メモリーとを有する画像処理装置において実行されるプログラムであって、前記プログラムは、前記外部メモリーから第1の順序で画像データを読み出して処理し、第1の処理済データを前記内蔵メモリーに書き込む、第1の処理部と、前記内蔵メモリーから前記第1の処理済データを読み出して処理し、第2の処理済データを第2の順序で前記外部メモリーに書き込む、第2の処理部、として前記画像処理装置を機能させ、前記第1の順序から第2の順序への変更は、前記第1の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第2の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーから読み出すことにより、行われる、ことを特徴とする。
【図面の簡単な説明】
【0016】
【図1】本発明の第1実施形態に係る画像処理装置1のハードウェアの概略構成を示すブロック図である。
【図2】画像処理部10のデータ順序の変換処理に関する機能を示すブロック図である。
【図3】画像処理部10のデータ順序の変換処理の一例を説明するための図である。
【図4】画像処理部10のデータ順序の変換処理の他の例を説明するための図である。
【図5】画像処理部10のデータ順序の変換処理を示すフロー図である。
【図6】本願の特徴を有さないデータ順序の変換処理に関する機能の一例を示すブロック図である。
【図7】本願の特徴を有さないデータ順序の変換処理に関する機能の他の例を示すブロック図である。
【発明を実施するための形態】
【0017】
以下、本発明の一実施形態について説明する。
【0018】
図1は、本発明の第1実施形態に係る画像処理装置1のハードウェアの概略構成を示すブロック図である。
【0019】
画像処理装置1は、例えば、パーソナルコンピューター、プリンターなどの装置である。画像処理装置1は、画像処理部10と、CPU40と、メモリー50とを有する。
【0020】
CPU40は、所定のプログラムを実行して画像処理装置1の全体を制御する演算装置である。CPU40は、例えば、画像処理対象の画像データ(原画像データ)をメモリー50から読み出し、画像処理部10(メモリー30)に送る。
【0021】
メモリー50には、CPU40が実行するプログラム、画像処理対象の原画像データなどが格納される。メモリー50は、例えば、DRAMにより構成される。
【0022】
画像処理部10は、各種画像処理で性能が発揮されるように設計されたユニットである。画像処理部10は、プロセッサー部20と、メモリー30(以下、「外部メモリー」と呼ぶことがある。)とを有する。なお、画像処理部10は、例えば、GPU(Graphics Processing Unit)ボードとすることができる。この場合、プロセッサー部20は、GPUである。
【0023】
メモリー30には、プロセッサー部20が実行するプログラム、原画像データ、画像処理後の画像データ(処理済画像データ)などが格納される。メモリー30は、例えば、DDR−SDRAM(Double Data Rate SDRAM)により構成される。
【0024】
メモリー30に対するデータの読み書きは、所定の単位(例えば、8ビット、32ビット)により行うことができる。また、メモリー30に対するデータの読み書きは、連続したアドレスに対するアクセスであれば、アドレス設定などの手順を省略して、連続的に実行可能である。そのため、連続したアドレスについてデータを読み書きする場合、メモリーへのアクセス効率が高まる。一方、連続していないアドレスについて、逐次データを読み書きする場合、メモリーへのアクセス効率が低下する。
【0025】
プロセッサー部20は、演算部21と、内蔵メモリー22と、メモリーコントローラー23とを有する。
【0026】
演算部21は、複数のプロセッサーコアを有し(例えば、「マルチコア」と呼ばれる。)、並列演算を行う。また、各プロセッサーコアは、複数のスレッドを走らせることができる(例えば「マルチスレッド」と呼ばれる。)。内蔵メモリー22には、演算部21が処理に使用するデータなどが格納される。内蔵メモリー22は、例えば、SRAM(Static Random Access Memory)などの高速なメモリーにより構成され、ランダムなアクセスが行われても処理速度への影響がほとんどない。ただし、内蔵メモリー22は、メモリー30と比較するとメモリー容量ははるかに少ない。メモリーコントローラー23は、メモリー30へのアクセスを制御する。
【0027】
詳細は後述するが、プロセッサー部20は、所定のデータ順序で格納された原画像データをメモリー30から読み出し、並列処理により所定の画像処理を行い、処理済画像データを、原画像データと異なる所定のデータ順序で、メモリー30に書き込む。プロセッサー部20は、メモリー30から読み出した画像データを、複数のスレッドで並列処理することにより、処理をより高速化する。
【0028】
以上、画像処理装置1および画像処理部10の概略構成を説明したが、本願発明の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。また、一般的な画像処理装置および画像処理部が備える他の構成を排除するものではない。
【0029】
図2は、画像処理部10のデータ順序の変換処理に関する機能を示すブロック図である。
【0030】
本図に示すように、プロセッサー部20には、第1の処理部210と、同期処理部220と、第2の処理部230とが実現される。これらの機能は、演算部21が、メモリー30にロードした所定のプログラムを読み出して実行することにより実現される。このプログラムは、CD−ROMなどの持ち運び可能な記憶媒体から、画像処理装置1にインストールされてもよいし、ネットワークからダウンロードされてインストールされてもよい。
【0031】
本実施形態では、第1の処理部210は、色変換処理を行い、第2の処理部230は、フィルター処理を行うものとする。すなわち、プロセッサー部20では、原画像データ310に対して、色変換処理およびフィルター処理が施され、処理済画像データ320が生成される。なお、これらの画像処理は、本発明に係るデータ順序の変換処理を説明するにあたって代表的に挙げたものであり、他の画像処理であってもよい。
【0032】
原画像データ310は、第1の処理部210によりメモリー30から読み出される。本実施形態では、原画像データ310は、点順次の画像データである。各画素データは、CMYKの4色のデータ(例えば、各色8ビット)を有し、メモリー30の連続するアドレスに点順次で格納されている。なお、原画像データ310は、例えば、CPU40によりメモリー50から読み出され、プロセッサー部20のメモリーコントローラー23を介してメモリー30に予め格納される。
【0033】
第1の処理部210は、メモリー30にアクセスし、連続するアドレスの画素データを、所定数、順次(点順次で)読み出す。それから、読み出した画素データについて、隣り合う画素データが別々のスレッドで処理されるように、複数のスレッドにより並列的に色変換を行う。そして、色変換処理後の画素データを、メモリー30から読み出した順序(点順次)となるように、内蔵メモリー22に書き込む。
【0034】
同期処理部220は、第1の処理部210において走っている全スレッドが、所定数の画素データの色変換処理を終了したか否かを監視する。全スレッドの処理が終了した場合、同期処理部220は、第2の処理部230に処理を開始させる。
【0035】
第2の処理部230は、内蔵メモリー22にアクセスし、隣り合う画素データが同一スレッドに入力されるように、所定数、画素データを読み出す。それから、読み出した画素データについて、CMYK色ごとに、複数のスレッドにより並列的にフィルター処理を行う。そして、フィルター処理後の画素データを、CMYK色ごと(面順次)となるように、メモリー30に書き込む。
【0036】
処理済画像データ320は、第2の処理部230によりメモリー30に書き込まれる。本実施形態では、処理済画像データ320は、面順次の画像データである。すなわち、CMYK各色の画像に別れている。各色の画像の画素データは、同色のデータを4つ分有し、メモリー30の連続するアドレスに格納されている。CMYK各色の画像データは、連続する領域に格納されても良いし、別々の領域に格納されても良い。なお、処理済画像データ320は、例えば、CPU40によりメモリー30から読み出され、印刷処理などに使用される。
【0037】
上記の各機能について、より具体的に説明する。図3は、画像処理部10のデータ順序の変換処理の一例を説明するための図である。
【0038】
メモリー30には、原画像データ310の各画素データ(CMYK各色8ビット)が、連続するアドレス(1〜512・・・)に格納されている。第1の処理部210は、複数のスレッド1〜128を走らせており、128画素を並列処理する。また、第1の処理部210は、512画素を1つの処理単位として扱い、各スレッドはそれぞれ4画素を処理する。
【0039】
ここで、第1の処理部210は、アドレス1〜512の画素データを連続してメモリー30から読み出し、隣り合う画素データを別のスレッドで処理する。また、各スレッドで4画素を処理する。すなわち、アドレス1〜128の画素は、それぞれ、対応するスレッド1〜128で処理される。同様に、アドレス129〜256の画素、アドレス257〜384の画素、アドレス385〜512の画素は、それぞれ、対応するスレッド1〜128で処理される。
【0040】
第1の処理部210は、各スレッドの4画素分の処理が終了した場合、処理した画素データを、メモリー30から読み出した順序となるように、内蔵メモリー22に書き込む。すなわち、メモリー30のアドレス1〜512の画素データは、そのままの順序で、内蔵メモリー22のアドレス1〜512に書き込まれる。なお、各スレッドの1画素分の処理が終了するたびに、内蔵メモリー22に画素データを書き込んでも良い。
【0041】
第2の処理部230は、第1の処理部210の処理が終了したと同期処理部220が判定した場合、処理を開始する。第2の処理部230は、複数のスレッド1〜128を走らせており、128画素を並列処理する。また、第2の処理部230は、512画素を1つの処理単位として扱い、各スレッドはそれぞれ4画素を処理する。
【0042】
ここで、第2の処理部230は、隣り合う4つの画素データが同一スレッドで処理されるように、内蔵メモリー22から画素データを読み出し、各スレッドで処理する。すなわち、アドレス1およびアドレス1から4つおきの画素(1、5、9、・・・509)は、それぞれ、対応するスレッド1〜128で処理される。同様に、アドレス2およびアドレス2から4つおきの画素(2、6、10、・・・510)、アドレス3およびアドレス3から4つおきの画素(3、7、11、・・・511)、アドレス4およびアドレス4から4つおきの画素(4、8、12、・・・512)は、それぞれ、対応するスレッド1〜128で処理される。
【0043】
第2の処理部230の各スレッドは、入力された画素データについて、CMYK色ごとにフィルター処理を行って出力する。すなわち、隣り合う4つの画素の処理結果が、CMYK色ごとの順序(面順次)で出力される。例えば、内蔵メモリー22のアドレス1〜4の画素データは、スレッド1で処理され、CMYK色ごとにデータがまとめられて出力される。この結果、全スレッドの出力は、原画像データ310を面順次にしたデータ順序となっている。
【0044】
第2の処理部230は、各スレッドの4画素分の処理が終了した場合、CMYK色ごとに、画素データをメモリー30の連続するアドレスに書き込む。すなわち、内蔵メモリー22のアドレス1〜512の画素データのC色のデータは、その順序で、メモリー30のアドレス1〜128に書き込まれる。同様に、M色のデータは、メモリー30のアドレス129〜256に、Y色のデータは、メモリー30のアドレス257〜384に、K色のデータは、メモリー30のアドレス385〜512に、それぞれ書き込まれる。なお、説明の便宜上、メモリー30に格納された原画像データ310のアドレスと、処理済画像データ320のアドレスが同じであるが、格納領域としては異なっていてよい。
【0045】
なお、上記では、第2の処理部230が、データ順序が面順次となるように内蔵メモリー22からデータを読み出しているが、第1の処理部210が、データ順序が面順次となるように内蔵メモリー22にデータを書き込んでもよい。
【0046】
具体的には、図4に示すように、第1の処理部210は、各スレッドの4画素分の処理が終了した場合、処理した画素データを、面順次となるように、内蔵メモリー22に書き込む。この結果、全スレッドの出力は、原画像データ310を面順次にしたデータ順序となっている。
【0047】
第2の処理部230は、隣り合う画素データ(同色のデータ4つ分)が別のスレッドで処理されるように、内蔵メモリー22から画素データを読み出し、各スレッドに4画素を処理させる。すなわち、アドレス1〜128の画素データ(C色)は、それぞれ、対応するスレッド1〜128で処理される。同様に、アドレス129〜256の画素データ(M色)、アドレス257〜384の画素データ(Y色)、アドレス385〜512の画素データ(K色)は、それぞれ、対応するスレッド1〜128で処理される。
【0048】
第2の処理部230は、各スレッドの4画素分の処理が終了した場合、処理した画素データを、内蔵メモリー22から読み出した順序のまま、メモリー30に書き込む。すなわち、内蔵メモリー22のアドレス1〜512の画素データは、そのままの順序で、メモリー30のアドレス1〜512に書き込まれる。なお、各スレッドの1画素分の処理が終了するたびに、メモリー30に画素データを書き込んでも良い。
【0049】
以上が、画像処理部10の機能構成である。なお、上記の各構成要素は、画像処理部10の構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方やその名称によって、本願発明が制限されることはない。画像処理部10の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、1つの構成要素がさらに多くの処理を実行するように分類することもできる。
【0050】
例えば、上記では、処理の数は、第1の処理部210および第2の処理部230の2つとなっているが、3つ以上であってもよい。この場合、内蔵メモリー22への画像データの書き込みは、2番目以降の処理部のいずれか1つの、直前の処理部により行われるようにする。すなわち、画素データのデータ順序の変更は、2番目以降の処理部のいずれか1つが内蔵メモリー22から画素データを読み出す際に行われるようにする。2番目以降の処理部のいずれか1つの、直前の処理部が内蔵メモリー22に画素データを書き込む際に行われるようにしてもよい。
【0051】
また、色変換と画像フィルターといった例のように、明確に2つの処理の事例としたが、一つの処理を2つに分割して、実施例と同じ動作をするようにしてもよい。例えば、対象とする処理が画像フィルターのみの場合、各画素への係数の乗算を第1の処理、乗算した値の加算を第2の処理とすることができる。また、上記では、データ順序の変換の例として、点順次から面順次への変換を挙げたが、これに限られず、例えば、面順次から点順次への変換であってもよい。
【0052】
次に、本実施形態に係る画像処理部10の処理について説明する。
【0053】
図5は、画像処理部10のデータ順序の変換処理を示すフロー図である。本フローは、原画像データに対する所定の画像処理の指示を画像処理部10が受け付けた場合に、開始される。なお、本フローは、所定数の画素データ(例えば、512画素)について画像処理を行う場合を示している。原画像データの全画素(例えば、1ページ分の画素)について画像処理を行う場合は、本フローを繰り返せばよい。
【0054】
S1では、第1の処理部210は、メモリー30(外部メモリー)から原画像データ310の読み出しを開始する。具体的には、第1の処理部210は、メモリー30にアクセスし、連続するアドレスの画素データを、所定数、順次読み出し始める。そして、処理をS2に進める。
【0055】
S2では、第1の処理部210は、各スレッドの色変換処理を開始する。
【0056】
具体的には、各スレッドは、まず、メモリー30から読み出された画素データの中から、処理対象の画素データを1つ取得する(S21)。そして、当該画素データに対して色変換処理を行う(S22)。それから、4画素分の処理が終了したか否かを判定する(S23)。4画素分の処理が終了していない場合(S23:NO)、処理をS21へ戻す。4画素分の処理が終了し場合(S23:YES)、処理をS24に進める。4画素分の処理が終了後、スレッドは、各画素データを、メモリー30から読み出された順序となるように、内蔵メモリー22へ書き込む(S24)。
【0057】
S3では、同期処理部220は、第1の処理部210の全スレッドの色変換処理が終了したか否かを判定する。全スレッドの処理が終了していない場合(S3:NO)、本判定を継続する。全スレッドの処理が終了した場合(S3:YES)、処理をS4に進める。
【0058】
S4では、第2の処理部230は、各スレッドのフィルター処理を開始する。
【0059】
具体的には、スレッドは、まず、内蔵メモリー22から、処理対象の画素データを1つ取得する(S41)。そして、当該画素のCMYK色のデータごとにフィルター処理を行う(S42)。それから、4画素分の処理が終了したか否かを判定する(S43)。4画素分の処理が終了していない場合(S43:NO)、処理をS41へ戻す。4画素分の処理が終了し場合(S43:YES)、処理をS44に進める。4画素分の処理が終了後、スレッドは、色ごとの順序(面順次)で4画素分のデータを、メモリー30へ出力できる状態となる(S44)。
【0060】
S5では、第2の処理部230は、処理済画像データ320のメモリー30への書き込みを開始する。具体的には、第2の処理部230は、各スレッドから面順次で出力されたフィルター処理後のデータを、その順序のまま、メモリー30の連続するアドレスに書き込み始める。
【0061】
以上、本発明の第1実施形態について説明した。本実施形態によれば、画像処理装置において、データ順序を変換させる場合に、特別な専用回路を設けることなく、できる限り処理速度の低下を防ぐことができる。
【0062】
すなわち、本実施形態では、画像処理装置1は、外部メモリーに第1のデータ順序で格納されたデータを順次読み出し、第1の処理において所定の処理を施し、高速な内蔵メモリーに、読み出した第1のデータ順序のまま書き込む。その後、第2の処理において、外部メモリー格納する第2のデータ順序となるように、内蔵メモリーからデータを読み出し、所定の処理を施し、外部メモリーへ書き込む。
【0063】
このような構成により、外部メモリーへのデータの入出力は、連続するアドレスに対するアクセスにより行われるため、効率的な処理が実現される。また、データ順序の変換を行うための専用の回路やソフトウェア処理を設ける必要がないため、効率的な処理が実現される。
【0064】
ここで、上記の実施形態の画像処理部10の特徴を明らかにするため、本実施形態の特徴を有さないデータ順序の変換について説明する。
【0065】
図6は、本実施形態の特徴を有さないデータ順序の変換処理に関する機能の一例を示すブロック図である。
【0066】
この例では、画像処理部10のプロセッサー部20は、データ並べ替え処理部200と、第1の処理部210と、第2の処理部230とを有する。データ並べ替え処理部200は、メモリー30から、連続するアドレスの画素データを、所定数、順次(点順次で)読み出す。それから、読み出した画素データが、処理済画像データ320のデータ順序(面順次)となるように、並べ替えを行い、第1の処理部210へ出力する。第1の処理部210および第2の処理部230は、データ並び替え処理部200から出力されたデータ順序で処理を行う。第2の処理部230は、処理した順序で、画素データをメモリー30へ書き込む。
【0067】
図7は、本実施形態の特徴を有さないデータ順序の変換処理に関する機能の他の例を示すブロック図である。
【0068】
この例では、画像処理部10のプロセッサー部20は、第1の処理部210と、第2の処理部230と、同期処理部220と、データ並べ替え処理部200とを有する。第1の処理部210は、メモリー30から、連続するアドレスの画素データを、所定数、順次(点順次で)読み出す。第1の処理部210および第2の処理部230は、メモリー30から読み出されたデータ順序で処理を行う。第2の処理部230は、処理した順序で、画素データを内蔵メモリー22に書き込む。
【0069】
同期処理部220は、第2の処理部230の処理が終了したか否かを監視する。第2の処理部230の処理が終了した場合、データ並び替え処理部200は、内蔵メモリー22から、第2の処理部230が画素データを書き込んだ順序で、画素データを読み出す。それから、読み出した画素データが、処理済画像データ320のデータ順序(面順次)となるように、並べ替えを行い、メモリー30へ書き込む。
【0070】
上記の図6の例では、メモリー30から原画像データ310を読み出した後、各種画像処理を実行する前に、データの並び替えを行っている。図7の例では、各種画像処理の終了後、内蔵メモリー22から処理済み画像データを読み出し、メモリー30へデータを書き込む前に、データの並び替えを行っている。
【0071】
このように、メモリー30からデータを読み出した直後、もしくは、メモリー30へデータを書き込む直前に、データの並び替えを行おうとすると、そのための処理を追加する必要があり、その分処理の効率が低下する。これに対して、本実施形態は、内蔵メモリー22を介して、画像処理の中でデータ順序が変換されるように処理を行うので、処理が効率化される。
【0072】
参考のため、本実施形態において、外部メモリーのアクセスに必要なクロック数の概算を示す。ここでは、128個のスレッドで512画素を処理する場合を例に挙げる。なお、データ読み出しまたは書き込みのためのアクセスオーバヘッドに6クロック、1画素分(8ビット×4色)のデータ読み出しまたは書き込みに4クロック必要であるものとする。
・CMYK各色の画像データが連続するアドレスに書き込まれる場合:
128スレッド×4画素×4クロック+6クロック=2054クロック
・書き込み:CMYK各色の画像データが連続でないアドレスに書き込まれる場合:
128スレッド×4画素×4クロック+6クロック×4色=2072(クロック)
【0073】
一方、参考のため、効率的でないデータ順序の変換処理において、外部メモリーのアクセスに必要なクロック数の概算を示す。外部メモリーから、面順次となるようにデータを読み出す場合を例に挙げる。
・8ビット(1画素のうちの1色のデータ)ごとにランダムアクセスである場合:
128スレッド×4画素×(6+1)クロック×4色=14336クロック
・全スレッドが使用する画素を連続で読み出すたびに、1色のデータを使用する場合:
128スレッド×4画素×4クロック×4色+6クロック×4色=8216クロック
【0074】
なお、上記の本発明の一実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。多くの代替物、修正および変形例が当業者にとって明らかである。
【0075】
本発明は、例えば、十分な容量のキャッシュメモリーを備えていない、もしくは、もしくは、キャッシュメモリーを用いずに、並列処理を行うマルチコアのプロセッサーを有する画像処理装置に適用すると効果的である。
【符号の説明】
【0076】
1:画像処理装置、10:画像処理部、20:プロセッサー部、21:演算部、22:内蔵メモリー、23:メモリーコントローラー、30:メモリー、50:メモリー、200:データ並べ替え処理部、210:第1の処理部、220:同期処理部、230:第2の処理部、310:原画像データ、320:処理済画像データ

【特許請求の範囲】
【請求項1】
画像処理装置であって、
外部メモリーと、内蔵メモリーと、第1の処理部と、第2の処理部と、を備え、
前記第1の処理部は、
前記外部メモリーから第1の順序で画像データを読み出して処理し、第1の処理済データを前記内蔵メモリーに書き込み、
前記第2の処理部は、
前記内蔵メモリーから前記第1の処理済データを読み出して処理し、第2の処理済データを第2の順序で前記外部メモリーに書き込み、
前記第1の順序から第2の順序への変更は、
前記第1の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第2の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーから読み出すことにより、行われ、
前記内蔵メモリーは、前記画像データを記録するために必要なサイズよりも小さい容量である、
ことを特徴とする画像処理装置。
【請求項2】
請求項1に記載の画像処理装置であって、
前記画像データは、アドレスが連続するように前記第1の順序で前記外部メモリーに書き込まれており、
前記第2の処理済データは、アドレスが連続するように前記第2の順序で前記外部メモリーに書き込まれる、
ことを特徴とする画像処理装置。
【請求項3】
請求項2に記載の画像処理装置であって、
前記第1の処理部および前記第2の処理部は、複数のデータを並列して処理する、
ことを特徴とする画像処理装置。
【請求項4】
請求項3に記載の画像処理装置であって、
前記内蔵メモリーは、少なくとも、並列処理数のn倍(n:各並列処理が1回の処理で処理するデータ数)の容量である、
ことを特徴とする画像処理装置。
【請求項5】
請求項1〜4いずれか一項に記載の画像処理装置であって、
前記第1の順序は、点順次、かつ、前記第2の順序は、面順次であり、
または、前記第1の順序は、面順次、かつ、前記第2の順序は、点順次である、
ことを特徴とする画像処理装置。
【請求項6】
請求項1〜5いずれか一項に記載の画像処理装置であって、
前記外部メモリーは、DRAM(SDRAMを含む)であり、
前記内蔵メモリーは、SRAMである、
ことを特徴とする画像処理装置。
【請求項7】
外部メモリーと内蔵メモリーとを有する画像処理装置において実行されるプログラムであって、
前記プログラムは、
前記外部メモリーから第1の順序で画像データを読み出して処理し、第1の処理済データを前記内蔵メモリーに書き込む、第1の処理部と、
前記内蔵メモリーから前記第1の処理済データを読み出して処理し、第2の処理済データを第2の順序で前記外部メモリーに書き込む、第2の処理部、として前記画像処理装置を機能させ、
前記第1の順序から第2の順序への変更は、
前記第1の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第2の処理部が、前記第1の処理済データを前記第2の順序となるように前記内蔵メモリーから読み出すことにより、行われる、
ことを特徴とするプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2010−182000(P2010−182000A)
【公開日】平成22年8月19日(2010.8.19)
【国際特許分類】
【出願番号】特願2009−23441(P2009−23441)
【出願日】平成21年2月4日(2009.2.4)
【出願人】(000002369)セイコーエプソン株式会社 (51,324)
【Fターム(参考)】