(57)【要約】  【課題】画像処理装置において、データ順序を変換させる場合に、特別な専用回路を設けることなく、できる限り処理速度の低下を防ぐ。  【解決手段】画像処理部１０は、外部メモリー３０と、プロセッサー部２０とを備える。プロセッサー部２０では、第１の処理部２１０および第２の処理部２３０が実現される。第１の処理部２１０は、外部メモリー３０から第１の順序で画像データを読み出して処理し、第１の処理済データを内蔵メモリー２２に書き込む。第２の処理部２３０は、内蔵メモリー２２から第１の処理済データを読み出して処理し、第２の処理済データを第２の順序で外部メモリー３０に書き込む。第１の順序から第２の順序への変更は、第２の処理部２３０が、第１の処理済データを第２の順序となるように内蔵メモリー２２から読み出すことにより実行される。【選択図】図２
2010182000.tif 000002
【特許請求の範囲】
【請求項１】
画像処理装置であって、
外部メモリーと、内蔵メモリーと、第１の処理部と、第２の処理部と、を備え、
前記第１の処理部は、
前記外部メモリーから第１の順序で画像データを読み出して処理し、第１の処理済データを前記内蔵メモリーに書き込み、
前記第２の処理部は、
前記内蔵メモリーから前記第１の処理済データを読み出して処理し、第２の処理済データを第２の順序で前記外部メモリーに書き込み、
前記第１の順序から第２の順序への変更は、
前記第１の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第２の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーから読み出すことにより、行われ、
前記内蔵メモリーは、前記画像データを記録するために必要なサイズよりも小さい容量である、
ことを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置であって、
前記画像データは、アドレスが連続するように前記第１の順序で前記外部メモリーに書き込まれており、
前記第２の処理済データは、アドレスが連続するように前記第２の順序で前記外部メモリーに書き込まれる、
ことを特徴とする画像処理装置。
【請求項３】
請求項２に記載の画像処理装置であって、
前記第１の処理部および前記第２の処理部は、複数のデータを並列して処理する、
ことを特徴とする画像処理装置。
【請求項４】
請求項３に記載の画像処理装置であって、
前記内蔵メモリーは、少なくとも、並列処理数のｎ倍（ｎ：各並列処理が1回の処理で処理するデータ数）の容量である、
ことを特徴とする画像処理装置。
【請求項５】
請求項１〜４いずれか一項に記載の画像処理装置であって、
前記第１の順序は、点順次、かつ、前記第２の順序は、面順次であり、
または、前記第１の順序は、面順次、かつ、前記第２の順序は、点順次である、
ことを特徴とする画像処理装置。
【請求項６】
請求項１〜５いずれか一項に記載の画像処理装置であって、
前記外部メモリーは、ＤＲＡＭ（ＳＤＲＡＭを含む）であり、
前記内蔵メモリーは、ＳＲＡＭである、
ことを特徴とする画像処理装置。
【請求項７】
外部メモリーと内蔵メモリーとを有する画像処理装置において実行されるプログラムであって、
前記プログラムは、
前記外部メモリーから第１の順序で画像データを読み出して処理し、第１の処理済データを前記内蔵メモリーに書き込む、第１の処理部と、
前記内蔵メモリーから前記第１の処理済データを読み出して処理し、第２の処理済データを第２の順序で前記外部メモリーに書き込む、第２の処理部、として前記画像処理装置を機能させ、
前記第１の順序から第２の順序への変更は、
前記第１の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第２の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーから読み出すことにより、行われる、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データの順序の変換を行う画像処理装置、およびそのプログラムに関する。
【背景技術】
【０００２】
画像処理装置は、処理内容に応じてデータの順序（配列）を変換する場合がある。例えば、画像のデータ順序を、点順次から面順次へ、もしくは、面順次から点順次へ、フォーマット変換する場合である。
【０００３】
上記のような画像処理装置において、画像データは、例えば、ＤＲＡＭ（Dynamic Random Access Memory）のようなメモリーに記憶される。画像データの順序の変換は、例えば、このメモリーを用いてソフトウェアにより行われる。ソフトウェアによる処理のオーバーヘッドを減らすための技術としては、データの順序を変換する専用ハードウェアを用いるものがある（例えば、特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０００−３０５８９１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ところで、ソフトウェアの処理によりデータの順序を並び替える、より単純な方法として、以下がある。例えば、読み出したデータの順序が変換後の順序となるようにメモリーにアクセスしてデータをメモリーから読み出し、読み出した順序でデータをメモリーに書き込む。または、メモリーに格納されている順序でデータをメモリーから読み出し、書き込むデータの順序が変換後の順序となるようにメモリーにアクセスしてデータを書き込む。
【０００６】
しかし、上記の方法では、メモリーへのアクセス順序を、変換後のデータ順序に応じて変化させている。そのため、メモリーに対するランダムなアクセスが多く発生する可能性が高く、メモリーとのデータ転送速度がボトルネックとなって、ソフトウェアの処理速度が低下する。なお、例えば、メモリーとして、ランダムアクセスを高速に実施可能な高価なＳＲＡＭ（Static Random Access Memory）を用いれば、本問題は回避できるが、画像のように大量のデータを取り扱う場合は安価なＤＲＡＭが用いられることが一般的である。また、一般的なシステムでは大量データを取り扱うために、ほとんどＤＲＡＭが用いらた構成となっている。
【０００７】
上記の特許文献１の技術を用いれば、メモリーへデータを書き込む際、もしくは、メモリーからデータを読み出す際に、専用回路によりデータの並び替えを行うことができる。すなわち、メモリーへのアクセス順序をデータの順序に応じて変化させる必要がないため、メモリーに対するランダムなアクセスを減らすことができる。しかしながら、画像処理装置に専用回路を新たに設ける必要がある。
【０００８】
本発明は、画像処理装置において、データ順序を変換させる場合に、特別な専用回路を設けることなく、できる限り処理速度の低下を防ぐための一方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
上記の課題を解決するための本発明の一態様は、画像処理装置であって、外部メモリーと、内蔵メモリーと、第１の処理部と、第２の処理部と、を備え、前記第１の処理部は、前記外部メモリーから第１の順序で画像データを読み出して処理し、第１の処理済データを前記内蔵メモリーに書き込み、前記第２の処理部は、前記内蔵メモリーから前記第１の処理済データを読み出して処理し、第２の処理済データを第２の順序で前記外部メモリーに書き込み、前記第１の順序から第２の順序への変更は、前記第１の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第２の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーから読み出すことにより、行われ、前記内蔵メモリーは、前記画像データを記録するために必要なサイズよりも小さい容量であることを特徴とする。
【００１０】
ここで、上記の画像処理装置において、前記画像データは、アドレスが連続するように前記第１の順序で前記外部メモリーに書き込まれており、前記第２の処理済データは、アドレスが連続するように前記第２の順序で前記外部メモリーに書き込まれる、ことを特徴としていてもよい。
【００１１】
また、上記の画像処理装置において、前記第１の処理部および前記第２の処理部は、複数のデータを並列して処理する、ことを特徴としていてもよい。
ことを特徴と
【００１２】
また、上記の画像処理装置において、前記内蔵メモリーは、少なくとも、並列処理数のｎ倍（ｎ：各並列処理が1回の処理で処理するデータ数）の容量である、ことを特徴としていてもよい。
【００１３】
また、上記の画像処理装置において、前記第１の順序は、点順次、かつ、前記第２の順序は、面順次であり、または、前記第１の順序は、面順次、かつ、前記第２の順序は、点順次である、ことを特徴としていてもよい。
【００１４】
また、上記の画像処理装置において、前記外部メモリーは、ＤＲＡＭ（ＳＤＲＡＭを含む）であり、前記内蔵メモリーは、ＳＲＡＭである、ことを特徴としていてもよい。
【００１５】
上記の課題を解決するための本発明の他の態様は、外部メモリーと内蔵メモリーとを有する画像処理装置において実行されるプログラムであって、前記プログラムは、前記外部メモリーから第１の順序で画像データを読み出して処理し、第１の処理済データを前記内蔵メモリーに書き込む、第１の処理部と、前記内蔵メモリーから前記第１の処理済データを読み出して処理し、第２の処理済データを第２の順序で前記外部メモリーに書き込む、第２の処理部、として前記画像処理装置を機能させ、前記第１の順序から第２の順序への変更は、前記第１の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーに書き込むことにより、または、前記第２の処理部が、前記第１の処理済データを前記第２の順序となるように前記内蔵メモリーから読み出すことにより、行われる、ことを特徴とする。
【図面の簡単な説明】
【００１６】
【図１】本発明の第１実施形態に係る画像処理装置１のハードウェアの概略構成を示すブロック図である。
【図２】画像処理部１０のデータ順序の変換処理に関する機能を示すブロック図である。
【図３】画像処理部１０のデータ順序の変換処理の一例を説明するための図である。
【図４】画像処理部１０のデータ順序の変換処理の他の例を説明するための図である。
【図５】画像処理部１０のデータ順序の変換処理を示すフロー図である。
【図６】本願の特徴を有さないデータ順序の変換処理に関する機能の一例を示すブロック図である。
【図７】本願の特徴を有さないデータ順序の変換処理に関する機能の他の例を示すブロック図である。
【発明を実施するための形態】
【００１７】
以下、本発明の一実施形態について説明する。
【００１８】
図１は、本発明の第１実施形態に係る画像処理装置１のハードウェアの概略構成を示すブロック図である。
【００１９】
画像処理装置１は、例えば、パーソナルコンピューター、プリンターなどの装置である。画像処理装置１は、画像処理部１０と、ＣＰＵ４０と、メモリー５０とを有する。
【００２０】
ＣＰＵ４０は、所定のプログラムを実行して画像処理装置１の全体を制御する演算装置である。ＣＰＵ４０は、例えば、画像処理対象の画像データ（原画像データ）をメモリー５０から読み出し、画像処理部１０（メモリー３０）に送る。
【００２１】
メモリー５０には、ＣＰＵ４０が実行するプログラム、画像処理対象の原画像データなどが格納される。メモリー５０は、例えば、ＤＲＡＭにより構成される。
【００２２】
画像処理部１０は、各種画像処理で性能が発揮されるように設計されたユニットである。画像処理部１０は、プロセッサー部２０と、メモリー３０（以下、「外部メモリー」と呼ぶことがある。）とを有する。なお、画像処理部１０は、例えば、ＧＰＵ（Graphics Processing Unit）ボードとすることができる。この場合、プロセッサー部２０は、ＧＰＵである。
【００２３】
メモリー３０には、プロセッサー部２０が実行するプログラム、原画像データ、画像処理後の画像データ（処理済画像データ）などが格納される。メモリー３０は、例えば、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate SDRAM）により構成される。
【００２４】
メモリー３０に対するデータの読み書きは、所定の単位（例えば、８ビット、３２ビット）により行うことができる。また、メモリー３０に対するデータの読み書きは、連続したアドレスに対するアクセスであれば、アドレス設定などの手順を省略して、連続的に実行可能である。そのため、連続したアドレスについてデータを読み書きする場合、メモリーへのアクセス効率が高まる。一方、連続していないアドレスについて、逐次データを読み書きする場合、メモリーへのアクセス効率が低下する。
【００２５】
プロセッサー部２０は、演算部２１と、内蔵メモリー２２と、メモリーコントローラー２３とを有する。
【００２６】
演算部２１は、複数のプロセッサーコアを有し（例えば、「マルチコア」と呼ばれる。）、並列演算を行う。また、各プロセッサーコアは、複数のスレッドを走らせることができる（例えば「マルチスレッド」と呼ばれる。）。内蔵メモリー２２には、演算部２１が処理に使用するデータなどが格納される。内蔵メモリー２２は、例えば、ＳＲＡＭ（Static Random Access Memory）などの高速なメモリーにより構成され、ランダムなアクセスが行われても処理速度への影響がほとんどない。ただし、内蔵メモリー２２は、メモリー３０と比較するとメモリー容量ははるかに少ない。メモリーコントローラー２３は、メモリー３０へのアクセスを制御する。
【００２７】
詳細は後述するが、プロセッサー部２０は、所定のデータ順序で格納された原画像データをメモリー３０から読み出し、並列処理により所定の画像処理を行い、処理済画像データを、原画像データと異なる所定のデータ順序で、メモリー３０に書き込む。プロセッサー部２０は、メモリー３０から読み出した画像データを、複数のスレッドで並列処理することにより、処理をより高速化する。
【００２８】
以上、画像処理装置１および画像処理部１０の概略構成を説明したが、本願発明の特徴を説明するにあたって主要構成を説明したのであって、上記の構成に限られない。また、一般的な画像処理装置および画像処理部が備える他の構成を排除するものではない。
【００２９】
図２は、画像処理部１０のデータ順序の変換処理に関する機能を示すブロック図である。
【００３０】
本図に示すように、プロセッサー部２０には、第１の処理部２１０と、同期処理部２２０と、第２の処理部２３０とが実現される。これらの機能は、演算部２１が、メモリー３０にロードした所定のプログラムを読み出して実行することにより実現される。このプログラムは、ＣＤ−ＲＯＭなどの持ち運び可能な記憶媒体から、画像処理装置１にインストールされてもよいし、ネットワークからダウンロードされてインストールされてもよい。
【００３１】
本実施形態では、第１の処理部２１０は、色変換処理を行い、第２の処理部２３０は、フィルター処理を行うものとする。すなわち、プロセッサー部２０では、原画像データ３１０に対して、色変換処理およびフィルター処理が施され、処理済画像データ３２０が生成される。なお、これらの画像処理は、本発明に係るデータ順序の変換処理を説明するにあたって代表的に挙げたものであり、他の画像処理であってもよい。
【００３２】
原画像データ３１０は、第１の処理部２１０によりメモリー３０から読み出される。本実施形態では、原画像データ３１０は、点順次の画像データである。各画素データは、ＣＭＹＫの４色のデータ（例えば、各色８ビット）を有し、メモリー３０の連続するアドレスに点順次で格納されている。なお、原画像データ３１０は、例えば、ＣＰＵ４０によりメモリー５０から読み出され、プロセッサー部２０のメモリーコントローラー２３を介してメモリー３０に予め格納される。
【００３３】
第１の処理部２１０は、メモリー３０にアクセスし、連続するアドレスの画素データを、所定数、順次（点順次で）読み出す。それから、読み出した画素データについて、隣り合う画素データが別々のスレッドで処理されるように、複数のスレッドにより並列的に色変換を行う。そして、色変換処理後の画素データを、メモリー３０から読み出した順序（点順次）となるように、内蔵メモリー２２に書き込む。
【００３４】
同期処理部２２０は、第１の処理部２１０において走っている全スレッドが、所定数の画素データの色変換処理を終了したか否かを監視する。全スレッドの処理が終了した場合、同期処理部２２０は、第２の処理部２３０に処理を開始させる。
【００３５】
第２の処理部２３０は、内蔵メモリー２２にアクセスし、隣り合う画素データが同一スレッドに入力されるように、所定数、画素データを読み出す。それから、読み出した画素データについて、ＣＭＹＫ色ごとに、複数のスレッドにより並列的にフィルター処理を行う。そして、フィルター処理後の画素データを、ＣＭＹＫ色ごと（面順次）となるように、メモリー３０に書き込む。
【００３６】
処理済画像データ３２０は、第２の処理部２３０によりメモリー３０に書き込まれる。本実施形態では、処理済画像データ３２０は、面順次の画像データである。すなわち、ＣＭＹＫ各色の画像に別れている。各色の画像の画素データは、同色のデータを４つ分有し、メモリー３０の連続するアドレスに格納されている。ＣＭＹＫ各色の画像データは、連続する領域に格納されても良いし、別々の領域に格納されても良い。なお、処理済画像データ３２０は、例えば、ＣＰＵ４０によりメモリー３０から読み出され、印刷処理などに使用される。
【００３７】
上記の各機能について、より具体的に説明する。図３は、画像処理部１０のデータ順序の変換処理の一例を説明するための図である。
【００３８】
メモリー３０には、原画像データ３１０の各画素データ（ＣＭＹＫ各色８ビット）が、連続するアドレス（１〜５１２・・・）に格納されている。第１の処理部２１０は、複数のスレッド１〜１２８を走らせており、１２８画素を並列処理する。また、第１の処理部２１０は、５１２画素を１つの処理単位として扱い、各スレッドはそれぞれ４画素を処理する。
【００３９】
ここで、第１の処理部２１０は、アドレス１〜５１２の画素データを連続してメモリー３０から読み出し、隣り合う画素データを別のスレッドで処理する。また、各スレッドで４画素を処理する。すなわち、アドレス１〜１２８の画素は、それぞれ、対応するスレッド１〜１２８で処理される。同様に、アドレス１２９〜２５６の画素、アドレス２５７〜３８４の画素、アドレス３８５〜５１２の画素は、それぞれ、対応するスレッド１〜１２８で処理される。
【００４０】
第１の処理部２１０は、各スレッドの４画素分の処理が終了した場合、処理した画素データを、メモリー３０から読み出した順序となるように、内蔵メモリー２２に書き込む。すなわち、メモリー３０のアドレス１〜５１２の画素データは、そのままの順序で、内蔵メモリー２２のアドレス１〜５１２に書き込まれる。なお、各スレッドの１画素分の処理が終了するたびに、内蔵メモリー２２に画素データを書き込んでも良い。
【００４１】
第２の処理部２３０は、第１の処理部２１０の処理が終了したと同期処理部２２０が判定した場合、処理を開始する。第２の処理部２３０は、複数のスレッド１〜１２８を走らせており、１２８画素を並列処理する。また、第２の処理部２３０は、５１２画素を１つの処理単位として扱い、各スレッドはそれぞれ４画素を処理する。
【００４２】
ここで、第２の処理部２３０は、隣り合う４つの画素データが同一スレッドで処理されるように、内蔵メモリー２２から画素データを読み出し、各スレッドで処理する。すなわち、アドレス１およびアドレス１から４つおきの画素（１、５、９、・・・５０９）は、それぞれ、対応するスレッド１〜１２８で処理される。同様に、アドレス２およびアドレス２から４つおきの画素（２、６、１０、・・・５１０）、アドレス３およびアドレス３から４つおきの画素（３、７、１１、・・・５１１）、アドレス４およびアドレス４から４つおきの画素（４、８、１２、・・・５１２）は、それぞれ、対応するスレッド１〜１２８で処理される。
【００４３】
第２の処理部２３０の各スレッドは、入力された画素データについて、ＣＭＹＫ色ごとにフィルター処理を行って出力する。すなわち、隣り合う４つの画素の処理結果が、ＣＭＹＫ色ごとの順序（面順次）で出力される。例えば、内蔵メモリー２２のアドレス１〜４の画素データは、スレッド１で処理され、ＣＭＹＫ色ごとにデータがまとめられて出力される。この結果、全スレッドの出力は、原画像データ３１０を面順次にしたデータ順序となっている。
【００４４】
第２の処理部２３０は、各スレッドの４画素分の処理が終了した場合、ＣＭＹＫ色ごとに、画素データをメモリー３０の連続するアドレスに書き込む。すなわち、内蔵メモリー２２のアドレス１〜５１２の画素データのＣ色のデータは、その順序で、メモリー３０のアドレス１〜１２８に書き込まれる。同様に、Ｍ色のデータは、メモリー３０のアドレス１２９〜２５６に、Ｙ色のデータは、メモリー３０のアドレス２５７〜３８４に、Ｋ色のデータは、メモリー３０のアドレス３８５〜５１２に、それぞれ書き込まれる。なお、説明の便宜上、メモリー３０に格納された原画像データ３１０のアドレスと、処理済画像データ３２０のアドレスが同じであるが、格納領域としては異なっていてよい。
【００４５】
なお、上記では、第２の処理部２３０が、データ順序が面順次となるように内蔵メモリー２２からデータを読み出しているが、第１の処理部２１０が、データ順序が面順次となるように内蔵メモリー２２にデータを書き込んでもよい。
【００４６】
具体的には、図４に示すように、第１の処理部２１０は、各スレッドの４画素分の処理が終了した場合、処理した画素データを、面順次となるように、内蔵メモリー２２に書き込む。この結果、全スレッドの出力は、原画像データ３１０を面順次にしたデータ順序となっている。
【００４７】
第２の処理部２３０は、隣り合う画素データ（同色のデータ４つ分）が別のスレッドで処理されるように、内蔵メモリー２２から画素データを読み出し、各スレッドに４画素を処理させる。すなわち、アドレス１〜１２８の画素データ（Ｃ色）は、それぞれ、対応するスレッド１〜１２８で処理される。同様に、アドレス１２９〜２５６の画素データ（Ｍ色）、アドレス２５７〜３８４の画素データ（Ｙ色）、アドレス３８５〜５１２の画素データ（Ｋ色）は、それぞれ、対応するスレッド１〜１２８で処理される。
【００４８】
第２の処理部２３０は、各スレッドの４画素分の処理が終了した場合、処理した画素データを、内蔵メモリー２２から読み出した順序のまま、メモリー３０に書き込む。すなわち、内蔵メモリー２２のアドレス１〜５１２の画素データは、そのままの順序で、メモリー３０のアドレス１〜５１２に書き込まれる。なお、各スレッドの１画素分の処理が終了するたびに、メモリー３０に画素データを書き込んでも良い。
【００４９】
以上が、画像処理部１０の機能構成である。なお、上記の各構成要素は、画像処理部１０の構成を理解容易にするために、主な処理内容に応じて分類したものである。構成要素の分類の仕方やその名称によって、本願発明が制限されることはない。画像処理部１０の構成は、処理内容に応じて、さらに多くの構成要素に分類することもできる。また、１つの構成要素がさらに多くの処理を実行するように分類することもできる。
【００５０】
例えば、上記では、処理の数は、第１の処理部２１０および第２の処理部２３０の２つとなっているが、３つ以上であってもよい。この場合、内蔵メモリー２２への画像データの書き込みは、２番目以降の処理部のいずれか１つの、直前の処理部により行われるようにする。すなわち、画素データのデータ順序の変更は、２番目以降の処理部のいずれか１つが内蔵メモリー２２から画素データを読み出す際に行われるようにする。２番目以降の処理部のいずれか１つの、直前の処理部が内蔵メモリー２２に画素データを書き込む際に行われるようにしてもよい。
【００５１】
また、色変換と画像フィルターといった例のように、明確に２つの処理の事例としたが、一つの処理を２つに分割して、実施例と同じ動作をするようにしてもよい。例えば、対象とする処理が画像フィルターのみの場合、各画素への係数の乗算を第１の処理、乗算した値の加算を第２の処理とすることができる。また、上記では、データ順序の変換の例として、点順次から面順次への変換を挙げたが、これに限られず、例えば、面順次から点順次への変換であってもよい。
【００５２】
次に、本実施形態に係る画像処理部１０の処理について説明する。
【００５３】
図５は、画像処理部１０のデータ順序の変換処理を示すフロー図である。本フローは、原画像データに対する所定の画像処理の指示を画像処理部１０が受け付けた場合に、開始される。なお、本フローは、所定数の画素データ（例えば、５１２画素）について画像処理を行う場合を示している。原画像データの全画素（例えば、１ページ分の画素）について画像処理を行う場合は、本フローを繰り返せばよい。
【００５４】
Ｓ１では、第１の処理部２１０は、メモリー３０（外部メモリー）から原画像データ３１０の読み出しを開始する。具体的には、第１の処理部２１０は、メモリー３０にアクセスし、連続するアドレスの画素データを、所定数、順次読み出し始める。そして、処理をＳ２に進める。
【００５５】
Ｓ２では、第１の処理部２１０は、各スレッドの色変換処理を開始する。
【００５６】
具体的には、各スレッドは、まず、メモリー３０から読み出された画素データの中から、処理対象の画素データを１つ取得する（Ｓ２１）。そして、当該画素データに対して色変換処理を行う（Ｓ２２）。それから、４画素分の処理が終了したか否かを判定する（Ｓ２３）。４画素分の処理が終了していない場合（Ｓ２３：ＮＯ）、処理をＳ２１へ戻す。４画素分の処理が終了し場合（Ｓ２３：ＹＥＳ）、処理をＳ２４に進める。４画素分の処理が終了後、スレッドは、各画素データを、メモリー３０から読み出された順序となるように、内蔵メモリー２２へ書き込む（Ｓ２４）。
【００５７】
Ｓ３では、同期処理部２２０は、第１の処理部２１０の全スレッドの色変換処理が終了したか否かを判定する。全スレッドの処理が終了していない場合（Ｓ３：ＮＯ）、本判定を継続する。全スレッドの処理が終了した場合（Ｓ３：ＹＥＳ）、処理をＳ４に進める。
【００５８】
Ｓ４では、第２の処理部２３０は、各スレッドのフィルター処理を開始する。
【００５９】
具体的には、スレッドは、まず、内蔵メモリー２２から、処理対象の画素データを１つ取得する（Ｓ４１）。そして、当該画素のＣＭＹＫ色のデータごとにフィルター処理を行う（Ｓ４２）。それから、４画素分の処理が終了したか否かを判定する（Ｓ４３）。４画素分の処理が終了していない場合（Ｓ４３：ＮＯ）、処理をＳ４１へ戻す。４画素分の処理が終了し場合（Ｓ４３：ＹＥＳ）、処理をＳ４４に進める。４画素分の処理が終了後、スレッドは、色ごとの順序（面順次）で４画素分のデータを、メモリー３０へ出力できる状態となる（Ｓ４４）。
【００６０】
Ｓ５では、第２の処理部２３０は、処理済画像データ３２０のメモリー３０への書き込みを開始する。具体的には、第２の処理部２３０は、各スレッドから面順次で出力されたフィルター処理後のデータを、その順序のまま、メモリー３０の連続するアドレスに書き込み始める。
【００６１】
以上、本発明の第１実施形態について説明した。本実施形態によれば、画像処理装置において、データ順序を変換させる場合に、特別な専用回路を設けることなく、できる限り処理速度の低下を防ぐことができる。
【００６２】
すなわち、本実施形態では、画像処理装置１は、外部メモリーに第１のデータ順序で格納されたデータを順次読み出し、第１の処理において所定の処理を施し、高速な内蔵メモリーに、読み出した第１のデータ順序のまま書き込む。その後、第２の処理において、外部メモリー格納する第２のデータ順序となるように、内蔵メモリーからデータを読み出し、所定の処理を施し、外部メモリーへ書き込む。
【００６３】
このような構成により、外部メモリーへのデータの入出力は、連続するアドレスに対するアクセスにより行われるため、効率的な処理が実現される。また、データ順序の変換を行うための専用の回路やソフトウェア処理を設ける必要がないため、効率的な処理が実現される。
【００６４】
ここで、上記の実施形態の画像処理部１０の特徴を明らかにするため、本実施形態の特徴を有さないデータ順序の変換について説明する。
【００６５】
図６は、本実施形態の特徴を有さないデータ順序の変換処理に関する機能の一例を示すブロック図である。
【００６６】
この例では、画像処理部１０のプロセッサー部２０は、データ並べ替え処理部２００と、第１の処理部２１０と、第２の処理部２３０とを有する。データ並べ替え処理部２００は、メモリー３０から、連続するアドレスの画素データを、所定数、順次（点順次で）読み出す。それから、読み出した画素データが、処理済画像データ３２０のデータ順序（面順次）となるように、並べ替えを行い、第１の処理部２１０へ出力する。第１の処理部２１０および第２の処理部２３０は、データ並び替え処理部２００から出力されたデータ順序で処理を行う。第２の処理部２３０は、処理した順序で、画素データをメモリー３０へ書き込む。
【００６７】
図７は、本実施形態の特徴を有さないデータ順序の変換処理に関する機能の他の例を示すブロック図である。
【００６８】
この例では、画像処理部１０のプロセッサー部２０は、第１の処理部２１０と、第２の処理部２３０と、同期処理部２２０と、データ並べ替え処理部２００とを有する。第１の処理部２１０は、メモリー３０から、連続するアドレスの画素データを、所定数、順次（点順次で）読み出す。第１の処理部２１０および第２の処理部２３０は、メモリー３０から読み出されたデータ順序で処理を行う。第２の処理部２３０は、処理した順序で、画素データを内蔵メモリー２２に書き込む。
【００６９】
同期処理部２２０は、第２の処理部２３０の処理が終了したか否かを監視する。第２の処理部２３０の処理が終了した場合、データ並び替え処理部２００は、内蔵メモリー２２から、第２の処理部２３０が画素データを書き込んだ順序で、画素データを読み出す。それから、読み出した画素データが、処理済画像データ３２０のデータ順序（面順次）となるように、並べ替えを行い、メモリー３０へ書き込む。
【００７０】
上記の図６の例では、メモリー３０から原画像データ３１０を読み出した後、各種画像処理を実行する前に、データの並び替えを行っている。図７の例では、各種画像処理の終了後、内蔵メモリー２２から処理済み画像データを読み出し、メモリー３０へデータを書き込む前に、データの並び替えを行っている。
【００７１】
このように、メモリー３０からデータを読み出した直後、もしくは、メモリー３０へデータを書き込む直前に、データの並び替えを行おうとすると、そのための処理を追加する必要があり、その分処理の効率が低下する。これに対して、本実施形態は、内蔵メモリー２２を介して、画像処理の中でデータ順序が変換されるように処理を行うので、処理が効率化される。
【００７２】
参考のため、本実施形態において、外部メモリーのアクセスに必要なクロック数の概算を示す。ここでは、１２８個のスレッドで５１２画素を処理する場合を例に挙げる。なお、データ読み出しまたは書き込みのためのアクセスオーバヘッドに６クロック、１画素分（８ビット×４色）のデータ読み出しまたは書き込みに４クロック必要であるものとする。
・ＣＭＹＫ各色の画像データが連続するアドレスに書き込まれる場合：
１２８スレッド×４画素×４クロック＋６クロック＝２０５４クロック
・書き込み：ＣＭＹＫ各色の画像データが連続でないアドレスに書き込まれる場合：
１２８スレッド×４画素×４クロック＋６クロック×４色＝２０７２（クロック）
【００７３】
一方、参考のため、効率的でないデータ順序の変換処理において、外部メモリーのアクセスに必要なクロック数の概算を示す。外部メモリーから、面順次となるようにデータを読み出す場合を例に挙げる。
・８ビット（１画素のうちの１色のデータ）ごとにランダムアクセスである場合：
１２８スレッド×４画素×（６＋１）クロック×４色＝１４３３６クロック
・全スレッドが使用する画素を連続で読み出すたびに、１色のデータを使用する場合：
１２８スレッド×４画素×４クロック×４色＋６クロック×４色＝８２１６クロック
【００７４】
なお、上記の本発明の一実施形態は、本発明の要旨と範囲を例示することを意図し、限定するものではない。多くの代替物、修正および変形例が当業者にとって明らかである。
【００７５】
本発明は、例えば、十分な容量のキャッシュメモリーを備えていない、もしくは、もしくは、キャッシュメモリーを用いずに、並列処理を行うマルチコアのプロセッサーを有する画像処理装置に適用すると効果的である。
【符号の説明】
【００７６】
１：画像処理装置、１０：画像処理部、２０：プロセッサー部、２１：演算部、２２：内蔵メモリー、２３：メモリーコントローラー、３０：メモリー、５０：メモリー、２００：データ並べ替え処理部、２１０：第１の処理部、２２０：同期処理部、２３０：第２の処理部、３１０：原画像データ、３２０：処理済画像データ
【図１】
2010182000.tif 000003
【図２】
2010182000.tif 000004
【図３】
2010182000.tif 000005
【図４】
2010182000.tif 000006
【図５】
2010182000.tif 000007
【図６】
2010182000.tif 000008
【図７】
2010182000.tif 000009