(57)【特許請求の範囲】
【請求項１】
対象データ内の各ブロックごとに、当該各ブロックを構成する複数のデータ要素の配列状態を示す識別子を生成する生成部と、
前記複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、前記各ブロックごとに当該各ブロックの識別子に対応付けられた処理方式を選択的に実行する処理部と、
を有し、
前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致している場合、前記処理部は、前記データ処理を必要とする処理方式が選択された前記各ブロックに対して生成された識別子に付された値を、前記データ処理を必要とする処理方式が選択された前記各ブロック内の全データ要素に対応付けて、前記データ処理を実行して当該各ブロックの処理結果を得て、
前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致していない場合、前記処理部は、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値に対して前記データ処理を実行して当該各ブロックの処理結果を得る、
ことを特徴とするデータ処理装置。
【請求項２】
請求項１に記載のデータ処理装置において、
前記処理部は、前記データ処理を不要とする処理方式が選択された前記各ブロックの処理結果として、当該各ブロックを構成する複数のデータ要素に対応付けられた既知の処理結果を得る、
ことを特徴とするデータ処理装置。
【請求項３】
請求項１又は請求項２に記載のデータ処理装置において、
前記処理部は、前記各ブロックを構成する複数のデータ要素に対する前記データ処理として、前記各ブロック内における各データ要素の位置と当該各データ要素の値とにより当該各データ要素の処理結果を得る階調変換処理を実行する、
ことを特徴とするデータ処理装置。
【請求項４】
請求項１から３のいずれか１項に記載のデータ処理装置において、
前記識別子が同一の互いに隣接する複数ブロックを一纏めにした処理単位ごとに、前記識別子に対応付けられた処理方式により処理結果を得る、
ことを特徴とするデータ処理装置。
【請求項５】
請求項４に記載のデータ処理装置において、
前記処理単位ごとに、当該処理単位を構成する前記複数ブロックの全データ要素数に対応付けられた出力幅で処理結果を出力する、
ことを特徴とするデータ処理装置。
【請求項６】
コンピュータに、
対象データ内の各ブロックごとに、当該各ブロックを構成する複数のデータ要素の配列状態を示す識別子を生成する第１機能と、
前記複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、前記各ブロックごとに当該各ブロックの識別子に対応付けられた処理方式を選択する第２機能と、
を実現させ、
前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致している場合、前記第２機能は、前記データ処理を必要とする処理方式が選択された前記各ブロックに対して生成された識別子に付された値を、前記データ処理を必要とする処理方式が選択された前記各ブロック内の全データ要素に対応付けて、前記データ処理を実行して当該各ブロックの処理結果を得て、
前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致していない場合、前記第２機能は、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値に対して前記データ処理を実行して当該各ブロックの処理結果を得る、
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ処理装置およびプログラムに関する。
【背景技術】
【０００２】
データ処理装置は様々な分野において広く普及しており、特に、画像データを処理対象とする画像処理装置はデータ処理装置の好適な具体例の一つである。従来から、データ処理装置と画像処理装置に係る技術がいくつか提案されている。
【０００３】
例えば、特許文献１には、複数の画像データの夫々の主走査処理方向に応じてカウントを行い、分割された画像データの境界線での処理の連続性を保つようにディザサイズに応じた主走査処理を行う画像処理装置が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１９４９５５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明は、複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、複数のデータ要素の配列状態に応じた処理方式を選択することにある。
【課題を解決するための手段】
【０００６】
請求項１に係る発明は、対象データ内の各ブロックごとに、当該各ブロックを構成する複数のデータ要素の配列状態を示す識別子を生成する生成部と、前記複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、前記各ブロックごとに当該各ブロックの識別子に対応付けられた処理方式を選択的に実行する処理部と、を有し、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致している場合、前記処理部は、前記データ処理を必要とする処理方式が選択された前記各ブロックに対して生成された識別子に付された値を、前記データ処理を必要とする処理方式が選択された前記各ブロック内の全データ要素に対応付けて、前記データ処理を実行して当該各ブロックの処理結果を得て、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致していない場合、前記処理部は、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値に対して前記データ処理を実行して当該各ブロックの処理結果を得る、ことを特徴とするデータ処理装置である。
【０００７】
請求項２に係る発明は、請求項１に記載のデータ処理装置において、前記処理部は、前記データ処理を不要とする処理方式が選択された前記各ブロックの処理結果として、当該各ブロックを構成する複数のデータ要素に対応付けられた既知の処理結果を得る、ことを特徴とするデータ処理装置である。
【０００９】
請求項３に係る発明は、請求項１又は請求項２に記載のデータ処理装置において、前記処理部は、前記各ブロックを構成する複数のデータ要素に対する前記データ処理として、前記各ブロック内における各データ要素の位置と当該各データ要素の値とにより当該各データ要素の処理結果を得る階調変換処理を実行する、ことを特徴とするデータ処理装置である。
【００１０】
請求項４に係る発明は、請求項１から３のいずれか１項に記載のデータ処理装置において、前記識別子が同一の互いに隣接する複数ブロックを一纏めにした処理単位ごとに、前記識別子に対応付けられた処理方式により処理結果を得る、ことを特徴とするデータ処理装置である。
【００１１】
請求項５に係る発明は、請求項４に記載のデータ処理装置において、前記処理単位ごとに、当該処理単位を構成する前記複数ブロックの全データ要素数に対応付けられた出力幅で処理結果を出力する、ことを特徴とするデータ処理装置である。
【００１２】
請求項６に係る発明は、コンピュータに、対象データ内の各ブロックごとに、当該各ブロックを構成する複数のデータ要素の配列状態を示す識別子を生成する第１機能と、前記複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、前記各ブロックごとに当該各ブロックの識別子に対応付けられた処理方式を選択する第２機能と、を実現させ、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致している場合、前記第２機能は、前記データ処理を必要とする処理方式が選択された前記各ブロックに対して生成された識別子に付された値を、前記データ処理を必要とする処理方式が選択された前記各ブロック内の全データ要素に対応付けて、前記データ処理を実行して当該各ブロックの処理結果を得て、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値が一致していない場合、前記第２機能は、前記データ処理を必要とする処理方式が選択された前記各ブロックを構成する複数のデータ要素の値に対して前記データ処理を実行して当該各ブロックの処理結果を得る、ことを特徴とするプログラムである。
【発明の効果】
【００１３】
請求項１に係る発明によれば、複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、複数のデータ要素の配列状態に応じた処理方式が選択される。
【００１４】
請求項２に係る発明によれば、データ処理を不要とする処理方式においてデータ処理を行わずに処理結果を得ることができる。
【００１６】
請求項３に係る発明によれば、諧調変換処理を必要とする処理方式と不要とする処理方式の選択が実現される。
【００１７】
請求項４に係る発明によれば、複数ブロックを一纏めにした処理単位ごとに処理結果を得ることができる。
【００１８】
請求項５に係る発明によれば、複数ブロックを一纏めにした処理単位に応じた出力幅で処理結果を出力することができる。
【００１９】
請求項６に係る発明によれば、複数のデータ要素を用いたデータ処理を必要とする処理方式と当該データ処理を不要とする処理方式とを含む複数の処理方式の中から、複数のデータ要素の配列状態に応じた処理方式を選択するプログラムが提供される。
【図面の簡単な説明】
【００２０】
【図１】本発明の実施形態として好適なデータ処理装置の具体例を示す図である。
【図２】データ処理の具体例であるディザ処理を説明するための図である。
【図３】対象データ内の各ブロックとブロックコマンドの具体例を示す図である。
【図４】コマンド生成部とデータ処理部の具体例１を示す図である。
【図５】ブロックコマンドの変形例を示す図である。
【図６】コマンド生成部とデータ処理部の具体例２を示す図である。
【図７】処理回路記憶部に記憶される回路データの具体例を示す図である。
【図８】コマンド生成部とデータ処理部の具体例３を示す図である。
【図９】出力回路記憶部に記憶される回路データの具体例を示す図である。
【図１０】コマンド生成部が実行する処理の具体例を示すフローチャートである。
【図１１】データ処理部が実行する処理の具体例を示すフローチャートである。
【図１２】データ処理装置の処理性能の具体例を示す図である。
【発明を実施するための形態】
【００２１】
図１は、本発明を実施するための形態として好適なデータ処理装置１００の具体例を示す図である。図１のデータ処理装置１００は、演算部１０とメモリ５０を備えている。演算部１０はメモリ５０に記憶された処理前の対象データに対してデータ処理を実行する。演算部１０による処理後の対象データはメモリ５０に記憶される。
【００２２】
図１のデータ処理装置１００が処理対象とする対象データの好適な具体例は画像データ（文字や数字や記号のみのデータを含む）等であり、例えばコンピュータ等の外部の装置から画像データがデータ処理装置１００に送られてメモリ５０に記憶される。
【００２３】
また、図１のデータ処理装置１００が、画像読み取り機能（スキャン機能）等を備えた画像処理装置内に組み込まれ、画像読み取り機能を介して紙などの媒体から得られた画像データが対象データとされてもよい。さらに、データ処理装置１００による処理後の画像データに対応した画像が紙などに印刷されてもよいし、処理後の画像データが外部の装置に提供されてもよい。なお、画像処理装置の好適な具体例には、複写機、印刷機、ファクシミリ（ＦＡＸ）などが含まれる。さらに、複写機、印刷機、ファクシミリのうちのいずれか複数の機能を兼ね備えた複合機も画像処理装置の好適な具体例である。
【００２４】
演算部１０は、対象データ内の各ブロックごとにコマンド（ブロックコマンド）を生成するコマンド生成部２０の機能と、対象データ内の各ブロックごとに処理結果（処理後の対象データ）を得るデータ処理部３０の機能を実現する。
【００２５】
演算部１０は、プログラマブルではない固定型の回路構成を実現するデバイス、例えばＡＳＩＣ（Application Specific Integrated Circuit）等により実現することができるものの、回路構成がプログラマブルな再構成可能回路により実現されることが望ましい。
【００２６】
再構成可能回路は、内部の回路構成を再構成可能（プログラマブル）な回路である。例えば、動的再構成可能プロセッサ（ＤＲＰ：Dynamic Reconfigurable Processor）が、再構成可能回路を実現する好適なデバイスの一つである。もちろん、他のデバイス、例えばＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）などのプログラマブル論理回路により再構成可能回路が実現されてもよい。さらに、将来的に登場する動的再構成可能なデバイス（プロセッサ等）を利用して再構成可能回路が実現されてもよい。なお、演算部１０として好適な上述したプロセッサやデバイスはあくまでも一例に過ぎず、他のハードウェアが利用されてもよい。
【００２７】
メモリ５０は、対象データを記憶する記憶デバイスであり、例えば、半導体メモリなどがメモリ５０の好適な具体例である。
【００２８】
図１のデータ処理装置１００が備える内部構成のうちの少なくとも一部は、例えば演算機能等を実現するハードウェアとその動作を規定するソフトウェア（制御プログラム等）によって構成され、ハードウェアとソフトウェアとの協働により実現されてもよい。例えば、コマンド生成部２０の機能とデータ処理部３０の機能のうちの少なくとも一部がコンピュータにより実現されてもよい。この場合には、後に詳述するコマンド生成部２０の機能とデータ処理部３０の機能に対応したアルゴリズムのプログラムが、例えば、ディスクやメモリなどのコンピュータが読み取り可能な記憶媒体に記憶され、その記憶媒体を介してコンピュータ（データ処理装置１００）に提供される。もちろん、インターネット等の電気通信回線を介して当該プログラムがコンピュータに提供されてもよい。そして、コンピュータが備えるＣＰＵやメモリ等のハードウェア資源と、提供された当該プログラム（ソフトウェア）との協働により、例えばコマンド生成部２０の機能とデータ処理部３０の機能のうちの少なくとも一部が実現される。
【００２９】
図１のデータ処理装置１００の全体構成は以上のとおりである。次に、データ処理装置１００により実現される処理と機能の具体例について説明する。なお、図１に示した構成（符号を付した各部）については、以下の説明において図１の符号を利用する。
【００３０】
図２は、データ処理装置１００が実行するデータ処理の具体例であるディザ処理を説明するための図である。ディザ処理は、対象データを構成する複数のデータ要素、例えば、画像データを構成する複数の画素に対する諧調変換処理の好適な具体例である。ディザ処理では、例えば、画像データ内における各画素の位置（座標）とその画素の値（画素値）に応じて、その画素の処理結果（ディザ処理後の画素値）が得られる。
【００３１】
図２には、各画素の画素値が８ビット（８ｂｉｔ）である処理前の画像データから、各画素の画素値が２ビット（２ｂｉｔ）である処理後の画像データを得るディザ処理の具体例が図示されている。図２の具体例における処理後の画像データにより、例えば、各画素の印刷時における滴サイズが決定される。
【００３２】
図２に示す具体例では、横方向（Ｘ方向）と縦方向（Ｙ方向）の画素数がそれぞれ２５６画素である画像領域ごとに閾値処理が実行される。例えば、２５６画素×２５６画素の画像領域に対応した閾値係数テーブルが予め用意されており、閾値係数テーブルから得られる閾値係数を利用して、画像領域内の各座標（画素の位置）に対応した閾値（ｔｈ０，ｔｈ１，ｔｈ２）が算出される。そして、８ビットの入力画素値が閾値判定により２ビットの出力画素値に変換される。
【００３３】
ディザ処理では、画像領域内の各座標ごとに閾値が算出され、各座標ごとに閾値判定により出力画素値が得られる。つまり、各画素の位置（座標）と画素値に依存するアルゴリズムとなっている。ところが、特殊な画素値、例えば８ビットの最大値０ｘｆｆ（白）と最小値０ｘ００（黒）については、閾値に関係なく、つまり画素の位置に関係なく、常に２ビットの最大値０ｂ１１と最小値０ｂ００に変換される。したがって、入力画素が０ｘｆｆと０ｘ００の場合には、ディザ処理（閾値処理）を省略しても、既知の出力画素０ｂ１１と０ｂ００を得ることができる。
【００３４】
そこで、データ処理装置１００は、複数の処理方式の中から、対象データを構成する複数のデータ要素の配列状態に応じた処理方式、例えば画像データを構成する複数の画素の配列状態に応じた処理方式を選択的に実行する。データ処理装置１００は、対象データ内の各ブロックごとにブロックコマンドを生成し、ブロックコマンドに応じた処理方式を選択的に実行する。
【００３５】
図３は、対象データ内の各ブロックとブロックコマンドの具体例を示す図である。図３（Ａ）には、処理対象となる対象データの具体例であるディザ処理前の画像データが図示されている。画像データ（対象データ）は、複数のブロックに分割される。図３の具体例において、各ブロック（ブロック１，２，３，・・・）は、横方向（Ｘ方向）の画素数が１６画素であり縦方向（Ｙ方向）の画素数が１画素である。なお、各ブロックを構成する画素数は図３の具体例に限定されない。例えば、各ブロックを構成する縦方向（Ｙ方向）の画素数が複数であってもよい。
【００３６】
図３（Ｂ）は、ブロックコマンドの具体例を示している。図３（Ｂ）のブロックコマンドは、ブロック識別子Ｎと画素値で構成される。ブロック識別子Ｎの具体例が図３（Ｃ）に図示されている。ブロックコマンドは、画像データを構成する複数ブロックの各ブロックごとに生成される。
【００３７】
各ブロック内における全画素の画素値が０ｘ００の場合に、そのブロックのブロック識別子Ｎは０（Ｎ＝０）とされる。ブロック識別子Ｎが０の場合、識別子０と１画素分の画素値０ｘ００を組み合わせたブロックコマンドが生成される。また、各ブロック内における全画素の画素値が０ｘｆｆの場合に、そのブロックのブロック識別子Ｎは１（Ｎ＝１）とされる。ブロック識別子Ｎが１の場合、識別子１と１画素分の画素値０ｘｆｆを組み合わせたブロックコマンドが生成される。
【００３８】
また、各ブロック内における全画素の画素値が一致している場合に（画素値が０ｘ００と０ｘｆｆの場合を除く）、そのブロックのブロック識別子Ｎは２（Ｎ＝２）とされる。ブロック識別子Ｎが２の場合、識別子２と１画素分の画素値０ｘａ０を組み合わせたブロックコマンドが生成される。そして、各ブロック内における全画素の画素値が一致していない場合に（全画素のうち１画素でも画素値が異なる場合に）そのブロックのブロック識別子Ｎは３（Ｎ＝３）とされる。なお、ブロック識別子Ｎが３の場合には、識別子３のみ（画素値無し）のブロックコマンドが生成される。
【００３９】
図４は、コマンド生成部２０とデータ処理部３０の具体例１（固定ラン長方式）を示す図である。コマンド生成部２０は、対象データ内の各ブロックごとにブロックコマンドを生成する。データ処理部３０は、対象データ内の各ブロックごとに複数の処理方式の中から各ブロックのブロックコマンドに応じた処理方式を選択的に実行して処理結果を得る。図４には、コマンド生成部２０とデータ処理部３０の内部構成例が図示されている。
【００４０】
図４のコマンド生成部２０は、入力制御部とブロック解析部とコマンド決定部を備えている。入力制御部は、メモリ５０に記憶された処理対象となる対象データ、例えばディザ処理前の画像データを取得する。入力制御部は、例えば、画像データを構成する複数ブロック（図３参照）を先頭ブロックから順に次々に取得する。
【００４１】
ブロック解析部は入力制御部から得られる複数ブロックを各ブロックごとに解析する。ブロック解析部は、各ブロックを構成する複数のデータ要素、つまり、各ブロックを構成する複数画素の配列状態を解析し、その配列状態に応じたブロック識別子Ｎ（図３参照）を生成する。
【００４２】
そして、コマンド決定部は、画像データを構成する複数ブロックの各ブロックごとにブロックコマンドを決定する。コマンド決定部は、各ブロックごとにブロック識別子Ｎと画素値で構成されるブロックコマンド（図３参照）を生成する。なお、ブロック解析部の解析結果に応じたブロック識別子Ｎをコマンド決定部が生成してもよい。
【００４３】
こうして、コマンド生成部２０により、画像データを構成する複数ブロックの各ブロックごとにブロックコマンドが生成される。
【００４４】
図４のデータ処理部３０は、コマンド判定部とコマンド処理部０〜３と出力制御部を備えている。コマンド判定部は、画像データを構成する複数ブロックの各ブロックごとにブロックコマンドに応じた処理方式を判定する。コマンド判定部は、複数の処理方式に対応した複数のコマンド処理部０〜３の中から、各ブロックごとにブロックコマンドのブロック識別子Ｎに対応したコマンド処理部を選択する。
【００４５】
例えば、ブロックコマンドのブロック識別子Ｎが０（Ｎ＝０）の場合には、コマンド処理部０が選択される。ブロック識別子Ｎが０（Ｎ＝０）の各ブロックは、そのブロック内の全画素の画素値が０ｘ００であり（図３参照）、そのブロック内の全画素についてディザ処理（閾値処理）の処理結果が既知の０ｂ００となる。そこで、コマンド処理部０は、ディザ処理（閾値処理）を省略し、各ブロック内の全画素（１６画素）の出力値が０ｂ００である処理結果を出力する。
【００４６】
ブロックコマンドのブロック識別子Ｎが１（Ｎ＝１）の場合には、コマンド処理部１が選択される。ブロック識別子Ｎが１（Ｎ＝１）の各ブロックは、そのブロック内の全画素の画素値が０ｘｆｆであり（図３参照）、そのブロック内の全画素についてディザ処理（閾値処理）の処理結果が既知の０ｂ１１となる。そこで、コマンド処理部１は、ディザ処理（閾値処理）を省略し、各ブロック内の全画素（１６画素）の出力値が０ｂ１１である処理結果を出力する。
【００４７】
ブロックコマンドのブロック識別子Ｎが２（Ｎ＝２）の場合には、コマンド処理部２が選択される。ブロック識別子Ｎが２（Ｎ＝２）の各ブロックは、そのブロック内の全画素の画素値が一致している（図３参照）。但し、各画素の処理結果（ディザ処理後の画素値）が各画素の位置（座標）とその画素の値（画素値）に依存する。そこで、コマンド処理部２は、ブロック識別子Ｎが２（Ｎ＝２）のブロックコマンドに付された画素値０ｘａ０を各ブロック内の全画素（１６画素）に対応付けて処理用ブロックを構成し、その処理用ブロックに対してディザ処理（閾値処理）を実行する。これにより、各ブロック内の全画素（１６画素）に関するディザ処理（閾値処理）の処理結果が出力される。
【００４８】
ブロックコマンドのブロック識別子Ｎが３（Ｎ＝３）の場合には、コマンド処理部３が選択される。ブロック識別子Ｎが３（Ｎ＝３）の各ブロックは、そのブロック内の全画素の画素値が一致していない（図３参照）。つまり全画素のうち少なくとも１画素の画素値が他とは異なっており、ディザ処理（閾値処理）が必要となる。そこで、コマンド処理部３は、ブロック識別子Ｎが３（Ｎ＝３）のブロックコマンドに対応した各ブロック内の全画素（１６画素）の画素値をメモリ５０から読み出して処理用ブロックを構成し、その処理用ブロックに対してディザ処理（閾値処理）を実行する。これにより、各ブロック内の全画素（１６画素）に関するディザ処理（閾値処理）の処理結果が出力される。
【００４９】
出力制御部は、コマンド処理部０〜３から得られる処理結果の出力を制御する。出力制御部は、コマンド処理部０〜３から得られる処理結果を、例えば画像データを構成する複数のブロックの先頭ブロックから順に次々に出力してメモリ５０に記憶する。こうして、画像データの処理結果（ディザ処理後の画像データ）がメモリ５０に記憶される。
【００５０】
コマンド生成部２０とデータ処理部３０は例えば再構成可能回路内に構成される。再構成可能回路によりコマンド生成部２０とデータ処理部３０を実現する場合、コマンド生成部２０とデータ処理部３０は、再構成可能回路内に同時に構成されてもよいし、コマンド生成部２０とデータ処理部３０が再構成可能回路内に順に構成されてもよい。
【００５１】
例えば、まずコマンド生成部２０が再構成可能回路内に構成され、画像データ（対象データ）を構成する複数ブロックのブロックコマンドがメモリ５０に記憶される。また、ブロックコマンドに画素値が付されていないブロック、例えばブロック識別子Ｎが３（Ｎ＝３）のブロック（図３参照）については、そのブロックを構成する全画素の画素データもメモリ５０に戻されて記憶される。これに対し、例えばブロック識別子Ｎが０，１，２（Ｎ＝０，１，２）のブロック（図３参照）については、ブロックコマンドに代表となる画素値が付されているため、そのブロックを構成する全画素の画素データをメモリ５０に戻さなくてもよい。そして、コマンド生成部２０に代えてデータ処理部３０が再構成可能回路内に再構成され、メモリ５０に記憶されたブロックコマンドが参照され、各ブロックごとに複数の処理方式の中からブロックコマンドに応じた処理方式が選択的に実行される。
【００５２】
図５は、ブロックコマンドの変形例を示す図である。処理対象となる対象データの具体例であるディザ処理前の画像データは、図３（Ａ）と同じであり、画像データ（対象データ）は、複数のブロックに分割される。例えば、各ブロックは、横方向（Ｘ方向）の画素数が１６画素であり縦方向（Ｙ方向）の画素数が１画素である。
【００５３】
図５（Ａ）は、ブロックコマンドの変形例を示している。図５（Ａ）のブロックコマンドは、ブロック識別子Ｎとラン識別子Ｌと画素値で構成される。ブロック識別子Ｎの具体例が図５（Ｂ）に、ラン識別子Ｌの具体例が図５（Ｃ）に図示されている。
【００５４】
ブロック識別子Ｎは、図３（Ｃ）の具体例と同じである。つまり、図５の変形例においても、各ブロック内における全画素の画素値が０ｘ００の場合に、そのブロックのブロック識別子Ｎは０（Ｎ＝０）とされ、各ブロック内における全画素の画素値が０ｘｆｆの場合に、そのブロックのブロック識別子Ｎは１（Ｎ＝１）とされ、各ブロック内における全画素の画素値が一致している場合に（画素値が０ｘ００と０ｘｆｆの場合を除く）、そのブロックのブロック識別子Ｎは２（Ｎ＝２）とされ、各ブロック内における全画素の画素値が一致していない場合に（全画素のうち１画素でも画素値が異なる場合に）そのブロックのブロック識別子Ｎは３（Ｎ＝３）とされる。
【００５５】
ラン識別子Ｌは、ブロック識別子Ｎが同一となるブロックの連続性を示す。例えば、ブロック識別子Ｎが同一となるブロックが連続していなければ、つまり１つのブロックが孤立していれば、その１つのブロックのラン識別子Ｌは１（Ｌ＝１）とされる。ラン識別子Ｌが１の場合、ブロック識別子Ｎが同一となる画素のラン長は１６（１６×１）となる。ブロック識別子Ｎが同一となるブロックが２つ連続していれば、それらのブロックのラン識別子Ｌは２（Ｌ＝２）とされる。ラン識別子Ｌが２の場合、ブロック識別子Ｎが同一となる画素のラン長は３２（１６×２）となる。また、ブロック識別子Ｎが同一となるブロックが３つ連続していれば、それらのブロックのラン識別子Ｌは３（Ｌ＝３）とされる。ラン識別子Ｌが３の場合、ブロック識別子Ｎが同一となる画素のラン長は４８（１６×３）となる。一般に、ブロック識別子Ｎが同一となるブロックがＭ個（Ｍは自然数）連続していれば、それらのブロックのラン識別子ＬはＭ（Ｌ＝Ｍ）とされる。ラン識別子ＬがＭの場合、ブロック識別子Ｎが同一となる画素のラン長は（１６×Ｍ）となる。
【００５６】
図６は、コマンド生成部２０とデータ処理部３０の具体例２（最適ラン長方式）を示す図である。図６にはコマンド生成部２０とデータ処理部３０の内部構成例が図示されている。
【００５７】
図６のコマンド生成部２０は、入力制御部とブロック解析部とラン長解析部とコマンド決定部を備えている。入力制御部は、メモリ５０に記憶された対象データ、例えばディザ処理前の画像データを取得する。入力制御部は、例えば、画像データを構成する複数ブロック（図３参照）を先頭ブロックから順に次々に取得する。
【００５８】
ブロック解析部は入力制御部から得られる複数ブロックを各ブロックごとに解析する。ブロック解析部は、各ブロックを構成する複数のデータ要素、つまり、各ブロックを構成する複数画素の配列状態を解析し、その配列状態に応じたブロック識別子Ｎ（図５参照）を生成する。
【００５９】
ラン長解析部は、ブロック識別子Ｎが同一となるブロックの連続性を解析する。ラン長解析部は、ブロックの連続性に応じたラン識別子Ｌ（図５参照）を生成する。
【００６０】
そして、コマンド決定部は、画像データを構成する複数ブロックのブロックコマンドを決定する。コマンド決定部は、ブロック識別子Ｎとラン識別子Ｌと画素値で構成されるブロックコマンド（図５参照）を生成する。例えば、各ブロックごとにブロックコマンドが生成される。なお、ブロック識別子Ｎが同一となる連続する複数ブロックに対して１つのブロックコマンドが生成されてもよい。また、ブロック解析部とラン長解析部の解析結果に応じたブロック識別子Ｎとラン識別子Ｌをコマンド決定部が生成してもよい。
【００６１】
こうして、コマンド生成部２０により、画像データを構成する複数ブロックのブロックコマンドが生成される。
【００６２】
図６のデータ処理部３０は、コマンド判定部と再構成制御部と処理回路記憶部とコマンド処理部と出力制御部を備えている。コマンド判定部は、画像データを構成する複数ブロックのブロックコマンドに応じた処理方式を判定する。ブロックコマンドに応じた処理方式は、そのブロックコマンドのブロック識別子Ｎとラン識別子Ｌにより決定される。
【００６３】
コマンド処理部は、ブロックコマンドに応じた処理方式のコマンド処理を実行する。コマンド処理部は、再構成可能回路によって実現される。再構成制御部は、ブロックコマンドのブロック識別子Ｎとラン識別子Ｌにより特定される処理回路ＮＬをコマンド処理部内に再構成する。処理回路ＮＬの回路データは、処理回路記憶部に記憶されている。
【００６４】
図７は、処理回路記憶部に記憶される回路データの具体例を示す図である。処理回路記憶部には、ブロック識別子Ｎ（０〜３）とラン識別子Ｌ（１〜Ｍ）の組み合わせに対応した複数の処理回路ＮＬの回路データが記憶される。各処理回路ＮＬは、ブロック識別子Ｎでラン識別子Ｌであるブロックコマンドに対応したコマンド処理を実行する回路である。
【００６５】
例えば、処理回路０１は、ブロック識別子が０（Ｎ＝０）でラン識別子が１（Ｌ＝１）であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が０の場合には、ブロック内の全画素の画素値が０ｘ００であり（図５参照）、そのブロック内の全画素についてディザ処理（閾値処理）の処理結果が既知の０ｂ００となる（図２参照）。処理回路０１は、ディザ処理（閾値処理）を省略してブロック内の全画素（ラン長１６）の出力値が０ｂ００である処理結果を出力する処理を実行する回路である。
【００６６】
また、処理回路１２は、ブロック識別子が１（Ｎ＝１）でラン識別子が２（Ｌ＝２）であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が１の場合には、ブロック内の全画素の画素値が０ｘｆｆであり（図５参照）、そのブロック内の全画素についてディザ処理（閾値処理）の処理結果が既知の０ｂ１１となる（図２参照）。処理回路１２は、ディザ処理（閾値処理）を省略してブロック内の全画素（ラン長３２）の出力値が０ｂ１１である処理結果を出力する処理を実行する回路である。
【００６７】
また、処理回路２３は、ブロック識別子が２（Ｎ＝２）でラン識別子が３（Ｌ＝３）であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が２の場合には、ブロック内の全画素の画素値が一致している（図５参照）。但し、各画素の処理結果（ディザ処理後の画素値）が各画素の位置（座標）とその画素の値（画素値）に依存する。処理回路２３は、ブロックコマンドに付された画素値０ｘａ０をブロック内の全画素（４８画素）に対応付けて処理用ブロックを構成し、その処理用ブロックに対してディザ処理（閾値処理）を実行する回路である。
【００６８】
また、処理回路３４は、ブロック識別子が３（Ｎ＝３）でラン識別子が４（Ｌ＝４）であるブロックコマンドに対応したコマンド処理を実行する回路である。ブロック識別子が３の場合には、ブロック内の全画素の画素値が一致していない（図５参照）。つまり全画素のうち少なくとも１画素の画素値が他とは異なっており、ディザ処理（閾値処理）が必要となる。処理回路３４は、ブロックコマンドに対応したブロック内の全画素（６４画素）の画素値をメモリ５０から読み出して処理用ブロックを構成し、その処理用ブロックに対してディザ処理（閾値処理）を実行する回路である。
【００６９】
処理回路記憶部には、ブロック識別子Ｎ（０〜３）とラン識別子Ｌ（１〜Ｍ）の全ての組み合わせに対応した複数の処理回路ＮＬの回路データが記憶されている。
【００７０】
図６に戻り、ブロックコマンドのブロック識別子Ｎとラン識別子Ｌにより特定される処理回路ＮＬがコマンド処理部内に再構成され、ブロックコマンドに応じた処理方式のコマンド処理が実行されると、コマンド処理の処理結果は出力制御部へ送られる。
【００７１】
出力制御部はコマンド処理部から得られる処理結果の出力を制御する。出力制御部は、コマンド処理部から得られる処理結果を、例えば画像データを構成する複数のブロックの先頭ブロックから順に次々に出力してメモリ５０に記憶する。こうして、画像データの処理結果（ディザ処理後の画像データ）がメモリ５０に記憶される。
【００７２】
なお、図４の具体例１と同様に、図６の具体例２におけるコマンド生成部２０とデータ処理部３０（処理回路記憶部を除く）が、再構成可能回路内に構成されてもよい。再構成可能回路によりコマンド生成部２０とデータ処理部３０を実現する場合、コマンド生成部２０とデータ処理部３０は、再構成可能回路内に同時に構成されてもよいし、コマンド生成部２０とデータ処理部３０が再構成可能回路内に順に構成されてもよい。
【００７３】
図８は、コマンド生成部２０とデータ処理部３０の具体例３（最適出力幅方式）を示す図である。図８にはコマンド生成部２０とデータ処理部３０の内部構成例が図示されている。
【００７４】
図８のコマンド生成部２０は、図６のコマンド生成部２０と同じ構成であり同じ処理を実行する。つまり、図８のコマンド生成部２０により、画像データを構成する複数ブロックのブロックコマンド（図５参照）が生成される。
【００７５】
図８のデータ処理部３０は、コマンド判定部と再構成制御部と処理回路記憶部とコマンド処理部と出力回路記憶部と出力制御部を備えている。コマンド判定部と処理回路記憶部とコマンド処理部は、図６の具体例２と同じ構成であり同じ処理を実行する。つまり、図８の具体例３においても、コマンド判定部は、画像データを構成する複数ブロックのブロックコマンドに応じた処理方式を判定し、コマンド処理部は、ブロックコマンドに応じた処理方式のコマンド処理を実行する。コマンド処理部は、再構成可能回路によって実現され、再構成制御部は、ブロックコマンドのブロック識別子Ｎとラン識別子Ｌにより特定される処理回路ＮＬをコマンド処理部内に再構成する。処理回路ＮＬの回路データは、処理回路記憶部に記憶されている（図７参照）。
【００７６】
図８の具体例３では、データ処理部３０の出力制御部がブロックコマンドのラン識別子Ｌに応じた出力制御を行う。出力制御部は、再構成可能回路によって実現される。再構成制御部は、ブロックコマンドのラン識別子Ｌにより特定される出力回路Ｌを出力制御部内に再構成する。出力回路Ｌの回路データは、出力回路記憶部に記憶されている。
【００７７】
図９は、出力回路記憶部に記憶される回路データの具体例を示す図である。出力回路記憶部には、ラン識別子Ｌ（１〜Ｍ）に対応した複数の出力回路Ｌ（１〜Ｍ）の回路データが記憶される。各出力回路Ｌは、ラン識別子Ｌにより特定されるラン長に応じたバンド幅（出力ビット幅）で、コマンド処理部（図８）から得られた処理結果をメモリ５０（図８）へ転送する出力制御を実行する回路である。
【００７８】
例えば、出力回路１は、ラン識別子が１（Ｌ＝１）であるブロックコマンドに対応したコマンド処理の処理結果を出力する回路である。ラン識別子が１の場合には、コマンド処理の処理結果がラン長１６であるため、出力回路１は、ラン長１６に対応したバンド幅でコマンド処理の処理結果をメモリ５０へ転送する処理を実行する回路である。
【００７９】
同様に、出力回路２，３，４，・・・，Ｍは、それぞれ、ラン識別子が２，３，４，・・・，Ｍであるブロックコマンドに対応したコマンド処理の処理結果を出力する回路であり、それぞれ、ラン長３２，４８，６４，・・・，１６×Ｍに対応したバンド幅でコマンド処理の処理結果をメモリ５０へ転送する処理を実行する回路である。
【００８０】
図８に戻り、ブロックコマンドのブロック識別子Ｎとラン識別子Ｌにより特定される処理回路ＮＬがコマンド処理部内に再構成され、ブロックコマンドに応じた処理方式のコマンド処理が実行されると、コマンド処理の処理結果は出力制御部へ送られる。また、ブロックコマンドのラン識別子Ｌにより特定される出力回路Ｌが出力制御部内に再構成され、出力制御部は、ラン識別子Ｌにより特定されるラン長に応じたバンド幅（出力ビット幅）で、コマンド処理部から得られた処理結果をメモリ５０へ転送する。出力制御部は、コマンド処理部から得られる処理結果を、例えば画像データを構成する複数のブロックの先頭ブロックから順に次々に出力してメモリ５０に記憶する。こうして、画像データの処理結果（ディザ処理後の画像データ）がメモリ５０に記憶される。
【００８１】
なお、図４の具体例１と図６の具体例２と同様に、図８の具体例３におけるコマンド生成部２０とデータ処理部３０（処理回路記憶部と出力回路記憶部を除く）が、再構成可能回路内に構成されてもよい。再構成可能回路によりコマンド生成部２０とデータ処理部３０を実現する場合、コマンド生成部２０とデータ処理部３０は、再構成可能回路内に同時に構成されてもよいし、コマンド生成部２０とデータ処理部３０が再構成可能回路内に順に構成されてもよい。
【００８２】
図１０，図１１にはデータ処理装置１００が実行する処理の具体例が図示されている。図１０は、データ処理装置１００のコマンド生成部２０（図８の具体例３）が実行する処理の具体例を示すフローチャートである。
【００８３】
まず、画像データ（対象データ）を構成する各ブロックが解析され（Ｓ１００１）、各ブロックのブロック識別子Ｎが生成される（Ｓ１００２）。そして、生成されたブロック識別子Ｎが１つ前のブロックと一致しているか否かが確認される（Ｓ１００３）。
【００８４】
１つ前のブロックと一致していれば、ラン識別子Ｌに１が加えられてラン識別子Ｌが更新される（Ｓ１００４）。なお、ラン識別子Ｌの初期値は１とする。また、１つ前のブロックと一致している場合には、Ｓ１００１からＳ１００４の処理が繰り返される。
【００８５】
そして、ブロック識別子Ｎが１つ前のブロックと一致していない場合には、ブロック識別子Ｎとラン識別子Ｌによりブロックコマンドが決定される（Ｓ１００５）。なお、ラン識別子Ｌが最大値Ｍに達した場合にも、Ｓ１００５のステップに進んでブロックコマンドが決定される。
【００８６】
こうして、画像データ（対象データ）を構成する全ブロックに関する処理が終了するまでＳ１００１からＳ１００５までの処理が繰り返され、全ブロックに関する処理が終了すると（Ｓ１００６）、コマンド生成部２０による処理が終了する。
【００８７】
図１１は、データ処理装置１００のデータ処理部３０（図８の具体例３）が実行する処理の具体例を示すフローチャートである。
【００８８】
まず、コマンド生成部２０により生成されたブロックコマンドが解析され（Ｓ１１０１）、そのブロックコマンドのブロック識別子Ｎとラン識別子Ｌに対応した処理回路ＮＬと出力回路Ｌが決定される（Ｓ１１０２，Ｓ１１０３）。
【００８９】
そして、コマンド処理部（図８）内に既に構成されている現処理回路ＮＬと、Ｓ１１０２において決定された処理回路ＮＬが一致しているか否かが確認される（Ｓ１１０４）。現処理回路ＮＬと一致していれば、その処理回路ＮＬによりコマンド処理が実行される（Ｓ１１０６）。現処理回路ＮＬと一致していなければ、Ｓ１１０２において決定された処理回路ＮＬがコマンド処理部内に再構成され（Ｓ１１０５）、再構成後の処理回路ＮＬによりコマンド処理が実行される（Ｓ１１０６）。
【００９０】
次に、出力制御部（図８）内に既に構成されている現出力回路Ｌと、Ｓ１１０３において決定された出力回路Ｌが一致しているか否かが確認される（Ｓ１１０７）。現出力回路Ｌと一致していれば、その出力回路Ｌによりコマンド処理の処理結果が出力される（Ｓ１１０９）。現出力回路Ｌと一致していなければ、Ｓ１１０３において決定された出力回路Ｌが出力制御部内に再構成され（Ｓ１１０８）、再構成後の出力回路Ｌによりコマンド処理の処理結果が出力される（Ｓ１１０９）。
【００９１】
こうして、画像データ（対象データ）を構成する全ブロックコマンドに関する処理が終了するまでＳ１１０１からＳ１１０９までの処理が繰り返され、全ブロックコマンドに関する処理が終了すると（Ｓ１１１０）、データ処理部３０による処理が終了する。
【００９２】
図１２は、データ処理装置１００の処理性能の具体例を示す図である。図１２には、図８の具体例３で説明した最適出力幅方式により、チャート１〜３を処理した場合の性能指標が図示されている。
【００９３】
チャート１は、画像全体が写真の画像データであり、チャート２は、画像の一部に写真が含まれる画像データである。また、チャート３は、帳票（文字，数字，線などが中心の画像で余白も多い）の画像データである。
【００９４】
図１２の縦軸に示す性能指標は、画像データの全域（全ブロック）をラスタ処理、つまり、ブロックコマンドを生成せずに全ブロックの全画素に対してディザ処理（閾値処理）を実行した場合の性能指標である基準値「１」に対する相対的な値である。
【００９５】
チャート１は、画像全体が写真であるため、ブロックコマンドを生成しても、ほぼ全てのブロックにおいてブロック識別子Ｎが３（Ｎ＝３）となりディザ処理（閾値処理）が必要になる。そのため、チャート１の場合には、基準値「１」とほぼ同程度の性能指標となる。
【００９６】
これに対し、チャート３は、帳票であり画像全体が余白と文字や数字や線などにより構成されているため、ブロック識別子Ｎが０〜２（Ｎ＝０，１，２）となるブロックが多数を占める。そのため、チャート３の場合には、ラスタ処理のみの基準値「１」に比べて、ブロックコマンドの生成（ベクタ化）により処理速度等の性能が向上する。図１２の具体例においては、チャート３について基準値「１」の３倍以上の性能指標が得られている。
【００９７】
なお、チャート２は、画像の一部に写真が含まれる画像データであり、写真以外の領域においてブロックコマンドの生成（ベクタ化）により処理速度等の性能が向上する。図１２の具体例においては、チャート２について基準値「１」の３倍弱の性能指標が得られている。
【００９８】
このように、図１のデータ処理装置１００は、画像データの全域（全ブロック）をラスタ処理する場合に比べて、ブロックコマンドの生成（ベクタ化）により、例えば、処理速度等の性能が向上する。また、図６の具体例２（最適ラン長方式）では、図４の具体例１（固定ラン長方式）による効果に加えて、ラン長の最適化により処理速度等の性能が更に向上する。また、図８の具体例３（最適出力幅方式）では、図６の具体例２（最適ラン長方式）による効果に加えて、出力幅の最適化により処理結果の転送速度等の性能が向上する。
【００９９】
以上、本発明の好適な実施形態を説明したが、上述した実施形態は、あらゆる点で単なる例示にすぎず、本発明の範囲を限定するものではない。本発明は、その本質を逸脱しない範囲で各種の変形形態を包含する。
【符号の説明】
【０１００】
１０  演算部、２０  コマンド生成部、３０  データ処理部、５０  メモリ、１００  データ処理装置。
【図１】
0006711003.tif 000002
【図２】
0006711003.tif 000003
【図３】
0006711003.tif 000004
【図４】
0006711003.tif 000005
【図５】
0006711003.tif 000006
【図６】
0006711003.tif 000007
【図７】
0006711003.tif 000008
【図８】
0006711003.tif 000009
【図９】
0006711003.tif 000010
【図１０】
0006711003.tif 000011
【図１１】
0006711003.tif 000012
【図１２】
0006711003.tif 000013