(57)【特許請求の範囲】
【請求項１】
ＣＰＵから出力された画像データにおいて連続する２つの画素のデータに縮小比率に応じた演算処理を施すことによって、画像データにおける水平方向の画素数より少ない新たな画素データを生成する画像縮小方法であって、
画素データの入力タイミングに同期した画素クロックのタイミングで上記ＣＰＵから複数画素データ単位で出力されるパラレル形式の上記画像データを画素データ単位でシリアル形式に変換し、各画素データを上記画素クロックのタイミングで順次シフトさせ、シフトされた画素データに上記演算処理を施す前に、上記２つの画素データのうちの先の画素データを１画素データ分遅延させることによって後の画素データのタイミングに合わせて上記２つの画素データを上記演算処理に供し、上記２つの画素データのタイミングを合わせるとき、シフトされた複数画素データ単位の最後の画素データを上記２つの画素データのうちの先の画素データとして上記複数画素データ単位における画素データ数と同数の上記画素クロックにおける単位クロックの期間保持することを特徴とする画像縮小方法。
【請求項２】
上記複数画素データ単位の最後の画素データのみ１画素データ分の遅延を上記単位クロック数の回数繰り返すことを特徴とする請求項１に記載の画像縮小方法。
【請求項３】
生成されたシリアル形式の上記画素データを上記ＣＰＵから出力された上記画像データの上記複数画素データ単位と同じ複数画素データ単位に保持してパラレル形式で同時に画像メモリに出力することを特徴とする請求項２に記載の画像縮小方法。
【請求項４】
ＣＰＵから出力された画像データにおいて連続する２つの画素のデータに縮小比率に応じた演算処理を施すことによって、画像データにおける水平方向の画素数より少ない新たな画素データを生成する演算処理手段を備えた画像縮小装置であって、
画素データの入力タイミングに同期した画素クロックのタイミングで上記ＣＰＵから複数画素データ単位で出力されるパラレル形式の上記画像データを画素データ単位でシリアル形式に変換し、各画素データを上記画素クロックのタイミングで順次シフトさせる変換手段と、
上記変換手段によってシフトされた画素データに上記演算処理を施す前に、連続する上記２つの画素データのうちの先の画素データを１画素データ分遅延させることによって後の画素データのタイミングに合わせて上記２つの画素データを上記演算処理手段に与える遅延手段と、
上記遅延手段によって先の画素データを後の画素データのタイミングに合わせるとき、シフトされた複数画素データ単位の最後の画素データを上記２つの画素データのうちの先の画素データとして上記複数画素データ単位における画素データ数と同数の上記画素クロックにおける単位クロックの期間保持する保持手段とを備えていることを特徴とする画像縮小装置。
【請求項５】
上記遅延手段が、シフトされた複数画素データ単位の最後の画素データのみ１画素データ分の遅延を上記単位クロック数の回数繰り返すことによって上記保持手段を兼ねることを特徴とする請求項４に記載の画像縮小装置。
【請求項６】
生成されたシリアル形式の上記画素データを上記ＣＰＵから出力された上記画像データの上記複数画素データ単位と同じ複数画素データ単位に保持してパラレル形式で同時に画像メモリに出力する保持出力手段を備えていることを特徴とする請求項５に記載の画像縮小装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、デジタル画像の縮小に係り、より詳しくは、ＣＰＵなどの処理装置から出力される画像を縮小する画像縮小方法およびその装置に関するものである。
【０００２】
【従来の技術】
従来、外部から入力された画像を取り込んで表示装置に表示する際に、画像のデジタルデータを一旦画像メモリに蓄えた後、所定の表示タイミングで読み出して表示装置に表示する。このような装置において、画像を縮小して表示する場合、図１１に示すような構成が用いられる。
【０００３】
この構成においては、ビデオカメラ２１などから出力された、例えばＮＴＳＣ方式やＰＡＬ方式のビデオ信号が、ビデオデコーダ２２で処理される。ここでは、ビデオ信号から同期信号と画像信号とが分離され、その画像信号がデジタル信号に変換される。そのデジタルの画像データは、水平縮小処理回路２３で水平方向に縮小された後に画像メモリ２４に書き込まれる。水平縮小処理回路２３での縮小処理は、画像において隣り合う画素のデータの等価平均を求めて新たな画素データを生成するといった手法が採られる。
【０００４】
画像メモリ２４から読み出された画像データは、必要に応じて、垂直拡大／縮小処理回路２５で垂直方向に指定された比率で拡大または縮小処理が施された後、水平拡大処理回路２６で水平方向に拡大処理が施される。そして、このような処理を経た画像データは、表示デバイス２７に拡大または縮小画像として表示される。
【０００５】
一般に、画像メモリのアクセスバンド幅は、ライン当たりのドット数×動作速度で定められるので、アクセスバンド幅を大きくしないためには、ドット数または／および動作速度を制限する必要がある。そこで、通常、上記のようにメモリへの書き込みの前に画像データを水平方向に縮小することによって、ドット数および動作速度を不要に上昇させることなく、アクセスバンド幅を小さくしている。
【０００６】
【発明が解決しようとする課題】
ところで、画像処理が施された画像データやネットワークを介して転送された画像データを表示デバイス２７に表示させる際、画像データをＣＰＵ２８などの処理装置から一旦画像メモリ２４に取り込んだ後、上記の場合と同様に画像メモリ２４から読み出して表示デバイス２７に送出する。このような画像データを縮小する場合、画像メモリ２４のアクセスバンド幅を小さくする都合上、ＣＰＵ２８によってソフトウェアで縮小処理が行われる。
【０００７】
しかしながら、ソフトウェアで縮小処理を行う場合、ＣＰＵ２８の負担が増大するため、画像データを取りこぼすおそれがある。しかも、ソフトウェアによる縮小処理は、前記の水平縮小処理回路２３のようなハードウェアでの縮小処理に比べて時間がかかる。このため、画像データが外部のネットワークなどから高速で転送されてきても、縮小処理のために遅延が生じるので、アリルタイムに画像を表示することができない。
【０００８】
そこで、ＣＰＵ２８から取り込まれる画像データにも水平縮小処理回路２３と同様な縮小処理を施すことが考えられる。しかしながら、このよう縮小処理には、以下のような問題がある。
【０００９】
ＣＰＵ２８は、通常、メインメモリ２９やシステムの他の部分の制御などといった各種の処理を行うために割り込みを受けるので、ＣＰＵ２８からの画像データの取り込みが、割り込みによって中断する。しかしながら、画像データの取り込みが中断すると、縮小処理に必要な隣り合う２画素分のデータが得られなくなるおそれがある。このため、縮小画像の品位を低下させるという不都合が生じる。
【００１０】
本発明は、上記の事情に鑑みてなされたものであって、ＣＰＵなどの処理装置の負担を軽減するために、ＣＰＵから画像メモリに取り込む画像データにハードウェアでの縮小処理を施すことができる画像縮小方法およびその装置を提供することを目的としている。
【００１１】
【課題を解決するための手段】
本発明の画像縮小方法および画像縮小装置は、上記の課題を解決するために、ＣＰＵから出力された画像データにおいて連続する２つの画素のデータに縮小比率に応じた演算処理を施すことによって、画像データにおける水平方向の画素数より少ない新たな画素データを生成する手法を採用しており、画素データの入力タイミングで上記ＣＰＵから複数画素データ単位で出力されるパラレル形式の上記画像データを変換手段によって画素データ単位でシリアル形式に変換し、各画素データを上記画素クロックのタイミングで順次シフトさせ、シフトされた画素データに上記演算処理を施す前に、上記２つの画素データのうちの先の画素データを遅延手段によって１画素データ分遅延させることによって後の画素データのタイミングに合わせて上記２つの画素データを上記演算処理に供し、上記２つの画素データのタイミングを合わせるとき、シフトされた複数画素データ単位の最後の画素データを保持手段によって上記２つの画素データのうちの先の画素データとして上記複数画素データ単位における画素データ数と同数の上記画素クロックにおける単位クロックの期間保持することを特徴としている。
【００１２】
上記の構成では、ＣＰＵから画像データがパラレル形式の複数画素データ単位で出力される場合、その画像データが変換手段によってシリアル形式の画素データ単位で出力される。このとき、その画素データが遅延手段によって１画素データ分遅延することによって、次の画素データとタイミングが合わされる。このようにして出力された連続する２つの画素に演算処理を施すことにより、新たな画素データが生成される。
【００１３】
また、保持手段によって、複数画素データ単位の最後の画素データが保持手段によって上記の期間保持されるので、ＣＰＵからの画像データの出力が中断してから再開されても、保持された画素データと、次の複数画素データ単位の最初の画素データを連続させることができる。それゆえ、ＣＰＵからの画像データにハードウェア構成による縮小処理を縮小画像の品位を低下させることなく施すことが可能になる。
【００１４】
また、上記の方法および装置においては、上記複数画素データ単位の最後の画素データのみ１画素データ分の遅延を上記単位クロック数の回数繰り返すことによって上記遅延手段が保持手段を兼ねることが好ましい。このようにすれば、パラレル形式でＣＰＵから出力される画素データがシリアル形式に変換された状態でシフトされた後、遅延手段によって複数画素データ単位の最後の画素データのみ１画素データ分の遅延が繰り返される結果、その画素データが保持される。このように、遅延手段が保持手段を兼ねることによって、遅延手段および保持手段を構成する回路をそれぞれ別個に設ける必要がなくなる。
【００１５】
この方法および装置においては、生成されたシリアル形式の上記画素データを保持出力手段によって上記ＣＰＵから出力された上記画像データの上記複数画素データ単位と同じ複数画素データ単位に保持してパラレル形式で同時に画像メモリに出力することが好ましい。このようにすれば、シリアル形式で縮小処理された画像データが入力時の形式に戻される。
【００１６】
【発明の実施の形態】
本発明の実施の一形態について図１ないし図１０に基づいて説明すれば、以下の通りである。
【００１７】
本実施の形態に係る画像処理装置は、図２に示すように、ビデオカメラ１、ビデオデコーダ２、水平縮小処理回路３・４、画像メモリ５、垂直拡大／縮小処理回路６、水平拡大処理回路７およびバッファ回路１１を備えている。
【００１８】
ビデオデコーダ２は、ビデオカメラ１から出力されたアナログのＮＴＳＣ方式やＰＡＬ方式といったビデオ信号（コンポジットビデオ信号）から抽出された画像信号のデジタルへの変換、ビデオ信号からの水平同期信号および垂直同期信号の分離等を行う装置である。
【００１９】
水平縮小処理回路３は、ビデオデコーダ２から出力される入力画像データに水平方向の縮小処理を施す回路である。縮小の方法としては、後述するように、入力画像データにおける、水平方向に隣接する２つの画素データを基に、２画素の中間位置からの距離に応じて重み付けされた係数を乗算した値を加算して元の画素数より少ない新たな画素データを生成する。
【００２０】
水平縮小処理回路４は、ＣＰＵ８から出力される、上記の入力画像データとは異なる画像データを水平方向に縮小する回路である。この水平縮小処理回路４も、水平縮小処理回路３と同様な方法で縮小を行うが、ＣＰＵ８からの画像データの送出が割り込みによって中断されるため、その影響を受けないように、画像データの送出タイミングを調整する機能を有している。
【００２１】
垂直拡大／縮小処理回路６は、画像メモリ５から読み出された画像データに垂直方向に拡大または縮小処理を施す回路である。この垂直拡大／縮小処理回路６は、垂直方向ではあるが、前記の水平縮小処理回路３と同様に隣り合う２画素の中間位置からのそれぞれの距離に応じて重み付けした演算を行う。
【００２２】
水平拡大処理回路７は、垂直拡大／縮小処理回路６から出力された画像データに水平方向の拡大処理を施す回路である。この水平拡大処理回路７は、水平縮小処理回路３と同様の演算方法で拡大のために画素を補完する。この水平拡大処理回路７を経た画像データは、表示デバイス９に与えられる。
【００２３】
続いて、水平縮小処理回路４について詳細に説明する。
【００２４】
図１に示すように、アクセス調整回路４０、ラッチ４１・４２、乗算器４３・４４、補数器４５、加算器４６、フリップフロップ（図中、ＦＦ）４７、乗算係数発生回路４８および補正値発生回路４９を備えている。
【００２５】
アクセス調整回路４０は、画像データにおける水平方向に隣り合う２つの画素データを同時にラッチ４１・４２に供給するように、ＣＰＵ８から画像メモリ５へのアクセスがＣＰＵ８への割り込み処理のために中断するときに、ＣＰＵ８から画像メモリ５へのアクセスを調整する回路である。
【００２６】
ラッチ４１・４２は、入力画像（元画像）における１画素分の画素データの入力のタイミングに同期する画素クロックＰＣＬＫのタイミングで、入力画像の１水平ラインにおいて隣接する入力画素Ａi ・Ａi+1 （ｉ＝１，２，３，…）のデータを順次保持する。ラッチ４１から出力される画素Ａi のデータは乗算器４４に入力され、ラッチ４２から出力される入力画素Ａi+1 のデータは乗算器４３に入力される。また、補数器４５は、１から乗算係数発生回路４８で発生した乗算係数Ｚを減算して乗算係数Ｚの補数（１−Ｚ）を算出する回路である。
【００２７】
乗算器４３は、入力画素Ａi+1 のデータに上記の乗算係数Ｚを乗算し、乗算器４４は、入力画素Ａi のデータに補数器４５で得られた上記の補数を乗算する回路である。加算器４６は、乗算器４３・４４からの乗算出力値を加算する回路である。フリップフロップ４７は、加算器４６から出力される出力画素データ、すなわち縮小または拡大画像の画素データを一時的に保持して出力する回路である。
【００２８】
水平縮小処理回路４では、例えば、入力画像データを水平方向（行方向）に縮小する場合、図３に示すように、縮小画像の出力画素Ｂj を入力画像の基準画素Ａ0 から１個目の画素とすれば、画素Ｂj は、次式によって求められる。この演算では、上記の乗算器４３・４４によって、出力画素Ｂj の位置と入力画素Ａi+1 の位置との間の距離Ｄ1 で重み付けする一方、出力画素Ｂj の位置と入力画素Ａi の位置との間の距離Ｄ2 で重み付けしている。
【００２９】
Ｂj ＝Ａi+1 ＊Ｄ1 ＋Ａi ＊Ｄ2 
ここで、縮小の場合、その比率がＵ／Ｖ（Ｕ＞Ｖ）であるとき、原理的には、その逆数であるＵ／Ｖ＝Ｐ＋Ｑ（Ｐは整数，Ｑは無限循環小数）個の入力画素（元画像の画素）毎に１個の割合で画素を生成する。換言すれば、入力画素間の間隔を１（＝Ｄ1 ＋Ｄ2 ）とすると、この距離に対する出力画素間の距離はＰ＋Ｑ（Ｐ＋Ｑ＞１）である。本画像縮小／拡大装置では、演算桁数を削減するために、小数値Ｑの小数２位以下を切り捨てた小数値ｑを用いるため、Ｐ＋ｑ個の入力画素毎に１個の出力画素を生成する。
【００３０】
一方、拡大の場合、上記と同様な重み付けによる演算を行うが、拡大の比率をＵ／Ｖ（Ｕ＜Ｖ）であるとき、原理的には、その逆数であるＵ／Ｖ＝Ｒ（Ｒは無限循環小数）個の入力画素毎に１個の出力画素を生成する。この場合、出力画素間の距離はＲ（Ｒ＜１）である。本画像縮小／拡大装置では、演算桁数を削減するために、小数値Ｒの小数２位以下を切り捨てた小数値ｒを用いるため、ｒ個の入力画素毎に１個の出力画素を生成する。
【００３１】
なお、出力画素間の距離は、表示画面上の距離ではなく、入力画素に対する出力画素の生成の割合を視覚的に分かりやすくするために用いられた表現である。
【００３２】
上記のように、小数２位以下の値を含まない小数値ｑまたはｒを用いるため、Ｐ＋ｑたまはｒで表される基本距離Ｄ0 をおいて新たな画素を生成しようとすると、切り捨てた小数２位以下の値による誤差が出力画素毎に累積していく。水平縮小処理回路４では、このような不都合を解消するため、上記の誤差が所定値、例えば０．１以上になるとき、換言すれば、誤差の小数１位が“１”になるときに、その誤差を補償するように構成されている。
【００３３】
具体的には、乗算係数発生回路４８が、その補正された乗算係数Ｚを発生して乗算器４３および補数器４５に与える。この乗算係数発生回路４８は、基準画素Ａ0 から水平方向にＤ0 ×ｎ離れた第ｎ番目の出力画素の位置毎の累積誤差が所定値以上になるか否かを判定し、超える場合のみ、第ｎ番目の出力画素の位置を補正するように、補正値発生回路４９で発生した補正値ＡＤＪを含む乗算係数Ｚを出力する。
【００３４】
補正値発生回路４９は、上記の小数値ＱまたはＲが順次加算されるときの循環性、特に循環パターンが数種類に分類されることに着目して、縮小または拡大の比率に応じて予め定められた循環パターンを選び、その循環パターンによって定まるタイミングで、縮小または拡大の比率に応じた補正値ＡＤＪを出力する。
【００３５】
なお、水平縮小処理回路３は、ビデオデコーダ２からのシリアルの画像データを縮小するので、パラレルの画像データを扱う水平縮小処理回路４におけるアクセス調整回路４０を持たず、かつラッチ４１の出力がラッチ４２に入力されるように構成されており、その他の部分については水平縮小処理回路４と同様に構成されている。したがって、水平縮小処理回路３については、詳細な説明を省略する。
【００３６】
ここで、前述のアクセス調整回路４０について詳細に説明する。このアクセス調整回路４０は、図４に示すように、Ｄフリップフロップ４０ａ〜４０ｆ、データセレクタ４０ｇ〜４０ｊ、ラッチ４０ｋ〜４０ｍ、インバータ４０ｎ・４０ｏ、ＡＮＤゲート４０ｐ、シフトレジスタ４０ｑおよびＯＲゲート４０ｒを備えている。
【００３７】
Ｄフリップフロップ４０ａは、ＣＰＵ８から出力された４画素分の６４ビットの画像データを、画素クロックＰＣＬＫのタイミングで１６ビット（１画素分）ずつに４分割して出力する。これにより、出力端子Ｑ0 〜Ｑ3 からは、４つの画素データが出力される。
【００３８】
出力端子Ｑ0 から出力される最下位の画素データは、Ｄフリップフロップ４０ｂに入力される。出力端子Ｑ1 から出力される第３位の画素データは、データセレクタ４０ｇの一方の入力端子（１）に入力される。Ｄフリップフロップ４０ｂの出力信号は、データセレクタ４０ｇの他方の入力端子（０）に入力される。データセレクタ４０ｇの出力信号は、Ｄフリップフロップ４０ｃに入力される。
【００３９】
Ｄフリップフロップ４０ａの出力端子Ｑ2 から出力される第２位の画素データは、データセレクタ４０ｈの一方の入力端子（１）に入力される。Ｄフリップフロップ４０ｃの出力信号は、データセレクタ４０ｈの他方の入力端子（０）に入力される。データセレクタ４０ｈの出力信号は、Ｄフリップフロップ４０ｄに入力される。
【００４０】
Ｄフリップフロップ４０ａの出力端子Ｑ3 から出力される最上位の画素データは、データセレクタ４０ｉの一方の入力端子（１）に入力される。Ｄフリップフロップ４０ｄの出力信号は、データセレクタ４０ｉの他方の入力端子（０）に入力される。データセレクタ４０ｉの出力信号は、Ｄフリップフロップ４０ｅに入力される。
【００４１】
Ｄフリップフロップ４０ｅの出力信号は、一方の画素データとして、前述のラッチ４１に入力されるとともに、データセレクタ４０ｊの一方の入力端子（０）に入力される。このデータセレクタ４０ｊの出力信号は、Ｄフリップフロップ４０ｆに入力される。Ｄフリップフロップ４０ｆの出力信号は、他方の画素データとして、前述のラッチ４２に入力されるとともに、データセレクタ４０ｊの他方の入力端子（１）に入力される。
【００４２】
ＣＰＵ８から供給されるチップセレクト信号ＣＳ* は、インバータ４０ｈで反転されてラッチ４０ｋに入力される。このチップセレクト信号ＣＳ* は、画像メモリ５に画像データを書き込む際にハイレベルになるローアクティブの信号であり、ＣＰＵ８から出力されるアドレス信号をデコードする図示しないデコーダで作成される。
【００４３】
ラッチ４０ｋの出力信号は、ラッチ４０ｌに入力されるとともに、ＡＮＤゲート４０ｐの一方の入力端子に入力される。ラッチ４０ｌの出力信号は、インバータ４０ｏで反転されてＡＮＤゲート４０ｐの他方の入力端子に入力される。ＡＮＤゲート４０ｐの出力信号（スタート信号ＳＴＡＲＴ）は、シフトレジスタ４０ｑに入力される。シフトレジスタ４０ｑの出力端子Ｑ0 ・Ｑ1 ・Ｑ3 〜Ｑ5 は、ＮＣ（無接続）な状態におかれている。シフトレジスタ４０ｑの出力端子Ｑ6 〜Ｑ9 からの出力信号は、ＯＲゲート４０ｒに入力される。ＯＲゲート４０ｒの出力信号は、ラッチ４０ｍに入力される。
【００４４】
ラッチ４０ｍの出力信号は、セレクト信号としてデータセレクタ４０ｊの制御端子Ｓに入力されるとともに、入力イネーブル信号ＩＮＰＥＮＢとして乗算係数発生回路４８に供給される。また、シフトレジスタ４０ｑの出力端子Ｑ2 からの出力信号は、セレクト信号としてデータセレクタ４０ｇ〜４０ｉのそれぞれの制御端子Ｓに入力される。上記のラッチ４０ｋ〜４０ｍおよびシフトレジスタ４０ｑは、前述の画素クロックＰＣＬＫのタイミングで動作する。
【００４５】
上記のアクセス調整回路４０において、Ｄフリップフロップ４０ａ〜４０ｅおよびデータセレクタ４０ｇ〜４０ｉは、複数画素データ単位（ブロック）で入力されるパラレル形式の画像データをシリアル形式に変換して順次出力する出力手段、変換手段およびシフト手段としての機能を有するシフト部４００を構成している。また、ラッチ４０ｋ〜４０ｍ、インバータ４０ｎ・４０ｏ、ＡＮＤゲート４０ｐ、シフトレジスタ４０ｑおよびＯＲゲート４０ｒは、切替制御部４０１を構成している。さらに、データセレクタ４０ｊおよびＤフリップフロップ４０ｆからなる部分は、連続する２つの画素データを同時に出力する遅延手段、およびブロックの最後の画素データを所定期間保持する保持手段としての機能を有するループ部４０２を構成している。
【００４６】
上記のように構成されるアクセス調整回路４０の動作を図５のタイミングチャートを参照して説明する。
【００４７】
ＣＰＵ８から出力される書込ストローブ信号ＷＲ* がローレベル（アクティブ）の状態で、４画素分の６４ビットの画像データが、ＣＰＵ８から出力され、Ｄフリップフロップ４０ａで１６ビット（１画素分）ずつに４分割される。４画素のうちの先頭画素の第１画素データはデータセレクタ４０ｉに入力され、第２画素データはデータセレクタ４０ｈに入力され、第３画素データはデータセレクタ４０ｇに入力され、第４画素データはＤフリップフロップ４０ｂに入力される。
【００４８】
一方、アクティブ（ローレベル）のチップセレクト信号ＣＳ* がインバータ４０ｎで反転され、ラッチ４０ｋにより画素クロックＰＣＬＫの１クロック分ラッチされ、さらにラッチ４０ｌにより画素クロックＰＣＬＫの１クロック分ラッチされた後インバータ４０ｏで反転されてＡＮＤゲート４０ｐに入力される。また、ラッチ４０ｋでラッチされた信号もＡＮＤゲート４０ｐに入力される。そして、ＡＮＤゲート４０ｐで入力された２つの信号の論理積がとられることでスタート信号ＳＴＡＲＴが得られる。
【００４９】
このスタート信号ＳＴＡＲＴは、シフトレジスタ４０ｑで画素クロックＰＣＬＫのタイミングでシフトされる。シフトレジスタ４０ｑにおける第３の出力端子Ｑ2 から出力されるハイレベルのセレクト信号ＳＥＬは、データセレクタ４０ｇ〜４０ｊに入力される。すると、データセレクタ４０ｇ〜４０ｊの入力端子（１）に入力された上記の第１ないし第３画素データが選択されてそれぞれＤフリップフロップ４０ｃ〜４０ｅに入力されて１クロックの期間保持される。このとき、データセレクタ４０ｊの制御端子Ｓに入力される信号はローレベルであるので、Ｄフリップフロップ４０ｅで保持されている第１画素データがＤフリップフロップ４０ｆに入力されるとともに、ラッチ４１への入力画素データとして出力される。
【００５０】
セレクト信号ＳＥＬがローレベルの期間においては、データセレクタ４０ｇ〜４０ｉで入力端子（０）からの入力が選択される。このため、Ｄフリップフロップ４０ｅに保持された第１画素データは、画素クロックＰＣＬＫのタイミングでラッチ４１への入力画素データとして出力される。また、Ｄフリップフロップ４０ｂ〜４０ｄに保持された第２ないし第４画素データは、画素クロックＰＣＬＫのタイミングでそれぞれ次段のＤフリップフロップ４０ｃ〜４０ｅに入力される。また、第１画素データは、Ｄフリップフロップ４０ｆで１クロック分遅延するので、Ｄフリップフロップ４０ｅからの第２画素データと同じタイミングで出力される。これにより、連続する第１および第２画素データが、それぞれラッチ４２・４１に入力される。このように、セレクト信号ＳＥＬがローレベルの期間においては、第１ないし第４画素データが順次シフトされるとともに、Ｄフリップフロップ４０ｆに入力された画素データが１クロック分遅延するので、上記と同様に連続する２つの画素データが同時に出力される。
【００５１】
また、シフトレジスタ４０ｑにおける第７ないし第１０の出力端子Ｑ7 〜Ｑ10からのシフト信号はＯＲゲート４０ｒに入力され、ここでシフト信号の論理和がとられて４クロック分のハイレベルの信号が得られる。ＯＲゲート４０ｒからの出力信号は、ラッチ４０ｍで１クロック分ラッチされてデータセレクタ４０ｊの制御端子Ｓに入力されるとともに、入力イネーブル信号ＩＮＰＥＮＢとして出力される。
【００５２】
データセレクタ４０ｊは、上記の入力イネーブル信号ＩＮＰＥＮＢによって入力端子（１）からの入力を選択している。これにより、最後にＤフリップフロップ４０ｆに入力された第４画素データは、Ｄフリップフロップ４０ｆの入力端子Ｄに繰り返し入力されて４クロック分保持される。したがって、この４クロック分の間に次のブロックの４画素のデータがそれぞれＤフリップフロップ４０ｂ〜４０ｅに書き込まれると、Ｄフリップフロップ４０ｅに書き込まれた第１画素データと、Ｄフリップフロップ４０ｆに保持されている前のブロックの第４画素データとが同時に出力される。これにより、ＣＰＵ８の画像メモリ５に対するアクセスが割り込み処理などで中断しても、ブロック間で連続する２つの画素データを同時に出力することができる。
【００５３】
続いて、前述の乗算係数発生回路４８について詳細に説明する。この乗算係数発生回路４８は、図６に示すように、基本距離セット回路４８ａ、加算器４８ｂ、減算器４８ｃ、データラッチ４８ｄ、インバータ４８ｅ、ＮＯＲゲート４８ｆ、ＡＮＤゲート４８ｇ・４８ｈおよび出力タイミング発生回路４８ｉを備えている。
【００５４】
基本距離セット回路４８ａは、前述の基本距離Ｄ0 のデータ（ＢＣＤによる６ビット）を信号ＨＩＮＰＥＮＢＬＤのタイミングでセットする回路であり、Ｄフリップフロップによって構成されている。信号ＨＩＮＰＥＮＢＬＤは、図示しないＣＰＵまたは別途用意されるレジスタ（ＣＰＵからの基本距離データＣＨＳＤＦを一旦書き込むためのレジスタ）から基本距離データＣＨＳＤＦを基本距離セット回路４８ａに転送するために、縮小または拡大処理の最初に行う初期化処理を行うための信号である。この信号ＨＩＮＰＥＮＢＬＤは、前述かの入力イネーブル信号ＩＮＰＥＮＢより前に出力される。
【００５５】
上記の基本距離Ｄ0 のデータ（基本距離データＣＨＳＤＦ）は、後述の補正用テーブルメモリ４９ａ（図９参照）から供給される。縮小の場合、前述の整数値Ｐと小数値ｑとがそれぞれ２ビットと４ビットとからなるＢＣＤ（２進化１０進符号）形式で表される。拡大の場合、０の整数値Ｐと小数値ｒとがそれぞれ２ビットと４ビットとからなるＢＣＤ形式で表される。
【００５６】
加算器４８ｂは、上記の基本距離データＣＨＳＤＦに整数値Ｐの最上位ビットとして“０”が付加された７ビットの基本距離データと、データラッチ４８ｄから出力された７ビットのデータとを加算する回路である。また、この加算器４８ｂは、ＡＮＤゲート４８ｇから入力されてくる補正値ＡＤＪも併せて加算するようになっており、補正手段としての機能を有している。加算器４８ｂから出力される加算値のうち小数部分を表す下位４ビット（０〜３）は、乗算係数Ｚとして出力される。
【００５７】
減算器４８ｃは、加算器４８ｂの出力値のうち整数部分を表す上位３ビット（４〜６）の値から、入力画像が有効である期間を示す入力イネーブル信号ＩＮＰＥＮＢ（図８）の値、すなわち“１”を入力画素毎に減算する回路である。
【００５８】
データラッチ４８ｄは、減算器４８ｃからの出力値を図８に示す前述の画素クロックＰＣＬＫのタイミングでラッチする回路であり、Ｄフリップフロップにより構成されている。このＤフリップフロップは、水平同期信号ＨＳＹＮＣ* （図８）でリセットされる。
【００５９】
負論理のＮＯＲゲート４８ｆは、データラッチ４８ｄからの出力値のうち整数部分を表す上位３ビットと、入力イネーブル信号ＩＮＰＥＮＢがインバータ４８ｅで反転された信号との論理和（出力信号ＩＮＴＳＴ）を出力する。このＮＯＲゲート４８ｆは、上記の整数部分が“０”であるときに出力をハイレベルにする一方、それ以外のときに出力をローレベルにする。
【００６０】
整数部分が“０”であるときは、後述のように画素を出力するときである。それゆえ、ＮＯＲゲート４８ｆは、少なくとも、累積誤差を減じるための補正値ＡＤＪ（例えば“０．１”）を加算器４８ｂで加算すべきこと、すなわち累積誤差が以上になることを判定できる。
【００６１】
ＡＮＤゲート４８ｇは、上記の補正値ＡＤＪと、ＮＯＲゲート４８ｆからの出力信号ＩＮＴＳＴと、入力イネーブル信号ＩＮＰＥＮＢとの論理積を加算器４８ｂに出力する。一方、ＡＮＤゲート４８ｈは、上記の出力信号ＩＮＴＳＴと、入力イネーブル信号ＩＮＰＥＮＢと、基本距離データＣＨＳＤＦとの論理積を出力する。このＡＮＤゲート４８ｈは、具体的には、図７に示すように、６ビットの基本距離データＣＨＳＤＦの各ビットに対応して複数のＡＮＤゲートを有している。
【００６２】
出力タイミング発生回路４８ｉは、Ｄフリップフロップからなっており、入力データとしてのＮＯＲゲート４８ｆからの出力信号ＩＮＴＳＴを画素クロックＰＣＬＫのタイミングでラッチして画素発生タイミング信号ＨＤＥＮＢＬとして出力する。この信号は、縮小または拡大画像の画素が出力されるタイミングでハイレベルに変化する。
【００６３】
引き続き、補正値発生回路４９について詳細に説明する。補正値発生回路４９は、図９に示すように、補正用テーブルメモリ４９ａ、補正値レジスタ４９ｂ、巡回シフトレジスタ４９ｃ、マルチプレクサ（図中、ＭＰＸ）４９ｄおよび巡回周期レジスタ４９ｅを備えている。
【００６４】
補正値格納手段としての補正用テーブルメモリ４９ａは、前述の小数値ＱまたはＲの循環パターンに応じた補正値ＡＤＪなどのデータをテーブル形式で記憶するメモリである。この補正用テーブルメモリ４９ａには、例えば、表１に示すように、少なくとも、１周期の開始・終了、総出力画素数、基本距離ＤおよびＤ0 、ＩＮＴ（１０Ｄ×ｎ）／１０、累積距離、補正値ＡＤＪ、乗算係数Ｚ、総入力画素数および入力増加値の各データが総出力画素数毎に対応付けられて格納されている。また、補正用テーブルメモリ４９ａは、巡回周期のデータも併せて格納している。
【００６５】
補正値ＡＤＪは、後述のように、乗算係数発生回路４８においては、６ビットのＢＣＤ形式で扱われるが、補正用テーブルメモリ４９ａにおいては、“０”および“１”で格納されている。そして、乗算係数発生回路４８に入力される際に残余のビットが付加される。
【００６６】
【表１】
0003763394.tif 000002
【００６７】
周期の開始・終了は、各出力画素が出力されるときに、補正値ＡＤＪを巡回シフトレジスタ４９ｃで巡回的にシフトさせる際の１周期の開始、終了またはどちらでもないことを示すデータである。基本距離Ｄは、小数２位以下の値が切り捨てられた基本距離Ｄ0 とは異なり、前述の乗算器４３・４４や加算器４６など（図１参照）によるデジタル演算処理を行う際の有効桁数で制限された値である。ＩＮＴ（１０Ｄ×ｎ）／１０は、基本距離Ｄの１０倍の値のうちの整数部分の１／１０の値である。累積距離は、第ｎ番目の出力画素についてＤ0 ×ｎで表される。補正値ＡＤＪは、〔ＩＮＴ（１０Ｄ×ｎ）−ＩＮＴ｛１０Ｄ×（ｎ−１）｝〕／１０−Ｄ0 という演算で与えられ、１周期分のみ格納される。入力増加値は、ある列の出力画素に対応する入力画素数と次の列の出力画素に対応する入力画素数との差を表している。
【００６８】
巡回周期は、上記の１周期のデータであって、異なる周期のうち同じ基本周期を含む周期については、最大の周期に共通化してまとめられる。例えば、１周期が３ドット（出力画素）、９ドットのように異なる場合は、いずれも基本周期が３ドットであるので、１周期が９ドットに共通して設定される。
【００６９】
補正値レジスタ４９ｂは、１周期分の補正値ＡＤＪのパラレルデータ（１１ビット）を一時的に保持する回路であり、例えばＤフリップフロップによって構成されている。
【００７０】
巡回シフトレジスタ４９ｃは、補正値レジスタ４９ｂからの上記のパラレルデータを各出力画素について個々の段にセットし、図中矢印方向へ画素発生タイミング信号ＨＤＥＮＢＬのタイミングで次段にシフトし、有効な出力端子Ｑ8 ・Ｑ13・Ｑ14・Ｑ15からシリアルで出力された後にマルチプレクサ４９ｅを介して戻されたデータを再び同方向にシフトさせるという動作を巡回的に繰り返し、シフト毎に出力端子Ｑ0 から補正値ＡＤＪのデータをシリアルで出力する回路である。水平縮小処理回路４においては、有効な出力端子Ｑ8 ・Ｑ13・Ｑ14・Ｑ15が、前述のようにして共通化された４種類の巡回周期（９ドット、１４ドット、１５ドットおよび１６ドット）に対応するようにマルチプレクサ４９ｄに接続されている。他の無効な出力端子Ｑ1 〜Ｑ7 ・Ｑ9 〜Ｑ12は、ＮＣ（無接続）な状態におかれている。
【００７１】
マルチプレクサ４９ｄは、出力端子Ｑ8 ・Ｑ13・Ｑ14・Ｑ15から出力されて、それぞれ入力端子Ｘ0 ・Ｘ1 ・Ｘ2 ・Ｘ3 に入力される４つのデータのうち、巡回シフトレジスタ４９ｃに戻すべきデータを巡回周期に応じて選択して出力端子Ｙから出力する回路である。巡回周期レジスタ４９ｅは、補正用テーブルメモリ４９ａに格納されている４種類の巡回周期のデータ（２ビット）を一時的に保持して出力端子Ｑ0 ・Ｑ1 からマルチプレクサ４９ｄに出力する回路であり、例えばＤフリップフロップで構成される。
【００７２】
このように、巡回シフトレジスタ４９ｃおよびマルチプレクサ４９ｄからなる部分は、補正値ＡＤＪを所定の巡回周期で巡回させながら出力するので、巡回出力手段としての機能を有している。
【００７３】
上記のように構成される水平縮小処理回路４の動作について説明する。ここでは、入力画像を３／８（＝１／２．６６６６６…）の比率で水平方向に縮小する例について説明する。
【００７４】
この場合、基本距離Ｄ0 が２．６（ＢＣＤでは６ビットで“１０．０１１０”と表される）であるので、入力画素の２．６個毎に１個の画素を新たに生成して出力する。また、Ｄ0 ＝２．６のとき、表１に示すように、小数７位以下を切り捨てた値（２．６６６６６７）の加算値の小数部分は、“０．６６６６６７”、“０．３３３３３３”および“０”を繰り返す循環パターンを有する。この場合、その循環パターンを３回分を１循環パターンとすることで１巡回周期が９ドットとなるので、補正値発生回路４９では、まず、１巡回周期分の９ドットの補正値ＡＤＪのデータが、補正用テーブルメモリ４９ａから補正値レジスタ４９ｂにセットされる。その補正値データは、データ入力端子ＰＩＮＤから巡回シフトレジスタ４９ｃに入力され、補正データセット端子ＰＤ* に入力される水平同期信号ＨＳＹＮＣ* に同期して個々に各段にセットされる。
【００７５】
巡回シフトレジスタ４９ｃにおいては、セットされた補正値データが、乗算係数発生回路４８から出力された画素発生タイミング信号ＨＤＥＮＢＬのタイミングで順次次段にシフトしていく。最初の基本距離Ｄ0 が基本距離データＣＨＳＤＦとして乗算係数発生回路４８に入力されたときには、まだ画素が出力されないので、次に画素が出力されたときの補正値ＡＤＪとして“０”が出力端子Ｑ0 から画素クロックＰＣＬＫに同期して出力される。
【００７６】
また、このとき、“０．１”の補正値データが出力端子Ｑ8 から出力されてマルチプレクサ４９ｄの入力端子Ｘ0 に入力されるとともに、巡回周期レジスタ４９ｅにセットされた巡回周期（９ドット）を表す２ビットのデータの各ビット“０”，“０”が出力端子Ｑ0 ・Ｑ1 からそれぞれ出力される。これにより、マルチプレクサ４９ｄが入力端子Ｘ0 に入力された補正値データが選択されて、巡回シフトレジスタ４９ｃの巡回入力端子ＳＩＩＮＤに入力される。その補正値データは、他の補正値データがシフトすると同時に信号ＨＤＥＮＢＬのタイミングで初段にセットされ、出力端子Ｑ0 から補正値ＡＤＪとして出力される。
【００７７】
補正値発生回路４９は、このようにして、補正値データが巡回シフトレジスタ４９ｃを巡回していくことにより、補正値ＡＤＪ（補正値データ）を上記の周期で順次出力する。
【００７８】
一方、乗算係数発生回路４８では、前述の“１０．０１１０”（１０進数で２．６）という値が、基本距離データＣＨＳＤＦとして入力され、基本距離セット回路４８ａを経てＡＮＤゲート４８ｈに入力される。初期状態では、データラッチ４８ｄにはデータが保持されていないので、データラッチ４８ｄの出力端子Ｑの各ビットは“０”である。これにより、ＮＯＲゲート４８ｆの出力信号ＩＮＴＳＴがハイレベルとなるので、入力イネーブル信号ＩＮＰＥＮＢがハイレベルである期間では、基本距離データＣＨＳＤＦがＡＮＤゲート４８ｈから出力される。一方、補正値発生回路４９からの補正値ＡＤＪも同様に、出力信号ＩＮＴＳＴがハイレベルであることから、ＡＮＤゲート４８ｇから出力される。
【００７９】
この結果、“２．６”（基本距離Ｄ0 ）と“０”（補正値ＡＤＪ）との加算結果“２．６”が加算器４８ｂから出力される。この値のうち、３ビット（４〜６）で表される整数部分の“２”から１が減算された後、４ビット（０〜３）で表される小数部分“０．６”と併せてデータラッチ４８ｄにセットされる。そして、小数部分の４ビットは、乗算係数Ｚとして出力される。また、このとき、ハイレベルの出力信号ＩＮＴＳＴは、出力タイミング発生回路４８ｉで画素クロックＰＣＬＫのタイミングでラッチされて画素発生タイミング信号ＨＤＥＮＢＬとして出力される。
【００８０】
そして、補数器４５により、乗算係数Ｚ（＝０．６）の補数（＝０．４）が求められると、ラッチ４１・４２によって取り込まれた入力画素Ａi ・Ａi+1 のそれぞれに、乗算器４３・４４および加算器４６で次式の演算が施される。この演算結果は、フリップフロップ４７に保持され、画素発生タイミング信号ＨＤＥＮＢＬのタイミングで出力画素データとして出力される。
【００８１】
Ｂj ＝Ａi+1 ＊０．６＋Ａi ＊０．４
一方、次の入力画素が入力されると、乗算係数発生回路４８において、データラッチ４８ｄに保持された“２．６”のデジタルデータが、画素クロックＰＣＬＫのタイミングで出力される。しかしながら、このときは、上記の値の整数部分が“１”であるため、出力信号ＩＮＴＳＴがローレベルになり、基本距離データＣＨＳＤＦがＡＮＤゲート４８ｈから出力されない。また、補正値データも加算器４８ｂに入力されない。したがって、データラッチ４８ｄからの出力データは、加算器４８ｂをそのまま通過して、減算器４８ｃで整数部分の３ビットから１が減算される。これにより、その整数部分が“０”になるため、減算器４８ｃからデータラッチ４８ｄに保持されたデータから上記の整数部分がＮＯＲゲート４８ｆに入力されると、ここからハイレベルの出力信号ＩＮＴＳＴが出力される。
【００８２】
これにより、基本距離データＣＨＳＤＦは、ＡＮＤゲート４８ｈを介して加算器４８ｂに入力され、加算器４８ｂでデータラッチ４８ｄからのデータおよびＡＮＤゲート４８ｇを通過した補正値ＡＤＪすなわち“０．１”（ＢＣＤで００．０００１）が加算される。さらに、加算器４８ｂからの出力値“５．３”のうち小数部分“０．３”（ＢＣＤで００．００１１）が乗算係数Ｚとして出力される。一方、画素発生タイミング信号ＨＤＥＮＢＬが出力タイミング発生回路４８ｉから出力される。
【００８３】
そして、補数器４５により、乗算係数Ｚ（＝０．３）の補数（＝０．７）が求められると、ラッチ４１・４２によって取り込まれた入力画素Ａi ・Ａi+1 のデータそれぞれに、乗算器４３・４４および加算器４６で次式の演算が施されて、この演算結果がフリップフロップ４７から出力画素データとして出力される。
【００８４】
Ｂj+1 ＝Ａi+4 ＊０．３＋Ａi+3 ＊０．７
このように、基本距離Ｄ0 “２．６”に補正値ＡＤＪ“０．１”を加算することによって、誤差が０．１３３３３３となるところを、０．０３３３３３に抑えることができる。そして、このような操作を繰り返すことによって、縮小処理による誤差の少ない縮小画像が得られる。
【００８５】
ところで、表２に示す例では、縮小の比率が１５／１６（＝１／１．０６６６６６６…）である場合であって、基本距離Ｄ0 が１．０に設定され、１巡回周期が１５ドットに設定されている。この場合は、巡回シフトレジスタ４９ｃの出力端子Ｑ15から補正値データが巡回することによって補正値ＡＤＪ“０．１”が出力され、これによって乗算係数Ｚを補正することで、上記の場合と同様に誤差を抑えることができる。
【００８６】
また、表３に示す例では、縮小の比率が７／１０（＝１／１．４２８５７１４…）である場合であって、基本距離Ｄ0 が１．４に設定され、１巡回周期が１４ドットに設定されている。この場合は、巡回シフトレジスタ４９ｃの出力端子Ｑ14から補正値データが巡回することによって補正値ＡＤＪ“０．１”が出力され、これによって乗算係数Ｚを補正することで、上記の場合と同様に誤差を抑えることができる。
【００８７】
【表２】
0003763394.tif 000003
【００８８】
【表３】
0003763394.tif 000004
【００８９】
また、本画像処理装置において、水平縮小処理回路４からシリアル形式で出力された縮小画素データは、画像メモリ５に書き込む際に、ＣＰＵ８から送出されたときと同様のパラレル形式の画素データに変換される。このため、例えば、図１０に示す保持出力手段としてのバッファ回路１１が、図２に示すように、水平縮小処理回路４と画像メモリ５との間に設けられる。
【００９０】
このバッファ回路１１においては、画素クロックＰＣＬＫに基づいて２ビットのバイナリカウンタであるカウンタ１１ａの２ビットのカウント出力がデコーダ１１ｂでデコードされることによって、デコーダ１１ｂの出力端子Ｙ0 〜Ｙ3 からは、順次ローレベルのデコード信号が出力される。これらのデコード信号は、インバータ１１ｃ〜１１ｆで反転されて、それぞれＡＮＤゲート１１ｇ〜１１ｊに入力される。
【００９１】
一方、縮小画像データは、画素クロックＰＣＬＫのタイミングで動作するＤフリップフロップ１１ｋを経てＡＮＤゲート１１ｇ〜１１ｊに入力される。このとき、４画素を１ブロックとして、各ブロックの第１画素の縮小画素データは、インバータ１１ｃからのデコード信号により開いているＡＮＤゲート１１ｇを介してレジスタ１１ｌのセルに書き込まれる。続く第２画素の縮小画素データは、インバータ１１ｄからのデコード信号により開いているＡＮＤゲート１１ｈを介してレジスタ１１ｌのセルに書き込まれる。さらに続く第３画素の縮小画素データは、インバータ１１ｅからのデコード信号により開いているＡＮＤゲート１１ｉを介してレジスタ１１ｌのセルに書き込まれる。最後の第４画素の縮小画素データは、インバータ１１ｆからのデコード信号により開いているＡＮＤゲート１１ｊを介してレジスタ１１ｌのセルに書き込まれる。
【００９２】
また、インバータ１１ｆからのデコード信号は、ラッチ１１ｍにより１クロック分ラッチされて書込制御信号ＷＲＩＴＥとして画像メモリ５に供給されるとともに、レジスタ１１ｌに読出制御信号として供給される。これにより、レジスタ１１ｌの各セルに保持されていた画素データ（１６ビット）が同時に出力されて４画素分（６４ビット）の画像データとして画像メモリ５に書き込まれる。これによって、ＣＰＵ８から出力された形式と同じ形式で画素データを扱うことができる。
【００９３】
なお、ビデオカメラ２から取り込んだ画像については、水平縮小処理回路３で、画像データがシリアルの状態で縮小処理されて画像メモリ５に同じくシリアルの状態で書き込まれるので、バッファ回路１１を必要としない。
【００９４】
以上に述べたように、本画像処理装置では、水平縮小処理回路４におけるアクセス調整回路４０が、複数の画素データからなるパラレルの画像データをシフト部４００でシリアルの画素データに変換して順次シフトさせながら出力するとともに、画素データをＤフリップフロップ４０ｆで１画素データ分遅延させることで、隣り合う（連続する）２つの画素データを同時に出力して縮小のための演算処理に供するように構成されている。これにより、パラレルの画素データの縮小処理を容易に行うことができる。
【００９５】
また、アクセス調整回路４０が、複数画素データ単位となるブロックの最後の画素データを、切替制御部４０１で制御されるループ部４０２によって、画素クロックＰＣＬＫの所定クロック分（所定期間）保持するように構成されている。これにより、割り込み処理などによってＣＰＵ８の画像メモリ５へのアクセスが中断しても、前のブロックの最後の画素データが保持されるので、アクセスが再開して次のブロックの画素データがシフト部４００から出力されてきても、上記の最後の画素データと次のブロックの最初の画素データとを併せて出力することができる。
【００９６】
このように、本画像処理装置では、水平縮小処理回路４が上記のように構成されることによって、ＣＰＵ８からの画像データをハードウェアによる処理で縮小している。これにより、インターネットなどから高速で転送されてきた画像データを短時間で縮小して、画像メモリ５に書き込んだ後に、表示デバイス９で表示することができる。それゆえ、縮小処理をソフトウェアで行う必要がなくなり、処理速度を向上させることができるとともに、ＣＰＵ８の負担を大幅に軽減することができる。
【００９７】
なお、本実施の形態では、ＣＰＵ８のバス幅が６４ビットである例について説明したが、これに限らず、バス幅が、４ビットの画素データに対して１６ビットであってもよいし、８ビットの画素データに対して３２ビットであってもよい。
【００９８】
また、水平縮小処理回路３・４では、誤差の累積値における小数１位が“１”になるとき（累積値が０．１以上となるとき）に、補正値ＡＤＪが加算された乗算係数Ｚが用いられる。これにより、乗算器４３・４４および加算器４６で上記の演算が行われる際に、誤差の累積値から０．１減じられるので、このような操作を繰り返すことによって、累積誤差が常に０．１より小さい値に抑えることができる。その結果、縮小処理に伴う誤差の増大が抑えられるので、縮小画像の品位を向上させることができる。
【００９９】
また、補正用テーブルメモリ４９ａに予め格納された１循環パターン分の補正値ＡＤＪを巡回シフトレジスタ４９ｃおよびマルチプレクサ４９ｄで巡回させながら出力することによって、補正値ＡＤＪを全画素について用意する必要がなく補正用テーブルメモリ４９ａの容量を小さくすることができる。しかも、補正値ＡＤＪの巡回周期が、縮小または拡大の比率が異なる場合でも、前述の９ドットで１周期の場合、３ドットで１周期が３回繰り返されることと同じであるので、１周期３ドットも１周期９ドットとして設定される。つまり、縮小または拡大の比率の分子の値で、このように共通する最大の値のみを巡回周期として設定すればよい。それゆえ、巡回シフトレジスタ４９ｃとマルチプレクサ４９ｄとの間の配線数が最小限に抑えられ、画像縮小装置のコストを低減することができる。
【０１００】
さらに、補正値ＡＤＪが重みとしての乗算係数Ｚに含まれることにより、乗算器４３・４４によって単にその乗算係数Ｚを用いて乗算する（重み付けする）ことで位置の補正がなされる。このように、乗算器４３・４４の構成を変えることなく誤差補償がなされるので、乗算係数発生回路４８および補正値発生回路４９を付加することによって従来の画像縮小装置にも同様の縮小処理を行うことができる。
【０１０１】
なお、上記の水平縮小処理回路３・４では、逆数の小数部分が無限循環小数である縮小比率で縮小する際に累積誤差の増大を抑えることができるが、逆数の小数部分が０である（例えば、１／２や１／４）縮小比率で縮小する場合でも縮小を行うことができる。もっとも、縮小比率の逆数の小数部分が０であることから、上記のような累積誤差は生じない。また、このような縮小比率で縮小を行う場合、隣り合う画素のデータの等価平均を求めて新たな画素データを生成する縮小方法を用いてもよい。
【０１０２】
【発明の効果】
以上のように、本発明の画像縮小方法および画像縮小装置は、ＣＰＵから出力された画像データにおいて連続する２つの画素のデータに縮小比率に応じた演算処理を施すことによって、画像データにおける水平方向の画素数より少ない新たな画素データを生成する手法を採用しており、画素データの入力タイミングで上記ＣＰＵから複数画素データ単位で出力されるパラレル形式の上記画像データを変換手段によって画素データ単位でシリアル形式に変換し、各画素データを上記画素クロックのタイミングで順次シフトさせ、シフトされた画素データに上記演算処理を施す前に、上記２つの画素データのうちの先の画素データを遅延手段によって１画素データ分遅延させることによって後の画素データのタイミングに合わせて上記２つの画素データを上記演算処理に供し、上記２つの画素データのタイミングを合わせるとき、シフトされた複数画素データ単位の最後の画素データを保持手段によって上記２つの画素データのうちの先の画素データとして上記複数画素データ単位における画素データ数と同数の上記画素クロックにおける単位クロックの期間保持する。
【０１０３】
これにより、シリアル形式に変換された画素データに演算処理を施す前に、上記２つの画素データのうちの先の画素データが１画素データ分遅延することによって、次の画素データとタイミングが合わされる結果、タイミングの合った連続する２つの画素に演算処理を施すことにより、新たな画素データが生成される。また、複数画素データ単位の最後の画素データが保持手段によって上記の期間保持されるので、ＣＰＵからの画像データの出力が中断してから再開されても、保持された画素データと、次の複数画素データ単位の最初の画素データとを連続させることができる。それゆえ、処理装置からの画像データにハードウェア構成による縮小処理を縮小画像の品位を低下させることなく施すことが可能になる。したがって、縮小処理を高速で行うことができるとともに、処理装置の負担を軽減することができるという効果を奏する。
【０１０４】
また、上記の方法および装置においては、上記複数画素データ単位の最後の画素データのみ１画素データ分の遅延を上記単位クロック数の回数繰り返すことによって上記遅延手段が保持手段を兼ねることにより、遅延手段および保持手段を構成する回路をそれぞれ別個に設ける必要がなくなる。したがって、画像縮小装置の構成を簡素化することができるという効果を奏する。
【０１０５】
この方法および装置においては、生成されたシリアル形式の上記画素データを保持出力手段によって上記ＣＰＵから出力された上記画像データの上記複数画素データ単位と同じ複数画素データ単位に保持してパラレル形式で同時に画像メモリに出力することにより、シリアル形式で縮小処理された画像データが入力時の形式に戻される。したがって、処理装置から出力された形式と同じ形式で画素データを扱うことができるという効果を奏する。
【図面の簡単な説明】
【図１】本発明の実施の一形態に係る画像処理装置における水平縮小処理回路の概略構成を示すブロック図である。
【図２】上記画像処理装置の概略構成を示すブロック図である。
【図３】上記水平縮小処理回路による入力画素から縮小処理によって出力画素を得る具体例を示す説明図である。
【図４】上記水平縮小処理回路におけるアクセス調整回路の構成を示す論理回路図である。
【図５】上記アクセス調整回路の動作を示すタイミングチャートである。
【図６】上記水平縮小処理回路における乗算係数発生回路の構成を示す論理回路図である。
【図７】上記乗算係数発生回路における基本距離データを加算器に出力するためのＡＮＤゲートの構成を示す論理回路図である。
【図８】上記水平縮小処理回路における縮小処理の動作の基本となる信号を示すタイミングチャートである。
【図９】上記水平縮小処理回路における補正回路の構成を示す論理回路図である。
【図１０】上記画像処理装置におけるバッファ回路の構成を示す論理回路図である。
【図１１】従来の画像処理装置の構成を示すブロック図である。
【符号の説明】
４          水平縮小処理回路（画像縮小装置）
１１          バッファ回路（保持出力手段）
４０          アクセス調整回路
４１・４２    ラッチ
４３・４４    乗算器
４５          補数器
４６          加算器
４７          フリップフロップ
４８          乗算係数発生回路
４９          補正値発生回路
４００        シフト部（出力手段、変換手段、シフト手段）
４０１        切替制御部
４０２        ループ部（遅延手段、保持手段）
【図１】
0003763394.tif 000005
【図２】
0003763394.tif 000006
【図３】
0003763394.tif 000007
【図４】
0003763394.tif 000008
【図５】
0003763394.tif 000009
【図６】
0003763394.tif 000010
【図７】
0003763394.tif 000011
【図８】
0003763394.tif 000012
【図９】
0003763394.tif 000013
【図１０】
0003763394.tif 000014
【図１１】
0003763394.tif 000015