(57)【要約】【課題】  動的に回路構成を変更できる回路での画像処理を行う際の処理時間を最短化することができる技術を提供すること。【解決手段】  画像データの属性情報を参照し、属性情報の切り替わりを検出する。そして、その値に基づき、回路構成を変更するための時間を計算し、その時間から処理時間が最短になる処理方式を選択することで処理時間を最適化する。【選択図】  図８
2011054098.tif 000002
【特許請求の範囲】
【請求項１】
画素データとそれぞれの画素の属性情報を含む画像データを、複数種の画像処理が実行可能なように回路変更が可能な処理回路で画像処理を行う画像処理装置において、
属性情報を参照し、画素データに対する処理を切り換えなければならない回数と存在する属性情報の種類を計数する手段と、
前記計数手段で得られた値から入力画像データの処理方式を切り換える処理方式切換手段と
を備えることを特徴とする画像処理装置。
【請求項２】
請求項１に記載の画像処理装置において、
前記処理方式切換手段は、前記計数手段で得られた回数が所定の値より小さい場合には第一の処理方式を行い、さもなければ第二の処理方式を行うように制御する回路であって、
前記第一の処理方式は、画像データの入力画素毎に回路変更が可能な処理回路を属性情報に対応した処理に変更しながら処理を行う方式であり、
前記第二の処理方式は、回路変更が可能な処理回路を変更せずに入力画像データを処理し、次に処理回路を変更して再度入力画像データを処理し、それらの処理結果の画素を属性情報から選択して結果を得る処理を行う方式であることを特徴とする画像処理装置。
【請求項３】
請求項１及至２に記載の画像処理装置において、
前記計数手段が計数を行う画像データの単位はページの矩形部分（バンドやタイル）単位であることを特徴とする画像処理装置。
【請求項４】
画素データとそれぞれの画素の属性情報を含む画像データを、複数種の画像処理が実行可能なように回路変更が可能な処理回路で画像処理を行う画像処理装置において、
属性データを参照し、画素データに対する処理を切り換えるために回路変更が可能な処理回路の回路変更に要する総時間を表す値と存在する属性情報の種類を算出する手段と、
前記算出手段で得られた値から入力画像データの処理方式を切り換える処理方式切換手段と
を備えることを特徴とする画像処理装置。
【請求項５】
請求項４に記載の画像処理装置において、
前記処理方式切換手段は、前記算出手段で得られた値が所定の値より小さい場合には第一の処理方式を行い、さもなければ第二の処理方式を行うように制御する回路であって、
前記第一の処理方式は、画像データの入力画素毎に回路変更が可能な処理回路を属性情報に対応した処理に変更しながら処理を行う方式であり、
前記第二の処理方式は、回路変更が可能な処理回路を変更せずに入力画像データを処理し、次に処理回路を変更して再度入力画像データを処理し、それらの処理結果の画素を属性情報から選択して結果を得る処理を行う方式であることを特徴とする画像処理装置。
【請求項６】
請求項４及至５に記載の画像処理装置において、
前記算出手段が算出を行う画像データの単位はページの矩形部分（バンドやタイル）単位であることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像に対する画像処理技術に関するものである。
【背景技術】
【０００２】
従来、スキャナにより読み取られ、送出された画像データや、ホストコンピュータから送出された画像データ等を取得し、取得したデータに各種の画像処理を施し、印刷データとして展開する画像処理装置では、高画質な印刷結果の実現が求められている。
【０００３】
このような高画質な印刷結果を実現するため、画像内のデータが文字、写真といった画素属性、画像データの送信元がスキャナ、ホストコンピュータといったページ毎の面属性に応じて専用の画像処理を施す必要がある。
【０００４】
これらの属性を好適に利用することで、複数ある画像処理装置の処理負荷を最適化する試みがなされている（特許文献１参照）。また、それぞれの画像処理専用のハードウェア全てを備えると、回路規模等が増大してコストアップとなるので、複数種の画像処理のそれぞれを実行可能な処理手段を用意し、前記処理手段を制御する制御手段を備える提案がなされている（特許文献２参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−０８１７９５号公報
【特許文献２】特開２００６−２８５７９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし上述した従来の画像処理装置においては、画像データの各画素に対する属性の変化点が多い場合には、処理時間がかかるという問題がある。すなわち、様々な属性の画素が逐次入力された場合、回路変更が可能な処理回路の切り換えのための時間が多くなり、全体の処理時間がかかってしまう。
【０００７】
本発明はこのような問題に鑑みてなされたものであり、入力画像データの属性情報を参照して、回路変更が可能な処理回路の切り換え回数或いは切り換えに要する時間を得る手段を備える。そして、その値から入力画像データの処理方式を変更することにより回路変更が可能な処理回路の切り換え時間を最小にし、処理時間を最適化するための技術を提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的を達成するために、例えば本発明の画像処理装置は以下の構成を備える。
【０００９】
即ち、属性データを参照し、画素データに対する処理を切り換えなければならない回数と存在する属性情報の種類を計数する手段と、
前記計数手段で得られた値から入力画像データの処理方式を切り換える処理方式切換手段と
を備えることを特徴とする。
【００１０】
或いは、属性データを参照し、画素データに対する処理を切り換えるために回路変更が可能な処理回路の回路変更に要する総時間と存在する属性情報の種類を表す値を算出する手段と、
前記算出手段で得られた値から入力画像データの処理方式を切り換える処理方式切換手段と
を備えることを特徴とする。
【発明の効果】
【００１１】
本発明の構成により、動的に回路構成を変更できる回路での画像処理を行う処理時間を最適化することができる。
【図面の簡単な説明】
【００１２】
【図１】本説明の実施形態にかかわる画像処理装置を適用したシステムの機能構成を表すブロック図である。
【図２】スキャナ１から画像処理装置３に対して画像データが送出された場合に、画像処理装置３が行う処理のフローチャートである。
【図３】ホストコンピュータ２から画像処理装置３に対してＰＤＬデータを送出した場合に、画像処理装置３が行う処理のフローチャートである。
【図４】記憶装置４に保存された中間データを読み出して画像処理部３に指示することで、画像処理装置に中間データの処理を行わせるためにスケジューラ３８が行う処理のフローチャートである。
【図５】記憶装置４に保存された中間データを読み出して印字エンジン部５に送出することで、この中間データに従った印刷をこの印字エンジン部５に行わせるために画像処理装置３が行う処理のフローチャートである。
【図６】中間データの構成（フォーマット）例を示す図である。
【図７】属性情報の構成（フォーマット）例を示す図である。
【図８】画像処理部３７の基本構成を示すブロック図である。
【図９】パイプライン回路を説明するための図である。
【図１０】動的回路切換時間算出部３０３の動作を説明するためのフローチャートである。
【図１１】第一の処理方式と第二の処理方式での処理時間を示す図である。
【図１２】他の例での第一の処理方式と第二の処理方式での処理時間を示す図である。
【図１３】処理方式制御部３０５の動作を説明するためのフローチャートである。
【図１４】処理方式制御部３０５が第一の処理方式を選択した時の動作を説明するためのフローチャートである。
【図１５】処理方式制御部３０５が第二の処理方式を選択した時の動作を説明するためのフローチャートである。
【図１６】他の実施形態に係る画像処理部３７の基本構成を示すブロック図である。
【図１７】動的回路切換回数計数部４０３の動作を説明するためのフローチャートである。
【図１８】他の実施形態に係る処理方式制御部３０５の動作を説明するためのフローチャートである。
【発明を実施するための形態】
【００１３】
以下添付図面を参照して、本発明を好適な実施形態に従って詳細に説明する。
【００１４】
図１は、本実施形態に係る画像処理装置を適用したシステムの機能構成を示すブロック図である。同図に示したシステムは大まかには、スキャナ１、ホストコンピュータ２、画像処理装置３、記憶装置４、印字エンジン部５により構成されている。
【００１５】
スキャナ１は周知の通り、紙などの記録媒体上に記録された情報（画像、文字など）を読み取り、読み取った結果を画像データとして出力する。出力した画像のデータは画像処理装置３に入力される。
【００１６】
ホストコンピュータ２は、一般のＰＣ（パーソナルコンピュータ）やＷＳ（ワークステーション）などのコンピュータであって、このコンピュータでもって作成された画像や文書はＰＤＬデータとして画像処理装置３に入力される。
【００１７】
このように画像処理装置３はスキャナ１やホストコンピュータ２から送出されたデータを受け取ることができる。よって当然、画像処理装置３とスキャナ１、画像処理装置３とホストコンピュータ２とはデータ通信が可能なようにネットワークが形成されているのであるが、このネットワークの構成については特に限定するものではない。
【００１８】
画像処理装置３はスキャナ１やホストコンピュータ２から受けたデータに基づいて各種の画像処理を施し、画像処理済みのデータを出力する。なお、画像処理装置３、および画像処理装置３が行う処理の詳細については後述する。
【００１９】
記憶装置４は、画像処理装置３から出力された画像処理済みのデータを記憶、保持するものである。
【００２０】
印字エンジン部５は、画像処理装置３から出力された画像処理済みのデータに基づいて、紙などの記憶媒体上に印字処理を行う。
【００２１】
なお、本実施形態では画像処理装置３にデータを入力するのはスキャナ１とホストコンピュータ２の２つとしたが、これ以外の装置であっても良く、例えば複合機やファクシミリ装置などから送出されたデータを画像処理装置３に入力するようにしても良い。
【００２２】
次に、画像処理装置３の構成について説明する。画像処理装置３はスキャナ入力色処理ブロック３１、ホストＩ／Ｆ部３２、ＰＤＬ処理部３３、ＣＰＵ３４、ＲＡＭ３５、ＲＯＭ３６、画像処理部３７、スケジューラ３８、ストレージコントローラ部３９、エンジンＩ／Ｆ部４０により構成されている。
【００２３】
スキャナ入力色処理ブロック３１は、スキャナ１から送出された画像データを受け、各種の色処理をこの画像データに対して施す処理を行う。ホストＩ／Ｆ部３２は、ホストコンピュータ２から送出されたＰＤＬデータを受けるためのインターフェースとして機能するものである。なお、ホストＩ／Ｆ部３２は、画像処理装置３とホストコンピュータ２とを繋ぐネットワークに応じたものとなるのであるが、例えば、イーサネット（登録商標）やシリアルインターフェースもしくは、パラレルインターフェースといったもので構成されている。
【００２４】
ＰＤＬ処理部３３は、ホストＩ／Ｆ部３２が受けたＰＤＬデータを展開する処理を行う。
【００２５】
ＣＰＵ３４は、ＲＡＭ３５やＲＯＭ３６に格納されているプログラムやデータを用いて本画像処理装置３全体の制御を行うと共に、画像処理装置３が行う後述の各処理を実行する。
【００２６】
ＲＡＭ３５は、スキャナ入力色処理ブロック３１やホストＩ／Ｆ部３２を介してスキャナ１やホストコンピュータ２から受信したデータを一時的に記憶するためのエリアを備えると共に、ＣＰＵ３４が各種の処理を実行する際に用いるワークエリアを備える。
【００２７】
ＲＯＭ３６は、ＣＰＵ３４に本画像処理装置３全体を制御すると共に、画像処理装置３が行う後述の各処理をＣＰＵ３４に実行させるためのプログラムやデータ、また、画像処理装置３の設定データなどが格納されている。
【００２８】
画像処理部３７は、スキャナ１やホストコンピュータ２から送出されたデータに基づいた画像に対する画像処理を行う。画像処理部３７が行う処理の詳細については後述する。
【００２９】
スケジューラ３８は、画像処理部３７へ転送する中間データをスケジューリングする。
【００３０】
ストレージコントローラ部３９は、本画像処理装置３による画像処理済みのデータを記憶装置４に記録する処理を制御する。
【００３１】
エンジンＩ／Ｆ部４０は、本画像処理装置３による画像処理済みのデータを印字エンジン部５に送出するための一連の処理を行う。
【００３２】
４１は上述の各部を繋ぐバスである。
【００３３】
次に、スキャナ１、ホストコンピュータ２から画像処理装置３にデータを送出した場合に、画像処理装置３が行う処理について説明する。
【００３４】
図２は、スキャナ１から画像処理装置３に対して画像データが送出された場合に、画像処理装置３が行う処理のフローチャートである。
【００３５】
スキャナ入力色処理ブロック３１を介して、スキャナ１から送出された画像データの受信をＣＰＵ３４が検知すると、同図のフローチャートに従った処理が開始される。先ず、ＣＰＵ３４は、受けた画像データを一時的にＲＡＭ３５に格納し、その後、この画像データに対して各種の色処理を行う（ステップＳ１０１）。そして色処理後の画像データを構成する各画素の属性情報を生成し、生成した属性情報と色処理後の画像データとをセットにして中間データとして記憶装置４にストレージコントローラ部３６を介して送出する（ステップＳ１０２）。よってこの中間データは記憶装置４に保存されることになる。
【００３６】
図３は、ホストコンピュータ２から画像処理装置３に対してＰＤＬデータを送出した場合に、画像処理装置３が行う処理のフローチャートである。
【００３７】
ホストＩ／Ｆ部３２を介して、ホストコンピュータ２から送出されたＰＤＬデータの受信をＣＰＵ３４が検知すると、同図のフローチャートに従った処理が開始される。先ず、ＣＰＵ３４は、受けたＰＤＬデータを一時的にＲＡＭ３５に格納する（ステップＳ２０１）。次に、ＣＰＵ３４がこのＰＤＬデータに基づいて上記中間データを生成する（ステップＳ２０２）。即ち、ホストコンピュータ２から送出されたＰＤＬデータが示す画像を構成する各画素のデータと共に、各画素に対する属性情報をセットにしたものを生成する。
【００３８】
そして生成した中間データを記憶装置４にストレージコントローラ部３９を介して送出する（ステップＳ２０３）。よってこの中間データは記憶装置４に保存されることになる。
【００３９】
次に、記憶装置４に保存された中間データを読み出して画像処理部３に指示することで、画像処理装置に中間データの処理を行わせるためにスケジューラ３８が行う処理について、スケジューラ３８のフローチャートを示す図４を用いて以下説明する。
【００４０】
先ず、記憶装置４に保存されている中間データをＲＡＭ３５に読み出し、読み出した中間データに対してページ毎に付与される面属性と画素毎に付与される画素属性を取得する（ステップＳ３０１）。これを印刷するページ分繰り返し行う（ステップＳ３０２）。例えば、Ｎアップ印刷の場合はＮページ分取得する。そして、中間データをＲＡＭ３５から画像処理部３７へ転送する（ステップＳ３０３）。
【００４１】
次に、記憶装置４に保存された中間データを読み出して印字エンジン部５に送出することで、この中間データに従った印刷をこの印字エンジン部５に行わせる為に画像処理装置３が行う処理について、同処理のフローチャートを示す図５を用いて以下説明する。
【００４２】
先ず、記憶装置４に保存されている中間データをスケジューラ３８の指示によってＲＡＭに読み出し、読み出した中間データに対して階調変換処理を施す（ステップＳ４０１）。
【００４３】
これらの処理により、中間データを印字データに変換するので、変換した印字データを印字エンジン部５に出力する（ステップＳ４０２）。
【００４４】
以上の各処理により、スキャナ１、ホストコンピュータ２の何れから受けたデータであっても、これを中間データに変換して保持することができる。さらに、これに基づいた印刷を行う場合にはこの中間データに対して階調変換などの画像処理を施し、その結果を印字エンジン部５に出力することができる。なお、以上の説明では中間データは一端記憶装置４に保存するとしたが、生成した中間データを記憶装置４に保存することなく、直接階調変換などの画像処理を施し、その結果を印字エンジン部５に出力するようにしても良い。
【００４５】
図６は、中間データの構成（フォーマット）例を示す図である。中間データは上述の通り、画像を構成する各画素のデータと、各画素の属性情報とから成るものであるが、より具体的には同図に示す如く、画素のＹＭＣＫデータと、この画素の属性情報とから成る。同図では属性情報を４ビットデータ、Ｙ、Ｍ、Ｃ、Ｋそれぞれを８ビットデータとしているが、これに限定するものではない。また、画素のデータとしてはＹＭＣＫ以外の色空間における色データであっても良い。
【００４６】
図７は、属性情報の構成（フォーマット）例を示す図である。同図に示す如く、属性情報は、面属性と画素属性とから成る。面属性とは、画素データ（本実施形態ではＲＧＢデータ）がスキャナ１から取得したものであるのか、ホストコンピュータ２から取得したものであるのかを示すものである。例えば「面属性が１の場合にはスキャナ１から取得した」、「面属性が０の場合にはホストコンピュータ２から取得した」というように、面属性を参照することで、中間データがどの装置から得られたデータに基づくものであるのかをチェックすることができる。
【００４７】
なお、本実施形態では中間データはスキャナ１、ホストコンピュータ２という２つの装置の何れかから得られたデータに基づくものである。よって、面属性は１，０の何れかの値を取れば良く、そのため入力モードは１ビットで表現できるのであるが、画像処理装置３がより多くの装置からデータを受信できる場合には、その数に応じて面属性を表現するビット数を多くする必要がある。
【００４８】
画素属性とは、中間データに含められる画素データ（本実施形態ではＹＭＣＫデータ）が、画像上のどの領域内（例えば、写真領域、文字領域など）のものであるのかを示す情報である。なお、同図では像域情報は３ビットでもって表現されるとしているが、これに限定するものではない。
【００４９】
図８は、上記画像処理部３７の基本構成を示すブロック図である。同図に示す如く、画像処理部３７は、データＩ／Ｆ３０１、入力データ一時記憶部３０２、動的回路切換時間算出部３０３、データ分離部３０４、処理方式制御部３０５、コンフィギュア選択部３０６、信号処理回路３０７、出力データ一時記憶部３０８により構成されている。
【００５０】
データＩ／Ｆ３０１はバス４１のインターフェースであり、入力画像データをバス４１から読み込み、画像処理を施した出力画像データをバス４１へ書き出す。
【００５１】
入力データ一時記憶部３０２は入力画像データ用の緩衝バッファである。バス４１は多くのブロックが接続され、各ブロック間のデータ転送に使用される。したがって、他のブロックがバス４１を使用している期間、データＩ／Ｆ３０１はバス４１から入力画像データを読み込むことはできず、緩衝バッファがない場合には画像処理が一時停止してしまう。
【００５２】
動的回路切換時間算出部３０３は入力画像データの属性情報を参照し、後述する動的回路切換時間と属性情報の種類の数を算出するブロックである。
【００５３】
データ分離部３０４は入力画像データを画素データと属性情報に分離するブロックである。
【００５４】
処理方式制御部３０５は入力画像データの処理方式を制御するブロックである。
【００５５】
コンフィギュア選択部３０６は入力される属性情報に応じて、信号処理回路３０７に対して、回路構成をどの構成にするのかを指示するブロックである。
【００５６】
信号処理回路３０７は様々な処理が実行できるように、回路構成が変更可能なように構成される回路である。
【００５７】
出力データ一時記憶部３０８は画像処理が施された出力画像データ用の緩衝バッファである。バス４１は多くのブロックが接続され、各ブロック間のデータ転送に使用される。したがって、他のブロックがバス４１を使用している期間、データＩ／Ｆ３０１はバス４１へ出力画像データを書き出すことはできず、緩衝バッファがない場合には画像処理が一時停止してしまう。
【００５８】
ここで、信号処理回路３０７で画素データを処理している時に、信号処理回路３０７を動的に他の処理を行う回路構成に切り換える際に要する時間（動的切換時間）について説明する。動的切換時間は二つの時間の和である。
【００５９】
一つは信号処理回路３０７の回路構成を切り換えるために必要な時間である。現在、回路構成が変更可能なように構成された回路には、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）や動的再構成プロセッサ（Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ  Ｐｒｏｃｅｓｓｏｒ）などがある。例えば、ＦＰＧＡは回路構成を切り換えるためにミリ秒或いはマイクロ秒のオーダーの時間が必要であり、動的再構成プロセッサは１クロックで回路構成を切り換えられる。
【００６０】
もう一つは、信号処理回路３０７の内部に存在する処理中の画素データがすべて、信号処理回路３０７から出力されるまでの時間である。一般的に、画像処理は複雑であり、１画素データに対して、１クロックでは処理できない。通常、画像処理回路は各入力画素データを１クロック毎に入力でき、各出力画素データを１クロック毎に出力できるようにするために、パイプライン回路が採用される。パイプライン回路とは、必要な処理を１クロックで完了できる処理に分割し、分割された処理の間をＦＦ（フリップフロップ）で接続した構成の回路である。ＦＦは分割された処理の中間結果が記憶される。
【００６１】
図９はパイプライン回路を説明するための図である。同図（Ａ）は分割された処理が四個の例における回路構成である。同図（Ｂ）はこの例における動作を示すタイミングチャートである。時刻Ｔ０で入力された画素データ０は処理回路０で処理され、その処理結果が時刻Ｔ１でＦＦ０に記憶される。時刻Ｔ１でＦＦ０に記憶されたデータ（画素データ０の中間データ）と同時刻で入力された画素データ１はそれぞれ処理回路１と処理回路０で処理され、時刻Ｔ２でＦＦ１とＦＦ０に記憶される。時刻Ｔ２でＦＦ１とＦＦ０に記憶されたデータ（画素データ０と画素データ１の中間データ）及び同時刻で入力された画素データ２はそれぞれ処理回路２、処理回路１、処理回路０で処理され、時刻Ｔ３でＦＦ２、ＦＦ１、ＦＦ０に記憶される。時刻Ｔ３でＦＦ２、ＦＦ１、ＦＦ０に記憶されたデータ（画素データ０、１、２の中間データ）及び同時刻で入力された画素データ３はそれぞれ処理回路３、２、１、０で処理され、時刻Ｔ４でＦＦ３、ＦＦ２、ＦＦ１、ＦＦ０に記憶される。時刻Ｔ０で入力された画素データは時刻Ｔ４で結果が出力される。つまり、入力された画素データは４クロックのレイテンシ（時間遅れ）をもって、結果が出力される。
【００６２】
時刻Ｔ４で画素データ４がこのパイプライン回路に入力され、次の画素データ５からは別の処理を施したい場合を考えると、画素データ４の結果が出力される時刻Ｔ８まではパイプライン回路の回路構成を変更できないのは明らかである。つまり、信号処理回路３０７の回路構成が４段のパイプライン回路であった場合、その回路構成で処理する最後の画素データを入力してから、最短でも４クロック後に回路構成が変更可能となる。
【００６３】
動的切換時間は回路構成を切り換えるために必要な時間と信号処理回路３０７のレイテンシの和となる。
【００６４】
図１０は動的回路切換時間算出部３０３の動作を説明するためのフローチャートである。同図では属性情報の取りうる値は４種類と仮定し、数値０から３に対応付けている。
【００６５】
ステップＳ５０１で初期化を行う。ｒｅｃｏｎｆｉｇ＿ｔｏｔａｌ＿ｔｉｍｅは算出すべき動的回路切換時間の合計を格納する変数で、ゼロで初期化する。ｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］（ｉは０から３）は算出すべき属性情報ｉが存在するか否かのフラグを格納する変数で、すべてゼロで初期化する。ｐｒｅｖ＿ａｔｔｒは前の画素の属性情報を格納する内部変数である。ｐｉｘｅｌ＿ｃｏｕｎｔは参照した属性情報の数を格納する内部変数で、ゼロで初期化する。
【００６６】
ステップＳ５０２で、最初の属性情報を入力する。入力した属性情報が変数ａｔｔｒに格納する。
【００６７】
ステップＳ５０３で最初の属性情報を処理する。ｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ａｔｔｒ］を１にすることで、属性情報ｉが存在するか否かのフラグを更新する。ｐｒｅｖ＿ａｔｔｒにａｔｔｒの値を設定し、ｐｉｘｅｌ＿ｃｏｕｎｔをインクリメントする。
【００６８】
ステップＳ５０４で次の属性情報を入力する。入力した属性情報が変数ａｔｔｒに格納する。
【００６９】
ステップＳ５０５で、前の画素の属性情報と現時点の属性情報を比較する。これらが等しければ、つまり、前の画像データと現時点の画素データの処理が同じであれば、ステップＳ５０７へジャンプする。さもなければ、つまり、前の画像データと現時点の画素データの処理が異なる場合は、次のステップへ進む。
【００７０】
ステップＳ５０６で、変数ｒｅｃｏｎｆｉｇ＿ｔｏｔａｌ＿ｔｉｍｅを更新する。ここで、ＤＲＴ［ｉ］は信号処理回路３０７の回路構成を属性情報ｉに対応するものから、別の属性情報に対応するものに切り換えるときの動的回路切換時間表す値（例えば、クロック数）を格納する定数である。
【００７１】
ステップＳ５０７で、属性情報に対して、ｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ａｔｔｒ］を１にすることで、属性情報ｉが存在するか否かのフラグを更新する。さらに、ｐｒｅｖ＿ａｔｔｒにａｔｔｒの値を設定し、ｐｉｘｅｌ＿ｃｏｕｎｔをインクリメントする。
【００７２】
ステップＳ５０８で、参照した属性情報の数ｐｉｘｅｌ＿ｃｏｕｎｔをチェックする。すべての属性情報を参照していない場合、ステップＳ５０４に戻り、さもなければ、処理を終了する。ここで、ＮＰＩＸＥＬＳは処理すべき画像データの数を表す。通常、ＮＰＩＸＥＬＳは１ページの画像データのバンドやタイル部分に含まれる画素数である。
【００７３】
処理方式制御部３０５は動的回路切換時間算出部３０３で算出された値を基に処理方式を切り換えて制御する。第一の処理方式は、画像データの入力画素毎に信号処理回路３０７を属性情報に対応した処理に変更しながら処理を行う方式である。また、第二の処理方式は、信号処理回路３０７の回路構成を変更せずに入力画像データを処理し、次に信号処理回路３０７の回路構成を変更して再度入力画像データを処理し、それらの処理結果の画素を属性情報から選択して結果を得る処理を行う方式である。
【００７４】
図１１は、第一の処理方式と第二の処理方式での処理時間を示す図である。同図（Ａ）は属性情報の分布を示す。同図（Ｂ）は第一の処理方式と第二の処理方式での処理時間を図示している。
【００７５】
まず、第一の処理方式について説明する。この例では、属性情報１から属性情報０への切り替わりが一箇所である。従って、同図（Ｂ）上に示すように、属性情報１の部分を処理した後に、信号処理回路３０７の回路構成を属性情報０の処理に対応した回路構成に変更する。その際に、動的回路切換時間（同図で、Ｄ１の部分）を要する。その後に、属性情報０の部分を処理する。
【００７６】
次に、第二の処理方式について説明する。この例では、属性情報として、属性情報１と属性情報０の２種類が存在する。従って、同図（Ｂ）下に示すように、全画素データを信号処理回路３０７の回路構成を属性情報０の処理に対応した回路構成で処理を行い、信号処理回路３０７の回路構成を属性情報１の処理に対応した回路構成に変更する。その際に、動的回路切換時間（同図で、Ｄ０の部分）を要する。その後に、全画素データを信号処理回路３０７の回路構成を属性情報１の処理に対応した回路構成で処理を行う。
【００７７】
ここで、第二の処理方式における、１回の全画素データの処理時間を表す値Ｔと使えば、
（第一の処理方式での処理時間）＝  Ｔ＋Ｄ１
（第二の処理方式での処理時間）＝  ２＊Ｔ＋Ｄ０
となる。Ｔがクロック数であれば、Ｔは全画素データ数となる。この例では、第一の処理方式の処理時間のほうが短いことがわかる。
【００７８】
図１２は、他の例での第一の処理方式と第二の処理方式での処理時間を示す図である。同図（Ａ）は属性情報の分布を示す。同図（Ｂ）は第一の処理方式と第二の処理方式での処理時間を図示している。
【００７９】
まず、第一の処理方式について説明する。この例では、属性情報１から属性情報０への切り替わりと属性情報０から属性情報１への切り替わりが多数存在する。従って、同図（Ｂ）上に示すように、まず、上部の属性情報１の部分を処理する。その後、信号処理回路３０７の回路構成を属性情報０の処理に対応した回路構成に変更し、属性情報０の部分を処理し、信号処理回路３０７の回路構成を属性情報１の処理に対応した回路構成に変更し、属性情報１の部分を処理することを繰り返す。第二の処理方式については、図１１と同じである。従って、
（第一の処理方式での処理時間）＝Ｔ＋Ｄ０＊ｎ＋Ｄ１＊（ｎ＋１）
（第二の処理方式での処理時間）＝２＊Ｔ＋Ｄ０
となる。ここで、ｎは属性情報０から属性情報１への切り替わり回数である。この例では、第二の処理方式の処理時間のほうが短いことがわかる。
【００８０】
動的回路切換時間算出部３０３で算出されたｒｅｃｏｎｆｉｇ＿ｔｏｔａｌ＿ｔｉｍｅの値から、第一の処理方式での処理時間は
（第一の処理方式での処理時間）＝Ｔ＋ｒｅｃｏｎｆｉｇ＿ｔｏｔａｌ＿ｔｉｍｅ
と表すことができる。また、動的回路切換時間算出部３０３で算出されたｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］から属性情報の種類の数がわかるので、第二の処理方式での処理時間は
（第二の処理方式での処理時間）＝（Σｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ）＊Ｔ＋α
と表すことができる。第二の処理方式では、Σｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ回の全画素データ処理を行うが、αは各全画素データ処理間の動的回路切換時間の合計を表す。Ｔに比べてαは十分小さいので、計算を簡単にするために
（第二の処理方式での処理時間）＝（Σｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ）＊Ｔ
とする。
【００８１】
図１３は処理方式制御部３０５の動作を説明するためのフローチャートである。
【００８２】
ステップＳ６０１で、動的回路切換時間算出部３０３で算出されたｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］から属性情報の種類の数Ｎを計算する。
【００８３】
ステップＳ６０２で、第一の処理方式での処理時間と第二の処理方式での処理時間とを比較する。処理方式制御部３０５はこれらの二つの値の小さいほうに対応する処理方式を行うように、画像処理部３７の各ブロックを制御する（ステップＳ６０３或いはステップＳ６０４）。この処理方式の選択より、画像処理における、信号処理回路３０７の回路構成変更のために費やす時間を最小化できる。
【００８４】
図１４は処理方式制御部３０５が第一の処理方式を選択した時の動作を説明するためのフローチャートである。
【００８５】
ステップＳ７０１で初期化を行う。ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔは信号処理回路３０７に入力した画素データの数を格納する内部変数で、ゼロで初期化する。また、ｐｒｅｖ＿ａｔｔｒは前の画素の属性情報を格納する内部変数である。
【００８６】
ステップＳ７０２で、信号処理回路３０７のライトイネーブルをＯＮにする。第一の処理方式の場合には、常にＯＮである。信号処理回路３０７のライトイネーブルの説明は後述する。
【００８７】
ステップＳ７０３で、データ分離部３０４から、最初の画素データと属性情報を入力する。入力した画素データは変数ｐｉｘｅｌに、入力した属性情報は変数ａｔｔｒに、それぞれ格納する。
【００８８】
ステップＳ７０４で、コンフィギュア選択部３０６へ最初の属性情報ａｔｔｒを送出し、信号処理回路３０７の回路構成を属性情報ａｔｔｒに対応したものに変更する。
【００８９】
ステップＳ７０５で、信号処理回路３０７の回路構成が属性情報ａｔｔｒに対応したものへ変更された後に、最初の画素データｐｉｘｅｌを信号処理回路３０７へ送出する。そして、ｐｒｅｖ＿ａｔｔｒにａｔｔｒの値を設定し、ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをインクリメントする。
【００９０】
ステップＳ７０６で、データ分離部３０４から、次の画素データと属性情報を入力する。入力した画素データは変数ｐｉｘｅｌに、入力した属性情報は変数ａｔｔｒに、それぞれ格納する。
【００９１】
ステップＳ７０７で、前の画素の属性情報と現時点の属性情報を比較する。これらが等しければ、つまり、前の画像データと現時点の画素データの処理が同じであれば、ステップＳ７１０へジャンプする。さもなければ、つまり、前の画像データと現時点の画素データの処理が異なる場合は、次のステップへ進む。
【００９２】
ステップＳ７０８で、信号処理回路３０７から出力された画素数ｏｕｔｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔを参照し、今まで送出した画素データが信号処理回路３０７で処理され、出力されるのを待つ。
【００９３】
ステップＳ７０９で、コンフィギュア選択部３０６へ新たな属性情報ａｔｔｒを送出し、信号処理回路３０７の回路構成をその属性情報に対応したものに変更する。
【００９４】
ステップＳ７１０で、信号処理回路３０７の回路構成が新たな属性情報に対応したものへ変更された後に、画素データｐｉｘｅｌを信号処理回路３０７へ送出する。そして、ｐｒｅｖ＿ａｔｔｒにａｔｔｒの値を設定し、ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをインクリメントする。
【００９５】
ステップＳ７１１で、信号処理回路３０７に入力した画素データの数ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをチェックする。すべての画素データが信号処理回路３０７に入力されていなければ、ステップＳ７０６に戻り、さもなければ、次のステップへ進む。
【００９６】
ステップＳ７１２で、入力データ一時記憶部３０２へ、すべての画像データを読み込んだことを通知する。この通知により、入力データ一時記憶部３０２はこれらの画像データを記憶していた領域を開放する。
【００９７】
ステップＳ７１３で、信号処理回路３０７から出力した画素データの数ｏｕｔｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをチェックする。ここですべての画素データが処理され、信号処理回路３０７から出力されるまで待つ。
【００９８】
ステップＳ７１４で、出力データ一時記憶部３０８へ、すべての処理された画像データを書き込んだことを通知する。この通知により、出力データ一時記憶部３０８はこれらの画像データを記憶している領域のデータをデータＩ／Ｆ３０１へ送出する。
【００９９】
図１５は処理方式制御部３０５が第二の処理方式を選択した時の動作を説明するためのフローチャートである。
【０１００】
ステップＳ８０１で第二の処理方式での処理全体の初期化を行う。ｉｔｅｒａｔｏｒは全画像データの処理を完了した回数を格納する内部変数であり、ゼロで初期化する。また、ｃｕｒ＿ａｔｔｒは全画像データの処理における、信号処理回路３０７の回路構成がどの属性情報に対応するものかを格納するための内部変数であり、ゼロで初期化する。
【０１０１】
ステップＳ８０２で、全画像データの処理を行う。この処理の詳細は後述する。
【０１０２】
ステップＳ８０３で、全画像データ処理終了後にｉｔｅｒａｔｏｒをインクリメントする。
【０１０３】
ステップＳ８０４で、全画像データ処理をＮ回終了したかを判断する。Ｎ回終了していなければ、ステップＳ８０２に戻り、さもなければ、次のステップへ進む。ここで、Ｎは図１３で図示された、画像データに存在する属性情報の種類の数である。
【０１０４】
ステップＳ８０５で、入力データ一時記憶部３０２へ、すべての画像データを読み込んだことを通知する。この通知により、入力データ一時記憶部３０２はこれらの画像データを記憶していた領域を開放する。
【０１０５】
ステップＳ８０６で、出力データ一時記憶部３０８へ、すべての処理された画像データを書き込んだことを通知する。この通知により、出力データ一時記憶部３０８はこれらの画像データを記憶している領域のデータをデータＩ／Ｆ３０１へ送出する。
【０１０６】
つぎに、第二の処理方式における、全画像データの処理の動作を同図（Ｂ）に沿って説明する。
【０１０７】
ステップＳ８００１で初期化を行う。ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔは信号処理回路３０７に入力した画素データの数を格納する内部変数で、ゼロで初期化する。
【０１０８】
ステップＳ８００２で、属性情報ｃｕｒ＿ａｔｔｒが画像データ内に存在するかを、動的回路切換時間算出部３０３で算出されたｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］から判断する。属性情報ｃｕｒ＿ａｔｔｒが画像データ内に存在する場合にはステップＳ８００４へ進み、さもなければ、ｃｕｒ＿ａｔｔｒをインクリメントし（ステップＳ８００３）、再度属性情報ｃｕｒ＿ａｔｔｒが画像データ内に存在するかを判断する。
【０１０９】
ステップＳ８００４で、全画像データの処理を開始する前に、コンフィギュア選択部３０６へ属性情報ｃｕｒ＿ａｔｔｒを送出し、信号処理回路３０７の回路構成を属性情報ｃｕｒ＿ａｔｔｒに対応したものに変更する。
【０１１０】
ステップＳ８００５で、データ分離部３０４から、次の画素データと属性情報を入力する。入力した画素データは変数ｐｉｘｅｌに、入力した属性情報は変数ａｔｔｒに、それぞれ格納する。
【０１１１】
ステップＳ８００７で、入力した属性情報とｃｕｒ＿ａｔｔｒを比較する。これらが等しければ、つまり、入力した属性情報が信号処理回路３０７の回路構成に対応していれば、信号処理回路３０７のライトイネーブルをＯＮにする（ステップＳ８００７）。さもなければ、つまり、入力した属性情報が信号処理回路３０７の回路構成に対応していなければ、信号処理回路３０７のライトイネーブルをＯＦＦにする（ステップＳ８００８）。ライトイネーブルをＯＦＦした場合、信号処理回路３０７はその時に入力した画素データの処理結果を出力データ一時記憶部３０８に書き出すことを行わない。このことにより、出力データ一時記憶部３０８には、信号処理回路３０７の回路構成に対応した属性情報を持った画素データの結果のみが書き出される。
【０１１２】
ステップＳ８００９で、画素データｐｉｘｅｌを信号処理回路３０７へ送出する。そして、ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをインクリメントする。
【０１１３】
ステップＳ８０１０で、信号処理回路３０７に入力した画素データの数ｉｎｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをチェックする。すべての画素データが信号処理回路３０７に入力されていなければ、ステップＳ８００５に戻り、さもなければ、次のステップへ進む。
【０１１４】
ステップＳ８０１１で、信号処理回路３０７から出力した画素データの数ｏｕｔｐｕｔ＿ｐｉｘｅｌ＿ｃｏｕｎｔをチェックする。ここですべての画素データが処理され、信号処理回路３０７から出力されるのを待って、全画像データの処理を終了する。
【０１１５】
以上の説明により、本実施形態によって、処理時間を最小化して画像処理を行うことができる。
【０１１６】
本発明の他の実施形態に係る画像処理部３７の動作について、図１６、図１７及び図１８を用いて説明する。この例は、動的回路切換時間が属性情報に対応した回路構成によらず等しい場合に適応できる。
【０１１７】
図１６は、画像処理部３７の基本構成を示すブロック図である。前の実施例との違いは、動的回路切換時間算出部３０３が動的回路切換回数計数部４０３に置き換わっている。その他は、図８で示されたものと同じである。
【０１１８】
図１７は動的回路切換回数計数部４０３の動作を説明するためのフローチャートである。動的回路切換時間算出部３０３のフローチャート（図１０）とほぼ同じであるが、動的回路切換時間の合計を算出する代わりに、動的回路切換回数を計数している。図１０と異なる部分のみを説明する。
【０１１９】
ステップＳ９０１の初期化では、ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔは算出すべき動的回路切換回数を格納する変数で、ゼロで初期化する。
【０１２０】
前の画像データと現時点の画素データの処理が異なる場合は、ステップＳ９０６で、ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔをインクリメントする。
【０１２１】
属性情報に対応した回路構成によらずに等しい動的回路切換時間をＤＲＴとすれば、動的回路切換回数計数部４０３で計数されたａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔの値から、第一の処理方式での処理時間は
（第一の処理方式での処理時間）＝
Ｔ＋ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔ＊ＤＲＴ
と表すことができる。また、動的回路切換回数計数部４０３で算出されたｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］から、第二の処理方式での処理時間は
（第二の処理方式での処理時間）＝（Σｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ）＊Ｔ
と表すことができる。
【０１２２】
図１８は処理方式制御部３０５の動作を説明するためのフローチャートである。
【０１２３】
ステップＳ１００１で、動的回路切換回数計数部４０３で算出されたｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］から属性情報の種類の数Ｎを計算する。
【０１２４】
ステップＳ１００２で、第一の処理方式での処理時間と第二の処理方式での処理時間とを比較する。処理方式制御部３０５はこれらの二つの値の小さいほうに対応する処理方式を行うように、画像処理部３７の各ブロックを制御する（ステップＳ１００３或いはステップＳ１００４）。この処理方式の選択より、画像処理における、信号処理回路３０７の回路構成変更のために費やす時間を最小化できる。
【０１２５】
さらに、動的回路切換時間が属性情報に対応した回路構成によらず等しいという条件に加えて、属性情報の種類が２種類の場合には、動的回路切換回数計数部４０３と処理方式制御部３０５での処理方式を選択するための判断が単純化できる。
【０１２６】
属性情報の種類が２種類の場合には、動的回路切換回数計数部４０３ではｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ［ｉ］を算出する必要がない。ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔがゼロの場合、
（第一の処理方式での処理時間）＝Ｔ
（第二の処理方式での処理時間）＝Ｔ
と等しくなる。ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔがゼロでない場合、
（第一の処理方式での処理時間）＝
Ｔ＋ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔ＊ＤＲＴ
（第二の処理方式での処理時間）＝（Σｉｓ＿ｅｘｉｓｔ＿ａｔｔｒ）＊Ｔ＝２＊Ｔ
となり、処理時間の計算でｉｓ＿ｅｘｉｓｔ＿ａｔｔｒは必要ない。そして、ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔがゼロの場合に、処理方式制御部３０５が第一の処理方式を選択するようにすれば、第二の処理方式での処理は、常に２回の全画像データの処理を行えば良い。従って、第二の処理方式での処理の際も、ｉｓ＿ｅｘｉｓｔ＿ａｔｔｒは必要ない。
【０１２７】
処理方式制御部３０５での処理方式を選択するための判断では、
Ｔ＋ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔ＊ＤＲＴ＜＝２＊Ｔ
を満たせば、第一の処理方式を選択するようにすれば良い。上の式を書き換えると、
ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔ＜＝Ｔ／ＤＲＴ
となり、動的回路切換回数ａｔｔｒ＿ｃｈａｎｇｅ＿ｐｏｉｎｔ＿ｃｏｕｎｔを定数Ｔ／ＤＲＴの単純な比較を行えば良い事になる。
【符号の説明】
【０１２８】
１  スキャナ
２  ホストコンピュータ
３  画像処理装置
４  記憶装置
５  印字エンジン部
３１  スキャナ入力色処理ブロック
３２  ホストＩ／Ｆ部
３３  ＰＤＬ処理部
３４  ＣＰＵ
３５  ＲＡＭ
３６  ＲＯＭ
３７  画像処理部
３８  スケジューラ
３９  ストレージコントローラ部
４０  エンジンＩ／Ｆ部
４１  バス
３０１  データＩ／Ｆ
３０２  入力データ一時記憶部
３０３  動的回路切換時間算出部
３０４  データ分離部
３０５  処理方式制御部
３０６  コンフィギュア選択部
３０７  信号処理回路
３０８  出力データ一時記憶部
４０３  動的回路切換回数計数部
【図１】
2011054098.tif 000003
【図２】
2011054098.tif 000004
【図３】
2011054098.tif 000005
【図４】
2011054098.tif 000006
【図５】
2011054098.tif 000007
【図６】
2011054098.tif 000008
【図７】
2011054098.tif 000009
【図８】
2011054098.tif 000010
【図９】
2011054098.tif 000011
【図１０】
2011054098.tif 000012
【図１１】
2011054098.tif 000013
【図１２】
2011054098.tif 000014
【図１３】
2011054098.tif 000015
【図１４】
2011054098.tif 000016
【図１５】
2011054098.tif 000017
【図１６】
2011054098.tif 000018
【図１７】
2011054098.tif 000019
【図１８】
2011054098.tif 000020