(57)【要約】【課題】スキャナ処理、プリンタ処理を実行できる画像処理装置において、回路規模を縮小する為にスキャナ処理とプリンタ処理で画像の拡大・縮小処理を行う拡大縮小回路を共有する。また、スキャナ処理、プリンタ処理の処理内容や拡大縮小率に応じて画像処理の順序を切り替えて、性能をあげる。【解決手段】内部にインストラクションメモリ２１を内蔵しデータ転送のみに特化した命令セットを持つＤＭＡプロセッサとスキャナ処理、プリンタ処理を行う画像処理回路とを接続する構成。画像の拡大・縮小を行う拡大縮小回路はスキャナ処理、プリンタ処理で共有する。【選択図】図１
2006166251.tif 000002
【特許請求の範囲】
【請求項１】
命令メモリに記録された命令コードに従ってデータを転送するＤＭＡプロセッサと、
前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小処理を施す変倍手段と、
前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小以外の画像処理を施す画像処理手段と、
前記変倍手段と前記画像処理手段とに対して処理モードに応じた順序で画像データを転送する命令コードを、前記命令メモリに記録する命令書き替え手段と
を備えることを特徴とする画像処理装置。
【請求項２】
前記画像処理手段としては、入力画像データに対して画像処理を施す入力画像処理手段と、出力画像データに対して画像処理を施す出力画像処理手段とが含まれ、
前記命令書き替え手段は、処理モードに応じて、前記入力画像処理手段または前記出力画像処理手段による画像処理の直前又は直後に、前記変倍手段に対して画像データを転送する命令コードを前記命令メモリに記録することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記命令書き替え手段は、変倍処理が拡大処理の場合には、前記画像処理手段による画像処理後に、当該画像処理の施された画像データを前記変倍処理手段に対して転送する命令コードを前記命令メモリに記録し、変倍処理が縮小処理の場合には、前記画像処理手段による画像処理前に画像データを前記変倍処理手段に対して転送し、当該変倍処理の施された画像データを前記画像処理手段に対して転送する命令コードを前記命令メモリに記録することを特徴とする請求項１または２に記載の画像処理装置。
【請求項４】
命令メモリに記録された命令コードに従ってデータを転送するＤＭＡプロセッサと、
前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小処理を施す変倍処理部と、
前記ＤＭＡプロセッサから転送される画像データに対して入力補正処理を施す入力補正処理部と、
前記ＤＭＡプロセッサから転送される画像データに対して出力補正処理を施す出力補正処理部と、
前記ＤＭＡプロセッサから転送される画像データに対して面積階調処理を施す階調処理部と、
前記変倍処理部と前記入力補正処理部と前記出力補正処理部と前記階調処理部とに対して処理モードに応じた順序で画像データを転送する命令コードを、前記命令メモリに記録するプロセッサとを備え、
前記プロセッサは、前記処理モードがスキャンモードの場合、変倍処理が拡大処理であれば、前記入力補正処理部、前記変倍処理部の順に画像データを転送し、変倍処理が縮小処理であれば、前記変倍処理部、前記入力補正処理部の順に画像データを転送する命令コードを前記命令メモリに記録し、
前記処理モードがプリントモードの場合、変倍処理が拡大処理であれば、前記出力補正処理部、前記変倍処理部、前記階調処理部の順に画像データを転送し、変倍処理が縮小処理であれば、前記変倍処理部、前記出力補正処理部、前記階調処理部の順に画像データを転送する命令コードを前記命令メモリに記録し、
前記処理モードがコピーモードの場合、変倍処理が拡大処理であれば、前記入力補正処理部、前記出力補正処理部、前記変倍処理部、前記階調処理部の順に画像データを転送し、変倍処理が縮小処理であれば、前記変倍処理部、前記入力補正処理部、前記出力補正処理部、前記階調処理部の順に画像データを転送する命令コードを前記命令メモリに記録することを特徴とする画像処理装置。
【請求項５】
命令メモリに記録された命令コードに従ってデータを転送するＤＭＡプロセッサと、前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小処理を施す変倍手段と、前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小以外の画像処理を施す画像処理手段とを備える画像処理装置の制御方法であって、
処理モードを判定する判定工程と、
前記判定工程により判定された処理モードに応じた順序で、前記変倍手段と前記画像処理手段とに対して画像データを転送する命令コードを、前記命令メモリに記録する命令書き替え工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項６】
命令メモリに記録された命令コードに従ってデータを転送するＤＭＡプロセッサと、前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小処理を施す変倍手段と、前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小以外の画像処理を施す画像処理手段とを備えるコンピュータにより実行されるプログラムであって、
処理モードを判定する判定工程と、
前記判定工程により判定された処理モードに応じた順序で、前記変倍手段と前記画像処理手段とに対して画像データを転送する命令コードを、前記命令メモリに記録する命令書き替え工程と
を前記コンピュータにより実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、たとえば画像の拡大縮小を行う回路を、スキャナ処理とプリンタ処理とで共有する画像処理装置に関する。
【背景技術】
【０００２】
スキャナ入力された画像データの処理、および、プリンタから出力する画像データの処理を実行できる画像処理回路では、画像の拡大・縮小処理を行う拡大縮小回路は基本機能として備わっている。このような画像処理回路は、プリントのための画像処理を行うプリント処理ブロックと、画像スキャニングのための画像処理を行うスキャナ処理ブロックのそれぞれに拡大縮小回路を別々に持っている。そして、それぞれの処理ブロックにおける一連の画像処理においては、拡大縮小処理の位置付け（順序）は固定されている（特許文献１等参照）。
【特許文献１】特開平０５−２１９３６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかし、画像の拡大縮小処理において、画像を縮小する場合には画素数が少なくなるので、なるべく他の処理を行う前、最初に縮小処理を行った方が処理性能はあがる。逆に画像を拡大する場合には、画素数が多くなるので、なるべく他の処理を行った後、最後に処理した方が良い。つまり、画像の縮小処理時には拡大縮小回路を一連の画像処理の最初のほうに配置し、逆に画像の拡大処理時には最後の方に配置する方が、処理性能が上がる。
【０００４】
スキャナ入力された画像データの処理、および、プリンタから出力する画像データの処理を実行できる画像処理回路においては、画像の拡大あるいは縮小を行う場合には、画像データを拡大してプリンタから出力させるプリント画像拡大モード、画像データを縮小してプリンタから出力させるプリント画像縮小モード、スキャナから入力した画像データを拡大するスキャナ画像拡大モード、スキャナから入力した画像データを縮小するスキャナ画像縮小モード、スキャナから入力した画像データを拡大してプリンタから出力させるコピー画像拡大モード、スキャナから入力した画像データを縮小してプリンタから出力させるコピー画像縮小モードなど、多数の処理モードが考えられる。
【０００５】
こられの多様な処理モードのそれぞれにおいて画像処理性能を向上させるためには、縮小処理は画像処理の先頭で、拡大処理は画像処理の最後に行うのが望ましいという原則に則って画像処理順序を最適切り替えることが必要となる。これを実現しようとすれば、従来の画像処理回路では、拡大縮小回路は固定的に配置されているので、画像処理順序を変更するには、たとえばセレクタ回路を複数配置して処理順序を切り替えるという手段をとる必要がある。このセレクタ回路を用いた回路構成で、上述した様々な処理モードに応じて画像処理順序を切り替えようとすると、回路構成が相当複雑になる。
【０００６】
また、スキャナ処理ブロックおよびプリント処理ブロックで拡大縮小回路を別々に持つため、セレクタによる順序制御を行わない場合であっても回路規模が大きくなってしまう。回路規模を縮小するには拡大縮小回路をスキャナ処理ブロックとプリント処理ブロックで共有することが必要である。
【０００７】
しかし、拡大縮小回路を共有化した構成でセレクタ回路を用いて処理モードごとに処理順序を柔軟に切り替えようとすると、回路構成が益々複雑になる。
【０００８】
本発明は上記問題点を解決するためになされたもので、拡大縮小回路を各処理ブロックで共有することで回路規模を縮小し、また、拡大処理および縮小処理の順序を、画像処理全体の中における最適の位置で実行することで、高速な画像処理を実現する画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は上記従来例に鑑みてなされたもので、以下の構成を備える。
【００１０】
命令メモリに記録された命令コードに従ってデータを転送するＤＭＡプロセッサと、
前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小処理を施す変倍手段と、
前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小以外の画像処理を施す画像処理手段と、
前記変倍手段と前記画像処理手段とに対して処理モードに応じた順序で画像データを転送する命令コードを、前記命令メモリに記録する命令書き替え手段とを備える。
【００１１】
あるいは、命令メモリに記録された命令コードに従ってデータを転送するＤＭＡプロセッサと、
前記ＤＭＡプロセッサから転送される画像データに対して拡大縮小処理を施す変倍処理部と、
前記ＤＭＡプロセッサから転送される画像データに対して入力補正処理を施す入力補正処理部と、
前記ＤＭＡプロセッサから転送される画像データに対して出力補正処理を施す出力補正処理部と、
前記ＤＭＡプロセッサから転送される画像データに対して面積階調処理を施す階調処理部と、
前記変倍処理部と前記入力補正処理部と前記出力補正処理部と前記階調処理部とに対して処理モードに応じた順序で画像データを転送する命令コードを、前記命令メモリを記録するプロセッサとを備え、
前記プロセッサは、前記処理モードがスキャンモードの場合、変倍処理が拡大処理であれば、前記入力補正処理部、前記変倍処理部の順に画像データを転送し、変倍処理が縮小処理であれば、前記変倍処理部、前記入力補正処理部の順に画像データを転送する命令コードを前記命令メモリに記録し、
前記処理モードがプリントモードの場合、変倍処理が拡大処理であれば、前記出力補正処理部、前記変倍処理部、前記階調処理部の順に画像データを転送し、変倍処理が縮小処理であれば、前記変倍処理部、前記出力補正処理部、前記階調処理部の順に画像データを転送する命令コードを前記命令メモリに記録し、
前記処理モードがコピーモードの場合、変倍処理が拡大処理であれば、前記入力補正処理部、前記出力補正処理部、前記変倍処理部、前記階調処理部の順に画像データを転送し、変倍処理が縮小処理であれば、前記変倍処理部、前記入力補正処理部、前記出力補正処理部、前記階調処理部の順に画像データを転送する命令コードを前記命令メモリに記録する。
【発明の効果】
【００１２】
本発明によれば、処理モードに応じて処理順序を切り替えることができるので、拡大縮小回路を複数持つ必要がなく回路規模の削減が実現できる。また、簡易な回路構成で画像の拡大処理および縮小処理の処理順序を変更することができ、処理性能をあげることができる。
【発明を実施するための最良の形態】
【００１３】
＜画像処理装置の構成＞
本発明における一実施形態を図面を用いて説明する。図１５は、画像スキャナおよびプリンタを組み合わせて構成され、スキャン、プリント、コピーという３つの動作モード（処理モード）で動作可能なディジタル複合機の構成を示すブロック図である。図１５において、画像スキャナ１５０２は、ＣＣＤ等の画像センサにより原稿画像を光学的に走査して、スキャナＩＦ１５０２を介して、ディジタル画像データを制御部１５０１に入力する。プリンタ部１５０５は、制御部１５０１から出力されるディジタル画像データをプリンタＩＦ１５０４を介して受信し、画像データに基づいて、シート等の印刷媒体上に画像を形成する。操作部１５０６は利用者に対する画面やキーボード等のユーザインターフェースを提供し、利用者によりたとえばスキャン、プリント、コピーといった処理モードが入力される。なおこれらモードは、ネットワークインターフェース（不図示）を介して他の端末等から入力することもできる。制御部１５０１は、入力された処理モードに応じて画像スキャナ１５０１およびプリンタ１５０５を制御する。処理モードがスキャンモードであれば、画像スキャナ１５０２によって画像を読み取り、読み取った画像に対して一定の入力画像処理を施した後に、メモリの与えられたアドレスにその画像データを保存する。また、プリントモードであれば、入力された画像データに対して一定の出力画像処理を施した後、プリンタ１５０５によりその画像データに基づく画像を出力させる。コピーモードであれば、画像スキャナ１５０２によって画像を読み取り、読み取った画像に対して一定の入力画像処理を施した後に、さらにその画像データに対して一定の出力画像処理を施した後、プリンタ１５０５によりその画像データに基づく画像を、指定された部数出力させる。それら画像処理のために、制御部１５０１には画像処理部１８が内蔵されている。
【００１４】
図１は本発明に係る画像処理部１８の構成の一例を示した図である。図１（Ａ）で示しているように、画像処理部には、入力された画像データの補正処理等を行うためのスキャナシステム１６と、出力しようとする画像データの補正処理等を行うためのプリントシステム１８と、スキャナシステム１６とプリントシステム１７とにより共有される拡大縮小回路７とが含まれている。
【００１５】
スキャナシステム１６では、シェーディング回路８、マスキング処理回路９、ガンマ補正回路１０、ＭＴＦ（変調伝達関数）回路１１、色変換回路１２で処理を行う。シェーディング回路８は、原稿を読み取るセンサのばらつき、および原稿照明用ランプの配光特性の補正を行う。マスキング処理回路９は、ＣＣＤ等の光電変換素子の分光特性及び光源および反射傘の分光特性を補正する。ガンマ補正回路１０は、ＣＣＤ等の非線形性を補正する。ＭＴＦ回路１１は、読取速度や変倍率によって読取のＭＴＦ（変調伝達関数）が変るため、その変化を補正する。たとえばエッジ強調またはスムージングなどの処理が行われる。色変換回路１２は輝度信号（たとえばＲＧＢ信号）を濃度信号（たとえばＹＭＣ信号）など他の表色系に変換する。
【００１６】
プリントシステム１７では、マトリクス演算回路１３、γ補正回路１４、誤差拡散回路１５で処理を行う。マトリクス演算回路１３は、ＹＭＣ表色系のカラー画像データを、プリントに用いるトナーやインク特性に応じて色変換する。たとえば下色除去（ＵＣＲ）処理などが行われる。γ補正回路１４は、画素値をそれが出力される濃度と線形になるよう補正する。誤差拡散回路１５は、多値画像データに面積階調処理を施して疑似階調化した二値データに変換する。
【００１７】
プロセッサ１は、ＤＭＡプロセッサインターフェース６を通してＤＭＡプロセッサ２が読み込むインストラクションメモリ２１を書き換えることができる。インストラクションメモリ２１は書き替え可能なメモリであり、ＤＭＡプロセッサ２が解釈実行可能なプログラムが格納される。
【００１８】
ＤＭＡプロセッサインターフェース６はＤＭＡプロセッサ２と接続されているとともに、アドレスバスおよびデータバス経由でプロセッサ１から読み書き可能なレジスタ６１を持っており、このレジスタ６１を書き換えることによってＤＭＡプロセッサ２のリセット状態の制御およびＤＭＡプロセッサ２内のインストラクションメモリ２１の書き換えを行うことができる。
【００１９】
ＤＭＡプロセッサ２は、アドレスバスおよびデータバスに接続されているローカルメモリ３と、メモリコントローラ４を介して接続されたメインメモリ５との間のデータ転送を行うとともに、内部のインストラクションメモリ２１に保持している命令列を読み込み、それを解釈及び実行する。インストラクションメモリ２１は３２ビットを１ワードとし、１２８ワードの命令列を格納することができる。個々のワードには０〜１２７のアドレスが割り振られており、基本的には０番地から順に命令列を実行する。
【００２０】
また、ＤＭＡプロセッサ２には出力ポート、入力ポートが複数あり、外部の回路へデータを出力したり、データを入力したりすることができる。図１（Ａ）の構成では、ＤＭＡプロセッサ２の入出力ポートは、シェーディング８、γ補正１０、ＭＴＦ１１、色変換１２、拡大縮小７、マトリクス演算１３、γ補正１４、誤差拡散１５と接続している。
【００２１】
具体的なＤＭＡプロセッサ２と画像処理回路１８との接続は図２のようになっている。メモリコントローラ４はアドレスバス及びデータバスからメインメモリ５にアクセスするための制御を行う。プロセッサ１、ＤＭＡプロセッサ２、ローカルメモリ３、メモリコントローラ４はそれぞれクロスバー接続されている。図１（Ｂ）にクロスバー接続された構成の一例を示す。プロセッサ１とＤＭＡプロセッサ２とはＤＭＡプロセッサインターフェース６を介して接続されており、ＤＭＡプロセッサ２には画像処理モジュール１８が図２のように接続されている。プロセッサ１およびＤＭＡプロセッサのデータバスおよびアドレスバスはクロスバースイッチ１００を介してローカルメモリ３と、メモリコントローラ４を介してメインメモリ５とに接続されている。この構成により、ＤＭＡプロセッサ２は、メインメモリ５またはローカルメモリ３に格納された画像データを画像処理モジュール１８に転送して各種の画像処理を施させ、処理後の画像データを再びメインメモリ５またはローカルメモリ３に保存することができる。またプロセッサ１もローカルメモリ３またはメインメモリ５にアクセスでき、画像処理に供する画像データをローカルメモリ３またはメインメモリ５に格納したり、あるいは画像処理後の画像データにアクセスすることができる。
【００２２】
図３はプロセッサ１及びＤＭＡプロセッサ２において有効なメモリのアドレスマップである。プロセッサ１及びＤＭＡプロセッサ２のアドレス空間には、ＲＯＭ領域、ＤＭＡプロセサインターフェース６のレジスタ６１、ローカルメモリ３，メインメモリ５がマッピングされている。ローカルメモリ３は、低レイテンシでアクセス可能であるが小容量のＳＲＡＭで構成されている。メインメモリ５は、アクセスには多くのレイテンシを必要とするが容量を大きくすることが可能なＤＲＡＭで構成されている。ＤＭＡプロセッサインターフェース６はプロセッサ１から読み書き可能なレジスタである。ＲＯＭ領域３１は、プロセッサ１のブート、及びプログラム格納用になっている。
【００２３】
図４は、プロセッサ１からアクセス可能なＤＭＡプロセッサインターフェースのレジスタ６１のレジスタマップである。０ｘｅ０００００００番地（先頭の０ｘは１６進表記であることを意味する。以下同じ。）はリセットレジスタである。リセットレジスタに１を書き込むとＤＭＡプロセッサ２がリセット状態となり、０を書き込むとリセット解除状態となる。初期値は１である。０ｘｅ００００００４番地はトリガエミットレジスタである。トリガエミットレジスタに１を書き込むとＤＭＡプロセッサ２に対してトリガイベントを発生させることができる。ＤＭＡプロセッサ２はこのトリガイベントを専用の命令を実行することによって検知することができる。０ｘｅ００００００８番地はトリガステータスレジスタである。０ｘｅ００００００ｃ番地はモードレジスタである。モードレジスタに１を書き込むと、ＤＭＡプロセッサ２が停止状態となり、インストラクションメモリ２１を書き換え可能となる。０ｘｅ０００００１０番地はＩＭＥＭアドレスレジスタである。ＤＭＡプロセッサ２が停止状態にあってインストラクションメモリ２１を書き換え可能なときに、インストラクションメモリ２１の書き換え対象のアドレスをＩＭＥＭアドレスレジスタに書き込むことで、書き換え対象のアドレスが指定される。０ｘｅ０００００１４番地はＩＭＥＭデータレジスタである。ＤＭＡプロセッサ２が停止状態にあってインストラクションメモリ２１を書き換え可能なときに、ＩＭＥＭデータレジスタに値を書き込むことで、その値を、ＩＭＥＭアドレスレジスタで指定されたインストラクションメモリ２１の番地にＤＭＡプロセッサ２の命令として書き込むことができる。このようにして、プロセッサ１はこのＤＭＡプロセッサインターフェース６のレジスタの値を書き換えることにより、ＤＭＡプロセッサ２の命令を入れ替えることができる。この様な構成を備えることで、ＤＭＡプロセッサ２により実行される命令コードを格納したインストラクションメモリ２１の内容を、プロセッサ１により動的に書き替えることができる。
【００２４】
＜拡大縮小処理＞
次に拡大縮小回路７について説明する。拡大縮小回路７は、２ライン（主走査方向の画素列）を用いて画像の線形補間を行う。図５は、線形補間における変換前の点と変換後の点の関係を示す。点Ａ、Ｂ、Ｃ、Ｄは変換前の点、点Ｐは変換後の点である。点Ｐの位置は、点Ａ、Ｂ間の長さを２５６、点Ａ、Ｃ間の長さを２５６とした平面で表される。主走査方向をＸ方向、副走査方向をＹ方向とし、点Ａを原点とすると、点Ａの座標は（０，０）、点Ｄの座標は（２５５，２５５）となる。点Ａ、Ｂ、Ｃ、Ｄ、Ｐの画素値をそれぞれａ，ｂ，ｃ，ｄ，ｐとする。Ｐの主走査方向の位置は点ＡＢ間を２５６とした場合の原点Ａからの距離で表し、Ｌａとする。Ｐの副走査方向の位置はＡＣ間を２５６とした場合の原点Ａからの距離で表し、Ｋａとする。点Ｐの画素値は、
p = {a・(256-La)・(256-Ka)+b・La・(256-Ka)+c・(256-La)・Ka+d・La・Ka}/(256・256)
で表される。この計算を縮小後の画素（点Ｐ）毎に行うことで縮小された画像データが生成される。すなわち拡大縮小回路７は、ラスタ形式の画像データについて少なくとも２画素×２画素の画像データが入力されれば、指定された変倍率で変倍した画像データを出力することができる。
【００２５】
ここで、変換前の画素間の長さを２５６とすると、変倍率は、変倍率を２５６／ｎと表した場合のｎの値（すなわち画素間隔）で指定する。例えば、等倍の変倍率は２５６／ｎ＝１であるから、ｎ＝２５６が等倍を指定する値である。同様に、５０％縮小の変倍率は２５６／ｎ＝０．５であるから、ｎ＝５１２がその変倍率を指定する値である。２００％拡大の変倍率は２５６／ｎ＝２であるから、ｎ＝１２８がその変倍率を指定する値である。この倍率設定が、主走査方向および副走査方向について行われる。各方向についての倍率は、たとえば操作部１５０６から入力され、プロセッサ１によってメインメモリ５に保存される。
【００２６】
ここで、変倍率ｎに２５６以上の値が設定された場合には、拡大縮小回路７は、その変倍率と画像データとをＤＭＡプロセサ２から受け取って、画像データに対して指定された倍率の縮小処理を行う。画像を縮小する場合には、図６のような線形補間を行う。図６において、変換前の点を白丸で、変換後の点を黒丸で表す。拡大縮小回路７は、変換後の画素（黒丸）を、図５に示したようにその近傍にある変換前の画素（白丸）４点で補間することで生成する。図６の例は、縦横（主走査・副走査方向）とも５０パーセントの縮小を示す。なお、縮小率が２分の１、４分の１など２のべき乗分の１となる場合、すなわち倍率ｎが２５６の倍数となる場合には、補間処理を行わず、ｎ／２５６画素毎に画素を残し、他の画素を間引くことでも縮小を実現できる。このような線形補間により、縮小時は画素数が少なくなる。
【００２７】
逆に、拡大する場合は図７のように線形補間を行っていき、画素数を多くする。補間される画素値を生成する要領は図５で説明したとおりであるが、拡大処理においては、元画像データにおける同一の４画素から複数の画素が生成される。図７の例では、横（主走査方向）は４分の７倍（すなわちｎ＝１４６）、縦（副走査方向）は３分の４倍（すなわちｎ＝１９２）となっている。
【００２８】
拡大縮小回路７は、このように正方４画素に基づいて補間画素を生成するが、ＬａおよびＫａの値については、変倍率と画素の位置に従って独自に保持している。たとえば初期値をＬａ０＝０、Ｋａ０＝０とし（初期値は２５６以内であれば適当でよい。）、画素が進む毎にＬａにｎの値を積算した値Ｌａ０を保持し、ラインが進む毎にＫａにｎの値を積算した値Ｋａ０を拡大縮小回路７により保持して、それぞれの値について２５６を法とする剰余を求める。この剰余値が求めるＬａ，Ｋａとなる。また、Ｌａ０、Ｋａ０の値の２５６による商が、補間に用いるべき元画像の画素の位置を示す値となる。たとえばこの商がＬａ０について２００、Ｋａ０について１００であれば、第１００ラインの第２００番目の画素を図５の画素Ａとした正方４画素により、画素の補間が行われる。Ｌａ、Ｋａの保持の仕方についてはこれは一例に過ぎない。他の方法も取り得ることはいうまでもない。
【００２９】
ここで、拡大縮小回路７はスキャナシステム１６とプリントシステム１７で共有しているので、スキャナ処理が行われるときは、たとえばシェーディング回路８、マスキング処理回路９、γ補正回路１０、ＭＴＦ回路１１、色変換回路１２、拡大縮小回路７の順番で処理を行う。またプリンタ処理を行う場合には、たとえばマトリクス演算回路１３、γ補正回路１４、誤差拡散回路１５、拡大縮小回路７の順番に処理を行う。このように、処理モードに応じてデータパスの切り替えを行うことにより、拡大縮小回路７の共有を実現することができる。
【００３０】
ただしこの順序では、拡大縮小回路７による処理が縮小処理であっても、一連の処理の最後に縮小処理を行うことになる。これに対して、画像処理システム全体の処理性能を考えると、縮小処理を一連の処理の先頭で行っておけば、画像を縮小する場合には画素数が少なくなるので処理性能はあがる。逆に画像を拡大する場合には、その処理により画素数が多くなるのでなるべく最後に処理した方が良い。さらに、スキャナ、プリント、コピー処理などの処理モードにより処理順序を切り替えることを考えると、この構成では、処理モードは更に細分化され、スキャナ画像拡大モード、スキャナ画像縮小モード、プリント画像拡大モード、プリント画像縮小モード、コピー画像拡大モード、コピー画像縮小モードの６通りのモードが考えられる。
【００３１】
そこで各処理モードに応じて、一連の画像処理における拡大縮小処理の位置（順序）を最適化することで、画像処理全体の効率を上げることができる。本実施形態の画像処理装置では、この処理順序をＤＭＡプロセッサ２による画像データの転送の順序により制御できる。そこで、各処理モードに応じて最適な処理順序となるよう、インストラクションメモリ２１をプロセッサ１により動的に書き替えて処理順序を最適化している。
【００３２】
＜画像処理全体の手順＞
図１６に図１５の画像処理装置における処理手順の概略を示す。操作部１５０６から、あるいは不図示のネットワークインターフェースから処理開始の指示が与えられると図１６の手順が制御部１５０１、具体的にはプロセッサ１により実行される。この手順はメインメモリ５などに格納されたプログラムの実行により実現される。
【００３３】
まず、処理内容がスキャン又はコピーか、それともそれらのいずれでもないか（すなわちプリントか）が判定される（ステップＳ１６０１）。プリントであれば、入力インターフェースからプリント対象の画像データが制御部１５０１に入力される（ステップＳ１６０３）。スキャン又はコピーであれば、画像スキャナ１５０２が駆動されて画像データが読み取られて制御部１５０１に入力される（ステップＳ１６０２）。
【００３４】
入力された画像データはメインメモリ５に保存されて（ステップＳ１６０４）、画像処理部１８によるデータ処理（画像処理）が実行される（ステップＳ１６０６）。
【００３５】
データ処理が終了すると、指定された処理内容がプリント又はコピーか、それともスキャンか判定される（ステップＳ１６０７）。スキャンであれば、出力インターフェース（不図示）から画像処理後の画像データを出力するか、あるいはメモリやハードディスク等に保存しておく。指定された処理がプリント又はコピーであれば、処理後の画像データをプリンタ１５０５に送信して印刷を行わせる（ステップＳ１６０８）。
【００３６】
図８Ａ〜図８Ｃに、ステップＳ１６０６の詳細を示す。プロセッサ１は、指定された処理が、スキャナ処理、プリント処理、コピー処理のいずれであるかと、各処理における変倍処理が拡大か縮小かを判断して、ＤＭＡプロセッサインターフェース６に対してインストラクションメモリ２１の内容を書き替えることでＤＭＡプロセッサ２が実行するプログラムを書き替える。拡大縮小処理の順序は、それによって画像が拡大される場合には一連の画像処理の最後に変倍処理を行い、縮小される場合には最初に処理を行う。ただし、プリントを行う場合には、誤差拡散処理によって画像データは面積階調処理が施された２値データとなる。そのため、拡大処理は、多値画像データの最後の段階で行う必要がある。そこで、プリント時の誤差拡散処理は拡大処理後に行うものとする。
【００３７】
図８Ａにおいて、まず処理内容がスキャンであるか判定する（ステップＳ８０１）。スキャンでなければ図８ＢのステップＳ８０５へ分岐する。スキャンであれば、変倍が拡大（スキャン画像拡大モード）か、縮小（スキャン画像縮小モード）かを判定する（ステップＳ８０２）。変倍率は操作部１５０６等から入力された値あるいはプリントを要求した端末等から入力された値を用いて判定できる。なお等倍の指定も本実施形態では変倍処理に含まれており、拡大として扱っても縮小として扱ってもいずれでもよい。
【００３８】
スキャナ画像拡大モードの場合には、プロセッサ１は、ＤＭＡプロセッサ２内のインストラクションメモリの内容を、図９に示すようなプログラムに書き替える（ステップＳ８０３）。スキャナ縮小拡大モードの場合には、プロセッサ１は、ＤＭＡプロセッサ２内のインストラクションメモリの内容を、図１０に示すようなプログラムに書き替える（ステップＳ８０４）。
【００３９】
一方ステップＳ８０５において、処理内容がプリントでなければ図８ＣのステップＳ８１０へ分岐する。プリントであれば、変倍が拡大（プリント画像拡大モード）か、縮小（プリント画像縮小モード）かを判定する（ステップＳ８０６）。
【００４０】
プリント画像拡大モードの場合には、プロセッサ１は、ＤＭＡプロセッサ２内のインストラクションメモリの内容を、図１１に示すようなプログラムに書き替える（ステップＳ８０７）。プリント縮小拡大モードの場合には、プロセッサ１は、ＤＭＡプロセッサ２内のインストラクションメモリの内容を、図１２に示すようなプログラムに書き替える（ステップＳ８０８）。
【００４１】
一方ステップＳ８１０においては、処理はコピーであるので、変倍が拡大（コピー画像拡大モード）か、縮小（コピー画像縮小モード）かを判定する。
【００４２】
コピー画像拡大モードの場合には、プロセッサ１は、ＤＭＡプロセッサ２内のインストラクションメモリの内容を、図１３に示すようなプログラムに書き替える（ステップＳ８１１）。コピー縮小拡大モードの場合には、プロセッサ１は、ＤＭＡプロセッサ２内のインストラクションメモリの内容を、図１４に示すようなプログラムに書き替える（ステップＳ８１２）。
【００４３】
さて、以下に図９〜図１４を参照して、各モードにおいてＤＭＡプロセッサ２のインストラクションメモリ２１に書き込まれるプログラムの例を説明する。なおプロセッサ１およびＤＭＡプロセッサ２とも１ワードが３２ビット（４バイト）であり、１画素のデータは１ワードに相当するものとする。また画像データは１ラインあたり２５６画素で、ラスタライン方向に連続する画素は連続するアドレスに保存される。もちろんこれは一例であるので、１ラインの画素数は画像データのサイズにより相違し、固定的に与えられるわけではなく、パラメータとして与えられるのが望ましい。また、図９〜図１４のプログラムは、たとえば画素値をカラープレーン毎に管理する形式など、画像データの形式に応じて変更されるべきである。
【００４４】
（スキャナ画像拡大モード）
メインメモリ５からデータを順次シェーディング回路８へデータを転送する。シェーディング回路８、マスキング処理回路９、γ補正回路１０では一連の処理が行われるので、それら処理ブロックにより処理された画像データを受信して、ＭＴＦ回路１１に送信する。ＭＴＦ回路１１で処理された画像データを受信すると、色変換回路１２に送信してその処理済みの画像データを受信する。受信した画像データをローカルメモリ３へと転送する。ここで、拡大縮小回路７へデータを転送するために、シェーディング回路８から色変換回路１２までの処理を、それらにより処理された画像データがローカルメモリ３に２ライン分の溜まるまで繰り返す。これは拡大縮小回路７による補間処理のためには２ライン分の画像データが必要とされるためである。２ライン分たまったら、拡大縮小回路７へ画像データを転送して拡大処理を行い、最終的にメインメモリ５へ変倍処理された画像データを転送する。なお各レジスタの長さは８バイトである。
【００４５】
この処理のためのＤＭＡプロセッサ２のプログラムの一例を図９に示す。図中プログラムの各行において「；」以降はコメント文である。ここで、プログラムにおけるｏｕｔは外部の画像処理回路と接続している出力ポートのレジスタ番号で、ｉｎは逆に外部の画像処理回路と接続している入力ポートのレジスタ番号である。具体的には図２のようにｏｕｔ０はシェーディング回路８、ｏｕｔ１はＭＴＦ回路１１、ｏｕｔ２は色変換回路１２、ｏｕｔ３は拡大縮小回路７、ｏｕｔ４はマトリクス演算回路１３、ｏｕｔ５は誤差拡散回路１５、ｉｎ０はγ補正回路１０、ｉｎ１はＭＴＦ回路１１、ｉｎ２は色変換回路１２、ｉｎ３は拡大縮小回路７、ｉｎ４はγ補正回路１４、ｉｎ５は誤差拡散回路１５と接続している。
【００４６】
「ｃｌｒ  ａｒ０」命令では、レジスタａｒ０が全桁０にされる。なおプログラムにおける「ａｒ」は、ＤＭＡプロセッサ２のアドレスレジスタを表している。例えばａｒ０は、０番目のアドレスレジスタで、ａｒ１は１番目のアドレスレジスタである。
【００４７】
「ｍｏｖｅ  ｇｐｒ０  ｏｕｔ０」という命令の場合には、ｏｕｔ０レジスタにｇｐｒ０レジスタの値が書き込まれる。すなわちシェーディング回路８にｇｐｒ０レジスタの値が転送されることになる。また、「ｍｏｖｅ  ｉｎ０  ｇｐｒ０」のような命令の場合には、ｇｐｒ０ レジスタにｉｎ０レジスタの値が書き込まれる。すなわち、γ補正回路１０から出力されたデータをｇｐｒ０へ転送することになる。なおプログラムにおいてレジスタのバイト単位のインデックスを［  ］で示す。したがって「ｌｏａｄ   ０ｘ３０  ａｒ０［０］」という命令により、アドレスレジスタａｒ０［０］（すなわちアドレスレジスタａｒ０の最下位バイト）に０ｘ３０が代入され、それ以外の値が０であればａｒ０＝０ｘ００００００３０となる。ただし、アドレスはバイトアドレスで示してある。また「ｌｏａｄ  ０ｘ３０  ａｒ０［１］」という命令の場合は、ａｒ０［１］に０ｘ３０が代入されるので、ａｒ０＝０ｘ００００３０００となる。「ｌｏａｄ  ０ｘ３０  ａｒ０［２］」という命令の場合は、ａｒ０［２］に０ｘ３０が代入されるので、ａｒ０＝０ｘ００３０００００となる。「ｌｏａｄ  ０ｘ３０  ａｒ０［３］」という命令の場合は、ａｒ０［３］に０ｘ３０が代入されるので、ａｒ０＝０ｘ３０００００００となる。
【００４８】
以上から図９のプログラムは、次のような流れとなる。なお、拡大縮小率は、プロセッサ１が、あらかじめＤＭＡプロセッサインターフェース６を介して拡大縮小回路７に設定しておく。また、説明におけるかっこは図のかっこつき番号に対応している。まず、次の命令でアドレスレジスタであるａｒ０の値をクリアする。
（１）ｃｌｒ  ａｒ０；ａｒ０レジスタ←０とする、すなわちａｒ０の値をクリアする。
次の命令で、アドレスレジスタに画像データが格納されているメインメモリのアドレス値を代入する。
（２）ｌｏａｄ  ０ｘ３０  ａｒ０［３］；ａｒ０レジスタ←０ｘ３０００００００とする。
【００４９】
同じようにアドレスレジスタａｒ１、ａｒ２、ａｒ３、ａｒ４の値をも設定していく。次に以下の命令で、プロセッサ１からのトリガイベントが来るのを待つ。なおａｒ０にはメインメモリ５に保存された処理対象の画像データのアドレスが、ａｒ１，ａｒ２には拡大縮小回路７に転送するための画像データを２ライン分保存するローカルメモリ３のアドレスが、ａｒ３には拡大縮小処理された画像データを保存するメインメモリ５のアドレスがセットされる。
（３）ｗａｉｔ  ；トリガイベントが来るまで停止する。トリガイベントはプロセッサ１とＤＭＡプロセッサ２との同期を維持するためのイベントで、たとえばプロセッサ１がメインメモリ５に処理対象のデータを保存し終えたら、トリガイベントを発生させて画像処理を開始させる。
【００５０】
次にｌｏｏｐ命令で、ｌｏｏｐ＿ｅｎｄのラベルまでの命令を５１２回行う。この命令で、拡大縮小処理を行うためのデータをローカルメモリに２ライン分たまるまでループする。
（４）ｌｏｏｐ  ０  ５１２  ｌｏｏｐ＿ｅｎｄ；ローカルメモリに２ライン分の画像データ（１０２４画素）がたまるまで、この命令からラベルｌｏｏｐ＿ｅｎｄまでの命令を５１２回繰返し実行する。
【００５１】
ａｒ０レジスタは、画像が格納されているメインメモリのアドレス値で、次の命令で画像データをｇｐｒ０レジスタへ８バイトのデータを転送する。転送後、ａｒ０のアドレス値に８を加算する。
（５）ｌｏａｄ  （ａｒ０，１）＋  ｇｐｒ０  ；ｇｐｒ０レジスタ←ａｒ０レジスタ値番地内容とし、その後ａｒ０レジスタに１加算する（すなわち、着目画素をレジスタｇｐｒ０に保存してから着目画素を次の画素に進める）。
【００５２】
次の命令で、ｇｐｒ０レジスタの値をｏｕｔ０レジスタに代入する。つまりｇｐｒ０レジスタのデータ（すなわちメインメモリ５からのデータ）をシェーディング回路８へデータを転送する。
（６）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ０  ；ｏｕｔ０レジスタ←ｇｐｒ０レジスタ、すなわち、ｇｐｒ０レジスタのデータをシェーディング回路８へデータ転送する。
【００５３】
次に以下の命令で、γ補正回路１０からデータを受け取り、ＭＴＦ回路１１へデータを転送する。
（７）ｍｏｖｅ  ｉｎ０  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ０レジスタ、すなわちγ補正回路１０からｇｐｒ０レジスタにデータ受信する。
（８）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ１  ；ｏｕｔ１レジスタ←ｇｐｒ０レジスタ、すなわちｇｐｒ０レジスタのデータをＭＴＦ回路１１へデータ転送する。
【００５４】
同じように以下の命令で、ＭＴＦ回路１１からデータを受け取り、色変換回路１２へデータ転送をして、色変換処理した後にデータを受信する。
（９）ｍｏｖｅ  ｉｎ１  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ１レジスタ、すなわちＭＴＦ回路１１からｇｐｒ０レジスタへデータ受信する。
（１０）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ２  ；ｏｕｔ２レジスタ←ｇｐｒ０レジスタ、すなわちｇｐｒ０レジスタのデータを色変換回路１２へデータ転送する。
（１１）ｍｏｖｅ  ｉｎ２  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ２レジスタ、すなわち色変換回路１２からｇｐｒ０レジスタにデータ受信する。
【００５５】
ここで、次にデータ処理を行う拡大処理は２ライン分のデータが必要なので、以下の命令でローカルメモリ３へとデータを転送する。
（１２）ｓｔｏｒｅ  ｇｐｒ０  （ａｒ１，１）＋  ；ａｒ１レジスタ値番地内容←ｇｐｒ０レジスタとした後、ａｒ１レジスタに１加算する。一回の転送で１ワードのデータすなわち１画素分の画像データが転送されて保存される。
【００５６】
ステップ（１２）までの処理を５１２回繰り返すことで、２ライン分のデータ転送が完了する。２ライン分のデータ転送が終わったら、次の命令で２ライン分のデータを拡大縮小回路７へ転送する。
（１３）ｌｏａｄ  （ａｒ２，１）＋  ｇｐｒ０  ；ｇｐｒ０レジスタ←ａｒ２レジスタ値番地内容とし、その後ａｒ２レジスタに１加算する。これにより１ライン目の着目する１画素をｇｐｒ０レジスタに書き込む。
（１４）ｌｏａｄ  （ａｒ２，２５５）  ｇｐｒ１  ；ｇｐｒ１レジスタ←ａｒ２レジスタ値＋２５５番地の内容とする。これにより、ステップ（１３）で転送した画素の直下の画素をｇｐｒ１レジスタに書き込む。２５５は、１ライン（２５６画素）の画素数から１減じた値（ステップ（１３）でａｒ２に１加算しているため）である。
（１５）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ３  ；ｏｕｔ３  レジスタｏｕｔ３←ｇｐｒ０、すなわち拡大縮小回路７へ、第１ラインの２画をデータ転送する。
（１６）ｍｏｖｅ  ｇｐｒ１  ｏｕｔ３  ；ｏｕｔ３  レジスタｏｕｔ３←ｇｐｒ１、すなわち拡大縮小回路７へ、第２ラインの２画をデータ転送する。（１３）〜（１６）により、２×２画素が拡大縮小回路７へと転送される。
【００５７】
そして次の処理で、拡大縮小回路７からデータを受信する。
（１７）ｍｏｖｅ  ｉｎ３  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ３レジスタ、すなわち拡大縮小回路７からレジスタｇｐｒ０にデータ受信する。そして次の命令で最終的にメインメモリ５へデータを転送する。ａｒ３は処理した画像を格納するメインメモリのアドレス値である。
（１８）ｓｔｏｒｅ  ｇｐｒ０  （ａｒ３，１）＋  ；ａｒ３レジスタ値番地内容←ｇｐｒ０レジスタとし、その後ａｒ３レジスタに１加算する。
【００５８】
ステップ（１３）〜（１８）を、「ｌｏｏｐ  １  ２５６  ｌｏｏｐ１＿ｅｎｄ」命令によって２５６回繰り返すことで、２ライン分の拡大縮小処理が終了する。最終行の「ｊｍｐ  ｓｔａｒｔ」命令によって、上記２ライン毎の処理を、画像データ全体について終了するまで繰り返す。この終了条件は図９には明示されていないが、たとえば他のレジスタに画像データ末尾のアドレスを書き込んでおき、レジスタａｒ０がその値を超えたなら終了するようにしてもよい。
【００５９】
また、ステップ（１７）（１８）においては、拡大縮小回路７が生成した画素をすべて受け取る必要がある。２×２画素の原画像データに対して受け取る画素数は拡大縮小回路７に転送した画素の位置や変倍率によって異なる。そこで、ステップ（１７）（１８）においては、たとえば、拡大縮小回路７から受け取る画素のライン数および１ラインあたりの画素数を別途用意したレジスタＡおよびレジスタＢによりまず受け取る。そして、そのレジスタＢに与えられた画素数だけ、ステップ（１７）（１８）を繰返し実行する。また、そのレジスタＡに与えられたライン数だけ、ステップ（１５）〜（１８）を繰返し実行する。このようにすることで、変倍後の画素を受信することができる。
【００６０】
（スキャナ画像縮小モード）
スキャナ画像縮小モードでは、最初に、メインメモリ５から２ライン分のデータを順次拡大縮小回路７へ転送する。最初に縮小処理を行い、それからシェーディング回路８へデータを転送する。シェーディング回路８、マスキング処理回路９、γ補正回路１０、ＭＴＦ回路１１、色変換回路１２の順番に処理した後に、メインメモリ５へデータを転送する。この処理時のＤＭＡプロセッサ２のプログラムの一例は図１０である。この場合には、最初に次の命令でメインメモリ５から２ライン分のデータを、拡大縮小回路７へ転送する。
（１）ｃｌｒ  ａｒ０；ａｒ０レジスタ←０すなわちａｒ０の値をクリアする。
（２）ｌｏａｄ  ０ｘ３０  ａｒ０［３］；ａｒ０レジスタ←０ｘ３０００００００とする。同様に、レジスタａｒ１についても設定する。
（３）ｌｏａｄ  （ａｒ０，１）＋  ｇｐｒ０  ；ｇｐｒ０レジスタ←ａｒ０レジスタ値番地内容とした後、ａｒ０レジスタに１加算する。すなわち１ライン目の着目画素をレジスタｇｐｒ０に書き込んでから、アドレスレジスタａｒ０を１進める。
（４）ｌｏａｄ  （ａｒ０，２５５）  ｇｐｒ１  ；ｇｐｒ１レジスタ←ａｒ０レジスタ値＋２５５番地内容とする。すなわち着目画素直下の画素をレジスタｇｐｒ１に書き込む。
（５）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ３  ；ｏｕｔ３レジスタ←ｇｐｒ０レジスタとする。すなわち拡大縮小回路７へデータ転送（第１ライン）する。
（６）ｍｏｖｅ  ｇｐｒ１  ｏｕｔ３  ；ｏｕｔ３レジスタ←ｇｐｒ１レジスタとする。すなわち拡大縮小回路７へデータ転送（第２ライン）する。
（７）ｍｏｖｅ  ｉｎ３  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ３レジスタとする。すなわち拡大縮小回路７からレジスタｇｐｒ０へデータ転送する。
【００６１】
この後は、図１０の通りにシェーディング回路８からデータ処理で画像データを転送する。最後にａｒ１レジスタで示されるアドレスに処理後の画像データ（ｇｐｒ０）を保存する。
（８）ｓｔｏｒｅ  ｇｐｒ０  （ａｒ１，１）＋  ；ｇｐｒ０レジスタの画素を、アドレスレジスタ１で示されるアドレスに保存して、アドレスレジスタａｒ１を進める。
【００６２】
以上を、画像データ全体について繰り返す。ステップ（１）〜（８）においては、拡大縮小回路７が生成した画素をすべて処理する必要がある。２×２画素の原画像データに対して受け取る画素数は拡大縮小回路７に転送した画素の位置や変倍率によって異なる。そこで、ステップ（７）においては、たとえば、拡大縮小回路７から受け取る画素のライン数および１ラインあたりの画素数を別途用意したレジスタＡおよびレジスタＢによりまず受け取る。そして、そのレジスタＢに与えられた画素数だけ、ステップ（７）〜（８）を繰返し実行する。また、そのレジスタＡに与えられたライン数だけ、ステップ（１）〜（８）を繰返し実行する。このようにすることで、変倍後の画素を受信することができる。
【００６３】
（プリント画像拡大モード）
次にプリント画像拡大モードでは次のようにデータが処理される。最初に、メインメモリ５からデータを順次、マトリクス演算回路１３へデータを転送する。マトリクス演算回路１３、γ補正回路１４の順番に処理した後に、ローカルメモリ３へとデータを転送する。ここで、拡大縮小回路７へデータを転送するために、ローカルメモリ３で２ライン分の画像データをためる。２ライン分たまったら、拡大縮小回路７へ転送して拡大処理を行い、誤差拡散回路１５へデータを転送する。最終的には、誤差拡散回路１５からメインメモリ５へデータを転送する。この処理時のＤＭＡプロセッサ２のプログラムの一例は図１１である。要領は図９と同様であるが、拡大縮小回路７以外の回路が、マトリクス演算回路１３およびガンマ補正回路１４および誤差拡散回路１５となっていること、拡大縮小処理の後に誤差拡散処理が行われることという点で相違する。
【００６４】
図１１の処理においてはまずメインメモリ５からデータをマトリクス演算回路１３へ転送し、マトリクス演算回路１３、γ補正回路１４の順番に処理する。その後に、ローカルメモリ３へとデータを転送している。まずアドレスレジスタに転送元の画像データのアドレスと転送先のアドレスとが格納される。これは図９のステップ（１）（２）と同様である。次に以下の処理を５１２回繰り返す。
（１）ｌｏａｄ  （ａｒ０，１）＋  ｇｐｒ０  ；ｇｐｒ０レジスタ←ａｒ０レジスタ値番地内容とした後、ａｒ０レジスタに１加算する。すなわちａｒ１レジスタで示される画素値をレジスタｇｐｒ０にロードする。
（２）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ４  ；ｏｕｔ４レジスタｏｕｔ４←ｇｐｒ０レジスタとする、すなわちマトリクス演算回路１３へｇｐｒ０レジスタの画素データを転送する。
（３）ｍｏｖｅ  ｉｎ４  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ４レジスタとする、すなわちγ補正回路１４からｇｐｒ０レジスタに画素データを受信する。
（４）ｓｔｏｒｅ  ｇｐｒ０  （ａｒ１，１）＋  ；ａｒ１レジスタ値番地内容←ｇｐｒ０レジスタとして、ａｒ１レジスタに１加算する。すなわちｇｐｒ０レジスタの画素データをａｒ１レジスタで示されるアドレスに保存する。
【００６５】
ステップ（１）〜（４）を５１２回繰り返すことで、マトリクス処理及びガンマ補正された２ライン分の画像データをローカルメモリに蓄積する。
【００６６】
そして次の命令で、ローカルメモリ３から２ラインずつ拡大縮小回路７へデータを転送する。
（５）ｌｏａｄ  （ａｒ２，１）＋  ｇｐｒ０  ；ｇｐｒ０レジスタ←ａｒ２レジスタ値番地内容とする、すなわちａｒ１レジスタで示されるアドレスの画素をｇｐｒ０レジスタにロードして、ａｒ２レジスタに１加算する。
（６）ｌｏａｄ  （ａｒ２，２５５）  ｇｐｒ１  ；ｇｐｒ１レジスタ←ａｒ２レジスタ値＋２５５番地内容とする。すなわち、ステップ（５）でｇｐｒ０にロードした画素の直下の画素をｇｐｒ１レジスタにロードする。
（７）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ３  ；ｏｕｔ３レジスタ←ｇｐｒ０レジスタとする、すなわち拡大縮小回路７へｇｐｒ０レジスタの画素データ（第１ライン）を転送する。
（８）ｍｏｖｅ  ｇｐｒ１  ｏｕｔ３  ；ｏｕｔ３レジスタ←ｇｐｒ１レジスタとする、すなわち拡大縮小回路７へｇｐｒ１レジスタの画素データ（第２ライン）を転送する。
【００６７】
次に以下の命令で、拡大縮小回路７からデータを受信してから、誤差拡散回路１５へ転送し、最終的に誤差拡散回路１５からのデータをメインメモリ５へ転送する。
（９）ｍｏｖｅ  ｉｎ３  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ３レジスタとする、すなわち拡大縮小回路７からデータ受信する。
（１０）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ５  ；ｏｕｔ５レジスタ←ｇｐｒ０レジスタとする、すなわち誤差拡散回路１５へデータ転送する。
（１１）ｍｏｖｅ  ｉｎ５  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ５レジスタとする、すなわち誤差拡散回路１５からデータ受信する。
（１２）ｓｔｏｒｅ  ｇｐｒ０  （ａｒ３，１）＋  ；ａｒ３レジスタ値番地内容←ｇｐｒ０レジスタとして、ａｒ３レジスタに１加算する。すなわち、ｇｐｒ０レジスタの画素データをａｒ３レジスタで示されるアドレスに保存して、ａｒ３を１進める。
【００６８】
ステップ（５）から（１２）を２５６回繰り返すことで、２ライン分の画像データについて拡大縮小処理及び誤差拡散処理が実現される。これを画像データ全体について繰返し実行する。
【００６９】
また、ステップ（９）〜（１２）においては、拡大縮小回路７が生成した画素すべてについて受け取り、誤差拡散処理する必要がある。２×２画素の原画像データに対して受け取る画素数は拡大縮小回路７に転送した画素の位置や変倍率によって異なる。そこで、ステップ（９）〜（１２）においては、たとえば、拡大縮小回路７から受け取る画素のライン数および１ラインあたりの画素数を別途用意したレジスタＡおよびレジスタＢによりまず受け取る。そして、そのレジスタＢに与えられた画素数だけ、ステップ（９）〜（１２）を繰返し実行する。また、そのレジスタＡに与えられたライン数だけ、ステップ（７）〜（１２）を繰返し実行する。このようにすることで、変倍後の画素をすべて受信することができる。
【００７０】
（プリント画像縮小モード）
次にプリント画像縮小モードの場合では次のようにデータが処理される。あらかじめプロセッサ１によってメインメモリ５へ画像を格納しておく。ＤＭＡプロセッサ２は、メインメモリ５から２ライン分のデータを順次、拡大縮小回路７へ転送する。最初に縮小処理を行い、それからマトリクス演算回路１３、γ補正回路１４、誤差拡散回路１５の順番に処理した後に、メインメモリ５へデータを転送する。
【００７１】
この処理時のＤＭＡプロセッサ２のプログラムの一例は図１２である。ここでは、要領は図１０のスキャン画像縮小処理と同様である。まず拡大縮小回路７へ２ライン分のデータを転送している。その後に次の命令で、拡大縮小回路７からデータを受信した後に、マトリクス演算回路１３、γ補正回路１４と処理した後に、誤差拡散回路１５へデータ転送をしている。
（０）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ３およびｍｏｖｅ  ｇｐｒ１  ｏｕｔ３；拡大縮小回路７にデータを転送する。
（１）ｍｏｖｅ  ｉｎ３  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ３レジスタとする、すなわち、拡大縮小回路７からデータ受信する。
（２）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ４  ；ｏｕｔ４レジスタ←ｇｐｒ０レジスタとする、すなわち、マトリクス演算回路１３へデータ転送する。
（３）ｍｏｖｅ  ｉｎ４  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ４レジスタとする、すなわち、γ補正回路１４からデータ受信する。
（４）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ５  ；ｏｕｔ５レジスタ←ｇｐｒ０レジスタとする、すなわち、誤差拡散回路１５へデータ転送する。
（５）ｍｏｖｅ  ｉｎ５  ｇｐｒ０  ；ｇｐｒ０レジスタ←ｉｎ５レジスタとする、すなわち、誤差拡散回路１５からデータ受信する。
【００７２】
以上を、画像データ全体について繰り返す。ステップ（１）〜（６）においては、拡大縮小回路７が生成した画素をすべて処理する必要がある。２×２画素の原画像データに対して受け取る画素数は拡大縮小回路７に転送した画素の位置や変倍率によって異なる。そこで、ステップ（１）においては、たとえば、拡大縮小回路７から受け取る画素のライン数および１ラインあたりの画素数を別途用意したレジスタＡおよびレジスタＢによりまず受け取る。そして、そのレジスタＢに与えられた画素数だけ、ステップ（１）〜（６）を繰返し実行する。また、そのレジスタＡに与えられたライン数だけ、ステップ（０）〜（６）を繰返し実行する。このようにすることで、変倍後の画素を受信することができる。
【００７３】
（コピー画像拡大モード）
次に、コピー画像拡大モードの場合では次のようにデータが処理される。プロセッサ１はあらかじめメインメモリ５へ画像を格納しておく。ＤＭＡプロセッサ２は、メインメモリ５からデータを順次シェーディング回路８へデータを転送する。シェーディング回路８、マスキング処理回路９、γ補正回路１０、ＭＴＦ回路１１、色変換回路１２の順番にスキャナ処理した後に、マトリクス演算回路１３、γ補正回路１４の順番にプリント処理を行う。ここで、γ補正回路１４からのデータをローカルメモリ３へ転送し、２ライン分の画像データをためる。２ライン分たまったら、拡大縮小回路７へ転送して拡大処理を行い、誤差拡散回路１５へ転送する。最終的に誤差拡散回路１５からメインメモリ５へデータを転送する。
【００７４】
この処理時のＤＭＡプロセッサ２のプログラムの一例は図１３である。このプログラムでは、最初にスキャナ処理をシェーディング回路８から色変換回路１２まで処理を行う。その後に、次の命令でスキャナ処理である色変換回路１２から、プリンタ処理であるマトリクス演算回路１３へデータを転送している。この図１３の処理は、図９のステップ（１１）の直後すなわち色変換後に、図１１のステップ（２）すなわちマトリクス処理をつなげた処理である。
（１１）ｍｏｖｅ  ｉｎ２  ｇｐｒ０  ；ｇｐｒ０  レジスタ←ｉｎ２レジスタとする、すなわち色変換回路１２からデータ受信する。
（２）ｍｏｖｅ  ｇｐｒ０  ｏｕｔ４  ；ｏｕｔ４  レジスタ←ｇｐｒ０レジスタとする、すなわちマトリクス演算回路１３へデータ転送する。
【００７５】
拡大縮小処理については図１１と同様であり、ステップ（９）〜（１２）においては、拡大縮小回路７が生成した画素すべてについて受け取り、誤差拡散処理する必要がある。２×２画素の原画像データに対して受け取る画素数は拡大縮小回路７に転送した画素の位置や変倍率によって異なる。そこで、ステップ（９）〜（１２）においては、たとえば、拡大縮小回路７から受け取る画素のライン数および１ラインあたりの画素数を別途用意したレジスタＡおよびレジスタＢによりまず受け取る。そして、そのレジスタＢに与えられた画素数だけ、ステップ（９）〜（１２）を繰返し実行する。また、そのレジスタＡに与えられたライン数だけ、ステップ（７）〜（１２）を繰返し実行する。このようにすることで、変倍後の画素をすべて受信することができる。
【００７６】
（コピー画像縮小モード）
次に、コピー画像縮小モードの場合では次のようにデータが処理される。プロセッサ１はあらかじめメインメモリ５へ画像を格納しておく。ＤＭＡプロセッサ２は、メインメモリ５から２ライン分のデータを順次、拡大縮小回路７へ転送する。最初に縮小処理を行い、それからシェーディング回路８へデータを転送する。シェーディング回路８、マスキング処理回路９、γ補正回路１０、ＭＴＦ回路１１、色変換回路１２の順番にスキャナ処理した後に、マトリクス演算回路１３、γ補正回路１４、誤差拡散回路１５の順番にプリント処理を行う。最終的に、誤差拡散回路１５でデータ処理を行った後に、メインメモリ５へデータを転送する。
この処理時のＤＭＡプロセッサ２のプログラムは図１４である。
【００７７】
図１４は、図１０のステップ（８）に代えてすなわち色変換後に、図１２のステップ（２）すなわちマトリクス処理をつなげた処理である。拡大縮小処理については図１２と同様であり、このコピー画像縮小モードにおいても拡大縮小回路７が生成した画素をすべて処理する必要がある。２×２画素の原画像データに対して受け取る画素数は拡大縮小回路７に転送した画素の位置や変倍率によって異なる。そこで、図１４のステップ（７）においては、たとえば、拡大縮小回路７から受け取る画素のライン数および１ラインあたりの画素数を別途用意したレジスタＡおよびレジスタＢによりまず受け取る。そして、そのレジスタＢに与えられた画素数だけ、ステップ（７）〜（８）を繰返し実行する。また、そのレジスタＡに与えられたライン数だけ、ステップ（１）〜（８）を繰返し実行する。このようにすることで、変倍後の画素を受信することができる。
【００７８】
以上のように、プロセッサ１はプリンタ処理、スキャナ処理等の処理内容や画像の拡大・縮小率に応じてＤＭＡプロセッサ２が読み込む最適な命令列を選択して、ＤＭＡプロセッサインターフェース６を操作することで切り替えることができる。このことにより、ＤＭＡプロセッサ２の処理内容を柔軟に変更することが可能となる。つまり、複雑な回路を構成することなく、画像処理の順序を柔軟に変更することができる。
【００７９】
＜変形例＞
なお本実施形態では、等倍の指定も変倍処理に含まれている。等倍は、拡大として扱っても縮小として扱ってもいずれでもよい。しかし等倍の場合、すなわち変倍率が１００パーセントの場合には、拡大縮小回路へのデータ転送を一切行わない構成とすることでより処理効率を向上させることができる。このためには、図８ＡのステップＳ８０２、図８ＢのステップＳ８０６、図８ＣのステップＳ８１０において、等倍である場合に書き替えるＤＭＡプロセッサのプログラムとして、等倍の場合には拡大縮小回路７への画像データの転送を行わないように構成したプログラムを用意しておき、それに書き替える。こうすることで、等倍の場合における処理効率をさらに向上させることができる。
【００８０】
また、本実施形態では、ＤＭＡプロセッサ２と画像処理部１８との間においては、レジスタにより画像データそのものを転送しているが、アドレスを転送することで、画像処理部の各モジュールに転送したアドレスに画像データを格納させることもできる。たとえば、拡大縮小回路７に対してラスタ順に画素を順次転送し、拡大縮小回路７は独自の２ライン分のラインバッファを用いて補間処理を行い、補間処理後の画像データを、転送しておいたアドレス（たとえばローカルメモリ）へと書き戻す。このように構成することで、拡大縮小処理による画像データ量の増大や縮小に関して、柔軟に対応できる。
【００８１】
以上に述べたように本発明によれば、回路構成を変えずにＤＭＡプロセッサ２の命令列を切り替えることにより、処理モードに応じて処理順序を切り替えることができる。このため、拡大縮小回路を複数持つ必要がなく回路規模の削減が実現できる。また、セレクタ回路を用いた複雑な回路を構成せずに画像の拡大もしくは縮小で処理順序を変更することができ、処理性能をあげることができる。
【００８２】
＜他の実施形態＞
なお、本発明は、複数の機器（例えばホストコンピュータ、インタフェイス機器、リーダ、プリンタなど）から構成されるシステムに適用しても、一つの機器からなる装置（例えば、複写機、ファクシミリ装置など）に適用してもよい。また、本発明の目的は、前述した実施形態の機能を実現するソフトウェアのプログラムコードを記録した記憶媒体（または記録媒体）を、システムあるいは装置に供給し、そのシステムあるいは装置のコンピュータ（またはCPUやMPU）が記憶媒体に格納されたプログラムコードを読み出し実行することによっても達成される。この場合、記憶媒体から読み出されたプログラムコード自体が前述した実施形態の機能を実現することになり、そのプログラムコード自体およびプログラムコードを記憶した記憶媒体は本発明を構成することになる。
【００８３】
また、コンピュータが読み出したプログラムコードを実行することにより、前述した実施形態の機能が実現されるだけでなく、そのプログラムコードの指示に基づき、コンピュータ上で稼働しているオペレーティングシステム(OS)などが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。さらに、記憶媒体から読み出されたプログラムコードが、コンピュータに挿入された機能拡張カードやコンピュータに接続された機能拡張ユニットに備わるメモリに書込まれた後、そのプログラムコードの指示に基づき、その機能拡張カードや機能拡張ユニットに備わるCPUなどが実際の処理の一部または全部を行い、その処理によって前述した実施形態の機能が実現される場合も含まれる。
【図面の簡単な説明】
【００８４】
【図１】実施形態の画像処理装置の制御部の構成図である。
【図２】ＤＭＡプロセッサの出力ポート、入力ポートを示す図である。
【図３】メモリマップの一例を示す図である。
【図４】ＤＭＡプロセッサインターフェースレジスタマップの一例を示す図である。
【図５】線形補間における変換前の点と変換後の点の一例を示す図である。
【図６】線形補間における縮小時の変換前の点と変換後の点の一例を示す図である。
【図７】線形補間における拡大時の変換前の点と変換後の点の一例を示す図である。
【図８Ａ】プロセッサおよび画像処理部による画像処理の手順を示す図である。
【図８Ｂ】プロセッサおよび画像処理部による画像処理の手順を示す図である。
【図８Ｃ】プロセッサおよび画像処理部による画像処理の手順を示す図である。
【図９】スキャナ処理画像拡大時のＤＭＡプロセッサのプログラムの一例を示す図である。
【図１０】スキャナ処理画像縮小時のＤＭＡプロセッサのプログラムの一例を示す図である。
【図１１】プリント処理画像拡大時のＤＭＡプロセッサのプログラムの一例を示す図である。
【図１２】プリント処理画像縮小時のＤＭＡプロセッサのプログラムの一例を示す図である。
【図１３】コピー処理画像拡大時のＤＭＡプロセッサのプログラムの一例を示す図である。
【図１４】コピー処理画像縮小時のＤＭＡプロセッサのプログラムの一例を示す図である。
【図１５】画像処理装置全体の構成を示す図である。
【図１６】画像処理装置による処理手順を示す図である。
【図１】
2006166251.tif 000003
【図２】
2006166251.tif 000004
【図３】
2006166251.tif 000005
【図４】
2006166251.tif 000006
【図５】
2006166251.tif 000007
【図６】
2006166251.tif 000008
【図７】
2006166251.tif 000009
【図８Ａ】
2006166251.tif 000010
【図８Ｂ】
2006166251.tif 000011
【図８Ｃ】
2006166251.tif 000012
【図９】
2006166251.tif 000013
【図１０】
2006166251.tif 000014
【図１１】
2006166251.tif 000015
【図１２】
2006166251.tif 000016
【図１３】
2006166251.tif 000017
【図１４】
2006166251.tif 000018
【図１５】
2006166251.tif 000019
【図１６】
2006166251.tif 000020