(57)【要約】拡大／縮小率ｓに応じて設定されるそれぞれの補間位置毎に、原画像の各画素の画素値に対する係数を求めて係数ＲＡＭ４に格納する係数演算部２と、クロック生成部１により生成される第２の処理クロックｃｓ２に従ってマトリクス分解部５により抽出される原画像の各画素の画素値と、第１の処理クロックｃｓ１に従って係数メモリ４から読み出される係数とを乗加算することによって補間位置における各画素の画素値を求める係数乗算部６とを備え、実際の補間演算の際には必要な係数を係数ＲＡＭ４から読み出すだけで使用することができるようにして、補間演算の際に係数を算出する必要をなくすとともに、補間演算を行うために大きな画像メモリを用いる必要もなくす。
2007102244.tif 000002
【特許請求の範囲】
【請求項１】
２次元空間上に等間隔に配置された複数の画素によって構成される原画像について、所定の倍率に応じた補間位置における各画素の画素値を上記補間位置の周囲にある上記原画像の画素値から補間演算によって求めることによって画像の拡大／縮小を行う画像拡大縮小装置であって、
上記所定の倍率に応じて設定されるそれぞれの補間位置毎に、所定の補間関数に基づいて、上記補間位置の周囲にある上記原画像の各画素の画素値に対する係数をそれぞれ求める係数演算部と、
上記係数演算部により求められた係数を格納する係数メモリと、
上記補間位置の周囲にある上記原画像の各画素の画素値を抽出するマトリクス分解部と、
上記マトリクス分解部より出力される上記原画像の各画素の画素値と、上記係数メモリから読み出される係数とを乗加算することによって上記補間位置における各画素の画素値を求める係数乗算部とを備えたことを特徴とする画像拡大縮小装置。
【請求項２】
上記原画像の画素間隔に相当する基準クロックおよび上記所定の倍率に基づいて、上記係数メモリの読み出しアドレスに相当する第１の処理クロックおよび、上記マトリクス分解部に対する入力画像信号のディレイ量を制御するための第２の処理クロックを生成するクロック生成部を備え、
上記係数乗算部は、上記第２の処理クロックに従って上記マトリクス分解部より出力される上記原画像の各画素の画素値と、上記第１の処理クロックに従って上記係数メモリから読み出される係数とを乗加算することによって上記補間位置における各画素の画素値を求めるように成され、
上記マトリクス分解部は、上記補間位置の周囲にある上記原画像の各画素の画素値を抽出し、抽出した画素値を上記第２の処理クロックに基づきディレイさせて出力するように成されていることを特徴とする請求の範囲第１項に記載の画像拡大縮小装置。
【請求項３】
上記原画像の画素間隔に相当する基準クロックおよび上記所定の倍率に基づいて、上記基準クロックの所定倍の周波数から成るデータクロックを生成するクロック生成部を備え、
上記マトリクス分解部は、上記補間位置の周囲にある上記原画像の各画素の画素値を上記データクロックに従ってサンプリングして抽出することを特徴とする請求の範囲第１項に記載の画像拡大縮小装置。
【請求項４】
上記クロック生成部は、上記データクロックに対して位相が所定量だけずらされた調整データクロックと、上記データクロックに対して位相が反転した反転データクロックとを更に生成し、
上記マトリクス分解部は、上記補間位置の周囲にある上記原画像の各画素の画素値を上記データクロックの代わりに上記調整データクロックに従ってサンプリングした後、上記反転データクロックに従ってサンプリングし直して抽出することを特徴とする請求の範囲第３項に記載の画像拡大縮小装置。
【請求項５】
上記係数演算部は、上記原画像の互いに隣接する４つの画素で囲まれる矩形のデータ生成エリア内における上記補間位置が変化していって元の同じ位置に戻るまでのクロックサイクルの範囲を対象として上記係数を求め、求めた係数を上記係数メモリに記憶することを特徴とする請求の範囲第１項〜第４項の何れか１項に記載の画像拡大縮小装置。
【請求項６】
２次元空間上に等間隔に配置された複数の画素によって構成される原画像について、所定の倍率に応じた補間位置における各画素の画素値を上記補間位置の周囲にある上記原画像の画素値から補間演算によって求めることによって画像の拡大／縮小を行う画像拡大縮小装置であって、
上記所定の倍率に応じたそれぞれの補間位置毎に設定された係数であって、上記補間位置の周囲にある上記原画像の各画素の画素値に対する係数を格納する係数メモリと、
上記補間位置の周囲にある上記原画像の各画素の画素値を抽出するマトリクス分解部と、
上記マトリクス分解部より出力される上記原画像の各画素の画素値と、上記係数メモリから読み出される係数とを乗加算することによって上記補間位置における各画素の画素値を求める係数乗算部とを備えたことを特徴とする画像拡大縮小装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は画像拡大縮小装置に関し、特に、デジタル画像の拡大および縮小を行う装置に用いて好適なものである。
【背景技術】
【０００２】
従来、画像の拡大あるいは縮小を簡単な処理によって行う方法として、所定間隔で同じ画素を繰り返したり間引いたりする手法が知られている。例えば、Ｘ方向およびＹ方向のそれぞれについて、５画素毎にこの５画素目と同じ画素値を有する画素を挿入することにより、簡易的に１．２倍の拡大画像を得ることができる。反対に、５画素毎に１画素を削除することにより、簡易的に０．８倍の縮小画像を得ることができる。
しかし、このように一定間隔で画素を挿入したり、間引いたりした場合には、拡大後あるいは縮小後の画像が歪むという欠点がある。そのため、画像の拡大や縮小を高精度に行う場合には、このような欠点のない補間処理を用いた手法が汎用されている（例えば、特許文献１参照）。その中には、リサンプリング処理と補間処理との組み合わせから成る画像の拡大縮小方式も存在する（例えば、特許文献２参照）。
【特許文献１】特開平１１−３５３４７３号公報
【特許文献２】特開平９−２５９２６５号公報
【０００３】
上記特許文献２に記載の技術では、例えば画像をｓ倍に拡大（または縮小）する処理の場合、まずは原画像の画素間隔に対して１／ｓ倍の間隔でリサンプリングを行う。これにより、リサンプル点の数は原画像の画素数に比して、縦横ともにｓ倍となる。次に、リサンプル点の近傍にある原画像の画素値を用いて、リサンプル点の画素値を補間演算により求める。そして、求めたリサンプル点の画素値を原画像と同じ元の画素間隔で描くことにより、拡大画像（または縮小画像）を得る。
特許文献２の発明では、補間処理においては計算速度と画質の両者の性能を良くするのが困難であるという理由から、画質を維持しながら高速に拡大縮小処理を行うために、リサンプリング処理を改良して高速化を図っている。すなわち、リサンプリング座標を求めるプロセスを経ず、直接、補間処理で参照すべき近傍画素のアドレスとビット番号を求める手段を用いることにより、リサンプル点の近傍画素の画素値が格納されているメモリ上の位置を高速に算出できるようにしている。
【発明の開示】
【０００４】
しかしながら、上記特許文献２に記載の従来技術では、補間処理に用いる原画像の画素値読み出しを高速化しているものの、補間処理自体の高速化は図られておらず、補間処理には依然として多くの時間がかかってしまうという問題があった。また、補間処理を行うに当たっては処理部の入力側と出力側にそれぞれ大きな画像メモリを必要とし、回路規模が大きくなってしまうという問題もあった。
本発明は、このような問題を解決するために成されたものであり、回路規模を小さくすることができるようにするとともに、拡大縮小処理の全体として動作を高速化できるようにすることを目的とする。
上記した課題を解決するために、本発明では、所定の倍率に応じて設定されるそれぞれの補間位置毎に、所定の補間関数に基づいて、補間位置の周囲にある原画像の各画素の画素値に対する係数をそれぞれ求めて係数メモリにあらかじめ格納しておく。そして、画像処理の際に、補間位置の周囲にある原画像の各画素の画素値と係数メモリから読み出される係数とを乗加算することによって補間位置における各画素の画素値を求めることにより、画像の拡大／縮小処理を行うようにしている。
上記のように構成した本発明によれば、補間演算によって補間位置の画素値を求めるのに必要な係数があらかじめ係数メモリに格納されていて、実際の補間演算の際にはそれを係数メモリから読み出すだけで使用することができるので、補間演算の際に係数を算出する必要がなく、画像の拡大／縮小処理の動作を高速化することができる。また、補間処理を行うために大きな画像メモリを用いる必要もなくなり、装置の回路規模を小さくすることができる。
【図面の簡単な説明】
【０００５】
図１は、第１の実施形態による画像拡大縮小装置の構成例を示す図である。
図２は、第１〜第４の実施形態において用いるユニットマトリクスとデータ生成エリアについて説明するための図である。
図３は、第１〜第４の実施形態において用いるクロックサイクルについて説明するための図である。
図４は、第１〜第４の実施形態において用いる補間関数の例を示す図である。
図５は、第２の実施形態による画像拡大縮小装置の構成例を示す図である。
図６は、第２の実施形態によるクロック生成部、マトリクス分解部およびＤ型フリップフロップの詳細な構成例を示す図である。
図７は、第２の実施形態における画像信号の取り込みタイミングを示す図である。
図８は、第３の実施形態による画像拡大縮小装置の構成例を示す図である。
図９は、第３の実施形態による係数乗算部で用いる各クロックを示すタイミングチャートである。
図１０は、第３の実施形態で用いる係数乗算部の構成例を示す図である。
図１１は、第４の実施形態による画像拡大縮小装置の構成例を示す図である。
図１２は、第４の実施形態で用いる垂直方向係数乗算部の構成例を示す図である。
図１３は、第４の実施形態による係数乗算部で用いる各クロックを示すタイミングチャートである。
図１４は、第４の実施形態で用いる水平方向係数乗算部の構成例を示す図である。
【発明を実施するための最良の形態】
【０００６】
（第１の実施形態）
以下、本発明の一実施形態を図面に基づいて説明する。図１は、第１の実施形態による画像拡大縮小装置の構成例を示す図である。図２は、本実施形態において用いるユニットマトリクスとデータ生成エリアについて説明するための図である。図３は、本実施形態において用いるクロックサイクルについて説明するための図である。図４は、本実施形態において用いる補間関数の例を示す図である。
ユニットマトリクスは、画像の拡大縮小処理を行う最小画素ブロックであり、図２にその構成の一例を示している。図２において、四角で示したａ〜ｐの１６個（縦４個×横４個）の画素がユニットマトリクスの構成画素である。水平方向の隣接画素のクロック間隔はｃｋ０であり、垂直方向の隣接画素のクロック間隔は１水平クロックである。データ生成エリアは、ユニットマトリクスの中央部における正方形エリア（４つの互いに隣接する画素ｆ，ｇ，ｊ，ｋで囲まれるエリア）であり、補間データはこのデータ生成エリア内で生成する。
補間データの生成方法は、以下の通りである。すなわち、画像の拡大／縮小率ｓに応じてデータ生成エリア内に補間位置を設定し、その設定した補間位置と１６個の画素ａ〜ｐの位置との空間距離をそれぞれ算出する。そして、その空間距離に応じた係数値を所定の補間関数から求める。さらに、各画素ａ〜ｐの画素値と、画素ａ〜ｐ毎に求めた係数値とをそれぞれ乗算して、それらの乗算結果を全て加算することにより、補間データを生成する。
補間データを求める際に使用する補間関数として、例えば図４のような関数を用いる。図４に示す補間関数は、補間位置と元の画素位置との空間距離が０のときは係数値が１、当該空間距離が１（基準クロックｃｋ０の１つ分）のときは係数値が０、当該空間距離が２以上のときは係数値が０となるもので、当該空間距離が０より大きく１より小さいときは係数値が正の値、当該空間距離が１より大きく２より小さいときは係数値が負の値となるように設定されている。
上述のように、ユニットマトリクスは縦横４画素の領域に設定しており、データ生成エリアはそのユニットマトリクスの中央部に縦横２画素の範囲で設定している。そのため、データ生成エリア内に設定された補間位置と、ユニットマトリクスの外部にある画素の位置との空間距離は、必ず２以上となる。そして、図４に示すような補間関数を用いた場合、空間距離が２以上であれば、係数値は必ず０となる。したがって、ユニットマトリクスの外部にある画素の画素値は、補間データに全く影響を与えない。つまり、ユニットマトリクス内の画素値だけで全ての補間演算が完結する。
なお、ここではユニットマトリクスの例として縦４個×横４個のマトリクスを挙げているが、これに限定されない。例えば、縦３個×横３個あるいは縦２個×横２個のマトリクスであっても良い。後者の場合、ユニットマトリクスとデータ生成エリアとが一致する。このようにユニットマトリクスの設定範囲を変える場合、それに合わせて補間関数も変えるのが好ましい。
次に、クロックサイクルについて説明する。クロックサイクルは、水平方向に対するクロックサイクルｃｃｘと垂直方向に対するクロックサイクルｃｃｙとがある。図３は、このクロックサイクルｃｃｘ，ｃｃｙを示したものである。図３において、●印は原画像の画素を示し、×印は画像を水平方向にｓＨ倍、垂直方向にｓＶ倍した場合（ｓＨ，ｓＶは任意の正数である。図３はｓＨ≠ｓＶ，１＜ｓＨ＜２，１＜ｓＶ＜２の例）の補間画像の画素を示す。また、原画像の４つの画素で囲まれる点線の矩形領域の１つ１つがデータ生成エリアを示している。
水平方向に画像をｓＨ倍するということは、原画像の水平方向の画素間隔に対して１／ｓＨ倍の間隔で補間位置を設定し、その補間位置の画素値を補間演算により求めて、求めた補間位置の画素値を原画像と同じ元の画素間隔で描くことに相当する。１／ｓＨ倍の間隔で設定した補間位置の補間データを求めるというのは、言い換えると、基準クロックｃｋ０に対してｓＨ倍周波数のクロックｃｋ１（＝ｓＨ・ｃｋ０）の間隔でリサンプリングし、そのリサンプル点の補間データを求めることに相当する。
この場合、データ生成エリア内でのリサンプル点の水平方向の位置は、図３に示すように１クロックｃｋ１毎に１／ｓＨの間隔でずれていく。そして、ｃｋ１の数クロック後には元の画素位置と一致する。図３の例の場合、データ生成エリア内でのリサンプル点の水平方向の位置は、補間画素が５つ離れたところ（原画像の画素では４つ離れたところ）で元の画素位置と一致する。
また、垂直方向に画像をｓＶ倍するということは、原画像の垂直方向の画素間隔に対して１／ｓＶ倍の間隔で補間位置を設定し、その補間位置の画素値を補間演算により求めて、求めた補間位置の画素値を原画像と同じ元の画素間隔で描くことに相当する。１／ｓＶ倍の間隔で設定した補間位置の補間データを求めるというのは、言い換えると、基準クロックｃｋ０に対してｓＶ倍周波数のクロックｃｋ１’（＝ｓＶ・ｃｋ０）の間隔でリサンプリングし、そのリサンプル点の補間データを求めることに相当する。
この場合、データ生成エリア内でのリサンプル点の垂直方向の位置は、図３に示すように１クロックｃｋ１’毎に１／ｓＶの間隔でずれていく。そして、ｃｋ１’の数クロック後には元の画素位置と一致する。図３の例の場合、データ生成エリア内でのリサンプル点の垂直方向の位置は、補間画素が５つ離れたところ（原画像の画素では３つ離れたところ）で元の画素位置と一致する。
データ生成エリア内でのリサンプル点の位置が元の画素位置と一致するまでの一巡のサイクル中に含まれるクロックｃｋ１，ｃｋ１’の数を、クロックサイクルと呼ぶ。図３の例の場合、水平方向に対するクロックサイクルｃｃｘも垂直方向に対するクロックサイクルｃｃｙも同じで、ｃｃｘ＝ｃｃｙ＝５である。なお、以下では説明の簡略化のため、水平方向の拡大／縮小率ｓＨと、垂直方向の拡大／縮小率ｓＶとが等しい（ｓＨ＝ｓＶ＝ｓ、ｃｋ１＝ｃｋ１’）ものとして説明する。
次に、第１の実施形態による画像拡大縮小装置の構成について説明する。図１に示すように、第１の実施形態による画像拡大縮小装置は、クロック生成部１、係数演算部２、関数ＲＯＭ３、係数ＲＡＭ４、マトリクス分解部５および係数乗算部６を備えて構成されている。
クロック生成部１は、基準クロックｃｋ０を入力するとともに、拡大／縮小後の水平画素数および垂直画素数のデータを入力して、ｓ倍周波数のクロックｃｋ１を生成する。以下では、ｃｋ１をデータクロックと呼ぶ。拡大／縮小率ｓは、入力画像の元々の水平／垂直画素数と、クロック生成部１に入力される拡大／縮小後の水平／垂直画素数との比率で決まる。拡大／縮小率ｓそのものの情報をクロック生成部１に入力するようにしても良いが、拡大／縮小率ｓの値によっては、拡大／縮小後の水平／垂直画素数に半端が生じてその処理が複雑になる。よって、拡大／縮小後の水平／垂直画素数をクロック生成部１に入力し、それを拡大／縮小率ｓに換算するのが好ましい。
また、クロック生成部１は、２つの処理クロックｃｓ１，ｃｓ２を生成する。第１の処理クロックｃｓ１は、係数ＲＡＭ４の読み出しアドレスに相当するクロックであり、第２の処理クロックｃｓ２は、入力画像信号のディレイ量を制御するためのクロックである。これらの処理クロックｃｓ１，ｃｓ２の詳細については後述する。
係数演算部２は、クロック生成部１により生成された拡大／縮小率ｓのデータおよびデータクロックｃｋ１と、関数ＲＯＭ３に格納されている図４のような補間関数のデータとに基づいて、拡大／縮小率ｓに応じて設定されたそれぞれの補間位置毎に、各画素ａ〜ｐの画素値に対する１６個の係数をそれぞれ算出する。ここで、係数演算部２は、原画像の領域全体について係数を算出する必要はなく、１つの水平方向クロックサイクルｃｃｘと１つの垂直方向クロックサイクルｃｃｙとで囲まれる１つの領域（以下、これをクロックサイクルエリアと呼ぶ）内においてのみ係数を求めれば良い。
すなわち、係数演算部２は、まず、クロックサイクルエリア内に存在する複数の補間位置を求める。そして、その求めた複数の補間位置毎に、ユニットマトリクスを構成する１６個の画素ａ〜ｐの位置との空間距離をそれぞれ算出する。さらに、係数演算部２は関数ＲＯＭ３を参照して、複数の補間位置毎に、各画素ａ〜ｐの位置との空間距離に応じた１６個の係数値をそれぞれ求める。
関数ＲＯＭ３は、図４のような補間関数のデータをあらかじめ格納しておくものである。補間関数のデータは、例えば、空間距離と係数値とを対応付けて記憶したテーブル情報により構成される。なお、ここでは係数演算部２が空間距離をもとに関数ＲＯＭ３のテーブル情報を参照することにより、当該空間距離に対応付けられた係数値を読み出す構成としているが、これに限定されない。例えば、テーブル情報を有する関数ＲＯＭ３を設けるのではなく、図４のような補間関数を表す式に空間距離をパラメータとして代入することにより、係数値を演算により求めるようにしても良い。
係数ＲＡＭ４は、係数演算部２により求められた係数を格納するものである。画像の拡大／縮小率ｓの値をいくつか設定して係数演算部２により係数を求めることにより、様々な拡大／縮小率ｓの値に応じた係数をあらかじめ係数ＲＡＭ４に格納しておくことが可能である。係数ＲＡＭ４の容量は、処理画像１系統につき、水平方向のクロックサイクルｃｃｘと垂直方向のクロックサイクルｃｃｙとの積×１６×２［ワード］となる。
例えば、拡大／縮小率ｓを０．５倍〜４倍までとし、その間を０．１倍刻みで設定すると、水平・垂直共にクロックサイクルの最大値が３９となるので、Ｒ色・Ｇ色・Ｂ色の３系統の画像を拡大／縮小するために必要な係数ＲＡＭ４の容量は、最大で３９２×１６×６≒１４６キロワードとなる。また、拡大／縮小率ｓを０．２倍刻みで設定すると、水平・垂直共にクロックサイクルの最大値が１９となるので、係数ＲＡＭ４の容量は最大で１９２×１６×６≒３５キロワードとなる。また、拡大／縮小率ｓを０．５倍刻みで設定すると、水平・垂直共にクロックサイクルの最大値が７となるので、係数ＲＡＭ４の容量は最大で７２×１６×６≒５キロワードとなる。何れにしても、容量は極めて小さくて済む。
なお、上述のように、係数演算部２は、１つの補間位置に対して、ユニットマトリクスを構成する１６個の画素ａ〜ｐの位置との空間距離に応じた１６個の係数値を求めて係数ＲＡＭ４に格納するようにしたが、これに限定されない。１６個の画素ａ〜ｐの中には、１つの補間位置から見た空間距離が同じものが複数存在することがある。補間位置との空間距離が同じどうしの画素に関しては、代表して１つのみ係数値を求めて係数ＲＡＭ４に格納するようにしても良い。このようにすれば、係数ＲＡＭ４の容量を更に小さくすることができる。
マトリクス分解部５は、入力画像信号からユニットマトリクスを構成する１６個の画素ａ〜ｐの画素値を抽出する。このときマトリクス分解部５は、クロック生成部１から供給される第２の処理クロックｃｓ２に基づいて、入力画像信号のディレイ量（データ生成エリアの移動量）を制御する。第２の処理クロックｃｓ２は、基準クロックｃｋ０、画像の拡大／縮小率ｓおよびクロックサイクルｃｃｘ，ｃｃｙを使用してクロック生成部１により生成される。
図３にて説明したように、１つのクロックサイクル内に含まれる補間位置の数は、画像の拡大／縮小率ｓに応じて異なる。また、拡大／縮小率ｓによっては、クロックサイクル内に含まれるデータ生成エリア毎に、その中に含まれる補間位置の数が異なることもある。図３に示した例では、水平方向のクロックサイクルｃｃｘ内に含まれる４つのデータ生成エリアのうち、１つ目と４つ目のデータ生成エリアでは水平方向の補間位置が２つであるが、２つ目と３つ目のデータ生成エリアでは水平方向の補間位置が１つのみとなっている。
そこで、後述するように係数乗算部６において補間データを求める際に、１つ目と４つ目のデータ生成エリアでは補間データを２つずつ求め、２つ目と３つ目のデータ生成エリアでは補間データを１つずつ求める必要がある。すなわち、１つ目と４つ目のデータ生成エリアはデータクロックｃｋ１を２つカウントしたタイミングで水平方向に移動させ、２つ目と３つ目のデータ生成エリアはデータクロックｃｋ１を１つカウントしたタイミングで水平方向に移動させる必要がある。このようなデータ生成エリアの移動を制御するためのクロックが第２の処理クロックｃｓ２である。
係数乗算部６は、マトリクス分解部５より出力されるユニットマトリクス内の各画素ａ〜ｐの画素値と、係数ＲＡＭ４から読み出される係数値（各画素ａ〜ｐの各々に対する係数値）とをそれぞれ乗算し、それらの乗算結果を全て加算することによって１つの補間位置における補間データを生成する。この処理を、マトリクス分解部５によりユニットマトリクスを順次移動させながら、原画像に対する全ての補間位置について行う。本実施形態では、原画像の最上位ラインから最下位ラインに向けて１水平ラインずつ順番に補間データを求めていく。
ここで、係数ＲＡＭ４からの係数値の読み出しは、クロック生成部１より出力される第１の処理クロックｃｓ１に従って制御される。具体的には、１つの水平ラインについて処理が終わるまでの間は、水平方向クロックサイクルｃｃｘの周期で同じ係数を繰り返し係数ＲＡＭ４から読み出す。すなわち、図３に示す水平方向クロックサイクルｃｃｘ中に含まれる左から５つ分の補間位置に対する５組の係数（１組は１６個の画素ａ〜ｐに対する係数値から成る）を係数ＲＡＭ４から順に読み出した後は、再び同じ５組の係数を係数ＲＡＭ４から順に読み出す。
１つの水平ライン分について処理が終わったら、補間ラインを垂直方向に１／ｓだけ移動させて、次の水平ラインに対する５組の係数を係数ＲＡＭ４から順に読み出す。このときも、１つの水平ラインの処理が終わるまでの間は、水平方向クロックサイクルｃｃｘの周期で同じ５組の係数を繰り返し読み出す。以下同様に処理を繰り返していき、垂直方向クロックサイクルｃｃｙも一巡した段階で、係数ＲＡＭ４に格納されている係数が一度全て読み出されたことになる。その後は、再び係数ＲＡＭ４の先頭に戻って係数が同じように読み出されていく。
係数乗算部６は、以上のように係数ＲＡＭ４から順次読み出される係数値と、マトリクス分解部５により移動量を制御しながら出力されるユニットマトリクス内の各画素ａ〜ｐの画素値とをそれぞれ乗加算することにより、各補間位置における補間データを生成する。そして、生成した複数の補間データを、原画像と同じ元の基準クロックｃｋ０の間隔で出力していく。
次に、上記のように構成した本実施形態による画像拡大縮小装置の動作を説明する。本実施形態の画像拡大縮小装置は、係数の生成・保存段階と、画像の拡大／縮小段階との２段階で動作する。係数の生成・保存段階では、クロック生成部１、係数演算部２、関数ＲＯＭ３および係数ＲＡＭ４を使用する。画像の拡大／縮小段階では、クロック生成部１、係数ＲＡＭ４、マトリクス分解部５および係数乗算部６を使用する。
係数の生成・保存段階において、クロック生成部１は、基準クロックｃｋ０および拡大／縮小率ｓに基づいてデータクロックｃｋ１（＝ｓ・ｃｋ０）を生成して、係数演算部２に供給する。係数演算部２は、拡大／縮小率ｓと、データクロックｃｋ１と、関数ＲＯＭ３に格納されている図４のような補間関数のデータとに基づいて、拡大／縮小率ｓに応じて設定されたそれぞれの補間位置毎に、各画素ａ〜ｐの画素値に対する複数の係数をそれぞれ算出する。そして、算出した複数の係数を係数ＲＡＭ４に記憶して保存する。
このとき、まず原画像の最も左上の位置にユニットマトリクスを設定し、そのユニットマトリクスの中央に位置するデータ生成エリア内に複数の補間位置を求める。そして、その補間位置のそれぞれについて、当該ユニットマトリクスを構成する各画素ａ〜ｐの画素値に対する１６個の係数をそれぞれ算出する。
次に、ユニットマトリクスを水平方向に１画素分移動させ、移動後のユニットマトリクス内のデータ生成エリアについても同様に係数を算出する。以下同様にしてユニットマトリクスを水平方向に１画素ずつ移動して係数を算出していく。そして、１つの水平方向クロックサイクルｃｃｘ分の処理が終わったら、ユニットマトリクスを次の水平ラインの最も左に設定する。
次の水平ラインについても、最初の水平ラインと同様の処理を行う。以下同様にしてこのような処理を繰り返し行い、１つの垂直方向クロックサイクルｃｃｙ分まで処理が終わったら、係数の生成が完了する。係数演算部２は、以上のような処理の過程で得られた複数の係数を順次係数ＲＡＭ４に格納していく。
また、画像の拡大／縮小段階において、クロック生成部１は、基準クロックｃｋ０および拡大／縮小率ｓに基づいて処理クロックｃｓ１，ｃｓ２を生成し、第１の処理クロックｃｓ１を係数ＲＡＭ４に、第２の処理クロックｃｓ２をマトリクス分解部５に供給する。
マトリクス分解部５は、入力画像信号からユニットマトリクスを構成する１６個の画素ａ〜ｐの画素値を抽出する。このときマトリクス分解部５は、原画像の最も左上の位置から最も右下の位置に向かって、ユニットマトリクスを１水平ラインずつ順に設定していく。このときマトリクス分解部５は、第２の処理クロックｃｓ２に従って、ユニットマトリクスの水平方向および垂直方向の移動量を適切に制御する。
係数乗算部６は、マトリクス分解部５により設定されたユニットマトリクス内のデータ生成エリアに存在する１以上の補間位置における補間データを順次求める。１つの補間位置における補間データは、ユニットマトリクスを構成する１６個の画素ａ〜ｐの画素値と、それらの各画素ａ〜ｐに対して係数ＲＡＭ４から読み出される１６個の係数値とをそれぞれ乗算し、それらの乗算結果を全て加算することによって生成する。
マトリクス分解部５および係数乗算部６の動作をもう少し具体的に説明する。まず、マトリクス分解部５は、原画像の最も左上の位置にユニットマトリクスを設定し、各画素ａ〜ｐの画素値を抽出する。また、係数乗算部６は、そのユニットマトリクスのデータ生成エリア内に補間位置を求める。そして、その補間位置について、当該補間位置に対する係数を係数ＲＡＭ４から読み出して、この読み出した係数値とユニットマトリクスの各画素ａ〜ｐの画素値とを積和演算することにより、補間データを生成する。
次に、ユニットマトリクスを水平方向に１画素分移動させ、同様に補間データを求める。このように係数乗算部６は、１番目の補間ラインに関する複数の補間データを順次生成する。このときマトリクス分解部５は、第２の処理クロックｃｓ２に従って、ユニットマトリクスの水平方向に対する移動量を適切に制御する。また、係数乗算部６は、各補間位置に対応する係数を、第１の処理クロックｃｓ１に従って水平方向クロックサイクルｃｃｘの周期で係数ＲＡＭ４から繰り返し読み出す。
１水平ライン分の処理が終了したら、マトリクス分解部５は、ユニットマトリクスの位置を水平ライン上の先頭（最も左の位置）に戻す。このとき、マトリクス分解部５は、第２の処理クロックｃｓ２に従って、ユニットマトリクスの垂直方向に対する移動量を適切に制御する。例えば図３の例の場合、２番目の補間ラインは、１番目の補間ラインと同じデータ生成エリア内に存在するので、ユニットマトリクスは垂直方向に移動させない。つまり、１番目の補間ラインを処理したときと同じデータ生成エリアを２番目の補間ラインでも使用する。
ここで、１水平ライン分の処理の終了とは、例えば、原画像の最も右の位置にユニットマトリクスを設定して補間データの生成が終わったタイミングとすることができる。また、原画像の左上の位置を基準として画像の拡大／縮小を行うのであれば、画像を拡大するときには、原画像の水平方向の画素数と同じ数の補間データを求めた段階で、１水平ライン分の処理の終了としても良い。後者の場合は、原画像の最も右の位置までユニットマトリクスを設定することなく、１水平ライン分の処理が終了する。
そして、係数乗算部６は、今度は２番目の補間ラインの補間位置に対する係数を係数ＲＡＭ４から順に読み出して、この読み出した係数値とユニットマトリクスの各画素ａ〜ｐの画素値とを積和演算することにより、２番目の補間ラインに関する複数の補間データを生成する。このときもマトリクス分解部５は、第２の処理クロックｃｓ２に従って、ユニットマトリクスの水平方向に対する移動量を適切に制御する。また、係数乗算部６は、各補間位置に対応する係数を、第１の処理クロックｃｓ１に従って水平方向クロックサイクルｃｃｘの周期で係数ＲＡＭ４から繰り返し読み出す。
以下、３番目以降の補間ラインについても同様にして処理を進めていく。このとき係数乗算部６は、各補間位置に対応する係数を、第１の処理クロックｃｓ１に従って、水平方向には水平方向クロックサイクルｃｃｘの周期で係数ＲＡＭ４から繰り返し読み出し、垂直方向には垂直方向クロックサイクルｃｃｙの周期で係数ＲＡＭ４から繰り返し読み出す。
そして、例えば原画像の最も右下の位置にユニットマトリクスを設定して補間データの生成が終わったタイミングで、全ての補間データの生成が終了する。また、原画像の左上の位置を基準として画像の拡大／縮小を行うのであれば、画像を拡大するときには、原画像の垂直方向の画素数と同じ数の補間データを垂直方向に求めた段階で補間データの生成を終了としても良い。後者の場合は、原画像の最も下の位置までユニットマトリクスを設定することなく、処理が終了する。
なお、原画像の全体を対象として拡大／縮小画像を求める前者の方法の場合は、拡大画像であれば、拡大画像中の任意の位置を切り出して画面上に出力することが可能となる。ただし、この場合には、拡大された画像データを格納するための出力バッファが必要になる。一方、原画像の画素数と同じ数の補間データのみを求める後者の方法の場合は、画面上に出力されない無駄な画素位置の補間データは求めなくて済むので、拡大／縮小処理をより高速化することができる。また、出力バッファも不要である。
係数乗算部６は、以上のようにして求めた複数の補間データを、原画像と同じ元の基準クロックｃｋ０の間隔で出力する。このとき、原画像の全領域について補間データを求めて出力バッファに格納し、任意の領域を切り出して出力する方法を採用するときは、切り出し領域内の補間データを基準クロックｃｋ０の間隔で順次出力する。一方、原画像の左上の位置を基準として原画像の画素数と同じ数の補間データのみを求めて出力する方法を採用するときは、係数乗算部６により生成される補間データをその順番のまま基準クロックｃｋ０の間隔で出力していけば良い。
以上詳しく説明したように、第１の実施形態によれば、補間演算によって補間データを求めるのに必要な係数をあらかじめ係数ＲＡＭ４に格納しておき、実際の補間演算の際にはそれを係数ＲＡＭ４から読み出すだけで使用することができるので、補間演算の際に係数を算出する必要がなく、補間処理を高速化することができる。また、補間処理を行うために大きな画像メモリを用いる必要をなくすことができる。特に、原画像の画素数と同じ数だけ補間データを求める方法を採用する場合には、係数乗算部６により生成される補間データをその順番のまま基準クロックｃｋ０の間隔で出力していけば良いので、リアルタイム処理が可能であり、出力バッファも不要である。
なお、上記実施形態では、画像の拡大／縮小段階において、原画像の上端から下端に向かって水平方向の１ラインずつ順番に補間データを求めていく例について説明したが、これに限定されない。例えば、原画像の左端から右端に向かって垂直方向の１ラインずつ順番に補間データを求めていくようにしても良い。また、個々のデータ生成エリア毎に水平方向および垂直方向の補間データを順番に求めていくようにしても良い。
（第２の実施形態）
次に、本発明の第２の実施形態を図面に基づいて説明する。図５は、第２の実施形態による画像拡大縮小装置の構成例を示す図である。なお、この図５において、図１に示した符号と同一の符号を付したものは同一の機能を有するものであるので、ここでは重複する説明を省略する。図５に示すように、第２の実施形態による画像拡大縮小装置は、クロック生成部１１、マトリクス分解部１２、Ｄ型フリップフロップ１３，１４、係数演算部２、関数ＲＯＭ３、係数ＲＡＭ４および係数乗算部６を備えて構成されている。
クロック生成部１１は、基準クロックｃｋ０を入力するとともに、拡大／縮小後の水平／垂直画素数のデータを入力して、ｓ倍周波数のデータクロックｃｋ１と、その立ち上りタイミングを微調整した調整データクロックｃｋ１ｄと、データクロックｃｋ１の位相を反転した反転データクロックｃｋ１バーとを生成する。なお、ここでも説明の簡略化のため、水平方向の拡大／縮小率ｓＨおよび垂直方向の拡大／縮小率ｓＶは等しく共にｓであるとする。
マトリクス分解部１２は、入力画像信号からユニットマトリクスを構成する１６個の画素ａ〜ｐの画素値を抽出する。このときマトリクス分解部１２は、クロック生成部１１から供給される基準クロックｃｋ０に基づいて、当該基準クロックｃｋ０のタイミングに従って各画素ａ〜ｐの画素値を出力する。第２の実施形態によるマトリクス分解部１２は、第１の実施形態のように第２の処理クロックｃｓ２によりデータ生成エリアの移動が不規則に制御されることはなく、基準クロックｃｋ０の周期で設定したユニットマトリクスを構成する各画素ａ〜ｐの画素値をそのまま出力する単純な構成となっている。
１段目のＤ型フリップフロップ１３は、マトリクス分解部１２より出力される各画素ａ〜ｐの画素値を、クロック生成部１１より供給される調整データクロックｃｋ１ｄに従っていったん保持し、当該調整データクロックｃｋ１ｄのタイミングに従って出力する。また、２段目のＤ型フリップフロップ１４は、１段目のＤ型フリップフロップ１３より出力される各画素ａ〜ｐの画素値を、クロック生成部１１より供給される反転データクロックｃｋ１バーに従っていったん保持し、当該反転データクロックｃｋ１バーのタイミングに従って出力する。
図６は、上記クロック生成部１１、マトリクス分解部１２およびＤ型フリップフロップ１３，１４の詳細な構成例を示す図である。図６に示すように、クロック生成部１１は、バッファ１１ａ，１１ｂ、ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）回路１１ｃ、調整回路１１ｄおよびＡＮＤゲート１１ｅ，１１ｆ，１１ｇを備えている。
クロック生成部１１は、外部より入力される基準クロックｃｋ０を、２つのバッファ１１ａ，１１ｂを通してマトリクス分解部１２に出力する。ＰＬＬ回路１１ｃは、１つ目のバッファ１１ａより出力される基準クロックｃｋ０と拡大／縮小率ｓのデータとを入力し、基準クロックｃｋ０からｓ倍周波数のデータクロックｃｋ１を生成する。生成されたデータクロックｃｋ１は、調整回路１１ｄに供給される。調整回路１１ｄは、３つのＡＮＤゲート１１ｅ〜１１ｇと協働して、データクロックｃｋ１のタイミングを微調整した調整データクロックｃｋ１ｄと、データクロックｃｋ１の位相を反転した反転データクロックｃｋ１バーとを生成する。その詳細については後述する。
マトリクス分解部１２は、１３個のディレイ用のＤ型フリップフロップ１２ａ−１〜１２ａ−１３と、原画像の１水平ライン分より４画素分だけ容量の小さいディレイ用の３個のラインメモリ１２ｂ−１〜１２ｂ−３とを備えて構成されている。ディレイ用のＤ型フリップフロップ１２ａ−１〜１２ａ−１３およびラインメモリ１２ｂ−１〜１２ｂ−３は、入力される画像信号を基準クロックｃｋ０に従って順次遅延させ、各々の出力タップから各画素ａ〜ｐの画素値を取り出して、１段目のバッファリング用Ｄ型フリップフロップ１３に供給する。
１段目のバッファリング用Ｄ型フリップフロップ１３は、４組（１組は４個）のＤ型フリップフロップ１３−１〜１３−４を備えて構成されている。そして、マトリクス分解部１２より出力される各画素ａ〜ｐの画素値を調整データクロックｃｋ１ｄに従っていったん保持し、当該調整データクロックｃｋ１ｄのタイミングに従って２段目のバッファリング用Ｄ型フリップフロップ１４に出力する。
また、２段目のバッファリング用Ｄ型フリップフロップ１４は、４組のＤ型フリップフロップ１４−１〜１４−４を備えて構成されている。これらのＤ型フリップフロップ１４−１〜１４−４は、その前段にある４組のＤ型フリップフロップ１３−１〜１３−４より出力される各画素ａ〜ｐの画素値を反転データクロックｃｋ１バーに従っていったん保持し、当該反転データクロックｃｋ１バーのタイミングに従って係数乗算部６に出力する。
図７は、上述した各データクロックｃｋ１ｄ，ｃｋ１バーに基づく画像信号の取り込みタイミングを示す図である。なお、図７（ａ）は画像を拡大する場合の例を示し、図７（ｂ）は画像を縮小する場合の例を示している。
上述のように、マトリクス分解部１２のディレイ用のＤ型フリップフロップ１２ａ−１〜１２ａ−１３およびラインメモリ１２ｂ−１〜１２ｂ−３は、基準クロックｃｋ０に従って元信号の画素値を保持する。これに対して、バッファリング用のＤ型フリップフロップ１３−１〜１３−４では、ｓ倍周波数のクロックに従って画素値をオーバーサンプリングする。ただし、単純にｓ倍周波数のデータクロックｃｋ１に従って画素値を保持した場合、そのデータクロックｃｋ１の立ち上りタイミングが基準クロックｃｋ０の切り替わりタイミングの近傍にあると、元信号が切り替わっている最中であり、データをうまくサンプリングできない可能性がある。
そこで、調整回路１１ｄおよびＡＮＤゲート１１ｅ〜１１ｇを用いて、基準クロックｃｋ０の切り替わり（立ち上り）のタイミングでは絶対に立ち上がることのない調整データクロックｃｋ１ｄをデータクロックｃｋ１から生成することにより、データを確実にサンプリングできるようにする。
すなわち、調整回路１１ｄは、データクロックｃｋ１に対して位相が所定量Δだけ進んだクロックｃｋ１１および位相が所定量Δだけ遅れたクロックｃｋ１２を発生する。ここで、所定量Δとしては、少なくとも基準クロックｃｋ０の立ち上りに要する時間が必要で、かつそれに近い時間であることが好ましい。
また、調整回路１１ｄは、データクロックｃｋ１の立ち上りタイミングが、基準クロックｃｋ０の立ち上りから立ち下りの間のちょうど真中のタイミング（以下、中央タイミングと呼ぶ）に比べて位相が進んでいるか遅れているかを判定し、その判定結果に応じて位相進み信号Φ＋または位相遅れ信号Φ−を出力する。
第１のＡＮＤゲート１１ｅは、データクロックｃｋ１に対して位相が所定量Δだけ進んだクロックｃｋ１１と位相遅れ信号Φ−との論理積をとって出力する。また、第２のＡＮＤゲート１１ｆは、データクロックｃｋ１に対して位相が所定量Δだけ遅れたクロックｃｋ１２と位相進み信号Φ＋との論理積をとって出力する。また、第３のＡＮＤゲート１１ｇは、第１のＡＮＤゲート１１ｅの出力と第２のＡＮＤゲート１１ｆの出力との論理積をとって出力する。
これにより、データクロックｃｋ１の位相が基準クロックｃｋ０の中央タイミングより進んでいるときは、当該データクロックｃｋ１の立ち上りタイミングより所定量Δだけ遅れたクロックが第３のＡＮＤゲート１１ｇより出力される。逆に、データクロックｃｋ１の位相が基準クロックｃｋ０の中央タイミングより遅れているときは、当該データクロックｃｋ１の立ち上りタイミングより所定量Δだけ進んだクロックが第３のＡＮＤゲート１１ｇより出力される。これが調整データクロックｃｋ１ｄである。
また、調整回路１１ｄは、ＰＬＬ回路１１ｃより供給されるデータクロックｃｋ１を用いて、当該データクロックｃｋ１と周期が同じで、データクロックｃｋ１に対して位相が半周期ずれた反転データクロックｃｋ１バーを生成する。上述のように、調整データクロックｃｋ１ｄは、データクロックｃｋ１に対して位相がΔだけ進んでいるところと遅れているところが存在し、その周期は一定でない。したがって、このような調整データクロックｃｋ１ｄに従ってＤ型フリップフロップ１３−１〜１３−４にバッファリングされた画素値をそのままのタイミングで係数乗算部６に供給することはできない。
そこで、Ｄ型フリップフロップ１３−１〜１３−４の後段に更にバッファリング用のＤ型フリップフロップ１４−１〜１４−４を設け、一定周期の反転データクロックｃｋ１バーに従って各画素ａ〜ｐの画素値をサンプリングし直して係数乗算部６に供給する。なお、ここでは反転データクロックｃｋ１バーを用いているが、これに限定されない。すなわち、一定周期で、調整データクロックｃｋ１ｄの切り替わりと異なるタイミングで立ち上がるクロックであれば良い。
以上詳しく説明したように、第２の実施形態によれば、入力画像信号がマトリクス分解部１２およびＤ型フリップフロップ１３，１４を通過することにより、ユニットマトリクスを構成する各画素ａ〜ｐの画素値が、拡大／縮小率ｓに応じたｓ倍周波数の反転データクロックｃｋ１バーに従ってｓ倍にオーバーサンプリングされて出力される。
これにより、第１の実施形態のように第２の処理クロックｃｓ２によって入力画像信号（データ生成エリア）の移動量を複雑に制御する必要がなくなる。また、移動量制御のためにマトリクス分解部１２の入力側にバッファ用の画像メモリを用意する必要がなく、回路規模をより小さくすることができる。さらに、移動量制御のためのバッファリングが不要なので、拡大／縮小処理の動作をより高速化することができる。
（第３の実施形態）
次に、本発明による第３の実施形態を図面に基づいて説明する。第３の実施形態は、上記第２の実施形態による画像拡大縮小装置をＮＴＳＣ−ハイビジョン方式変換（ＮＴＳＣ方式の画像をハイビジョン方式にアップサンプリングする装置）に応用した場合の例を示すものである。
図８は、第３の実施形態による画像拡大縮小装置の構成例を示す図である。ここでは、ＮＴＳＣとハイビジョンは共にインターレース走査でフィールド周波数が同じ場合を考える。一般的には、インターレース走査を順次走査に変換してから方式変換を行い、インターレース走査に戻す。図８に示す構成は、順次走査入力を順次走査出力に変換する回路である。なお、図８において、図５および図６に示した構成要素と同一の機能を有する構成要素には同一の符号を付している。
ここで、ＮＴＳＣとハイビジョンの有効走査線数の比は４８０：１０８０、有効画素数の比は７２０：１９２０である。なお、ハイビジョンの画面で変換した水平振幅を１００％とすると、垂直幅の上下端は表示外となる。この場合、有効画素数の比は７２０：１４４０となる。また、ＮＴＳＣの場合は画素が正方画素でなく１．１２５：１なので、有効画素数の比は７２０：１６２０になる。したがって、ＮＴＳＣ方式からハイビジョン方式への拡大率は、水平拡大率ｓＨ＝１６２０／７２０＝２．２５、垂直拡大率ｓＶ＝１０８０／４８０＝２．２５となる。
図８において、３Ｈディレイライン１２，１２’，１２”は、それぞれ図６に示した１３個のディレイ用のＤ型フリップフロップ１２ａ−１〜１２ａ−１３および３個のラインメモリ１２ｂ−１〜１２ｂ−３に相当する。また、Ｄ型フリップフロップ１３，１３’，１３”は、それぞれ図６に示した４組のＤ型フリップフロップ１３−１〜１３−４に相当する。また、Ｄ型フリップフロップ１４，１４’，１４”は、それぞれ図６に示した４組のＤ型フリップフロップ１４−１〜１４−４に相当する。また、係数乗算部６，６’，６”は、それぞれ図５に示した係数乗算部６に相当する。
クロック生成部１１’は、図６に示したクロック生成部１１と同様にデータクロックｃｋ１、調整データクロックｃｋ１ｄおよび反転データクロックｃｋ１バーを生成するが、これに加えて、互いに位相が所定量ずつ遅れた複数（例えば４個）のパイプライン用クロックｃｐ１〜ｃｐ４も生成する。図９は、このパイプライン用クロックｃｐ１〜ｃｐ４のタイミングを示す図である。図９に示すように、これら４個のパイプライン用クロックｃｐ１〜ｃｐ４によってパイプライン処理の１サイクルが形成される。
図１０は、図８に示した係数乗算部６の構成例を示す図である。図１０において、四角で示したブロックはディレイ用のＤ型フリップフロップ、丸囲みの×印で示したブロックは係数器、丸囲みの＋印で示したブロックは加算器である。ＣＴＲはカウンタ、台形で示したブロックはセレクタである。図１０の構成では、入力される各画素ａ〜ｐの画素値と係数ＲＡＭ４から読み出される係数値ｈａ〜ｈｐとの積和演算をパイプライン処理で行うことで、より高速なリアルタイム動作を実現している。
なお、画像拡大縮小装置を図８のように構成し、その中の係数乗算部６を図１０のように構成した場合、拡大／縮小率ｓが１．５以下の範囲では折り返しノイズの影響が出てくる。この場合は、与えられた拡大／縮小率ｓをｎ倍にして画像の拡大／縮小処理を行い、最後に１／ｎ間引き処理を行うことによって１．５倍以下の範囲へ変換すると良い。例えば、拡大／縮小率ｓが１．２倍の場合、この２倍の拡大率（ｓ＝２．４）で画像を拡大し、その拡大画像を１／２倍に間引き処理すれば良い。このようにすれば、折り返しノイズの影響を軽減することができる。
ここで、ｎ＝２とすると、拡大／縮小率ｓが０．７５以下の場合には対応できない。これに対して、ｎの値を大きくすると、動作クロックとして要求されるクロック周波数が非常に大きなものとなってしまう。また、水平方向の拡大／縮小率ｓＨおよび垂直方向の拡大／縮小率ｓＶを共にｎ倍すれば効果的であるが、水平方向および垂直方向の両方とも間引き処理を行う必要があるので、間引き回路が複雑になってしまう。
これらの問題を回避するために、次のようにするのが好ましい。すなわち、水平方向の拡大／縮小率ｓＨのみをｎ倍するようにし、その倍率ｎを、拡大／縮小率ｓＨの値に応じて最適化する。倍率ｎの値を２のべき乗にすれば処理が簡単になるので、ｎ＝２，４，８，１６のようにするのが好ましい。例えば、ｓＨ＜０．４のときはｎ＝１６、０．５≦ｓＨ＜０．６のときはｎ＝８、０．７≦ｓＨ＜０．９のときはｎ＝４、ｓＨ≧１．０のときはｎ＝２とする。
なお、垂直方向ではなく、水平方向の拡大／縮小率ｓＨを１０倍にして画像の拡大／縮小処理を行い、最後に水平方向の１／１０間引き処理を行うのは、垂直方向の間引き処理に比べて、水平方向の間引き処理の方が、処理が簡単だからである。垂直方向の拡大／縮小率ｓＨを１０倍にして画像の拡大／縮小処理を行い、その後で垂直方向の１／１０間引き処理を行うことも可能ではある。
（第４の実施形態）
次に、本発明による第４の実施形態を図面に基づいて説明する。第４の実施形態は、上記第２の実施形態による画像拡大縮小装置を動画の拡大／縮小に応用した場合の例を示すものである。動画の拡大／縮小処理の場合、スペクトルの重なりにより折り返しノイズが発生する可能性がある。この折り返しノイズの発生を抑止するため、動画の拡大／縮小処理に関しては、以下に述べるような工夫を加える。
工夫１：拡大／縮小率を小数点以下１桁とする。拡大／縮小処理を行うときは、与えられた拡大／縮小率を１０倍にして画像の拡大／縮小処理を行い、最終出力信号に対して１／１０間引き処理を行う。ただし、このようにすると、使用するクロック周波数は非常に大きなものが要求されることになる。例えば、拡大／縮小率の最大値を４．０とすると、入力画像信号のサンプリング周波数が１３．５ＭＨｚのときは所要クロック周波数がＧＨｚ帯となり（４×１３．５Ｍ×１０２＝５．４ＧＨｚ）、現実的でない。この解決策として、次の工夫２を加える。
工夫２：拡大／縮小処理を、垂直方向の拡大／縮小と水平方向の拡大／縮小との２段階に分けて行う。このとき、垂直方向→水平方向の順に処理する。そして、垂直方向および水平方向の各処理の中で、拡大／縮小率ｓＶ，ｓＨを各々１０倍にして画像の拡大／縮小処理を行い、その後で１／１０間引き処理を行う。この場合、所要クロック周波数は、水平方向の拡大／縮小率ｓＨまたは垂直方向の拡大／縮小率ｓＶの１０倍で済む。拡大／縮小率の最大値が４．０の場合、所要クロック周波数は４×１３．５Ｍ×１０＝５４０ＭＨｚで良い。
図１１は、上述の工夫１および工夫２を加えた動画用の画像拡大縮小装置の構成例を示す図である。図１１において、符号でハイフン（−）の後にＶの文字が付けられた構成要素は垂直方向の拡大／縮小処理のためのものであり、符号でハイフン（−）の後にＨの文字が付けられた構成要素は水平方向の拡大／縮小処理のためのものである。
マトリクス分解部１２−Ｖ，１２−Ｈは、図６のマトリクス分解部１２と同様に構成されている。なお、ここでは図示していないが、マトリクス分解部１２−Ｖ，１２−Ｈの後段に、図６に示したバッファリング用のＤ型フリップフロップ１３，１４を設けるのが好ましい。ローパスフィルタ（ＬＰＦ）２１−Ｖ，２２−Ｖ，２３−Ｈ，２４−Ｈは、折り返しノイズの抑止効果を高めるために挿入されているものである。
垂直方向のオーバーサンプル回路２５−Ｖは、ユニットマトリクスを構成する１６個の画素ａ〜ｐの画素値を１０倍にオーバーサンプリングするものである。すなわち、オーバーサンプル回路２５−ＶはＤ型フリップフロップで構成されている。そして、マトリクス分解部１２−Ｖにより抽出されＬＰＦ２１−Ｖを通過した各画素ａ〜ｐの画素値が、垂直方向の拡大／縮小率ｓＶに応じて生成されたデータクロックｃｋ２（＝ｃｋ０・ｓＶ・１０＝１０ｃｋ１’）に従ってＤ型フリップフロップにいったん保持され、当該１０倍周波数のデータクロックｃｋ２のタイミングに従って出力される。
水平方向のオーバーサンプル回路２６−Ｈは、ユニットマトリクスを構成する１６個の画素ａ〜ｐの画素値を１０倍にオーバーサンプリングするものである。すなわち、オーバーサンプル回路２６−ＨはＤ型フリップフロップで構成されている。そして、マトリクス分解部１２−Ｈにより抽出されＬＰＦ２３−Ｈを通過した各画素ａ〜ｐの画素値が、水平方向の拡大／縮小率ｓＨに応じて生成されたデータクロックｃｋ３（＝ｃｋ１’・ｓＨ・１０）に従ってＤ型フリップフロップにいったん保持され、当該１０倍周波数のデータクロックｃｋ３のタイミングに従って出力される。
拡大／縮小率ｓＨ，ｓＶが小数点以下１桁の値に制限される場合、これを１０倍すれば整数となる。したがって、オーバーサンプル回路２５−Ｖ，２６−Ｈによるオーバーサンプリングは、オーバーサンプルのデータクロックｃｋ２，ｃｋ３の位相をわずかに遅らせるだけで正確に行うことができる。また、オーバーサンプル回路２５−Ｖ，２６−Ｈの構成は、上述のように、入力される各画素ａ〜ｐの画素値をデータクロックｃｋ２，ｃｋ３に従ってＤ型フリップフロップにて保持するだけの構成で良い。
垂直方向用の係数ＲＡＭ４−Ｖは、垂直方向の拡大／縮小を行うのに必要な係数値を記憶している。また、水平方向用の係数ＲＡＭ４−Ｈは、垂直方向の拡大／縮小を行うのに必要な係数値を記憶している。これら２つの係数ＲＡＭ４−Ｖ，４−Ｈに記憶されている係数値を合わせると、図５の係数ＲＡＭ４に記憶されている係数値と同様となる。
垂直方向係数乗算部６−Ｖは、垂直方向オーバーサンプル回路２５−Ｖより出力される各画素ａ〜ｐの画素値と、垂直方向係数ＲＡＭ４−Ｖから読み出される係数値とをそれぞれ乗算し、それらの乗算結果を全て加算することによって垂直方向の１つの補間位置における補間データを生成する。この補間データの生成処理に、３種類のデータクロックｃｋ１’，ｃｋ２，ｃｋ５を使用する。
また、水平方向係数乗算部６−Ｈは、水平方向オーバーサンプル回路２６−Ｈより出力される各画素ａ〜ｐの画素値と、水平方向係数ＲＡＭ４−Ｈから読み出される係数値とをそれぞれ乗算し、それらの乗算結果を全て加算することによって水平方向の１つの補間位置における補間データを生成する。この補間データの生成処理には、１種類のデータクロックｃｋ４（＝ｃｋ０・ｓＶ・ｓＨ＝ｃｋ３／１０）を使用する。
図１２は、垂直方向係数乗算部６−Ｖの構成例を示す図である。図１３は、この垂直方向係数乗算部６−Ｖにて使用するデータクロックｃｋ１’，ｃｋ２，ｃｋ５を示すタイミングチャートである。また、図１４は、水平方向係数乗算部６−Ｈの構成例を示す図である。図１３に示すように、データクロックｃｋ５は、データクロックｃｋ１’でカウントされる１０水平ライン分を１つのサイクルとして、当該サイクル中の最初の１水平ライン期間中においてのみデータクロックｃｋ２が有効となっているようなクロックである。
図１２および図１４において、四角で示したブロックはディレイ用のＤ型フリップフロップ、丸囲みの×印で示したブロックは係数器、丸囲みの＋印で示したブロックは加算器である。ＣＴＲはカウンタ、台形で示したブロックはセレクタである。図１２および図１４の構成においても、図１０に示した構成と同様に、パイプライン用クロックｃｐ１〜ｃｐ４に従って、入力画素ａ〜ｐの画素値と係数ＲＡＭ４から読み出される係数値ｈａ〜ｈｐとの積和演算をパイプライン処理で行うことによって、より高速なリアルタイム動作を実現している。
また、図１２に示すように、垂直方向係数乗算部６−Ｖでは、図１３に示すようなデータクロックｃｋ５を用いてパイプライン処理しているので、乗加算のパイプライン処理と垂直方向に対する１／１０の間引き処理とを同時に行うことができる。また、図１４に示すように、水平方向係数乗算部６−Ｈは、その前段にある水平方向オーバーサンプル回路２６−Ｈの動作クロックｃｋ３の１／１０倍の周波数の動作クロックｃｋ４に従って動作するので、乗加算のパイプライン処理と水平方向に対する１／１０の間引き処理とを同時に行うことができる。
以上に説明した第１〜第４の実施形態による画像拡大縮小装置は、これをハードウェア構成によって実現する例について示しているが、ＤＳＰ（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）やソフトウェアの何れによっても実現することが可能である。例えばソフトウェアによって実現する場合、上記実施形態の画像拡大縮小装置は、実際にはコンピュータのＣＰＵあるいはＭＰＵ、ＲＡＭ、ＲＯＭなどを備えて構成され、ＲＡＭやＲＯＭに記憶されたプログラムが動作することによって実現できる。
したがって、コンピュータが上記実施形態の機能を果たすように動作させるプログラムを例えばＣＤ−ＲＯＭのような記録媒体に記録し、コンピュータに読み込ませることによって実現できるものである。上記プログラムを記録する記録媒体としては、ＣＤ−ＲＯＭ以外に、フレキシブルディスク、ハードディスク、磁気テープ、光ディスク、光磁気ディスク、ＤＶＤ、不揮発性メモリカード等を用いることができる。また、上記プログラムをインターネット等のネットワークを介してコンピュータにダウンロードすることによっても実現できる。
なお、上記第１〜第４の実施形態では、係数をあらかじめ記憶しておくメモリとしてＲＡＭを用いているが、これに限定されない。例えば、ＲＯＭを使用しても良い。
また、上記第１〜第４の実施形態では、補間関数の例として図４のような関数を挙げたが、これに限定されない。例えば、補間位置と元の画素位置との空間距離が０のときは係数値が１で、当該空間距離が１のときに係数値が０に収束するような関数（空間距離が０より大きく１より小さいときは係数値が正の値となるように設定されている）としても良い。また、補間位置と元の画素位置との空間距離が０のときは係数値が１で、当該空間距離が２のときに係数値が０に収束するような関数（空間距離が０より大きく２より小さいときは係数値が正の値となるように設定されている）としても良い。
また、上記第１および第２の実施形態では、係数演算部２および関数ＲＯＭ３も含めて画像拡大縮小装置を構成しているが、これは別装置としても良い。すなわち、係数をあらかじめ演算しておくための係数演算装置と、当該係数演算装置によりあらかじめ求められた係数を用いて画像の拡大／縮小を行う画像拡大縮小装置とを別の装置として構成しても良い。
この場合、係数演算装置は、例えば図１のクロック生成部１、係数演算部２および関数ＲＯＭ３を含み、画像拡大縮小装置はクロック生成部１、係数ＲＡＭ４、マトリクス分解部５および係数乗算部６を含む。ちなみに、第３および第４の実施形態は、係数演算装置を別体とし、当該係数演算装置によりあらかじめ求められた係数を用いて画像の拡大／縮小を行う画像拡大縮小装置としての構成を示している。
その他、上記第１〜第４の実施形態は、何れも本発明を実施するにあたっての具体化の一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその精神、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】
【０００７】
本発明は、デジタル画像の拡大／縮小を行う装置に有用である。本発明の画像拡大縮小装置は、静止画および動画の拡大／縮小に適用することが可能である。
【図１】
2007102244.tif 000003
【図２】
2007102244.tif 000004
【図３】
2007102244.tif 000005
【図４】
2007102244.tif 000006
【図５】
2007102244.tif 000007
【図６】
2007102244.tif 000008
【図７】
2007102244.tif 000009
【図８】
2007102244.tif 000010
【図９】
2007102244.tif 000011
【図１０】
2007102244.tif 000012
【図１１】
2007102244.tif 000013
【図１２】
2007102244.tif 000014
【図１３】
2007102244.tif 000015
【図１４】
2007102244.tif 000016
【手続補正書】
【提出日】平成19年7月19日(2007.7.19)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
２次元空間上に等間隔に配置された複数の画素によって構成される原画像について、所定の倍率に応じた補間位置における各画素の画素値を上記補間位置の周囲にある上記原画像の画素値から補間演算によって求めることによって画像の拡大／縮小を行う画像拡大縮小装置であって、
上記所定の倍率に応じて設定されるそれぞれの補間位置毎に、所定の補間関数に基づいて、上記補間位置の周囲にある上記原画像の各画素の画素値に対する係数をそれぞれ求める係数演算部と、
上記係数演算部により求められた係数を格納する係数メモリと、
上記補間位置の周囲にある上記原画像の各画素の画素値を抽出するマトリクス分解部と、
上記マトリクス分解部より出力される上記原画像の各画素の画素値と、上記係数メモリから読み出される係数とを乗加算することによって上記補間位置における各画素の画素値を求める係数乗算部と、
上記原画像の画素間隔に相当する基準クロックおよび上記所定の倍率に基づいて、上記基準クロックの所定倍の周波数から成るデータクロック、上記データクロックに対して位相が所定量だけずらされた調整データクロックおよび、周期が一定で上記調整データクロックの切り替わりと異なるタイミングで切り替わる別のデータクロックを生成するクロック生成部とを備え、
上記マトリクス分解部は、上記補間位置の周囲にある上記原画像の各画素の画素値を上記調整データクロックに従ってサンプリングした後、上記別のデータクロックに従ってサンプリングし直して抽出することを特徴とする画像拡大縮小装置。
【請求項２】
上記別のデータクロックは、上記データクロックに対して位相が反転した反転データクロックであり、
上記マトリクス分解部は、上記補間位置の周囲にある上記原画像の各画素の画素値を上記調整データクロックに従ってサンプリングした後、上記反転データクロックに従ってサンプリングし直して抽出することを特徴とする請求の範囲第１項に記載の画像拡大縮小装置。
【請求項３】
上記クロック生成部は、上記基準クロックの立ち上りから立ち下りの間のちょうど真中に当たる中央タイミングより上記データクロックの位相が進んでいるときは、上記データクロックの立ち上りタイミングより上記所定量だけ遅れたクロックを上記調整データクロックとして発生し、上記データクロックの位相が上記基準クロックの中央タイミングより遅れているときは、上記データクロックの立ち上りタイミングより上記所定量だけ進んだクロックを上記調整データクロックとして発生することを特徴とする請求の範囲第１項に記載の画像拡大縮小装置。
【請求項４】
上記クロック生成部は、調整回路と、第１のＡＮＤゲートと、第２のＡＮＤゲートと、第３のＡＮＤゲートとを備え、上記調整回路および上記第１〜第３のＡＮＤゲートにより上記調整データクロックを生成するように成され、
上記調整回路は、上記データクロックに対して位相が上記所定量だけ進んだ進みクロックおよび上記データクロックに対して位相が上記所定量だけ遅れた遅れクロックを発生するとともに、上記データクロックの立ち上りタイミングが、上記基準クロックの中央タイミングに比べて位相が進んでいるか遅れているかを判定し、その判定結果に応じて位相進み信号または位相遅れ信号を発生するように成され、
上記第１のＡＮＤゲートは、上記進みクロックと上記位相遅れ信号との論理積をとって出力し、上記第２のＡＮＤゲートは、上記遅れクロックと上記位相進み信号との論理積をとって出力し、上記第３のＡＮＤゲートは、上記第１のＡＮＤゲートの出力と上記第２のＡＮＤゲートの出力との論理積をとって出力するように成されていることを特徴とする請求の範囲第３項に記載の画像拡大縮小装置。
【請求項５】
（削除）
【請求項６】
２次元空間上に等間隔に配置された複数の画素によって構成される原画像について、所定の倍率に応じた補間位置における各画素の画素値を上記補間位置の周囲にある上記原画像の画素値から補間演算によって求めることによって画像の拡大／縮小を行う画像拡大縮小装置であって、
上記所定の倍率に応じたそれぞれの補間位置毎に設定された係数であって、上記補間位置の周囲にある上記原画像の各画素の画素値に対する係数を格納する係数メモリと、
上記補間位置の周囲にある上記原画像の各画素の画素値を抽出するマトリクス分解部と、
上記マトリクス分解部より出力される上記原画像の各画素の画素値と、上記係数メモリから読み出される係数とを乗加算することによって上記補間位置における各画素の画素値を求める係数乗算部と、
上記原画像の画素間隔に相当する基準クロックおよび上記所定の倍率に基づいて、上記基準クロックの所定倍の周波数から成るデータクロックと、上記データクロックに対して位相が所定量だけずらされた調整データクロックと、上記データクロックに対して位相が反転した反転データクロックとを生成するクロック生成部とを備え、
上記マトリクス分解部は、上記補間位置の周囲にある上記原画像の各画素の画素値を上記調整データクロックに従ってサンプリングした後、上記反転データクロックに従ってサンプリングし直して抽出することを特徴とする画像拡大縮小装置。
【国際調査報告】
2007102244.tif 000017
2007102244.tif 000018