(57)【特許請求の範囲】
【請求項１】
画像を主走査方向に沿って分割して得られたバンド画像を副走査方向に走査し、該走査を前記主走査方向へ繰り返すことにより得られた画素値を順次に入力する入力手段と、
前記入力手段で入力された画素値の前記バンド画像における画素位置に基づいて算出された格納アドレスに従って保持メモリへ当該画素値を書き込む書込手段と、
後段の画像処理手段が参照する画素位置に対応した画素値を前記保持メモリから読み出して画像処理手段へ供給する読出手段と、
前記画像処理手段が必要とする画素位置が前記バンド画像の外側の参照領域にあると、当該参照領域における画素位置を前記バンド画像の前記副走査方向における位置に応じた方法に基づいて前記保持メモリ内の格納アドレスへ変換し、当該格納アドレスに基づいて前記保持メモリから画素値を読み出すよう前記読出手段を制御する制御手段とを備え、
前記制御手段は、前記参照領域の画素位置に最も近い前記バンド画像の画素位置から所定ライン数及び所定カラム数の範囲の画素値を取得するように前記参照領域の画素位置を前記保持メモリの複数の格納アドレスへ変換し、
前記読出手段は、前記複数の格納アドレスから読み出された画素値の平均値を当該参照領域の画素位置の画素値として前記画像処理手段へ供給することを特徴とする画像データ供給装置。
【請求項２】
前記制御手段は、前記バンド画像の位置が前記画像の上端に接する、下端に接する、いずれにも接しない、のいずれであるかを判定し、上端に接するバンド画像にはその左右及び上の部分に前記参照領域を設定し、下端に接するバンド画像にはその左右及び下の部分に前記参照領域を設定し、いずれにも接しないバンド画像にはその左右の部分に参照領域を設定することを特徴とする請求項１に記載の画像データ供給装置。
【請求項３】
前記制御手段は、前記参照領域の画像が、前記バンド画像と前記参照領域の境界に位置する画素列を中心とした折り返し画像となるように、前記参照領域における画素位置を前記保持メモリの格納アドレスへ変換することを特徴とする請求項１に記載の画像データ供給装置。
【請求項４】
前記保持メモリのサイズが、「（前記バンド画像の最大ライン数）×（前記バンド画像の左右における前記参照領域の幅の大きい方の画素数＋１）」の画像サイズのデータを保持するサイズを有することを特徴とする請求項３に記載の画像データ供給装置。
【請求項５】
前記制御手段は、前記参照領域の画素位置の画素値が、前記バンド画像の最も近い画素位置の画素値となるように、前記参照領域の画素位置を前記保持メモリの格納アドレスへ変換することを特徴とする請求項１に記載の画像データ供給装置。
【請求項６】
前記保持メモリのサイズが、「前記バンド画像の最大ライン数×１画素」の画像サイズのデータを保持するサイズを有することを特徴とする請求項５に記載の画像データ供給装置。
【請求項７】
前記保持メモリのサイズが、「前記バンド画像の最大ライン数×前記所定カラム数」の画像サイズのデータを保持するサイズを有することを特徴とする請求項１に記載の画像データ供給装置。
【請求項８】
バンド単位で画像を処理する画像処理部へ画像データを供給する画像データ供給装置による画像データ供給方法であって、
入力手段が、画像を主走査方向に沿って分割して得られたバンド画像を副走査方向に走査し、該走査を前記主走査方向へ繰り返すことにより得られた画素値を順次に入力する入力工程と、
書込手段が、前記入力工程で入力された画素値の前記バンド画像における画素位置に基づいて算出された格納アドレスに従って保持メモリへ当該画素値を書き込む書込工程と、
読出手段が、前記画像処理部が参照する画素位置に対応した画素値を前記保持メモリから読み出して前記画像処理部へ供給する読出工程と、
制御手段が、前記画像処理部が必要とする画素位置が前記バンド画像の外側の参照領域にあると、当該参照領域における画素位置を前記バンド画像の前記副走査方向における位置に応じた方法に基づいて前記保持メモリ内の格納アドレスへ変換し、当該格納アドレスに基づいて前記保持メモリから画素値を読み出すよう前記読出工程を制御する制御工程とを備え、
前記制御工程では、前記参照領域の画素位置に最も近い前記バンド画像の画素位置から所定ライン数及び所定カラム数の範囲の画素値を取得するように前記参照領域の画素位置を前記保持メモリの複数の格納アドレスへ変換し、
前記読出工程では、前記複数の格納アドレスから読み出された画素値の平均値を当該参照領域の画素位置の画素値として前記画像処理部へ供給することを特徴とする画像データ供給方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、処理対象画像のバンド単位処理において、画像処理に画素データを供給するための装置及び方法に関する。
【背景技術】
【０００２】
これまでに、ページメモリを持つことができないような装置において、少ないメモリで大きなサイズの画像処理を行う方法として、バンド処理方法が提案され、実施されていた。このようなバンド画像処理方法において拡大縮小やフィルタ処理などの、周囲の画素情報を元に出力画素を求めるような面処理を行う際には、レジスタに複数ラスタにわたる画素データが保持され、参照される（特許文献１）。
【０００３】
また、複数の処理プロセッサ個々に１画素分のデータを保持するメモリを分散して実装しておき、処理プロセッサ間でのデータのシフトによる移動を用いて順次画素に対するフィルタ係数の乗算、加算を行っていくフィルタ演算処理装置が提案されている。この種フィルタ演算処理装置は、特許文献２に記載されており、メモリを別途構成せずにフィルタ処理を行う。そして、このような構成のフィルタ演算処理装置において、端部のプロセッサでの画素保持メモリをプロセッサ間で相互参照できるような仕組みを導入し、１次元フィルタ処理において、画像端部の折り返し画像参照を行うといった技術が提案されている。
【特許文献１】特開２００５-３４１０２１号公報
【特許文献２】特開平８-１８０１７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、いわゆるバンド境界と呼ばれる、前回処理したバンドと今回処理するバンドの境界部分において画像の連続性を保持するためには、前後のバンド領域においてオーバーラップして参照する領域が必要となる。そのため、オーバーラップする領域の再読み込み処理という、余計なメモリアクセスが発生していた。
【０００５】
また、このような再読み込み処理を嫌って、処理するバンド領域の外側の画素を参照しないように処理を制御した場合は、参照画像領域の再読み込みを行わないため、入力した画像範囲内部でフィルタ処理が参照する領域をまかなわなければならない。その結果、フィルタ処理等が参照する外縁の画素分の画像サイズを削った領域を出力することになり、単純な等倍処理においても入力画像と出力画像のサイズが異なってしまうという課題があった。
【０００６】
さらに、参照画像を再読み込みする場合でも、そもそも入力画像全体としての上下左右端の外側には画像が存在しないため、参照画像を内部で生成して付加する処理も行わなければならない。そのため、付加する画像を入力画像を考慮して適切に生成しない場合には、画像左右端部におけるフィルタ処理の結果が必ずしも望ましいものにならないなどの不都合が生じてしまっていた。たとえば参照画像を固定的に「白」画素として生成する処理を実装した場合であって、処理対象画像が全面に黒っぽい画像であった場合を仮定する。このような場合、参照画像として付加した画素領域と処理対象画素領域との境界において「白」画像から「黒」画像に突然変化する部分で画像の不連続が生じてしまう。そのため、フィルタ処理などの結果がこの不連続によって影響を受けてしまうという課題がある。
【０００７】
上記の課題を回避するために、画像端部の画素を用いて参照画像を生成する方法が提案されている。
【０００８】
画像の端部の画素を利用する方法としては、最端部の１画素を用いてそれを引き伸ばすように参照画像を生成する方法がある。また、ＪＰＥＧなどの周波数分析手法を用いるような場合に適していると考えられる参照画像の生成方法として、画像端部の複数画素範囲を折り返すように参照して参照画像を生成する方法が採用されている（特許文献１、特許文献２）。
【０００９】
しかし、このような処理を行う場合、たとえば画像の上端部においては、
・少なくとも１ライン分のデータを内部に保持するために、１ラスタないし複数ラスタの画像を保持するメモリを実装する、或いは、
・同じラスタ位置のデータを上端部においてのみ複数回読み込むという特殊なデータフロー制御を行う、
の何れかによる対処が必要となる。そのため、多くのラインメモリを必要としてしまったり、処理制御が複雑になってしまったりするというデメリットがある。
【００１０】
このようなメモリ量の増大を防ぐ新たな方法として、バンド領域内を処理する際にライン単位の処理ではなくカラムごとに縦に読み出しながら処理していくデータ処理処理方法（以下クロスバンド処理と呼ぶ）が提案されている。しかしながら、このようなクロスバンド処理においても、やはり入力画像外部の画素を少ないメモリで生成する処理については従来提案されていなかった。
【００１１】
本発明は、処理対象画像のバンド単位処理において、フィルタ処理などを行う際に、画像の端部において不足する画像領域外の参照画素を少ないメモリ量で効率よく生成することを目的とする。
【課題を解決するための手段】
【００１２】
上記の目的を達成するための、本発明による画像データ供給装置は以下の構成を備える。すなわち、
画像を主走査方向に沿って分割して得られたバンド画像を副走査方向に走査し、該走査を前記主走査方向へ繰り返すことにより得られた画素値を順次に入力する入力手段と、
前記入力手段で入力された画素値の前記バンド画像における画素位置に基づいて算出された格納アドレスに従って保持メモリへ当該画素値を書き込む書込手段と、
後段の画像処理手段が参照する画素位置に対応した画素値を前記保持メモリから読み出して画像処理手段へ供給する読出手段と、
前記画像処理手段が必要とする画素位置が前記バンド画像の外側の参照領域にあると、当該参照領域における画素位置を前記バンド画像の前記副走査方向における位置に応じた方法に基づいて前記保持メモリ内の格納アドレスへ変換し、当該格納アドレスに基づいて前記保持メモリから画素値を読み出すよう前記読出手段を制御する制御手段とを備え、
前記制御手段は、前記参照領域の画素位置に最も近い前記バンド画像の画素位置から所定ライン数及び所定カラム数の範囲の画素値を取得するように前記参照領域の画素位置を前記保持メモリの複数の格納アドレスへ変換し、
前記読出手段は、前記複数の格納アドレスから読み出された画素値の平均値を当該参照領域の画素位置の画素値として前記画像処理手段へ供給する。
【００１３】
また、上記の目的を達成するための本発明による画像データ供給方法は、
バンド単位で画像を処理する画像処理部へ画像データを供給する画像データ供給装置による画像データ供給方法であって、
入力手段が、画像を主走査方向に沿って分割して得られたバンド画像を副走査方向に走査し、該走査を前記主走査方向へ繰り返すことにより得られた画素値を順次に入力する入力工程と、
書込手段が、前記入力工程で入力された画素値の前記バンド画像における画素位置に基づいて算出された格納アドレスに従って保持メモリへ当該画素値を書き込む書込工程と、
読出手段が、前記画像処理部が参照する画素位置に対応した画素値を前記保持メモリから読み出して前記画像処理部へ供給する読出工程と、
制御手段が、前記画像処理部が必要とする画素位置が前記バンド画像の外側の参照領域にあると、当該参照領域における画素位置を前記バンド画像の前記副走査方向における位置に応じた方法に基づいて前記保持メモリ内の格納アドレスへ変換し、当該格納アドレスに基づいて前記保持メモリから画素値を読み出すよう前記読出工程を制御する制御工程とを備え、
前記制御工程では、前記参照領域の画素位置に最も近い前記バンド画像の画素位置から所定ライン数及び所定カラム数の範囲の画素値を取得するように前記参照領域の画素位置を前記保持メモリの複数の格納アドレスへ変換し、
前記読出工程では、前記複数の格納アドレスから読み出された画素値の平均値を当該参照領域の画素位置の画素値として前記画像処理部へ供給する。
【発明の効果】
【００１４】
本発明によれば、処理対象画像のバンド単位処理において、フィルタ処理などを行う際に、画像の端部において不足する画像領域の外側の参照画素を少ないメモリ量で効率よく生成することが可能となる。
【発明を実施するための最良の形態】
【００１５】
以下、添付の図面を参照して、本発明の好適な実施形態を説明する。
【００１６】
＜第１実施形態＞
図１は、第１実施形態による画像データ供給装置の構成例を示すブロック図である。図１において、入力画像保持メモリ１１は、処理される画像データを格納している。バンド分割画像入力部１２は、入力画像保持メモリ１１に格納されている入力画像に対してリードアクセスを行い、画像の一部を横方向に切り抜いたバンド単位の画像を読み出す。読み出されたバンド単位の画像（以下、バンド画像という）はバンドメモリに保持される（不図示）。
【００１７】
走査変換部１３は、バンド分割画像入力部１２においてバンドメモリに保持されたバンド画像を、クロスバンド方向に画素単位で読み出すことにより走査変換を行う。参照画像生成部１４は、走査変換されたバンド画像のデータから、バンドもしくはページに対して上下左右の参照画素を生成する処理を行う。すなわち、参照画像生成部１４は、その後の画像処理部１５が実行する画像処理に必要な、バンド画像の領域外（参照領域）における参照画素を生成する。即ち、参照画像生成部１４は、入力画像周辺の参照画素を生成する。
【００１８】
画像処理部１５は、参照画素を必要とする任意の画像処理を行う。走査変換部１６は、画像処理部１５で処理された画素データを、もとのバンドのデータ走査方向に再び並べ替える為の走査変換を行う。バンド画像出力部１７は、走査変換部１６の処理の結果出力されるバンド画像を出力画像保持メモリ１８に出力する。尚、出力画像保持メモリ１８は、画像処理部１５で処理されたバンド画像を一時的に保持するバンドメモリを有してもよい。画像をバンド単位で入力して処理する装置として、インクジェットプリンタ等が挙げられる。この場合、入力画像保持メモリ１１は、ホスト装置側に設けられ、バンド分割画像入力部１２がホスト装置よりバンド単位で画像を入力し、インクジェットプリンタ内のバンドメモリに格納する構成となる。従って、インクジェットプリンタ内に設けられる画像データ供給装置は、バンド分割画像入力部１２から出力画像保持メモリ１８を具備した構成となる。
【００１９】
図２は、第１実施形態による参照画像生成部１４の、より詳細な構成例を示すブロック図である。以下、第１実施形態による参照画像生成部１４の構成及び動作を説明する。
【００２０】
画像入力部２１は、走査変換部１３からクロスバンド方向に走査変換され画素ごとに入力されてくるバンド画像のデータを受け取る。参照画像生成処理を行わない場合や、本処理の対象外のデータである場合には、入力されたデータを直接に画像出力部２９へ送る。画像出力部２９は、受け取ったデータを次の画像処理部１５へ出力する。
【００２１】
画像入力部２１から画素データが出力されると、入力画素位置カウンタ２２は、受け取った画素のバンド内もしくはページ内位置を把握する為に、主走査方向、副走査方向の画素位置をカウントする。
【００２２】
格納アドレス生成部２３は、入力画素位置カウンタ２２より得られる入力画素の画素位置に応じて、画素データ保持メモリ２５に格納する際の格納アドレスを計算する。画素書込み部２４は、画像入力部２１から入力された画素データを、格納アドレス生成部２３で算出された格納アドレスに従って、画素データ保持メモリ２５に書き込む。即ち、画素書込み部２４は、実際に内部に実装されるメモリに対するライトアクセスを行う。
【００２３】
画素データ保持メモリ２５は、画素書込み部２４からの書き込み要求に応じて画素データを保持するとともに、画素読出し部２８からの読み出し要求に応じて指示されたアドレスの画素データを出力する。こうして、画像入力部２１から入力された画素値が、バンド画像における画素位置に基づいて算出された格納アドレスに従って画素データ保持メモリ２５へ書き込まれる。
【００２４】
出力画素位置カウンタ２６は、入力画素位置カウンタ２２からのトリガに同期して、出力するに必要な画素が保持されたかどうかを判断する。そして、保持されていると判断された場合には、出力画素位置カウンタ２６は後段の画像処理部１５が必要とする画素位置をカウントする。
【００２５】
読出しアドレス生成部２７は、出力画素位置カウンタ２６からの位置情報を元に、画素データ保持メモリ２５の対応するデータが存在するアドレスを生成する。出力画素読出し部２８は、読出しアドレス生成部２７において生成されたアドレスを元に、画素データ保持メモリ２５に対してリードアクセスを行い、画素データを読み出す。
【００２６】
画像出力部２９は、出力画素読み出し部２８から出力された画素を、次の画素処理ブロックに対して出力する。こうして、後段の画像処理部１５が必要とする画素位置に対応した画素値が画素データ保持メモリ２５から読み出されて、画像処理部１５へ供給されることになる。尚、もし参照画像生成部１４において処理されるべきでない画素データが画像入力部２１に入力された場合には、画像出力部２９は画像入力部２１から送られる画素データを選択して、画像処理部１５に出力する。
【００２７】
図３は、本実施形態において前提となるページ画像に対するバンド処理の概要と、バンド内でのデータの走査方向を説明する図である。尚、バンド内のデータの走査方向については、通常のラスタ走査とクロスバンド走査が示されている。
【００２８】
図３において、３１は、処理対象となる入力画像としてのページ画像である。このようなページ画像３１は入力画像保持メモリ１１に保持される。本実施形態では、図３に示すような、ページ画像３１を横方向に短冊状に区切ったバンド画像３２，３３ごとに画像処理を行う方法が採用される。その際に、３４に示すようにラスタと呼ばれる画像横方向に順次画素を処理していくライン処理と、３５に示すように、バンド内での縦方向に順次画素を処理していくクロスバンド処理とがある。
【００２９】
図４は、上記のような２つの方式のバンド処理方法において、たとえばフィルタ処理など局所的な２次元的な画素集合を元に画像処理を行う場合に必要なバッファの要件について説明している。
【００３０】
図４の（ａ）は、図３において説明したように切り出されたバンド内の画素を、横方向すなわちライン方向に順次処理を行っていくライン処理が行われるバンドを示している。
ライン処理において範囲４１の画素に対してフィルタ処理などの面的な処理を行う場合は、複数のラインにわたる画素を記憶しておかなければ前のラインの画素を範囲４１の領域内で同時に使用することが出来ない。例えばバンド内の左上に位置する画素が処理に入力されるのは、バンド内の最初のラインの最初のカラム位置を読み込んだときであり、その後、右側に位置する画素が次々と読み出される。従って、最初の画素を次のラインの画素とともに使用するためには、次のラインの画素が入力され、処理が開始できるまで、最初に入力された画素データをどこかに保持しておかなければならない。
画像処理がより多くのラインにまたがった画素を必要とする場合には、さらに２ライン目、３ライン目の画素も全て保持しておかなければならない。
【００３１】
したがって、範囲４１の領域の画像処理を行うためには、実は図４の（ｂ）に示す範囲４２の画素データを保持しておくだけのメモリが必要となる。
【００３２】
これに比べて、図４の（ｃ）に示すようなクロスバンド方向に画素を読み込んでいく処理方法の場合、はるかに少ない画素保持メモリで処理が可能である。例えば、範囲４３についてフィルタ処理などの面的な処理を行う場合に必要な保持すべき画素は、画素の読み込み順からして図４の（ｄ）に示される範囲４４の範囲で十分であることが理解されよう。
【００３３】
こうしたことから、クロスバンド処理を用いたデータ処理では、非常に少ない内部メモリで、面的な処理を実行する処理を実装できるがわかる。
【００３４】
ところが、実際に面的な処理を行う際には、周囲の画素を使用して中央の１点の画素を生成することから、入力画像の範囲を全て処理する場合に、入力画像の上下左右端において、画像の外側の画素を参照しなければならなくなる場合がある。もちろん、このような周囲の画素を参照せずに処理を行うことも可能であるが、その場合、フィルタ処理等で参照する周辺画素の幅分の画素領域を入力画像から削ってしまうことになるため、入力画像サイズと出力画像サイズが異なってしまう。こうしたことは、複数の異なるフィルタ係数によるフィルタを連続してかけなければならないような画像処理を行う際に非常に問題となる。なぜなら、フィルタをかける回数分画像がどんどん小さくなってしまい、最終的な出力画像において有効な画像範囲を十分に確保することが難しくなるためである。
【００３５】
こうしたことから、図５に示すように、入力画像５１に対して、範囲５２を参照するフィルタ処理などをかける場合には、画像の外側に参照画像５３を補う処理が必要となる。
【００３６】
この画像の外側に補われるべき画像の範囲、即ち参照領域は、図５中の５２，５４，５６，５７に示すように画像の４隅でのフィルタ処理を行うことを考慮して、ページの上下左右および斜めの領域を全て囲むように画素を生成する処理が必要となる。このようにページの上下左右端に対して位置付けられる参照領域の参照画像５３をバンド５８において意識するためには、複数バンドにまたがるバンド位置の管理と、上端、中央、下端でそれぞれ異なる参照画像生成処理を効率よく行うアルゴリズムが必要である。また、この処理において必須に実装されるメモリ容量を削減する必要もある。
【００３７】
図５の例では、このような外縁の参照領域における参照画像の画素を、入力画像の外縁付近の画素を、入力画像の端部を中心として折り返した形で生成した様子が示されている。図６は、このような参照画像の生成処理を行う際に保持しておかなければならない画素範囲について示している。
【００３８】
図６の（ａ）は、ライン単位の処理によってバンドを処理する場合を示している。ここで範囲６１を必要とするフィルタ処理を行う場合には、範囲６２の画素を画素データ保持メモリに保持しておかなければならない。なぜなら、６２の領域は、次々と、右の画素を処理していくため、参照領域への画像の引き伸ばしに使用する上端の１ラインに含まれる画素については、フィルタの領域が完全に上端のラインを超えるまでずっと保持されなければならないからである。さらに、入力画像の上端から離れれば離れるほど（参照領域のライン数が増えるほど）、折り返し画像を生成するために入力画像の２ライン目、３ライン目の画像が必要となってくる。従って、参照画像として入力画像の上端・下端に付加するライン数が多ければ多いほど、この画素保持用の領域の高さは大きくなることになる。
【００３９】
このことから、ライン処理の場合、画素データ保持メモリが保持しなければならないデータのサイズは、横幅ｗが処理可能な最大の画像幅、高さｈが上参照画像または下参照画像のいずれか大きい方のライン数として決定される。その結果、画素データ保持メモリに必要なメモリサイズは、およそｈ×ｗとなる。
【００４０】
これに対して、図６の（ｂ）は、クロスバンド処理を用いた場合に画素データ保持メモリ２５が保持すべきデータを示している。クロスバンド処理を用いた場合、範囲６３を必要とするフィルタ処理のために必要な画素範囲は範囲６４のようにすることができ、ライン処理（図６の（ａ））に比べて大幅に画素データ保持メモリの容量を削減出来ることがわかる。さらに、図６の（ａ）の範囲６２に示した領域を保持する場合には、処理可能な画像の幅の最大値（ｗ）を見積もらなければ必須メモリ量を決定できない。これに対して、図６の（ｂ）の範囲６４を保持するために必要な情報は、バンド処理を行う際のバンドの最大高さ（ｃｈ）を見積もればよく、処理対象の画像サイズに影響を受けないパラメータを用いて設計を行うことが出来る。このことにより、処理対象の画像サイズに制約をかけない処理を実装することが出来る。
【００４１】
このことから、クロスバンド処理における画素データ保持メモリの横幅ｃｗは、左右参照画像のいずれか大きい方の幅によって決定され、高さｃｈは処理可能な最大バンドライン数によって決定される。このように、画素データ保持メモリ２５のメモリサイズはこのような小さなｃｗ×ｃｈでよく、先のライン単位処理でのｈ×ｗに比べて非常に小さくてすむ。そして、上述したように、このメモリサイズは入力される画像サイズには一切関係なく、フィルタ処理などの実装された画像処理が必要とする周辺画像のサイズと処理単位となるバンドサイズという画像処理パラメータのみによって決定することができる。このため、画像処理における処理可能なライン幅ｗなどについてなんら制約を与えないという利点がある。
【００４２】
図７は、図６の（ｂ）の範囲６４に示す画像データを格納した画素データ保持メモリ２５を使用して、入力画像の周囲に参照画素を生成する処理の概念を示す図である。７１は、クロスバンド方向（縦方向）に画素を処理する際に、過去に入力された画素データを保持するデータ保持メモリ２５に保持される画素範囲を示している。この枠７１に示した画素範囲の中にある画素が画素データ保持メモリ２５に保持され、参照画像生成処理によって参照されることとなる。
【００４３】
７２は、この画素データ保持メモリ２５に対して入力されてくる画素値の順序を示す矢印である。７３は、例えば７４に示す位置の参照画素を生成するために必要な画素を示している。図７の例では、上参照画素が２ライン、下参照画素が１ライン、左参照画素が２カラムの場合を示している。たとえば、参照画像として最初の画素となる画素７４を出力するためには、少なくとも折り返しの位置に画素番号（１９）の画素７３が入力されている必要がある。さらに、最初のカラムの画素を全て出力するためには、画素番号（２４）までが入力されている必要がある。尚、図７の例では、図７に示した枠７１内の画素値を保持することで、（１）〜（８）の各画素について画像処理を実行することができ、バンド画像を重複させる必要が無い。バンド画像を重複させる場合、即ち再読み込み処理を行って画像処理を実行する場合、上参照画素が２ライン、下参照画素が１ラインとすると、上から２ラインはのりしろとして消費されるため、（３）〜（７）までの画素が処理されることになる。
【００４４】
このように、参照画像を生成するためにはまず、入力画像を蓄積する処理を行い、十分な画素データが保持されたことを検知したところで、出力画素の読み出し位置を算出して画素を読み出し、出力していくという手順が必要となる。この判断は、上述したように、出力画素位置カウンタ２６によって行われる。
【００４５】
この際に、画素データ保持メモリ２５が最低限蓄積しなければならない画素数は、
最低保持画素数（左余白生成時）＝（左参照画像の幅＋１）×バンドライン数
・・・(式１)
となる。ここで式１に示した値が、入力画素位置カウンタ２２が出力開始の可否を判断するために参照する、必要最低限の保持画素数となる。入力画素位置カウンタ２２は、この画素数が入力されたことを検知することで、出力を開始する条件が整ったことを判断する。入力画素位置カウンタ２２は、出力を開始する条件が整ったと判断すると、読出し処理開始トリガを出力画素位置カウンタ２６に発行する。
【００４６】
その後、入力画素位置カウンタ２２は、参照領域を含む「左参照画像幅＋１」個のカラムの領域を出力し終えるまで、画素入力を待たせる制御を、バンド画像入力部１２、走査変換部１３による入力側の処理に対して行わなければならない。尚、上述したように、図７示の画素番号（１９）の画素値が保持された時点から画像処理部１５への画素データの供給を開始（画素７４からの画素値の供給を開始）してもよい。この場合、出力画素位置カウンタ２６による出力開始の許可は、式１に示されるタイミングよりも早くなる。
【００４７】
続いて、バンド画像に対する画像処理を続けていき、最後に右参照画像を生成する際に必要な最低保持画素数は、
最低保持画素数（右余白生成時）＝（右参照画像の幅＋１）×バンドライン数
・・・(式２)
となる。
【００４８】
ここで、式１、式２に示されるこれらの条件は、画素データ保持メモリ２５のメモリサイズ決定の条件とは異なる。画素データ保持メモリ２５のメモリサイズの条件としては、式１および式２のいずれか大きい方を保持できるサイズであることとなり、式１、２のいずれか単独で決定されるものではない。
【００４９】
上記の式１は、先頭からの画素入力に対して参照画像出力を開始できる最低限の時間を規定するものとして定義づけられる。よって、左参照画像の幅が右参照画像の幅よりも小さい場合、必ずしも用意されたメモリ全てに画素が保持されている必要はなく、式１の条件を満たした時点で参照画像の出力を開始できる。
【００５０】
右参照画像の生成については、メモリに保持されている画素量が式２を満たしていることのみが条件であり、処理開始のタイミングはいずれにせよ入力画像のバンド領域に含まれる画素全ての入力が終了した時となる。
【００５１】
さらに、上参照画像のライン数については以下の関係を満たしていることが必要となる。
バンドライン数≧上参照画像のライン数＋１      ・・・(式３)
下参照画像についても同様に、
バンドライン数≧下参照画像のライン数＋１      ・・・(式４)
の条件があり、逆にこれらの両方を満たすバンドライン数を処理可能とすることが、本実施形態の参照画像生成処理における設計制約条件となる。
【００５２】
参照画像のサイズは、フィルタ処理などにおける周辺画素の参照範囲によってきまるため、画像処理として実行されるフィルタ処理等の画像処理パラメータによって決定される。従来のライン単位での処理において参照画像生成に必要なメモリ量は、画像サイズ×上参照画像ライン数である。例えば、プリント画像処理などで一般的な６００ｄｐｉではＡ４用紙の横幅が５０００画素となる。７×７のフィルタ処理を例にとると、参照画像ライン数は３ラインとなり、これを１画素あたり３バイトとして計算すると、５０００×３×３＝４５ＫＢのメモリを実装しなければならない。このようなサイズのメモリを例えばハードウェアの中に実装する場合は比較的高いコストを必要としてしまうことになる。
【００５３】
これに対して、クロスバンド処理において必要となるメモリサイズは、上下左右参照画像の幅を３ライン、３カラムとすると、（３＋１）×（３＋１）×３バイト＝５６バイトで済むことになる。しかし実際には、フィルタ処理を行うためのバンドライン数を供給しなければならないことから、バンドライン数は少なくとも７ライン以上となるため、（３＋１）×７×３バイト＝８４バイトとなる。この数字からも、本実施形態によるコスト削減の効果は非常に大きいことが分かる。
【００５４】
図８は、第１実施形態による画素データ保持メモリ２５への書込み処理を説明するフローチャートである。
【００５５】
まず、ステップＳ８１において、入力画素位置カウンタ２２は、入力される画素データのバンド画像における画素位置（ｄｘ、ｄｙ）をそれぞれ０に初期化する。次に、ステップＳ８２において画像入力部２１から画素値が１つ入力されると、ステップＳ８３において、格納アドレス生成部２３は、格納アドレスを以下に示す式５で求める。格納アドレス生成部２３は、入力画素位置カウンタ２２からのｄｘ，ｄｙと、左右の参照領域のいずれか大きいほうに１を足した画素格納メモリ有効画素幅ｂｗとを用いて、格納アドレス（WriteAddress）を以下に示す式５で求める。
WriteAddress＝(ｄｘ％ｂｗ)＋ｄｙ＊ｂｗ      ・・・(式５)
ここで、ｄｘ％ｂｗは、ｄｘをｂｗで割った余りである。
【００５６】
尚、この式５では、１アドレスに１画素が格納される場合を示している。従って、たとえば、ＲＧＢ画像など１画素が複数アドレスに格納される場合には、１画素のデータを格納するために必要なアドレス数をこの式５に乗ずることによって格納アドレスを算出することになる。
【００５７】
次にステップＳ８４において、画素書込み部２４は、格納アドレス生成部２３がステップＳ８３で生成した画素データ保持メモリ２５の格納アドレスに、入力画素データを格納する。そして、ステップＳ８５において、入力画素位置カウンタ２２は、ｄｙを１加算する。
【００５８】
ステップＳ８６において、ｄyがあらかじめ設定されたバンドライン数（バンド画像の最大バンドライン数）に到達したか否かが判断される。ｄｙがあらかじめ設定されたバンドライン数に到達した場合は、処理はステップＳ８７へ進む。ステップＳ８７において、入力画素位置カウンタ２２は、ｄｙを０に初期化した上で、ｄｘを１加算する。そして、ステップＳ８８において、ｄｘがあらかじめ設定されたカラム数（バンド画像の最大のカラム数）に到達したか否かが判断される。ｄｘが予め設定されたカラム数に到達していなければ、当該バンド画像から読み込む画素が残っているので、処理をステップＳ８２にもどす。ステップＳ８６においてｄｙがあらかじめ設定されたバンドライン数に到達していない場合は、処理はステップＳ８２に戻り、次の画素データの入力を受け付ける。また、ステップＳ８８においてｄｘが予め設定されたカラム数に到達した場合は、当該バンド画像に関して全ての画素値が入力されたことになるので、本処理を終了する。
【００５９】
このようにして入力画素を画素保持メモリに格納していき、参照画像を生成するのに必要なデータが画素データ保持メモリにたまったところで、図７で説明したように画素値を読み出す。これにより、画像を鏡に映したような参照画像が生成される。以下、画素データ保持メモリからの画素値の読出し手順について、説明する。
【００６０】
図９は、本実施形態による、出力画素データを得るための読出しアドレス生成処理を示すフローチャートである。
【００６１】
画素データ保持メモリ２５からバンド画像に関する画素値の読出しを開始するにおいて、まずステップＳ９０１において、出力画素位置カウンタ２６は、出力画素位置(ｉｘ，ｉｙ)および出力終了位置(ｉｗ，ｉｈ)を初期化する。初期化は、以下に示す式６，７，８，９によって行われる。尚、この初期化では、入力されるバンド画像の左端部のカラムはｉｘ＝０、上端部のラインはｉｙ＝０としている。また、図７の例では、出力されるバンド画像（参照領域が補われたバンド画像）は、左端部のカラムはｉｘ＝−２、ｉｙ＝−２となる。
ｉｘ＝左参照画像のカラム数×(−１)        ・・・(式６)
ｉｙ＝上参照画像のライン数×(−１)        ・・・(式７)
ｉｗ＝入力画像幅−１                      ・・・(式８)
ｉｈ＝バンドライン数−１                  ・・・(式９)
【００６２】
次にステップＳ９０２において、出力画素位置カウンタ２６は、入力画素位置カウンタ２２からの読出し処理開始トリガを待つ。読出し処理開始トリガにより出力処理が開始されると、ステップＳ９０３において、読出しアドレス生成部２７は、画素データ保持メモリ２５上の読出し位置（Ｘ，Ｙ）を(ｉｘ，ｉｙ)から以下の式１０、式１１で求める。
Ｘ＝|ｉｘ|                    ・・・(式１０)
Ｙ＝|ｉｙ|                    ・・・(式１１)
【００６３】
次にステップＳ９０４において、ｉｘがｉｗを超えているかどうかの判定を行い、超えている場合には、ステップＳ９０５に進み、読出しアドレス生成部２７は、以下の処理によってＸを求める。Ｘがｉｗを越えている間は、
Ｘ＝ｉｗ−(ｉｘ−ｉｗ)              ・・・(式１２)
【００６４】
同様にステップＳ９０６においてｉｙがｉｈを超えているかどうかの判定を行い、超えている場合には、ステップＳ９０７に進み、読出しアドレス生成部２７は以下の処理によってＹを求める。
Ｙ＝ｉｈ−(ｉｙ−ｉｈ)              ・・・(式１３)
これら式１２，１３は、入力画像領域からはみ出した分を画像の内側に写像する式となっている。
【００６５】
そしてステップＳ９０８において、読出しアドレス生成部２７は、求められた位置（Ｘ，Ｙ）から画素データ保持メモリ２５の読出しアドレス（ReadAddress）を下に示す式１４によって求める。
ReadAddress＝(Ｘ％ｂｗ)＋Ｙ＊ｂｗ      ・・・(式１４)
ここで、Ｘ％ｂｗは、Ｘをｂｗで割った余りである。
【００６６】
ステップＳ９０９において、画素読出し部２８は、ステップＳ９０８で算出された読出しアドレスを用いて画素データ保持メモリ２５から画素データを読み出す。そして、ステップＳ９１０において、画像出力部２９は画像読出し部２８が読み出した画素値を出力する。
【００６７】
以上のようにして、画像の折り返しによる参照画像生成処理が行われる。尚、式１４も、書込みアドレスと同じように１画素を１アドレスに格納する場合の式となっている。従って、たとえばＲＧＢ画像などのように１画素が複数アドレスに格納される場合には、この式１４の右辺全体に１画素分の格納に必要なアドレス幅をかけることによって、読み取りアドレスを計算できる。
【００６８】
以上のようにアドレスを計算し、画素データ保持メモリ２５から画素データを読み出すと、処理はステップＳ９１１に進む。ステップＳ９１１において、出力画素位置カウンタ２６は、ｉｙに１を加算する。
【００６９】
ステップＳ９１２において、出力画素位置カウンタ２６は、ｉｙが出力バンドライン数＋下参照画像ライン数を超えているかどうかを判定する。そして、超えていると判定された場合には、ステップＳ９１３において、出力画素位置カウンタ２６はｉｙを再び式７によって初期化するとともに、ｉｘに１を加算する。ステップＳ９１２で超えていないと判定された場合には、ステップＳ９０３に処理を戻し、次の画素出力を行う。
【００７０】
この際に、処理制御として、左参照画像を生成している間と、第１カラム目の入力画素そのものを出力している間は入力データを受け付けないように制御することで、画素保持メモリを必要最低限のサイズにすることが可能である。
【００７１】
以上説明したように、第１実施形態に開示されたアルゴリズムによれた、参照画像を生成するために必要なメモリは、
(バンド処理可能な最大ライン数)×(左右参照画像の大きいほうのカラム数)
×（１画素のバイト数）            ・・・(式１５)
によって算出されるごく小さなサイズとなる。そのため、さまざまな画像サイズに対応した参照画像生成を行う処理モジュールを低コストで実装することが可能となる。
【００７２】
図１０は、以上のようにして算出されるアドレスが、画素データ保持メモリ２５上でどのように動くかについて示している。
【００７３】
矢印１０１は、出力の１カラム目（参照領域の１カラム目）の画素値の読出しにおけるＹの移動の軌跡である。矢印１０２は、出力の２カラム目の画素値の読出しにおけるＹの移動の軌跡である。矢印１０３は、出力の３カラム目の画素値の読出しにおけるＹの移動の軌跡である。矢印１０４は、出力カラムごとに移動するＸの軌跡である。
【００７４】
図１１は、上述した読出しアドレスの計算によって求められた画素を出力した場合の出力画素の並びと出力順序を示したものである。１１１は、出力される画素の出力順序を示す。尚、図１１の例では、上側の参照領域が２ライン、下側の参照領域１ライン、左側の参照領域が２カラムの場合を示している。また、バンド画像単位で参照領域を形成して、バンド単位で画像処理を完結するようにしているため、図１１の最下端のライン（枠１１２の下の（２３）（１５）…（３１）のライン）まで読出しを行っている。オーバーラップ領域を繰り返し読み込む再読み込み処理が行われる構成であれば、（２４）（１６）（８）…（２４）のラインまでが読み出し処理による読み出しの対象となる。そして、次のバンドでは、（２２）（１４）…（３０）のラインからのバンド画像がオーバーラップして取得されることになる。
【００７５】
以上のように、第１実施形態によれば、実際に出力する画素範囲よりも小さく、かつ入力画像のサイズによらない、小さいサイズの画素データ保持メモリ２５を使用して所望の参照画像を生成することができる。
【００７６】
＜第２実施形態＞
第１実施形態では、バンド単位に参照画像を生成する処理を省メモリで実装するためのアルゴリズムについて説明した。しかし、すでに図５に示したとおり、１ページの画像は１バンドの画像範囲よりも多くのライン数を持つことが一般的である。そのため、１ページの画像の上端部分では上参照画像および左右参照画像の生成が必要であるが、その後１ページの画像の下端に来るまでは、左右端の参照画像のみを生成する処理のみが必要となる。また、１ページの下端においては、左右参照画像と下参照画像の生成が必要となる。このように、ページに対する周囲の参照画像を生成する場合には、現在処理中のバンドがページのどの位置を処理しているかを管理しなければ、ページに対する周囲の参照画像を生成することはできない。
【００７７】
よって、第２実施形態では、ページ単位での参照画像生成に関する座標管理処理について説明する。図１２は、入力画像全体に対するバンド画像の位置関係について説明するための図である。
【００７８】
１２１は、入力画像全体である。１２２は、入力画像１２１の上端に接する領域を処理するバンド画像である。１２３は、入力画像の上端・下端のいずれにも接していない領域でのバンド画像のひとつである。１２４は、入力画像の下端を含むバンド画像である。バンド画像１２２の領域では、左右の参照画像に加えて上側の参照画像を生成する処理を行わなければならない。
【００７９】
そのため、参照画像生成処理においては、各バンドの入力画像内でのライン位置を管理する必要がある。そこで、第２実施形態では、ページ内のライン位置を示す変数ｐｙを用意し、ｐｙを入力画像の先頭で初期化し、バンド処理が終了するごとに、次のバンド入力先頭ラインまでのライン数をｐｙに加算する。このｐｙを参照することにより、各バンドの入力画像内でのライン位置を管理する。
【００８０】
そして、ｐｙ＝０である場合には、第１実施形態で説明した参照画像の生成処理が行われるように制御する。具体的にはバンド処理の初期化処理である式６〜式９を実行する。
【００８１】
ｐｙが０でなく、なおかつｐｙにバンドライン数を足したものが入力画像の高さライン数を超えない場合には、式７の代わりに下に示す式１６によって初期化を行う。
ｉｙ＝０              ・・・(式１６)
【００８２】
また、ｐｙが入力画像の高さライン数以上でなく、かつ、ｐｙにバンドライン数を足したものが入力画像の高さライン数を超えている場合には、式９の代わりに、下に示す式１７を使用する。
ｉｈ＝バンドライン数−１＋下参照画像    ・・・(式１７)
【００８３】
また、ｐｙが０であってなおかつｐｙにバンドライン数を足したものが入力画像高さライン数を超えている場合には、式９の代わりに下に示す式１８によってihの初期化を行う。
ｉｈ＝バンドライン数−１＋上参照画像＋下参照画像    ・・・(式１８)
【００８４】
また、バンド画像１２３に示した領域では、左右参照画像のみを生成するだけでよい。この場合、バンド処理の先頭では、下に示す式１９，２０，２１，２２によって初期化が行われる。
ｉｘ＝左参照画像×(−１)          ・・・(式１９)
ｉｙ＝０                          ・・・(式２０)
ｉｗ＝入力画像幅−１              ・・・(式２１)
ｉｈ＝バンドライン数−１          ・・・(式２２)
【００８５】
これに対して、バンド画像１２４の領域については、２つの異なる処理内容が必要となる。１つは、上述した左右参照画像の生成であり、他の１つは、入力画像の高さが一般的には１バンドのライン数の倍数とは限らないということに起因する処理である。これはすなわち、バンド画像として入力される画像の下部の画像は、本来処理されるべき画像範囲ではないということが起きるということを意味している。この場合、参照画像生成処理においては、バンド画像の途中のライン以降は、それまでに入力されたラインのデータを用いて参照画像として生成した画素を出力しなければならないということになる。
【００８６】
この状態を図１３に示す。図１３において、１３１は、入力画像の下端を含むバンド処理領域を示している。破線で囲まれた領域１３２は、バンド処理として入力されるライン数のうち入力画像として意味のある範囲を示している。ページ画像を入力する際に、このバンド処理領域１３１の中では、領域１３２に示すラインまでが入力画像として与えられる。その他は、たとえばメモリ上にあらかじめ格納されていたデータが読み出されるなどするため、入力としては不適切な画像領域となっている。
【００８７】
このように、入力されるバンド画像のうち領域１３２のみに入力として扱える画像が格納されており、残りのラインについては領域１３２に示した画像を用いて何らかの画像データを生成し、埋めなければならない参照領域となる。
【００８８】
この場合、単純にはすでに示したとおり折り返し位置にある画素を参照して下参照画素を生成すればよいのであるが、図１３に示す状態では、参照画像を生成するためのデータが不足してしまう。即ち、入力されたバンド画像領域中の有効ライン数１３３のほうが、生成しなければならないライン数１３４を下回る可能性があり、単なる折り返し位置の参照では、参照する画素位置がバンド内に存在しないことがありうる。この場合、矢印１３５に示すように有効画素範囲を行ったりきたりするような参照をしながら出力画素を読み出し、矢印１３６に示すような画素値の出力とすれば、画像の連続性を保ったまま、不足している入力画像並びに参照画像を生成することができる。
【００８９】
＜第３実施形態＞
参照画像を付加する場合に、前記第１実施形態、第２実施形態では、折り返し画像を参照画像としているが、これに限られるものではない。第３、第４実施形態では、第１、第２実施形態と同様の構成において、参照画像として折り返し画像とは異なる画像を適用する場合の例を説明する。例えば、入力画像の上下左右の端部の画素のみを引き伸ばすように参照画像の画素を生成してもよい。この場合、たとえば参照画像生成処理として、折り返し画像による参照画像生成と端部のひきのばしによる参照画像生成をモード指定などで両立させるように構成しても良い。その場合には、折り返しに必要なメモリが実装されていれば単なる参照アドレスの生成方法の切替のみで実現できる。
【００９０】
入力画像の上下左右の端部の画素のみを引き伸ばすように参照画像が生成される様子は図１４に示したとおりである。このような参照画像の生成は、参照領域の各画素位置の画素値が、バンド画像の最も近い画素位置の画素値となるように、参照領域の画素位置を画素データ保持メモリ２５内の格納アドレスへ変換することで実現される。即ち、第１実施形態で示した式１０、１１，１２、１３の代わりに、以下のようにして読み取り位置（Ｘ，Ｙ）を算出すればよい。
【００９１】
Ｘ＝ｉｘ            ・・・(式２３)
Ｙ＝ｉｙ            ・・・(式２４)
ただし、ｉｘが負である場合には、
Ｘ＝０              ・・・(式２５)
とし、ｉｙが負である場合には、
Ｙ＝０              ・・・(式２６)
とする。また、ｉｘがｉｗを超えている場合には、
Ｘ＝ｉｗ            ・・・(式２７)
とし、ｉｙがｉｈを超えている場合には、
Ｙ＝ｉｈ            ・・・(式２８)
とする。以上はつまり、入力画像領域からはみ出した分については、横方向については、０カラム目または最終カラムの画像データのコピーにより参照画像が生成される。また、縦方向については、０ライン目または最終ラインの画像データのコピーにより参照画像生成される。
【００９２】
次に、この場合に必要なメモリサイズと入出力画素の配置について、図１４を用いて説明する。
【００９３】
上記計算方法によって参照される、参照画像を生成するのに必要な画素範囲は、入力画像の最端部の１カラム・１ラインである。従って、第３実施形態では、第１実施形態に示したメモリサイズよりもさらに小さい、下記の式２９によって表されるサイズのメモリを実装すればよい。
(バンド処理可能な最大ライン数)×(１カラム)×画素バイト数  ・・・(式２９)
これを示しているのが図１４の枠１４１である。
【００９４】
図１４の矢印１４２は、入力される画素のクロスバンドデータフローにおける入力順序を表している。この場合、たとえば最初に出力される画素１４４は最初に入力された画素１４３である。
【００９５】
この後、第１実施形態で示した位置計算式により、ｉｘおよびｉｙがしばらくは負の値をとり続けるため、画素１４３（（１）と図示されている画素）が連続で読み出されて出力されていく。その後、iyが０以上の位置になると、順次入力画素の（２）、（３）、（４）・・・の画素が読み出されて出力されていく。次のカラムにおいてもｉｘは以前の入力画素の先頭位置よりも前、すなわち負の位置を読み出そうとするため、再びｉｘは０に置き換えられ、画素（１）から読出しが行われていく。この後、ｉｘが０の場合の処理を開始した後、ｉｙについての読出しが終了したところから順次新たな入力画素を受け入れていく。こうして、次のカラムの入力である（９）、（１０）、（１１）・・・を画素データ保持メモリ２５に書き込んでいくことで、順次カラム単位に参照画像を生成しながら処理を行っていくことができる。
【００９６】
最後に、右参照画像生成処理においては、ｉｘがｉｗを超えた場合として、ｉｘがｉｗに置き換えられるため、最終カラムの画素が繰り返し出力され、読出し処理を完遂することができる。
【００９７】
以上のように、単純に入力画像端部の画素をコピーすることで参照画像を作成する処理を行う場合には、さらに少ないメモリ容量で処理を構成することができ、より低コストな実現が図れる。
【００９８】
また、言うまでもないことであるが、このようなメモリの実装は、最低限の実装サイズを示しており、これ以上のメモリを実装している場合にもなんら問題なく、上記各本実施形態を実現することが可能である。つまり、実装されているメモリ上で参照する範囲を限定して用いる処理を行うことで、この最低メモリ量以上のメモリを実装していてもなんら問題はない。
【００９９】
したがって、たとえば第１実施形態に記載した、折り返し画像により参照画像を生成する処理を行えるメモリ実装においても、第３実施形態で示したような端部画素のコピーによる参照画像生成処理を同様に実施することができる。すなわち、これらの処理を何らかのモード切替手段によって切り替えるように実施できることは、本願の開示から明らかである。
【０１００】
＜第４実施形態＞
第１〜第３実施形態では、参照画像を生成する場合に、単純に１画素のデータ生成に１つの入力画素値を使用しているが、これに限られるものではない。例えば、複数の入力画素値に平均処理を施して得られた画素値を参照画素として出力することもありうる。これは特に、第３実施形態で示したような端部１画素のコピーによる処理において、図１４中の画素（１）のみがたまたま周囲の画素と大きく違う値を持っていた場合の問題を穏やかに解決する場合に用いることができる方法である。
【０１０１】
この場合、平均する画素範囲は１以上の任意の範囲でよいが、実際多くの範囲を平均するのであれば、第１実施形態に示したように折り返し画像を使用すればよいので、平均する画素範囲は数画素程度の範囲とすることが現実的である。
【０１０２】
このような場合、たとえば、前記第３実施形態に示した式２３〜式２８、によって、平均処理を行う際の基点位置を求めることが可能である。第４実施形態では、このようにして求められた基点画素位置を元に、付近の指定された範囲の画素を読み出して画素値の平均を取り、出力画素として出力する処理を行う。即ち、読出しアドレス生成部２７は、参照領域の画素位置に最も近いバンド画像中の画素位置を基点として、所定ライン数及び所定カラム数の範囲の画素値を、画素データ保持メモリ２５から取得するように読出しアドレスを生成する。従って、第４実施形態では、参照領域の１つの画素位置について、画素データ保持メモリ２５の複数の読出しアドレスが生成されることになる。そして、画像出力部２９は、画素読出し部２８が複数の読出しアドレスから読み出した画素値の平均値を、当該参照領域の画素位置の画素値として出力する。
【０１０３】
この場合、必要となる画素保持手段としてのメモリは、
(バンド処理可能な最大ライン数)×（平均するカラム数）×画素バイト数
によってあらわされるものとなる。
【０１０４】
図１５に、第４実施形態についての処理概要を示す。枠１５１は、第４実施形態において必要となるメモリの入力画素位置に対する範囲である。矢印１５２は、クロスバンドフローに沿って入力される画素の入力順序を示す。枠１５３は、参照画素を生成する際に平均を行う範囲を示している。本例では、２カラム×３ライン＝６画素の画素値の平均が用いられる。
【０１０５】
たとえば、枠１５３内において、画素（１）の値のみが異なっているような場合を考える。第３実施形態では、図１４に示すように画素（１）の画素値がそのまま参照画素として８画素分コピーされてしまう。このため、この範囲ではたった一つの異なる値を持つ画素（１）によって、画像処理結果が大きく影響されてしまうなどの弊害が出かねない。
【０１０６】
これに対して、第４実施形態に示すように特定の範囲（枠１５３内）の画素の平均値によって参照画素を生成する方法であれば、本来サンプル数の少ない特異な画素の影響を不当に受けることなく、端部の画像処理結果を得ることができる。
【０１０７】
以上説明したように、上記各実施形態によれば、クロスバンド処理において、処理対象画像の幅、高さに関係ないバンド高さに比例する非常に小さいサイズのメモリを用いて、効率よく入力画像の周囲の参照画素を生成することが可能となる。
【０１０８】
以上、実施形態を詳述したが、本発明は、例えば、システム、装置、方法、プログラムもしくは記憶媒体等としての実施態様をとることが可能である。具体的には、複数の機器から構成されるシステムに適用しても良いし、また、一つの機器からなる装置に適用しても良い。
【０１０９】
尚、本発明は、ソフトウェアのプログラムをシステム或いは装置に直接或いは遠隔から供給し、そのシステム或いは装置のコンピュータが該供給されたプログラムコードを読み出して実行することによって前述した実施形態の機能が達成される場合を含む。この場合、供給されるプログラムは実施形態で図に示したフローチャートに対応したコンピュータプログラムである。
【０１１０】
従って、本発明の機能処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、本発明は、本発明の機能処理を実現するためのコンピュータプログラム自体も含まれる。
【０１１１】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等の形態であっても良い。
【０１１２】
コンピュータプログラムを供給するためのコンピュータ読み取り可能な記憶媒体としては以下が挙げられる。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【０１１３】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムをハードディスク等の記録媒体にダウンロードすることが挙げられる。この場合、ダウンロードされるプログラムは、圧縮され自動インストール機能を含むファイルであってもよい。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明に含まれるものである。
【０１１４】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布するという形態をとることもできる。この場合、所定の条件をクリアしたユーザに、インターネットを介してホームページから暗号を解く鍵情報をダウンロードさせ、その鍵情報を使用して暗号化されたプログラムを実行し、プログラムをコンピュータにインストールさせるようにもできる。
【０１１５】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどとの協働で実施形態の機能が実現されてもよい。この場合、ＯＳなどが、実際の処理の一部または全部を行ない、その処理によって前述した実施形態の機能が実現される。
【０１１６】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれて前述の実施形態の機能の一部或いは全てが実現されてもよい。この場合、機能拡張ボードや機能拡張ユニットにプログラムが書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行なう。
【図面の簡単な説明】
【０１１７】
【図１】第１実施形態による画像処理システム構成例を示すブロック図である。
【図２】第１実施形態による参照画像生成装置の構成例を示すブロック図である。
【図３】バンド画像処理におけるラスタ走査方法とクロスバンド走査方法を説明する図である。
【図４】周辺画素を参照する処理のために必要となる保持領域の、走査方法による違いを説明する図である。
【図５】周辺画素を参照する処理のために必要なページに対する参照画像範囲の例を示す図である。
【図６】折り返しによる参照画像生成に必要な画素保持領域の、走査方法による違いを説明する図である。
【図７】クロスバンド走査方法における画素保持バッファと、参照画像生成時の画素参照方法を説明する図である。
【図８】第１実施形態の参照画像生成部における、入力画素の保持バッファへの書き込み処理を示すフローチャートである。
【図９】第１実施形態の参照画像生成部における、保持バッファからの出力画素の読み出し処理を示すフローチャートである。
【図１０】第１実施形態による参照画像生成部における、出力画素の参照順序の概念図である。
【図１１】第１実施形態による参照画像生成部における、出力画素の座標位置を説明する図である。
【図１２】第２実施形態による、ページ上端、途中および下端におけるバンド位置と、ページ画像範囲との相互関係を説明する図である。
【図１３】第２実施形態における、参照画像生成部におけるページ下端のバンド位置での出力画素の座標位置を説明する図である。
【図１４】第３実施形態による参照画像生成部における、出力画素の座標位置を説明する図である。
【図１５】第４実施形態による参照画像生成部における、出力画素の座標位置を説明する図である。
【図１】
0005209953.tif 000002
【図２】
0005209953.tif 000003
【図３】
0005209953.tif 000004
【図４】
0005209953.tif 000005
【図５】
0005209953.tif 000006
【図６】
0005209953.tif 000007
【図７】
0005209953.tif 000008
【図８】
0005209953.tif 000009
【図９】
0005209953.tif 000010
【図１０】
0005209953.tif 000011
【図１１】
0005209953.tif 000012
【図１２】
0005209953.tif 000013
【図１３】
0005209953.tif 000014
【図１４】
0005209953.tif 000015
【図１５】
0005209953.tif 000016