画像処理装置およびその制御方法
【課題】画像処理において解像度変換のように内部で処理する画素数が変わる場合でも、後段の処理に影響を与えないように、入力と出力の走査単位の画素数が変わらない画像処理装置の技術を提供する。
【解決手段】第1の解像度を有する第1のデータを処理して複数のバンド領域に分割して第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置は、バンド領域の横方向に連続するZw(整数)画素からなる画素群を、バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力し、第1画素を第1解像度から第2の解像度への変換に必要な画素列と、縦方向に前記バンド領域の画素行とを格納できるバッファに、入力された第1の画像データを格納し、バッファに格納された画像データを用いて、第2の画像の横方向へZwずつ演算出力する。
【解決手段】第1の解像度を有する第1のデータを処理して複数のバンド領域に分割して第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置は、バンド領域の横方向に連続するZw(整数)画素からなる画素群を、バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力し、第1画素を第1解像度から第2の解像度への変換に必要な画素列と、縦方向に前記バンド領域の画素行とを格納できるバッファに、入力された第1の画像データを格納し、バッファに格納された画像データを用いて、第2の画像の横方向へZwずつ演算出力する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、解像度変換を伴う画像処理を実行する画像処理装置、およびその制御方法に関する。
【背景技術】
【0002】
従来、画像形成を行って出力する際に、空間フィルタ処理などのように処理対象となる画素(以下、「処理画素」と略称する)を含む処理画素の近傍の領域内の画素を用いて演算を行う処理(以下、近傍領域の画素を用いる処理と称す)がある。周辺画素を用いる処理としては、例えば、エッジ強調処理やぼかし処理のような空間フィルタ処理を施す処理がある。
【0003】
特許文献1および特許文献2は、デジタル画像データを矩形領域(バンド)に分割し、矩形領域ごとに周辺画素を用いる処理を行う技術を開示している。
【0004】
ここで、図1(a)に示す画像データの(主走査方向−副走査方向)座標系に対して、図1(e)に示すように、長さ方向−高さ方向という座標系をバンド領域座標系として定義し、バンドのサイズを、長さ×高さで表現する。(なお、副走査方向は主走査方向に直交しているものとする。)バンドは画像を帯状に分割するのでバンドの長さは、画像データの主走査方向の長さ、もしくは副走査方向の長さの何れかになる。一方、バンドの高さは任意の値をとることができる。ここで、第1の画素群が、主走査方向の第1の方向に連続する所定数の画素である走査単位を、第1の方向と直交する、副走査方向の第2の方向へ順に走査することでバンドメモリに入力されている。
【0005】
特許文献1では、まず1つ目のバンドに対し、主走査方向の上流端からバンド領域の高さ方向に1画素ずつ順に走査し、これを主走査方向へ1列ずつ繰り返して1つのバンドを走査する。1つのバンドが終わると、副走査方向にある次のバンドも同様に走査を繰り返して画像データを走査する。この走査処理に伴って、空間フィルタ処理を施すため、演算部の前段に遅延メモリを用意する必要がある。1つの処理画素に対する空間フィルタの参照領域を[Fw×Fh]とすると、遅延メモリの容量はバンド内の(Fw−1)列分となる。ここで、領域[A×B]は、横幅(長さ方向)の画素数がAピクセル、縦幅(高さ方向)の画素数がBピクセルである矩形領域を指すとする。ここで用いられる遅延メモリは、演算部で参照する[Fw×Fh]の領域の画素を順次提供する。この場合、(バンドの端部を除いて)1画素の入力につき1画素の出力が得られ、出力される画素の順序は走査順序(入力順)と同一となる。また、遅延メモリの容量は、フィルタの参照領域とバンドの高さに依存する。
【0006】
特許文献2では、まずバンド領域の長さ方向に対して連続する2画素以上の走査単位(以下、バンド領域の長さ方向に連続する最小の走査幅を単に走査単位と称する)が設定され、走査単位の画素を1画素ずつ主走査方向へ順に走査し、これを副走査方向へバンドの高さ分繰り返して走査し、さらに主走査方向の下流側も同様に繰り返すことで1つのバンドを走査する。そして、副走査方向へ各バンドを走査することで1つの画像データを走査する。これにより、1画素あたりの遅延メモリへのアクセス数が削減される。この技術で一般的な空間フィルタ処理を施すには、特許文献1と同様にバンド内の(Fw―1)列を保持可能な遅延メモリを演算部前段に用意する必要がある。この遅延メモリがフィルタ演算部に[Fw×Fh]の画素領域を提供し、1画素を出力する。このとき、(バンドの端部を除いて)1画素の入力につき1画素の出力が得られ、出力の走査順序は入力の走査順序と同一となる。
【0007】
以降の説明では、走査単位の画素数をバンド長さ方向にZwピクセルとする。このとき1つのバンドをZw画素列ごとに区切った領域をバンドカラムと表現する。なお、Zw=1とすると特許文献1と同じ走査順序となり、以降ではZwを1以上の整数として、特許文献1の走査方法と特許文献2の走査方法とを統一的に扱う。
【0008】
ここで解像度変換手法について簡単に説明する。解像度変換手法は、補間演算による手法が一般的に知られている。この手法では、空間フィルタ処理と同様に処理画素の近傍に位置する原画像中の参照画素の画素値が用いられる。図2を用いて補間演算による拡大処理(高解像度変換処理)を説明する。図において、実線131は拡大前の画像の画素境界を示し、破線132は拡大後の画像の画素境界を示す。また領域130は処理対象の画素を示している。区域a、b、c、d、eは、それぞれ原画像の1行を示し、区域f、g、h、i、jは、それぞれ原画像中の1列を示す。
【0009】
例えば、バイリニア補間法では、処理画素近傍に位置する[2×2]の参照画素が用いられる。すなわち処理画素130-1の画素値を算出するために、(b−c)行と(h−i)列の[2×2]領域内の画素値を参照する。一方、処理画素130-2の画素値算出にも、画素130-1の場合と同じ(b−c)行と(h−i)列の[2×2]領域内の画素値を参照する。
【0010】
また、一般的なバイキュービック補間法の場合には、画素130-1および画素130-2の画素値を算出するために、(a―d)行と(g−j)列の[4×4]領域内の画素値を参照する。以上のように拡大処理では、異なる処理画素の演算に同一の画素領域を参照することがある。
【0011】
以降では、解像度変換処理における拡大率と縮小率をスケールとして扱う。ここで、スケールは長さの比である。スケールが1より大きい時は拡大(高解像度化)であり、1より小さい時は縮小(低解像度化)である。例えば長さ方向および高さ方向のスケールが共に2の拡大処理の場合(以下は単にスケールが2である解像度変換処理と略す)、画像の端部を除いて同一の参照領域から[2×2]の処理画素が算出される。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特許第3733826号公報
【特許文献2】特開2009−037348号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
以上のような、スケールが2である解像度変換処理に上記の走査方法を適用すると、Zw画素の入力ごとに、[2Zw×2]の出力が得られる。すなわち入力された画素の順序に従ってそのまま出力すれば、出力される走査単位の画素数(主走査方向に連続して出力配置する画素数)は入力の走査単位の画素数の2倍となる。同様にスケールが1/2の縮小処理の場合には、出力走査単位の画素数は1/2倍となる(入力走査単位の画素数が偶数の場合)。このように、出力走査単位の画素数はスケールによって異なるため、特許文献1や特許文献2に開示の構成を用いるとしても、解像度変換後の画素データを扱う後段のモジュールは、スケールを考慮して回路を構成する必要があり、回路規模の増大につながっていた(値の大きいスケールを考慮して遅延メモリを用意する必要があるため)。
【0014】
本発明は、上記課題に鑑みてなされたもので、解像度変換のように処理前後で画素数が変わる場合でも、後段のメモリの規模に影響を与えない画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0015】
上記の目的を達成するための本発明の一態様による画像処理装置は以下の構成を備える。すなわち、
第1の解像度を有する第1の画像データを変換し、前記第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置であって、前記第1の画像データを複数の部分領域に分割し、前記部分領域の第1の方向に連続する所定数の画素を、前記部分領域の前記第1の方向に直交する第2の方向へ順に走査することで第1の画素群を入力する入力手段と、前記第1の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、前記参照領域を前記第1の方向へ移動させるのに要する画素列と、前記入力手段で入力された前記第1の画素群とを格納する格納手段と、前記演算手段が前記格納手段に格納された画素を用いて、前記第2の解像度の画素を前記第1の方向へ前記所定数ずつ連続的に出力するように制御する制御手段とを備えることを特徴とする。
【発明の効果】
【0016】
本発明によれば、解像度変換を伴う画像処理において入力と出力の走査単位の画素数を変えないことができるので、走査単位の画素を保持する回路規模の増大を抑えることができる。
【図面の簡単な説明】
【0017】
【図1】一般的な画像処理の画素の走査方法を示す図である。
【図2】補間演算における画素の位置関係を示す図である。
【図3】実施形態1の画像処理装置の概略構成を示す図である。
【図4】画素の走査方法を示す図である。
【図5】解像度変換のある場合の画像処理方法を示す図である。
【図6】列遅延部の動作概念を示す図である。
【図7】制御部の動作概念を示す図である。
【図8】ブロックレジスタおよび補間演算部の動作を示す図である。
【図9】縮小時の画素の位置関係を示す図である。
【図10】実施形態2による画像処理装置の概略構成を示す図である。
【図11】後段の列遅延部の動作を示す図である。
【発明を実施するための形態】
【0018】
<実施形態1>
図3に、本発明の実施形態1の補間演算による解像度を上げるための拡大処理モジュールの概略構成を示す。図3に示すように、画像処理装置100は、FIFO(Fast In Fast Out)200、格納部である列遅延部210、ブロックレジスタ220、補間演算部230および制御部240を備える。すなわち、FIFO200に入力される第1の画像データは、画像処理装置100により、解像度が変換され、第2の画像データとして補間演算部230より出力される。イネーブル信号261は、FIFO200の動作をコントロールする。制御部240は、列遅延部210の有するSRAM(不図示)のアドレス262a、出力セレクト信号262bおよびライトイネーブル信号262cを列遅延部210へ出力する。また、制御部240は、シフト信号263aおよび出力ブロックセレクト信号263bを、ブロックレジスタ220へ出力し、補間パラメータ264を補間演算部230へ出力する。
【0019】
本実施形態では、補間演算部230が参照する画素数は[4×4]とする。解像度変換を行わない空間フィルタの場合、列遅延部210は部分領域(バンド)内の画素列の3列分の画素を保持する容量を必要とするが、本実施形態では、解像度の変換するため、バンド内の画素列の7列分の画素を保持する容量を用意する。このように遅延部210のメモリ容量を増やすことにより、入力と出力の所定の走査単位の画素数が一致するように、補間演算部230へ[4×4]の参照領域を提供できるように処理することを以下に示す。
【0020】
図1において、既に主走査について述べたように、バンドメモリの第1の画素群が、主走査方向の第1の方向に連続する所定数の画素である走査単位を、第1の方向と直交する、副走査方向の第2の方向へ順に走査することで、メモリに入力されている。まず、入力および出力の走査順序は、図4の通りとする。図1の各々において、主走査方向の第1の方向に連続する所定数の画素である走査単位を、第1の方向と直交する、副走査方向である第2の方向へ順に走査することで第1の画素群が入力されている。ここで、出力の走査順序とは2次元平面に出力画素を配置する順序のことを示す。図4(a)は、デジタル画像データを分割する複数のバンド領域から取り出されたバンド領域310に対する入力バンドカラム320を示す。また、図4(b)は、入力されたバンド領域内の画素を処理する画像処理装置100を示す。更に図4(c)は、画像処理装置100から出力された、出力バンド領域330における出力バンドカラム340を示す。第1の画素群として、入力走査単位をIw個の画素、画像処理装置100の出力走査単位をOw個の画素とすると、図4に示すよう所定数の出力走査単位が入力走査単位と等しくなるように、Iw=4の場合に、Ow=4になるように処理を行う。
【0021】
図5は、本実施形態の画像処理方法を説明する図である。図において、斜線で囲まれた領域310はバンド領域を示す。また処理画素を処理するために参照する領域である参照画素領域471は、[4×4]の領域であり、この参照画素領域471の画素値が補間演算部230へ送られる。この走査により4画素の画素値が列遅延部210へ入力される。入力走査順序451は、入力画素を走査する順序を示す。画素領域460は、列遅延部210に保持されている画素領域を示す。また画素領域470は、ブロックレジスタ220に保持されている[7×4]の画素領域を示す。更に、列a、b、・・・、kは、それぞれバンド内の列を識別している。
【0022】
補間演算部230の出力走査単位Owを4にするために、処理画素と参照領域471との対応をとり、参照領域471の列をずらしながら補間演算部へ入力する。ここで、出力の1走査単位に対応する参照画素領域471が、(b−e)列、(c−f)列、(d−g)列、(e−h)列であるとする。この場合、(e−h)列を参照するときにはh列が列遅延部の画素領域460-1に無いため、走査単位450の入力領域(h−k)を受け取る。
【0023】
(e−h)列を参照領域とする処理画素以外に、その右隣に位置する処理画素も同じ(e−h)列を参照する可能性がある。この右隣の画素は、次の出力バンドカラムに属するため、(e−h)列を列遅延部210の画素領域460-2に保持しておく。また走査された画素のうちの(i−k)列は、次のバンドカラムを出力する際に参照するので、列遅延部210の画素領域460-2に保持しておく。したがって、次のバンドカラムの出力のために、列遅延部210の画素領域460-2に(e−k)列を保持しておく。
【0024】
以上のような列遅延部210への画素値を保持する制御により、補間演算部230の出力走査単位が4になるように参照画素領域を提供することが可能となる。すなわち、スケールが変わっても出力走査単位の画素数を4にするには、バンド内の7列分を保持可能な容量が列遅延部210には必要である。
【0025】
次に、FIFO200、列遅延部210、ブロックレジスタ220、補間演算部230および制御部240の各サブモジュールの動作を説明する。
【0026】
モジュールの外部から入力された画素データは、まずFIFO200へ入力され、タイミングの調整が行われる。制御部240から受け取るイネーブル信号261が有効のときに、1走査単位の画素値(主走査方向に連続する4つの画素値)がFIFO200内にあれば、この走査単位の画素値を列遅延部210へ送る。図6は、列遅延部210のメモリの領域や位置を示す。図6には、バンド領域310、SRAM420、入力画素421、入力画素のバンドにおける位置423、バッファ的に使用されるSRAM420からの読み出しルート424がそれぞれ示されている。また図6には、読み出した画素のバンドの位置425、連結された画素群426、SRAM420への書き込みルート427、セレクタ429および出力画素430がそれぞれ示されている。SRAM420の1ワードは7画素であり、バンドの長さ方向(横方向)に連続した7つの画素データを読み書きする。ワード数は入力バンド310の高さ分の画素数に相当する。
【0027】
アドレス262aは、画素データの高さ方向(縦方向)における座標として制御部240で求められる。そして、アドレス262aが列遅延部210へ送られると、列遅延部210はFIFO200から受け取った1走査単位の4つの画素データ(図6、421)とSRAMから読み出した1ワード分の7つの画素データ(図6、424)とを合わせ、バンドの長さ方向に連続した11画素を格納する(図6、426)。そして列遅延部210は、出力セレクト信号262bに基づいて選択した7画素、もしくはSRAMから読み出した1ワード分の7つの画素データをブロックレジスタ220ヘ順次送る(図6、430)。
【0028】
図5では(b−h)列中の7画素がブロックレジスタ220へ送られる。どの画素データをブロックレジスタ220へ出力するかは、制御部240から受け取る出力セレクト信号262bにて決定される。また、FIFO200から画素データを受け取った場合(ライトイネーブル信号262が有効の場合)には、受け取った4画素とこの4画素に対して長さ方向へ連続する列遅延部210のSRAMから読み出した3画素とを連結してSRAMに書き込む。図5の例では、(e−k)列中の7画素をSRAMに書き込む。
【0029】
ブロックレジスタ220は、列遅延部210からバンドの長さ方向に連続した7つの画素データを受け取り、バンドの高さ方向に4行分の計最大[7×4]の画素データを一時的に保持する。制御部240からのシフト信号263aが有効のときに、ブロックレジスタ220は、1行分を順番に移動させる。制御部240から受け取るブロックセレクト信号263bによって、保持している[7×4]の画素から選択された[4×4]の画素を選択し、選択した画素を補間演算部230へ送る。
【0030】
補間演算部230では、ブロックレジスタ220から受け取った[4×4]の画素データに対して補間演算を実行し、1つの画素データを出力する。(ただし、同じ[4×4]の画素を参照して別の画素データを出力することもある。)補間演算部230は、補間演算の係数となるパラメータ264を制御部240から受け取る。
【0031】
制御部240は、ハンドシェーク通信により不図示の外部装置と画像データの授受を行う。制御部240は入力画素の座標情報および処理対象画素の座標情報を管理する管理部(不図示)を備える。管理部は、入力および出力の画素数を数えることで座標情報を得る。制御部240はこれらの座標情報に基づき、FIFO200への制御信号イネーブル信号261、列遅延部210のアドレス262a、出力セレクト信号262bおよびライトイネーブル信号262cを生成する機能を備える。また制御部240は、ブロックジレスタ220のシフト信号263a、出力ブロックセレクト信号263b、補間演算部230のパラメータ264を生成する機能を備える。
【0032】
次に、制御部240における各信号の生成方法を説明する。いま、出力画像における画素データのX座標をOx、Y座標をOyとし、これに対応付けられた入力画像における画素データのX座標をIx、Y座標をIyとする。また、出力画像の座標(Ox、Oy)を入力画像の座標系にマッピングした位置の座標を(Cx、Cy)=(f(Ox)、g(Oy))とする。またスケールをSとすると、例えば、f(x)=x/S、g(y)=y/Sである。更に、f(x)、g(y)の整数部をそれぞれF(x)、G(y)とする。すなわち、出力画像の座標(Ox、Oy)の処理画素を算出するのに参照する入力画素の座標は、F(Ox)−1≦Ix≦F(Ox)+2、かつG(Oy)−1≦Iy≦G(Oy)+2を満たす16点となる。
【0033】
ここで、図7を用いて、バンドカラムとして画素データを出力する制御を示す。図において、全体のバンドカラム500における2つのバンドカラム500−1、500―2は出力画像におけるバンドカラムである。点線は、入力画像の画素の境界を示している。画素P1は、(Ox、Oy)=(4M、N)(ここでM、Nは0以上の整数)を満たすとする。
【0034】
いま、出力する際の走査単位の画素数Owは4なので、P1は出力バンドカラムの最左列に位置する。P1の後に処理される画素座標は、(4M+1、N)、(4M+2、N)、(4M+3、N)、そして次の行に移り(4M、N+1)、―――・・・、となる。これらの座標に、それぞれP2、P3、P4、P5、―――・・・が対応する。
【0035】
ここで、1ビットの信号であるカラムアドバンス信号、ロウアドバンス信号、バンドカラムアドバンス信号を定義する。主走査方向に出力走査単位の画素を連続的に出力する際、ある処理画素を出力する際に出力走査単位に達しておらず、かつF(Ox)+1=F(Ox+1)が成り立つ場合(例えば図7の画素501)に、参照画素領域をX方向に1つだけずらす必要がある。よって、これが成り立つ場合はカラムアドバンス信号を有効にし、成り立たない場合はカラムアドバンス信号を無効にする。
【0036】
ある処理画素を出力する際に出力走査単位に達し、かつ、G(Oy)+1=G(Oy+1)が成り立つ場合(例えば図7の画素P4)に、参照画素領域をY方向に1つだけずらす必要がある。このとき、ロウアドバンス信号を有効にし、この時以外はロウアドバンス信号を無効にする。
【0037】
次に、P1の左に位置し、出力バンドコラム500−1に属する座標(4M−1、N)の画素Qを考える。Int(F(4M−1)/4+0.5)+1=Int(F(4M+3)/4+0.5)(関数Int(x)はxの整数部を返す値)が成り立つ時、Qの処理に必要な入力バンドカラムと、P3の処理に必要な入力バンドカラムが異なることを意味する。つまり、バンドカラム500-2に必要な参照画素がSRAM内に全て揃っていないので、次の入力バンドカラムを受け取る必要がある。このとき、バンドカラムアドバンス信号を有効にする。一方で次の入力バンドカラムを受け取る必要がない場合はバンドカラムアドバンス信号を無効にする。バンドカラムアドバンス信号は1バンドカラム内で同じ値をとる。またこのとき、FIFO200へのイネーブル信号261および列遅延部210へのライトイネーブル信号262cは、バンドカラムアドバンス信号が有効で、かつロウアドバンス信号が有効のときに有効にする。
【0038】
列遅延部210への出力セレクト信号262bは、出力走査単位の最右の画素(例えばP4)処理時に参照される4列と、その左に位置する3列とを選択されるように制御する。すなわち、選択される画素のX座標が、F(4M+3)−4≦Ix≦F(4M+3)+2を満たす画素を選択する。
【0039】
列遅延部210の読み出し時および書き込み時のアドレス262aは、G(N)+2である。ブロックレジスタ220へのシフト信号263aは、ロウアドバンス信号が有効のときに有効にする。ブロックレジスタ220ヘの出力ブロック選択信号263bは、まずP1処理時に、F(4M+3)=F(4M)+3であれば、左から1列目-4列目を選択する。また、F(4M+3)=F(4M)+2であれば、左から2列目-5列目を選択する。そして、F(4M+3)=F(4M)+1であれば、左から3列目-6列目を選択し、F(4M+3)=F(4M)であれば、左から4列目-7列目を選択する。
【0040】
P2−P4の処理時は、カラムアドバンス信号が有効の場合に、選択するブロックを右に1つだけずらす。カラムアドバンス信号が無効の場合には、前に処理した画素(走査単位内の1つ左の画素)と同じブロックを選択する。補間演算部230へ送られるパラメータ264は、入力画素の座標と処理画素の座標との位相差f(Ox)−F(Ox)およびg(Oy)−G(Oy)を求め、変換のテーブルを参照して求められる。
【0041】
図8は、ブロックレジスタ220と補間演算部230の構成を示す。7つの画素群430は、列遅延部210から受け取られ、ブロックレジスタ220において、レジスタ221は、7つの画素を保持する。そして、レジスタに保持された画素を選択するセレクタ222を備える。補間演算部230は、パラメータ231、乗算器232、加算器233、パラメータ234、乗算器235および加算器236を備える。
【0042】
ブロックレジスタ220は、制御部からシフト信号263aを受け取ると、レジスタ221内に保持している画素データを図示のようにシフトさせる。レジスタ221内の画素データは、セレクタ222によって[7×4]の画素群から[4×4]の画素群が選択され、補間演算部230へ送られる。図7で述べたように、解像度変換後の出力データをP1からP4までのZwずつにするために、図3の制御部240が、図8のセレクタ222−1〜222−4へ出力ブロックセレクト信号263bを生成している。
【0043】
補間演算部230へ入力された画素データは、乗算器232にてそれぞれパラメータ231が乗算される。パラメータ231は、制御部240でX方向の位相差f(Ox)−F(Ox)から求められる。乗算結果は、加算器233にてそれぞれ行ごとに加算される。加算結果は、乗算器235にてそれぞれパラメータ234が乗算される。パラメータ234は、制御部240でY方向の位相差g(Oy)−G(Oy)から求められる。乗算結果は加算器236にて全て加算される。以上により、補間結果が算出され、補間演算部230から演算出力として出される。
【0044】
このようにして、画像処理装置100において、第1の解像度を有する画像データは、FIFO200において入力走査単位毎に取り込まれ、補間演算部230で第2の解像度へ変換されて入力走査単位と同じ画素数となる、出力走査単位毎に出力される。以上のように、本実施形態では、解像度変換にも対処できるように、演算部前段の列遅延部210の容量を一般的な空間フィルタで必要とされる列分から増やし、出力の走査単位の画素数を入力の走査単位の画素数と同じにすることができた。なお、上記実施形態においては補間演算部230での参照画素数(局所領域の大きさ)を[4×4]としたがこれに限られるものではなく、任意の[FW×Fh(Fw、Fhは2以上の整数)で成り立つ。すなわち、横方向にFw画素、縦方向にFh画素の大きさの局所領域を適用することができる。また、上述の実施例では入力走査単位の画素数を4としたが、本発明は任意のZw画素毎に入力する走査に対して適用できる(Zwは1以上の整数)。このとき、列遅延部210の列の容量は(Fw+Zw−1)列となる。
【0045】
また、本実施形態では、拡大の場合(解像度をあげる場合)を示したが、縮小の場合にも同様に成り立つ。拡大の場合と同様に、近傍領域[4×4]の画素データを参照し、補間演算を行うとする。例として、図9にスケールが4/9の場合における入力画像と出力画像の関係を示す。図において、太線113は出力画像の画素境界、細線111は入力画像の画素境界、走査単位114は出力画像中の1走査単位、参照領域112は、走査単に114の演算に必要な原画像中の領域である。
【0046】
出力走査単位114における最左の画素の座標を(4M、N)とすると、参照領域113は、X座標がF(4M)−1≦Ix≦F(4M+3)+2を満たす領域である。この場合、列遅延部210のSRAMは、F(4M)−1からF(4M+3)+1列まで保持可能である必要がある。ただし、全ての処理画素に対して参照領域が全く重ならない場合、1出力走査単位に対応する参照領域の列数は16であるから、必要な列遅延部の容量は最大で15列分である。すなわち、列遅延部210に必要な容量は、F(4M+3)−F(4M)+3(M=0、1、2、---)の最大値と、15との小さい方の値とを合わせた列分となる。一般には、Fwが偶数のとき、(1)式に示す列分であり、Fwが奇数のとき、(2)式で示す列分となる。ここで、F'(x)は(f(x)+0.5)の整数部である。
【0047】
(1)
(2)
また、上述した拡大に必要な列遅延部210の容量と縮小で必要な列遅延部210の容量とを比較し、大きい方の値の列分の容量を備えることで、拡大縮小の両方に対応可能となる。
【0048】
<実施形態2>
実施形態1では、一般の空間フィルタの場合に比べて補間演算前段の列遅延部の容量を増やし、後段には列遅延部を置かなかった。実施形態2では前段の列遅延部の容量は特許文献2で記載されているように、空間フィルタの列幅、Fwに対応した(Fw−1)列分であるとする。すなわち、前段の列遅延部は、実施形態1でにおける(Fw+Zw−1)列の容量でなく、空間フィルタの処理のための(Fw−1)列分とする。実施形態2では、補間演算部で解像度変換が行われて、補間演算部から、FIFO200の入力走査単位と異なる単位の画素出力が出される。この出力走査単位を入力走査単位と同じにするために、後段にも第2の列遅延部を置く。図10に本実施形態における解像度変換モジュールの構成例を示す。実施形態1の図3で、FIFO200、ブロックレジスタ220、補間演算部230および制御部240について既に説明しているので、ここでの説明は省略する。図示にように、実施形態1での第1の格納手段である列遅延部210のほかに、第2の格納手段である列遅延部250が新たに追加されている。
【0049】
いま、入力走査単位の画素数Iwを4とし、X方向のスケールを1.5と仮定する。列遅延部210は、本実施形態では、前段の列遅延部210は、(Fw+Zw−1)の7列対応でなく、空間フィルタのための(Fw−1)、すなわち3列対応である。従って補間演算部230から出力される走査単位の画素数Owは6となる。本実施形態では、第2の列遅延部250で、走査単位の画素数を6から4に変換し、外部に出力する。なお、Owは、画像中で一様とは限らない。例えば、X方向のスケールが1.4であれば、Owは5の場合と6の場合がある。
【0050】
図11を用いて、第2の列遅延部250の動作を説明する。図11(a)において、列遅延部250への入力画像600が示されている。図11(b)において、SRAM610が示され、図11(c)において列遅延部250の出力画像620が示される。
【0051】
いま、SRAM610の容量は、5列分とする。このとき、図11(a)の最初のバンドカラムでは、入力601に対して出力を図11(c)の出力621として出力し、入力602に対応する画素データをSRAM610に書き込む。
【0052】
入力画像600の次のバンドカラムでは、入力602をSRAM610から読み出し、入力603と連結して、出力画像620の出力622として出力する。つぎの入力604は、SRAM610に書き込まれる。入力602および入力603の出力後、入力604をSRAM610から読み出し、出力画像620の出力623として出力する。以上の走査を繰り返すことにより、出力の走査単位の画素数を4に変換する事ができる。
【0053】
一般に、拡大処理などにより走査単位の画素数が増えた画像に対し、後段の第2の列遅延部にあるSRAMを用いて走査単位の画素数OwをIwに減らす場合、必要なSRAM610の容量は、(Ow―1)の最大値の列数分である。一方、縮小処理などにより走査単位の画素数が減った画像に対し、後段の第2の列遅延部にあるSRAMを用いて走査単位の画素数OwをIwに増やす場合、必要なSRAM610の容量は、(Iw−1)列分である。
【0054】
以上のように、実施形態2では、補間演算部の後段に第2の列遅延部を備えることで、解像度変換のための拡大や縮小の処理を行っても、入力と出力の列数を同一にすることが可能なことを示した。
【0055】
<実施形態3>
実施形態1では、列遅延部210のSRAM容量を(Fw+Zw−1)列分としたが、本実施形態では列遅延部210のSRAM容量を、(Fw+Zw−1)列分を越え、かつ「Zwの最小の倍数」列分に設定する。例えば、Fw=4でZw=4のとき、(Fw+Zw−1)列分を越え、かつ「Zwの最小の倍数」である8列分のSRAM容量を備える。この構成をとることで、SRAM内にどの列を保持するかの制御は実施形態1と同様であるが、制御部240は、画素の走査をZw個(Zw列)の単位で行うことができるので、制御部240の走査が簡易になるという長所がある。
【0056】
以上のように、列遅延部210のSRAM容量を(Fw+Zw−1)列分を越え、かつ「Zwの最小の倍数」列分の設定により、制御部240の走査が簡易となり、解像度変換の拡大や縮小処理を行っても、入力と出力の列数を同一にすることが可能である。
【0057】
<その他の実施例>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【技術分野】
【0001】
本発明は、解像度変換を伴う画像処理を実行する画像処理装置、およびその制御方法に関する。
【背景技術】
【0002】
従来、画像形成を行って出力する際に、空間フィルタ処理などのように処理対象となる画素(以下、「処理画素」と略称する)を含む処理画素の近傍の領域内の画素を用いて演算を行う処理(以下、近傍領域の画素を用いる処理と称す)がある。周辺画素を用いる処理としては、例えば、エッジ強調処理やぼかし処理のような空間フィルタ処理を施す処理がある。
【0003】
特許文献1および特許文献2は、デジタル画像データを矩形領域(バンド)に分割し、矩形領域ごとに周辺画素を用いる処理を行う技術を開示している。
【0004】
ここで、図1(a)に示す画像データの(主走査方向−副走査方向)座標系に対して、図1(e)に示すように、長さ方向−高さ方向という座標系をバンド領域座標系として定義し、バンドのサイズを、長さ×高さで表現する。(なお、副走査方向は主走査方向に直交しているものとする。)バンドは画像を帯状に分割するのでバンドの長さは、画像データの主走査方向の長さ、もしくは副走査方向の長さの何れかになる。一方、バンドの高さは任意の値をとることができる。ここで、第1の画素群が、主走査方向の第1の方向に連続する所定数の画素である走査単位を、第1の方向と直交する、副走査方向の第2の方向へ順に走査することでバンドメモリに入力されている。
【0005】
特許文献1では、まず1つ目のバンドに対し、主走査方向の上流端からバンド領域の高さ方向に1画素ずつ順に走査し、これを主走査方向へ1列ずつ繰り返して1つのバンドを走査する。1つのバンドが終わると、副走査方向にある次のバンドも同様に走査を繰り返して画像データを走査する。この走査処理に伴って、空間フィルタ処理を施すため、演算部の前段に遅延メモリを用意する必要がある。1つの処理画素に対する空間フィルタの参照領域を[Fw×Fh]とすると、遅延メモリの容量はバンド内の(Fw−1)列分となる。ここで、領域[A×B]は、横幅(長さ方向)の画素数がAピクセル、縦幅(高さ方向)の画素数がBピクセルである矩形領域を指すとする。ここで用いられる遅延メモリは、演算部で参照する[Fw×Fh]の領域の画素を順次提供する。この場合、(バンドの端部を除いて)1画素の入力につき1画素の出力が得られ、出力される画素の順序は走査順序(入力順)と同一となる。また、遅延メモリの容量は、フィルタの参照領域とバンドの高さに依存する。
【0006】
特許文献2では、まずバンド領域の長さ方向に対して連続する2画素以上の走査単位(以下、バンド領域の長さ方向に連続する最小の走査幅を単に走査単位と称する)が設定され、走査単位の画素を1画素ずつ主走査方向へ順に走査し、これを副走査方向へバンドの高さ分繰り返して走査し、さらに主走査方向の下流側も同様に繰り返すことで1つのバンドを走査する。そして、副走査方向へ各バンドを走査することで1つの画像データを走査する。これにより、1画素あたりの遅延メモリへのアクセス数が削減される。この技術で一般的な空間フィルタ処理を施すには、特許文献1と同様にバンド内の(Fw―1)列を保持可能な遅延メモリを演算部前段に用意する必要がある。この遅延メモリがフィルタ演算部に[Fw×Fh]の画素領域を提供し、1画素を出力する。このとき、(バンドの端部を除いて)1画素の入力につき1画素の出力が得られ、出力の走査順序は入力の走査順序と同一となる。
【0007】
以降の説明では、走査単位の画素数をバンド長さ方向にZwピクセルとする。このとき1つのバンドをZw画素列ごとに区切った領域をバンドカラムと表現する。なお、Zw=1とすると特許文献1と同じ走査順序となり、以降ではZwを1以上の整数として、特許文献1の走査方法と特許文献2の走査方法とを統一的に扱う。
【0008】
ここで解像度変換手法について簡単に説明する。解像度変換手法は、補間演算による手法が一般的に知られている。この手法では、空間フィルタ処理と同様に処理画素の近傍に位置する原画像中の参照画素の画素値が用いられる。図2を用いて補間演算による拡大処理(高解像度変換処理)を説明する。図において、実線131は拡大前の画像の画素境界を示し、破線132は拡大後の画像の画素境界を示す。また領域130は処理対象の画素を示している。区域a、b、c、d、eは、それぞれ原画像の1行を示し、区域f、g、h、i、jは、それぞれ原画像中の1列を示す。
【0009】
例えば、バイリニア補間法では、処理画素近傍に位置する[2×2]の参照画素が用いられる。すなわち処理画素130-1の画素値を算出するために、(b−c)行と(h−i)列の[2×2]領域内の画素値を参照する。一方、処理画素130-2の画素値算出にも、画素130-1の場合と同じ(b−c)行と(h−i)列の[2×2]領域内の画素値を参照する。
【0010】
また、一般的なバイキュービック補間法の場合には、画素130-1および画素130-2の画素値を算出するために、(a―d)行と(g−j)列の[4×4]領域内の画素値を参照する。以上のように拡大処理では、異なる処理画素の演算に同一の画素領域を参照することがある。
【0011】
以降では、解像度変換処理における拡大率と縮小率をスケールとして扱う。ここで、スケールは長さの比である。スケールが1より大きい時は拡大(高解像度化)であり、1より小さい時は縮小(低解像度化)である。例えば長さ方向および高さ方向のスケールが共に2の拡大処理の場合(以下は単にスケールが2である解像度変換処理と略す)、画像の端部を除いて同一の参照領域から[2×2]の処理画素が算出される。
【先行技術文献】
【特許文献】
【0012】
【特許文献1】特許第3733826号公報
【特許文献2】特開2009−037348号公報
【発明の概要】
【発明が解決しようとする課題】
【0013】
以上のような、スケールが2である解像度変換処理に上記の走査方法を適用すると、Zw画素の入力ごとに、[2Zw×2]の出力が得られる。すなわち入力された画素の順序に従ってそのまま出力すれば、出力される走査単位の画素数(主走査方向に連続して出力配置する画素数)は入力の走査単位の画素数の2倍となる。同様にスケールが1/2の縮小処理の場合には、出力走査単位の画素数は1/2倍となる(入力走査単位の画素数が偶数の場合)。このように、出力走査単位の画素数はスケールによって異なるため、特許文献1や特許文献2に開示の構成を用いるとしても、解像度変換後の画素データを扱う後段のモジュールは、スケールを考慮して回路を構成する必要があり、回路規模の増大につながっていた(値の大きいスケールを考慮して遅延メモリを用意する必要があるため)。
【0014】
本発明は、上記課題に鑑みてなされたもので、解像度変換のように処理前後で画素数が変わる場合でも、後段のメモリの規模に影響を与えない画像処理装置を提供することを目的とする。
【課題を解決するための手段】
【0015】
上記の目的を達成するための本発明の一態様による画像処理装置は以下の構成を備える。すなわち、
第1の解像度を有する第1の画像データを変換し、前記第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置であって、前記第1の画像データを複数の部分領域に分割し、前記部分領域の第1の方向に連続する所定数の画素を、前記部分領域の前記第1の方向に直交する第2の方向へ順に走査することで第1の画素群を入力する入力手段と、前記第1の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、前記参照領域を前記第1の方向へ移動させるのに要する画素列と、前記入力手段で入力された前記第1の画素群とを格納する格納手段と、前記演算手段が前記格納手段に格納された画素を用いて、前記第2の解像度の画素を前記第1の方向へ前記所定数ずつ連続的に出力するように制御する制御手段とを備えることを特徴とする。
【発明の効果】
【0016】
本発明によれば、解像度変換を伴う画像処理において入力と出力の走査単位の画素数を変えないことができるので、走査単位の画素を保持する回路規模の増大を抑えることができる。
【図面の簡単な説明】
【0017】
【図1】一般的な画像処理の画素の走査方法を示す図である。
【図2】補間演算における画素の位置関係を示す図である。
【図3】実施形態1の画像処理装置の概略構成を示す図である。
【図4】画素の走査方法を示す図である。
【図5】解像度変換のある場合の画像処理方法を示す図である。
【図6】列遅延部の動作概念を示す図である。
【図7】制御部の動作概念を示す図である。
【図8】ブロックレジスタおよび補間演算部の動作を示す図である。
【図9】縮小時の画素の位置関係を示す図である。
【図10】実施形態2による画像処理装置の概略構成を示す図である。
【図11】後段の列遅延部の動作を示す図である。
【発明を実施するための形態】
【0018】
<実施形態1>
図3に、本発明の実施形態1の補間演算による解像度を上げるための拡大処理モジュールの概略構成を示す。図3に示すように、画像処理装置100は、FIFO(Fast In Fast Out)200、格納部である列遅延部210、ブロックレジスタ220、補間演算部230および制御部240を備える。すなわち、FIFO200に入力される第1の画像データは、画像処理装置100により、解像度が変換され、第2の画像データとして補間演算部230より出力される。イネーブル信号261は、FIFO200の動作をコントロールする。制御部240は、列遅延部210の有するSRAM(不図示)のアドレス262a、出力セレクト信号262bおよびライトイネーブル信号262cを列遅延部210へ出力する。また、制御部240は、シフト信号263aおよび出力ブロックセレクト信号263bを、ブロックレジスタ220へ出力し、補間パラメータ264を補間演算部230へ出力する。
【0019】
本実施形態では、補間演算部230が参照する画素数は[4×4]とする。解像度変換を行わない空間フィルタの場合、列遅延部210は部分領域(バンド)内の画素列の3列分の画素を保持する容量を必要とするが、本実施形態では、解像度の変換するため、バンド内の画素列の7列分の画素を保持する容量を用意する。このように遅延部210のメモリ容量を増やすことにより、入力と出力の所定の走査単位の画素数が一致するように、補間演算部230へ[4×4]の参照領域を提供できるように処理することを以下に示す。
【0020】
図1において、既に主走査について述べたように、バンドメモリの第1の画素群が、主走査方向の第1の方向に連続する所定数の画素である走査単位を、第1の方向と直交する、副走査方向の第2の方向へ順に走査することで、メモリに入力されている。まず、入力および出力の走査順序は、図4の通りとする。図1の各々において、主走査方向の第1の方向に連続する所定数の画素である走査単位を、第1の方向と直交する、副走査方向である第2の方向へ順に走査することで第1の画素群が入力されている。ここで、出力の走査順序とは2次元平面に出力画素を配置する順序のことを示す。図4(a)は、デジタル画像データを分割する複数のバンド領域から取り出されたバンド領域310に対する入力バンドカラム320を示す。また、図4(b)は、入力されたバンド領域内の画素を処理する画像処理装置100を示す。更に図4(c)は、画像処理装置100から出力された、出力バンド領域330における出力バンドカラム340を示す。第1の画素群として、入力走査単位をIw個の画素、画像処理装置100の出力走査単位をOw個の画素とすると、図4に示すよう所定数の出力走査単位が入力走査単位と等しくなるように、Iw=4の場合に、Ow=4になるように処理を行う。
【0021】
図5は、本実施形態の画像処理方法を説明する図である。図において、斜線で囲まれた領域310はバンド領域を示す。また処理画素を処理するために参照する領域である参照画素領域471は、[4×4]の領域であり、この参照画素領域471の画素値が補間演算部230へ送られる。この走査により4画素の画素値が列遅延部210へ入力される。入力走査順序451は、入力画素を走査する順序を示す。画素領域460は、列遅延部210に保持されている画素領域を示す。また画素領域470は、ブロックレジスタ220に保持されている[7×4]の画素領域を示す。更に、列a、b、・・・、kは、それぞれバンド内の列を識別している。
【0022】
補間演算部230の出力走査単位Owを4にするために、処理画素と参照領域471との対応をとり、参照領域471の列をずらしながら補間演算部へ入力する。ここで、出力の1走査単位に対応する参照画素領域471が、(b−e)列、(c−f)列、(d−g)列、(e−h)列であるとする。この場合、(e−h)列を参照するときにはh列が列遅延部の画素領域460-1に無いため、走査単位450の入力領域(h−k)を受け取る。
【0023】
(e−h)列を参照領域とする処理画素以外に、その右隣に位置する処理画素も同じ(e−h)列を参照する可能性がある。この右隣の画素は、次の出力バンドカラムに属するため、(e−h)列を列遅延部210の画素領域460-2に保持しておく。また走査された画素のうちの(i−k)列は、次のバンドカラムを出力する際に参照するので、列遅延部210の画素領域460-2に保持しておく。したがって、次のバンドカラムの出力のために、列遅延部210の画素領域460-2に(e−k)列を保持しておく。
【0024】
以上のような列遅延部210への画素値を保持する制御により、補間演算部230の出力走査単位が4になるように参照画素領域を提供することが可能となる。すなわち、スケールが変わっても出力走査単位の画素数を4にするには、バンド内の7列分を保持可能な容量が列遅延部210には必要である。
【0025】
次に、FIFO200、列遅延部210、ブロックレジスタ220、補間演算部230および制御部240の各サブモジュールの動作を説明する。
【0026】
モジュールの外部から入力された画素データは、まずFIFO200へ入力され、タイミングの調整が行われる。制御部240から受け取るイネーブル信号261が有効のときに、1走査単位の画素値(主走査方向に連続する4つの画素値)がFIFO200内にあれば、この走査単位の画素値を列遅延部210へ送る。図6は、列遅延部210のメモリの領域や位置を示す。図6には、バンド領域310、SRAM420、入力画素421、入力画素のバンドにおける位置423、バッファ的に使用されるSRAM420からの読み出しルート424がそれぞれ示されている。また図6には、読み出した画素のバンドの位置425、連結された画素群426、SRAM420への書き込みルート427、セレクタ429および出力画素430がそれぞれ示されている。SRAM420の1ワードは7画素であり、バンドの長さ方向(横方向)に連続した7つの画素データを読み書きする。ワード数は入力バンド310の高さ分の画素数に相当する。
【0027】
アドレス262aは、画素データの高さ方向(縦方向)における座標として制御部240で求められる。そして、アドレス262aが列遅延部210へ送られると、列遅延部210はFIFO200から受け取った1走査単位の4つの画素データ(図6、421)とSRAMから読み出した1ワード分の7つの画素データ(図6、424)とを合わせ、バンドの長さ方向に連続した11画素を格納する(図6、426)。そして列遅延部210は、出力セレクト信号262bに基づいて選択した7画素、もしくはSRAMから読み出した1ワード分の7つの画素データをブロックレジスタ220ヘ順次送る(図6、430)。
【0028】
図5では(b−h)列中の7画素がブロックレジスタ220へ送られる。どの画素データをブロックレジスタ220へ出力するかは、制御部240から受け取る出力セレクト信号262bにて決定される。また、FIFO200から画素データを受け取った場合(ライトイネーブル信号262が有効の場合)には、受け取った4画素とこの4画素に対して長さ方向へ連続する列遅延部210のSRAMから読み出した3画素とを連結してSRAMに書き込む。図5の例では、(e−k)列中の7画素をSRAMに書き込む。
【0029】
ブロックレジスタ220は、列遅延部210からバンドの長さ方向に連続した7つの画素データを受け取り、バンドの高さ方向に4行分の計最大[7×4]の画素データを一時的に保持する。制御部240からのシフト信号263aが有効のときに、ブロックレジスタ220は、1行分を順番に移動させる。制御部240から受け取るブロックセレクト信号263bによって、保持している[7×4]の画素から選択された[4×4]の画素を選択し、選択した画素を補間演算部230へ送る。
【0030】
補間演算部230では、ブロックレジスタ220から受け取った[4×4]の画素データに対して補間演算を実行し、1つの画素データを出力する。(ただし、同じ[4×4]の画素を参照して別の画素データを出力することもある。)補間演算部230は、補間演算の係数となるパラメータ264を制御部240から受け取る。
【0031】
制御部240は、ハンドシェーク通信により不図示の外部装置と画像データの授受を行う。制御部240は入力画素の座標情報および処理対象画素の座標情報を管理する管理部(不図示)を備える。管理部は、入力および出力の画素数を数えることで座標情報を得る。制御部240はこれらの座標情報に基づき、FIFO200への制御信号イネーブル信号261、列遅延部210のアドレス262a、出力セレクト信号262bおよびライトイネーブル信号262cを生成する機能を備える。また制御部240は、ブロックジレスタ220のシフト信号263a、出力ブロックセレクト信号263b、補間演算部230のパラメータ264を生成する機能を備える。
【0032】
次に、制御部240における各信号の生成方法を説明する。いま、出力画像における画素データのX座標をOx、Y座標をOyとし、これに対応付けられた入力画像における画素データのX座標をIx、Y座標をIyとする。また、出力画像の座標(Ox、Oy)を入力画像の座標系にマッピングした位置の座標を(Cx、Cy)=(f(Ox)、g(Oy))とする。またスケールをSとすると、例えば、f(x)=x/S、g(y)=y/Sである。更に、f(x)、g(y)の整数部をそれぞれF(x)、G(y)とする。すなわち、出力画像の座標(Ox、Oy)の処理画素を算出するのに参照する入力画素の座標は、F(Ox)−1≦Ix≦F(Ox)+2、かつG(Oy)−1≦Iy≦G(Oy)+2を満たす16点となる。
【0033】
ここで、図7を用いて、バンドカラムとして画素データを出力する制御を示す。図において、全体のバンドカラム500における2つのバンドカラム500−1、500―2は出力画像におけるバンドカラムである。点線は、入力画像の画素の境界を示している。画素P1は、(Ox、Oy)=(4M、N)(ここでM、Nは0以上の整数)を満たすとする。
【0034】
いま、出力する際の走査単位の画素数Owは4なので、P1は出力バンドカラムの最左列に位置する。P1の後に処理される画素座標は、(4M+1、N)、(4M+2、N)、(4M+3、N)、そして次の行に移り(4M、N+1)、―――・・・、となる。これらの座標に、それぞれP2、P3、P4、P5、―――・・・が対応する。
【0035】
ここで、1ビットの信号であるカラムアドバンス信号、ロウアドバンス信号、バンドカラムアドバンス信号を定義する。主走査方向に出力走査単位の画素を連続的に出力する際、ある処理画素を出力する際に出力走査単位に達しておらず、かつF(Ox)+1=F(Ox+1)が成り立つ場合(例えば図7の画素501)に、参照画素領域をX方向に1つだけずらす必要がある。よって、これが成り立つ場合はカラムアドバンス信号を有効にし、成り立たない場合はカラムアドバンス信号を無効にする。
【0036】
ある処理画素を出力する際に出力走査単位に達し、かつ、G(Oy)+1=G(Oy+1)が成り立つ場合(例えば図7の画素P4)に、参照画素領域をY方向に1つだけずらす必要がある。このとき、ロウアドバンス信号を有効にし、この時以外はロウアドバンス信号を無効にする。
【0037】
次に、P1の左に位置し、出力バンドコラム500−1に属する座標(4M−1、N)の画素Qを考える。Int(F(4M−1)/4+0.5)+1=Int(F(4M+3)/4+0.5)(関数Int(x)はxの整数部を返す値)が成り立つ時、Qの処理に必要な入力バンドカラムと、P3の処理に必要な入力バンドカラムが異なることを意味する。つまり、バンドカラム500-2に必要な参照画素がSRAM内に全て揃っていないので、次の入力バンドカラムを受け取る必要がある。このとき、バンドカラムアドバンス信号を有効にする。一方で次の入力バンドカラムを受け取る必要がない場合はバンドカラムアドバンス信号を無効にする。バンドカラムアドバンス信号は1バンドカラム内で同じ値をとる。またこのとき、FIFO200へのイネーブル信号261および列遅延部210へのライトイネーブル信号262cは、バンドカラムアドバンス信号が有効で、かつロウアドバンス信号が有効のときに有効にする。
【0038】
列遅延部210への出力セレクト信号262bは、出力走査単位の最右の画素(例えばP4)処理時に参照される4列と、その左に位置する3列とを選択されるように制御する。すなわち、選択される画素のX座標が、F(4M+3)−4≦Ix≦F(4M+3)+2を満たす画素を選択する。
【0039】
列遅延部210の読み出し時および書き込み時のアドレス262aは、G(N)+2である。ブロックレジスタ220へのシフト信号263aは、ロウアドバンス信号が有効のときに有効にする。ブロックレジスタ220ヘの出力ブロック選択信号263bは、まずP1処理時に、F(4M+3)=F(4M)+3であれば、左から1列目-4列目を選択する。また、F(4M+3)=F(4M)+2であれば、左から2列目-5列目を選択する。そして、F(4M+3)=F(4M)+1であれば、左から3列目-6列目を選択し、F(4M+3)=F(4M)であれば、左から4列目-7列目を選択する。
【0040】
P2−P4の処理時は、カラムアドバンス信号が有効の場合に、選択するブロックを右に1つだけずらす。カラムアドバンス信号が無効の場合には、前に処理した画素(走査単位内の1つ左の画素)と同じブロックを選択する。補間演算部230へ送られるパラメータ264は、入力画素の座標と処理画素の座標との位相差f(Ox)−F(Ox)およびg(Oy)−G(Oy)を求め、変換のテーブルを参照して求められる。
【0041】
図8は、ブロックレジスタ220と補間演算部230の構成を示す。7つの画素群430は、列遅延部210から受け取られ、ブロックレジスタ220において、レジスタ221は、7つの画素を保持する。そして、レジスタに保持された画素を選択するセレクタ222を備える。補間演算部230は、パラメータ231、乗算器232、加算器233、パラメータ234、乗算器235および加算器236を備える。
【0042】
ブロックレジスタ220は、制御部からシフト信号263aを受け取ると、レジスタ221内に保持している画素データを図示のようにシフトさせる。レジスタ221内の画素データは、セレクタ222によって[7×4]の画素群から[4×4]の画素群が選択され、補間演算部230へ送られる。図7で述べたように、解像度変換後の出力データをP1からP4までのZwずつにするために、図3の制御部240が、図8のセレクタ222−1〜222−4へ出力ブロックセレクト信号263bを生成している。
【0043】
補間演算部230へ入力された画素データは、乗算器232にてそれぞれパラメータ231が乗算される。パラメータ231は、制御部240でX方向の位相差f(Ox)−F(Ox)から求められる。乗算結果は、加算器233にてそれぞれ行ごとに加算される。加算結果は、乗算器235にてそれぞれパラメータ234が乗算される。パラメータ234は、制御部240でY方向の位相差g(Oy)−G(Oy)から求められる。乗算結果は加算器236にて全て加算される。以上により、補間結果が算出され、補間演算部230から演算出力として出される。
【0044】
このようにして、画像処理装置100において、第1の解像度を有する画像データは、FIFO200において入力走査単位毎に取り込まれ、補間演算部230で第2の解像度へ変換されて入力走査単位と同じ画素数となる、出力走査単位毎に出力される。以上のように、本実施形態では、解像度変換にも対処できるように、演算部前段の列遅延部210の容量を一般的な空間フィルタで必要とされる列分から増やし、出力の走査単位の画素数を入力の走査単位の画素数と同じにすることができた。なお、上記実施形態においては補間演算部230での参照画素数(局所領域の大きさ)を[4×4]としたがこれに限られるものではなく、任意の[FW×Fh(Fw、Fhは2以上の整数)で成り立つ。すなわち、横方向にFw画素、縦方向にFh画素の大きさの局所領域を適用することができる。また、上述の実施例では入力走査単位の画素数を4としたが、本発明は任意のZw画素毎に入力する走査に対して適用できる(Zwは1以上の整数)。このとき、列遅延部210の列の容量は(Fw+Zw−1)列となる。
【0045】
また、本実施形態では、拡大の場合(解像度をあげる場合)を示したが、縮小の場合にも同様に成り立つ。拡大の場合と同様に、近傍領域[4×4]の画素データを参照し、補間演算を行うとする。例として、図9にスケールが4/9の場合における入力画像と出力画像の関係を示す。図において、太線113は出力画像の画素境界、細線111は入力画像の画素境界、走査単位114は出力画像中の1走査単位、参照領域112は、走査単に114の演算に必要な原画像中の領域である。
【0046】
出力走査単位114における最左の画素の座標を(4M、N)とすると、参照領域113は、X座標がF(4M)−1≦Ix≦F(4M+3)+2を満たす領域である。この場合、列遅延部210のSRAMは、F(4M)−1からF(4M+3)+1列まで保持可能である必要がある。ただし、全ての処理画素に対して参照領域が全く重ならない場合、1出力走査単位に対応する参照領域の列数は16であるから、必要な列遅延部の容量は最大で15列分である。すなわち、列遅延部210に必要な容量は、F(4M+3)−F(4M)+3(M=0、1、2、---)の最大値と、15との小さい方の値とを合わせた列分となる。一般には、Fwが偶数のとき、(1)式に示す列分であり、Fwが奇数のとき、(2)式で示す列分となる。ここで、F'(x)は(f(x)+0.5)の整数部である。
【0047】
(1)
(2)
また、上述した拡大に必要な列遅延部210の容量と縮小で必要な列遅延部210の容量とを比較し、大きい方の値の列分の容量を備えることで、拡大縮小の両方に対応可能となる。
【0048】
<実施形態2>
実施形態1では、一般の空間フィルタの場合に比べて補間演算前段の列遅延部の容量を増やし、後段には列遅延部を置かなかった。実施形態2では前段の列遅延部の容量は特許文献2で記載されているように、空間フィルタの列幅、Fwに対応した(Fw−1)列分であるとする。すなわち、前段の列遅延部は、実施形態1でにおける(Fw+Zw−1)列の容量でなく、空間フィルタの処理のための(Fw−1)列分とする。実施形態2では、補間演算部で解像度変換が行われて、補間演算部から、FIFO200の入力走査単位と異なる単位の画素出力が出される。この出力走査単位を入力走査単位と同じにするために、後段にも第2の列遅延部を置く。図10に本実施形態における解像度変換モジュールの構成例を示す。実施形態1の図3で、FIFO200、ブロックレジスタ220、補間演算部230および制御部240について既に説明しているので、ここでの説明は省略する。図示にように、実施形態1での第1の格納手段である列遅延部210のほかに、第2の格納手段である列遅延部250が新たに追加されている。
【0049】
いま、入力走査単位の画素数Iwを4とし、X方向のスケールを1.5と仮定する。列遅延部210は、本実施形態では、前段の列遅延部210は、(Fw+Zw−1)の7列対応でなく、空間フィルタのための(Fw−1)、すなわち3列対応である。従って補間演算部230から出力される走査単位の画素数Owは6となる。本実施形態では、第2の列遅延部250で、走査単位の画素数を6から4に変換し、外部に出力する。なお、Owは、画像中で一様とは限らない。例えば、X方向のスケールが1.4であれば、Owは5の場合と6の場合がある。
【0050】
図11を用いて、第2の列遅延部250の動作を説明する。図11(a)において、列遅延部250への入力画像600が示されている。図11(b)において、SRAM610が示され、図11(c)において列遅延部250の出力画像620が示される。
【0051】
いま、SRAM610の容量は、5列分とする。このとき、図11(a)の最初のバンドカラムでは、入力601に対して出力を図11(c)の出力621として出力し、入力602に対応する画素データをSRAM610に書き込む。
【0052】
入力画像600の次のバンドカラムでは、入力602をSRAM610から読み出し、入力603と連結して、出力画像620の出力622として出力する。つぎの入力604は、SRAM610に書き込まれる。入力602および入力603の出力後、入力604をSRAM610から読み出し、出力画像620の出力623として出力する。以上の走査を繰り返すことにより、出力の走査単位の画素数を4に変換する事ができる。
【0053】
一般に、拡大処理などにより走査単位の画素数が増えた画像に対し、後段の第2の列遅延部にあるSRAMを用いて走査単位の画素数OwをIwに減らす場合、必要なSRAM610の容量は、(Ow―1)の最大値の列数分である。一方、縮小処理などにより走査単位の画素数が減った画像に対し、後段の第2の列遅延部にあるSRAMを用いて走査単位の画素数OwをIwに増やす場合、必要なSRAM610の容量は、(Iw−1)列分である。
【0054】
以上のように、実施形態2では、補間演算部の後段に第2の列遅延部を備えることで、解像度変換のための拡大や縮小の処理を行っても、入力と出力の列数を同一にすることが可能なことを示した。
【0055】
<実施形態3>
実施形態1では、列遅延部210のSRAM容量を(Fw+Zw−1)列分としたが、本実施形態では列遅延部210のSRAM容量を、(Fw+Zw−1)列分を越え、かつ「Zwの最小の倍数」列分に設定する。例えば、Fw=4でZw=4のとき、(Fw+Zw−1)列分を越え、かつ「Zwの最小の倍数」である8列分のSRAM容量を備える。この構成をとることで、SRAM内にどの列を保持するかの制御は実施形態1と同様であるが、制御部240は、画素の走査をZw個(Zw列)の単位で行うことができるので、制御部240の走査が簡易になるという長所がある。
【0056】
以上のように、列遅延部210のSRAM容量を(Fw+Zw−1)列分を越え、かつ「Zwの最小の倍数」列分の設定により、制御部240の走査が簡易となり、解像度変換の拡大や縮小処理を行っても、入力と出力の列数を同一にすることが可能である。
【0057】
<その他の実施例>
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【特許請求の範囲】
【請求項1】
第1の解像度を有する第1の画像データを変換し、前記第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記第1の画像データを複数の部分領域に分割し、前記部分領域の第1の方向に連続する所定数の画素を、前記部分領域の前記第1の方向に直交する第2の方向へ順に走査することで第1の画素群を入力する入力手段と、
前記第1の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記参照領域を前記第1の方向へ移動させるのに要する画素列と、前記入力手段で入力された前記第1の画素群とを格納する格納手段と、
前記演算手段が前記格納手段に格納された画素を用いて、前記第2の解像度の画素を前記第1の方向へ前記所定数ずつ連続的に出力するように制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも高い第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力手段と、
前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記局所領域を前記横方向へ移動させるのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する格納手段と、
前記格納手段に格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項3】
前記格納手段は、Fw+Zw−1の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記格納手段は、Fw+Zw−1を越えて、かつ、Zwの最小の倍数となる列数の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項2に記載の画像処理装置。
【請求項5】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも低い第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力手段と、
前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記演算手段が、前記第2の画像データの前記横方向へ連続するZw個の画素値を算出するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する格納手段と、
前記格納手段に格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項6】
Mを任意の整数、前記第2の画像データのX座標をOxとし、該Oxに前記第1の画像データのX座標であるIxへ対応付ける関数をIx=f(Ox)とし、f(x)の整数部をF(x)、(f(x)+0.5)の整数部をF'(x)とすると、
Fwが偶数のとき、前記格納手段は、
Fwが奇数のとき、
の画素数の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
第1の解像度を有する第1の画像データを処理して複数のバンド領域に分割して第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力手段と、
前記入力手段で入力したZwごとの第1の画像データの局所領域の画素値を参照して、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記局所領域を前記横方向にZw画素に渡って移動できるように画素を提供するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する第1の格納手段と、
前記演算手段に前記第1の画像データのZw個の画素値に対応した前記第2の画像データのOw個の画素値を出力させ、Zw個の画素からなる画素群が前記縦方向へ1画素ずつ順番に移動するように出力する制御手段と、
前記制御手段が、Ow個ずつ得られる画素値からZw個ずつを出力するために、前記演算手段の出力を保持する第2の格納手段と
を備えることを特徴とする画像処理装置。
【請求項8】
前記第2の解像度が前記第1の解像度より低い場合には、前記第2の格納手段は、前記バンド領域内のZw−1の列数分を保持する容量を有することを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記第2の解像度が前記第1の解像度より高い場合には、前記第2の格納手段は、前記バンド領域内のOw−1の列数分を保持する容量を有することを特徴とする請求項7に記載の画像処理装置。
【請求項10】
第1の解像度を有する第1の画像データを変換し、前記第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
前記第1の画像データを複数の部分領域に分割し、前記部分領域の第1の方向に連続する所定数の画素を、前記部分領域の前記第1の方向に直交する第2の方向へ順に走査することで第1の画素群を入力する入力工程と、
前記第1の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第2の解像度に対応した前記第2の画像データの画素値を演算手段が算出する演算工程と、
前記参照領域を前記第1の方向へ移動させるのに要する画素列と、前記入力工程で入力された前記第1の画素群とを格納手段に格納させる格納工程と、
前記演算工程で前記格納手段が格納している画素を用いて、前記第2の解像度の画素を前記第1の方向へ前記所定数ずつ連続的に出力するように、前記演算手段を制御する制御工程と、
を備えることを特徴とする制御方法。
【請求項11】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも高い第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力工程と、
演算手段が、前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算工程と、
格納手段が、前記局所領域を前記横方向へ移動させるのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有するメモリに、前記入力工程で入力された前記第1の画像データを格納する格納工程と、
制御手段が、前記メモリに格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算工程を制御する制御工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項12】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも低い第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力工程と、
演算手段が、前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算工程と、
格納手段が、前記演算工程で前記第2の画像データの前記横方向へ連続するZw個の画素値を算出するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有するメモリに、前記入力工程で入力された前記第1の画像データを格納する格納工程と、
制御手段が、前記メモリに格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算工程を制御する制御工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項13】
第1の解像度を有する第1の画像データを処理して複数のバンド領域に分割して第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力工程と、
演算手段が、前記入力工程で入力したZwごとの第1の画像データの局所領域の画素値を参照して、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算工程と、
第1の格納手段が、前記局所領域を前記横方向にZw画素に渡って移動できるように画素を提供するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する第1の格納工程と、
制御手段が、前記演算工程により前記第1の画像データのZw個の画素値に対応した前記第2の画像データのOw個の画素値を出力させ、Zw個の画素からなる画素群が前記縦方向へ1画素ずつ順番に移動するように出力する制御工程と、
第2の格納手段が、前記制御工程でOw個ずつ得られる画素値からZw個ずつを出力するために、前記演算工程の出力を保持する第2の格納工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項14】
請求項10乃至13のいずれか1項に記載の画像処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
【請求項1】
第1の解像度を有する第1の画像データを変換し、前記第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記第1の画像データを複数の部分領域に分割し、前記部分領域の第1の方向に連続する所定数の画素を、前記部分領域の前記第1の方向に直交する第2の方向へ順に走査することで第1の画素群を入力する入力手段と、
前記第1の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記参照領域を前記第1の方向へ移動させるのに要する画素列と、前記入力手段で入力された前記第1の画素群とを格納する格納手段と、
前記演算手段が前記格納手段に格納された画素を用いて、前記第2の解像度の画素を前記第1の方向へ前記所定数ずつ連続的に出力するように制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項2】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも高い第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力手段と、
前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記局所領域を前記横方向へ移動させるのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する格納手段と、
前記格納手段に格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項3】
前記格納手段は、Fw+Zw−1の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項2に記載の画像処理装置。
【請求項4】
前記格納手段は、Fw+Zw−1を越えて、かつ、Zwの最小の倍数となる列数の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項2に記載の画像処理装置。
【請求項5】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも低い第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力手段と、
前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記演算手段が、前記第2の画像データの前記横方向へ連続するZw個の画素値を算出するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する格納手段と、
前記格納手段に格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算手段を制御する制御手段と、
を備えることを特徴とする画像処理装置。
【請求項6】
Mを任意の整数、前記第2の画像データのX座標をOxとし、該Oxに前記第1の画像データのX座標であるIxへ対応付ける関数をIx=f(Ox)とし、f(x)の整数部をF(x)、(f(x)+0.5)の整数部をF'(x)とすると、
Fwが偶数のとき、前記格納手段は、
Fwが奇数のとき、
の画素数の画素列を、前記バンド領域の縦方向にわたって格納する容量を有することを特徴とする請求項5に記載の画像処理装置。
【請求項7】
第1の解像度を有する第1の画像データを処理して複数のバンド領域に分割して第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置であって、
前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力手段と、
前記入力手段で入力したZwごとの第1の画像データの局所領域の画素値を参照して、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算手段と、
前記局所領域を前記横方向にZw画素に渡って移動できるように画素を提供するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する第1の格納手段と、
前記演算手段に前記第1の画像データのZw個の画素値に対応した前記第2の画像データのOw個の画素値を出力させ、Zw個の画素からなる画素群が前記縦方向へ1画素ずつ順番に移動するように出力する制御手段と、
前記制御手段が、Ow個ずつ得られる画素値からZw個ずつを出力するために、前記演算手段の出力を保持する第2の格納手段と
を備えることを特徴とする画像処理装置。
【請求項8】
前記第2の解像度が前記第1の解像度より低い場合には、前記第2の格納手段は、前記バンド領域内のZw−1の列数分を保持する容量を有することを特徴とする請求項7に記載の画像処理装置。
【請求項9】
前記第2の解像度が前記第1の解像度より高い場合には、前記第2の格納手段は、前記バンド領域内のOw−1の列数分を保持する容量を有することを特徴とする請求項7に記載の画像処理装置。
【請求項10】
第1の解像度を有する第1の画像データを変換し、前記第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
前記第1の画像データを複数の部分領域に分割し、前記部分領域の第1の方向に連続する所定数の画素を、前記部分領域の前記第1の方向に直交する第2の方向へ順に走査することで第1の画素群を入力する入力工程と、
前記第1の画像データの処理画素を含む近傍領域を参照領域として、当該参照領域の画素の画素値を用いて前記第2の解像度に対応した前記第2の画像データの画素値を演算手段が算出する演算工程と、
前記参照領域を前記第1の方向へ移動させるのに要する画素列と、前記入力工程で入力された前記第1の画素群とを格納手段に格納させる格納工程と、
前記演算工程で前記格納手段が格納している画素を用いて、前記第2の解像度の画素を前記第1の方向へ前記所定数ずつ連続的に出力するように、前記演算手段を制御する制御工程と、
を備えることを特徴とする制御方法。
【請求項11】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも高い第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力工程と、
演算手段が、前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算工程と、
格納手段が、前記局所領域を前記横方向へ移動させるのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有するメモリに、前記入力工程で入力された前記第1の画像データを格納する格納工程と、
制御手段が、前記メモリに格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算工程を制御する制御工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項12】
第1の解像度を有する第1の画像データを複数のバンド領域に分割して解像度変換を行い、前記第1の解像度よりも低い第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力工程と、
演算手段が、前記第1の画像データの前記横方向にFw画素、前記縦方向にFh画素の大きさの局所領域における画素値を用いて、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算工程と、
格納手段が、前記演算工程で前記第2の画像データの前記横方向へ連続するZw個の画素値を算出するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有するメモリに、前記入力工程で入力された前記第1の画像データを格納する格納工程と、
制御手段が、前記メモリに格納された画像データを用いて、前記第2の解像度の画像を前記横方向へZwずつ、前記縦方向へ1画素ずつ順番に移動させて出力するように前記演算工程を制御する制御工程と、
を備えることを特徴とする画像処理装置の制御方法。
【請求項13】
第1の解像度を有する第1の画像データを処理して複数のバンド領域に分割して第1の解像度と異なる第2の解像度を有する第2の画像データへ変換する画像処理装置の制御方法であって、
入力手段が、前記バンド領域の横方向に連続するZw(Zwは整数)画素からなる画素群を、前記バンド領域の縦方向へ1画素ずつ順番に移動する走査により、Zw画素毎に前記第1の画像データを入力する入力工程と、
演算手段が、前記入力工程で入力したZwごとの第1の画像データの局所領域の画素値を参照して、前記第2の解像度に対応した前記第2の画像データの画素値を算出する演算工程と、
第1の格納手段が、前記局所領域を前記横方向にZw画素に渡って移動できるように画素を提供するのに要する画素列を前記バンド領域の縦方向にわたって格納する容量を有し、前記入力手段で入力された前記第1の画像データを格納する第1の格納工程と、
制御手段が、前記演算工程により前記第1の画像データのZw個の画素値に対応した前記第2の画像データのOw個の画素値を出力させ、Zw個の画素からなる画素群が前記縦方向へ1画素ずつ順番に移動するように出力する制御工程と、
第2の格納手段が、前記制御工程でOw個ずつ得られる画素値からZw個ずつを出力するために、前記演算工程の出力を保持する第2の格納工程と
を備えることを特徴とする画像処理装置の制御方法。
【請求項14】
請求項10乃至13のいずれか1項に記載の画像処理装置の制御方法の各工程をコンピュータに実行させるためのプログラム。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【公開番号】特開2012−50009(P2012−50009A)
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願番号】特願2010−192700(P2010−192700)
【出願日】平成22年8月30日(2010.8.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
【公開日】平成24年3月8日(2012.3.8)
【国際特許分類】
【出願日】平成22年8月30日(2010.8.30)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】
[ Back to top ]