(57)【特許請求の範囲】
【請求項１】
回路であって、
水平フィルタ装置と、
前記水平フィルタ装置とは別個の垂直フィルタ装置と、
メモリ制御装置と、
前記水平および垂直フィルタ装置の出力を、前記メモリ制御装置の入力に選択的に接続する手段と、
前記水平フィルタ装置に結合した水平位置アキュムレータと、
前記垂直フィルタ装置に結合した垂直位置アキュムレータと、
係数データを前記水平および垂直アキュムレータに入力し、さらに、出力画素または行の位置を算出するためのデータを前記水平および垂直アキュムレータに入力する、データ入力手段と、
を有し、
前記メモリ制御装置は、計算動作期間中に、（ａ）前記水平フィルタ装置から出力された第１中間データを、前記垂直フィルタ装置が処理する前に、メモリに書き込む動作と、（ｂ）前記水平および垂直フィルタ装置の両方によって処理された状態の、前記垂直フィルタ装置から得られた第２中間データを、メモリに書き込む動作とを、交互に実施するよう動作し、
前記メモリ制御装置は、さらに、前記計算動作期間中に、（ａ）前記垂直フィルタ装置で処理するための前記第１中間データと、（ｂ）前記垂直フィルタ装置で処理するためであって、前記水平フィルタ装置によるさらなる処理は実施されない、前記第２中間データとを、交互に前記メモリから前記垂直フィルタ装置へ読み出す動作を、前記交互の書き込み動作との交替で実施するよう動作する、回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、一般的にディジタル画像処理に関し、とくに、画像のサイズ変更（リサイジング）あるいは再標本化を行なうディジタル画像処理システムに関する。
【０００２】
【従来の技術】
フィルムあるいは印刷走査装置、画像処理加速装置、そしてディジタルハードコピー印刷装置など多くの画像処理システムでは、画像のサイズ変更（リサイジング）あるいは再標本化は重要な動作であり、画像の大きさの拡大（補間）あるいは縮小（間引き）に使用している。サイズ変更した画像の画素の各々は、サイズ変更動作の結果として、元画像の画素のＮｘＮ近傍の加重平均として算出する。したがって、サイズ変更動作は、画像ろ過動作あるいは畳込み動作に似ている。ただし、画像ろ過においては、出力画素の標本化格子は同一であり、そして同じ重みあるいはろ過係数を使用して、各々の出力画素を算出する。他方、画像のサイズ変更においては、出力画素の位置と入力画素の位置は異なっており、各々の出力画素を算出するための重みは、出力画素と入力標本化格子の距離に依存し、そしてこれらの重みは各々の出力画素に対して異なる可能性がある。
【０００３】
画像全体のサイズ変更を行なうには、次のものを含むいくつかの異なる種類の計算を実行しなければならない。つまり、間引きあるいは補間の任意のファクターに対する、入力標本化格子を基準とする出力画像画素の位置の計算と、得られた位置の値からのフィルタの核（カーネル）係数のアドレスの計算と、そしてこらのフィルタ係数とＮｘＮ近傍の画素を使用した各々の出力画素値の計算である。したがって、ソフトウェアのルーチンを使用したパーソナルコンピュータあるいはワークステーションで画像サイズ変更動作を実行することは、処理すべき乗算と加算の量が大きいので、実際的ではない。そのため、画像サイズ変更動作は、一般的に、カスタム化集積回路装置のような特化したハードウェアを使用したディジタル画像処理システムで実行している。
【０００４】
【発明が解決しようとする課題】
画像サイズ変更を行なうための、ハードウェアによる従来の方法は、様々な要因によって制限を受けている。たとえば、多数の別個の集積回路（ＩＣ）に対して、１）画素位置およびアドレス計算をさせること、２）補間フィルタ係数を記憶させること、そして、３）入力画素および係数を乗算／加算して出力画素値を算出させること（つまり畳込みＩＣの場合）、などである。複数のＩＣを使用すると、システムの費用が増加すると共に、回路板の占める空間が比較的大きくなる。さらに、フィルタ係数を画素単位で変換できる従来の畳込みＩＣ（たとえば、ＴＲＷ社のＴＭＣ２２４６あるいはｌＳＩ  Ｌｏｇｉｃ社のＬ６４２６０）は、４個の乗算器しか持っていないので、出力画素を４ｘ４近傍に算出するのに使用できる近傍の大きさを制限する。この近傍の大きさの制限は、おおきな欠点である。なぜなら、近傍を大きくすれば、出力画像の、雑音に起因する汚れを減少することができ、より視覚的に魅力のある結果が得られるからである。最大９ｘ９画素の近傍あるいは核を支援する従来の畳込みＩＣ（たとえば、ＴＲＷ社のＴＭＣ２２５０あるいはｌＳＩ  Ｌｏｇｉｃ社のＬ６４２４３）では、フィルタ係数を画素単位に選択することができない。最後に、従来の畳込みＩＣは、たとえば、カラーフィルム走査装置によって生成できる画像の１つの色構成要素以上を含む入力画像データ源に対する使用には適していない。
【０００５】
【課題を解決するための手段及び作用】
本発明は、画像ろ過、画像再標本化、そして画像圧縮／伸張を含む複数の機能の実行に使用できる、再標本化応用に特定した集積回路（ＲＳＡ）を提供する。このＲＳＡは、任意の因数による画像補間あるいは間引きを支援して柔軟性を提供すると共に、最大９ｘ９画素の近傍を使用して、高品質の画像を生成する。ＲＳＡは、垂直サイズ変更および水平サイズ変更動作のための別個の垂直フィルタ装置および水平フィルタ装置と、垂直および水平位置アキュムレータ装置と、垂直および水平アキュムレータ装置をロードする構成レジスタと、そして、ＲＳＡと複数の外部メモリバンクとのインタフェースをとるためのメモリ制御装置とを含む。垂直および水平フィルタ装置は、好ましくは、９個の乗算器と、９個の対応する係数メモリを含む。そして、各々のメモリは、好ましくは、３２個の係数を記憶するための記憶空間を持つ。これらの係数は、垂直および水平位置アキュムレータ装置の出力に応じて、画素単位でアドレス指定される。ＲＳＡは、複数の色構成要素を含む入力データの流れを処理し、これらの色構成要素のすべてを同時にサイズ変更するように設計されている。
【０００６】
【実施例】
図１は、本発明によるＲＳＡのブロック図である。ＲＳＡは、入力ポート１１に接続した水平フィルタ装置１０と、出力ポート１３に接続した垂直フィルタ装置１２と、メモリポート１５に接続したメモリ制御装置１４と、構成ポート１７に接続した構成レジスタ装置１６と、そして、それぞれ水平および垂直フィルタ装置１０、１２と構成レジスタ装置１６に接続した水平および垂直位置アキュムレータ１８、２０とを含んでいる。水平フィルタ装置１０と垂直フィルタ装置１２の出力は、マルチプレクサ（ＭＵＸ）２２にも接続しており、垂直フィルタ装置１２の出力を選択して、メモリ制御装置１４の入力に返すことができる。ＲＳＡの上記構成要素の各々は、１個のＩＣに集積されている。
【０００７】
入力ポート１１、出力ポート１３、そしてメモリポート１５は、データ信号と制御信号を、ＲＳＡと外部装置の間で転送するために、使用する。入力ポート１１は、１６ビットからなる入力データバス（ＩＤ）と，ＲＳＡが能動状態にして入力画素データを要求するための入力データストローブ線（ＩＳＴＲＢ）と，ＲＳＡが１行の完全な入力画像データを読み出せるとき、外部装置が能動状態にする入力行開始線（ＩＬＳ）と，そして、次の行の入力画像データを取り込める状態のときに、ＲＳＡが能動状態にする入力実行可能線（ＩＲＤＹ）とを含んでいる。同様に、出力ポート１３は、１６ビットからなる出力データバス（ＯＤ）と、出力データバスに有効な出力画像データが存在するときＲＳＡが能動状態にする出力データストローブ線（ＯＳＴＲＢ）と、出力画像データの任意の行のすべての画素を生成しているときＲＳＡが能動状態にし、出力画像データの連続する行と行の間で非能動状態にする出力行有効線（ＯＬＶ）と、出力画像のすべての行を出力し終わったときＲＳＡが能動状態にする出力画像終了線（ＯＤＯＮＥ）と、そして、ＲＳＡが能動状態にして補間データを出力でデータバスＯＤに送出していることを示す出力フォトＣＤ補間線（ＯＰＣＤＩ）とを含んでいる。図示した実施例では、メモリポート１５は、好ましくは、１６ビットからなるメモリアドレスバス（ＭＡ）と、５本の８ビットからなる両方向メモリバンクデータバス（ＭＤ０〜ＭＤ４）と、５本のメモリ書込み可能線（ＭＷＥ）と、そして５本のメモリ出力可能線（ＯＥ）を含む。これらは、すべて、それぞれ、外部メモリバンクＭ０〜Ｍ４に接続している。構成ポート１７は、構成データと係数データをＲＳＡに記憶するのに使用する１０ビットからなる構成データバス（ＣＤ）と、好ましくは立上りエッジを使用して構成レジスタと係数メモリ（後述）にデータを記憶する構成データストローブ線（ＣＳＴＲＢ）と、そして、ハイ（ＨＩＧＨ）に設定して構成レジスタにデータを記憶し、ロー（ＬＯＷ）に設定して係数メモリにデータを記憶する構成／係数選択線（ＣＮＦＢ）とを含む。ＲＳＡに接続する上記以外の要素は、主クロック線（ＭＣＬＫ），電圧線（ＶＤＤ），そしてロジック接地（ＧＮＤ）などである。ＭＣＬＫは、３３ＭＨｚの外部主クロック信号をＲＳＡに供給する。ＲＳＡは、この信号を使用して、内部タイミング信号と外部制御信号を生成する。
【０００８】
水平フィルタ装置１０と垂直フィルタ装置１２は、それぞれ、９個のタップ要素０〜８と、１個の９入力加算器で構成されている。図２に示すように、各々のタップ要素は、好ましくは、８ビットｘ８ビットの乗算器３０と、係数を記憶するための３２語ｘ８ビットの係数ＲＡＭメモリ３２と、入力および出力レジスタ３４、３６と、そして、乗算器の入力データを選択するためのマルチプレクサ３８を含む。全てのタップ要素のための係数メモリには、構成レジスタ１６を介して、データを記憶する。各々の画素につき、３２個の係数の１つを、水平および垂直位置アキュムレータ装置１８、２０により、ＣＯＥＦＦ−ＳＥＬ入力を介して、選択する。水平フィルタ装置１０については、タップ０のＤＡＴＡ−ＩＮポートが、ＲＳＡの入力ポートに接続される。各々の水平フィルタのタップ要素のＤＡＴＡ−ＯＵＴポートは、次のタップ要素のＤＡＴＡ−ＩＮポートにデータを供給する。そのとき、タップ８のＤＡＴＡ−ＯＵＴポートは未接続状態である。垂直フィルタ装置１２については、９本のすべてのＤＡＴＡ−ＩＮポートが、メモリ制御装置１４に並列接続されている。各々のフィルタ装置１０、１２においては、９本のＰＲＯＤＵＣＴポートが、９個の積の和を計算する９入力加算器（図示しない）に接続される。この加算器の出力は、８ビットになって、水平フィルタ装置１０の場合は、ＲＳＡのメモリポート１５へ、そして垂直フィルタ装置１２の場合は、ＲＳＡの出力ポート１３へ送出される。
【０００９】
水平および垂直フィルタ装置１０、１２は、それぞれ、水平および垂直位置アキュムレータ１８、２０によって制御される。これらの位置アキュムレータは、各々の出力画素あるいは行の位置を算出する。算出された位置は、各々の計算に対して、どのフィルタ係数とどの画像データを使用するかを決定する。図３に示すように、ＲＳＡは、入力画像（行）間の間隔を、３２個の副間隔、つまり３２個のビンに分割する。ビンｎ’は、位置ｉ＋ｎ’／３２で中心に置かれ、そしてその中心から＋／−１／６４だけ延びる。ここで、ｉは出力画素位置の整数部であり、ｎ’は後述するビンあるいは副画素指数である。各々のビンは、１セットのフィルタ係数と、各々のフィルタタップ要素の係数メモリの位置とに対応する。
【００１０】
動作を説明すると、まず、画像サイズ変更の所望の量に対する出力画素および行間隔値を、水平および垂直位置アキュムレータ装置に入力する。これらの値は、出力画素（行）数で割った入力画素数として定義される。したがって、出力画素あるいは出力行の間隔は、補間動作の場合は、１より小さくなり、間引き動作の場合は、１より大きくなる。出力画素および行間隔値は、３ビットからなる整数部と１６ビットからなる小数部で表わされる。したがって、出力画素（行）間の最大間隔は、７．９９９９８入力画素（行）になる。位置０．０から始まり、水平および垂直位置アキュムレータ装置は、各々の画素につき、画素（行）間隔単位で増分し、そして、現在の出力画素（行）の位置を保持する。現在の出力画素および行位置は、１３ビットからなる整数部（最大８１９２ｘ８１９２の入力画像に及ぶ）と、１６ビットからなる小数部で表わされる。任意の出力画素の場合、その位置の整数部は、画像再標本化式のｉに対応する。この整数部は、現在の出力画素を算出するには、どの入力データを使用すべきかを決定する。出力位置の小数部は、出力位置がどれだけ入力標本化格子に接近しているかを表わす。この小数位置は、出力画素がどのビンｎ’に属すかを指定すると共に、どのセットのフィルタ係数を周囲の入力画素に当てはめるかを決定するのに使用する。各々の出力位置の小数部は、最も近い１／３２番目に丸められ、そして３２を掛けて、０から３１のビン番号を算出するのに使用する。
【００１１】
たとえば、ここで、５個の画素からなる入力行と、８個の画素からなる出力行、つまり、１．６による補間について考えてみる。出力画素の間隔は、したがって、５／８＝０．６２５入力画素になる。図４は、出力画素の位置を示すが、分かりやすくするため、８個のビンだけを示してある。ここで、４タップ補間モードを使用したと仮定すると、出力画素ｏ２は、入力画素ｉ０、ｉ１、ｉ２、ｉ３と、ビン２（８個のビンの内）に属す１セットの係数とから求められる。また、出力画素ｏ３は、ビン７（８個のビンの内）に属す１セットの係数を使用して、入力画素ｉ０、ｉ１、ｉ２、ｉ３だけからも求められる。
【００１２】
メモリ制御装置１４の機能は、ＲＳＡと、中間データ記憶用の外部メモリバンク（Ｍ０〜Ｍ４）との間のインタフェースを行なうと共に、垂直フィルタ装置１２への入力を制御することである。垂直フィルタ装置が、４タップ補間モードで動作するように構成されているとき、５つのメモリバンクはすべて能動状態（アクティブ）である。垂直フィルタ装置が、９タップ補間モードで動作するように構成されているときは、４つのメモリバンクしか使用しない。また、圧縮／伸長モード（たとえば、本発明の一部をなす米国特許第４、９６９、２０４号に開示されている種類の階層型あるいはピラミッド型圧縮算法を使用した圧縮／伸長モード）の場合も、５つのすべてのメモリバンクを使用する。メモリ制御装置１４は、水平フィルタ装置１０からの外部メモリバンクＭ０〜Ｍ４への書込みと、垂直フィルタ装置１２によるメモリバンクＭ０からＭ４からの読出しとを交互配置するので、両方のフィルタ装置は、同時に動作することができる。メモリ制御装置１４内のマルチプレクサは、各々のメモリバンクから来たデータを、ＲＳＡの動作モードに従って、対応するフィルタタップに転送する。
【００１３】
画像ろ過モードあるいは画像再標本化モードのいずれにおいても、ＲＳＡは、３色の行が交互配置された入力画像データを取り込むことができる。この３色モードを選択した場合、各々の外部ＳＲＡＭは、３色構成要素の３本の行を記憶できるように、つまり、合計９本の水平再標本化／ろ過行を記憶できるように、容量を十分に大きくとる必要がある。
【００１４】
垂直フィルタ装置１２が、９タップ補間モードで動作するように構成されていると、４つのメモリバンクが使用される。各々のＳＲＡＭメモリバンクは、３本の行の、水平方向に再標本化／ろ過したデータを記憶するので、４バンクを合わせて１２行の環状バッファを形成する。画像データは、３つの連続するメモリ位置が、３本の隣接する行に対し、同一の番号の画素を持つように、グループに分けて記憶される。この方法では、９個の水平方向に再標本化／ろ過された画素の各々の列は、連続するアドレスに対して読出しサイクルを３回実行することにより、読み出される。この場合、各読出しサイクルは、３つのメモリバンクを並列にアクセスする。メモリ制御装置１４は、常に、環状バッファから最も古い９行を読み出し、読み出した９行を垂直フィルタ装置１２の対応タップに送出する。メモリの３回の読出しと読出しの間に、メモリ制御装置１４は、１個の水平方向にろ過された画素を、４つのメモリバンクの１つに書き込む。図５は、上記の動作モードのタイミングと、両方のフィルタ装置の同時動作を示す。
【００１５】
２個あるいは３個の色画像の場合、異なる色構成要素で形成した画素は、行の長さの２倍あるいは３倍離れたメモリ位置に記憶される。つまり、入力画像が、行を交互配置したＲＧＢデータの場合、その画像の３つの行のすべてのＲ画素は一緒に記憶され、それらに、同じ３つの行のすべてのＧ画素が後続し、さらに、同じ３つの行のすべてのＢ画素が後続する。
【００１６】
垂直フィルタ装置が、４タップ補間モードで動作するように構成されているとき、５つのメモリバンクがすべて使用されて、水平方向に再標本化／ろ過したデータを１行記憶する。したがって、５つのバンクによって、５本の行からなる環状バッファを実現できる。４本の隣接する行が、５つのバンクの４つから並列に読み出され、垂直フィルタに入力され、同時に、水平フィルタの現在の出力が、５つのバンクの１つに書き込まれる。図６は、この動作モードのタイミングを示す。
【００１７】
画像のサイズ変更の量と、算出中の出力行の位置次第で、両方のフィルタ装置は能動状態でなくなる場合がある。たとえば、４タップ補間モードの動作における２Ｘ補間の場合を仮定してみよう。２Ｘ補間の場合、垂直フィルタ装置１２は、水平フィルタ装置１０の２倍の行数を生成する必要がある。図６は、両方のフィルタ装置１０、１２が能動状態にあることを示す。２Ｘ補間の場合のように、水平フィルタ装置が能動状態でないとき、垂直フィルタ装置１２が、４個の画素からなる１つの縦列を、各々の主クロックサイクルで読み出す。
【００１８】
ＲＳＡが圧縮／伸長モードで動作するとき、５つのメモリバンクのすべてが使用される。３つのバンクが、９タップ補間モードの場合と同じ方法で、９行の水平方向に再標本化／ろ過したデータの記憶に使用される。残りの２つのバンクは、２行の水平および垂直方向にろ過したデータを、１行ずつ記憶するのに使用される。垂直フィルタ装置１２は、後述するように、ろ過したデータと双線形補間したデータの生成を交互に行なう。ろ過を行なうとき、メモリ制御装置１４は、９行の水平方向にろ過した画像のデータを、バンクＭ０、Ｍ１、Ｍ２から、３つの読出しサイクルで、読み出し、そして、読み出したデータを対応するフィルタタップに送出する。垂直フィルタ装置１２の出力は、メモリ制御装置１４によって、バンクＭ３とＭ４へ、交互に書き込まれる。タイミングは、９タップ／４バンク動作モードの場合と同じで、読出しに３サイクル、書き込みに１サイクル、合計４サイクルが必要である。水平フィルタ装置１０は、垂直フィルタ装置がこのモードで動作しているときは、能動状態にはなりえない。なぜなら、メモリ制御装置１４が、垂直フィルタ装置１２からデータを書き込むように構成されているからである。垂直フィルタ装置１２が補間データを生成しているとき、メモリ制御装置１４は、データをバンクＭ３とＭ４から並列に読み出し、そしてバンクＭ３から読み出したデータをフィルタのタップ０へ、バンク４から読み出したデータをフィルタのタップ２へ送出する。連続的に読み出すことにより、タップ０のデータ値がタップ１へシフトされ、タップ２のデータ値がタップ３へシフトされる。水平フィルタ装置１０は、垂直フィルタ装置１２が補間を実行しているとき、能動状態になることができる。水平フィルタ装置１０で得られた結果は、バンクＭ０、Ｍ１あるいはＭ２に書き込まれ、メモリに記憶されている最も古い行のデータに置き変わる。このときのタイミングは、４タップ／５バンクモードの動作のタイミングと同じである。図７と図８は、圧縮／伸長モードの動作のタイミングを示す。
【００１９】
下記の表は、様々なモードの動作に対し、画像データがどのようにメモリに写像されるかを示す。これらの表は、１つの画像の最初の１セットの行に対する写像を示す。各々の行は、４個の画素と２個の色構成要素を持っている。項目”ｐ０  ｌ４  ｃ１”は、画素０（第一画素）、４行目、色構成要素１を表わす。データは、行が交互配置された色で、メモリ制御装置１４に入力され、任意の行の色構成要素０の画素０、４に、色構成要素１の画素０、４が後続する。この写像方式は、画素が交互配置された色に対しても同様に動作し、そこでは、データは、ｐ０  ｃ０、ｐ０  ｃ１、ｐ１  ｃ０．．．ｐ３  ｃ０、ｐ３  ｃ１となる。
【００２０】
表１は、４タップ／５バンクモードの動作における、最初の４行のデータの写像を示す。ここでは、各々のバンクメモリには１行の画素データが記憶されている。３番目の色構成要素を使用した場合、そのデータは位置８〜１２を占有する。行０〜３のデータを使用するためには、データを、すべての５つのバンクのアドレス０〜７から、並列に読み出す。バンクＭ０からＭ３から読み出されたデータは、対応するフィルタタップに送出され、Ｍ４から読み出されたデータは無視される。書込みの場合、メモリに記憶されている最も古い行のデータは、次に記憶されるデータで置き換えられる。入力行５のデータは、バンクＭ０の行０のデータに置き換わる。行６のデータは、行１のデータに置き換わる。以下同様に置き換わっていく。
【００２１】
【表１】
0003762446.tif 000002
表２は、垂直フィルタ装置１２が９タップ／４バンクモードで動作しているときの、最初の１２行の画像データの写像を示す。ここでも、２つの色構成要素を示す。３番目の色構成要素を使用した場合、位置２４〜３５を占有する。行は３本ずつのグループで記憶されるので、３つの連続する位置を読み出すと、１２行のデータが生成される（４つのバンクすべてが並列に読み出される）。これらの最も新しい９つの行のデータが、対応するフィルタタップに送出されて処理される。書込み動作において、最も古い行のデータが置き換えられる。行３〜１１を読み出すとき、バンクＭ１、Ｍ２、Ｍ３から読み出されたデータは、垂直フィルタ装置１２のタップ０〜８へ送出される。この場合、９ビットのデータを取り出すための読出しサイクルが必要である。データは、次のようにして、メモリバンクからフィルタのタップへ送られる。つまり、最初の読出しサイクルで、バンクＭ１、Ｍ２、Ｍ３から読み出されたデータが、タップ０、３、６へ送られる。２番目のサイクルで、データがタップ１、４、７へ送られる。そして、３番目のサイクルで、データがタップ２、５、８へ送られる。バンクＭ０の行０のデータは、行１２のデータによって置き換えられる。行１３の書込み中に、行４〜１２のデータが処理される。したがって、３つの読出しサイクルの最初のサイクルで、バンクＭ０、Ｍ２、Ｍ３からよ乱されたデータがタップ８、２、５へ送られ、２番目のサイクルで、バンク１、２、３から読み出されたデータがタップ０、３、６へ送られ、そして、３番目のサイクルで、バンク１、２、３から読み出されたデータがタップ１、４、７へ送られる。
【００２２】
【表２】
0003762446.tif 000003
表３は、最初の９本の入力行と、圧縮／伸長モードの動作で処理された最初の２本の間引かれた出力行の写像を示す。３つのメモリバンクを使用して、そして、９タップ補間モードの動作の場合と同じ写像方法により、水平方向にろ過した画像の９行の画素データを記憶している。相違点は、３つのバンクに９行しか記憶しないことである。水平フィルタ装置１０から読み出された新しい入力行は、垂直フィルタ装置１２がバンクＭ０、Ｍ１、Ｍ２のデータを処理しているときは、書き込むことはできない。その代わりに、垂直フィルタ装置１２の出力が、バンク３および４の１つに書き込まれる。偶数行が、バンク３へ、そして奇数行がバンク４へ書き込まれる。このデータは、次に、垂直フィルタ装置１２へ再び読み込まれ、双線形補間を使用して、２ｘあるいは４ｘ補間画像を算出する。バンクＭ３とＭ４は、両方とも並列に読み出される。バンクＭ３からのデータは、タップ０へ送られる。バンクＭ４からのデータは、タップ２へ送られる。垂直フィルタ装置１２が、バンクＭ３とＭ４からのデータを処理している間、水平フィルタ装置１０からの新しいデータが、バンクＭ０、Ｍ１、Ｍ２の１つに書き込まれ、現在メモリに記憶されている最も古い行のデータと置き換わる。
【００２３】
【表３】
0003762446.tif 000004
上述したように、ＲＳＡは、画像ろ過モード、画像再標本化モード、そして圧縮／伸長モードを含む少なくとも３つのモードの１つを選択して動作することができる。以下、これらの動作モードの各々について詳述する。
【００２４】
画像ろ過モードでは、ＲＳＡは、標準ＦＩＲろ過を実行する。つまり、入力画像に対して畳込み動作を実行し、同じ大きさの出力画像を、入力画像として生成する。２つのフィルタ装置１０、１２は、それぞれ、下記の標準の一次元の畳込み式を実現する：
【数１】
0003762446.tif 000005
上式では、ｙ（ｎ）は出力画素ｎを表わし、ｘ（ｍ）は入力画素ｍを表わし、そして、ｈ（ｋ）はタップｋにおけるフィルタ係数を表わす。この構成では、同じフィルタ係数を使用して、各々の出力画素を算出するので、３２個の係数位置／タップの１つだけを使用する。ＲＳＡは、まず、入力画像の入力行に対して、水平ろ過を行い、そして、水平ろ過した行を外部メモリに書き込む。そして、９本の水平ろ過した行のグループが、垂直フィルタ装置１２によって読み出され、出力画像の１行になる。出力画素は、算出され次第、出力ポートから出力される。実際の動作では、水平および垂直フィルタ装置１０、１２は同時に動作し、入力および出力ポート制御信号によって制御される。
【００２５】
画像再標本化モードでは、ＲＳＡは、入力画像の大きさとは異なる大きさの出力画像を生成する。ＲＳＡに内蔵されている９タップフィルタの各々が、上記のＦＩＲフィルタ公式を修正したものを実現する。９タップ核で再標本化するための式は次のようになる：
【数２】
0003762446.tif 000006
ここで、前式のように、ｙ（ｎ）は出力画素ｎ、ｘ（ｍ）は入力画素ｍである。上式は、入力画素の指数付けと係数ｈ（ｋ，ｎ’）とが、標準畳込み公式とは異なっている。画像再標本化モードでは、各々の出力画素の位置が算出される。出力画素位置の整数部ｉを使用して、どの９個の入力画素を使用するかを決定する。出力画素位置の小数部を使用して、指数ｎ”、ビンあるいは副画素指数を算出する。その結果により、３２セットの係数の１つを選択し、選択したセットの係数を入力画素に適用する。前式と同じく、ｋは９個のフィルタタップの１つを選択するためのものである。
【００２６】
ろ過モードの場合と同じように、入力画素のすべての行が、まず水平方向に再標本化され、その結果が外部メモリの１つに書き込まれる。つぎに、複数の水平方向にろ過された行が、メモリ制御装置１４によって外部メモリから読み出され、垂直フィルタ装置１２へ書き込まれ、再標本化された出力画像の１行になる。再標本化モードにおいては、水平および垂直フィルタ装置の両方の９個のタップを使用することができる。しかし、入力画像の画素と行よりも多くの画素と行を持つ出力画像を生成するとき、つまり、補間を行なうときは、垂直フィルタ装置１２のタップの内４個だけを使用し、そして外部メモリのすべてを使用することにより、実行速度を大きくするように、ＲＳＡを構成することができる。この特殊なモードは、共通二次（２タップ）あるいは三次（４タップ）補間核を使用する場合、性能を向上させる。
【００２７】
図９〜１１は、各々の方向に、２倍ずつ補間した入力画像の例を示す。図９の各々の入力行は、水平方向に補間され、図１０の中間データを形成する。図１０の４本の強調表示した行が、垂直フィルタ装置１０に２回読み込まれ、図１１の２本の強調表示された行を形成する。各出力行とも、新しいｎ’が計算され、それを使用して垂直フィルタ係数を選択して、その行のすべての画素を算出する。
【００２８】
圧縮／伸長モードでは、ＲＳＡを使用して、画像圧縮あるいは伸長算法の一部を効率的に実行する。たとえば、図１２は、画像の間引き、双線形補間、残留画像計算、そしてハフマン符号化などを含む多数の段階で構成される圧縮算法を示す。ＲＳＡは、この圧縮算法の画像間引きと双線形補間の部分を実行するのに使用でき、残りの部分はＲＳＡの外部の回路が実行する。図１２の例では、画像が各方向に２倍または４倍で間引きされ、次に、補間される。同様に、ＲＳＡは、伸長動作の場合と全く同じ方法で、２Ｄ双線形補間を実行するのに使用できる。
【００２９】
圧縮／伸長モードでは、元の画像の行がＲＳＡに入力され、大きさが水平方向に縮小されて、外部メモリバンクに書き込まれる。次に、垂直フィルタ装置１２が、この水平方向にろ過された行をメモリバンクから読み出し、間引きされた画像の１行を形成する。間引きされた行は、ＲＳＡから出力される一方で、外部メモリにも再度書き込まれる。間引き行の演算と演算の間で、２Ｄ双線形補間を行なうように、垂直フィルタ装置１２は構成されている。垂直フィルタ装置１２は、２本のすでに間引きされている行をメモリバンクから読み出し、そして、補間された画像の２行（あるいは４行）を算出する。このとき、各々の行は、間引きされた行の大きさの２倍（あるいは４倍）である。このように、垂直フィルタ装置１２は、間引きされた画像の行と、補間された画像の行とを、交互に算出する。圧縮／伸長モードでは、外部回路も合わせて使用して、間引き画像と残留画像を生成する間に、元の画像を１回読み出す。整数の因数により画像の大きさを縮小する上記のような特殊な方法は、１セットのフィルタ係数だけしか必要とせず、係数メモリに記憶されている残りの位置は、双線形補間係数を記憶するために使用される。
【００３０】
ここで注意すべきは、図示されている実施例では、入力画像データは、８ビットからなる、０〜２５５の、符号なし整数データであることが好ましいことである。係数の形式は、８ビット符号なし整数か、８ビット変形２の補数のいずれにも構成できる。符号なしの形式では、係数は０〜２５５の値をとる。変形２の補数の形式は、値１０００００００を除き、標準２の補数形式と同じである。この値は、正の１２８を表わすのに使用される。この値１０００００００は、フィルタ出力１２８の縮小／拡大とあいまって、タップ要素が、画素を正確に１．０で乗算することを可能にする。この１．０という数値は、補間核に対して一般的に使用されている数値である。
【００３１】
タップ要素乗算器は、上記の加算器に入力される１６ビット積を算出する。この加算器は、好ましくは、最大精度の２０ビットの加算和を求めることができる。求められた加算和は、６４あるいは１２８で拡大／縮小され、０〜２５５の範囲に入るようにそろえられる。この倍率は、係数の形式とあいまって、有効なフィルタ係数範囲を決定する。表４は、フィルタ係数の、４つの可能な有効範囲を示す。
【００３２】
【表４】
0003762446.tif 000007
好適な実施例では、構成レジスタ装置１６は、モードレジスタ、出力画素／行レジスタ、入力画素／行レジスタ、出力行レジスタ、入力行レジスタ、出力行間隔レジスタ、そして出力画素間隔レジスタを含む。モードレジスタは、次のビットを含む。まず、垂直フィルタ長さビット。このビットを”１”に設定すると、４個のタップと、すべての５つのメモリバンクが使用され、”０”にリセットすると、すべての９個のタップと４つのメモリバンクが使用される。次に、２の補数係数ビット。このビットを設定すると、フィルタ係数を、８ビットの変形２の補数で表わすことができる。フィルタ倍率ビット。このビットを設定すると、両方のフィルタ出力が６４の倍率あるいは６個の２進桁で拡大／縮小され、リセットすると、両方のフィルタ出力が１２８の倍率あるいは７個の２進桁で拡大／縮小される。圧縮／伸長モードビット。このビットを設定すると、圧縮／伸長モードのための間引きと双線形補間が同時に行なわれ、リセットすると、画像ろ過と画像再標本化が行なわれる。圧縮／伸長補間因数ビット。このビットを設定すると、４倍の補間が各次元において行なわれ、リセットすると、２倍の補間が使用される。色構成要素数を指定する２ビット。入力ストローブ極性ビット。このビットを設定すると、論理ハイ（ＨＩＧＨ）になったとき有効になる入力データストローブ信号を示し、リセットすると、論理ロー（ＬＯＷ）になったとき有効になる入力データストローブ信号を示す。最後に、出力ストローブ極性ビット。このビットを設定すると、論理ハイ（ＨＩＧＨ）になったとき有効になる出力データストローブ信号を示し、リセットすると、論理ロー（ＬＯＷ）になったとき有効になる出力データストローブ信号を示す。出力画素／行レジスタは、出力画素の画素数／行数−１を表わす１３ビットからなる数字を保持する。入力画素／行レジスタは、入力画素の画素数／行数−１を表わす１３ビットからなる数字を保持する。出力行レジスタは、出力画素の行数−１を表わす１４ビットからなる数字を保持するレジスタである。入力行レジスタは、入力画素の行数−１を表わす１４ビットからなる数字を保持するレジスタである。出力行間隔レジスタは、入力行間隔を基準とした出力行間の間隔を保持する。出力画素間隔レジスタは、入力画素間隔を基準とした出力画素間の間隔を保持する。
【００３３】
好適な実施例に格納すべき８ビットのフィルタ係数は合計５７６個（２フィルタｘ９タップ／フィルタｘ３２係数／タップ）である。これらの係数は、好ましくは、最初に、水平フィルタ装置１０へ格納し、次に、垂直フィルタ装置１２へ格納する。その場合、各フィルタ装置とも、タップ０からタップ８へと格納する。各タップにつき、ビン０からビン３１へ、３２個の係数が格納される。係数メモリアドレスは、図示しない内部アドレスカウンタによって生成される。
【００３４】
以上、本発明を、好適な実施例を参照しながら説明した。しかし、本出願の請求項の範囲を逸脱しないかぎり、様々な変更を加えることができることは理解できると思う。
【００３５】
【発明の効果】
本発明によれば、１個の集積回路において、任意の因数による画像補間あるいは間引きを行なうようにしたので、画像のサイズ変更あるいは再標本化の柔軟性が向上すると共に、最大９ｘ９画素の近傍を使用するようにしたので、高品質の画像の生成が可能になる。
【図面の簡単な説明】
【図１】本発明によるＲＳＡの概略ブロック図である。
【図２】図１の水平および垂直フィルタ装置で使用するフィルタタップの概略図である。
【図３】入力画素間隔をビンに分割した図である。
【図４】１．６倍補間の例の出力画素位置を示す図である。
【図５】図１のＲＳＡの、９タップ／４メモリバンクモードにおける、図１のＲＳＡの動作を示すタイミング図である。
【図６】４タップ／５メモリバンクモードにおける、図１のＲＳＡの動作を示すタイミング図である。
【図７】垂直フィルタがろ過動作を実行しているときの、フォトＣＤ圧縮／伸長モードにおける、図１のＲＳＡの動作を示すタイミング図である。
【図８】垂直フィルタが補間を実行しているときの、フォトＣＤ圧縮／伸長モードにおける、図１のＲＳＡの動作を示すタイミング図である。
【図９】入力画像の一例を示す図である。
【図１０】図９の入力画像を水平方向にろ過／再標本化した結果を示す図である。
【図１１】図１０の画像を垂直方向にろ過／再標本化した結果を示す図である。
【図１２】圧縮算法の例を示す図である。
【符号の説明】
１０  水平フィルタ装置
１１  入力ポート
１２  垂直フィルタ装置
１３  出力ポート
１４  メモリ制御装置
１５  メモリポート
１６  構成レジスタ装置
１７  構成ポート
１８  水平位置アキュムレータ
２０  垂直位置アキュムレータ
２２  マルチプレクサ
３０  ８ビットマルチプレクサ
３２  係数ＲＡＭメモリ
３４  入力レジスタ
３６  出力レジスタ
３８  マルチプレクサ
【図１】
0003762446.tif 000008
【図２】
0003762446.tif 000009
【図３】
0003762446.tif 000010
【図４】
0003762446.tif 000011
【図５】
0003762446.tif 000012
【図６】
0003762446.tif 000013
【図７】
0003762446.tif 000014
【図８】
0003762446.tif 000015
【図９】
0003762446.tif 000016
【図１０】
0003762446.tif 000017
【図１１】
0003762446.tif 000018
【図１２】
0003762446.tif 000019