図1は、本発明を実施するための形態として好適なデータ処理装置100の具体例を示す図である。図1のデータ処理装置100は、演算部10とメモリ50を備えている。演算部10はメモリ50に記憶された処理前の対象データに対してデータ処理を実行する。演算部10による処理後の対象データはメモリ50に記憶される。
図1のデータ処理装置100が処理対象とする対象データの好適な具体例は画像データ(文字や数字や記号のみのデータを含む)等であり、例えばコンピュータ等の外部の装置から画像データがデータ処理装置100に送られてメモリ50に記憶される。
また、図1のデータ処理装置100が、画像読み取り機能(スキャン機能)等を備えた画像処理装置内に組み込まれ、画像読み取り機能を介して紙などの媒体から得られた画像データが対象データとされてもよい。さらに、データ処理装置100による処理後の画像データに対応した画像が紙などに印刷されてもよいし、処理後の画像データが外部の装置に提供されてもよい。なお、画像処理装置の好適な具体例には、複写機、印刷機、ファクシミリ(FAX)などが含まれる。さらに、複写機、印刷機、ファクシミリのうちのいずれか複数の機能を兼ね備えた複合機も画像処理装置の好適な具体例である。
演算部10は、対象データ内の各ブロックごとにコマンド(ブロックコマンド)を生成するコマンド生成部20の機能と、対象データ内の各ブロックごとに処理結果(処理後の対象データ)を得るデータ処理部30の機能を実現する。
演算部10は、プログラマブルではない固定型の回路構成を実現するデバイス、例えばASIC(Application Specific Integrated Circuit)等により実現することができるものの、回路構成がプログラマブルな再構成可能回路により実現されることが望ましい。
再構成可能回路は、内部の回路構成を再構成可能(プログラマブル)な回路である。例えば、動的再構成可能プロセッサ(DRP:Dynamic Reconfigurable Processor)が、再構成可能回路を実現する好適なデバイスの一つである。もちろん、他のデバイス、例えばPLD(Programmable Logic Device)やFPGA(Field Programmable Gate Array)などのプログラマブル論理回路により再構成可能回路が実現されてもよい。さらに、将来的に登場する動的再構成可能なデバイス(プロセッサ等)を利用して再構成可能回路が実現されてもよい。なお、演算部10として好適な上述したプロセッサやデバイスはあくまでも一例に過ぎず、他のハードウェアが利用されてもよい。
メモリ50は、対象データを記憶する記憶デバイスであり、例えば、半導体メモリなどがメモリ50の好適な具体例である。
図1のデータ処理装置100が備える内部構成のうちの少なくとも一部は、例えば演算機能等を実現するハードウェアとその動作を規定するソフトウェア(制御プログラム等)によって構成され、ハードウェアとソフトウェアとの協働により実現されてもよい。例えば、コマンド生成部20の機能とデータ処理部30の機能のうちの少なくとも一部がコンピュータにより実現されてもよい。この場合には、後に詳述するコマンド生成部20の機能とデータ処理部30の機能に対応したアルゴリズムのプログラムが、例えば、ディスクやメモリなどのコンピュータが読み取り可能な記憶媒体に記憶され、その記憶媒体を介してコンピュータ(データ処理装置100)に提供される。もちろん、インターネット等の電気通信回線を介して当該プログラムがコンピュータに提供されてもよい。そして、コンピュータが備えるCPUやメモリ等のハードウェア資源と、提供された当該プログラム(ソフトウェア)との協働により、例えばコマンド生成部20の機能とデータ処理部30の機能のうちの少なくとも一部が実現される。
図1のデータ処理装置100の全体構成は以上のとおりである。次に、データ処理装置100により実現される処理と機能の具体例について説明する。なお、図1に示した構成(符号を付した各部)については、以下の説明において図1の符号を利用する。
図2は、データ処理装置100が実行するデータ処理の具体例であるディザ処理を説明するための図である。ディザ処理は、対象データを構成する複数のデータ要素、例えば、画像データを構成する複数の画素に対する諧調変換処理の好適な具体例である。ディザ処理では、例えば、画像データ内における各画素の位置(座標)とその画素の値(画素値)に応じて、その画素の処理結果(ディザ処理後の画素値)が得られる。
図2には、各画素の画素値が8ビット(8bit)である処理前の画像データから、各画素の画素値が2ビット(2bit)である処理後の画像データを得るディザ処理の具体例が図示されている。図2の具体例における処理後の画像データにより、例えば、各画素の印刷時における滴サイズが決定される。
図2に示す具体例では、横方向(X方向)と縦方向(Y方向)の画素数がそれぞれ256画素である画像領域ごとに閾値処理が実行される。例えば、256画素×256画素の画像領域に対応した閾値係数テーブルが予め用意されており、閾値係数テーブルから得られる閾値係数を利用して、画像領域内の各座標(画素の位置)に対応した閾値(th0,th1,th2)が算出される。そして、8ビットの入力画素値が閾値判定により2ビットの出力画素値に変換される。
ディザ処理では、画像領域内の各座標ごとに閾値が算出され、各座標ごとに閾値判定により出力画素値が得られる。つまり、各画素の位置(座標)と画素値に依存するアルゴリズムとなっている。ところが、特殊な画素値、例えば8ビットの最大値0xff(白)と最小値0x00(黒)については、閾値に関係なく、つまり画素の位置に関係なく、常に2ビットの最大値0b11と最小値0b00に変換される。したがって、入力画素が0xffと0x00の場合には、ディザ処理(閾値処理)を省略しても、既知の出力画素0b11と0b00を得ることができる。
そこで、データ処理装置100は、複数の処理方式の中から、対象データを構成する複数のデータ要素の配列状態に応じた処理方式、例えば画像データを構成する複数の画素の配列状態に応じた処理方式を選択的に実行する。データ処理装置100は、対象データ内の各ブロックごとにブロックコマンドを生成し、ブロックコマンドに応じた処理方式を選択的に実行する。
図3は、対象データ内の各ブロックとブロックコマンドの具体例を示す図である。図3(A)には、処理対象となる対象データの具体例であるディザ処理前の画像データが図示されている。画像データ(対象データ)は、複数のブロックに分割される。図3の具体例において、各ブロック(ブロック1,2,3,・・・)は、横方向(X方向)の画素数が16画素であり縦方向(Y方向)の画素数が1画素である。なお、各ブロックを構成する画素数は図3の具体例に限定されない。例えば、各ブロックを構成する縦方向(Y方向)の画素数が複数であってもよい。
図3(B)は、ブロックコマンドの具体例を示している。図3(B)のブロックコマンドは、ブロック識別子Nと画素値で構成される。ブロック識別子Nの具体例が図3(C)に図示されている。ブロックコマンドは、画像データを構成する複数ブロックの各ブロックごとに生成される。
各ブロック内における全画素の画素値が0x00の場合に、そのブロックのブロック識別子Nは0(N=0)とされる。ブロック識別子Nが0の場合、識別子0と1画素分の画素値0x00を組み合わせたブロックコマンドが生成される。また、各ブロック内における全画素の画素値が0xffの場合に、そのブロックのブロック識別子Nは1(N=1)とされる。ブロック識別子Nが1の場合、識別子1と1画素分の画素値0xffを組み合わせたブロックコマンドが生成される。
また、各ブロック内における全画素の画素値が一致している場合に(画素値が0x00と0xffの場合を除く)、そのブロックのブロック識別子Nは2(N=2)とされる。ブロック識別子Nが2の場合、識別子2と1画素分の画素値0xa0を組み合わせたブロックコマンドが生成される。そして、各ブロック内における全画素の画素値が一致していない場合に(全画素のうち1画素でも画素値が異なる場合に)そのブロックのブロック識別子Nは3(N=3)とされる。なお、ブロック識別子Nが3の場合には、識別子3のみ(画素値無し)のブロックコマンドが生成される。
図4は、コマンド生成部20とデータ処理部30の具体例1(固定ラン長方式)を示す図である。コマンド生成部20は、対象データ内の各ブロックごとにブロックコマンドを生成する。データ処理部30は、対象データ内の各ブロックごとに複数の処理方式の中から各ブロックのブロックコマンドに応じた処理方式を選択的に実行して処理結果を得る。図4には、コマンド生成部20とデータ処理部30の内部構成例が図示されている。
図4のコマンド生成部20は、入力制御部とブロック解析部とコマンド決定部を備えている。入力制御部は、メモリ50に記憶された処理対象となる対象データ、例えばディザ処理前の画像データを取得する。入力制御部は、例えば、画像データを構成する複数ブロック(図3参照)を先頭ブロックから順に次々に取得する。
ブロック解析部は入力制御部から得られる複数ブロックを各ブロックごとに解析する。ブロック解析部は、各ブロックを構成する複数のデータ要素、つまり、各ブロックを構成する複数画素の配列状態を解析し、その配列状態に応じたブロック識別子N(図3参照)を生成する。
そして、コマンド決定部は、画像データを構成する複数ブロックの各ブロックごとにブロックコマンドを決定する。コマンド決定部は、各ブロックごとにブロック識別子Nと画素値で構成されるブロックコマンド(図3参照)を生成する。なお、ブロック解析部の解析結果に応じたブロック識別子Nをコマンド決定部が生成してもよい。
こうして、コマンド生成部20により、画像データを構成する複数ブロックの各ブロックごとにブロックコマンドが生成される。
図4のデータ処理部30は、コマンド判定部とコマンド処理部0〜3と出力制御部を備えている。コマンド判定部は、画像データを構成する複数ブロックの各ブロックごとにブロックコマンドに応じた処理方式を判定する。コマンド判定部は、複数の処理方式に対応した複数のコマンド処理部0〜3の中から、各ブロックごとにブロックコマンドのブロック識別子Nに対応したコマンド処理部を選択する。
例えば、ブロックコマンドのブロック識別子Nが0(N=0)の場合には、コマンド処理部0が選択される。ブロック識別子Nが0(N=0)の各ブロックは、そのブロック内の全画素の画素値が0x00であり(図3参照)、そのブロック内の全画素についてディザ処理(閾値処理)の処理結果が既知の0b00となる。そこで、コマンド処理部0は、ディザ処理(閾値処理)を省略し、各ブロック内の全画素(16画素)の出力値が0b00である処理結果を出力する。
ブロックコマンドのブロック識別子Nが1(N=1)の場合には、コマンド処理部1が選択される。ブロック識別子Nが1(N=1)の各ブロックは、そのブロック内の全画素の画素値が0xffであり(図3参照)、そのブロック内の全画素についてディザ処理(閾値処理)の処理結果が既知の0b11となる。そこで、コマンド処理部1は、ディザ処理(閾値処理)を省略し、各ブロック内の全画素(16画素)の出力値が0b11である処理結果を出力する。
ブロックコマンドのブロック識別子Nが2(N=2)の場合には、コマンド処理部2が選択される。ブロック識別子Nが2(N=2)の各ブロックは、そのブロック内の全画素の画素値が一致している(図3参照)。但し、各画素の処理結果(ディザ処理後の画素値)が各画素の位置(座標)とその画素の値(画素値)に依存する。そこで、コマンド処理部2は、ブロック識別子Nが2(N=2)のブロックコマンドに付された画素値0xa0を各ブロック内の全画素(16画素)に対応付けて処理用ブロックを構成し、その処理用ブロックに対してディザ処理(閾値処理)を実行する。これにより、各ブロック内の全画素(16画素)に関するディザ処理(閾値処理)の処理結果が出力される。
ブロックコマンドのブロック識別子Nが3(N=3)の場合には、コマンド処理部3が選択される。ブロック識別子Nが3(N=3)の各ブロックは、そのブロック内の全画素の画素値が一致していない(図3参照)。つまり全画素のうち少なくとも1画素の画素値が他とは異なっており、ディザ処理(閾値処理)が必要となる。そこで、コマンド処理部3は、ブロック識別子Nが3(N=3)のブロックコマンドに対応した各ブロック内の全画素(16画素)の画素値をメモリ50から読み出して処理用ブロックを構成し、その処理用ブロックに対してディザ処理(閾値処理)を実行する。これにより、各ブロック内の全画素(16画素)に関するディザ処理(閾値処理)の処理結果が出力される。
出力制御部は、コマンド処理部0〜3から得られる処理結果の出力を制御する。出力制御部は、コマンド処理部0〜3から得られる処理結果を、例えば画像データを構成する複数のブロックの先頭ブロックから順に次々に出力してメモリ50に記憶する。こうして、画像データの処理結果(ディザ処理後の画像データ)がメモリ50に記憶される。
コマンド生成部20とデータ処理部30は例えば再構成可能回路内に構成される。再構成可能回路によりコマンド生成部20とデータ処理部30を実現する場合、コマンド生成部20とデータ処理部30は、再構成可能回路内に同時に構成されてもよいし、コマンド生成部20とデータ処理部30が再構成可能回路内に順に構成されてもよい。
例えば、まずコマンド生成部20が再構成可能回路内に構成され、画像データ(対象データ)を構成する複数ブロックのブロックコマンドがメモリ50に記憶される。また、ブロックコマンドに画素値が付されていないブロック、例えばブロック識別子Nが3(N=3)のブロック(図3参照)については、そのブロックを構成する全画素の画素データもメモリ50に戻されて記憶される。これに対し、例えばブロック識別子Nが0,1,2(N=0,1,2)のブロック(図3参照)については、ブロックコマンドに代表となる画素値が付されているため、そのブロックを構成する全画素の画素データをメモリ50に戻さなくてもよい。そして、コマンド生成部20に代えてデータ処理部30が再構成可能回路内に再構成され、メモリ50に記憶されたブロックコマンドが参照され、各ブロックごとに複数の処理方式の中からブロックコマンドに応じた処理方式が選択的に実行される。
図5は、ブロックコマンドの変形例を示す図である。処理対象となる対象データの具体例であるディザ処理前の画像データは、図3(A)と同じであり、画像データ(対象データ)は、複数のブロックに分割される。例えば、各ブロックは、横方向(X方向)の画素数が16画素であり縦方向(Y方向)の画素数が1画素である。
図5(A)は、ブロックコマンドの変形例を示している。図5(A)のブロックコマンドは、ブロック識別子Nとラン識別子Lと画素値で構成される。ブロック識別子Nの具体例が図5(B)に、ラン識別子Lの具体例が図5(C)に図示されている。
ブロック識別子Nは、図3(C)の具体例と同じである。つまり、図5の変形例においても、各ブロック内における全画素の画素値が0x00の場合に、そのブロックのブロック識別子Nは0(N=0)とされ、各ブロック内における全画素の画素値が0xffの場合に、そのブロックのブロック識別子Nは1(N=1)とされ、各ブロック内における全画素の画素値が一致している場合に(画素値が0x00と0xffの場合を除く)、そのブロックのブロック識別子Nは2(N=2)とされ、各ブロック内における全画素の画素値が一致していない場合に(全画素のうち1画素でも画素値が異なる場合に)そのブロックのブロック識別子Nは3(N=3)とされる。
ラン識別子Lは、ブロック識別子Nが同一となるブロックの連続性を示す。例えば、ブロック識別子Nが同一となるブロックが連続していなければ、つまり1つのブロックが孤立していれば、その1つのブロックのラン識別子Lは1(L=1)とされる。ラン識別子Lが1の場合、ブロック識別子Nが同一となる画素のラン長は16(16×1)となる。ブロック識別子Nが同一となるブロックが2つ連続していれば、それらのブロックのラン識別子Lは2(L=2)とされる。ラン識別子Lが2の場合、ブロック識別子Nが同一となる画素のラン長は32(16×2)となる。また、ブロック識別子Nが同一となるブロックが3つ連続していれば、それらのブロックのラン識別子Lは3(L=3)とされる。ラン識別子Lが3の場合、ブロック識別子Nが同一となる画素のラン長は48(16×3)となる。一般に、ブロック識別子Nが同一となるブロックがM個(Mは自然数)連続していれば、それらのブロックのラン識別子LはM(L=M)とされる。ラン識別子LがMの場合、ブロック識別子Nが同一となる画素のラン長は(16×M)となる。
図6は、コマンド生成部20とデータ処理部30の具体例2(最適ラン長方式)を示す図である。図6にはコマンド生成部20とデータ処理部30の内部構成例が図示されている。
図6のコマンド生成部20は、入力制御部とブロック解析部とラン長解析部とコマンド決定部を備えている。入力制御部は、メモリ50に記憶された対象データ、例えばディザ処理前の画像データを取得する。入力制御部は、例えば、画像データを構成する複数ブロック(図3参照)を先頭ブロックから順に次々に取得する。
ブロック解析部は入力制御部から得られる複数ブロックを各ブロックごとに解析する。ブロック解析部は、各ブロックを構成する複数のデータ要素、つまり、各ブロックを構成する複数画素の配列状態を解析し、その配列状態に応じたブロック識別子N(図5参照)を生成する。
ラン長解析部は、ブロック識別子Nが同一となるブロックの連続性を解析する。ラン長解析部は、ブロックの連続性に応じたラン識別子L(図5参照)を生成する。
そして、コマンド決定部は、画像データを構成する複数ブロックのブロックコマンドを決定する。コマンド決定部は、ブロック識別子Nとラン識別子Lと画素値で構成されるブロックコマンド(図5参照)を生成する。例えば、各ブロックごとにブロックコマンドが生成される。なお、ブロック識別子Nが同一となる連続する複数ブロックに対して1つのブロックコマンドが生成されてもよい。また、ブロック解析部とラン長解析部の解析結果に応じたブロック識別子Nとラン識別子Lをコマンド決定部が生成してもよい。
こうして、コマンド生成部20により、画像データを構成する複数ブロックのブロックコマンドが生成される。
図6のデータ処理部30は、コマンド判定部と再構成制御部と処理回路記憶部とコマンド処理部と出力制御部を備えている。コマンド判定部は、画像データを構成する複数ブロックのブロックコマンドに応じた処理方式を判定する。ブロックコマンドに応じた処理方式は、そのブロックコマンドのブロック識別子Nとラン識別子Lにより決定される。
コマンド処理部は、ブロックコマンドに応じた処理方式のコマンド処理を実行する。コマンド処理部は、再構成可能回路によって実現される。再構成制御部は、ブロックコマンドのブロック識別子Nとラン識別子Lにより特定される処理回路NLをコマンド処理部内に再構成する。処理回路NLの回路データは、処理回路記憶部に記憶されている。
図7は、処理回路記憶部に記憶される回路データの具体例を示す図である。処理回路記憶部には、ブロック識別子N(0〜3)とラン識別子L(1〜M)の組み合わせに対応した複数の処理回路NLの回路データが記憶される。各処理回路NLは、ブロック識別子Nでラン識別子Lであるブロックコマンドに対応したコマンド処理を実行する回路である。
例えば、処理回路01は、ブロック識別子が0(N=0)でラン識別子が1(L=1)であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が0の場合には、ブロック内の全画素の画素値が0x00であり(図5参照)、そのブロック内の全画素についてディザ処理(閾値処理)の処理結果が既知の0b00となる(図2参照)。処理回路01は、ディザ処理(閾値処理)を省略してブロック内の全画素(ラン長16)の出力値が0b00である処理結果を出力する処理を実行する回路である。
また、処理回路12は、ブロック識別子が1(N=1)でラン識別子が2(L=2)であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が1の場合には、ブロック内の全画素の画素値が0xffであり(図5参照)、そのブロック内の全画素についてディザ処理(閾値処理)の処理結果が既知の0b11となる(図2参照)。処理回路12は、ディザ処理(閾値処理)を省略してブロック内の全画素(ラン長32)の出力値が0b11である処理結果を出力する処理を実行する回路である。
また、処理回路23は、ブロック識別子が2(N=2)でラン識別子が3(L=3)であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が2の場合には、ブロック内の全画素の画素値が一致している(図5参照)。但し、各画素の処理結果(ディザ処理後の画素値)が各画素の位置(座標)とその画素の値(画素値)に依存する。処理回路23は、ブロックコマンドに付された画素値0xa0をブロック内の全画素(48画素)に対応付けて処理用ブロックを構成し、その処理用ブロックに対してディザ処理(閾値処理)を実行する回路である。
また、処理回路34は、ブロック識別子が3(N=3)でラン識別子が4(L=4)であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が3の場合には、ブロック内の全画素の画素値が一致していない(図5参照)。つまり全画素のうち少なくとも1画素の画素値が他とは異なっており、ディザ処理(閾値処理)が必要となる。処理回路34は、ブロックコマンドに対応したブロック内の全画素(64画素)の画素値をメモリ50から読み出して処理用ブロックを構成し、その処理用ブロックに対してディザ処理(閾値処理)を実行する回路である。
処理回路記憶部には、ブロック識別子N(0〜3)とラン識別子L(1〜M)の全ての組み合わせに対応した複数の処理回路NLの回路データが記憶されている。
図6に戻り、ブロックコマンドのブロック識別子Nとラン識別子Lにより特定される処理回路NLがコマンド処理部内に再構成され、ブロックコマンドに応じた処理方式のコマンド処理が実行されると、コマンド処理の処理結果は出力制御部へ送られる。
出力制御部はコマンド処理部から得られる処理結果の出力を制御する。出力制御部は、コマンド処理部から得られる処理結果を、例えば画像データを構成する複数のブロックの先頭ブロックから順に次々に出力してメモリ50に記憶する。こうして、画像データの処理結果(ディザ処理後の画像データ)がメモリ50に記憶される。
なお、図4の具体例1と同様に、図6の具体例2におけるコマンド生成部20とデータ処理部30(処理回路記憶部を除く)が、再構成可能回路内に構成されてもよい。再構成可能回路によりコマンド生成部20とデータ処理部30を実現する場合、コマンド生成部20とデータ処理部30は、再構成可能回路内に同時に構成されてもよいし、コマンド生成部20とデータ処理部30が再構成可能回路内に順に構成されてもよい。
図8は、コマンド生成部20とデータ処理部30の具体例3(最適出力幅方式)を示す図である。図8にはコマンド生成部20とデータ処理部30の内部構成例が図示されている。
図8のコマンド生成部20は、図6のコマンド生成部20と同じ構成であり同じ処理を実行する。つまり、図8のコマンド生成部20により、画像データを構成する複数ブロックのブロックコマンド(図5参照)が生成される。
図8のデータ処理部30は、コマンド判定部と再構成制御部と処理回路記憶部とコマンド処理部と出力回路記憶部と出力制御部を備えている。コマンド判定部と処理回路記憶部とコマンド処理部は、図6の具体例2と同じ構成であり同じ処理を実行する。つまり、図8の具体例3においても、コマンド判定部は、画像データを構成する複数ブロックのブロックコマンドに応じた処理方式を判定し、コマンド処理部は、ブロックコマンドに応じた処理方式のコマンド処理を実行する。コマンド処理部は、再構成可能回路によって実現され、再構成制御部は、ブロックコマンドのブロック識別子Nとラン識別子Lにより特定される処理回路NLをコマンド処理部内に再構成する。処理回路NLの回路データは、処理回路記憶部に記憶されている(図7参照)。
図8の具体例3では、データ処理部30の出力制御部がブロックコマンドのラン識別子Lに応じた出力制御を行う。出力制御部は、再構成可能回路によって実現される。再構成制御部は、ブロックコマンドのラン識別子Lにより特定される出力回路Lを出力制御部内に再構成する。出力回路Lの回路データは、出力回路記憶部に記憶されている。
図9は、出力回路記憶部に記憶される回路データの具体例を示す図である。出力回路記憶部には、ラン識別子L(1〜M)に対応した複数の出力回路L(1〜M)の回路データが記憶される。各出力回路Lは、ラン識別子Lにより特定されるラン長に応じたバンド幅(出力ビット幅)で、コマンド処理部(図8)から得られた処理結果をメモリ50(図8)へ転送する出力制御を実行する回路である。
例えば、出力回路1は、ラン識別子が1(L=1)であるブロックコマンドに対応したコマンド処理の処理結果を出力する回路である。ラン識別子が1の場合には、コマンド処理の処理結果がラン長16であるため、出力回路1は、ラン長16に対応したバンド幅でコマンド処理の処理結果をメモリ50へ転送する処理を実行する回路である。
同様に、出力回路2,3,4,・・・,Mは、それぞれ、ラン識別子が2,3,4,・・・,Mであるブロックコマンドに対応したコマンド処理の処理結果を出力する回路であり、それぞれ、ラン長32,48,64,・・・,16×Mに対応したバンド幅でコマンド処理の処理結果をメモリ50へ転送する処理を実行する回路である。
図8に戻り、ブロックコマンドのブロック識別子Nとラン識別子Lにより特定される処理回路NLがコマンド処理部内に再構成され、ブロックコマンドに応じた処理方式のコマンド処理が実行されると、コマンド処理の処理結果は出力制御部へ送られる。また、ブロックコマンドのラン識別子Lにより特定される出力回路Lが出力制御部内に再構成され、出力制御部は、ラン識別子Lにより特定されるラン長に応じたバンド幅(出力ビット幅)で、コマンド処理部から得られた処理結果をメモリ50へ転送する。出力制御部は、コマンド処理部から得られる処理結果を、例えば画像データを構成する複数のブロックの先頭ブロックから順に次々に出力してメモリ50に記憶する。こうして、画像データの処理結果(ディザ処理後の画像データ)がメモリ50に記憶される。
なお、図4の具体例1と図6の具体例2と同様に、図8の具体例3におけるコマンド生成部20とデータ処理部30(処理回路記憶部と出力回路記憶部を除く)が、再構成可能回路内に構成されてもよい。再構成可能回路によりコマンド生成部20とデータ処理部30を実現する場合、コマンド生成部20とデータ処理部30は、再構成可能回路内に同時に構成されてもよいし、コマンド生成部20とデータ処理部30が再構成可能回路内に順に構成されてもよい。
図10,図11にはデータ処理装置100が実行する処理の具体例が図示されている。図10は、データ処理装置100のコマンド生成部20(図8の具体例3)が実行する処理の具体例を示すフローチャートである。
まず、画像データ(対象データ)を構成する各ブロックが解析され(S1001)、各ブロックのブロック識別子Nが生成される(S1002)。そして、生成されたブロック識別子Nが1つ前のブロックと一致しているか否かが確認される(S1003)。
1つ前のブロックと一致していれば、ラン識別子Lに1が加えられてラン識別子Lが更新される(S1004)。なお、ラン識別子Lの初期値は1とする。また、1つ前のブロックと一致している場合には、S1001からS1004の処理が繰り返される。
そして、ブロック識別子Nが1つ前のブロックと一致していない場合には、ブロック識別子Nとラン識別子Lによりブロックコマンドが決定される(S1005)。なお、ラン識別子Lが最大値Mに達した場合にも、S1005のステップに進んでブロックコマンドが決定される。
こうして、画像データ(対象データ)を構成する全ブロックに関する処理が終了するまでS1001からS1005までの処理が繰り返され、全ブロックに関する処理が終了すると(S1006)、コマンド生成部20による処理が終了する。
図11は、データ処理装置100のデータ処理部30(図8の具体例3)が実行する処理の具体例を示すフローチャートである。
まず、コマンド生成部20により生成されたブロックコマンドが解析され(S1101)、そのブロックコマンドのブロック識別子Nとラン識別子Lに対応した処理回路NLと出力回路Lが決定される(S1102,S1103)。
そして、コマンド処理部(図8)内に既に構成されている現処理回路NLと、S1102において決定された処理回路NLが一致しているか否かが確認される(S1104)。現処理回路NLと一致していれば、その処理回路NLによりコマンド処理が実行される(S1106)。現処理回路NLと一致していなければ、S1102において決定された処理回路NLがコマンド処理部内に再構成され(S1105)、再構成後の処理回路NLによりコマンド処理が実行される(S1106)。
次に、出力制御部(図8)内に既に構成されている現出力回路Lと、S1103において決定された出力回路Lが一致しているか否かが確認される(S1107)。現出力回路Lと一致していれば、その出力回路Lによりコマンド処理の処理結果が出力される(S1109)。現出力回路Lと一致していなければ、S1103において決定された出力回路Lが出力制御部内に再構成され(S1108)、再構成後の出力回路Lによりコマンド処理の処理結果が出力される(S1109)。
こうして、画像データ(対象データ)を構成する全ブロックコマンドに関する処理が終了するまでS1101からS1109までの処理が繰り返され、全ブロックコマンドに関する処理が終了すると(S1110)、データ処理部30による処理が終了する。
図12は、データ処理装置100の処理性能の具体例を示す図である。図12には、図8の具体例3で説明した最適出力幅方式により、チャート1〜3を処理した場合の性能指標が図示されている。
チャート1は、画像全体が写真の画像データであり、チャート2は、画像の一部に写真が含まれる画像データである。また、チャート3は、帳票(文字,数字,線などが中心の画像で余白も多い)の画像データである。
図12の縦軸に示す性能指標は、画像データの全域(全ブロック)をラスタ処理、つまり、ブロックコマンドを生成せずに全ブロックの全画素に対してディザ処理(閾値処理)を実行した場合の性能指標である基準値「1」に対する相対的な値である。
チャート1は、画像全体が写真であるため、ブロックコマンドを生成しても、ほぼ全てのブロックにおいてブロック識別子Nが3(N=3)となりディザ処理(閾値処理)が必要になる。そのため、チャート1の場合には、基準値「1」とほぼ同程度の性能指標となる。
これに対し、チャート3は、帳票であり画像全体が余白と文字や数字や線などにより構成されているため、ブロック識別子Nが0〜2(N=0,1,2)となるブロックが多数を占める。そのため、チャート3の場合には、ラスタ処理のみの基準値「1」に比べて、ブロックコマンドの生成(ベクタ化)により処理速度等の性能が向上する。図12の具体例においては、チャート3について基準値「1」の3倍以上の性能指標が得られている。
なお、チャート2は、画像の一部に写真が含まれる画像データであり、写真以外の領域においてブロックコマンドの生成(ベクタ化)により処理速度等の性能が向上する。図12の具体例においては、チャート2について基準値「1」の3倍弱の性能指標が得られている。
このように、図1のデータ処理装置100は、画像データの全域(全ブロック)をラスタ処理する場合に比べて、ブロックコマンドの生成(ベクタ化)により、例えば、処理速度等の性能が向上する。また、図6の具体例2(最適ラン長方式)では、図4の具体例1(固定ラン長方式)による効果に加えて、ラン長の最適化により処理速度等の性能が更に向上する。また、図8の具体例3(最適出力幅方式)では、図6の具体例2(最適ラン長方式)による効果に加えて、出力幅の最適化により処理結果の転送速度等の性能が向上する。
以上、本発明の好適な実施形態を説明したが、上述した実施形態は、あらゆる点で単なる例示にすぎず、本発明の範囲を限定するものではない。本発明は、その本質を逸脱しない範囲で各種の変形形態を包含する。