説明

変換装置および変換方法

【課題】回路規模の増大を回避しつつ、高性能の回路を用いなくても、行方向および列方向のそれぞれにおいて縮小率を変化させながら1つの画像の解像度を縮小する。
【解決手段】ラスタスキャンの順番に従って画素データを1つずつ受け付け、受け付けた順番に応じて定まる行方向の適用縮小率と受け付けた順番とに応じた係数を乗じた第1の処理用データを生成して加算していくことにより、縮小後の画像の複数の画素のそれぞれの一部を示す複数の第1の処理済データのそれぞれを生成する水平処理部と、複数の第1の処理済データのそれぞれを1つずつ受け付け、受け付けた順番に応じて定まる列方向の縮小率と受け付けた順番とに応じた係数を乗じた第2の処理用データを生成し、上記行方向の適用縮小率と画像の行方向の画素数とに基づいて加算していくことにより、縮小後の画像の複数の画素のそれぞれを示す複数の第2の処理済データを生成する垂直処理部とを有する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像の解像度を縮小する変換装置および変換方法に関する。
【背景技術】
【0002】
画像の解像度を変換(縮小)する変換装置は、最近傍法、バイキュービック法、面積平均法、アップサンプリングダウンサンプリング法など、画像の解像度を変換するためのアルゴリズムを用いて画像の解像度の変換を行っている。
【0003】
アップサンプリングダウンサンプリング法を用いた解像度の変換に関する技術が例えば特許文献1に開示されている。また、面積平均法を用いた解像度の縮小に関する技術が例えば特許文献2に開示されている。
【0004】
画像の解像度の縮小をラスタスキャンの順番に従って行う場合、縮小の範囲となる複数の画素のそれぞれを示す複数の画素データのそれぞれを格納するためのラインバッファが必要となる。なお、ラスタスキャンとは、画像を構成する複数の画素のそれぞれを行方向に左から右へスキャンし、その後、次の行の左から右へスキャンすることを繰り返して行う走査方式のことである。
【0005】
ここで、ラスタスキャンの順番に従って画像の解像度を縮小する方法の一例について説明する。
【0006】
図9は、ラスタスキャンの順番に従って画像の解像度を縮小する方法の一例を説明するための図であり、(a)は解像度を縮小する前の画像を示す図、(b)は解像度を縮小するための構成を説明するための図である。なお、図9では、画像の解像度を縮小するためのアルゴリズムとして面積平均法を用いて縮小率2:5の縮小を行う場合を一例として示している。
【0007】
図9(a)に示す画像の解像度を縮小する場合、画像を構成する複数の画素のそれぞれを示す複数の画素データvtのそれぞれがラスタスキャンの順番に従ってクロックサイクル毎に1つずつ出力される。
【0008】
そして、出力された画素データvtは、縮小率に応じた数の画素ライン単位でラインバッファに一旦格納される。なお、ラインバッファは複数用意されている。
【0009】
変換装置は、複数のラインバッファのそれぞれに対して解像度を縮小するための処理を実行する。これにより、図9(b)に示すように、画像の解像度が縮小される。
【先行技術文献】
【特許文献】
【0010】
【特許文献1】特開2000−165664号公報
【特許文献2】特開2007−311835号公報
【発明の概要】
【発明が解決しようとする課題】
【0011】
上述したように、ラスタスキャンの順番に従って画像の解像度を縮小する場合には、複数のラインバッファが必要となる。また、複数のラインバッファのそれぞれは、縮小後の解像度にかかわらず、解像度を縮小する前の画像を構成する複数の画素データのそれぞれを複数の画素ライン単位で格納できる容量を有している必要がある。
【0012】
ここで、行方向および列方向のそれぞれにおいて縮小率を変化させながら1つの画像の解像度を縮小したい場合、複数の縮小率毎にラインバッファを用意したり、複数の縮小率でラインバッファを兼用するための制御を行ったりする必要がある。
【0013】
つまり、行方向および列方向のそれぞれにおいて縮小率を変化させながら1つの画像の解像度を縮小させたい場合、画像の解像度を縮小する変換装置の回路規模が増大したり、変換装置に高性能の回路を用いたりしなければならないという問題点がある。
【0014】
本発明は、回路規模の増大を回避しつつ、高性能の回路を用いなくても、行方向および列方向のそれぞれにおいて縮小率を変化させながら1つの画像の解像度を縮小することを可能にする変換装置および変換方法を提供することを目的とする。
【課題を解決するための手段】
【0015】
上記目的を達成するために本発明の変換装置は、複数の縮小率で画像の解像度を縮小する変換装置であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って1つずつ受け付け、予め決められた複数の行方向の縮小率のうち当該画素データを受け付けた順番に応じて定まる縮小率である行方向の適用縮小率と、当該受け付けた順番と、に応じて定まる係数を当該画素データに乗じた第1の処理用データを生成し、該生成した第1の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第1の処理済データのそれぞれを生成し、該生成した順番に従って1つずつ出力する水平処理部と、
前記水平処理部から出力された複数の第1の処理済データのそれぞれを1つずつ受け付け、予め決められた複数の列方向の縮小率のうち当該第1の処理済データを受け付けた順番に応じて定まる縮小率と、当該受け付けた順番と、に応じて定まる係数を当該第1の処理済データに乗じた第2の処理用データを生成し、前記画像の行方向の画素数と前記行方向の適用縮小率とに基づいて前記生成した第2の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第2の処理済データを生成する垂直処理部と、を有する。
【0016】
また、上記目的を達成するために本発明の変換方法は、複数の縮小率で画像の解像度を縮小する変換装置における変換方法であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って1つずつ受け付け、予め決められた複数の行方向の縮小率のうち当該画素データを受け付けた順番に応じて定まる縮小率である行方向の適用縮小率と、当該受け付けた順番と、に応じて定まる係数を当該画素データに乗じた第1の処理用データを生成する処理と、
前記生成した第1の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第1の処理済データのそれぞれを生成する処理と、
予め決められた複数の列方向の縮小率のうち前記複数の第1の処理済データのそれぞれが生成された順番に応じて定まる縮小率と、当該第1の処理済データが生成された順番と、に応じて定まる係数を当該第1の処理済データに乗じた第2の処理用データを生成する処理と、
前記画像の行方向の画素数と前記行方向の適用縮小率とに基づいて前記生成した第2の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第2の処理済データを生成する処理と、を有する。
【発明の効果】
【0017】
本発明は以上説明したように構成されているので、画像の解像度を縮小する際に、解像度を縮小する前の画像を構成する複数の画素データのそれぞれを複数の画素ライン単位でラインバッファに格納する必要がない。
【0018】
従って、回路規模の増大を回避しつつ、高性能の回路を用いなくても、行方向および列方向のそれぞれにおいて縮小率を変化させながら1つの画像の解像度を縮小することが可能となる。
【図面の簡単な説明】
【0019】
【図1】面積平均法の原理を説明するための図であり、(a)は解像度を縮小する前の画像の一例を示す図、(b)は解像度を縮小した後の画像の一例を示す図である。
【図2】本発明の変換装置の実施の一形態の構成を示すブロック図である。
【図3】図2に示した水平処理制御部が備えるスケール順序配列[aH]の一例を示す図である。
【図4】図2に示した水平処理制御部が備える係数表RHの一例を示す図である。
【図5】図2に示した水平処理部および垂直処理部に対して発行される命令コードの種類を説明するための図である。
【図6】図2に示した水平処理部および垂直処理部に対して発行される命令コードの種類毎にレジスタに格納される値の一例を示す図である。
【図7】図2に示した水平処理制御部の動作を説明するためのフローチャートである。
【図8】図2に示した垂直処理制御部の動作を説明するためのフローチャートである。
【図9】ラスタスキャンの順番に従って画像の解像度を縮小する方法の一例を説明するための図であり、(a)は解像度を縮小する前の画像を示す図、(b)は解像度を縮小するための構成を説明するための図である。
【発明を実施するための形態】
【0020】
以下に、本発明の実施の形態について図面を参照して説明する。
【0021】
本実施形態では、画像の解像度を縮小するためのアルゴリズムとして面積平均法を用いた場合について説明する。
【0022】
まず、面積平均法の原理について説明する。
【0023】
図1は、面積平均法の原理を説明するための図であり、(a)は解像度を縮小する前の画像の一例を示す図、(b)は解像度を縮小した後の画像の一例を示す図である。
【0024】
図1では、行方向および列方向ともに5画素の画像を、行方向および列方向ともに2画素の画像に解像度を縮小する場合を一例として示している。つまり、行方向および列方向縮小率をともに、p:(pn+q)(但し、n,p,qは自然数、qはp−1以下の値)と表した場合、図1に示す例は、(2:5=2:(2×2+1))の場合であり、p=2、n=2、q=1の場合にあたる。
【0025】
なお、pは1であってもよいが、pが2以上の自然数の場合について適用することに本発明の特徴がある。例えばp=2,q=1とすれば、2:(2n+1)となり、すなわち、2/3、2/5、2/7、 ・・・となる。
【0026】
面積平均法を用いた場合、解像度を縮小した後の1つの画素を示す画素データw1を求める式は、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをvtとすると、以下の式(1)にて表される。なお、Lは、解像度を縮小する前の画像の行方向の画素数である。
【0027】
1=v1+v2+(1/2)v3+vL+1+vL+2+(1/2)vL+3+(1/2)(v2L+1+v2L+2)+(1/4)v2L+3・・・式(1)
上記の式(1)において係数に着目すると、係数が1のものは、v1,v2,vL+1,vL+2であり、係数が(1/2)のものは、v3,vL+3,v2L+1,v2L+2であり、係数が(1/4)のものは、v2L+3となっている。
【0028】
また、図1(b)において画素データw1が示す画素に隣接する画素を示す画素データw2においても、画素データw1と同様に、v3,vL+3の係数は(1/2)であり、v2L+3の係数は(1/4)となる。
【0029】
図2は、本発明の変換装置の実施の一形態の構成を示すブロック図である。
【0030】
本実施形態の変換装置10は図2に示すように、水平処理部11と、水平処理制御部12と、垂直処理部13と、垂直処理制御部14とを備えている。
【0031】
水平処理部11は、1画素分の画素データの記憶容量をもつレジスタGを備えている。水平処理部11は、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データvtのそれぞれをラスタスキャンの順番に従ってクロックサイクル毎に1つずつ受け付ける。そして、水平処理部11は、1または、R(pH,rH)もしくはR(pH,(pH−rH))で表される係数を、受け付けた画素データvtに乗じた第1の処理用データを生成する。なお、R(pH,rH)およびR(pH,(pH−rH))で表される係数は、後述する水平処理制御部12が備える係数表RHによって定まる0以上1未満の2進数の値である。また、pHは、行方向の縮小率を(pH:pHH+qH)と表したときのpHであり、rHはpH以下の自然数である。そして、水平処理部11は、当該クロックサイクルにおいて水平処理部11に対して発行されている命令コードの種類に応じた処理を実行する。この処理には、生成した第1の処理用データを加算していくことにより、解像度が縮小された画像を構成する複数の画素のそれぞれの一部を示す第1の処理済データutを生成して出力する処理が含まれる。なお、命令コードの種類と、水平処理部11が命令コードの種類に応じて実行する処理との詳細については後述する。
【0032】
水平処理制御部12は、値を格納するレジスタA1,A2,B,Eを備えている。なお、以降、レジスタA1に格納された値をA1と表記する。また、レジスタA1に格納された値が例えば1であるとき、A1=1と表記する。レジスタA2,B,Eおよび後述する垂直処理制御部14が備えるレジスタについても同様に表記する。水平処理制御部12は、水平処理部11に対して発行する命令コードの種類を、レジスタA1,A2,B,Eに値を格納することによって決定する。なお、水平処理制御部12は、垂直同期信号および水平同期信号を検知したかどうかを確認し、その確認結果に基づいて水平処理部11に対して発行する命令コードを決定する。垂直同期信号および水平同期信号の詳細、および、水平処理制御部12が水平処理部11に対して発行する命令コードを決定する動作の詳細については、後述する動作フローにおいて説明する。また、水平処理制御部12は、水平処理部11が画素データvtに乗じる係数を決定するためのスケール順序配列[aH]と係数表RHとを備えている。
【0033】
図3は、図2に示した水平処理制御部12が備えるスケール順序配列[aH]の一例を示す図である。
【0034】
図3に示すスケール順序配列[aH]において「aH」の列は1から始まるシリアルな値となっている。そして、「aH」の列の値と、その行の「pH」、「qH」、「nH」の列の値とが対応付けられている。
【0035】
すなわち、スケール順序配列[aH]には、行方向の縮小率が複数示されているとともに、その複数の行方向の縮小率のうち水平処理部11にて受け付けられる複数の画素データvtのそれぞれに適用する縮小率である適用縮小率が、適用する順番に示されていることになる。図3に示した例では、最初の適用縮小率がpH:(pHH+qH)=2:3となり、その次の適用縮小率がpH:(pHH+qH)=2:5となる。
【0036】
なお、スケール順序配列[aH]の「pH」、「qH」、「nH」の列の値は、解像度の縮小を実行する前に予め格納されている。このとき、pHの値と(pHH+qH)の値とが互いに素の関係となるようしておく。例えば行方向の縮小率を2:5とする場合、pH=4、qH=2、nH=2等ではなく、pH=2、qH=1、nH=1とする。
【0037】
図4は、図2に示した水平処理制御部12が備える係数表RHの一例を示す図である。
【0038】
図4に示す係数表RHには、pHとrHとに対応付けられ、画素データvtに乗ずる係数が格納されている。
【0039】
図4に示す係数表RHを用いた場合、例えばpHの値がp1であり、rHの値が1であるとすると、画素データvtには1/p1または(p1−1)/p1が係数として乗じられることになる。なお、図4において係数は、10進数の整数または分数で表記されているが、上述したように、係数表RHに格納されている値は2進数値である。例えば、例えばpHの値が2であり、パラメーターrHの値が1である場合、係数は1/2の分数となるが、これを2進数にした0.1が格納されていることになる。
【0040】
垂直処理部13は、解像度を縮小する前の画像の行方向の画素数、すなわちLワードの記憶容量のシフトレジスタHを備えている。垂直処理部13は、水平処理部11から出力された第1の処理済データutを受け付ける。そして、垂直処理部13は、1または、R(pV,rV)もしくはR(pV,(pV−rV))で表される係数を、受け付けた第1の処理済データutに乗じた第2の処理用データを生成する。なお、R(pV,rV)およびR(pV,(pV−rV))で表される係数は、後述する垂直処理制御部14が備える係数表RVによって定まる0以上1未満の2進数の値である。また、pVは、列方向の縮小率を(pV:pVV+qV)と表したときのpVであり、rVはpV以下の自然数である。そして、垂直処理部13は、当該クロックサイクルにおいて垂直処理部13に対して発行されている命令コードの種類に応じた処理を実行する。この処理には、生成した第2の処理用データを加算していくことにより、解像度が縮小された画像を構成する複数の画素のそれぞれを示す第2の処理済データを生成して出力する処理が含まれる。なお、命令コードの種類と、垂直処理部13が命令コードの種類に応じて実行する処理の詳細については後述する。
【0041】
垂直処理制御部14は、値を格納するレジスタC1,C2,D,Fを備えている。水平処理制御部12は、垂直処理部13に対して発行する命令コードの種類を、C1,C2,D,Fに値を格納することによって決定する。なお、垂直処理制御部14は、垂直同期信号および水平同期信号を検知したかどうかを確認し、その確認結果に基づいて垂直処理部13に対して発行する命令コードを決定する。垂直処理制御部14が垂直処理部13に対して発行する命令コードを決定する動作の詳細については、後述する動作フローにおいて説明する。また、垂直処理制御部14は、垂直処理部13にて受け付けられた第1の処理済データutに乗じる係数を決定するためのスケール順序配列[aV]と係数表RVとを備えている。垂直処理制御部14が備えるスケール順序配列[aV]は、水平処理制御部12が備えるスケール順序配列[aH]と同様の構成である。但し、スケール順序配列[aV]には、pV,qV,nVのそれぞれの値が、1から始まるシリアルな値であるaVのそれぞれと対応付けられている。また、垂直処理制御部14が備える係数表RVは、水平処理制御部12が備える係数表RHと同様の構成である。但し、垂直処理制御部14が備える係数表RVには、PVとrVとに対応付けられ、第1の処理済データutに乗じる係数が2進数値で格納されている。
【0042】
レジスタIは、後続の処理に応じた容量をもつシフトレジスタ、または、FIFO(First In First Out)、または、フレームバッファメモリである。レジスタIは、EとFとの論理積(E×F)が1である場合に、垂直処理部13から出力された第2の処理済データを格納する。これにより、解像度が縮小された画像を構成する複数の画素のそれぞれを示す複数の画素データwtのそれぞれがラスタスキャンの順番に従ってレジスタIに格納されていくことになる。なお、レジスタIは、後続の処理が例えば閾値を用いた2値化であれば、1ワード分の容量のレジスタでよい。また、レジスタIは、後続の処理が例えば複雑な処理であれば、ランダムアクセスが可能なフレームバッファメモリとなる。つまり、レジスタIは、後続の処理に必要な読み出し方式に応じて決定すればよい。
【0043】
ここで、図2に示した水平処理部11および垂直処理部13に対して発行される命令コードの種類と、水平処理部11および垂直処理部13が命令コードの種類に応じて実行する処理とについて説明する。
【0044】
図5は、図2に示した水平処理部11および垂直処理部13に対して発行される命令コードの種類を説明するための図である。また、図6は、図2に示した水平処理部11および垂直処理部13に対して発行される命令コードの種類毎にレジスタに格納される値の一例を示す図である。
【0045】
命令コードの種類としては図5に示すように、op1,op2,op3の3つがある。なお、op3にだけパラメーターとしてrH,rVが設定されている。
【0046】
水平処理部11および垂直処理部13は、当該クロックサイクルにおいてそれぞれに対して発行されている命令コードの種類に応じて図5に示す処理を行う。
【0047】
なお、命令コードの種類がop1である場合、水平処理部11は図5に示すように、受け付けた画素データvtをそのまま、第1の処理用データとしてレジスタGに格納する。この動作は、受け付けた画素データvtに1を乗じて第1の処理用データとしてレジスタGに格納することと同意である。これは、命令コードの種類がop1である場合の垂直処理部13の動作についても同様である。
【0048】
また、図6に示すように、rH,rV,A1,A2,B,C1,C2,D,E,Fは、図5に示した命令コードの種類に応じて異なる。
【0049】
垂直処理部13は、E=1のとき、すなわち水平処理部11に対して発行されている命令コードがop3(r)のクロックサイクルにおいてのみ、そのクロックサイクルにおいて垂直処理部13に対して発行されている命令コードの種類に応じた処理を行う。
【0050】
なお、図6において「X」は任意の値であり、その値が水平処理部11および垂直処理部13の動作に何ら影響を与えないことを示している。
【0051】
以下に、上記のように構成された変換装置10の動作について説明するが、その前に、水平処理制御部12および垂直処理制御部14にて検知される垂直同期信号および水平同期信号について説明する。
【0052】
垂直同期信号は、1つの画像の解像度の縮小を開始する際に、水平処理制御部12および垂直処理制御部14にて検知される。
【0053】
水平処理制御部12および垂直処理制御部14は、垂直同期信号を検知すると、それぞれが備える各レジスタに格納された値を初期化、つまり0にする。また、水平処理制御部12および垂直処理制御部14は、垂直同期信号を検知すると、後述する変数を初期値に戻す。また、垂直処理制御部14は、垂直同期信号を検知すると、垂直処理部13が備えるレジスタHに格納された値を全て0に初期化する。
【0054】
水平同期信号は、1つの画像の解像度の縮小を開始する際、および、解像度を縮小する前の画像の1つの行の全ての画素データvtに対する処理が完了すると、水平処理制御部12および垂直処理制御部14にて検知される。
【0055】
水平処理制御部12は、水平同期信号を検知すると、水平処理制御部12が備えるレジスタに格納された値を初期化、つまり0にする。また、水平処理制御部12は、水平同期信号を検知すると、後述する変数を初期値に戻す。また、水平処理制御部12は、水平同期信号を検知すると、水平処理部11が備えるレジスタGに格納された値を0に初期化する。
【0056】
なお、垂直同期信号および水平同期信号は例えば、ラスタスキャンの順番に従って画素データvtを変換装置10へ出力する出力装置等から出力される。
【0057】
以下に、変換装置10の動作について説明する。まず、図2に示した水平処理制御部12の動作について説明する。
【0058】
図7は、図2に示した水平処理制御部12の動作を説明するためのフローチャートである。
【0059】
水平処理制御部12は、水平同期信号または垂直同期信号を検知したかどうかを確認する(ステップS1)
ステップS1における確認の結果、水平同期信号または垂直同期信号を検知した場合、水平処理制御部12は、変数iHを定義してiH=1とする(ステップS2)。
【0060】
次に、水平処理制御部12は、aH=1とする(ステップS3)。
【0061】
次に、水平処理制御部12は、スケール順序配列[aH]から、aH=1に対応するpH,qH,nHを抽出する(ステップS4)。
【0062】
そして、水平処理部11は、ステップS4において抽出したpH,qH,nHから(pHH+qH)の値を算出し、算出した値を記憶する(ステップS5)。
【0063】
次に、水平処理制御部12は、変数jHを定義してjH=pHとする(ステップS6)。なお、ここでは、上述したステップS4にて抽出されたpHによってjH=pHとする。
【0064】
次に、水平処理制御部12は、A1=0,B=0、E=0とする(ステップS7)。図6を参照するとこれは、命令コードop1に対応する。つまり、水平処理部11に対して命令コードop1が発行されることになる。
【0065】
そして、水平処理制御部12は、変数jHを(jH+pH)に更新する(ステップS8)。
【0066】
その後、水平処理部11が命令コードop1に従って動作してからステップS1の動作へ遷移する。
【0067】
一方、ステップS1における確認の結果、水平同期信号または垂直同期信号を検知していない場合、水平処理制御部12は、記憶している(pHH+qH)の値と変数iHとが一致するかどうかを判定する(ステップS9)。
【0068】
ステップS9における判定の結果、記憶している(pHH+qH)の値と変数iHとが一致する場合、水平処理制御部12は、変数iHを改めて定義してiH=1とする(ステップS10)。
【0069】
次に、水平処理制御部12は、aHを(aH+1)に更新する(ステップS11)。
【0070】
次に、水平処理制御部12は、スケール順序配列[aH]から、更新されたaHに対応するpH,qH,nHを抽出する(ステップS12)。
【0071】
次に、水平処理部11は、ステップS12において抽出したpH,qH,nHから(pHH+qH)の値を算出し、既に記憶している値に代えて、算出した値を記憶する(ステップS13)。
【0072】
そして、ステップS6の動作へ遷移し、水平処理制御部12は、変数jHを改めて定義してjH=pHとする。なお、ここでは、上述したステップS12にて抽出されたpHによってjH=pHとする。
【0073】
一方、ステップS9における判定の結果、記憶している(pHH+qH)の値と変数iHとが一致しない場合、水平処理制御部12は、変数iHを(iH+1)に更新する(ステップS14)。
【0074】
次に、水平処理制御部12は、記憶している(pHH+qH)の値が変数jHよりも大きいかどうかを判定する(ステップS15)。
【0075】
ステップS15における判定の結果、記憶している(pHH+qH)の値が変数jHよりも大きな場合、水平処理制御部12は、A1=0,B=1、E=0とする(ステップS16)。図6を参照するとこれは、命令コードop2に対応する。つまり、水平処理部11に対して命令コードop2が発行されることになる。
【0076】
そして、水平処理制御部12は、変数jHを(jH+pH)に更新する(ステップS17)。
【0077】
その後、水平処理部11が命令コードop2に従って動作してからステップS1の動作へ遷移する。
【0078】
一方、ステップS15における判定の結果、記憶している(pHH+qH)の値が変数jH以下である場合、水平処理制御部12は、rH=(pH−(pHH+qH))を算出し、A1=1,A2=1,B=0、E=1とする(ステップS18)。図6を参照するとこれは、命令コードop3(rH)に対応する。つまり、水平処理部11に対して命令コードop3(rH)が発行されることになる。
【0079】
そして、水平処理制御部12は、変数jHを(jH−(pHH+qH)+pH)に更新する(ステップS19)。
【0080】
その後、水平処理部11が命令コードop3(rH)に従って動作してからステップS1の動作へ遷移する。
【0081】
次に、図2に示した垂直処理制御部14の動作について説明する。
【0082】
図8は、図2に示した垂直処理制御部14の動作を説明するためのフローチャートである。
【0083】
垂直処理制御部14は、水平同期信号を検知したかどうかを確認する(ステップS21)。
【0084】
ステップS1における確認の結果、水平同期信号を検知していない場合、水平同期信号の検知の確認を継続する。
【0085】
一方、ステップS1における確認の結果、水平同期信号を検知した場合、垂直処理制御部14は、垂直同期信号を検知したかどうかを確認する(ステップS22)。
【0086】
以降のステップS23〜S40の動作は、図7に示したフローチャートにおけるステップS2〜S19の動作と同様なので、説明を省略する。
【0087】
但し、垂直処理制御部14は、自身が備えるスケール順序配列[aV]を参照する。また、垂直処理制御部14は、レジスタC1,C2,D,Fに値を格納する。
【0088】
また、ステップS29、ステップS38、ステップS40のそれぞれの動作の後、垂直処理部13が命令コードop1、op2、op3(rV)のそれぞれに従って動作してからステップS21の動作へ遷移する。
【0089】
次に、図2に示した変換装置10において画像の解像度を縮小する動作について、上述した図7および図8を参照しながら説明する。なお、ここでは、水平処理制御部12が備えるスケール順序配列[aH]においてaH=1に対応するpH,qH,nHの値がpH=2、qH=1、nH=1であり、垂直処理制御部14が備えるスケール順序配列においてaV=1に対応するpV,qV,nVの値がpV=2、qV=1、nV=1である場合について説明する。すなわち、行方向および列方向ともに、最初の適用縮小率が2:3である場合の動作について説明する。
【0090】
上述したように、1つの画像の解像度の縮小を開始する際には、水平処理制御部12および垂直処理制御部14において垂直同期信号および水平同期信号が検知される。これにより、水平処理制御部12において、図7のフローチャートのステップS2〜S8の動作が実行され、A1=0、B=0,E=0となる。図6を参照すると水平処理部11に対して命令コードop1が発行されることになる。また、aH=1、変数iH=1、変数jH=4となる。
【0091】
また、垂直処理制御部14において、上述した図8のフローチャートのステップS23〜S29の動作が実行され、C1=0、D=0、F=0となる。図6を参照すると垂直処理部13に対して命令コードop1が発行されることになる。また、aV=1、変数iV=1、変数jV=4となる。
【0092】
次に、水平処理部11は、時刻t=1のクロックサイクルにおいて、解像度を縮小する前の画像を構成する複数の画素を示す複数の画素データvtのうちの1つをラスタスキャンの順番に従って受け付ける。ここでは、1行目の左端の画素を示す画素データv1を受け付ける。
【0093】
次に、水平処理部11および垂直処理部13は、それぞれに対して発行されている命令コードの種類に応じた処理を実行する。ここでは、水平処理部11に対して命令コードop1が発行されている。そのため、水平処理部11は、受け付けた画素データv1をそのまま、第1の処理用データとしてレジスタGに格納する。なお、水平処理部11に対して命令コードop1が発行されている場合、E=0である。そのため、垂直処理部13は、何の処理も実行しない。
【0094】
次に、水平処理制御部12は、図7のフローチャートのステップS1の動作に従い、水平同期信号または垂直同期信号を検知したかどうかを判定する。
【0095】
ここでは、水平処理制御部12は、水平同期信号および垂直同期信号のいずれも検知しない。従って、図7のフローチャートのステップS9の動作に従い、変数iHが(pHH+qH)と一致するかどうかが判定される。ここでは、変数iH=1であり、(pHH+qH)=3である。そのため、水平処理制御部12において、図7のフローチャートのステップS14の動作に従い、変数iHが(iH+1)に更新される。すなわち、変数iH=2となる。
【0096】
そして、図7のフローチャートにおけるステップS15の動作に従い、(pHH+qH)が変数jHよりも大きいかどうかが判定される。ここでは、変数jH=4であり、(pHH+qH)=3である。そのため、水平処理制御部12において、図7のフローチャートのステップS18の動作に従い、rH=pH−(jH−(pHH+qH))によってパラメーターrHが算出され、パラメーターrH=1となる。また、A1=1、A2=1、B=0、E=1となる。図6を参照すると水平処理部11に対して命令コードop3(1)が発行されることになる。
【0097】
また、図7のフローチャートのステップS19の動作に従い、変数jH=(jH−(pHH+qH)+pH)=3となる。なお、垂直処理制御部14において水平同期信号が検知されていないため、垂直処理部13に対して発行されている命令コードはop1のままとなる。
【0098】
次に、水平処理部11は、時刻t=2のクロックサイクルにおいて、ラスタスキャンの順番に従い、画素データv1が示す画像と行方向に隣接する画素を示す画素データv2の入力を受け付ける。
【0099】
次に、水平処理部11および垂直処理部13は、それぞれに対して発行されている命令コードの種類に応じた処理を実行する。ここでは、水平処理部11に対して命令コードop3(1)が発行され、垂直処理部13に対して命令コードop1が発行されている。
【0100】
水平処理部11は、係数表RHを参照することにより、受け付けた画素データv2に(rH/pH)を乗じた第1の処理用データを生成する。ここでは、受け付けた画素データv2に1/2(2進数で0.1)を乗じた第1の処理用データ(1/2)v2が生成される。
【0101】
そして、水平処理部11は、レジスタGに格納されている第1の処理用データv1に、生成した第1の処理用データ(1/2)v2を加算した第1の処理済データut(v1+(1/2)v2)を生成して出力する。
【0102】
また、水平処理部11は、レジスタGに格納されている第1の処理用データv1に代えて、係数表RHを参照することにより、受け付けた画素データv2に((pH−rH)/pH)を乗じて、すなわち、1/2(2進数で0.1)を乗じて第1の処理用データ((1/2)v2)としてレジスタGに格納する。
【0103】
ここでは、E=1であり、また、垂直処理部13に対して命令コードop1が発行されている。従って、垂直処理部13は、水平処理部11から出力された第1の処理済データut(v1+(1/2)v2)をそのまま、第2の処理用データとしてシフトレジスタHの入力端に格納する。
【0104】
次に、水平処理制御部12は、図7のフローチャートのステップS1の動作に従い、水平同期信号または垂直同期信号を検知したかどうかを判定する。
【0105】
ここでは、水平処理制御部12は、水平同期信号および垂直同期信号のいずれも検知しない。従って、図7のフローチャートにおけるステップS9に従い、変数iHが(pHH+qH)と一致するかどうかが判定される。ここでは、変数iH=2であり、(pHH+qH)=3である。そのため、水平処理制御部12において、図7のフローチャートにおけるステップS14の動作に従い、変数iHが(iH+1)に更新される。すなわち、変数i=3となる。
【0106】
そして、図7のフローチャートのステップS15の動作に従い、(pHH+qH)が変数jHよりも大きいかどうかが判定される。ここでは、変数jH=3であり、(pHH+qH)=3である。そのため、水平処理制御部12において、図7のフローチャートのステップS18の動作に従い、rH=pH−(jH−(pHH+qH))によってパラメーターrHが算出され、パラメーターrH=2となる。また、A1=1、A2=1、B=0、E=1となる。図5を参照すると水平処理部11に対して命令コードop3(2)が発行されることになる。また、図7のフローチャートのステップS19の動作に従い、変数jH=(jH−(pHH+qH)+pH)=2となる。なお、垂直処理制御部14において水平同期信号が検知されていないため、垂直処理部13に対して発行されている命令コードはop1のままとなる。
【0107】
次に、水平処理部11は、時刻t=3のクロックサイクルにおいて、ラスタスキャンの順番に従い、画素データv2が示す画素と行方向に隣接する画素を示す画素データv3の入力を受け付ける。
【0108】
次に、水平処理部11および垂直処理部13は、それぞれに対して発行されている命令コードの種類に応じた処理を実行する。ここでは、水平処理部11に対して命令コードop3(2)が発行され、垂直処理部13に対して命令コードop1が発行されている。
【0109】
水平処理部11は、係数表RHを参照することにより、受け付けた画素データv3に(rH/pH)を乗じた第1の処理用データを生成する。ここでは、受け付けた画素データv3に2/2(2進数で1)を乗じた第1の処理用データv3が生成される。
【0110】
そして、水平処理部11は、レジスタGに格納されている第1の処理用データ(1/2)v2に、生成した第1の処理用データv3を加算した第1の処理済データut((1/2)v2+v3)を生成して出力する。
【0111】
ここでは、E=1であり、また、垂直処理部13に対して命令コードop1が発行されている。従って、垂直処理部13は、シフトレジスタHに格納されている第2の処理用データを1ワード分、出力端側へシフトする。
【0112】
そして、垂直処理部13は、水平処理部11から出力された第1の処理済データut((1/2)v2+v3)をそのまま、第2の処理用データとしてシフトレジスタHの入力端に格納する。これにより、シフトレジスタHには入力端側から順番に、((1/2)v2+v3)、(v1+(1/2)v2)が格納されることになる。
【0113】
次に、水平処理制御部12は、図7のフローチャートのステップS1の動作に従い、水平同期信号または垂直同期信号を検知したかどうかを判定する。
【0114】
以降、解像度を縮小する前の画像の行方向の画素数が4画素以上である場合と、3画素である場合とに分けて説明する。
【0115】
まず、解像度を縮小する前の画像の行方向の画素数が4画素以上である場合について説明する。
【0116】
この場合、解像度を縮小する前の画像の1行目の全ての画素データvtに対する処理が完了していないため、水平処理制御部12は、水平同期信号または垂直同期信号のいずれも検知しない。
【0117】
従って、図7のフローチャートにおけるステップS9の動作に従い、変数iHが(pHH+qH)と一致するかどうかが判定される。ここでは、変数iH=3であり、(pHH+qH)=3である。そのため、水平処理制御部12において、図7のフローチャートのステップS10〜S13およびステップS6〜S8動作が実行される。
【0118】
具体的には、aHが(aH+1)に更新されるとともに、変数i,jおよびA1、B、Eが、画素データv1に対する処理を実行する際の値と同じ値になる。これにより、以降の動作では、スケール順序配列[aH]においてaH=2に対応するpH,qH,nHに基づいた縮小率で画像の解像度の縮小が実行されることになる。
【0119】
なお、垂直処理制御部14は、水平同期信号を検知しないため、垂直処理部13に対して発行される命令コードに変化はない。従って、垂直処理部13は、垂直処理制御部14において水平同期信号が検知されるまでの間、E=1になる度に命令コードop1に従った処理を行うことになる。
【0120】
次に、解像度を縮小する前の画像の行方向の画素数が3画素である場合について説明する。
【0121】
この場合、解像度を縮小する前の画像の1行目の全ての画素データvtに対する処理が完了しているため、水平処理制御部12は、水平同期信号を検知する。
【0122】
従って、水平処理制御部12において、図7のフローチャートのステップS2〜S8の動作が実行される。
【0123】
具体的には、aHが1に更新されるとともに、変数i,jおよびA1、B、Eが、画素データv1を処理する際の値と同じ値になる。
【0124】
また、垂直処理制御部14は、水平同期信号を検知し、垂直同期信号を検知しないため、図8のフローチャートのステップS30に従い、変数iVが(pVV+qV)と一致するかどうかが判定される。ここでは、変数iV=1であり、(pVV+qV)=3である。そのため、垂直処理制御部14において、図8のフローチャートにおけるステップS35の動作に従い、変数iVが(iV+1)に更新される。すなわち、変数iV=2となる。
【0125】
そして、図8のフローチャートのステップS36の動作に従い、(pVV+qV)が変数jVよりも大きいかどうかが判定される。ここでは、変数jV=4であり、(pVV+qV)=3である。そのため、垂直処理制御部14において、図8のフローチャートのステップS39の動作に従い、rV=pV−(jV−(pVV+qV))によってパラメーターrVが算出され、パラメーターrV=1となる。また、C1=1、C2=1、B=0、F=1となる。図6を参照すると垂直処理部13に対して命令コードop3(1)が発行されることになる。また、図8のフローチャートのステップS40の動作に従い、変数jV=(jV−(pVV+qV)+pV)=3となる。
【0126】
ここで、垂直処理部13に対して発行された命令コードop3(1)は、解像度を縮小する前の画像の2行目の画素データに対する処理を実行する間、変更されない。従って、この間、Fは1のままとなる。また、解像度を縮小する前の画像の2行目の複数の画素のそれぞれを示す複数の画素データのうち2番目に水平処理部11にて受け付けられる画素データに対する処理を実行する際には、水平処理部11に対して発行される命令コードはop3(2)となり、E=1となる。つまり、EとFとの論理積が1となる。
【0127】
従って、解像度を縮小する前の画像の2行目の複数の画素のそれぞれを示す複数の画素データのうち2番目に受け付けられる画素データを処理する際には、垂直処理部13は、受け付けた第1の処理済データut(vL+1+(1/2)vL+2)に1/2を乗じた第2の処理用データを生成する。
【0128】
次に、垂直処理部13は、生成した第2の処理用データ(1/2)(vL+1+(1/2)vL+2)と、シフトレジスタHの出力端に格納されている第2の処理用データ(v1+(1/2)v2)とを加算した第2の処理済データを生成する。
【0129】
そして、生成された第2の処理済データ(v1+(1/2)v2+(1/2)vL+1+(1/4)vL+2)が出力されてレジスタIに格納される。
【0130】
この第2の処理済データ(v1+(1/2)v2+(1/2)vL+1+(1/4)vL+2)が、行方向に3画素の画像を、行方向および列方向の縮小率2:3で縮小した後の画像を構成する複数の画素のうち1行目の左端の画素を示す画素データとなる。
【0131】
なお、この段階では、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれに乗じた係数の和は、1よりも大きい(2.25となっている)。縮小した画素データの絶対値の正規化については、必要に応じて別途行うものとする。
【0132】
さらに、垂直処理部13は、垂直処理部13に対して発行されている命令コードop3(1)に従い、シフトレジスタHに格納されている第2の処理用データを1ワード分、出力端側へシフトする。
【0133】
次に、垂直処理部13は、受け付けた第1の処理済データut((vL+1+(1/2)vL+2))に1/2を乗じて生成した第2の処理用データ(1/2)(vL+1+(1/2)vL+2)をシフトレジスタHの入力端に格納する。
【0134】
そして、解像度を縮小する前の画像の3行目の複数の画像のそれぞれを示す複数の画素データのうち2番目に水平処理部11にて受け付けられる画素データを処理する際に、垂直処理部13は、シフトレジスタHに格納された第2の処理用データ((1/2)(vL+1+(1/2)vL+2))と、受け付けた第1の処理済データut(v2L+1+(1/2)v2L+2)を命令コードop3(2)に従って2/2を乗じて生成した第2の処理用データ(v2L+1+(1/2)v2L+2)とを加算した第2の処理済データを生成する。
【0135】
そして、生成された第2の処理済データ((1/2)vL+1+(1/4)vL+2+v2L+1+(1/2)v2L+2)が出力されてレジスタIに格納される。
【0136】
このとき、垂直処理部13は、命令コードop3(2)に従い、受け付けた第1の処理済データut(v2L+1+(1/2)v2L+2)に0/2を乗じた第2の処理用データを生成してシフトレジスタHの入力端に格納する。この場合、シフトレジスタHの入力端に格納された第2の処理用データは0となるが、解像度を縮小する前の画像の4行目の画素データを処理する間、垂直処理部13には命令コードop1が発行され、E=0となる。そのため、シフトレジスタHにどのような第2の処理用データが格納されていても、結果に影響はない。
【0137】
以降、解像度を縮小する前の画像の行方向の画素数が4画素以上である場合も、3画素である場合も、水平処理部11は、上述したのと同様に、ラスタスキャンの順番に従ってクロックサイクル毎に1つの画素データvtを受け付け、そのクロックサイクルにおいて水平処理部11に対して発行されている命令コードに応じた処理を実行していく。
【0138】
その際、上述したのと同様に、変数iHが1つずつ増加していき、変数iHと(pHH+qH)とが一致すると、水平処理制御部12は、図7のフローチャートのステップS10〜S13およびステップS6〜S8に従って動作する。すなわち、変数iHと(pHH+qH)とが一致すると、スケール順序配列[aH]において、次のaHの値に対応するpH,qH,nHが参照されて、行方向の適用縮小率が変化することになる。
【0139】
一方、垂直処理制御部14は、解像度を縮小する前の画像の1つの行の画素データvtを処理する間、変数iVを変えずに垂直処理部13を動作させる。そして、水平処理部11において解像度を縮小する前の画像の1つの行の全ての画素データvtの処理が完了する度に、すなわち水平同期信号を検知する度に、変数iVが1つずつ増加していく。
【0140】
そして、変数iVと(pVV+qV)が一致すると、垂直処理制御部14は、図8のフローチャートのステップS31〜S34およびステップS27〜S29に従って動作する。すなわち、変数iVと(pVV+qV)とが一致すると、スケール順序配列[aV]において、次のaVの値に対応するpv,qV,nVが参照されて、列方向の適用縮小率が変化することになる。
【0141】
このように本実施形態において変換装置10は、解像度を縮小する前の画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って1つずつ受け付け、予め決められた複数の行方向の縮小率のうち当該画素データを受け付けた順番に応じて定まる縮小率である行方向の適用縮小率と、当該受け付けた順番と、に応じて定まる係数を当該画素データに乗じた第1の処理用データを生成する。
【0142】
そして、変換装置10は、生成した第1の処理用データを加算していくことにより、解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第1の処理済データのそれぞれを生成する。
【0143】
また、変換装置10は、予め決められた複数の列方向の縮小率のうち複数の第1の処理済データのそれぞれが生成された順番に応じて定まる列方向の縮小率と、当該第1の処理済データが生成された順番と、に応じて定まる係数を当該第1の処理済データに乗じた第2の処理用データを生成する。
【0144】
そして、変換装置10は、解像度を縮小する前の画像の行方向の画素数と上記の行方向の適用縮小率とに基づき、生成した第2の処理用データを加算していくことにより、解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第2の処理済データを生成する。
【0145】
これにより、画像の解像度を縮小する際に、解像度を縮小する前の画像を構成する複数の画素データのそれぞれを複数の画素ライン単位でラインバッファに格納する必要がない。
【0146】
上述した実施形態においてレジスタの容量は、たかだか(pL/(pn+q)+数ワード、すなわち((p/(pn+q))<1)である。これは、解像度を縮小する前の画像の1行分の画素を示す画素データの格納に必要な容量よりも小さい規模である。この規模は、解像度をより縮小する(nを大きくする)とさらに小さくなる。
【0147】
従って、回路規模の増大を回避しつつ、高性能の回路を用いなくても、行方向および列方向のそれぞれにおいて縮小率を変化させながら1つの画像の解像度を縮小することが可能となる。例えば縮小率が格子状に分布するように画像の解像度を縮小することができる。
【0148】
なお、本実施形態においては、1つの画像の解像度を縮小している途中でスケール順序配列を変更すると、その1つの画像について解像度を縮小する処理を完了させることができない。但し、解像度を縮小する対象となる画像を切り替えるタイミングでスケール順序配列を変更することは可能である。そのため、垂直同期信号に合わせて、スケール順序配列および係数表を更新することにより、例えば動画像の複数のフレーム毎に、異なる縮小率で画像の解像度の縮小を行うことができる。
【0149】
また、水平処理部11および垂直処理部13において係数表に格納された係数は、0以上1未満の2進数値である。そのため、除算することなく係数を決定することができ、除算器を必要としない分だけさらに回路規模を縮小することができる。
【0150】
なお、垂直処理部13の後段に、平面処理部とその平面処理部を制御する制御部とを自己相似的に設ける構成にすれば、3次元の格子に対して解像度縮小を行うこともできる。これは、任意のN次元まで拡張することも可能である。
【符号の説明】
【0151】
10 変換装置
11 水平処理部
12 水平処理制御部
13 垂直処理部
14 垂直処理制御部

【特許請求の範囲】
【請求項1】
複数の縮小率で画像の解像度を縮小する変換装置であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って1つずつ受け付け、予め決められた複数の行方向の縮小率のうち当該画素データを受け付けた順番に応じて定まる縮小率である行方向の適用縮小率と、当該受け付けた順番と、に応じて定まる係数を当該画素データに乗じた第1の処理用データを生成し、該生成した第1の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第1の処理済データのそれぞれを生成し、該生成した順番に従って1つずつ出力する水平処理部と、
前記水平処理部から出力された複数の第1の処理済データのそれぞれを1つずつ受け付け、予め決められた複数の列方向の縮小率のうち当該第1の処理済データを受け付けた順番に応じて定まる縮小率と、当該受け付けた順番と、に応じて定まる係数を当該第1の処理済データに乗じた第2の処理用データを生成し、前記画像の行方向の画素数と前記行方向の適用縮小率とに基づいて前記生成した第2の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第2の処理済データを生成する垂直処理部と、を有する変換装置。
【請求項2】
請求項1に記載の変換装置において、
前記複数の行方向の縮小率と前記複数の列方向の縮小率とはそれぞれ、p:(pn+q)(但し、n,p,qは自然数、qはp−1以下の値)で表され、
前記係数は、1またはr/p(rはp以下の自然数)または(p−r)/pの2進数値である変換装置。
【請求項3】
複数の縮小率で画像の解像度を縮小する変換装置における変換方法であって、
前記画像を構成する複数の画素のそれぞれを示す複数の画素データのそれぞれをラスタスキャンの順番に従って1つずつ受け付け、予め決められた複数の行方向の縮小率のうち当該画素データを受け付けた順番に応じて定まる縮小率である行方向の適用縮小率と、当該受け付けた順番と、に応じて定まる係数を当該画素データに乗じた第1の処理用データを生成する処理と、
前記生成した第1の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれの一部を示す複数の第1の処理済データのそれぞれを生成する処理と、
予め決められた複数の列方向の縮小率のうち前記複数の第1の処理済データのそれぞれが生成された順番に応じて定まる縮小率と、当該第1の処理済データが生成された順番と、に応じて定まる係数を当該第1の処理済データに乗じた第2の処理用データを生成する処理と、
前記画像の行方向の画素数と前記行方向の適用縮小率とに基づいて前記生成した第2の処理用データを加算していくことにより、前記画像の解像度を縮小した後の画像を構成する複数の画素のそれぞれを示す複数の第2の処理済データを生成する処理と、を有する変換方法。
【請求項4】
請求項3に記載の変換方法において、
前記複数の行方向の縮小率と前記複数の列方向の縮小率とはそれぞれ、p:(pn+q)(但し、n,p,qは自然数、qはp−1以下の値)で表され、
前記係数は、1またはr/p(rはp以下の自然数)または(p−r)/pの2進数値である変換方法。

【図2】
image rotate

【図3】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図1】
image rotate

【図4】
image rotate

【図9】
image rotate