(57)【特許請求の範囲】
【請求項１】
ライン方向の画素数が規定値ｎと一致する処理対象画像を表す複数の画素データを含む画像データの供給を受けて当該画像データに画像処理を施した画像データを出力するための、１個の画素データの演算に前記処理対象画像のライン方向に並んだｑ個の画素の画素データが１組以上必要とされる画像処理回路と、
画像処理を施すべき原画像データと前記規定値ｎと前記ｑ値から“１”を減じた値である整数値ｄとに基づき、前記原画像データが表す原画像上の連続したｎ行分の画素からなるブロック画像に関する、前記原画像の列方向を前記ライン方向とみなしたブロック画像データを生成し、前記画像処理回路に供給する供給処理を複数回実行するとともに、２回目以降の各供給処理の実行時には、前回の供給処理の対象としたブロック画像内の下端ｄ行の画素を含む連続したｎ行分の画素からなるブロック画像に関するブロック画像データを生成する原画像データ供給部と
を備えることを特徴とする画像処理装置。
【請求項２】
前記画像処理回路は、ｍ×ｍフィルタが用いられた第１画像処理モジュールと、（ｑ−ｍ＋１）×（ｑ−ｍ＋１）フィルタが用いられた第２画像処理モジュールとを有する
ことを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記画像処理回路は、前記ｑ値が変更可能な回路であり、
前記原画像データ供給部は、前記原画像データに対する処理を開始する前に、前記ｑ値を認識し、その認識結果から“１”を減じた値を前記整数値ｄとして算出する
ことを特徴とする請求項１記載の画像処理装置。
【請求項４】
スキャナが出力した画像データを受信する画像データ受信部を、さらに、備え、
前記原画像データ供給部は、前記画像データ受信部によって受信された前記画像データが表す画像を前記原画像として取り扱うとともに、当該画像データに含まれる前記スキャナが１回の主走査によって生成した一連の画素データを、前記原画像の１行を表すデータとして取り扱う
ことを特徴とする請求項１ないし請求項３のいずれかに記載の画像処理装置。
【請求項５】
前記画像処理回路が出力する画像データを一時的に記憶するバッファメモリと、
プリンタに接続されるプリンタインターフェース部であって、画像データが前記バッファメモリに記憶される度に、その画像データに含まれる複数の画素データを、前記画像処理回路から出力された順番とは異なる所定の順番で前記プリンタに供給するプリンタインタフェース部とを、さらに備える
ことを特徴とする請求項４記載の画像処理装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像処理を行う画像処理装置に関する。
【０００２】
【従来の技術】
周知のように、画像処理を行う装置には、ソフトウェア的に画像処理を行う装置と、画像処理を行う画像処理回路（画像処理用のＬＳＩ）を備えた装置とが存在している。後者の装置としては、例えば、スキャナ及びプリンタを統合的に制御してコピーを行う装置であって、スキャナに出力させた画像データを、印刷に適した画像データに変換する処理を行う画像処理回路を備えた装置が知られている。
【０００３】
そのような装置で用いられている従来の画像処理回路は、特定の画像処理を行うための回路（以下、画像処理モジュールと表記する）を幾つか繋げたものとなっている。また、各画像処理モジュールは、ｈ×ｈ画像（通常、ｈは３か５）に関する画素データ（画素値）に基づき、１個の画像データを演算出力するｈ×ｈフィルタと、そのｈ×ｈフィルタに画素データを供給するための回路であって、画像処理を行うべき画像データを、(ｈ−１)ライン分、記憶できるバッファを含む回路とで構成されている。
【０００４】
【発明が解決しようとする課題】
画像処理回路を備えた従来の画像処理装置は、処理できる画像データのサイズ（１ライン当りの画素数）が、画像処理回路によって制限される装置となっている。換言すれば、画像処理装置を、よりサイズの大きな画像データを処理できるものとするためには、画像処理回路を新たに設計、製造しなければならなかった。
【０００５】
そして、従来の画像処理回路では、上記したように、画像処理モジュール毎に、(ｈ−１)ライン分の画像データを記憶できるバッファを設ける回路構成が採用されているので、処理すべき画像データのライン当たりの画素数が多い場合、目的とする画像処理が行える画像処理回路を、１チップで製造できないことがあった。そのような場合、従来は、複数個の画像処理回路を設計、製造し、それらの画像処理回路を搭載できるように画像処理装置を改良するという煩雑な作業が行なわれていた。
【０００６】
そこで、本発明の課題は、画像処理回路を備えた画像処理装置であって、任意サイズの画像データを処理できる画像処理装置を提供することにある。
【０００７】
【課題を解決するための手段】
上記課題を解決するために、本発明では、画像処理装置を、ライン方向の画素数が規定値ｎと一致する処理対象画像を表す複数の画素データを含む画像データの供給を受けて当該画像データに画像処理を施した画像データを出力するための、１個の画素データの演算毎に処理対象画像のライン方向に並んだｑ個の画素の画素データが１組以上必要とされる画像処理回路と、画像処理を施すべき原画像データと規定値ｎとｑ値から“１”を減じた整数値ｄとに基づき、原画像データが表す原画像上の連続したｎ行分の画素からなるブロック画像に関する、原画像の列方向をライン方向とみなしたブロック画像データを生成し、画像処理回路に供給する供給処理を複数回実行するとともに、２回目以降の各供給処理の実行時には、前回の供給処理の対象としたブロック画像内の下端ｄ行の画素を含む連続したｎ行分の画素からなるブロック画像に関するブロック画像データを生成する原画像データ供給部とを備えるものとする。
【０００８】
すなわち、本発明の画像処理装置は、画像処理を施すべき原画像データに基づき、画像処理回路による画像サイズのライン方向の減少量ｄ（＝ｑ−１）及び画像処理回路が処理可能な画像データの１ライン当たりの画素数ｎを考慮した形で幾つかのブロック画像データが生成され、各ブロック画像データが画像処理回路によって処理される構成を有する。従って、本発明の画像処理装置によれば、任意サイズの画像を表す画像データに画像処理を施せることになる。また、上記のような機能を有する画像処理回路は、規定値ｎに応じた数の画素データを記憶できるバッファを用意するだけで実現できるので、本発明によれば、画像処理装置を、従来構成を採用した場合よりも少ない数の画像処理回路の実装により実現できることになる。
【０００９】
本発明の画像処理装置には、画像処理回路として、１個の画素データの演算に、処理対象画像のライン方向に並んだｑ個の画素の画素データからなるデータが必要とされるものであればどのようなものを使用しても良い。例えば、ｍ×ｍフィルタが用いられた第１画像処理モジュールと、（ｑ−ｍ＋１）×（ｑ−ｍ＋１）フィルタが用いられた第２画像処理モジュールとを有する画像処理回路を使用して、本発明の画像処理装置を実現することができる。
【００１０】
また、本発明の画像処理装置を実現するに際して、ｑ値が変更可能な画像処理回路を用いることもできる。この場合には、原画像データ供給部として、原画像データに対する処理を開始する前に、ｑ値を認識し、その認識結果から“１”を減じた値を整数値ｄとして算出するものを用いておく。具体的には、例えば、ｍ1×ｍ1フィルタが備えた第１画像処理モジュールと、ｍ2×ｍ2フィルタが備えた第２画像処理モジュールとを有し、双方の画像処理モジュールを機能させることといずれか一方の画像処理モジュールを機能させることができる画像処理回路を用いる場合、原画像データ供給部を、双方の画像処理モジュールを機能させるときには、ｑ＝ｍ1＋ｍ2−１であると認識し、第１画像処理モジュールのみを機能させるときには、ｑ＝ｍ1−１であると認識し、第２画像処理モジュールのみを機能させるときには、ｑ＝ｍ2−１であると認識し、その認識結果から“１”を減じた値をｄとして算出するように構成しておく。
【００１１】
なお、本発明の画像処理装置を実現するに際しては、原画像データ供給部を、原画像の横方向の画素の並びを“行”として取り扱うものとしておいても、原画像の縦方向の画素の並びを“行”として取り扱うものとしておいても良い。すなわち、原画像が、原画像と同じ幅を有し、高さがｎであるブロック画像の集合として扱われるようにしておいても、原画像と同じ高さを有し、幅がｎであるブロック画像の集合として扱われるようにしておいても良い。ただし、画像処理装置を、一般的な画像データを処理対象とする装置として実現する場合には（既にメモリに記憶されている画像データを処理対象とする装置として実現する場合を除けば）、原画像データ供給部を、原画像の横方向の画素の並びを“行”として取り扱うものとしておくことが望ましい。
【００１２】
例えば、本発明の画像処理装置を、スキャナによって生成される画像データを処理対象とする装置とする場合には、スキャナが出力した画像データを受信する画像データ受信部を付加するとともに、原画像データ供給部として、画像データ受信部によって受信された画像データが表す画像を原画像として取り扱うとともに、当該画像データに含まれるスキャナが１回の主走査によって生成した一連の画素データを、原画像の１行を表すデータとして取り扱うものを採用しておくことが望ましい。
【００１３】
スキャナから出力される画像データは、原稿の横方向へのスキャンを、原稿の上から下へ繰り返すことによって得られるデータであるので、この構成を採用しておけば、最終ラインに関するデータがスキャナから出力されるのを待たなくとも、原画像データ供給部が、原画像の先頭側のブロック画像に関するブロック画像データを画像処理回路に供給することができることになる。換言すれば、この構成を採用しておけば、原画像データ供給部を実現するために必要とされるメモリ容量を低減できることになる。また、高速に画像処理が完了する画像処理装置が得られることにもなる。
【００１４】
また、本発明の画像処理装置を実現するに際して、画像データ受信部を付加した上で、さらに、画像処理回路が出力する画像データを一時的に記憶するバッファメモリと、プリンタに接続されるプリンタインターフェース部であって、画像データがバッファメモリに記憶される度に、その画像データに含まれる複数の画素データを、画像処理回路が出力した順番とは異なる所定の順番でプリンタに供給するプリンタインタフェース部を付加することもできる。
【００１５】
この画像処理装置によれば、高速に、コピーが行えることになる。
【００１６】
【発明の実施の形態】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１７】
本発明の一実施形態に係る画像処理装置は、スキャナが生成した画像データを、印刷に適した画像データに変換するための装置である。
【００１８】
図１に示したように、実施形態に係る画像処理装置１１は、操作装置１２、スキャナ１３及びプリンタ１４と接続されて使用される。以下、画像処理装置１１と操作装置１２とスキャナ１３とプリンタ１４とからなるシステムを、コピーシステム１０と表記する。
【００１９】
操作装置１２は、ユーザがコピーシステム１０（画像処理装置１１）に対して各種の指示を出すために用いる装置である。操作装置１２は、スタートボタン１２１ａ、テンキー１２１ｂ等からなるキー操作部１２１を備える。また、操作装置１２は、液晶パネルと、液晶パネル上に重ねられたタッチパネルとで構成されたタッチスクリーン１２２を備える。
【００２０】
スキャナ１３は、原稿上の画像を光学的に読み取って、当該画像を表す画像データを出力する機器である。本コピーシステム１０には、スキャナ１３として、ＡＤＦ（オートドキュメントフィーダ）１３ａを備えた、ＳＣＳＩインタフェースを有する機器であって、２４ビットのＲＧＢデータを各画素の画素データ（画素値）として含む画像データを出力する機器が用いられている。プリンタ１４は、供給された印刷データに応じた画像を用紙上に形成する機器である。本コピーシステム１０には、プリンタ１４として、パラレルインタフェースを有し、スキャナ１３と同解像度のカラー印刷が行えるインクジェットプリンタが用いられている。
【００２１】
図２に、画像処理装置１１のハードウェア構成を示す。図示したように、画像処理装置１１は、ＣＰＵバス３５で相互に接続されたＣＰＵ２１、ＲＯＭ２２、ＲＡＭ２３、ブリッジ２４を備える。また、ブリッジ２４と汎用バス（ＰＣＩバス）３６で接続されたＨＤＤコントローラ２５、スキャナ用Ｉ／Ｆボード２６、プリンタ用Ｉ／Ｆボード２７、操作パネル用Ｉ／Ｆボード２８、ネットワーク用Ｉ／Ｆボード２９を備える。また、画像処理装置１１は、ＨＤＤコントローラ２５に接続されたＨＤＤ（ハードディスクドライブ）３０を備える。
【００２２】
ＨＤＤ３０は、オペレーティングシステム、そのオペレーティングシステム上で動作する各種プログラム、各種ドライバ（スキャナ１３を制御するためのスキャナドライバ、プリンタ１４を制御するためのプリンタドライバ）等が記憶された補助記憶装置である。ＨＤＤコントローラ２５は、ＨＤＤ３０の制御回路（ＨＤＤ３０と汎用バス３６との間のインタフェース回路）である。
【００２３】
ブリッジ２４は、ＣＰＵバス３５と汎用バス３６との間のインタフェース回路である。ＣＰＵ２１は、画像処理装置１１内の各部を統合的に制御する回路である。ＲＯＭ２２は、各種のＢＩＯＳが記憶されたメモリである。ＲＡＭ２３は、ＲＯＭ２２やＨＤＤ３０内に記憶された各種プログラムが読み出されるメモリである。このＲＡＭ２３は、スキャナ１３が出力した画像データを一時的に記憶しておくためにも使用される。
【００２４】
ネットワーク用Ｉ／Ｆボード２９は、画像処理装置１１をイーサネットＬＡＮに接続するためのインタフェースボードである。操作装置用Ｉ／Ｆボード２８は、ＣＰＵ２１が操作装置１２を利用できるようにするためのインタフェースボードである。操作装置用Ｉ／Ｆボード２８には、操作装置１２に含まれる各電子機器（キー操作部１２１、タッチスクリーン１２２）用の入出力制御回路が含まれている。
【００２５】
スキャナ用Ｉ／Ｆボード２６は、ＣＰＵ２１がスキャナ１３を利用（制御）できるようにするためのインタフェースボードである。本実施形態に係る画像処理装置１１は、このスキャナＩ／Ｆボード２６として、いわゆるＳＣＳＩインタフェースボードが用いられている。プリンタ用Ｉ／Ｆボード２７は、ＣＰＵ２１がプリンタ１４を利用できるようにするためのインタフェースボードである。プリンタ用Ｉ／Ｆボード２７の詳細は後述する。
【００２６】
以下、画像処理装置１１の動作を説明する。
【００２７】
図３に、画像処理装置１１内のＣＰＵ２１の全体的な動作手順を示す。図示したように、画像処理装置１１内のＣＰＵ２１は、通常の状態（他の処理を行っていない状態）においては、ユーザからコピーの実行指示を受け付ける処理であるコピー実行指示受付処理（ステップＳ１０１）を実行している。
【００２８】
このコピー実行指示受付処理時、ＣＰＵ２１は、キー操作部１２１あるいはタッチパネルに対する操作内容に応じて、液晶パネルに表示する画面の内容の更新等を行うことにより、コピー条件（スキャナ１３、プリンタ１４の制御条件）を認識する。そして、ＣＰＵ２１は、スタートボタン１２１ａが押下されたことを検出した際に、ステップＳ１０１を終了する。
【００２９】
ステップＳ１０１の終了後（スタートボタン１２１ａの押下を検出した際）、ＣＰＵ２１は、コピー条件に応じた印刷条件をプリンタ１４に通知（ステップＳ１０２）し、コピー条件に応じた読取条件をスキャナ１３に通知する（ステップＳ１０３）。次いで、ＣＰＵ２１は、スキャナ１３に対して原稿の読取（画像データの出力）を指示する（ステップＳ１０４）。
【００３０】
その後、ＣＰＵ２１は、スキャナ１３から送られている画像データを、ＲＡＭ２３を介してプリンタ用Ｉ／Ｆボード２７に供給する処理である画像データ供給処理を実行する（ステップＳ１０５）。画像データ供給処理の詳細については後述するが、この画像データ供給処理の実行により、１ページ分の印刷データ（スキャナ１３が出力した画像データに画像処理を施した画像データ）が、プリンタ１４に供給される。
【００３１】
画像データ供給処理の完了後、ＣＰＵ２１は、プリンタ１４に改ページの実行を指示する（ステップＳ１０６）。その後、ＣＰＵ２１は、スキャナ１３のＡＤＦ１３ａ内にコピーを行うべき原稿が残っているか否かを判断する（ステップＳ１０７）。そして、コピーを行うべき原稿が残っていた場合（ステップＳ１０７；ＹＥＳ）、ＣＰＵ２１は、ステップＳ１０４に戻って、スキャナ１３に対して、次原稿の読取を指示する。一方、ＡＤＦ１３ａ内に原稿が残っていなかった場合（ステップＳ１０７；ＮＯ）、ＣＰＵ２１は、ステップＳ１０１に戻り、次のコピーの実行指示が出されるのを待機する。なお、流れ図への表記は省略してあるが、スキャナ１３がＡＤＦ１３ａを備えていないものであった場合、ＣＰＵ２１は、ステップＳ１０６の完了後、ステップＳ１０１を実行する。
【００３２】
次に、画像データ供給処理時の画像処理装置１１の動作を説明する。なお、以下の説明では、スキャナ１３から送られてくる画像データを、原画像データと表記し、原画像データが表す画像（画素マトリックス）を原画像と表記する。
【００３３】
本画像処理装置１１では、図４（Ａ）に模式的に示したように、１ページ分の原画像データが、原画像の先頭行から始まる連続したｎ行からなる第１のブロック画像Ｇ1と、それぞれ、原画像に含まれる連続したｎ行からなるとともに、第１のブロック画像Ｇ1ないし第Ｍ−２のブロック画像ＧM-2との間にｄ行分の重なりがある第２のブロック画像Ｇ2ないし第Ｍ−１のブロック画像ＧM-1と、原画像に含まれる連続したｎ行からなるとともに、第Ｍ−１のブロック画像ＧM-1との間にｄ行分の重なりがあり、かつ、原画像の末尾行を含む第Ｍのブロック画像ＧMを表すデータとして取り扱われる。ここで、行とは、スキャナ１３が送信してくる１ライン分の画像データによって表される画素群のことであり、先頭行とは、原稿の読み取りを指示されたスキャナ１３が最初に送信してくる１ライン分の画像データによって表される画素群のことである。また、ｎ、ｄは、それぞれ、画像処理回路４０の回路構成によって定まる整数値（本実施形態では、ｎ＝１６、ｄ＝４；詳細は後述）である。
【００３４】
そして、画像データ供給処理時には、第１〜第Ｍのブロック画像Ｇ1〜ＧMのそれぞれに対して、図４（Ｂ）に模式的に示したように、そのブロック画像を表すｎ×Ｗ（Ｗは、原画像の１行を構成する画素数）個の画素データを、プリンタ用Ｉ／Ｆボード２７に、各画素データが表す画素の列位置を優先した列位置及び行位置順に、１個ずつ、供給する処理（ブロック画像の各列に関するｎ個の画素データを行位置順に１個ずつプリンタ用Ｉ／Ｆボード２７に供給する処理を、先頭列側から各列に対して繰り返す処理）が行われる。以下、この処理を、ブロック画像データ供給処理と表記する。
【００３５】
より具体的には、画像データ供給処理時には、スキャナ１３から送られてくる各画素データが、その画素データが表す画素の行位置及び列位置と対応づけた形でＲＡＭ２３に記憶される。そして、ＲＡＭ２３上に、第１のブロック画像を表す画素データが用意されたときに、第１のブロック画像に関するブロック画像データ供給処理が実行され、第２ないし第Ｍのブロック画像を表す画素データが用意されたときに、それぞれ、第２ないし第Ｍのブロック画像に関するブロック画像データ供給処理が実行される。また、画像データ供給処理時には、ＲＡＭ２３上の不要となった画素データを消去する処理も行われる。
【００３６】
ブロック画像データ供給処理により画素データが供給されるプリンタ用Ｉ／Ｆボード２７は、図５に示したように、主な構成要素として、画像処理回路４０と、プリンタＩ／Ｆ回路４１と、バッファメモリ４２とを備えている。
【００３７】
画像処理回路４０は、１ライン当りの画素数（１行を構成する画素数）が１６である画像データを処理できるように設計、製造されたＡＳＩＣである。画像処理回路４０は、モアレ除去用の画像処理を行うための画像処理モジュール４０ａと、エッジ強調用の画像処理を行うための画像処理モジュール４０ｂとを繋げた回路構成を有する。
【００３８】
各画像処理モジュール４０ｘ（ｘ＝ａ or ｂ）は、ある画素に関する画素データを演算出力するために、その画素とその近傍（周囲）に存在する８個の画素に関する総計９個の画素データを必要とする回路（３×３フィルタが用いられた回路）となっている。すなわち、各画像処理モジュール４０ｘによって得ることができるのは、画像処理を施すべき画像の、上端、下端、左端及び右端に位置している画素を除いた各画素（その周囲に８画素が存在している画素）に関する画素データだけである。従って、各画像処理モジュール４０ｘの処理により、あるサイズの画像を表す画像データが、縦方向、横方向のサイズ（画素数）が“２”（＝３−１）ずつ小さい画像を表す画像データに変換されることになる。
【００３９】
そして、画像処理回路４０は、画像処理モジュール４０ａと画像処理モジュール４０ｂとを繋げた回路（１個の画素データを演算出力するために５×５個の画素の画素データを必要とする回路）であるので、画像処理回路４０による画像処理を行うと、画像のサイズが、縦方向、横方向にそれぞれ“４”ずつ小さくなってしまうことになる。なお、この減少量“４”は、画像モジュール単位の減少量で考えた場合、減少量＝２＋２で得られ、画像処理回路４０の、１個の画素データの演算に要する、ライン方向に並んだ画素データの数（この値は、減少量＋１と一致する）で考えた場合、減少量＝５−１で得られることになる。
【００４０】
上記した本実施形態に係る画像データ供給処理が、ｄ＝４、ｎ＝１６として実行されているのは、画像処理回路４０による画像サイズの減少量が“４”であり、画像処理回路４０が処理対象とする画像データの１ライン当たりの画素数が“１６”であるためである（画像データ供給処理自体の意味については後述する）。
【００４１】
なお、画像処理回路４０による画像サイズのライン方向の減少量と、ライン方向に垂直な方向の減少量とが異なっている場合、ライン方向の減少量がｄとして用いられる。例えば、画像処理装置１１に、第１ないし第Ｐの画像処理モジュールを繋げた画像処理回路４０が用いられており、当該画像処理回路４０の第ｉ（ｉ＝１〜Ｐ）の画像処理モジュールに、ｈi×ｇiフィルタ（ライン方向の画素データ数がｈi；ｈi≧３）が搭載されている場合を考える。この場合、画像処理回路４０のライン方向の減少量は、各画像処理モジュールのライン方向の画素数の減少量の総和となり、第ｉの画像処理モジュールは、ライン方向の画素数を（ｈ1−１）個減少させる（Ｘ×Ｙ画像上には、ｈi×ｇi窓を（Ｘ−(ｈ1−１））×（Ｙ−(ｇ1−１））個しか配置できない）ので、ｄは、式“ｄ＝（ｈ1−１）＋（ｈ2−１）＋…＋（ｈP−１）”から求められることになる。
【００４２】
以下、図６ないし図１０を用いて、画像処理モジュール４０ａの構成、動作を説明する。図６は、画像処理モジュール４０ａの構成図であり、図７は、画像処理モジュール４０ａの動作を説明するためのタイムチャートである。また、図８、９は、それぞれ、画像処理モジュール４０ａに含まれるレジスタアレイ、３×３レジスタの回路図であり、図１０は、３×３レジスタに含まれるセレクタ＃１、＃２の動作の説明図である。
【００４３】
図６に示したように、画像処理モジュール４０ａは、バッファ５１、制御ブロック５２、レジスタアレイ５３、３×３レジスタ５４、及び、演算ブロック５５で構成されており、バッファ５１には、２４ビット幅の画素データＲＧＢＩが入力されている。また、制御ブロック５２には、ストローブ信号ｘＳＴＲＢが入力されており、画像処理モジュール４０ａ内の各部には、図示せぬクロック信号ＣＬＫが入力されている。
【００４４】
ＲＧＢＩは、ブロック画像データ供給処理が実行される結果として、プリンタ用Ｉ／Ｆボード２７に供給されるデータである。図７に示してあるように、ＲＧＢＩの内容は、ＣＬＫに同期的に変化する。ＲＧＢＩは、タイミング調整用のバッファ５１によって、図７に示したように時間変化するrgb_regに変換されて、レジスタアレイ５３及び３×３レジスタ５４に入力される。なお、図７において、ＲＧＢＩ及びrgb_regに関するタイムチャート内に記してある、0_0、0_1等の符号“i_j”は、当該符号が記してある時間帯のＲＧＢＩ及びrgb_regが、ブロック画像における第ｊ行、第ｉ列（先頭行が第０行、先頭列が第０列）の画素に関する画素データ（以下、画素データi_jと表記する）であることを示している。
【００４５】
ストローブ信号ｘＳＴＲＢは、ブロック画像データ供給処理が実行されているときに（ＲＧＢＩが１ブロック画像分の画素データを表している期間に）、“０”レベルをとる信号である。そして、ｘＳＴＲＢが入力されている制御ブロック５２は、ｘＳＴＲＢが“０”に変化した時点を基準としてＣＬＫに同期して動作することにより、図７に示してあるように時間変化するセレクト信号selA_0〜selA_15、selB_0〜selB_15、selC_0〜selC_15、１６種の個別シフト信号shift0〜shift15、シフト信号shift、２ビットのステート信号state、及びストローブ信号ｘＳＴＲＢＯを出力する。
【００４６】。
すなわち、制御ブロック５２は、セレクト信号selA_j（ｊは０〜１５の整数値）として、rgb_regが画素データ3k_j（ｋは、３ｋ≦Ｗが成立する“０”以上の整数値）であるときに、“１”となる信号を出力する。また、制御ブロック５２は、セレクト信号selB_jとして、rgb_regが画素データ3k+1_j（ｋは、３ｋ＋１≦Ｗが成立する“０”以上の整数値）であるときに、“１”となる信号を出力し、セレクト信号selC_jとして、rgb_regが画素データ3k+2_j（ｋは、３ｋ＋２≦Ｗが成立する“０”以上の整数値）を表しているときに、“１”となる信号を出力する。
【００４７】
また、制御ブロック５２は、シフト信号shiftとして、セレクト信号selC_0が最初に“１”となるときに、“１”に変化し、ｘＳＴＲＢが“１”に変化したときに“０”となる（“１６×（Ｗ−２）”ＣＬＫ周期の間“１”をとる）信号を出力し、個別シフト信号shiftjとして、rgb_regが画素データi_jであるときに、“１”となる信号を出力する。
【００４８】
また、制御ブロック５２は、ステート信号stateとして、rgb_regが画素データ3k+2_0〜3k+2_15を表している期間には、“０”を示し、rgb_regが画素データ3k+3_0〜3k+3_15を表している期間には、“１”を示し、rgb_regが画素データ3k+4_0〜3k+4_15を表している期間には、“２”を示す信号を出力する。
【００４９】
そして、制御ブロック５２は、ストローブ出力信号ｘＳＴＲＢＯとして、ｘＳＴＲＢが“０”に変化した時点から３６ＣＬＫ周期が経過したときに“０”となり、ｘＳＴＲＢが“１”に変化した時点から４ＣＬＫ周期後に“１”となる（“１６×（Ｗ−２）”ＣＬＫ周期の間、“０”を維持する）信号を出力する。
【００５０】
図６に示してあるように、制御ブロック５２の出力であるセレクト信号selA_0〜selA_15、selB_0〜selB_15、selC_0〜selC_15と、バッファ５１の出力であるrgb_regは、レジスタアレイ５３に入力されている。
【００５１】
図８に示したように、レジスタアレイ５３は、それぞれ、画素データdataA_0〜dataA_15を出力するレジスタ５８A_0〜５８A_15と、それぞれ、画素データdataB_0〜dataB_15を出力するレジスタ５８B_0〜５８B_15と、それぞれ、画素データdataB_0〜dataB_15を出力するレジスタ５８C_0〜５８C_15とで構成されている。レジスタ５８X_j（Ｘは、Ａ、Ｂ、Ｃのいずれか、ｊは、０〜１５のいずれか）には、rgb_regとselX_jとＣＬＫ（図示せず）が入力されており、レジスタ５８X_jは、“１”レベルのセレクト信号selX_jが入力されている状態では、ＣＬＫに同期して入力されている画素データを取り込み、取り込んだデータをＣＬＫに同期して（次のＣＬＫ周期で）出力する。また、レジスタ５８X_jは、“０”レベルのセレクト信号selX_jが入力されている状態では、“１”レベルのセレクト信号selX_jが入力されていたときに取り込んだデータを出力しつづける。
【００５２】
すなわち、レジスタアレイ５３は、以下のように動作する。
【００５３】
既に説明したように、セレクト信号selA_jは、rgb_regが画素データ3k_jを表しているときに、“１”となり、セレクト信号selB_jは、rgb_regが画素データ3k+1_jを表しているときに“１”となり、セレクト信号selC_ｊは、rgb_regが画素データ3k+2_jを表しているときに“１”となる。また、あるセレクト信号が“１”であるとき、他の４７個のセレクト信号は“０”となっている。
【００５４】
従って、セレクト信号selA_jが入力されているレジスタ５８A_ｊは、rgb_regが画素データ3k_jに変化した次のＣＬＫ周期で、画素データ3k_jの出力を開始し、その後、rgb_regが画素データ3k+3_jを表すものとなるまで、画素データ3k_jを出力しつづける。また、レジスタ５８B_ｊは、rgb_regが画素データ3k+1_jに変化した次のＣＬＫ周期で、画素データ3k+1_jの出力を開始し、その後、rgb_regが画素データ3k+4_jを表すものとなるまで、画素データ3k+1_jを出力しつづける。レジスタ６０C_ｊは、rgb_regが画素データ3k+2_jを表すものとなった次のＣＬＫ周期で、画素データ3k+2_jの出力を開始し、その後、rgb_regが画素データ3k+5_jを表すものとなるまで、画素データ3k+2_jを出力しつづける。
【００５５】
各レジスタ５８が上記のように動作する結果として、rgb_regが画素データ3k+2_j（ｋは、３ｋ＋２≦Ｗを満たす“０”以上の整数）を表しているとき、レジスタアレイ５３からは、dataA_0〜dataA_15として、それぞれ、画素データ3k_0〜画素データ3k_15が出力され、dataB_0〜dataB_15として、それぞれ、画素データ3k+1_0〜画素データ3k+1_15が出力されることになる。また、dataC_0〜dataC_15として、それぞれ、画素データ3k+2_0〜画素データ3k+2_j-1、画素データ3k-1_j〜画素データ3k-1_15が出力されることになる。なお、ｋ＝０のときにdataC_j〜dataC_15として出力されるデータは、無意味なデータである。
【００５６】
また、rgb_regが画素データ3k+3_jを表しているとき、レジスタアレイ５３からは、dataA_0〜dataA_15として、それぞれ、画素データ3k+3_0〜画素データ3k+3_j-1、画素データ3k_j〜画素データ3k_15が出力され、dataB_j〜dataB_15として、それぞれ、画素データ3k+1_0〜画素データ3k+1_15が出力され、dataC_0〜dataC_15として、それぞれ、画素データ3k+2_0〜画素データ3k+2_15が出力される。
【００５７】
そして、rgb_regが画素データ3k+4_jを表しているときには、dataA_0〜dataA_15として、それぞれ、画素データ3k+3_0〜画素データ3k+3_15が出力され、dataB_j〜dataB_15として、それぞれ、画素データ3k+4_0〜画素データ3k+4_j-1、画素データ3k+1_j〜画素データ3k+1_15が出力され、dataC_0〜dataC_15として、それぞれ、画素データ3k+2_0〜画素データ3k+2_15が出力される。
【００５８】
図６に示してあるように、レジスタアレイ５３から出力されるdataA_0〜dataA_15、dataB_0〜dataB_15、dataC_0〜dataC_15は、３×３レジスタ５４に入力されている。また、３×３レジスタ５４には、シフト信号shift、個別シフト信号shift0〜shift15、ステート信号state、画素データrgb_regも入力されている。
【００５９】
図９に示したように、３×３レジスタ５４は、セレクタ６０（セレクタ＃０）と、セレクタ６１（セレクタ＃１）と、それぞれ、画素データｍｔ０〜ｍｔ８を出力するレジスタ６５0〜６５8とを含む。個別シフト信号shift0〜shift15、ステート信号state、画素データdataA_0〜dataA_15、dataB_0〜dataB_15、dataC_0〜dataC_15は、セレクタ６０とセレクタ６１の双方に入力されており、rgb_regは、レジスタ６５8に入力されている。また、セレクタ６０の出力であるdata0は、レジスタ６５6に入力されており、セレクタ６１の出力であるdata1は、レジスタ６５7に入力されている。
【００６０】
セレクタ６０は、入力されている４８種の画素データの中の、shift0〜shift15及びstateの状態によって特定される１つの画素データを、data0として出力する回路である。セレクタ６１は、入力されている４８種の画像データの中の、shift0〜shift15及びstateの状態によって特定される１つの画素データを、data1として出力する回路である。
【００６１】
より具体的には、図１０に示したように、stateが“０”であり、shiftｊ（ｊ＝０〜１５）が“１”であった場合、セレクタ６０は、dataA_jを出力し、セレクタ６０は、dataB_jを出力する。stateが“１”であり、shiftｊが“１”であった場合、セレクタ６０は、dataB_jを出力し、セレクタ６１は、dataC_jを出力する。stateが“２”であり、shiftjが“１”であった場合、セレクタ６０は、dataC_jを出力し、セレクタ６１は、dataA_jを出力する。
【００６２】
すなわち、shiftjが“１”であり、かつ、stateが“０”である場合、rgb_regは、画素データ3k+2_jを表しており、レジスタアレイ５３からは、dataA_0〜dataA_15として、それぞれ、画素データ3k_0〜3k_15が出力され、dataB_0〜dataB_15として、それぞれ、画素データ3k+1_0〜3k+1_15が出力されている。そして、セレクタ６０からはdataA_jが出力され、セレクタ６１からはdataB_jが出力されるので、結局、この場合、レジスタ６５8、６５7、６５6に、それぞれ、画素データ3k_j、画素データ3k+1_j、画素データ3k+2_jが入力されることになる。
【００６３】
また、shiftjが“１”であり、かつ、stateが“１”である場合、rgb_regは、画素データ3k+3_jを表しており、レジスタアレイ５３からは、dataB_0〜dataB_15として、それぞれ、画素データ3k+1_0〜3k+1_15が出力され、dataC_0〜dataC_15として、それぞれ、画素データ3k+2_0〜3k+2_15が出力されている。そして、セレクタ６０からはdataB_jが出力され、セレクタ６１からはdataC_jが出力されるので、この場合、レジスタ６５8、６５7、６５6に、それぞれ、画素データ3k+1_j、画素データ3k+2_j、画素データ3k+3_jが入力されることになる。
【００６４】
また、shiftjが“１”であり、かつ、stateが“２”である場合、rgb_regは、画素データ3k+4_jを表しており、レジスタアレイ５３からは、dataA_0〜dataA_15として、それぞれ、画素データ3k+3_0〜3k+3_15が出力され、dataC_0〜dataC_15として、それぞれ、画素データ3k+2_0〜3k+2_15が出力されている。そして、セレクタ６０からはdataC_jが出力され、セレクタ６１からはdataA_jが出力されるので、この場合、レジスタ６５8、６５7、６５6に、それぞれ、画素データ3k+2_j、画素データ3k+3_j、画素データ3k+4_jが入力されることになる。
【００６５】
そして、図示してあるように、レジスタ６５6とレジスタ６５3とレジスタ６５0とからなる回路は、“１”レベルのshiftが入力されているときにシフトレジスタとして機能する回路となっている。レジスタ６５7とレジスタ６５4とレジスタ６５1とからなる回路、レジスタ６５8とレジスタ６５5とレジスタ６５2とからなる回路も、それぞれ、“１”レベルのshiftが入力されているときにシフトレジスタとして機能する回路となっている。
【００６６】
従って、ｍｔ６、ｍｔ７、ｍｔ８として、それぞれ、画素データi_j+2、画素データi+1_j+2、画素データi+2_j+2（ｊは、０〜１３の整数値）が出力されているときには、ｍｔ３、ｍｔ４、ｍｔ５として、それぞれ、画素データi_j+1、画素データi+1_j+1、画素データi+2_j+1が出力され、ｍｔ０、ｍｔ１、ｍｔ２として、それぞれ、画素データi_j、画素データi+1_j、画素データi+2_jが出力される。すなわち、ｍｔ６、ｍｔ７、ｍｔ８として、第２行ないし第１５行に関する画素データが出力されているとき、３×３レジスタ５４からは、ｍｔ０〜ｍｔ８として、ある画素とその周囲の８画素とに関する９個の画素データが出力される。
【００６７】
ｍｔ０〜ｍｔ８は、図６に示してあるように、３×３フィルタである演算ブロック５５に入力されている。演算ブロック５５は、それら９個の画素データをＣＬＫに同期して取り込んで、取り込んだ９個の画素データに応じた１個の画素データを、ＲＧＢＯとして出力する。上述したｘＳＴＲＢＯ（図７参照）は、この演算ブロック５５が、第１行、第１列の画素とその周囲の８画素とに関する９個の画素データに応じた画素データを出力するＣＬＫ周期の１ＣＬＫ周期前に、“０”に変化し、その後、１６×（Ｗ−２）ＣＬＫの間、“０”を取りつづける信号となっている。なお、図７に示してあるＲＧＢＯに関するタイムチャートでは、第ｉ−１列、第ｊ行の画素とその周囲の８画素とに関する９個の画素データから求められた画素データを“i_j”と表記している。
【００６８】
画像処理モジュール４０ａの出力であるＲＧＢＯ、ｘＳＴＲＢＯは、画像処理モジュール４０ａとほぼ同構成の画像処理モジュール４０ｂに、それぞれ、ＲＧＢＩ、ｘＳＴＲＢとして入力されている。
【００６９】
ここで、画像処理モジュール４０ｂの構成を簡単に説明しておく。画像処理モジュール４０ｂは、画像処理モジュール４０ａと同構成のバッファ５１、レジスタアレイ５３及び３×３レジスタ５４を備える。そして、画像処理モジュール４０ｂは、モアレ除去用の演算ブロック５５の代わりに、エッジ強調用の３×３フィルタである演算ブロックを備える。また、ｘＳＴＲＢの時間変化パターンのみが上記した制御ブロック５２と異なる制御ブロックを備える。具体的には、画像処理モジュール４０ｂは、画像処理モジュール４０ｂ内の演算ブロックから画素データi_2〜画素データi_13（ｉは、０〜Ｗ−４の整数値）が出力される期間に“０”となるｘＳＴＲＢＯを出力する制御ブロックを備える。
【００７０】
すなわち、画像処理モジュール４０ｂの演算ブロックから出力される画素データi_0〜画素データi_15のうち、有意なデータは、画素データi_2〜画素データi_13だけであるので、画像処理モジュール４０ｂ内の制御ブロックは、それらのデータが出力されている間だけｘＳＴＲＢＯを“０”とするように構成されている。なお、画像処理モジュール４０ａの演算ブロック５５から出力される有意な画素データが、画素データi_1〜画素データi_14（ｉは、０〜Ｗ−２の整数値）だけであるにもかかわらず、画素データi_0、i_15が出力されている期間にもｘＳＴＲＢＯを“０”としているのは、このようにしておくと、画像処理モジュール４０ｂとして、画像処理モジュール４０ａとほぼ同構成の回路が使用できるからである。
【００７１】
画像処理モジュール４０ｂの出力であるＲＧＢＯとｘＳＴＲＢＯは、ＣＬＫと共に、プリンタＩ／Ｆ回路４１（図５参照）に入力されている。プリンタＩ／Ｆ回路４１は、ｘＳＴＲＢＯが“０”である各期間のＲＧＢＯをＣＬＫに同期して取り込み、取り込んだ画素データを、バッファメモリ４２の、当該画素データが表す画素の列位置及び行位置に応じた記憶領域に記憶する。そして、（ｎ−ｄ）×（Ｗ−ｄ）個（本実施形態では、１２×（Ｗ−４）個）の画素データの記憶が完了する度に、それらの画素データを、各画素データが表す画素の行位置を優先した行位置及び列位置順に、プリンタ１４に供給する。
【００７２】
すなわち、プリンタＩ／Ｆ回路４１は、図１１（Ａ）に模式的に示したような順で画像処理回路４０から供給される（ｎ−ｄ）×（Ｗ−ｄ）個の画素データを、図１１（Ｂ）に示したような順でプリンタ１４に供給する処理を、Ｍ回繰り返すことによって、図１２に模式的に示したように、ブロック画像Ｇ1〜ＧMに対応する、画像処理が施されたブロック画像Ｇ1′〜ＧM′が印刷された用紙をプリンタ１４に出力させる。
【００７３】
このブロック画像Ｇ1′〜ＧM′からなる画像は、原画像に目的とする画像処理を施したものとなっている。
【００７４】
何故ならば、画像処理回路４０が、１個の画素データの演算にｑ×ｑ（本実施形態では、５）個の画素の画素データを必要とするものであり、ブロック画像ＧK′（Ｋは、１〜Ｍ−１の整数）の末尾行が第ｘ行であると仮定すると、第ｘ行に関する画素データを得るためには、原画像の第"x-(g-1)/2"行〜第"x+(g-1)/2"行に関する画素データが必要である。また、ブロック画像ＧK+1′の先頭行（第ｘ＋１行）に関する画素データを得るためには、原画像の第"x+1-(g-1)/2"行〜第"x+1+(g-1)/2"行の画素が必要である。
【００７５】
すなわち、ブロック画像ＧKは、原画像の第"x+(g-1)/2"行までの連続したｎ行分の画素からなる画像であれば良く、ブロック画像ＧK+1は、原画像の第"x+1-(g-1)/2"行からの連続したｎ行分の画素からなる画像であれば良い。換言すれば、ブロック画像ＧK+1には、ブロック画像ＧKの末尾に存在する“(x+(g-1)/2)-(x+1-(g-1)/2)+1”行（=g-1=d）を含めれば良い。
【００７６】
そして、図４を用いて説明したように、画像データ供給処理時には、１ページ分の原画像データが、それぞれ、連続したｎ行からなり、１個前のブロック画像との間にｄ行分の重なりがあるブロック画像Ｇ1〜ＧMを表すデータとして取り扱われている。従って、ブロック画像Ｇ1′〜ＧM′からなる画像は、原画像に目的とする画像処理を施したものとなっていることになる。
【００７７】
以上、詳細に説明したように、本実施形態に係る画像処理装置１１は、画像処理回路４０が複数回使用されて、画像データに画像処理が施されるので、どのようなサイズの画像を表す画像データにも画像処理を施せるものとなっている。また、スキャナ１３から、１ブロック画像分の画像データが得られる度に、１ブロック画像分の印刷データがプリンタ１４に供給されるので、コピーに、長い時間を要するといった問題もない。
【００７８】
＜変形形態＞
実施形態に係る画像処理装置１１は、スキャナ１３から入力された画像データに、画像処理回路４０を利用してモアレ除去等の画像処理を施し、画像処理を施した画像データをプリンタ１４に出力する装置であったが、画像処理回路４０で行なわれる画像処理の内容や、画像処理が施される画像データの入力元、画像処理が施された画像データの出力先を、実施形態のそれとは異なるものすることができる。
【００７９】
例えば、画像処理回路４０として、画像処理モジュール４０ａ及び画像処理モジュール４０ｂのいずれか一方のみを機能させられる回路を用いることができる。この場合、機能させる画像処理モジュール４０ｘの数に応じた値をｄ値として画像データ供給処理が行なわれるように、画像処理装置１１を構成（プログラムを作成）しておけば良い。すなわち、画像処理モジュール４０ａ、４０ｂの双方を機能させる場合には、２×(ｍ−１）がｄ値とされて（"２ｍ−１"がｑ値とされて）画像データ供給処理が行なわれ、いずれか一方のみを機能させる場合には、(ｍ−１）がｄ値とされて（ｍがｑ値とされて）画像データ供給処理が行なわれるように、画像処理装置１１を構成（プログラムを作成）しておけば良い。
【００８０】
また、既に説明したように、画像処理回路４０を、第１ないし第Ｐの画像処理モジュールを繋げた回路であって、第ｉ（ｉ＝１〜Ｐ）の画像処理モジュールに、ｈi×ｇiフィルタ（ライン方向の画素データ数がｈi；ｈi≧３）が搭載された回路としておいても良いことは当然である。
【００８１】
すなわち、実施形態に係る画像処理装置１１で使用されている技術は、何らかの画像処理を行う装置であればどのような装置にも適用することができる。例えば、本技術を用いて、ファイル化されて補助記憶装置に記憶された画像データに、何らかの画像処理を施して、画像処理を施した画像データをファイル化して記憶する画像処理装置や、画像処理を施した画像データをディスプレイに表示する画像処理装置を製造することができる。
【００８２】
【発明の効果】
本発明の画像処理装置によれば、任意サイズの画像を表す画像データに画像処理を施せることになる。また、本発明の画像処理装置に必要とされる画像処理回路は、小容量のバッファを内蔵させるだけで製造できるものであるので、本発明によれば、画像処理装置を、より少ない数の画像処理回路の実装により実現できることになる。
【図面の簡単な説明】
【図１】本発明の一実施形態に係る画像処理装置の使用形態の説明図である。
【図２】実施形態に係る画像処理装置のハードウェア構成図である。
【図３】実施形態に係る画像処理装置の全体的な動作手順を示した流れ図である。
【図４】実施形態に係る画像処理装置において行われる画像データ供給処理の説明図である。
【図５】実施形態に係る画像処理装置が備えるプリンタ用Ｉ／Ｆボードの構成図である。
【図６】プリンタ用Ｉ／Ｆボードに含まれる画像処理回路の構成図である。
【図７】画像処理回路に含まれる画像処理モジュールの動作を説明するためのタイミングチャートである。
【図８】画像処理モジュールに含まれるレジスタアレイの回路図である。
【図９】画像処理モジュールに含まれる３×３レジスタの回路図である。
【図１０】３×３レジスタに含まれるセレクタ＃１、＃２の動作の説明図である。
【図１１】プリンタ用Ｉ／Ｆボードに含まれるプリンタ用Ｉ／Ｆ回路の動作の説明図である。
【図１２】実施形態に係る画像処理装置の動作の説明図である。
【符号の説明】
１０  コピーシステム
１１  画像処理装置
１２  操作装置
１３  スキャナ
１４  プリンタ
２１  ＣＰＵ
２２  ＲＯＭ
２３  ＲＡＭ
２４  ブリッジ
２５  ＨＤＤコントローラ
２６  スキャナ用Ｉ／Ｆボード
２７  プリンタ用Ｉ／Ｆボード
２８  操作パネル用Ｉ／Ｆボード
２９  ネットワーク用Ｉ／Ｆボード
３５  ＣＰＵバス
３６  汎用バス（ＰＣＩバス）
４０  画像処理回路
４０ａ，ｂ  画像処理モジュール
４１  プリンタＩ／Ｆ回路
４２  バッファメモリ
５１  バッファ
５２  制御ブロック
５３  レジスタアレイ
５４  ３×３レジスタ
５５  演算ブロック
１２１  キー操作部
１２２  タッチスクリーン
【図１】
0003733826.tif 000002
【図２】
0003733826.tif 000003
【図３】
0003733826.tif 000004
【図４】
0003733826.tif 000005
【図５】
0003733826.tif 000006
【図６】
0003733826.tif 000007
【図７】
0003733826.tif 000008
【図８】
0003733826.tif 000009
【図９】
0003733826.tif 000010
【図１０】
0003733826.tif 000011
【図１１】
0003733826.tif 000012
【図１２】
0003733826.tif 000013