(57)【特許請求の範囲】
【請求項１】
第１の解像度を有する第１の画像データを、前記第１の解像度と異なる第２の解像度を有する第２の画像データへ変換する画像処理装置であって、
前記第１の画像データを複数の部分領域に分割し、前記部分領域の第１の方向に連続する所定数の画素を、前記部分領域の前記第１の方向に直交する第２の方向へ順に走査することで第１の画素群を入力する入力手段と、
前記第１の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段と、
前記第１の方向において前記参照領域より広く前記部分領域より狭い範囲の前記第１の画像データの画素値と、前記入力手段で入力された前記第１の画素群とを、前記部分領域の第２の方向にわたって格納する格納手段と、
前記格納手段に格納された画素を用いて、前記第２の解像度の画素を前記第１の方向へ前記所定数ずつ連続的に出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項２】
前記所定数をＺｗ、前記参照領域の前記第１の方向における画素数をＦｗとすると、前記格納手段は、前記第１の方向において、少なくともＦｗ＋Ｚｗ−１の画素列を格納する、ことを特徴とする請求項１に記載の画像処理装置。
【請求項３】
第１の解像度を有する第１の画像データを複数のバンド領域に分割して解像度変換を行い、前記第１の解像度よりも高い第２の解像度を有する第２の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するＺｗ（Ｚｗは整数）画素からなる画素群を、前記バンド領域の縦方向へ１画素ずつ順番に移動する走査により、Ｚｗ画素毎に前記第１の画像データを入力する入力手段と、
前記第１の画像データの前記横方向にＦｗ画素、前記縦方向にＦｈ画素の大きさの局所領域における画素値を用いて、前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段と、
前記局所領域を前記横方向へ移動させるのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第１の画像データを格納する格納手段と、
前記格納手段に格納された画像データを用いて、前記第２の解像度の画像を前記横方向へＺｗずつ、前記縦方向へ１画素ずつ順番に移動させて出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項４】
前記格納手段は、Ｆｗ＋Ｚｗ−１の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項３に記載の画像処理装置。
【請求項５】
前記格納手段は、Ｆｗ＋Ｚｗ−１を越えて、かつ、Ｚｗの最小の倍数となる列数の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項３に記載の画像処理装置。
【請求項６】
第１の解像度を有する第１の画像データを複数のバンド領域に分割して解像度変換を行い、前記第１の解像度よりも低い第２の解像度を有する第２の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するＺｗ（Ｚｗは整数）画素からなる画素群を、前記バンド領域の縦方向へ１画素ずつ順番に移動する走査により、Ｚｗ画素毎に前記第１の画像データを入力する入力手段と、
前記第１の画像データの前記横方向にＦｗ画素、前記縦方向にＦｈ画素の大きさの局所領域における画素値を用いて、前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段と、
前記演算手段が、前記第２の画像データの前記横方向へ連続するＺｗ個の画素値を算出するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第１の画像データを格納する格納手段と、
前記格納手段に格納された画像データを用いて、前記第２の解像度の画像を前記横方向へＺｗずつ、前記縦方向へ１画素ずつ順番に移動させて出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項７】
Ｍを任意の整数、前記第２の画像データのＸ座標をＯｘとし、該Ｏｘに前記第１の画像データのＸ座標であるＩｘへ対応付ける関数をＩｘ＝ｆ（Ｏｘ）とし、ｆ（ｘ）の整数部をＦ（ｘ）、（ｆ（ｘ）＋０．５）の整数部をＦ'（ｘ）とすると、
Ｆｗが偶数のとき、前記格納手段は、
0005643576.tif 000004
Ｆｗが奇数のとき、
0005643576.tif 000005
の画素数の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項６に記載の画像処理装置。
【請求項８】
第１の解像度を有する第１の画像データを処理して複数のバンド領域に分割して第１の解像度と異なる第２の解像度を有する第２の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するＺｗ（Ｚｗは整数）画素からなる画素群を、前記バンド領域の縦方向へ１画素ずつ順番に移動する走査により、Ｚｗ画素毎に前記第１の画像データを入力する入力手段と、
前記入力手段で入力したＺｗごとの第１の画像データの局所領域の画素値を参照して、前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段と、
前記局所領域を前記横方向にＺｗ画素に渡って移動できるように画素を提供するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第１の画像データを格納する第１の格納手段と、
前記演算手段に前記第１の画像データのＺｗ個の画素値に対応した前記第２の画像データのＯｗ個の画素値を出力させ、Ｚｗ個の画素からなる画素群が前記縦方向へ１画素ずつ順番に移動するように出力する制御手段と、
前記制御手段が、Ｏｗ個ずつ得られる画素値からＺｗ個ずつを出力するために、前記演算手段の出力を保持する第２の格納手段と
を備えることを特徴とする画像処理装置。
【請求項９】
前記第２の解像度が前記第１の解像度より低い場合には、前記第２の格納手段は、前記バンド領域内のＺｗ−１の列数分を保持する容量を有することを特徴とする請求項８に記載の画像処理装置。
【請求項１０】
前記第２の解像度が前記第１の解像度より高い場合には、前記第２の格納手段は、前記バンド領域内のＯｗ−１の列数分を保持する容量を有することを特徴とする請求項８に記載の画像処理装置。
【請求項１１】
第１の解像度を有する第１の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第１の解像度と異なる第２の解像度を有する第２の画像データの画素値を算出する演算手段を有し、前記第１の画像データを前記第２の画像データへ変換する画像処理装置の制御方法であって、
前記第１の画像データを複数の部分領域に分割し、前記部分領域の第１の方向に連続する所定数の画素を、前記部分領域の前記第１の方向に直交する第２の方向へ順に走査することで第１の画素群を入力する入力工程と、
前記第１の方向において前記参照領域より広く前記部分領域より狭い範囲の前記第１の画像データの画素値と、前記入力工程で入力された前記第１の画素群とを、前記部分領域の第２の方向にわたって格納手段に格納させる格納工程と、
前記格納手段が格納している画素を用いて、前記第２の解像度の画素を前記第１の方向へ前記所定数ずつ連続的に出力するように、前記演算手段を制御する制御工程と、
を備えることを特徴とする制御方法。
【請求項１２】
第１の解像度を有する第１の画像データを複数のバンド領域に分割して解像度変換を行い、前記第１の解像度よりも高い第２の解像度を有する第２の画像データへ変換する、画像処理装置の制御方法あって、
前記画像処理装置は、前記第１の画像データの横方向にＦｗ画素、縦方向にＦｈ画素の大きさの局所領域における画素値を用いて、前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段を有し、
前記制御方法は、
入力手段が、前記バンド領域の前記横方向に連続するＺｗ（Ｚｗは整数）画素からなる画素群を、前記バンド領域の前記縦方向へ１画素ずつ順番に移動する走査により、Ｚｗ画素毎に前記第１の画像データを入力する入力工程と、
格納手段が、前記局所領域を前記横方向へ移動させるのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有するメモリに、前記入力工程で入力された前記第１の画像データを格納する格納工程と、
制御手段が、前記メモリに格納された画像データを用いて、前記第２の解像度の画像を前記横方向へＺｗずつ、前記縦方向へ１画素ずつ順番に移動させて出力するように前記演算手段を制御する制御工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項１３】
第１の解像度を有する第１の画像データを複数のバンド領域に分割して解像度変換を行い、前記第１の解像度よりも低い第２の解像度を有する第２の画像データへ変換する画像処理装置の制御方法であって、
前記画像処理装置は、前記第１の画像データの横方向にＦｗ画素、縦方向にＦｈ画素の大きさの局所領域における画素値を用いて、前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段を有し、
前記制御方法は、
入力手段が、前記バンド領域の前記横方向に連続するＺｗ（Ｚｗは整数）画素からなる画素群を、前記バンド領域の前記縦方向へ１画素ずつ順番に移動する走査により、Ｚｗ画素毎に前記第１の画像データを入力する入力工程と、
格納手段が、前記演算手段で前記第２の画像データの前記横方向へ連続するＺｗ個の画素値を算出するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有するメモリに、前記入力工程で入力された前記第１の画像データを格納する格納工程と、
制御手段が、前記メモリに格納された画像データを用いて、前記第２の解像度の画像を前記横方向へＺｗずつ、前記縦方向へ１画素ずつ順番に移動させて出力するように前記演算手段を制御する制御工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項１４】
第１の解像度を有する第１の画像データを処理して複数のバンド領域に分割して第１の解像度と異なる第２の解像度を有する第２の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するＺｗ（Ｚｗは整数）画素からなる画素群を、前記バンド領域の縦方向へ１画素ずつ順番に移動する走査により、Ｚｗ画素毎に前記第１の画像データを入力する入力工程と、
演算手段が、前記入力工程で入力したＺｗごとの第１の画像データの局所領域の画素値を参照して、前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算工程と、
第１の格納手段が、前記局所領域を前記横方向にＺｗ画素に渡って移動できるように画素を提供するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第１の画像データを格納する第１の格納工程と、
制御手段が、前記演算工程により前記第１の画像データのＺｗ個の画素値に対応した前記第２の画像データのＯｗ個の画素値を出力させ、Ｚｗ個の画素からなる画素群が前記縦方向へ１画素ずつ順番に移動するように出力する制御工程と、
第２の格納手段が、前記制御工程でＯｗ個ずつ得られる画素値からＺｗ個ずつを出力するために、前記演算工程の出力を保持する第２の格納工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項１５】
請求項１１乃至１４のいずれか１項に記載の画像処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、解像度変換を伴う画像処理を実行する画像処理装置、およびその制御方法に関する。
【背景技術】
【０００２】
従来、画像形成を行って出力する際に、空間フィルタ処理などのように処理対象となる画素（以下、「処理画素」と略称する）を含む処理画素の近傍の領域内の画素を用いて演算を行う処理（以下、近傍領域の画素を用いる処理と称す）がある。周辺画素を用いる処理としては、例えば、エッジ強調処理やぼかし処理のような空間フィルタ処理を施す処理がある。
【０００３】
特許文献１および特許文献２は、デジタル画像データを矩形領域（バンド）に分割し、矩形領域ごとに周辺画素を用いる処理を行う技術を開示している。
【０００４】
ここで、図１（ａ）に示す画像データの（主走査方向−副走査方向）座標系に対して、図１（ｅ）に示すように、長さ方向−高さ方向という座標系をバンド領域座標系として定義し、バンドのサイズを、長さ×高さで表現する。（なお、副走査方向は主走査方向に直交しているものとする。）バンドは画像を帯状に分割するのでバンドの長さは、画像データの主走査方向の長さ、もしくは副走査方向の長さの何れかになる。一方、バンドの高さは任意の値をとることができる。ここで、第１の画素群が、主走査方向の第１の方向に連続する所定数の画素である走査単位を、第１の方向と直交する、副走査方向の第２の方向へ順に走査することでバンドメモリに入力されている。
【０００５】
特許文献１では、まず１つ目のバンドに対し、主走査方向の上流端からバンド領域の高さ方向に１画素ずつ順に走査し、これを主走査方向へ１列ずつ繰り返して１つのバンドを走査する。１つのバンドが終わると、副走査方向にある次のバンドも同様に走査を繰り返して画像データを走査する。この走査処理に伴って、空間フィルタ処理を施すため、演算部の前段に遅延メモリを用意する必要がある。１つの処理画素に対する空間フィルタの参照領域を[Ｆｗ×Ｆｈ]とすると、遅延メモリの容量はバンド内の(Ｆｗ−１)列分となる。ここで、領域[Ａ×Ｂ]は、横幅（長さ方向）の画素数がＡピクセル、縦幅（高さ方向）の画素数がＢピクセルである矩形領域を指すとする。ここで用いられる遅延メモリは、演算部で参照する[Ｆｗ×Ｆｈ]の領域の画素を順次提供する。この場合、（バンドの端部を除いて）１画素の入力につき１画素の出力が得られ、出力される画素の順序は走査順序（入力順）と同一となる。また、遅延メモリの容量は、フィルタの参照領域とバンドの高さに依存する。
【０００６】
特許文献２では、まずバンド領域の長さ方向に対して連続する２画素以上の走査単位（以下、バンド領域の長さ方向に連続する最小の走査幅を単に走査単位と称する）が設定され、走査単位の画素を１画素ずつ主走査方向へ順に走査し、これを副走査方向へバンドの高さ分繰り返して走査し、さらに主走査方向の下流側も同様に繰り返すことで１つのバンドを走査する。そして、副走査方向へ各バンドを走査することで１つの画像データを走査する。これにより、１画素あたりの遅延メモリへのアクセス数が削減される。この技術で一般的な空間フィルタ処理を施すには、特許文献１と同様にバンド内の(Ｆｗ―１)列を保持可能な遅延メモリを演算部前段に用意する必要がある。この遅延メモリがフィルタ演算部に[Ｆｗ×Ｆｈ]の画素領域を提供し、１画素を出力する。このとき、（バンドの端部を除いて）１画素の入力につき１画素の出力が得られ、出力の走査順序は入力の走査順序と同一となる。
【０００７】
以降の説明では、走査単位の画素数をバンド長さ方向にＺｗピクセルとする。このとき１つのバンドをＺｗ画素列ごとに区切った領域をバンドカラムと表現する。なお、Ｚｗ＝１とすると特許文献１と同じ走査順序となり、以降ではＺｗを１以上の整数として、特許文献１の走査方法と特許文献２の走査方法とを統一的に扱う。
【０００８】
ここで解像度変換手法について簡単に説明する。解像度変換手法は、補間演算による手法が一般的に知られている。この手法では、空間フィルタ処理と同様に処理画素の近傍に位置する原画像中の参照画素の画素値が用いられる。図２を用いて補間演算による拡大処理（高解像度変換処理）を説明する。図において、実線１３１は拡大前の画像の画素境界を示し、破線１３２は拡大後の画像の画素境界を示す。また領域１３０は処理対象の画素を示している。区域ａ、ｂ、ｃ、ｄ、ｅは、それぞれ原画像の１行を示し、区域ｆ、ｇ、ｈ、ｉ、ｊは、それぞれ原画像中の１列を示す。
【０００９】
例えば、バイリニア補間法では、処理画素近傍に位置する[２×２]の参照画素が用いられる。すなわち処理画素１３０-１の画素値を算出するために、（ｂ−ｃ）行と（ｈ−ｉ）列の[２×２]領域内の画素値を参照する。一方、処理画素１３０-２の画素値算出にも、画素１３０-１の場合と同じ（ｂ−ｃ）行と（ｈ−ｉ）列の[２×２]領域内の画素値を参照する。
【００１０】
また、一般的なバイキュービック補間法の場合には、画素１３０-１および画素１３０-２の画素値を算出するために、（ａ―ｄ）行と（ｇ−ｊ）列の[４×４]領域内の画素値を参照する。以上のように拡大処理では、異なる処理画素の演算に同一の画素領域を参照することがある。
【００１１】
以降では、解像度変換処理における拡大率と縮小率をスケールとして扱う。ここで、スケールは長さの比である。スケールが１より大きい時は拡大（高解像度化）であり、１より小さい時は縮小（低解像度化）である。例えば長さ方向および高さ方向のスケールが共に２の拡大処理の場合（以下は単にスケールが２である解像度変換処理と略す）、画像の端部を除いて同一の参照領域から[２×２]の処理画素が算出される。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特許第３７３３８２６号公報
【特許文献２】特開２００９−０３７３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
以上のような、スケールが２である解像度変換処理に上記の走査方法を適用すると、Ｚｗ画素の入力ごとに、[２Ｚｗ×２]の出力が得られる。すなわち入力された画素の順序に従ってそのまま出力すれば、出力される走査単位の画素数（主走査方向に連続して出力配置する画素数）は入力の走査単位の画素数の２倍となる。同様にスケールが１/２の縮小処理の場合には、出力走査単位の画素数は１/２倍となる（入力走査単位の画素数が偶数の場合）。このように、出力走査単位の画素数はスケールによって異なるため、特許文献１や特許文献２に開示の構成を用いるとしても、解像度変換後の画素データを扱う後段のモジュールは、スケールを考慮して回路を構成する必要があり、回路規模の増大につながっていた（値の大きいスケールを考慮して遅延メモリを用意する必要があるため）。
【００１４】
本発明は、上記課題に鑑みてなされたもので、解像度変換のように処理前後で画素数が変わる場合でも、後段のメモリの規模に影響を与えない画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記の目的を達成するための本発明の一態様による画像処理装置は以下の構成を備える。すなわち、
第１の解像度を有する第１の画像データを変換し、前記第１の解像度と異なる第２の解像度を有する第２の画像データへ変換する画像処理装置であって、前記第１の画像データを複数の部分領域に分割し、前記部分領域の第１の方向に連続する所定数の画素を、前記部分領域の前記第１の方向に直交する第２の方向へ順に走査することで第１の画素群を入力する入力手段と、前記第１の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第２の解像度に対応した前記第２の画像データの画素値を算出する演算手段と、前記第１の方向において前記参照領域より広く前記部分領域より狭い範囲の前記第１の画像データの画素値と、前記入力手段で入力された前記第１の画素群とを、前記部分領域の第２の方向にわたって格納する格納手段と、前記格納手段に格納された画素を用いて、前記第２の解像度の画素を前記第１の方向へ前記所定数ずつ連続的に出力するように前記演算手段を制御する制御手段とを備えることを特徴とする。
【発明の効果】
【００１６】
本発明によれば、解像度変換を伴う画像処理において入力と出力の走査単位の画素数を変えないことができるので、走査単位の画素を保持する回路規模の増大を抑えることができる。
【図面の簡単な説明】
【００１７】
【図１】一般的な画像処理の画素の走査方法を示す図である。
【図２】補間演算における画素の位置関係を示す図である。
【図３】実施形態１の画像処理装置の概略構成を示す図である。
【図４】画素の走査方法を示す図である。
【図５】解像度変換のある場合の画像処理方法を示す図である。
【図６】列遅延部の動作概念を示す図である。
【図７】制御部の動作概念を示す図である。
【図８】ブロックレジスタおよび補間演算部の動作を示す図である。
【図９】縮小時の画素の位置関係を示す図である。
【図１０】実施形態２による画像処理装置の概略構成を示す図である。
【図１１】後段の列遅延部の動作を示す図である。
【発明を実施するための形態】
【００１８】
＜実施形態１＞
図３に、本発明の実施形態１の補間演算による解像度を上げるための拡大処理モジュールの概略構成を示す。図３に示すように、画像処理装置１００は、ＦＩＦＯ（Ｆａｓｔ  Ｉｎ  Ｆａｓｔ  Ｏｕｔ）２００、格納部である列遅延部２１０、ブロックレジスタ２２０、補間演算部２３０および制御部２４０を備える。すなわち、ＦＩＦＯ２００に入力される第１の画像データは、画像処理装置１００により、解像度が変換され、第２の画像データとして補間演算部２３０より出力される。イネーブル信号２６１は、ＦＩＦＯ２００の動作をコントロールする。制御部２４０は、列遅延部２１０の有するＳＲＡＭ（不図示）のアドレス２６２ａ、出力セレクト信号２６２ｂおよびライトイネーブル信号２６２ｃを列遅延部２１０へ出力する。また、制御部２４０は、シフト信号２６３ａおよび出力ブロックセレクト信号２６３ｂを、ブロックレジスタ２２０へ出力し、補間パラメータ２６４を補間演算部２３０へ出力する。
【００１９】
本実施形態では、補間演算部２３０が参照する画素数は[４×４]とする。解像度変換を行わない空間フィルタの場合、列遅延部２１０は部分領域（バンド）内の画素列の３列分の画素を保持する容量を必要とするが、本実施形態では、解像度の変換するため、バンド内の画素列の７列分の画素を保持する容量を用意する。このように遅延部２１０のメモリ容量を増やすことにより、入力と出力の所定の走査単位の画素数が一致するように、補間演算部２３０へ[４×４]の参照領域を提供できるように処理することを以下に示す。
【００２０】
図１において、既に主走査について述べたように、バンドメモリの第１の画素群が、主走査方向の第１の方向に連続する所定数の画素である走査単位を、第１の方向と直交する、副走査方向の第２の方向へ順に走査することで、メモリに入力されている。まず、入力および出力の走査順序は、図４の通りとする。図１の各々において、主走査方向の第１の方向に連続する所定数の画素である走査単位を、第１の方向と直交する、副走査方向である第２の方向へ順に走査することで第１の画素群が入力されている。ここで、出力の走査順序とは２次元平面に出力画素を配置する順序のことを示す。図４（ａ）は、デジタル画像データを分割する複数のバンド領域から取り出されたバンド領域３１０に対する入力バンドカラム３２０を示す。また、図４（ｂ）は、入力されたバンド領域内の画素を処理する画像処理装置１００を示す。更に図４（ｃ）は、画像処理装置１００から出力された、出力バンド領域３３０における出力バンドカラム３４０を示す。第１の画素群として、入力走査単位をＩｗ個の画素、画像処理装置１００の出力走査単位をＯｗ個の画素とすると、図４に示すよう所定数の出力走査単位が入力走査単位と等しくなるように、Ｉｗ＝４の場合に、Ｏｗ＝４になるように処理を行う。
【００２１】
図５は、本実施形態の画像処理方法を説明する図である。図において、斜線で囲まれた領域３１０はバンド領域を示す。また処理画素を処理するために参照する領域である参照画素領域４７１は、[４×４]の領域であり、この参照画素領域４７１の画素値が補間演算部２３０へ送られる。この走査により４画素の画素値が列遅延部２１０へ入力される。入力走査順序４５１は、入力画素を走査する順序を示す。画素領域４６０は、列遅延部２１０に保持されている画素領域を示す。また画素領域４７０は、ブロックレジスタ２２０に保持されている[７×４]の画素領域を示す。更に、列ａ、ｂ、・・・、ｋは、それぞれバンド内の列を識別している。
【００２２】
補間演算部２３０の出力走査単位Ｏｗを４にするために、処理画素と参照領域４７１との対応をとり、参照領域４７１の列をずらしながら補間演算部へ入力する。ここで、出力の１走査単位に対応する参照画素領域４７１が、（ｂ−ｅ）列、（ｃ−ｆ）列、（ｄ−ｇ）列、（ｅ−ｈ）列であるとする。この場合、（ｅ−ｈ）列を参照するときにはｈ列が列遅延部の画素領域４６０-１に無いため、走査単位４５０の入力領域（ｈ−ｋ）を受け取る。
【００２３】
（ｅ−ｈ）列を参照領域とする処理画素以外に、その右隣に位置する処理画素も同じ（ｅ−ｈ）列を参照する可能性がある。この右隣の画素は、次の出力バンドカラムに属するため、（ｅ−ｈ）列を列遅延部２１０の画素領域４６０-２に保持しておく。また走査された画素のうちの（ｉ−ｋ）列は、次のバンドカラムを出力する際に参照するので、列遅延部２１０の画素領域４６０-２に保持しておく。したがって、次のバンドカラムの出力のために、列遅延部２１０の画素領域４６０-２に（ｅ−ｋ）列を保持しておく。
【００２４】
以上のような列遅延部２１０への画素値を保持する制御により、補間演算部２３０の出力走査単位が４になるように参照画素領域を提供することが可能となる。すなわち、スケールが変わっても出力走査単位の画素数を４にするには、バンド内の７列分を保持可能な容量が列遅延部２１０には必要である。
【００２５】
次に、ＦＩＦＯ２００、列遅延部２１０、ブロックレジスタ２２０、補間演算部２３０および制御部２４０の各サブモジュールの動作を説明する。
【００２６】
モジュールの外部から入力された画素データは、まずＦＩＦＯ２００へ入力され、タイミングの調整が行われる。制御部２４０から受け取るイネーブル信号２６１が有効のときに、１走査単位の画素値（主走査方向に連続する４つの画素値）がＦＩＦＯ２００内にあれば、この走査単位の画素値を列遅延部２１０へ送る。図６は、列遅延部２１０のメモリの領域や位置を示す。図６には、バンド領域３１０、ＳＲＡＭ４２０、入力画素４２１、入力画素のバンドにおける位置４２３、バッファ的に使用されるＳＲＡＭ４２０からの読み出しルート４２４がそれぞれ示されている。また図６には、読み出した画素のバンドの位置４２５、連結された画素群４２６、ＳＲＡＭ４２０への書き込みルート４２７、セレクタ４２９および出力画素４３０がそれぞれ示されている。ＳＲＡＭ４２０の１ワードは７画素であり、バンドの長さ方向（横方向）に連続した７つの画素データを読み書きする。ワード数は入力バンド３１０の高さ分の画素数に相当する。
【００２７】
アドレス２６２ａは、画素データの高さ方向（縦方向）における座標として制御部２４０で求められる。そして、アドレス２６２ａが列遅延部２１０へ送られると、列遅延部２１０はＦＩＦＯ２００から受け取った１走査単位の４つの画素データ（図６、４２１）とＳＲＡＭから読み出した１ワード分の７つの画素データ（図６、４２４）とを合わせ、バンドの長さ方向に連続した１１画素を格納する（図６、４２６）。そして列遅延部２１０は、出力セレクト信号２６２ｂに基づいて選択した７画素、もしくはＳＲＡＭから読み出した１ワード分の７つの画素データをブロックレジスタ２２０ヘ順次送る（図６、４３０）。
【００２８】
図５では（ｂ−ｈ）列中の７画素がブロックレジスタ２２０へ送られる。どの画素データをブロックレジスタ２２０へ出力するかは、制御部２４０から受け取る出力セレクト信号２６２ｂにて決定される。また、ＦＩＦＯ２００から画素データを受け取った場合（ライトイネーブル信号２６２が有効の場合）には、受け取った４画素とこの４画素に対して長さ方向へ連続する列遅延部２１０のＳＲＡＭから読み出した３画素とを連結してＳＲＡＭに書き込む。図５の例では、（ｅ−ｋ）列中の７画素をＳＲＡＭに書き込む。
【００２９】
ブロックレジスタ２２０は、列遅延部２１０からバンドの長さ方向に連続した７つの画素データを受け取り、バンドの高さ方向に４行分の計最大[７×４]の画素データを一時的に保持する。制御部２４０からのシフト信号２６３ａが有効のときに、ブロックレジスタ２２０は、１行分を順番に移動させる。制御部２４０から受け取るブロックセレクト信号２６３ｂによって、保持している[７×４]の画素から選択された[４×４]の画素を選択し、選択した画素を補間演算部２３０へ送る。
【００３０】
補間演算部２３０では、ブロックレジスタ２２０から受け取った[４×４]の画素データに対して補間演算を実行し、１つの画素データを出力する。（ただし、同じ[４×４]の画素を参照して別の画素データを出力することもある。）補間演算部２３０は、補間演算の係数となるパラメータ２６４を制御部２４０から受け取る。
【００３１】
制御部２４０は、ハンドシェーク通信により不図示の外部装置と画像データの授受を行う。制御部２４０は入力画素の座標情報および処理対象画素の座標情報を管理する管理部（不図示）を備える。管理部は、入力および出力の画素数を数えることで座標情報を得る。制御部２４０はこれらの座標情報に基づき、ＦＩＦＯ２００への制御信号イネーブル信号２６１、列遅延部２１０のアドレス２６２ａ、出力セレクト信号２６２ｂおよびライトイネーブル信号２６２ｃを生成する機能を備える。また制御部２４０は、ブロックジレスタ２２０のシフト信号２６３ａ、出力ブロックセレクト信号２６３ｂ、補間演算部２３０のパラメータ２６４を生成する機能を備える。
【００３２】
次に、制御部２４０における各信号の生成方法を説明する。いま、出力画像における画素データのＸ座標をＯｘ、Ｙ座標をＯｙとし、これに対応付けられた入力画像における画素データのＸ座標をＩｘ、Ｙ座標をＩｙとする。また、出力画像の座標(Ｏｘ、Ｏｙ)を入力画像の座標系にマッピングした位置の座標を(Ｃｘ、Ｃｙ)=(ｆ（Ｏｘ）、ｇ（Ｏｙ）)とする。またスケールをＳとすると、例えば、ｆ（ｘ）＝ｘ／Ｓ、ｇ（ｙ）＝ｙ／Ｓである。更に、ｆ（ｘ）、ｇ（ｙ）の整数部をそれぞれＦ（ｘ）、Ｇ（ｙ）とする。すなわち、出力画像の座標(Ｏｘ、Ｏｙ)の処理画素を算出するのに参照する入力画素の座標は、Ｆ（Ｏｘ）−１≦Ｉｘ≦Ｆ（Ｏｘ）＋２、かつＧ（Ｏｙ）−１≦Ｉｙ≦Ｇ（Ｏｙ）＋２を満たす１６点となる。
【００３３】
ここで、図７を用いて、バンドカラムとして画素データを出力する制御を示す。図において、全体のバンドカラム５００における２つのバンドカラム５００−１、５００―２は出力画像におけるバンドカラムである。点線は、入力画像の画素の境界を示している。画素Ｐ１は、(Ｏｘ、Ｏｙ)＝（４Ｍ、Ｎ）(ここでＭ、Ｎは０以上の整数)を満たすとする。
【００３４】
いま、出力する際の走査単位の画素数Ｏｗは４なので、Ｐ１は出力バンドカラムの最左列に位置する。Ｐ１の後に処理される画素座標は、(４Ｍ＋１、Ｎ)、(４Ｍ＋２、Ｎ)、(４Ｍ＋３、Ｎ)、そして次の行に移り(４Ｍ、Ｎ＋１)、―――・・・、となる。これらの座標に、それぞれＰ２、Ｐ３、Ｐ４、Ｐ５、―――・・・が対応する。
【００３５】
ここで、1ビットの信号であるカラムアドバンス信号、ロウアドバンス信号、バンドカラムアドバンス信号を定義する。主走査方向に出力走査単位の画素を連続的に出力する際、ある処理画素を出力する際に出力走査単位に達しておらず、かつＦ（Ｏｘ）＋１＝Ｆ（Ｏｘ＋１）が成り立つ場合(例えば図７の画素５０１)に、参照画素領域をＸ方向に１つだけずらす必要がある。よって、これが成り立つ場合はカラムアドバンス信号を有効にし、成り立たない場合はカラムアドバンス信号を無効にする。
【００３６】
ある処理画素を出力する際に出力走査単位に達し、かつ、Ｇ（Ｏｙ）＋１＝Ｇ（Ｏｙ＋１）が成り立つ場合(例えば図７の画素Ｐ４)に、参照画素領域をＹ方向に１つだけずらす必要がある。このとき、ロウアドバンス信号を有効にし、この時以外はロウアドバンス信号を無効にする。
【００３７】
次に、Ｐ１の左に位置し、出力バンドコラム５００−１に属する座標（４Ｍ−１、Ｎ）の画素Ｑを考える。Ｉｎｔ（Ｆ（４Ｍ−１）／４＋０．５）＋１＝Ｉｎｔ（Ｆ（４Ｍ＋３）／４＋０．５）(関数Ｉｎｔ（ｘ）はｘの整数部を返す値)が成り立つ時、Ｑの処理に必要な入力バンドカラムと、Ｐ３の処理に必要な入力バンドカラムが異なることを意味する。つまり、バンドカラム５００-２に必要な参照画素がＳＲＡＭ内に全て揃っていないので、次の入力バンドカラムを受け取る必要がある。このとき、バンドカラムアドバンス信号を有効にする。一方で次の入力バンドカラムを受け取る必要がない場合はバンドカラムアドバンス信号を無効にする。バンドカラムアドバンス信号は１バンドカラム内で同じ値をとる。またこのとき、ＦＩＦＯ２００へのイネーブル信号２６１および列遅延部２１０へのライトイネーブル信号２６２ｃは、バンドカラムアドバンス信号が有効で、かつロウアドバンス信号が有効のときに有効にする。
【００３８】
列遅延部２１０への出力セレクト信号２６２ｂは、出力走査単位の最右の画素(例えばＰ４)処理時に参照される４列と、その左に位置する３列とを選択されるように制御する。すなわち、選択される画素のＸ座標が、Ｆ（４Ｍ＋３）−４≦Ｉｘ≦Ｆ（４Ｍ＋３）＋２を満たす画素を選択する。
【００３９】
列遅延部２１０の読み出し時および書き込み時のアドレス２６２ａは、Ｇ（Ｎ）＋２である。ブロックレジスタ２２０へのシフト信号２６３ａは、ロウアドバンス信号が有効のときに有効にする。ブロックレジスタ２２０ヘの出力ブロック選択信号２６３ｂは、まずＰ１処理時に、Ｆ（４Ｍ＋３）＝Ｆ（４Ｍ）＋３であれば、左から１列目-４列目を選択する。また、Ｆ（４Ｍ＋３）＝Ｆ（４Ｍ）＋２であれば、左から２列目-５列目を選択する。そして、Ｆ（４Ｍ＋３）＝Ｆ（４Ｍ）＋１であれば、左から３列目-６列目を選択し、Ｆ（４Ｍ＋３）＝Ｆ（４Ｍ）であれば、左から４列目-７列目を選択する。
【００４０】
Ｐ２−Ｐ４の処理時は、カラムアドバンス信号が有効の場合に、選択するブロックを右に１つだけずらす。カラムアドバンス信号が無効の場合には、前に処理した画素(走査単位内の１つ左の画素)と同じブロックを選択する。補間演算部２３０へ送られるパラメータ２６４は、入力画素の座標と処理画素の座標との位相差ｆ（Ｏｘ）−Ｆ（Ｏｘ）およびｇ（Ｏｙ）−Ｇ（Ｏｙ）を求め、変換のテーブルを参照して求められる。
【００４１】
図８は、ブロックレジスタ２２０と補間演算部２３０の構成を示す。７つの画素群４３０は、列遅延部２１０から受け取られ、ブロックレジスタ２２０において、レジスタ２２１は、７つの画素を保持する。そして、レジスタに保持された画素を選択するセレクタ２２２を備える。補間演算部２３０は、パラメータ２３１、乗算器２３２、加算器２３３、パラメータ２３４、乗算器２３５および加算器２３６を備える。
【００４２】
ブロックレジスタ２２０は、制御部からシフト信号２６３ａを受け取ると、レジスタ２２１内に保持している画素データを図示のようにシフトさせる。レジスタ２２１内の画素データは、セレクタ２２２によって[７×４]の画素群から[４×４]の画素群が選択され、補間演算部２３０へ送られる。図７で述べたように、解像度変換後の出力データをＰ１からＰ４までのＺｗずつにするために、図３の制御部２４０が、図８のセレクタ２２２−１〜２２２−４へ出力ブロックセレクト信号２６３ｂを生成している。
【００４３】
補間演算部２３０へ入力された画素データは、乗算器２３２にてそれぞれパラメータ２３１が乗算される。パラメータ２３１は、制御部２４０でＸ方向の位相差ｆ（Ｏｘ）−Ｆ（Ｏｘ）から求められる。乗算結果は、加算器２３３にてそれぞれ行ごとに加算される。加算結果は、乗算器２３５にてそれぞれパラメータ２３４が乗算される。パラメータ２３４は、制御部２４０でＹ方向の位相差ｇ（Ｏｙ）−Ｇ（Ｏｙ）から求められる。乗算結果は加算器２３６にて全て加算される。以上により、補間結果が算出され、補間演算部２３０から演算出力として出される。
【００４４】
このようにして、画像処理装置１００において、第１の解像度を有する画像データは、ＦＩＦＯ２００において入力走査単位毎に取り込まれ、補間演算部２３０で第２の解像度へ変換されて入力走査単位と同じ画素数となる、出力走査単位毎に出力される。以上のように、本実施形態では、解像度変換にも対処できるように、演算部前段の列遅延部２１０の容量を一般的な空間フィルタで必要とされる列分から増やし、出力の走査単位の画素数を入力の走査単位の画素数と同じにすることができた。なお、上記実施形態においては補間演算部２３０での参照画素数（局所領域の大きさ）を[４×４]としたがこれに限られるものではなく、任意の[ＦＷ×Ｆｈ（Ｆｗ、Ｆｈは２以上の整数）で成り立つ。すなわち、横方向にＦｗ画素、縦方向にＦｈ画素の大きさの局所領域を適用することができる。また、上述の実施例では入力走査単位の画素数を４としたが、本発明は任意のＺｗ画素毎に入力する走査に対して適用できる（Ｚｗは１以上の整数）。このとき、列遅延部２１０の列の容量は（Ｆｗ＋Ｚｗ−１）列となる。
【００４５】
また、本実施形態では、拡大の場合（解像度をあげる場合）を示したが、縮小の場合にも同様に成り立つ。拡大の場合と同様に、近傍領域[４×４]の画素データを参照し、補間演算を行うとする。例として、図９にスケールが４/９の場合における入力画像と出力画像の関係を示す。図において、太線１１３は出力画像の画素境界、細線１１１は入力画像の画素境界、走査単位１１４は出力画像中の１走査単位、参照領域１１２は、走査単に１１４の演算に必要な原画像中の領域である。
【００４６】
出力走査単位１１４における最左の画素の座標を（４Ｍ、Ｎ）とすると、参照領域１１３は、Ｘ座標がＦ（４Ｍ）−１≦Ｉｘ≦Ｆ（４Ｍ＋３）＋２を満たす領域である。この場合、列遅延部２１０のＳＲＡＭは、Ｆ（４Ｍ）−１からＦ（４Ｍ＋３）+１列まで保持可能である必要がある。ただし、全ての処理画素に対して参照領域が全く重ならない場合、１出力走査単位に対応する参照領域の列数は１６であるから、必要な列遅延部の容量は最大で１５列分である。すなわち、列遅延部２１０に必要な容量は、F(４Ｍ＋３)−F(４Ｍ)＋３(Ｍ＝０、１、２、---)の最大値と、１５との小さい方の値とを合わせた列分となる。一般には、Ｆｗが偶数のとき、（１）式に示す列分であり、Ｆｗが奇数のとき、（２）式で示す列分となる。ここで、Ｆ'（ｘ）は（ｆ（ｘ）＋０．５）の整数部である。
【００４７】
0005643576.tif 000002
（１）
0005643576.tif 000003
（２）
また、上述した拡大に必要な列遅延部２１０の容量と縮小で必要な列遅延部２１０の容量とを比較し、大きい方の値の列分の容量を備えることで、拡大縮小の両方に対応可能となる。
【００４８】
＜実施形態２＞
実施形態１では、一般の空間フィルタの場合に比べて補間演算前段の列遅延部の容量を増やし、後段には列遅延部を置かなかった。実施形態２では前段の列遅延部の容量は特許文献２で記載されているように、空間フィルタの列幅、Ｆｗに対応した(Ｆｗ−１)列分であるとする。すなわち、前段の列遅延部は、実施形態１でにおける（Ｆｗ＋Ｚｗ−１）列の容量でなく、空間フィルタの処理のための（Ｆｗ−１）列分とする。実施形態２では、補間演算部で解像度変換が行われて、補間演算部から、ＦＩＦＯ２００の入力走査単位と異なる単位の画素出力が出される。この出力走査単位を入力走査単位と同じにするために、後段にも第２の列遅延部を置く。図１０に本実施形態における解像度変換モジュールの構成例を示す。実施形態１の図３で、ＦＩＦＯ２００、ブロックレジスタ２２０、補間演算部２３０および制御部２４０について既に説明しているので、ここでの説明は省略する。図示にように、実施形態１での第１の格納手段である列遅延部２１０のほかに、第２の格納手段である列遅延部２５０が新たに追加されている。
【００４９】
いま、入力走査単位の画素数Ｉｗを４とし、Ｘ方向のスケールを１．５と仮定する。列遅延部２１０は、本実施形態では、前段の列遅延部２１０は、（Ｆｗ＋Ｚｗ−１）の７列対応でなく、空間フィルタのための（Ｆｗ−１）、すなわち３列対応である。従って補間演算部２３０から出力される走査単位の画素数Ｏｗは６となる。本実施形態では、第２の列遅延部２５０で、走査単位の画素数を６から４に変換し、外部に出力する。なお、Ｏｗは、画像中で一様とは限らない。例えば、Ｘ方向のスケールが１．４であれば、Ｏｗは５の場合と６の場合がある。
【００５０】
図１１を用いて、第２の列遅延部２５０の動作を説明する。図１１（ａ）において、列遅延部２５０への入力画像６００が示されている。図１１（ｂ）において、ＳＲＡＭ６１０が示され、図１１（ｃ）において列遅延部２５０の出力画像６２０が示される。
【００５１】
いま、ＳＲＡＭ６１０の容量は、５列分とする。このとき、図１１（ａ）の最初のバンドカラムでは、入力６０１に対して出力を図１１（ｃ）の出力６２１として出力し、入力６０２に対応する画素データをＳＲＡＭ６１０に書き込む。
【００５２】
入力画像６００の次のバンドカラムでは、入力６０２をＳＲＡＭ６１０から読み出し、入力６０３と連結して、出力画像６２０の出力６２２として出力する。つぎの入力６０４は、ＳＲＡＭ６１０に書き込まれる。入力６０２および入力６０３の出力後、入力６０４をＳＲＡＭ６１０から読み出し、出力画像６２０の出力６２３として出力する。以上の走査を繰り返すことにより、出力の走査単位の画素数を４に変換する事ができる。
【００５３】
一般に、拡大処理などにより走査単位の画素数が増えた画像に対し、後段の第２の列遅延部にあるＳＲＡＭを用いて走査単位の画素数ＯｗをＩｗに減らす場合、必要なＳＲＡＭ６１０の容量は、(Ｏｗ―１)の最大値の列数分である。一方、縮小処理などにより走査単位の画素数が減った画像に対し、後段の第２の列遅延部にあるＳＲＡＭを用いて走査単位の画素数ＯｗをＩｗに増やす場合、必要なＳＲＡＭ６１０の容量は、（Ｉｗ−１）列分である。
【００５４】
以上のように、実施形態２では、補間演算部の後段に第２の列遅延部を備えることで、解像度変換のための拡大や縮小の処理を行っても、入力と出力の列数を同一にすることが可能なことを示した。
【００５５】
＜実施形態３＞
実施形態１では、列遅延部２１０のＳＲＡＭ容量を（Ｆｗ＋Ｚｗ−１）列分としたが、本実施形態では列遅延部２１０のＳＲＡＭ容量を、（Ｆｗ＋Ｚｗ−１）列分を越え、かつ「Ｚｗの最小の倍数」列分に設定する。例えば、Ｆｗ＝４でＺｗ＝４のとき、（Ｆｗ＋Ｚｗ−１）列分を越え、かつ「Ｚｗの最小の倍数」である８列分のＳＲＡＭ容量を備える。この構成をとることで、ＳＲＡＭ内にどの列を保持するかの制御は実施形態１と同様であるが、制御部２４０は、画素の走査をＺｗ個（Ｚｗ列）の単位で行うことができるので、制御部２４０の走査が簡易になるという長所がある。
【００５６】
以上のように、列遅延部２１０のＳＲＡＭ容量を（Ｆｗ＋Ｚｗ−１）列分を越え、かつ「Ｚｗの最小の倍数」列分の設定により、制御部２４０の走査が簡易となり、解像度変換の拡大や縮小処理を行っても、入力と出力の列数を同一にすることが可能である。
【００５７】
＜その他の実施例＞
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【図１】
0005643576.tif 000006
【図２】
0005643576.tif 000007
【図３】
0005643576.tif 000008
【図４】
0005643576.tif 000009
【図５】
0005643576.tif 000010
【図６】
0005643576.tif 000011
【図７】
0005643576.tif 000012
【図８】
0005643576.tif 000013
【図９】
0005643576.tif 000014
【図１０】
0005643576.tif 000015
【図１１】
0005643576.tif 000016