(57)【特許請求の範囲】
【請求項１】
元画像を構成する複数の画素情報をＸ方向およびＹ方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理装置において、前記元画像よりＸ方向またはＹ方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力する入力制御手段と、該入力制御手段によって入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を計数して該計数結果を部分平滑化結果として出力する部分平滑化手段と、該部分平滑化手段によって求められた部分平滑化結果を入力し該部分平滑化結果を前記特定の方向と直交する方向に拡大して連続した特定の個数だけ累積する累積手段と、該累積手段によって求められた結果を入力し所定の閾値と比較する比較手段と、該比較手段による比較の結果を前記拡大画像の画素として出力する出力制御手段を備えていることを特徴とする画像拡大処理装置。
【請求項２】
前記部分平滑化手段は、倍率に基づきＤＤＡ法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差計算手段によって出力された残差の符号に基づいて前記所定の数の画素のそれぞれに対応した前記特定の範囲内にある重複数を求める重複数累積手段と、前記所定の数の画素の前記特定の画素値を有する画素に対して前記重複数累積手段によって求められた重複数を加算する重複数加算手段を備え、前記重複数加算手段によって求められた結果を計数結果として出力することを特徴とする請求項１に記載の画像拡大処理装置。
【請求項３】
前記重複数累積手段は、前記特定の範囲として、前記重複させた結果が前記拡大画像の範囲内にあるものだけを含むことを特徴とする請求項２に記載の画像拡大処理装置。
【請求項４】
前記累積手段は、前記部分平滑化手段によって求められた前記部分平滑化結果を重複数だけ重複させる重複手段と、該重複手段の出力を前記連続した特定の個数だけ遅延させる遅延手段と、累積値を格納する累積値格納手段と、該累積値格納手段に格納されている前記累積値と前記重複手段の出力とを加算する加算手段と、該加算手段による加算結果から前記遅延手段による遅延結果を減算しその減算結果を前記累積値格納手段に格納する減算手段を備え、前記累積値を出力することを特徴とする請求項１に記載の画像拡大処理装置。
【請求項５】
前記累積手段によって累積されるときの前記連続した特定の個数を可変としたことを特徴とする請求項１または４に記載の画像拡大処理装置。
【請求項６】
前記累積手段によって前記部分平滑化結果を重複させる重複数を可変としたことを特徴とする請求項４に記載の画像拡大処理装置。
【請求項７】
前記部分平滑化手段における前記特定の重複数と、前記特定の範囲の少なくとも一方を可変としたことを特徴とする請求項１に記載の画像拡大処理装置。
【請求項８】
前記入力制御手段は、倍率に基づきＤＤＡ法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差の符号に応じて更新される画素位置を格納する画素位置格納手段を有し、該画素位置格納手段に格納されている画素位置から前記特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力することを特徴とする請求項１に記載の画像拡大処理装置。
【請求項９】
前記入力制御手段は、前記元画像を複数の領域に分割し、該領域ごとに画素の入力を行なうことを特徴とする請求項１に記載の画像拡大処理装置。
【請求項１０】
元画像を構成する複数の画素情報をＸ方向およびＹ方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理方法において、前記元画像よりＸ方向またはＹ方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力制御手段により入力し、入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を部分平滑化手段で計数して該計数結果を部分平滑化結果とし、該部分平滑化結果を前記特定の方向と直交する方向に拡大して、連続した特定の個数だけ累積手段で累積し、求められた結果を所定の閾値と比較手段で比較し、該比較の結果を前記拡大画像の画素として出力制御手段が出力することを特徴とする画像拡大処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、画像をＸ方向およびＹ方向に拡大するとともに平滑化する画像拡大処理装置および画像拡大処理方法に関するものである。
【０００２】
【従来の技術】
従来より、画像拡大処理装置は、２値または多値画像を扱うプリンタやプロッタなどの出力装置やスキャナなどの入力装置、あるいはＦＡＸやコピーなど、広範囲に使用されている。画像拡大処理装置の利用例として、例えば、２値データで表現された図面などを表わすラスタ画像データを、イメージセンサなどで外部から読み取り、例えばＡ４の大きさでディスクなどに格納しておき、このデータを拡大してＡ０の大きさで出力することが行なわれている。
【０００３】
画像データを拡大する時は、通常、フレームメモリと呼ばれるメモリを介して拡大操作が行なわれる。図２は、画像が拡大されるときの処理装置の流れを示すブロック図である。２１はイメージセンサ、２２はディスク、２３は元画像フレームメモリ、２４は拡大回路、２５は拡大画像フレームメモリ、２６は出力装置である。イメージセンサ２１で読み込まれた画像データは、各種補正やディジタル化などが施された後、２値画像データとしてディスク２２に一旦格納される。その後、画像データを拡大して出力するときには、ディスク２２に格納された２値画像データが元画像フレームメモリ２３に読み出され、拡大回路２４で拡大された後、拡大画像フレームメモリ２５に格納される。なお、元画像フレームメモリ２３と拡大画像フレームメモリ２５は、図２では別のメモリとしているが、物理的には同一のメモリの異なったアドレスによって表わされていることもある。拡大画像フレームメモリ２５に格納された拡大画像は、出力装置２６によりＡ０などの用紙に印刷され、出力される。
【０００４】
図３は、一般的な画像の拡大の説明図である。図３（Ａ）は拡大前のソース画像を表わし、図３（Ｂ）は拡大後のデスティネーション画像を表わす。また、各画像中のａ〜ｐのアルファベットを記した小さい四角は１画素を表わしており、同一のアルファベットを記したものが同一の画素に対応する。図３はソース画像をＸ方向、Ｙ方向とも１．５倍に拡大する場合を示しており、Ｘ方向、Ｙ方向とも１画素おきに同一の画素がデスティネーション画像に２つずつコピーされている。このように、一般的にはソース画像の各画素をデスティネーション画像に複数個並べていくことによって拡大操作が行なわれる。
【０００５】
従来、この方式によって拡大された画像では、斜めの直線の輪郭がジャギーと呼ばれる階段状の不連続な形状になってしまうという問題点があった。図４は、画像の拡大によって発生するジャギーの一例の説明図である。図４（Ａ）はソース画像であり、図４（Ｂ）は図４（Ａ）に示すソース画像を３倍に拡大したものである。ソース画像の同一の画素がＸ方向およびＹ方向に３個ずつ並べられるために、白画素と黒画素とが隣接する点において階段状の形状となる。拡大の倍率が大きいほど、階段の段差は大きくなるため、この現象は顕著となる。
【０００６】
そこで、画像の拡大時にこの現象を回避するために、例えば、特開平４−１７０８６８号公報に記載されているように、拡大された画像に対して平滑化処理が行なわれている。図５は、平滑化に用いるウインドウの一例の説明図である。平滑化は、例えば、図５に示すようなマトリクスを拡大後の画像中にとり、この中の画素に対し、マトリクス中の特定の位置に対応した係数をかけて足し合わせた演算結果を算出し、その値を新たなマトリクスの中心に位置する画素の値とするものである。図５ではＸ方向、Ｙ方向のマトリクスサイズとも５の時の例を示している（マトリクスサイズのことを本明細書ではタップ数とも呼ぶ）。画像が２値の場合には、係数として同じ値が使われる場合が多く、全ての係数を１／１４にする場合には、
（１／１４）Ｐ0 ＋（１／１４）Ｐ1 ＋（１／１４）Ｐ2 ＋・・・＋（１／１４）Ｐ23＋（１／１４）Ｐ24
を計算した結果が、マトリクス中でＰ12に位置する画素の値となる。すなわち、２値画像の場合には、Ｐｎの値は０（白）または１（黒）であって、上記の計算結果が１以上であれば新たな画素の値は１（黒）、１未満であれば０（白）であるとされる。
【０００７】
図６は、拡大画像に対する平滑化処理の結果の一例の説明図である。図６では、図４（Ｂ）に示す拡大後のデスティネーション画像に対して平滑化を行なう時の様子を示している。図６（Ａ）で荒いハッチングを施した正方形の領域は、図５で示した５×５のマトリクスを表わしており、図６（Ａ）に示す画像中の全ての画素が、このマトリクスの中心画素となるようにマトリクスが移動される。このようにして、上記の係数によって１画素ずつ平滑化後の画素の値が求められ、最終的には図６（Ｂ）に示すような画像となる。図４（Ｂ）に示す画像に現れていたジャギーが除去されていることがわかる。
【０００８】
上述のように、拡大の倍率が高いほどジャギーは顕著となるため、平滑化に用いるタップ数を増やす必要がある。しかしながら低い倍率では、倍率が高い時に用いるタップ数を用いた場合、細線が太くなってしまうといった現象が発生するため、タップ数を大きくすることはできない。そこで、倍率に応じてタップ数を変えるといった方法が考案されている。
【０００９】
このように倍率に応じて平滑化のタップ数を変えるための手段としては、例えば、特開平４−２２９７６５公報に示されているように、まず画像を拡大し、この画像をさまざまなタップ数をもった数種類のフィルタに通し、拡大後の画素の重複数に応じてそれぞれのフィルタの出力をセレクタによって切り替える方法が知られていた。しかしながら、この構成では、フィルタを数種類有するため、回路規模が大きくなる。特に、個々のフィルタでは、１画素ごとの遅延操作および係数を乗じる操作が行なわれるので、係数の値が全て同じであり、乗算操作が加算操作で置き換えられるとしても、遅延回路はタップ数の２乗個だけ必要となる。そのため、全体として多数のフリップフロップを備えなければならず、回路規模が大きくなる。
【００１０】
また、最大のタップ数のフィルタだけを用意し、このうち使用しない部分の係数だけを０とする構成も容易に類推が可能であるが、依然として遅延回路に要する回路規模は大きいものとなり、さらにタップ数を切り替える時には、ウインドウ中の画素の個数分の係数を書き換えなければならず、操作に時間がかかるといった課題がある。同様の技術として、例えば、特開平３−１０５４８４号公報に記載されている技術では、拡大率に応じてフィルタの係数を変化させており、また、例えば、特開平４−１６０６０号公報に記載されている技術では、平均濃度に応じて係数を変化させているが、これらの場合も係数の書き換え操作に時間がかかる。
【００１１】
また、上述のような従来の各技術とも、拡大された画像を先に作成し、その後、平滑化処理を行なうため、平滑化処理前の拡大画像を一度保持するためのフレームメモリが必要であり、回路規模を大きくする一因となっていた。
【００１２】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、従来よりも回路規模が小さく、さらにタップ数を高速に切り替えることのできる画像拡大処理装置および画像拡大処理方法を提供することを目的とするものである。
【００１３】
【課題を解決するための手段】
請求項１に記載の発明は、元画像を構成する複数の画素情報をＸ方向およびＹ方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理装置において、前記元画像よりＸ方向またはＹ方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力する入力制御手段と、該入力制御手段によって入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を計数して該計数結果を部分平滑化結果として出力する部分平滑化手段と、該部分平滑化手段によって求められた部分平滑化結果を入力し該部分平滑化結果を前記特定の方向と直交する方向に拡大して連続した特定の個数だけ累積する累積手段と、該累積手段によって求められた結果を入力し所定の閾値と比較する比較手段と、該比較手段による比較の結果を前記拡大画像の画素として出力する出力制御手段を備えていることを特徴とするものである。
【００１４】
請求項２に記載の発明は、請求項１に記載の画像拡大処理装置において、前記部分平滑化手段は、倍率に基づきＤＤＡ法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差計算手段によって出力された残差の符号に基づいて前記所定の数の画素のそれぞれに対応した前記特定の範囲内にある重複数を求める重複数累積手段と、前記所定の数の画素の前記特定の画素値を有する画素に対して前記重複数累積手段によって求められた重複数を加算する重複数加算手段を備え、前記重複数加算手段によって求められた結果を計数結果として出力することを特徴とするものである。
【００１５】
請求項３に記載の発明は、請求項２に記載の画像拡大処理装置において、前記重複数累積手段は、前記特定の範囲として、前記重複させた結果が前記拡大画像の範囲内にあるものだけを含むことを特徴とするものである。
【００１６】
請求項４に記載の発明は、請求項１に記載の画像拡大処理装置において、前記累積手段は、前記部分平滑化手段によって求められた前記部分平滑化結果を重複数だけ重複させる重複手段と、該重複手段の出力を前記連続した特定の個数だけ遅延させる遅延手段と、累積値を格納する累積値格納手段と、該累積値格納手段に格納されている前記累積値と前記重複手段の出力とを加算する加算手段と、該加算手段による加算結果から前記遅延手段による遅延結果を減算しその減算結果を前記累積値格納手段に格納する減算手段を備え、前記累積値を出力することを特徴とするものである。
【００１７】
請求項５に記載の発明は、請求項１または４に記載の画像拡大処理装置において、前記累積手段によって累積されるときの前記連続した特定の個数を可変としたことを特徴とするものである。
【００１８】
請求項６に記載の発明は、請求項４に記載の画像拡大処理装置において、前記累積手段によって前記部分平滑化結果を重複させる重複数を可変としたことを特徴とするものである。
【００１９】
請求項７に記載の発明は、請求項１に記載の画像拡大処理装置において、前記部分平滑化手段における前記特定の重複数と、前記特定の範囲の少なくとも一方を可変としたことを特徴とするものである。
【００２０】
請求項８に記載の発明は、請求項１に記載の画像拡大処理装置において、前記入力制御手段は、倍率に基づきＤＤＡ法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差の符号に応じて更新される画素位置を格納する画素位置格納手段を有し、該画素位置格納手段に格納されている画素位置から前記特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力することを特徴とするものである。
【００２１】
請求項９に記載の発明は、請求項１に記載の画像拡大処理装置において、前記入力制御手段は、前記元画像を複数の領域に分割し、該領域ごとに画素の入力を行なうことを特徴とするものである。
【００２２】
請求項１０に記載の発明は、元画像を構成する複数の画素情報をＸ方向およびＹ方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理方法において、前記元画像よりＸ方向またはＹ方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力制御手段により入力し、入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を部分平滑化手段で計数して該計数結果を部分平滑化結果とし、該部分平滑化結果を前記特定の方向と直交する方向に拡大して、連続した特定の個数だけ累積手段で累積し、求められた結果を所定の閾値と比較手段で比較し、該比較の結果を前記拡大画像の画素として出力制御手段が出力することを特徴とするものである。
【００２３】
【発明の実施の形態】
図１は、本発明の画像拡大処理装置の第１の実施の形態を示すブロック図である。図中、１は拡大・平滑化回路、２は元画像フレームメモリ、３は拡大画像フレームメモリ、１１はＸ方向データ拡大・計数部、１２はＹ方向データ累積部、１３はコンパレータ、１４は閾値レジスタ、１５はＸ方向ＤＤＡ計算部、１６はＹ方向ＤＤＡ計算部、１７は元画像メモリ制御部、１８は拡大画像メモリ制御部、１９は全体制御部である。図１には、拡大および平滑化を行なう拡大・平滑化回路１とともに、ソース画像が格納される元画像フレームメモリ２、および拡大・平滑化後のデスティネーション画像が格納される拡大画像フレームメモリ３が示されている。
【００２４】
拡大・平滑化回路１は、元画像フレームメモリ２に格納されているソース画像の拡大と平滑化を同時に行ない、拡大画像フレームメモリ３にデスティネーション画像として格納する。拡大・平滑化回路１は、Ｘ方向データ拡大・計数部１１、Ｙ方向データ累積部１２、コンパレータ１３、閾値レジスタ１４、Ｘ方向ＤＤＡ計算部１５、Ｙ方向ＤＤＡ計算部１６、元画像メモリ制御部１７、拡大画像メモリ制御部１８、全体制御部１９を有している。
【００２５】
Ｘ方向データ拡大・計数部１１は、Ｘ方向に画素データを拡大し、黒画素数を計数する。Ｙ方向データ累積部１２は、Ｘ方向データ拡大・係数部１１で係数された黒画素数をＹ方向に拡大し、Ｙ方向に所定数ごとに累積する。コンパレータ１３は、Ｙ方向データ累積部１２で累積した累積数を２値化する。閾値レジスタ１４は、コンパレータ１３で２値化する際に用いる閾値を格納する。Ｘ方向ＤＤＡ計算部１５は、Ｘ方向の拡大画素数を計算する。Ｙ方向ＤＤＡ計算部１６は、Ｙ方向の拡大画素数を計算する。元画像メモリ制御部１７は、元画像フレームメモリ２から画像データを読み出す際の制御を行なう。拡大画像メモリ制御部１８は、拡大画像フレームメモリ３へ拡大・平滑化処理後の画像データを書き込む際の制御を行なう。全体制御部１９は、制御信号により各ユニットの制御を行なう。なお、全体制御部１９によって生成される制御信号の細かい記述は省略してある。また、これらの回路は、図示しないクロック信号ＣＬＫに同期して動作するものとする。
【００２６】
次に、本発明の画像拡大処理装置の第１の実施の形態における動作の一例について説明する。まず、動作の概要について、図面を用いながら説明する。なお、以下の説明では、ソース画像およびデスティネーション画像のＹ方向に連続したデータを、単に１ラインと呼ぶことがある。
【００２７】
ここでは、画像は２値とし、Ｘ方向およびＹ方向に６４×６４個の画素からなるソース画像を元画像フレームメモリ２から読み出し、両方向に３倍に拡大してさらにタップ数５で平滑化し、Ｘ方向およびＹ方向に１９２×１９２個の画素よりなるデスティネーション画像を生成して拡大画像フレームメモリ３に書き込む場合を例にとることにする。なおこの例では、１×１９２個のＹ方向に連続したラインごとにデスティネーション画像が生成される。
【００２８】
概括的には、まずソース画像よりＸ方向に数ビット分連続したデータを読み出し、このデータを拡大したもののうち平滑化のウインドウ内にあるものを部分的に平滑化する。この部分的な平滑化結果をＹ方向に拡大し、さらにＹ方向に平滑化する。このことにより、拡大した画像に対してウインドウをＹ方向に移動しながら平滑化することと同等の操作が行なわれるので、１ライン分のデスティネーション画像が得られる。この操作を繰り返しながらデスティネーション画像を生成する。
【００２９】
次に、上述の手順を詳しく説明する。元画像フレームメモリ２のアドレスＡａ１１〜０は元画像メモリ制御部１７から出力され、Ｘ方向に連続した３ビット単位でソース画像のデータがＤａ２〜０から読み出される。図７は、本発明の第１の実施の形態において拡大・平滑化されるソース画像の具体例の説明図である。図７（Ａ）にソース画像全体を示し、図７（Ｂ）にその一部を拡大して示している。図中のハッチングを施して示した３つの帯状の領域３１，３２，３３は、Ｄａ２〜０から連続して読み出される１ライン分のソース画像データを表わしており、いずれもＹ方向に画像のサイズ分である６４画素、Ｘ方向に３画素からなる領域である。
【００３０】
まず、このうちの領域３２のデータが読み出され、拡大・平滑化された後、デスティネーション画像の１ライン分のデータが生成される様子について説明する。ただし、画像領域のＹアドレスが画像領域の境界付近にあるときの処理に関しては後述する。元画像メモリ制御部１７からは、元画像フレームメモリ２に対して領域３２のデータがＹ座標の昇順に読み出されるようなアドレスが送られる。例えば、Ｙアドレスとして・・・（ｉ−３），（ｉ−２），（ｉ−１），ｉ，（ｉ＋１），（ｉ＋２）、（ｉ＋３）、・・・が順に元画像フレームメモリ２に送られ、図７（Ｂ）に示すように３ビット単位のソース画像データが読み出される。
【００３１】
図８は、本発明の第１の実施の形態におけるＸ方向への拡大および黒画素数の計数処理の一例の説明図である。Ｘ方向データ拡大・計数部１１では、Ｄａ２〜０から入力される画像データを与えられた倍率で拡大し、タップ数に応じて黒画素を計数する。図８（Ａ）は、Ｄａ２〜０から入力されてくる画像データを順番に並べたものである。ここに示した３ビットのソース画像データがＸ方向に拡大される。なお、この３ビットというビット数は、（ビット数−１）をＸ方向に、与えられた倍率である３倍に拡大したデータ数の中に、平滑化に使用するウインドウのＸ方向のタップ数である５が収まるように選ばれる。
【００３２】
Ｄａ２〜０をＸ方向に拡大した結果を図８（Ｂ）に示す。この例では３倍の拡大が行なわれるため、Ｘ方向にデータが９画素ずつ並んだデータが得られる。一方、平滑化のタップ数は５であるので、まず図に示した範囲ＡがウインドウのＸ方向の範囲に相当すると仮定する。従って、この１ライン分のデータを処理する間は、範囲Ａの中の黒画素が計数される。ここで求められた計数値は、ウインドウ領域の中のＸ方向に連続したデスティネーション画像の画素値に係数１をかけて足し合わせたものに相当する。最終的な計数値は図８（Ｃ）に示したようになり、計数値を２進数で表わしたバイナリデータをＤｂ２〜０信号として出力される。
【００３３】
図９は、本発明の第１の実施の形態におけるＹ方向への累積処理の一例を示す説明図である。Ｘ方向の黒画素の計数値は、Ｙ方向データ累積部１２に入力され、Ｙ方向に拡大された後、Ｙ方向のタップ数分だけさらに累積される。図９はこの手順を示している。図９のＤｂ２〜０の欄には、Ｄｂ２〜０信号をＹ方向に拡大した計数値を縦方向に示している。また、それぞれの計数値には便宜上▲１▼〜▲９▼の番号をふり、計数値の識別のためソース画像のＹアドレスを付記している。この時、Ｙ方向データ累積部１２の内部では、Ｄｂ２〜０信号を３回ずつ重複させる。これにより、ソース画像をＹ方向に３倍に拡大して計数した場合と同様の計数値が得られる。この拡大後の計数値において、連続する５個分を足し合わせ、その結果をＤｃ４〜０信号として出力する。この結果を図９のＤｃ４〜０の欄に示している。
【００３４】
このＹ方向の計数結果は、黒画素の計数値をＹ方向のタップ数分だけ足し合わせたものであるので、５×５ウインドウ中の黒画素数を表わす。すなわち、この結果は、デスティネーション画像中のウインドウ領域内の全ての画素に係数１をかけて足し合わせたものとなる。また、（▲１▼〜▲５▼までの和）、（▲２▼〜▲６▼までの和）、（▲３▼〜▲７▼までの和）・・・という順番で計数値がＤｃ４〜０信号として出力されるので、ウインドウ領域をＹ方向に１画素ずつ移動させた時の累積結果が順番に出力されていくことになる。
【００３５】
その後、Ｄｃ４〜０信号は閾値レジスタ１４に設定されている閾値とコンパレータ１３で比較される。この比較結果が、図９のＤｄ０の欄に示したように、２値化データがＤｄ０信号として出力される。なお、閾値レジスタ１４には、外部から任意の閾値を設定することが可能であるとする。図１では、このレジスタに設定するための回路は省略した。
【００３６】
前述のようにＤｃ４〜０信号は５×５ウインドウの係数を１としたときの計算結果であるので、一例として閾値レジスタに１４を設定しておくことにより、平滑化の係数が全て１／１４であるときと同様の２値化結果が得られる。またこの結果は、デスティネーション画像のＹ方向に連続した順番で得られる。ここで、このとき得られる画素のデスティネーション画像上でのＸ座標をｍ、Ｙ座標をｊ、ｊ＋１、ｊ＋２・・・とする。
【００３７】
図１０は、本発明の第１の実施の形態におけるデスティネーション画像の一例の説明図である。上述のようにしてＤｄ０信号として出力された画素データは、図１０（Ａ）に示すようにＹ方向に並べられ、図１０（Ｂ）に示すデスティネーション画像の領域４２に１画素ずつ書き込まれていく。ここで領域４２は、Ｙ方向に画像のサイズ分である１９２画素、Ｘ方向にアドレスがｍである１画素からなる領域である。このように拡大画像フレームメモリ３に書き込みが行なわれるときは、拡大画像メモリ制御部１８によって拡大画像フレームメモリ３のアドレスが順番に出力され、同時に書き込み信号も出力される。例えば、Ｘ座標ｍ、Ｙ座標ｊ、ｊ＋１、ｊ＋２、・・・と、書き込み信号と、Ｄｄ０信号として出力された画素データが拡大画像フレームメモリ３に与えられ、画素データが書き込まれてゆく。
【００３８】
次に、デスティネーション画像の他のラインが生成される時の様子について説明する。Ｘ座標がｍとなるデスティネーション画像の１ライン分の画像データが生成されると、次にＸアドレスがｍ＋１となるラインの画素データが生成される。このときには、平滑化のウインドウをデスティネーション画像上でＸ方向に１画素分ずらして、Ｙ方向にウインドウを移動しながら画素を計算する。そのために、図８（Ｂ）に示したように、５画素分からなる範囲Ａを右に１画素分だけ移動した範囲Ｂを使用して、上記の説明と同様の計算を行なうことにより達成される。
【００３９】
すなわち、Ｄａ２〜０からは、全く同じソース画像のデータがＸ方向データ拡大・計数部１１に入力される。そしてＸ方向データ拡大・計数部１１では、Ｘ方向に３倍に拡大したデータのうち、図８（Ｂ）の範囲Ｂにあるものの黒画素を計数してＤｂ２〜０信号に出力する。後の処理は同様に行なうことにより、Ｘ座標がｍ＋１となる１ライン分の画素データが得られるため、この画素データがデスティネーション画像として拡大画像フレームメモリ３に書き込まれる。
【００４０】
その後、Ｘ座標がｍ＋２となるラインが生成されるので、平滑化のウインドウをさらに１画素分ずらした、範囲Ｃの５画素分のデータを対象にして、同様の処理が行なわれる。以上の結果、デスティネーション画像の３ライン分のデータが生成される。
【００４１】
図１１は、図７（Ａ）のソース画像において、領域３２と次の領域の関係を説明する拡大図である。次にＸ座標がｍ＋３となるラインが生成される時には、図８（Ｂ）の範囲Ｄのデータが対象になる。このとき、図８（Ａ）に示したＤａ２〜０のデータのうち、最も左側の１ビットを拡大した結果は範囲Ｄに含まれなくなる。従って、Ｄａ２〜０からは、１ビット右側の３ビットの領域３４のデータがＸ方向データ拡大・計数部に入力されるようになる。ここで領域３４は、図１１に示すように、領域３２をＸ方向に１画素分ずらした領域である。
【００４２】
図１２は、本発明の第１の実施の形態においてソース画像中の領域３４に対するＸ方向への拡大および黒画素数の計数処理の一例の説明図である。元画像フレームメモリ２から入力されるソース画像データが１画素分ずれているので、範囲Ｄは図８（Ｂ）に示す場合より３画素分ずれている。
【００４３】
以後、同様の操作により、ソース画像データに対して拡大、平滑化が行なわれ、デスティネーション画像の全ての画素データが生成される。
【００４４】
次に、生成される画素のＸ座標またはＹ座標がデスティネーション画像の境界付近にあり、平滑化に使用される５×５ウインドウの内部の画素がデスティネーション画像領域をはみ出しているときの処理について説明する。この例では、画像領域をはみ出した画素は白とみなして処理を行なうことにする。
【００４５】
図１３は、デスティネーション画像領域をウインドウがはみ出す場合の説明図である。まず、図１３のウインドウ５１のように、デスティネーション画像領域のＸ座標が最小である境界（左の境界とも呼ぶ）からウインドウ内の画素がはみ出している場合について述べる。
【００４６】
図１４は、本発明の第１の実施の形態においてウインドウが左の境界よりはみ出す場合のＸ方向への拡大、部分平滑処理の一例の説明図である。この例は、図７（Ａ）に示したソース画像中、最も左に位置する領域３１のデータが、Ｄａ２〜０からＸ方向データ拡大・計数部１１に入力される場合に相当する。図１４では、それぞれのデータがＸ方向に拡大される様子と、画素数を計数する範囲を示している。なお、図１４（Ｂ）に示すＸ方向の拡大結果は、図８、図１２などと異なり、８画素分しかないが、これについては後述する。
【００４７】
まず、図１０（Ｂ）に示したデスティネーション画像中、最も左に位置する領域４１を生成するために、ソース画像の左の境界に位置する画素をＸ方向に拡大した画素のうち、最も左の画素がウインドウの中心画素となるように選ばれる。そして、デスティネーション画像の左の境界をはみ出したウインドウ中の画素は白とみなされる。すなわち、はみ出した画素の値は０となるため、計数を行なう範囲に含めなくても同じ計数結果が得られる。従って、図１４（Ｂ）の範囲Ａ０に示した３画素だけが計数の対象となり、上述した平滑化の操作によって、領域４１の１ライン分の画素が得られる。
【００４８】
また、次の１ラインを生成するときには、図１４（Ｂ）の範囲Ｂ０にある４画素だけが計数の対象となり、同様の操作が行なわれる。さらにその次の１ラインを生成する時には、範囲Ｃ０が計数の対象となる。このときには５×５ウインドウがデスティネーション画像領域に全て入っている状態であるから、以後の操作は上述の通常の拡大・平滑化操作と全く同様にして行なわれる。
【００４９】
次に、図１３のウインドウ５２のように、デスティネーション画像領域のＸ座標が最大である境界（右の境界とも呼ぶ）からウインドウ内の画素がはみ出している場合について述べる。これは、図７（Ａ）に示したソース画像中、最も右に位置する領域３３のデータを入力する場合に相当する。図１５は、本発明の第１の実施の形態においてソース画像領域の右の境界をはみ出した画素を含む場合のＸ方向への拡大、部分平滑処理の一例の説明図である。Ｄａ２〜０から入力されるソース画像データの最も左側のデータが使用されなくなった時には、上述の通り領域３３がＸ方向に１画素分ずらさて入力されるようになる。ここで、Ｄａ２〜０に入力されるデータのうち最も右側のデータは、ソース画像領域をはみ出したデータとなる。このデータに対しては、その値に拘わらず、図１５（Ｂ）に示すように拡大結果を必ず白にする操作が行なわれる。この操作は、Ｘ方向データ拡大・計数部１１の内部で行なわれる。
【００５０】
図１５（Ｂ）の範囲Ａ１は、ウインドウ内部の画素がデスティネーション画像領域の画素を全て含んでいる時の計数の対象となる最後の範囲である。この部分を用いてデスティネーション画像の１ラインを生成した後、範囲Ｂ１を計数の対象とする。範囲Ｂ１のうち、最も右側の画素はデスティネーション画像領域をはずれているが、上記のように画像領域をはみ出した画素は必ず白とされているので、Ｄａ２〜０の最も右側のデータ値にかかわらず、計数処理を行なうことができる。
【００５１】
範囲Ｂ１を対象としてデスティネーション画像の１ラインを生成した後、Ｄａ２〜０から入力した最も左側の画素は、もはや使用されなくなるので、前述の如くソース画像上で入力される領域がＸ方向にさらに１画素分ずらされる。図１６は、本発明の第１の実施の形態においてソース画像領域の右の境界をはみ出した画素を含むデータのＸ方向への拡大、部分平滑処理における図１５に示した状態に続く例の説明図である。この時には、Ｄａ２〜０の中央の画素および右側の画素がソース画像領域の外側のデータとなる。このときにも同様の操作が行なわれ、この２画素の拡大結果は図１５（Ｂ）に示すように全て白とされる。従って、範囲Ｂ１のときと同様、ウインドウ中でデスティネーション画像の右の境界からはみ出した画素を全て白とみなした上で、範囲Ｃ１を対象にした計数が行なわれ、デスティネーション画像の１ラインが生成される。なお、このラインは、図１０（Ｂ）の領域４３であり、最後のラインであるため、このラインの生成後、処理が終了する。
【００５２】
最後に、図１３のウインドウ５３、５４のように、デスティネーション画像領域のＹ座標が最大、最小である境界（上の境界、下の境界とも呼ぶ）からウインドウ内の画素がはみ出している場合について述べる。
【００５３】
前述のように、Ｄｂ２〜０信号はＹ方向データ累積部１２に入力された後、Ｙ方向に重複された後、５個ずつ累積することによりウインドウ領域内部の黒画素の計数値が得られる。この時、重複された１ライン分の計数値の最初と最後に、２つずつ０を付け加えることによって、デスティネーション画像の下と上の境界をはみだしたウインドウ内部の画素を白とみなすことができる。
【００５４】
図１７は、本発明の第１の実施の形態における上端および下端における重複後の計数値の一例の説明図である。Ｘ方向データ拡大・計数部１１から送られてくるＤｂ２〜０信号は、３つずつに複写されるが、このとき図１７（Ｃ）に示したデータＰからデータＱまでは、図１７（Ａ），（Ｂ）に示したようにＸ方向の計数値である。ここではさらに、データＰの前とデータＱの後に２つずつ０が付け加えられている。
【００５５】
Ｙ方向データ累積部１２は、このように０をつけ加えた計数値をもとに、Ｙ方向に５個ずつ累積するため、最初の累積値はデータＡを中心とした０＋０＋５＋５＋５＝１５、最後の累積値はデータＢを中心とした３＋３＋３＋０＋０＝９となる。それぞれの値は、コンパレータで２値化された後、デスティネーション画像の下の境界に位置する画素、および上の境界に位置する画素となる。このように、デスティネーション画像領域の下と上の境界からはみだしたウインドウ内の画素は白とみなされ、その計数値は０となる。
【００５６】
以上の操作により、ソース画像が拡大・平滑化され、拡大画像フレームメモリ３に書き込まれる。
【００５７】
次に、上述した３倍の拡大およびタップ数を５とした平滑化を行なうためのハードウエアについて説明する。個々の回路の説明に先立って、上述した拡大・平滑化回路１の全体の動作について、タイミングチャートを用いながら説明する。図１８は、本発明の第１の実施の形態において最初のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。図１８ではクロック信号は細かくなりすぎるので省略した。また、各信号でハッチングを施した部分は、信号が意味を持たない時の状態を表わしており、それ以外の信号にはＴで始まる記号によってタイミングを区別している。ここでは、動作開始から、デスティネーション画像を２ライン分生成する時のタイミングチャートを示している。
【００５８】
まず、拡大・平滑化回路１は、外部からのスタートパルスＳＴＡＲＴによってその動作が開始される。その後、前述のように拡大・平滑化処理が行なわれ、１ラインずつデスティネーション画像が生成される。
【００５９】
最初のラインの処理では、タイミングＴＳＸ０で、Ｘ方向ＤＤＡ計算部１５によって残差と呼ばれる値の計算を行ないながら、残差の符号を示すＳＸ信号がＸ方向データ拡大・計数部１１に出力される。
【００６０】
Ｘ方向データ拡大・計数部１１では、後ほどＤａ２〜０信号として入力されてくるソース画素から、図１４（Ｂ）に示した範囲Ａ０にある画素数を直接求めるため、ＳＸ信号をもとにして重複数と呼ばれる値を求める。
【００６１】
その後、タイミングＴＤａ０で、Ｄａ２〜０信号からソース画像データが入力される。Ｘ方向データ拡大・計数部１１では、上述した重複数を使って、Ｄａ２〜０信号から計数結果を求め、この結果をＤｂ２〜０信号として出力する。このとき、まず上述のようにＹ座標が最小のときの境界を処理するため、Ｄｂ２〜０信号に先立ってタイミングＴＤｂ０において０が２つ分生成される。その後、タインミングＴＤｂ１で計数結果が出力される。さらにＹ座標が最大のときの境界を処理するために、タイミングＴＤｂ２で再度０が２つ分生成される。
【００６２】
なお、このときタイミングＴＤａ０で入力されてくるＤａ２〜０信号は、上述の如く、Ｙ方向データ累積部１２でＹ方向に拡大するため、Ｙ方向の累積動作が３回行なわれるごとに１回出力されることになる。
【００６３】
その後、Ｄｂ２〜０信号はＹ方向データ累積部１２でＹ方向の重複数（ここでは３）となるように計数値が複製され、タップ数である５個ずつ累積されて、累積結果がタイミングＴＤｃ４でＤｃ４〜０信号に出力される。なお最初の累積結果は、生成した２つの計数値０と、Ｄａ２〜０が１回入力されて３つに複製され、計数値が５つになった後に出力される。このようにして求められた累積結果は、コンパレータ１３に入力されて２値化され、タイミングＴＤｄ０で拡大画像フレームメモリ３に書き込まれる。
【００６４】
以上で、デスティネーション画像の最初の１ラインの処理が終わる。その後、タイミングＴＳＸ１で、次のラインの処理が開始される。この時には、Ｘ方向拡大・計数部１１で、図１４（Ｂ）に示した範囲Ｂ０に相当する重複数が求められ、同様の操作が行なわれる。
【００６５】
以下同様にして、デスティネーション画像データが１ラインずつ生成されていく。なお、それぞれのユニットの中では数クロックにわたって処理が行なわれるので、図１８でそれぞれの信号のタイミングの間はこのクロック分だけずれているところがある。
【００６６】
図１９は、本発明の第１の実施の形態において途中のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。ここでは、デスティネーション画像上で、そのＸアドレスがｍ＋１、ｍ＋２となる２ライン分の生成を行なう時の各データ信号のタイミングを表わしている。Ｘ方向拡大・計数部１１では、それぞれ図８（Ｂ）に示す範囲Ａ、範囲Ｂ、範囲Ｃのいずれかに相当する計数値が求められ、同様にラインの生成が行なわれる。
【００６７】
次に、個々の回路について詳細に説明する。図２０は、本発明の第１の実施の形態においてＸ方向ＤＤＡ計算部の内部構成の一例を示すブロック図である。図中、６１は初期値レジスタ、６２は差分０レジスタ、６３は差分１レジスタ、６４，６６はマルチプレクサ、６５は加算器、６７は残差フリップフロップである。この回路は、画像の拡大などに使われる公知のＤＤＡ計算を行なうものである。
【００６８】
まず、一般的に行なわれているＤＤＡによる拡大について説明を行なう。画像をＸ方向に拡大する時には、ソース画像からデスティネーション画像へ１画素ずつコピーが行なわれる。このとき、ソース画素の位置をＤＤＡ計算により制御しながら拡大が行なわれる。すなわち、ＤＤＡ計算では、ソース画像のサイズＳＳＩＺＥ、デスティネーション画像のサイズＤＳＩＺＥを使って、デスティネーション画像の１画素がコピーされるごとに残差と呼ばれる値を求め、残差の符号に応じてソース画像の画素位置を移動するか否かを判定する。このように、拡大が行なわれるときには、ソース画像の同じ画素がデスティネーション画像の数画素にわたってコピーが行なわれる。この画素数は重複数と呼ばれる。実際には、ソース画像のサイズＳＳＩＺＥ、デスティネーション画像のサイズＤＳＩＺＥは、その比が一定であれば実際の画像のサイズよりも小さい値でよく、簡単のために３倍の場合でＳＳＩＺＥ＝１、ＤＳＩＺＥ＝３として説明を進める。
【００６９】
残差の値をＥＤとすると、まず初期値として２×ＳＳＩＺＥ−ＤＳＩＺＥ＝−１がＥＤに設定される。その後、デスティネーション画像の１画素にコピーが行なわれるごとに、残差ＥＤに、その符号に応じて以下の差分を加えていく。
ＥＤが正または０の場合：２×（ＳＳＩＺＥ−ＤＳＩＺＥ）＝−４
ＥＤが負の場合        ：２×ＳＳＩＺＥ＝２
一方、デスティネーション画素にコピーするソース画素は、残差ＥＤの符号が正または０であるときだけ、コピーした後に位置を更新する。
【００７０】
以上の操作の結果、３倍の例では、残差ＥＤは以下のように変化していく。
−１、＋１、−３、−１、＋１、−３、−１、＋１、−３、・・・
従って、最初のソース画素が２回、デスティネーション画素にコピーされた後、ソース画素の位置が更新され、その後３回ずつデスティネーション画素にコピーされながらソース画素の位置が１回更新される。なお、図１４（Ｂ）において、３画素からなるＤａ２〜０の拡大結果が８画素となるのは、このようにデスティネーション画像の最初の画素には２回だけコピーが行なわれるためである。
【００７１】
次に、図２０に示す回路について説明する。初期値レジスタ６１には、残差ＥＤの初期値が格納される。また、差分０レジスタ６２には残差ＥＤが正または０の場合の差分が格納され、差分１レジスタ６３には残差ＥＤが負の場合の差分が格納される。マルチプレクサ６４は、残差の符号ＳＸに応じて差分０レジスタ６２の値あるいは差分１レジスタ６３の値のいずれかを選択する。加算器６５は、マルチプレクサ６４で選択された差分０レジスタ６２あるいは差分１レジスタ６３に格納されている差分の値と、残差ＥＤの値を加算する。マルチプレクサ６６は、信号ＩＤＤＡＸに基づいて、初期値レジスタ６１に格納されている残差ＥＤの初期値、あるいは加算器６５で求めた残差ＥＤのいずれかを選択し、残差フリップフロップ６７に対して出力する。残差フリップフロップ６７は、クロックＣＬＫに従って残差ＥＤの値を格納して出力する。出力された残差ＥＤは加算器６５に入力される。また、残差ＥＤの符号ＳＸがＸ方向データ拡大・計数部１１に出力される。なお、残差フリップフロップ６７にはイネーブル端子Ｅが付いており、ＥＤＤＡＸ信号が入力されている。クロックＣＬＫの立ち上がりでＥＤＤＡＸ信号が１の場合のみ、Ｄ入力がＱ出力に現れ、その値を保持する。またクロックＣＬＫの立ち上がりでＥＤＤＡＸ信号が１の場合には、それまでの値はＱ出力に保持したままとなる。
【００７２】
図２０に示すＸ方向ＤＤＡ計算部１５の回路の一例における動作例について説明する。この回路は、１クロックごとに残差ＥＤの値を更新する構成になっている。初期値レジスタ６１、差分０レジスタ６２、差分１レジスタ６３には、予め上記の残差の初期値２×ＳＳＩＺＥ−ＤＳＩＺＥ、残差が正または０の場合の差分２×（ＳＳＩＺＥ−ＤＳＩＺＥ）、残差が負の場合の差分２×ＳＳＩＺＥの値が、４ビット符号付数で格納されているものとする。なお、図２０では省略したが、これらのレジスタには拡大・平滑化回路の外部から任意の値を設定できるようになっているものとする。これらのレジスタに設定する値を変更することによって、Ｘ方向の倍率を任意に設定可能である。
【００７３】
また、残差ＥＤ信号は４ビット符号付数で表わされており、その最上位の符号ビットが０ならＥＤは正または０、１なら負であることになる。この符号ビットはＳＸ信号として出力される。
【００７４】
まず、ＩＤＤＡＸ入力およびＥＤＤＡＸ入力が１の場合には、マルチプレクサ６６によって、残差フリップフロップ６７の入力に初期値レジスタ６１の値が入力され、この値がクロックの立ち上がりにおいて残差フリップフロップ６７に保持される。従って、残差の初期化が行なわれる。
【００７５】
次に、ＩＤＤＡＸ入力が０でＥＤＤＡＸ入力が１の場合には、マルチプレクサ６６によって、加算器６５による加算結果が残差フリップフロップ６７に入力され、この値がクロックの立ち上がりにおいて保持される。この時、ＳＸ信号として出力されるＥＤ信号の符号ビットがマルチプレクサ６４に入力されている。従って、残差フリップフロップ６７に保持されていた残差ＥＤの値が正または０であるならば、マルチプレクサ６４によって差分０レジスタ６２の値が、また残差ＥＤの値が負の場合には差分１レジスタ６３の値が、加算器６５のＡ入力に入力される。一方、加算器６５のＢ入力には、残差ＥＤの値が入力されているため、残差フリップフロップ６７のＤ入力には、上記のＤＤＡの計算において残差にその符号に応じた差分が加えられた値が入力されていることになる。そしてこの値は、ＥＤＤＡＸ入力が１となる次のクロックの立ち上がりで残差フリップフロップ６７に格納され、残差が上述のＤＤＡ計算の通りに更新されてゆく。
【００７６】
最後にＥＤＤＡＸ入力が０の場合には、残差フリップフロップ６７はそれまのデータを保持し続けるので、残差の更新は行なわれない。以上述べたように、図２０の回路は、ＩＤＤＡＸ、ＥＤＤＡＸ入力に従ってＤＤＡ計算を行ない、残差ＥＤの符号ビットＳＸを出力する。
【００７７】
次に、Ｘ方向データ拡大・計数部１１について説明する。前述のように、Ｘ方向データ拡大・計数部１１では、１ライン分のソース画像データを入力する前に、Ｘ方向ＤＤＡ計算部１５で計算された残差符号をもとにして、拡大を行なう時の重複数を求める。この時求められる重複数は、平滑化のウインドウ内にある拡大後の画像に関するものである。
【００７８】
一例として、図８（Ｂ）における範囲Ａが計数の対象になっている場合の重複数について述べる。範囲Ａの中には、Ｄａ２〜０信号から入力されるソース画素のうち、左側の画素が３つ、中心の画素が２つ含まれている。従って、Ｄａ２、Ｄａ１、Ｄａ０に対する重複数は、３、２、０となる。また別の例として、範囲Ｃが計数の対象になっている場合には、同様にＤａ２、Ｄａ１、Ｄａ０に対する重複数は１、３、１となる。
【００７９】
重複数が求められた後、Ｄａ２〜０信号からソース画素の入力が開始される。このとき、Ｘ方向データ拡大・計数部１１では、３画素のうち黒画素に対応する重複数のみが足し合わされる。この値は前述の計数の対象となる範囲内の黒画素数であるので、Ｄｂ２〜０信号に出力される。このように、拡大画素を作成することなく、ソース画素から直接、計数値を求めることができる。なお、前述したように、上下の境界を処理するために、１ライン分の計数値の前後には、０データが付加される。
【００８０】
次に、拡大・計数部の具体的な回路について説明する。図２１は、本発明の第１の実施の形態においてＸ方向データ拡大・計数部の内部構成の一例を示すブロック図である。図中、７１はＭＰ累積回路、７２は拡大／計数回路、７３はマルチプレクサである。ＭＰ累積回路７１は、Ｘ方向ＤＤＡ計算部１５で計算された残差の符号ＳＸから上述の重複数を求め、求めた重複数を２進数で表わしたものをそれぞれＭＰＣ２１〜２０、ＭＰＣ１１〜１０、ＭＰＣ０１〜００信号に出力する。拡大／計数回路７２は、これらの重複数とＤａ２〜０信号とを入力し、上述の計数値を求めてＳＵＭ２〜０信号に出力する。
【００８１】
一方、マルチプレクサ７３では、制御信号ＢＤＸにより０データとＳＵＭ２〜０とのうちの１つが選択され、Ｄｂ２〜０に出力される。すなわち、図１８のＴＤｂ０、ＴＤｂ２のように、１ラインの前後に付加する０データを出力している時には制御信号ＢＤＸが１となり、またＴＤｂ１のように計数データを出力する時には、制御信号ＢＤＸが０となる。
【００８２】
次に、図２１に示されているそれぞれの回路の動作について述べる。図２２は、本発明の第１の実施の形態において拡大／計数回路の内部構成の一例を示すブロック図である。図中、８１，８２，８３，８６，８７はＡＮＤゲート、８４，８５は加算器である。まず、ＡＮＤゲート８６、８７は、前述したように、右の境界処理を行なう時に、図１５や図１６に示すようにソース画像領域をはみ出した画素を０にするためのものである。このとき制御信号ＶＤＡ１，ＶＤＡ０が用いられる。Ｄａ２〜０が全てソース画像領域に入っている時は、ＶＤＡ１、ＶＤＡ０は１であり、Ｄａ１、Ｄａ０はそのまま使用される。ソース画像領域をはみ出した時の動作は、元画像メモリ制御部１７の説明のところで後述するため、ＶＤＡ１、ＶＤＡ０は共に１であるとして説明を続ける。
【００８３】
ゲート８１、８２、８３は、ソース画素と重複数とを入力とするＡＮＤゲート２個ずつから構成されている。それぞれＤａ２、Ｄａ１、Ｄａ０が１すなわち黒である場合のみ、それぞれの画素に対応する重複数ＭＰＣ２１〜２０、ＭＰＣ１１〜１０、ＭＰＣ０１〜００を、信号ｐｃａ２、ｐｃａ１、ｐｃａ０に出力する。Ｄａ２、Ｄａ１、Ｄａ０が０すなわち白の場合は、信号ｐｃａ２、ｐｃａ１、ｐｃａ０が０となる。このようにして得られた信号ｐｃａ２、ｐｃａ１、ｐｃａ０は、加算器８４、８５によって足し合わされ、ＳＵＭ２〜０から出力される。これにより、ソース画像をＸ方向に拡大した後のウインドウ内部の黒画素数が出力されることになる。
【００８４】
次に、ＭＰ累積回路７１について説明する。図２３は、本発明の第１の実施の形態においてＭＰ累積回路の内部構成の一例を示すブロック図である。図中、９１ａ〜９１ｅはフリップフロップ、９２ａ〜９２ｅはフリップフロップ、９３ａ〜９３ｅはマルチプレクサ、９４ａ〜９４ｃはフリップフロップ、９５ａ〜９５ｃはカウンタ、９６ａ〜９６ｃはＡＮＤ、９７はバレルシフタ、９８はインバータである。図２３では、煩雑となるためクロック入力信号ＣＬＫの配線は省略したが、ＣＬＫ信号は図中の全てのフリップフロップとカウンタのクロック入力に接続されているものとする。前述のように、ＭＰ累積回路７１は１ライン分のソース画像データを拡大／計数回路７２に入力する前に、Ｘ方向ＤＤＡ計算部１５より計算された残差の符号ＳＸをもとに各ソース画素に対する重複数を求め、出力するものである。
【００８５】
フリップフロップ９１ａ〜９１ｅは、残差符号ＳＸをシフトしながら格納するイネーブル付きのフリップフロップであり、イネーブル端子Ｅには、イネーブル信号ＥＳＨＩＦが入力される。フリップフロップ９２ａ〜９２ｅは、バレルシフタ９７の出力をロードし、さらにロードしたデータをシフトする。マルチプレクサ９３ａ〜９３ｅは、信号ＰＳに従い、信号ＰＳが１のときバレルシフタ９７の出力を選択し、信号ＰＳが０のとき前段のフリップフロップ９２ａ〜９２ｄの出力を選択する。なお、マルチプレクサ９３ａは、バレルシフタ９７の出力あるいは１のいずれかを選択する。
【００８６】
フリップフロップ９４ａ〜９４ｃは、フリップフロップ９２ａ〜９２ｅによるシフト結果をもとにカウンタのＵＰ信号を作り出すイネーブル付きフリップフロップである。イネーブル端子Ｅにはフリップフロップ９２ｅからのシフト出力がインバータ９８を介して入力されている。また、フリップフロップ９４ａのプリセット端子ＰＲとフリップフロップ９４ｂ，９４ｃのリセット端子にはリセット信号ＲＥＳが入力されており、この信号が１となることによって、フリップフロップ９４ａ〜９４ｃは１、０、０となる。フリップフロップ９４ａのデータ入力端子Ｄには０が入力されており、フリップフロップ９４ｂ，９４ｃのデータ入力端子Ｄにはそれぞれ前段のフリップフロップ９４ａ，９４ｂのＱ出力が接続されている。
【００８７】
カウンタ９５ａ〜９５ｃは、それぞれのソース画素に対応して、その重複数を計数する。ＡＮＤゲート９６ａ〜９６ｃは、フリップフロップ９４ａ〜９４ｃの出力とカウントアップのイネーブル信号ＥＵＰとの論理積を計算してカウンタ９５ａ〜９５ｃのＵＰ端子に入力する。バレルシフタ９７は、フリップフロップ９１ａ〜９１ｅの出力をシフト数ＢＳＣに従ってシフトする。インバータ９８は、フリップフロップ９２ｅの出力を反転してフリップフロップ９４ａ〜９４ｃのイネーブル端子Ｅに入力する。
【００８８】
この回路の動作は、以下のようになる。まず、Ｘ方向ＤＤＡ計算部１５により、そのラインで使用されるＸ方向の拡大画像を求めるだけの残差符号を計算し、フリップフロップ９１ａ〜９１ｅに格納する。その後、この残差符号をバレルシフタ９７を通してフリップフロップ９２ａ〜９２ｅに格納し、フリップフロップ９２ａ〜９２ｅをシフトさせて残差符号を１個ずつ読み出す。読み出された残差符号の値に応じて、カウンタ９５ａ〜９５ｃのうち１個を選択してカウントする。以上の操作によって、各カウンタ出力にそれぞれのソース画素に対応した重複数が求められる。
【００８９】
以下、Ｘ方向ＤＤＡ計算部１５とこのＭＰ累積回路７１の動作について詳細に説明する。図２４は、本発明の第１の実施の形態において最初のラインの生成時におけるＭＰ累積回路の動作の一例を示すタイミングチャートである。なお、タイミングチャートには、クロック信号ＣＬＫの立ち上がりに記号ＴＣで始まる数字をつけてそのタイミングを区別する。
【００９０】
上述のように、図１４（Ｂ）の範囲Ａ０に示されるデスティネーション画像の３画素分が計数の対象となるので、ＤＤＡ計算部からは３個の残差符号が入力される。タイミングＴＣ００は、図１８のタイミングチャートにおいて、タイミングＴＳＸ０開始直後に対応し、タイミングＴＣ０９は、図１８のタイミングＴＤｂ０開始直前に対応している。
【００９１】
まず、Ｘ方向ＤＤＡ計算部１５で残差が初期化された後、３画素分の残差が求められる。タイミングＴＣ０１の前で信号ＩＤＤＡＸと信号ＥＤＤＡＸが１となるため、前述のようにＸ方向ＤＤＡ計算部１５の内部の残差ＥＤを格納するフリップフロップ６７はＴＣ０１で初期化されるとともに、ＴＣ０１直後にＳＸから初期値の残差符号が出力される。また、ＴＣ０１の後で信号ＩＤＤＡＸは０になるので、初期化は終了する。信号ＥＤＤＡＸはＴＣ０１の後さらに２クロック期間１になるので、ＴＣ０２、ＴＣ０３で残差の値は更新され、各タイミングの直後にＳＸから残差符号が出力される。以上の結果、残差の符号ＳＸとして１、０、１が順番に出力される。また３画素分の残差符号が求まったので、信号ＥＤＤＡＸはＴＣ０３の後０となり、残差の更新はストップする。
【００９２】
同時に、このようにして入力される３画素分の残差符号が、フロップフロップ９１ａ〜９１ｃに格納される。ＥＳＨＩＦ信号は、タイミングＴＣ０２の前からＴＣ０４の後までの３クロック期間だけ１になる。この間だけフリップフロップ９１ａ〜９１ｅはイネーブル状態となるので、残差の符号ＳＸの値は、フリップフロップ９１ａ〜９１ｃに順番にシフトされていく。この結果、ＴＣ０４の後ではＳＸから出力された値は順番にＱｓｃ、Ｑｓｂ、Ｑｓａとして保持される。
【００９３】
ここで保持された残差符号は、最も右側の有効な残差符号がフリップフロップ９２ｅに格納されるように、バレルシフタ９７によりシフトされた後、信号ＰＳが１となってマルチプレクサ９３ａ〜９３ｅはバレルシフタ９７の出力を選択し、フリップフロップ９２ｃ〜９２ｅに格納される。
【００９４】
ここで、バレルシフタ９７は、入力の５ビットを、信号ＢＳＣの入力に応じた０〜４のシフト量だけ右にシフトし、出力する動作を行なう。なお、左側の空いた出力からは、１が出力される。このとき、信号ＢＳＣから入力されるシフト量は、バレルシフタの入出力の本数である５から、図１４（Ｂ）の範囲Ａ０で示される、計数の対象となるデスティネーション画像の画素数を引いたものとなるので、この場合は２である。
【００９５】
タイミングＴＣ０５の前でＢＳＣ入力は値２、ＰＳ入力は１となる。このため、タイミングＴＣ０５で、フリップフロップ９２ｃ〜９２ｅにはバレルシフタ９７によりフリップフロップ９１ａ〜９１ｃに保持され信号Ｑｓａ〜Ｑｓｃとして出力されていた残差符号値が、またフリップフロップ９２ａ、９２ｂには１が、それぞれロードされる。
【００９６】
その後、ＰＳ入力が０となり、フリップフロップ９２ａ〜９２ｅはマルチプレクサ９３ａ〜９３ｅを介してシフト動作を始める。このとき、バレルシフタ９７により最も右側の有効な残差符号がフリップフロップ９２ｅに格納されるようにシフトされたので、ＰＳ入力が０となる直後のクロックの立ち上がりから、Ｑｅに残差符号が順番に現れる。
【００９７】
従って、タイミングＴＣ０５、ＴＣ０６、ＴＣ０７で、Ｑｅに残差符号が読み出されていき、インバータ９８で反転されてフリップフロップ９４ａ〜９４ｃのイネーブル信号ＥＵＦＦとなる。よって、ＥＵＦＦは残差が０または正のときのみ１となってフリップフロップ９４ａ〜９４ｃをイネーブルにする。上述のように、残差符号は１、０、１が入力されているので、ＥＵＦＦは０、１、０となる。
【００９８】
タイミングＴＣ０５でＲＥＳ信号は１になっているので、フリップフロップ９４ａは１をプリセットし、出力Ｑｕａは１となる。フリップフロップ９４ｂ、９４ｃではＲＥＳ信号によってリセットされるので、出力Ｑｕｂ、Ｑｕｃは０を出力する。その後、ＲＥＳ信号は０になるので、プリセット、リセットは解除される。
【００９９】
一方、上述の通りＴＣ０５以降の３クロックでフリップフロップ９４ａ〜９４ｃのイネーブル信号ＥＵＦＦは０、１、０となる。従って、ＥＵＦＦが１となるＴＣ０７で、フリップフロップ９４ａ〜９４ｃがイネーブルとなり、フリップフロップの値は右にシフトする。このとき、フリップフロップ９４ａには０が入力されているのでＱｕａは０となる。
【０１００】
以上の結果、Ｑｕａ、Ｑｕｂ、Ｑｕｃのうち、タイミングＴＣ０６、ＴＣ０７ではＱｕａのみが１、タイミングＴＣ０８ではＱｕｂのみが１となる。このように、フリップフロップ９４ａ〜９４ｃはつねにどれか１個が１を出力している状態となる。
【０１０１】
カウンタ９５ａ、９５ｂ、９５ｃは、図１４（Ｂ）の範囲Ａ０にある画素を生成するための重複数を計数する。ここでまず、これらのカウンタの計数を制御するＵＰ入力には、ＡＮＤゲート９６ａ、９６ｂ、９６ｃが接続されている。このＡＮＤゲートの一方の入力には、フリップフロップ９４ａ〜９４ｃの出力が、もう一方の入力には、ＥＵＰ信号が入力されている。ここで、ＥＵＰ信号は、ＴＣ０６の前から図１４（ｂ）の範囲Ａ０にある画素数である３クロック期間だけ１になるとする。それ以外の期間はＥＵＰ信号は０であるため、ＵＰ入力は常に０になる。従って、カウンタ９５ａ、９５ｂ、９５ｃは、ＴＣ０６、ＴＣ０７、ＴＣ０８の３クロック期間だけカウントが可能である。
【０１０２】
カウンタ９５ａ、９５ｂ、９５ｃのリセット入力には、ＲＥＳ入力が入っているので、フリップフロップ９４ａ〜９４ｃと同様、ＴＣ０５でリセットされ、出力はすべて０になる。次にＴＣ０６、ＴＣ０７で、上述の通りＱｕａのみが１となるので、カウンタ９５ａのみが２回カウントアップする。さらにＴＣ０８で、上述の通りＱｕｂのみが１となるので、カウンタ９５ｂのみが１回カウントアップする。ＴＣ０９以降は、ＥＵＰ信号が０となるので、カウンタ９５ａ、９５ｂ、９５ｃはカウントされた値を保持する。
【０１０３】
この結果、ＥＵＰ信号が立ち下がった次のクロックの立ち上がりのタイミングである、タイミングＴ０９の時点で、それぞれのソース画素に対応した重複数を表わすＭＰＣ２１〜２０、ＭＰＣ１１〜１０、ＭＰＣ０１〜００からＤＤＡによって計算した３画素分の重複数である２、１、０が出力される。
【０１０４】
このように、フリップフロップ９２ｅから残差符号を順番に読み出しながら、１つだけ１を出力しているフリップフロップ９４ａ〜９４ｃを残差符号が正の時にシフトすることにより、カウンタ９５ａ、９５ｂ、９５ｃはそれぞれＤａ２、Ｄａ１、Ｄａ０から入力されてくるソース画素の重複数だけ計数される。さらに、ＥＵＰ信号は平滑化のウインドウ内にある拡大後の画画素数だけ１となるので、カウンタ９５ａ、９５ｂ、９５ｃのカウント値の合計はこの画素数と一致し、上記重複数は、平滑化のウインドウの範囲に相当するものとなる。このようにして、ＭＰ累積回路７１で、デスティネーション画像の最初のラインに対応したＸ方向の重複数が計算される。
【０１０５】
図２５は、本発明の第１の実施の形態において２番目のラインの生成時におけるＭＰ累積回路の動作の一例を示すタイミングチャートである。ここでの動作のうち、図２４と同じものに関しては、詳しい説明は省略する。
【０１０６】
２番目のラインの場合には、図１４（Ｂ）の範囲Ｂ０に示される４画素分が計数の対象となる。このとき、最初のラインの処理時に最初の３画素分の残差符号はすでに計算されており、フリップフロップ９１ａ〜９１ｃに格納されている状態である。従って、タイミングＴＣ１３で１クロック分だけ信号ＥＤＤＡＸが１になり、Ｘ方向ＤＤＡ計算部１５から１画素分の残差符号だけが出力される。
【０１０７】
またこのとき、タイミングＴＣ１４で信号ＥＳＨＩＦが１クロックの間だけ１になるため、フリップフロップ９１ａ〜９１ｅが１ビット右にシフトされるとともに、新たな残差符号がフリップフロップ９１ａに格納される。従って、Ｔ１４において、図１４（Ｂ）の範囲Ｂ０の画素に対応した残差符号がＱｓｄ、Ｑｓｃ、Ｑｓｂ、Ｑｓａから出力される。
【０１０８】
さらに、バレルシフタ９７のシフト量ＢＳＣには、Ｑｓｄの値がフリップフロップ９２ｅに格納されるように１が設定され、タイミングＴＣ１５でＱｓａ〜Ｑｓｄの内容がフリップフロップ９２ｂ〜９２ｅにロードされる。その後、前述と同様にしてＱｅから残差符号が順番にシフトされていき、フリップフロップ９４ａ〜９４ｃによってカウンタ９５ａ〜９５ｃが順番に計数される。なお、このとき、範囲Ｂ０の画素数は４画素であるから、ＥＵＰ信号は４クロック分が１になっている。以上のようにして、タイミングＴＣ１１０の時点でカウント動作が終了し、２番目のラインに対応した重複数が求められる。
【０１０９】
３番目のラインの重複数を求める時には、図１４（Ｂ）の範囲Ｃ０にある５画素が計数の対象になるので、２番目のラインと同様、１回だけＤＤＡの残差が更新されてその残差符号が入力される。またバレルシフタのシフト量ＢＳＣは、Ｑｓｅの値がフリップフロップ９２ｅに格納されるように０となり、さらに５画素分計数するため、カウンタを制御するＥＵＰ信号は５クロックの期間が１となる。以下同様の操作が行なわれ、重複数が求められる。以下、計数の対象となる画素数は５のままであり、同様の操作によって重複数が求められる。
【０１１０】
図２６は、本発明の第１の実施の形態において途中のライン生成時におけるＭＰ累積回路の動作の一例を示すタイミングチャートである。このように３番目のライン以降はほぼ同様の動作を行なうが、ここでは一例として、図８（Ｂ）の範囲Ｃにある画素の重複数を求める場合を例に取り、説明する。ここでの動作のうち、今までの説明と同じものに関する説明は省略する。
【０１１１】
この重複数の計算前には、図８（Ｂ）の範囲Ｂに関する重複数の計算が行なわれており、範囲Ｂのデスティネーション画素を計算するための残差符号がフリップフロップ９１ａ〜９１ｅに格納されている状態である。このうち、９１ａ〜９１ｄに格納されているものを再利用するため、２番目のラインの計算と同様、Ｘ方向ＤＤＡ計算部では、追加される１画素分の残差符号のみを計算する。この結果、タイミングＴＣ２４において、フリップフロップ９１ａ〜９１ｅが１ビット分右にシフトされるとともに、新たに求められた残差符号がフリップフロップ９１ａに格納される。このとき、フリップフロップ９１ｅに格納されていた範囲Ｂの右端のデスティネーション画素に対応する残差符号は捨てられる。従って、範囲Ｃの画素に対応する残差符号がフリップフロップ９１ａ〜９１ｅに格納される。
【０１１２】
以後、範囲Ｃの画素数は５であるため、バレルシフタでシフトを行なう時のシフト量ＢＳＣはＱｓｅの値がフリップフロップ９２ｅに格納されるように０となる。さらに５画素分の計数を行なうので、カウンタを制御するＥＵＰ信号は５クロックの期間が１となり、同様の操作が行なわる。この結果、タイミングＴＣ２１１の時点でカウント動作が終了し、重複数が求められる。
【０１１３】
次に図８（Ｂ）の範囲Ｄに対応する重複数を求める場合について説明する。図２７は、本発明の第１の実施の形態において読み込む画素データが変更される場合のＭＰ累積回路の動作の一例を示すタイミングチャートである。ここで、範囲Ｃの処理から範囲Ｄの処理に移る場合、前述のようにＤａ２〜０から入力されるソース画像データは１画素分ずらしたものになる。このときにも重複数は正しく計算される。
【０１１４】
まず、範囲Ｃの重複数を求める時は、図２６に示す通りフリップフロップ９１ａ〜９１ｅに格納される残差符号の値は“１０１１０”であり、従ってイネーブル信号ＥＵＦＦにより、フリップフロップ９４ａのイネーブル端子の入力はＴＣ２５の直後から１、０、０、１、０の順番で変化する。このようにＴＣ２６においてフリップフロップ９４ａのイネーブル信号は１であるため、このフリップフロップの出力はＴＣ２６の直後に０に立ち下がる。従って、カウンタ９５ａは、ＴＣ２６において１回だけカウントアップする。このカウント値は、ソース画像データＤａ２の重複数となっている。
【０１１５】
次に、範囲Ｄの重複数を求める時には、図２７の通りフリップフロップ９１ａ〜９１ｅに格納される残差符号の値は“１１０１１”であり、従ってフリップフロップ９２ｅの反転出力ＥＵＦＦにより、フリップフロップ９４ａのイネーブル信号はＴＣ３５の直後から０、０、１、０、０の順番で変化する。このことより、フリップフロップ９４ａのイネーブル信号はＴＣ３８まで１とならないため、このフリップフロップ９４ａの出力はＴＣ３８の直後まで１のままである。この結果、カウンタ９５ａはＴＣ３８の直後までカウントアップを続け、最終的には３になる。このカウント値は、ソース画像データを１画素分ずらした後Ｄａ２から入力されるデータに対する重複数となっている。
【０１１６】
このように、Ｄａ２〜０から入力されるソース画素がずれたときにも、正しく重複数が求められる。なお、Ｄａ２〜０から入力するソース画像をずらす時には、ＭＰ累積回路７１のＭＰＣ２１〜２０信号などをもとにして制御される。詳しくは、元画像メモリ制御部のところで述べる。以上述べたように、ＭＰ累積回路７１において各ソース画素に対応する重複数が求められる。
【０１１７】
次に、Ｘ方向ＤＤＡ計算部１５、Ｘ方向データ拡大・計数部１１によって１ライン分のＤｂ２〜０が生成される手順について述べる。まず、元画像フレームメモリ２からソースデータを入力する前に、上述したように、Ｘ方向ＤＤＡ計算部１５、ＭＰ累積回路７１を動作させ、ソース画素に対する重複数を求める。その後、Ｄａ２〜０からソース画像の入力を開始し、またＤｂ２〜０からデータを出力する。
【０１１８】
このとき、まず前述の境界処理を行なうために追加する０データをＤｂ２〜０から２クロック分出力する。このために、図２１に示したＢＤＸ信号を２クロック期間だけ１にして、マルチプレクサ７３によって０データを出力する。
【０１１９】
その後、ＢＤＸ信号を０にして、Ｄａ２〜０からソース画素のデータを１ライン分入力する。このとき、元画像メモリ制御部１７は後述する手順に従って元画像フレームメモリのアドレスを生成するが、Ｙ方向のアドレスが更新されるごとにアクセスが発生するため、Ｄａ２〜０からは３クロックに１個ずつのソース画像データが入力される。
【０１２０】
また、拡大／計数回路７２には、ＭＰ累積回路７１で求まった重複数が固定されているので、Ｄａ２〜０から入力されたデータは図２２に示す組合せ回路によってＸ方向への拡大後の黒画素数が求められ、ＳＵＭ２〜０から出力される。このとき、マルチプレクサ７３によってＳＵＭ２〜０が選択されているので、拡大後の黒画素数がＤｂ２〜０から１ライン分出力される。
【０１２１】
その後、ＢＤＸ信号は再び２クロック分０となり、前述の境界処理を行なうために追加する０データがＤｂ２〜０から２クロック分出力される。その後、次のラインの処理が同様に繰り返される。
【０１２２】
なお、ここで述べたＸ方向ＤＤＡ計算部１５の制御信号（ＩＤＤＡＸ、ＥＤＤＡＸ）、ＭＰ累積回路７１の制御信号（ＥＳＨＩＦ、ＢＳＣ、ＰＳ、ＲＥＳ、ＥＵＰ）、Ｘ方向データ拡大・計数部１１の制御信号（ＢＤＸ）は、それぞれ所定のタイミングに従って、全体制御部１９によって生成されるものとする。
【０１２３】
次に、Ｙ方向データ累積部１２について説明する。このＹ方向データ累積部１２は、Ｘ方向データ拡大・計数部１１から送られてくるＤｂ２〜０信号を、Ｙ方向の倍率に合わせて重複させるとともに、図９に示したように５個ずつ加え、そのデータをＤｃ４〜０信号に出力するものである。
【０１２４】
図２８は、本発明の第１の実施の形態においてＹ方向データ累積部の内部構成の一例を示すブロック図である。図中、１０１，１０２ａ〜１０２ｅ，１０５はフリップフロップ、１０３は加算器、１０４は減算器、１０６はＯＲゲートである。フリップフロップ１０１は、Ｘ方向の計数結果を重複させるためのイネーブル入力付のフリップフロップである。イネーブル端子Ｅには、ＯＲゲート１０６を介してＹ方向ＤＤＡ計算部１６からＳＹ信号が入力されており、ＳＹ信号が０の間、同じ計数値を出力し続ける。フリップフロップ１０２ａ〜１０２ｅは、Ｄｂ２〜０から入力されたＸ方向の計数結果を５クロック分遅らせるためのフリップフロップである。加算器１０３には、新たにフリップフロップ１０２ａに保持される計数値と、フリップフロップ１０５に保持されている累積値が入力されており、両者の和を計算して計数結果の累積計算を行なう。減算器１０４は、累積結果からフリップフロップ１０２ｅの出力を引く。フリップフロップ１０５は５個分の累積結果を格納する。ＯＲゲート１０６にはＳＹ信号とともにＹＺＣＮＴ信号が入力されており、ＹＺＣＮＴ信号によってもフリップフロップ１０１のイネーブル入力が制御される。通常はＹＺＣＮＴ＝０なので、ＳＹ信号がそのまま出力される。
【０１２５】
新たな計数値が入力されると、フリップフロップ１０１によって３クロックの間保持される。そして、クロックＣＬＫに従ってフリップフロップ１０２ａ〜１０２ｅに順にシフトされて行く。これによって３倍の拡大が実現される。クロックＣＬＫに従ってフリップフロップ１０２ａに計数値が格納されるとともに、その値に加算器１０３でフリップフロップ１０５に保持されている累積結果が加え合わされる。それとともに、減算器１０４により、フリップフロップ１０２ｅによって保持されていた５クロック前のデータを引くことによって、新たな５個分の累積結果が得られ、フリップフロップ１０５に格納される。
【０１２６】
この動作をさらに説明する。前述のように、Ｄｂ２〜０からは３クロックごとにＸ方向の計数結果が入力され、その前後には２クロック分の０データが入力される。図２９は、本発明の第１の実施の形態においてＹ方向データ累積部の動作の一例を示すタイミングチャートである。タイミングＴＣ４１以降、Ｄｂ２〜０からデータが順番に入力されている。なお、（）で囲んだ数字はＤｂ２〜０から入力された計数値の番号を示し、また“”で囲んだ数字はその値そのものを示している。その他の数字は、このＹ方向データ累積部１２で累積計算を行なったデータの番号を表わし、データ１などと呼ぶことにする。このデータは、デスティネーション画像のＹ方向の画素数である１９２個ある。
【０１２７】
一方、フリップフロップ１０１，１０２ａ〜１０２ｅには、ハイアクティブのリセット入力ＲＥＳ２によってリセットがかけられるので、ＴＣ４２においてそれらの出力は全て０になっている。なお、このリセット入力信号ＲＥＳ２は、所定のタイミングに従って、全体制御部１９によって生成されるものとする。その後、Ｄｂ２〜０から最初に入力される０データのためにさらに２クロック分０が出力されるので、ＴＣ４３までフリップフロップ１０１，１０２ａ〜１０２ｅの出力は全て０である。
【０１２８】
その後、ＴＣ４４においてフリップフロップ１０１にデータ（１）が格納される。この値は、Ｙ方向ＤＤＡ計算部１６から倍率に応じた次の制御信号ＳＹが入力されるまで保持される。ここでは３倍に拡大するので、３クロックだけ保持される。次のタイミングＴＣ４５，ＴＣ４６，ＴＣ４７でそのデータがデータ１，２，３としてフリップフロップ１０２ａおよび加算器１０３に順次取り込まれる。ＴＣ４７においてＤｂ２〜０信号で計数結果が入力されるとともに、信号ＳＹが入力されるので、フリップフロップ１０１は新たな計数結果のデータ（２）を格納し、出力する。このデータ（２）は、ＴＣ４８〜５０でデータ４〜６としてフリップフロップ１０２ａおよび加算器１０３に取り込まれる。以下、同様にして１つの計数値が３つのデータとして処理される。これによって、Ｙ方向の拡大を実現している。
【０１２９】
フリップフロップ１０１から出力されたデータは、１クロックごとにフリップフロップ１０２ａに取り込まれ、フリップフロップ１０２ａ〜１０２ｅをシフトしていく。
【０１３０】
データ１がフリップフロップ１０２ｅまでシフトされるタイミングＴＣ４９までは、ＱＤＬＹ信号は０のままである。従って、ＴＣ４９までは減算器１０４のマイナス側の入力は０であって、加算器１０３とフリップフロップ１０５とにより構成されるループ構造により、それまでにフリップフロップ１０２ａに出力されるデータが累積され、Ｄｃ４〜０から出力される。従って、ＴＣ４７、ＴＣ４８、ＴＣ４９の直後にＤｃ４〜０から出力されるデータ１’，２’，３’は、以下の通りになる。
＜１’＞＝＜１＞＋＜２＞＋＜３＞
＜２’＞＝＜１＞＋＜２＞＋＜３＞＋＜４＞
＜３’＞＝＜１＞＋＜２＞＋＜３＞＋＜４＞＋＜５＞
【０１３１】
次に、タイミングＴＣ４１０の直後、データ１がＱＤＬＹに現れて減算器１０４のマイナス側に入力される。またこのとき、減算器１０４のプラス側の入力には、加算器１０３により、以下に示すデータが入力されている。
＜３’＞＋＜６＞＝＜１＞＋＜２＞＋＜３＞＋＜４＞＋＜５＞＋＜６＞
以上のことから、減算器１０４により、＜３’＞＋＜６＞−＜１＞の計算が行なわれ、その出力ＯＳＵＢには
＜４’＞＝＜２＞＋＜３＞＋＜４＞＋＜５＞＋＜６＞
が現れる。この値はＴＣ４１０でフリップフロップ１０５に格納され、Ｄｃ４〜０から出力される。
【０１３２】
以下同様にして、Ｄｂからの入力データを５個ずつ累積した値である
＜５’＞＝＜３＞＋＜４＞＋＜５＞＋＜６＞＋＜７＞
＜６’＞＝＜４＞＋＜５＞＋＜６＞＋＜７＞＋＜８＞
・・・
が、Ｄｃ４〜０から出力される。
【０１３３】
その後、この操作が続けられていき、ＴＣ４３３でフリップフロップ１０１からの出力を１９２番目のデータとしてフリップフロップ１０２ａおよび加算器１０３が取り込んだ後、再び０データが２クロック分入力されるので、この付近の出力値は
＜１９０’＞＝＜１８８＞＋＜１８９＞＋＜１９０＞＋＜１９１＞＋＜１９２＞
＜１９１’＞＝＜１８９＞＋＜１９０＞＋＜１９１＞＋＜１９２＞
＜１９２’＞＝＜１９０＞＋＜１９１＞＋＜１９２＞
となり、１ライン分の累積値の出力が終了する。なお、最初の０データと最後の０データがＤｂ２〜０から入力されるときは、フリップフロップ１０１は信号ＹＺＣＮＴを１にすることによりＯＲゲート１０６の出力が１になり、強制的にイネーブルとされる。
【０１３４】
以上のようにして、Ｄｃ４〜０からデータが出力される。この出力は、最初のデータがフリップフロップ１０１に入力されてから６クロック後に始まり、１クロックにつき１個ずつ、デスティネーション画像のＹ方向の画素数である１９２個だけ出力される。
【０１３５】
以上述べたように、Ｄｃ４〜０から出力される累積値のデータは、Ｄｂ２〜０から入力されるＸ方向に計数された拡大画像の黒画素数を倍率に応じてＹ方向に重複させ、さらに５つずつ累積したものとなっているので、平滑化のウインドウ中の黒画素数になる。さらに、最初に出力されるデータ１’と２’は、ウインドウの下の境界からはみ出したデータを白とした時の結果となっており、また最後に出力されるデータ１９１’と１９２’とは、ウインドウの上の境界からはみ出したデータを白とした時の結果となっているので、前述した境界処理も正しく行なわれていることがわかる。
【０１３６】
このようにしてＤｃ４〜０から出力される累積値のデータは、さらにコンパレータ１３により閾値レジスタ１４に保持されている閾値と比較され、２値化されて、デスティネーション画像の１画素が生成され、Ｄｄ０から拡大画像フレームメモリ３に出力される。
【０１３７】
次に、Ｙ方向ＤＤＡ計算部１６、元画像メモリ制御部１７の動作について説明する。これらの回路により、元画像フレームメモリ２からソース画像データを読み出すときのアドレスが生成される。前述のように、ソース画像データは１ラインずつ読み出されるため、アドレスはＹ方向に連続して生成される。また、Ｘ方向の計数値をＹ方向に拡大するための制御信号も生成される。
【０１３８】
まず、Ｙ方向ＤＤＡ計算部１６について説明する。Ｙ方向ＤＤＡ計算部１６は、Ｘ方向ＤＤＡ計算部１５と同様、前述のＤＤＡ計算によって残差を更新して残差符号を出力する。残差符号は、ＤＤＡの説明で述べたようにして、Ｙ方向への拡大に使われる。
【０１３９】
図３０は、本発明の第１の実施の形態においてＹ方向ＤＤＡ計算部の内部構成の一例を示すブロック図である。図中、１１１は初期値レジスタ、１１２は差分０レジスタ、１１３は差分１レジスタ、１１４，１１６はマルチプレクサ、１１５は加算器、１１７は残差フリップフロップである。この構成は、図２０に示したＸ方向ＤＤＡ計算部１５の内部構成と全く同じであるため、詳しい説明は省略する。
【０１４０】
この回路において、初期値レジスタ１１１、差分０レジスタ１１２、差分１レジスタ１１３、マルチプレクサ１１４、１１６、加算器１１５、残差フリップフロップ１１７は、それぞれ図２０の初期値レジスタ６１、差分０レジスタ６２、差分１レジスタ６３、マルチプレクサ６４，６６、加算器６５、残差フリップフロップ６７に対応する。また、ＩＤＤＡＹ、ＥＤＤＡＹ信号により、図２０のＩＤＤＡＸ、ＥＤＤＡＸ信号と同様、初期値の設定と残差の更新を制御し、残差符号がＳＹ出力から出力される。
【０１４１】
また、初期値レジスタ１１１、差分０レジスタ１１２、差分１レジスタ１１３は、外部から任意の値が設定可能であるとする。この例ではＹ方向の倍率も３倍であるので、Ｘ方向ＤＤＡ計算部のレジスタと同じ値が設定される。これらのレジスタに設定する値によって、Ｙ方向の倍率を任意に設定することができる。
【０１４２】
次に、元画像フレームメモリ２について説明する。元画像フレームメモリ２はアドレスＡａ１１〜０を入力して、ソース画像データをＤａ２〜０に読み出す。なお、元画像フレームメモリ２は読み出し動作のみが行なわれ、Ａａ１１〜０からアドレス信号が入力された時、対応するデータが１クロック後Ｄａ２〜０に読み出されるものとする。ここでは、ソース画像データの座標と、元画像フレームメモリ２のアドレスとの対応について説明する。
【０１４３】
ここでは、アドレス信号の上位６ビットであるＡａ１１〜６で表わされる符号なし数をＹｓ、下位６ビットであるＡａ５〜０で表わされる符号なし数をＸｓとしたとき、Ｄａ２からはその座標が（Ｘｓ，Ｙｓ）で表わされるソース画像データの１画素が、Ｄａ１からはその座標が（Ｘｓ＋１，Ｙｓ）で表わされる１画素が、またＤａ０からはその座標が（Ｘｓ＋２，Ｙｓ）で表わされる１画素が読み出されるものとする。但し、Ｘｓ＋１、またはＸｓ＋２が、ソース画像領域のＸアドレスの範囲を越えていた場合には、Ｄａ１またはＤａ０からは任意の値が読み出されるものとする。
【０１４４】
このような読み出し方は、元画像フレームメモリをデータの読み出しの単位が１ビットである６４ｗｏｒｄ×１６ｂｉｔの容量のメモリを４個用いることにより実現できる。すなわち、４個のメモリをそれぞれメモリ０、１、２、３とすると、画素のＸアドレスの下位２ビットが００の画素データをメモリ０、０１の画素データをメモリ１、１０の画素データをメモリ２、１１の画素データをメモリ３に格納する。この時、各メモリ共、その上位６ビットを画素のＹ座標、下位４ビットを画素のＸ座標の上位４ビットとするようなアドレスに１画素を格納する。このようなメモリに対して、アドレスＡａ１１〜０を与えてアクセスした時、Ｄａ２〜０には、Ａａ１とＡａ０入力の組合せに応じて以下のメモリからデータを読み出すようにする。
（１）Ａａ１＝０、Ａａ０＝０の時
Ｄａ２：メモリ０のアドレス（Ａａ１１〜２）のデータ
Ｄａ１：メモリ１のアドレス（Ａａ１１〜２）のデータ
Ｄａ０：メモリ２のアドレス（Ａａ１１〜２）のデータ
（２）Ａａ１＝０、Ａａ０＝１の時
Ｄａ２：メモリ１のアドレス（Ａａ１１〜２）のデータ
Ｄａ１：メモリ２のアドレス（Ａａ１１〜２）のデータ
Ｄａ０：メモリ３のアドレス（Ａａ１１〜２）のデータ
（３）Ａａ１＝１、Ａａ０＝０の時
Ｄａ２：メモリ２のアドレス（Ａａ１１〜２）のデータ
Ｄａ１：メモリ３のアドレス（Ａａ１１〜２）のデータ
Ｄａ０：メモリ０のアドレス（Ａａ１１〜２）＋１のデータ
（４）Ａａ１＝１、Ａａ０＝１の時
Ｄａ２：メモリ３のアドレス（Ａａ１１〜２）のデータ
Ｄａ１：メモリ０のアドレス（Ａａ１１〜２）＋１のデータ
Ｄａ０：メモリ１のアドレス（Ａａ１１〜２）＋１のデータ
このような構成は、容易に実現することができる。
【０１４５】
次に、元画像メモリ制御部１７について説明する。この回路では、前述したように、Ｙ方向ＤＤＡ計算部１６によって計算された残差の符号に応じてＹ座標を更新し、元画像フレームメモリ２のアドレスを生成する。また、デスティネーション画像の１ラインの生成後、次のＸ方向のウインドウ領域に応じて、次に読み出すソース画像のＸ座標を更新する。
【０１４６】
図３１は、本発明の第１の実施の形態において元画像メモリ制御部の内部構成の一例を示すブロック図である。図中、１２１はＹ座標初期値設定レジスタ、１２２はＸ座標初期値設定レジスタ、１２３はＸ座標最大値設定レジスタ、１２４はＹ座標カウンタ、１２５はＸ座標カウンタ、１２６はＡＮＤゲート、１２７はインバータ、１２８は＋１インクリメンタ、１２９は＋２インクリメンタ、１３０，１３１は比較器である。Ｘ座標初期値設定レジスタ１２２、Ｙ座標初期値設定レジスタ１２１、Ｘ座標最大値設定レジスタ１２３には、予めＸ座標、Ｙ座標の初期値およびＸ座標の最大値が設定されている。なお、図３１では省略したが、これらのレジスタには外部から任意の値を設定できるようになっており、元画像の一部分のみを設定することも可能である。
【０１４７】
Ｘ座標とＹ座標はそれぞれ、Ｘ座標カウンタ１２５、Ｙ座標カウンタ１２４によって生成される。Ｘ座標初期値設定レジスタ１２２、Ｙ座標初期値設定レジスタ１２１に格納されているＸ座標、Ｙ座標の初期値は、それぞれＬＤＸＳ信号、ＬＤＹＳ信号によってＸ座標カウンタ１２５、Ｙ座標カウンタ１２４にロードされる。また、Ｘ座標カウンタ１２５のカウントアップはＵＰＸＳ信号によって行なわれる。Ｙ座標カウンタ１２４のカウントアップは、ＵＰＹＳ信号と、Ｙ方向ＤＤＡ計算部１６からの残差の符号ＳＹの反転信号との論理積の信号によって行なわれる。残差の符号ＳＹの反転はインバータ１２７で行なわれる。また、論理積はＡＮＤゲート１２６で計算される。Ｙ座標カウンタ１２４、Ｘ座標カウンタ１２５の出力がアドレスＡａ１１〜０として出力される。
【０１４８】
Ｘ座標カウンタ１２５の出力は、さらに＋１インクリメンタ１２８で１だけ加算され、また、＋２インクリメンタ１２９で２だけ加算される。そして、比較器１３０，１３１でＸ座標最大値設定レジスタ１２３の内容と比較され、比較結果がＶＤＡ１，ＶＤＡ０信号として図２２に示す拡大／計数回路７２に出力される。これらの信号は、上述のようにデスティネーション画像の右端からはみ出した画素を強制的に０とするために用いられる。
【０１４９】
以下、Ｙ座標カウンタ１２４、Ｘ座標カウンタ１２５を中心にして、Ｙ座標、Ｘ座標が生成される時の動作を説明する。ここでまず、Ｙ座標を生成する時の動作について、Ｙ方向ＤＤＡ計算部１６の動作とともに説明する。
【０１５０】
図３２は、本発明の第１の実施の形態において元画像メモリ制御部の動作の一例を示すタイミングチャートである。図３２では、任意の１ラインを読み出す時の、Ｙアドレスを生成する動作を示している。但し、タイミングＴＣ５０において、前述の図２１に示したＸ方向データ拡大・計数部１１内のＭＰ累積回路７１による重複数の計算は終わっているものとする。
【０１５１】
まず、ＴＣ５２の手前で、ＩＤＤＡＹ、ＥＤＤＡＹ信号がともに１となるので、Ｙ方向ＤＤＡ計算部１６の残差データがＴＣ５２において初期化される。その後、ＩＤＤＡＹ信号だけが０になり、ＥＤＤＡＹ信号は１のままであるので、連続してＹ方向の残差が更新される。なお、残差はデスティネーション画像のＹ方向の画素数である１９２回繰り返して更新される。その後、ＥＤＤＡＹ信号は０となり、ＴＣ５５３で更新は終了する。
【０１５２】
これと同様に、ＴＣ５２の手前でＬＤＹＳ信号が１クロック期間１となるので、Ｙ座標カウンタ１２４には、Ｙ座標初期値設定レジスタ１２１の内容がロードされる。なお、この時のＵＰＹＳ信号の値は任意でよいものとする。その後、ＵＰＹＳ信号が１になる。一方、Ｙ座標カウンタ１２４のＵＰ入力には、Ｙ方向ＤＤＡ計算部で計算された残差符号ＳＹの反転値とＵＰＹＳ信号とからＡＮＤゲート１２６で論理積が計算されて入力されるので、それぞれのクロックの立ち上がりのタイミングにおける残差符号の値が０となる時だけ、カウンタの内容が更新される。
【０１５３】
なお、ＵＰＹＳ信号は、カウンタのカウント値がソース画像領域のＹ座標の最大値となった後に、０となる。図では、ＴＣ５５３の手前においてＹ座標が５４になっているので、この時に０になっている。このようにしてカウントされたＹ座標は、信号Ａａ１１〜６から元画像フレームメモリに出力される。
【０１５４】
以上の操作において、タイミングＴＣ５５からＴＣ５５３までの間はＸ座標は固定されており、この値が信号Ａａ５〜０から出力される。従って、Ｘ方向に連続した３ビットのソース画像データが、順番にＹ方向に読み出されていく。
【０１５５】
以上の結果、残差が負である時はＹ座標が更新されず、同じアドレスが３クロック分出力され続けるが、ソース画像データが読み出されるのは最初のクロックの時だけである。あるいは、３回読み出されるが、そのうちの１回しかＸ方向データ拡大・計数部１１に取り込まれない。
【０１５６】
次に、Ｘ座標を生成する時の動作について、図１８、図１９のタイミングチャートも参考にしながら説明する。上述の通り、元画像フレームメモリ２から１ライン分のデータが読み出されている時は、Ｘ座標は固定されている。従って、Ｘ座標カウンタは、１ライン分のデータの読み出し前に動作する。
【０１５７】
まず、最初の１ラインの読み出しの前に、１クロック期間だけＬＤＸＳ信号を１にすることによって、Ｘ座標初期値設定レジスタ１２２に設定されている初期値がＸ座標カウンタ１２５にロードされる。なお、この時のＵＰＸＳ信号の値は任意でよいものとする。この操作は、例えば、図１８のＴＳＸ０の中の１クロックを使って行なうことができる。
【０１５８】
その後、ＬＤＸＳ信号、ＵＰＸＳ信号はともに０に固定される。従って、最初のラインの読み出し時にＸアドレスを初期値に固定した状態で元画像フレームメモリ２からソース画像データが読み出される。
【０１５９】
ソース画像データを１ライン分読み出した後、次に読み出す１ラインの内容は、前述の通り２通りある。すなわち、全く同じ内容を再度読み出す場合と、Ｘ方向に１画素分ずらしたものを読み出す場合である。前者の場合には、ＵＰＸＳ入力は０のままとなり、Ｘ座標は更新されずに次の１ラインが読み出される。後者の場合には、次の１ラインを読み出す前に、１クロック期間だけＵＰＸＳ信号を１にすることによって、Ｘ座標カウンタ１２５に格納されているＸ座標を１だけインクリメントした後、次の１ラインが読み出される。ＵＰＸＳ信号を１にする操作は、例えば、前述のＭＰ累積部７１によって重複数を計算する間の１クロックを使って行なうことができる。
【０１６０】
前述のように、Ｘ方向に１画素分ずらしたラインを読み出すのは、Ｄａ２から入力されていたソース画素が、次のラインの処理に使われる平滑化のウインドウ中の拡大画素に使われなくなる場合である。すなわち、ある１ラインに対してＭＰ累積部７１で求められたＤａ２の重複数が１である時に、その次のラインを読み出す前にＸ座標をインクリメントすればよい。これは、前述の範囲Ｃ、Ｄに対するＭＰ累積部７１の説明で述べたことからもわかる。
【０１６１】
次に、以上述べた、ＬＤＸＳ信号、ＵＰＸＳ信号を生成する回路の一例について説明する。図３３は、本発明の第１の実施の形態において元画像メモリ制御部の制御信号を生成する回路の一例を示すブロック図である。図中、１４１は立ち上がり検出回路、１４２は比較器、１４３はＡＮＤゲート、１４４はＪＫフリップフロップ、１４５はフリップフロップである。立ち上がり検出回路１４１は、ＥＤＤＡＸ信号の立ち上がりを検出してＥＵＰ信号を出力する。比較器１４２は、ＭＰ累積回路７１から出力されるＤａ２の重複数を示すＭＰＣ２１〜２０が１か否かを判定し、１である場合にＥＱ１信号を出力する。これにより、１ライン前のＸ方向の計数範囲が図８（Ｂ）における範囲Ｃであることを検知し、次の計数範囲の設定時にはＸ方向にシフトさせる必要があることを認識する。この比較器１４２の出力はＡＮＤゲート１４３で立ち上がり検出回路１４１の出力であるＥＵＰ信号と論理積が計算され、ＪＫフリップフロップ１４４のＪ端子に入力される。これにより、１クロック分のパルスがＵＰＸＳ信号として出力される。一方、フリップフロップ１４５は、ＩＤＤＡＸ信号をラッチし、ＬＤＸＳ信号として出力する。
【０１６２】
図３４は、本発明の第１の実施の形態において元画像メモリ制御部の制御信号を生成する回路の動作の一例を示すタイミングチャートである。図３４に示すタイミングチャートは、最初のラインから３ライン分の処理を行なう時の、図３３の動作を示したものである。図では、Ｘ方向ＤＤＡ計算部１５で使用されるＩＤＤＡＸ、ＥＤＤＡＸ信号も示した。これらの信号は、図２４、図２５に示した通りに変化する。
【０１６３】
ＵＰＸＳ、ＬＤＸＳ信号とも、各ラインを入力する前に、ＩＤＤＡＸ信号、ＥＤＤＡＸ信号をもとにして生成される。まず、Ｘ方向ＤＤＡ計算部１５のＩＤＤＡＸ信号は、前述のとおり拡大操作の最初で１回だけ１になるので、ＬＤＸＳ信号に使うことができる。図３３では、この信号をフリップフロップ１４５で１クロック遅延させたものをＬＤＸＳ信号に使用している。従って、ＬＤＸＳ信号は図３４のタイミングＴＣ６２で１クロックだけ１となり、Ｘ座標が初期化される。このとき、ＴＣ６２でＪＫフリップフロップ１４４の出力は０になるので、Ｘ座標は初期値に固定された状態で、最初のラインが読み込まれる。
【０１６４】
一方、ＵＰＸＳ信号は、ＥＤＤＡＸ信号をもとにして生成される。まず、立ち上がり検出回路１４１によって、ＥＤＤＡＸ信号が立ち上がった時に、ＥＵＰ信号は１クロックだけ１になる。従って、最初のラインでは、ＥＤＤＡＸ信号はタイミングＴＣ６１〜ＴＣ６３まで１になっているが、ＥＵＰ信号はＴＣ６１のみで１になっている。他のラインでも、ＥＵＰ信号はＥＤＤＡＸ信号が立ち上がるＴＣ６１１、ＴＣ６２１、ＴＣ６３１で１クロックだけ１になっている。
【０１６５】
また、Ｄａ２の重複数であるＭＰＣ２１〜２０は、コンパレータ１４２で値１と比較され、１である時だけＥＱ１出力は１になる。ＥＱ１出力は、上記ＥＵＰ信号とともにＡＮＤゲート１４３に入力されているので、ＴＣ６１、ＴＣ６１１、ＴＣ６２１、ＴＣ６３１だけでＥＱ１信号の論理に従ってＥＵＰ信号が制御され、ＡＮＤゲート１４３から出力される。
【０１６６】
ここで、ＭＰ累積部７１の説明で述べたように、重複数を求めるカウンタは、それぞれＥＤＤＡＸ信号が立ち下がるタイミングの１クロック後でリセットされる。従って、ＥＵＰ信号が１になるタイミングでは、前のラインの処理に使った重複数を保持した状態である。そのため、１つ前のラインの処理時に、ＭＰＣ２１〜２０が１である時にだけ、ＡＮＤゲート１４３は１クロックだけ１になる。ここでは、ライン２の時にＭＰＣ２１〜２０が１であるので、タイミングＴＣ６２１で１クロックだけＡＮＤゲートは１を出力する。
【０１６７】
ＡＮＤゲートの出力は、ＪＫフリップフロップ１４４のＪ入力に入力されているため、ＴＣ６２１の後にＪＫフリップフロップのＱ出力は１になる。一方この出力はＫ入力に入力され、次のクロックで再度Ｑ出力は０になる。これにより、ＵＰＸＳ出力はタイミングＴＣ６２２で１クロックだけ１になる。従って、ライン２の入力が終了した後、ＵＰＸＳ信号が１クロック期間だけ１になるので、Ｘ座標が１だけインクリメントされて、ライン３が読み込まれる。
【０１６８】
以下、同様にして、ＭＰＣ２１〜２０が１である時に、次のラインが読み込まれる前にＸ座標が１だけインクリメントされる。例えば、図８（Ｂ）の範囲Ｃを計数の対象とするラインの入力が終わった時、ＭＰＣ２１〜２０が１になっているので、同様にしてＸ座標がインクリメントされ、次の入力は１画素分ずれたソース画像データとなる。
【０１６９】
Ｄａ２〜０に読み出される３ビットの画像データに、右の境界をはみ出しているデータが含まれているときの処理について述べる。前述のように、はみ出した画像データは０として扱われる。この処理は、拡大／計数回路７２で行なわれ、Ｄａ１、Ｄａ０がともにソース画像領域からはみ出している場合には、ＶＤＡ１、ＶＤＡ０が０となり、図２２のＡＮＤゲート８６、８７でＤａ１、Ｄａ０から読み出されたデータのかわりに０がソース画像データとして処理される。また、Ｄａ０がソース画像領域からはみ出している場合には、ＶＤＡ０が０となり、図２２のＡＮＤゲート８７でＤａ０から読み出されたデータのかわりに０がソースデータとして処理される。
【０１７０】
このとき、ＶＤＡ１、ＶＤＡ０信号は図３１に示す回路で生成される。以下、ＶＤＡ１、ＶＤＡ０信号を生成する回路の動作について説明する。まず、カウンタ１２５によって出力されるソース画像データのＸ座標は＋１インクリメンタ１２８、＋２インクリメンタ１２９に入力される。ここで、このＸ座標をＸｓとすると、前述の通り、元画像フレームメモリからＤａ２〜０に入力される画像データのＸ座標は、Ｘｓ、Ｘｓ＋１、Ｘｓ＋２となる。従って、＋１インクリメンタ１２８、＋２インクリメンタ１２９によって、Ｘｓの値からＸｓ＋１、Ｘｓ＋２が生成される。
【０１７１】
そしてこれらの出力値は、比較器１３０、１３１でＸ座標最大値レジスタに設定されているＸ座標の最大値と比較される。各比較器１３０，１３１では、Ｘｓ＋１またはＸｓ＋２の値がＸ座標の最大値より大きい時だけ０が出力されるので、各座標が右の境界をはみ出しているときだけＶＤＡ１、ＶＤＡ０信号に０が出力される。なお、前述のように、Ｘ座標はソース画像データの各ラインの入力前に確定しているので、ＶＤＡ１、ＶＤＡ０信号もラインの入力前に確定する。以上の結果、右の境界をはみ出した画素に対して、ＶＤＡ１、ＶＤＡ０信号は０になるので、前述のように拡大／計数回路７２によって０として処理される。
【０１７２】
以上述べたように、元画像メモリ制御部１７、Ｙ方向ＤＤＡ計算部１６によって元画像フレームメモリ２のアドレスが更新されるので、１ラインずつＤａ２〜０信号にソース画像データが読み出される。なお、ここで述べたＹ方向ＤＤＡ計算部１６の制御信号（ＩＤＤＡＹ、ＥＤＤＡＹ）、元画像メモリ制御部１７の制御信号（ＬＤＹＳ、ＵＰＹＳ）は、それぞれ所定のタイミングに従って、全体制御部１９によって生成されるものとする。
【０１７３】
次に、拡大画像メモリ制御部１８について説明する。まず、拡大画像フレームメモリ３について簡単に説明する。拡大画像フレームメモリ３には、図１に示した通り、データＤｄ０、アドレスＡｂ１５〜０、書き込み制御信号ｗｅがそれぞれ入力されている。さらに、ＣＬＫ信号も入力されているものとする。
【０１７４】
拡大画像フレームメモリ３には１ビット単位でデータが書き込まれる。このとき、クロックの立ち上がりにおいて書き込み制御信号ｗｅが１であれば、その時点でＡｂ１５〜０に入力されているアドレスに、Ｄｄ０から入力されている１ビットデータが書き込まれる。また、クロックの立ち上がりにおいてｗｅが０であれば、書き込みは行なわれない。
【０１７５】
図３５は、本発明の第１の実施の形態において拡大画像メモリ制御部の内部構成の一例を示すブロック図である。図中、１５１，１５２はレジスタ、１５３はＹ座標カウンタ、１５４はＸ座標カウンタである。ここで、拡大画像フレームメモリ３のアドレスＡｂ１５〜０には、その上位８ビットＡｂ１５〜８がＹ座標、下位８ビットＡｂ７〜０がＸ座標であるようなデスティネーション画素が格納されるものとする。なお、ここではタイミングチャートを用いた説明は省略する。
【０１７６】
レジスタ１５１，１５２は、それぞれＹ座標、Ｘ座標の初期値を格納する。なお、図３５では省略したが、レジスタ１５１，１５２には外部から任意の値を設定できるようになっており、Ｙ座標、Ｘ座標の初期値が予め設定される。
【０１７７】
Ｙ座標カウンタ１５３はＹ座標をカウントするカウンタであり、Ｘ座標カウンタ１５４はＸ座標をカウントするカウンタである。それぞれのカウンタのＬＤ、ＵＰ入力は、元画像メモリ制御部１７で説明したＹ座標カウンタ１２４、Ｘ座標カウンタ１２５のＬＤ、ＵＰ入力と同じ機能をもつ。
【０１７８】
まず、Ｘ座標カウンタ１５４によりＸ座標が変化していく様子について説明する。ここではまず、最初のラインのデスティネーション画像データがＤｄ０に出力される前に、ＬＤＸＤ信号が１クロック期間１となり、レジスタ１５２に保持されているＸ座標の初期値がＸ座標カウンタ１５４にロードされる。ＬＤＸＤ信号には、例えばＩＤＤＡＸ信号をそのまま入力することができる。
【０１７９】
その後、各ラインの画像データが出力される前に、ＵＰＸＤ信号が１クロック期間だけ１となり、Ｘ座標カウンタの内容が１ずつインクリメントされる。ＵＰＸＤ信号には、例えば、前述の図３３に示したＥＵＰ信号をそのまま使うことができる。このときには、最初のラインの画像データが出力される前にはＥＵＰ信号はＩＤＤＡＸ信号と同時に１になるので、初期化されたＸ座標カウンタの値はインクリメントされない。このように、Ｘ座標カウンタ１５４は各ラインの画像データが出力される前に変化するので、画像データが出力されている途中はカウンタ値は固定されている。
【０１８０】
次に、Ｙ座標カウンタ１５３によりＹ座標が変化していく様子について説明する。ここではまず、各ラインのデスティネーション画像データの生成が開始される前に、ＬＤＹＤ信号が１クロック期間だけ１となり、レジスタ１５１に格納されているＹ座標の初期値がＹ座標カウンタ１５３にロードされる。ＬＤＹＤ信号には、例えばＥＤＤＡＸ信号をそのまま入力することができる。
【０１８１】
次に、各ラインの最初のデータが出力されている時は、ＵＰＹＤ信号を１にする。ここで、デスティネーション画像データは、前述の通り１クロックに１個ずつＤｄ０に出力される。従って、各ラインの最初のデータが出力されると同時に、ＵＰＹＤ信号を１に立ち上げる。このことにより、Ｙ座標カウンタは１クロックごとに、初期値から順番に１ずつインクリメントしていく。また、各ラインの最初のデータが出力されると同時にｗｅ信号を１にすることによって、最初のデータから順番に１ライン分のデスティネーション画像データが拡大画像フレームメモリ３に書き込まれていく。
【０１８２】
１ラインの最後のデータが書き込まれた後、ｗｅ信号を０にする。このことにより、次のラインのデータが出力されるまで書き込みは行なわれない。このとき、同時にＵＰＹＤ信号も０にすることにより、Ｙ座標カウンタ１５３のインクリメントも止まる。
【０１８３】
以上の操作を繰り返すことにより、デスティネーション画像データが、１画素ずつ所定の拡大画像フレームメモリ３のアドレスに書き込まれていく。なお、ここで述べた拡大画像フレームメモリの制御信号（ｗｅ）、拡大画像メモリ制御部の制御信号（ＬＤＹＤ、ＵＰＹＤ、ＬＤＸＤ、ＵＰＸＤ）は、それぞれ所定のタイミングに従って、全体制御部１９によって生成されるものとする。
【０１８４】
以上述べたように、それぞれの回路に含まれる制御信号を、全体制御部１９によって上述した手順でコントロールすることにより、元画像フレームメモリ２に格納されたソース画像データを拡大・平滑化して、デスティネーション画像データを生成して拡大画像フレームメモリ３に書き込むことができる。なお、上で述べた手順に従って各制御信号を生成する全体制御部１９は、例えば状態遷移を行なう順序回路などによって容易に実現される。
【０１８５】
このように、本発明の第１の実施の形態によれば、一旦画素を重複させた拡大画像を作成してから平滑化をかけることなく、ソース画像から直接平滑化結果を得るようにしたため、少ない回路規模で拡大・平滑化を行なうことができる。また、各ラインの生成前に一度に重複数を求めるようにしたため、Ｘ方向の黒画素数をほぼ１クロックに１回求められ、高速に拡大・平滑化を行なうことができる。
【０１８６】
なお、この第１の実施の形態では、Ｙ方向の拡大をＤｂ２〜０信号を重複させて行なっているが、元画像フレームメモリ２からソース画像データを読み出す時にＹ方向に画像データを重複させてＸ方向データ拡大・計数部１１に入力することもできる。
【０１８７】
また、図２３に示したＭＰ累積部７１では、シフトレジスタに格納されている残差符号を別のシフトレジスタに読み出し、読み出した値からカウンタによってカウントするようにしたが、カウンタにダウンカウント機能を追加し、各ライン生成前に残差符号を１つ読み出すごとに適当なカウンタをインクリメントするとともに、不要になった残差符号に対応したカウンタをデクリメントするように構成することもできる。この構成により、一層高速に重複数を求めることができる。
【０１８８】
さらに、ＭＰ累積部７１において、カウンタを２組もち、１つのラインの生成中に使用されていないカウンタに対して重複数を求めるようにし、次のラインの生成時には、カウンタ出力を切り替えてそのカウンタにより求められた重複数を使用するようにしてもよい。この構成によって、ラインの生成と同時に重複数を求めることができるようになるので、処理を高速化することができる。
【０１８９】
次に、本発明の第２の実施の形態について説明する。この第２の実施の形態では、３倍の拡大後タップ数５で平滑化する場合に加えて、２倍の拡大後タップ数３で平滑化することができるようにした構成例を示す。
【０１９０】
図３６は、本発明の画像拡大処理装置の第２の実施の形態を示すブロック図である。図中の符号は図１と同様である。上述の第１の実施の形態と異なる部分のみ説明する。この第２の実施の形態では、上述の第１の実施の形態を表わす図１と比較して、外部からタップ数を制御するＴＡＰ入力が新たに加わっており、また全体制御部１９、Ｙ方向データ累積部１２の回路構成が異なる。ここで、ＴＡＰ入力が１の時にタップ数は５、０の時にタップ数は３であるとする。
【０１９１】
倍率が２倍、タップ数が３の時には、ＴＡＰ入力には０が入力されるとともに、Ｘ方向ＤＤＡ計算部１５、Ｙ方向ＤＤＡ計算部１６の、初期値レジスタ６１，１１１、差分０レジスタ６２，１１２、差分１レジスタ６３，１１３には、前述のＤＤＡの原理の説明で、ＳＳＩＺＥ＝１、ＤＳＩＺＥ＝２としたときの初期値、差分値が格納される。すなわち、初期値レジスタには０、差分０レジスタには−２、差分１レジスタには＋２が格納される。従って、これらのＤＤＡ計算部の残差は、以下の通りに更新されていく。
０、−２、０、−２、０、−２、・・・・・
このように、残差が２回に１回０または正となるので、Ｘ、Ｙ方向に２倍の拡大が行なわれる。さらに、閾値レジスタ１４にも、タップ数３に対応した閾値が外部より格納されるものとする。
【０１９２】
以上の設定で、第１の実施の形態と同様の順番で拡大・平滑化処理が行なわれる。以下に、第１の実施の形態との違いに重点をおきながら、このときの動作を説明する。まず、Ｘ方向データ拡大・計数部１１、およびＸ方向ＤＤＡ計算部１５の動作について説明する。
【０１９３】
各ラインのソース画像データを入力する前に、第１の実施の形態と同様、ＭＰ累積部７１によって、平滑化のウインドウの内部にあるデスティネーション画像データを生成するための各ソース画素の重複数が計算される。この時にも、ＭＰ累積部７１の制御信号は、第１の実施の形態と同じ順番で生成される。但し、制御信号の幅など、タップ数に対応した制御量は以下に述べるように異なったものとなる。
【０１９４】
まず、最初のラインに対する重複数の計算を行なう時には、Ｘ方向ＤＤＡ計算部により２個だけ残差符号が計算される。すなわち、３×３ウインドウの中心がデスティネーション画像領域の左の境界上にある場合には、Ｘ方向に２画素だけが画像領域中にあるため、この個数分の残差符号だけを計算する。そこで、まずＥＤＤＡＸ信号、ＥＳＨＩＦ信号は、２クロック期間だけ１となり、図２３のフリップフロップ９１ａ、９１ｂにそれぞれ残差符号が格納される。
【０１９５】
その後、バレルシフタ９７のシフト量には、Ｑｓｂの値がフリップフロップ９２ｅに格納されるように３が設定された上で、Ｐｓが１となってフリップフロップ９２ａ〜９２ｅに残差が格納される。その後、残差がＱｅから読み出されるとともに、ＥＵＰ信号が２クロック期間だけ１となり、ＭＰＣ２１〜２０、ＭＰＣ１１〜１０にＤａ２、Ｄａ１に対する重複数が求められる。
【０１９６】
次のラインの処理からは、第１の実施の形態と同様、残差符号を１回ずつ更新しながらＭＰ累積部７１で重複数の計算を行なっていく。このときには、３つの残差が使われるため、Ｑｓｃの値がフリップフロップ９２ｅに格納されるようにＢＳＣ信号を２とした上で残差をフリップフロップ９２ａ〜９２ｅに格納する。
【０１９７】
また、タップ数は３であるため、平滑化のウインドウ内の画素数も３である。従って、ＥＵＰは３クロック期間だけ１となり、カウンタ９５ａ〜９５ｃで重複数がカウントされる。
【０１９８】
また、元画像フレームメモリ２からの入力データは、第１の実施の形態と同様、Ｄａ２〜０からＸ方向に連続した３ビット分が入力される。ここで、倍率は２倍でタップ数が３であるから、Ｄａ２〜０からの３ビットの入力のうち、実際にはＤａ２〜１だけしか使用されない。しかしながら、Ｄａ０から３ビット目のデータが入力されても、正しい動作が行なわれる。
【０１９９】
すなわち、上で述べたように、タップ数が３の時には、ＥＵＰは最大３クロックだけ１となり、また倍率は２倍であるため、カウンタ９５ａまたはカウンタ９５ｂのどちらかが必ず２回カウントされる。従ってカウンタ９５ｃはカウントされず、このカウンタの出力は必ず０になる。この結果、図２２に示す拡大／計数回路７２のうち、ＡＮＤゲート８３の出力であるＰｃａ０は必ず０となるため、ＳＵＭ２〜０出力はＤａ０からの入力値には影響されない。
【０２００】
また、Ｘ方向データ拡大・計数部１１から１ライン分の計数データが出力される時には、前述のＹ方向の境界処理を行なうため、各ライン出力の最初と最後にＤｂ２〜０から１クロックずつ０データが出力される。従って、上述の第１の実施の形態ではＢＤＸ信号は２クロックずつ１になっていたが、この第２の実施の形態では１クロックずつ１となるように制御される。
【０２０１】
次に、Ｙ方向データ累積部１２について説明する。図３７は、本発明の第２の実施の形態においてＹ方向データ累積部の内部構成の一例を示すブロック図である。図中、図２８と同様の部分には同じ符号を付して説明を省略する。１０７はマルチプレクサである。
【０２０２】
第１の実施の形態のＹ方向データ累積部１２を表わす図２８との違いは、遅延を行なうための３番目のフリップフロップ１０２ｃからの出力と５番目のフリップフロップ１０２ｅからの出力が、マルチプレクサ１０７でマルチプレクスされて、減算器１０４のマイナス側に入力されていることである。そしてタップ数が３の時には、ＴＡＰ入力が０であるため、フリップフロップ１０２ｃからの出力が減算器１０４に入力される。この結果、リセット後にＤｂ２〜０から１ライン分の計数データが入力されてきた時、最初のデータが入力された時より３クロック後にＯＤＬＹ信号にデータが出力されるようになる。このため、フリップフロップ１０５には入力データ３個分の計数結果が累積される。従って、Ｄｃ４〜０からは、３×３ウインドウ領域内の黒画素数が出力される。
【０２０３】
なお、元画像メモリ制御部１７、Ｙ方向ＤＤＡ計算部１６、拡大画像メモリ制御部１８は、第１の実施の形態と同じ手順で制御されるため、説明は省略する。全体制御部１９は、ＴＡＰ入力が０、すなわち倍率が２倍、タップ数が３のときには、以上述べた手順により各制御信号を制御するように、例えば順序回路などを変更すればよい。
【０２０４】
以上のことより、第１の実施の形態と同様、ソース画像データを２倍の倍率で拡大し、３×３ウインドウによって平滑化したデスティネーション画像データを得ることができる。
【０２０５】
倍率が３倍、タップ数が５の時には、ＴＡＰ入力には１が入力されるとともに、Ｘ方向ＤＤＡ計算部１５、Ｙ方向ＤＤＡ計算部１６の、初期値レジスタ６１，１１１、差分０レジスタ６２，１１２、差分１レジスタ６３，１１３、閾値レジスタ１４には、第１の実施の形態と全く同じ値が設定される。また、この時の全体制御部１９の動作も、第１の実施の形態と全く同じであり、Ｙ方向データ累積部１２も、図３７に示す回路においてフリップフロップ１０２ｅの出力がマルチプレクサ１０７によって減算器１０４に入力されるため、図２８の回路と同じ動作を行なう。従って、この場合の動作は、第１の実施の形態と全く同じとなり、ソース画像データを３倍の倍率で拡大し、５×５ウインドウによって平滑化したデスティネーション画像データを得ることができる。
【０２０６】
なお、全体制御部１９の構成としては、例えば、上に述べた２通りの制御信号（倍率２倍、タップ数３と、倍率３倍、タップ数５）を生成する順序回路をそれぞれ独立に持ち、ＴＡＰ入力に応じて、マルチプレクサなどでそれぞれの回路が生成する制御信号を切り替えるようなものが考えられる。
【０２０７】
以上のようにして、全体制御部とＹ方向データ累積部にわずかの回路を追加するだけで、２通りの倍率とタップ数に対応する拡大・平滑化回路を構成することができる。
【０２０８】
なお、図２３に示したＭＰ累積回路７１は、例えば倍率が４倍、タップ数が９などの場合にも、１ビットフリップフロップの数とカウンタのビット数を増やすだけで、実現できる。すなわち、ソース画素から直接重複数を得る構成になっているため、このような大きい倍率に対しても、カウンタは３個で済み、回路規模を小さくすることができる。
【０２０９】
従来の技術でも述べたように、一般に倍率が大きいほど大きいタップ数が使用される。本発明は、この傾向を利用して、同一の回路構成で、倍率が小さい時には小さいタップ数、また倍率が大きい時には大きいタップ数に効率的に対応できるような構成をもつ。しかしこれに限らず、倍率とタップ数を独立して設定できるように構成してもよい。
【０２１０】
以上述べたように、この第２の実施の形態の構成によれば、小さい回路規模で、２通りの倍率とタップ数とを使って画像の拡大・平滑化処理を行なうことができる。
【０２１１】
なお、この第２の実施の形態では、倍率とタップ数の２通りの組合せについて述べたが、３通り以上の組合せについても考えることができる。また、組み合わせ数が多い場合には、それぞれデコード回路を介して選択するように構成すればよい。
【０２１２】
また、本実施例では、Ｘ方向ＤＤＡ計算部１５、Ｙ方向ＤＤＡ計算部１６の、初期値レジスタ６１，１１１、差分０レジスタ６２，１１２、差分１レジスタ６３，１１３、閾値レジスタ１４には、倍率とタップ数とに応じて外部から値が設定されるようにしたが、各レジスタを倍率とタップ数との組合せに応じて複数個持ち、それぞれのレジスタには倍率やタップ数に応じた固定値を持たせ、ＴＡＰ信号のような外部からの選択信号により、マルチプレクサで選択されるようにしてもよい。この構成にすることで、より高速にタップ数と倍率の切替えを行なうことができる。
【０２１３】
次に、本発明の第３の実施の形態について説明する。この第３の実施の形態は、第１の実施の形態よりも、さらに高速に拡大・平滑化するためのものである。拡大・平滑化を行なう時のソース画像やデスティネーション画像が大きい時には、そのデータ量が多くなるので、元画像フレームメモリや拡大画像フレームメモリにはＤＲＡＭが使われることが多い。ところが、一般にＤＲＡＭはそのアクセスタイムやサイクルタイムが比較的大きく、データを読み出したり書き込んだりするのに時間がかかる。この結果、第１の実施の形態を適用する時に、クロックの１サイクルに要する時間を小さくできない。このように、メモリのアクセスタイムによって拡大・平滑化処理の高速化が妨げられることがある。さらに、メモリのアクセス単位がワードやバイトであることが多く、１ワードや１バイトに複数の画素データが格納される。上述の第１の実施の形態における処理では、たかだか１バイト中の３ビットしか使用しないため、各ラインごとの処理のたびに同じバイトやワードを繰り返し読み込むことになって処理速度は低下する。このため、アクセスタイムが高速なバッファメモリを通して元画像フレームメモリ２、および拡大画像フレームメモリ３とデータを入出力することにより、高速な入出力が実現できる。しかし、バッファメモリは高速であるが高価であるため、その効率的な利用が望まれるところである。
【０２１４】
元画像フレームメモリ２からデータを読み出す時は、まず数ライン分のソース画像データをバッファメモリに読み出す（このときバッファメモリを元画像バッファメモリと呼ぶ）。そして、元画像バッファメモリの内容を拡大・平滑化回路１に入力する。
【０２１５】
一方、前述のように、第１の実施の形態または第２の実施の形態によれば、ソース画像データの同一のラインが複数回読み出される。従って、一度ＤＲＡＭから元画像バッファメモリに読み出した数ライン分のデータを、拡大・平滑化回路に複数回入力することができる。従って、ＤＲＡＭからの読み出し回数を減らすことができ、かつ拡大・平滑化回路には元画像バッファメモリから高速にデータを入力できるので、処理を高速化することができるようになる。
【０２１６】
拡大画像フレームメモリ３にデータを書き込む時は、例えば１６ライン分のデスティネーション画像データを生成し、まずバッファメモリ（このときバッファメモリを拡大画像バッファメモリと呼ぶ）に格納する。拡大画像バッファメモリからデスティネーション画像データを格納するＤＲＡＭへは、例えばＸ方向に連続する１６ビット単位でデータが書き込まれる。従って、拡大画像バッファメモリ３に１６ライン分のデスティネーション画像データが書き込まれた後、ＤＲＡＭへ書き込むことにより、ＤＲＡＭへの書き込み回数を減らすことができる。また、拡大画像バッファメモリには高速にデータを書き込めるので、処理を高速化することができるようになる。
【０２１７】
このように、アクセスタイムの短い元画像バッファメモリ、および拡大画像バッファメモリを設けることにより、クロックの１サイクルに要する時間を短縮することが可能となり、拡大・平滑化処理を一層高速にすることができる。例えば、拡大・平滑化回路１を１つのＬＳＩに集積する場合、元画像バッファメモリ、拡大画像バッファメモリは、同じＬＳＩ上に作りこむことで、拡大・平滑化回路１から高速にアクセスすることができるようになる。
【０２１８】
しかしながら、この場合は、元画像バッファメモリ、拡大画像バッファメモリを他の回路とともにＬＳＩ中に作成することになるので、大きい面積を占有することができず、各バッファメモリの容量は限られてしまう。この結果、ソース画像データのＹ方向の幅が大きい場合、１ライン分のソース画像データが元画像バッファメモリの容量を越えてしまう場合がある。
【０２１９】
このような場合、第１の実施の形態または第２の実施の形態の拡大・平滑化回路では１ライン分のデータの単位で入力する構成になっているので、以下の手順でデータが入力されることになる。まず、ＤＲＡＭから１ライン中一部のデータを元画像バッファメモリに読み出して拡大・平滑化回路１に供給する。さらにＤＲＡＭから１ラインの残りのデータを元画像バッファメモリに読み出して、拡大・平滑化回路１に供給する。このとき、元画像バッファメモリに格納されていたデータは上書きされてしまうので、次に同じ１ラインのデータを拡大・平滑化回路１に供給するときには、再度ＤＲＡＭから読み出しを行なう必要がある。この結果、ＤＲＡＭからデータを読み出す回数は、元画像バッファメモリがないときと同じとなる。
【０２２０】
また、デスティネーション画像データのＹ方向の幅が大きい場合、１６ライン分のデスティネーション画像データが拡大画像バッファメモリの容量を越えてしまう場合もある。このような場合、第１の実施の形態または第２の実施の形態の拡大・平滑化回路１では１ライン分のデータの単位で出力する構成になっているので、以下の手順でデータが出力されることになる。
【０２２１】
まず、拡大・平滑化回路によって１ライン分のデータを生成しながら、拡大画像バッファメモリに書き込む。ここで、２ライン分のデータ生成後、拡大画像バッファメモリの容量が一杯になったと仮定すると、拡大画像バッファメモリのデータがＤＲＡＭに書き込まれる。このときは、Ｘ方向に連続した２ビット単位でＤＲＡＭに書き込まれる。
【０２２２】
ここで、ＤＲＡＭとは１６ビット単位でアクセスすることを仮定しているので、アクセスした１６ビットの中にある他のデータを書き換えないように、一旦１６ビットデータをＤＲＡＭから読み出し、このデータのうち拡大画像バッファメモリの２ビットの位置に相当するデータだけを書き換えた後、ＤＲＡＭに書き込みを行なうといった手順（リードモディファイライト）を行なわなければならない。この結果、１回の書き込みで２回ＤＲＡＭにアクセスする必要があり、拡大画像バッファメモリがないときと同じアクセス回数となる。
【０２２３】
さらに、ソース画像データの大きさが同じでも、拡大の倍率が大きい時には、１ラインの長さも増加するので、拡大画像バッファメモリに収まるライン数はさらに減少する。この結果、ＤＲＡＭのアクセス回数はさらに増加する。
【０２２４】
以上のように、ＤＲＡＭとバッファメモリとのアクセス回数が増加してしまうと、結果的に拡大・平滑化回路全体の動作速度に影響を及ぼすため、速度を向上することができなくなる。
【０２２５】
従って、この第３の実施の形態では、デスティネーション画像をＹ方向にいくつかのブロックに分割し、それぞれのブロック単位に第１の実施の形態とほぼ同様の手順で拡大・平滑化画像を生成することとしている。従って、１ラインのデータ量が制限されるので、十分なライン数のデータが元画像バッファメモリ及び拡大画像バッファメモリに収まるようになり、上述のようなＤＲＡＭへのアクセス回数の増加が抑えられる。
【０２２６】
この第３の実施の形態における説明では、第１の実施の形態と同様に倍率３倍でタップ数が５の時を考える。また画像のサイズも、第１の実施の形態と同様に、ソース画像データが６４×６４画素、デスティネーション画像データが１９２×１９２画素とする。
【０２２７】
図３８は、本発明の第３の実施の形態においてデスティネーション画像を３つのブロックに分割する場合の説明図である。ここでは、デスティネーション画像データは、Ｙ方向に６４個の画素からなるブロックに分割するものとし、１９２画素のデスティネーション画像データは図３８（Ａ）に示すように３つのブロック（ブロック１〜３）に分割する。
【０２２８】
図３８（Ｂ）は、この第３の実施の形態でデスティネーション画像が生成される順番の説明図である。図３８（Ｂ）で、ハッチングされた領域は、拡大・平滑化により生成される画像の１単位を表わしており、それぞれＸ方向に１画素、Ｙ方向に６４画素からなっている。１つの領域は、第１の実施の形態において１ラインを生成する手順とほぼ同じ手順によって生成される。この実施の形態ではこの領域、およびこの領域を生成する時に使われるソース画像データのことを単に１ラインと呼ぶこともある。
【０２２９】
デスティネーション画像は以下の順番で生成される。
（１）ブロック１のデスティネーション画像を、領域１６１、１６２、・・・、１６３の順番で生成する。
（２）ブロック２のデスティネーション画像を、領域１６４、・・・、１６５の順番で生成する。
（３）ブロック３のデスティネーション画像を、領域１６６、・・・、１６７の順番で生成する。
【０２３０】
ここで、各ブロックのデスティネーション画像データは、第１の実施の形態における１つのデスティネーション画像データを生成する手順とほぼ同じ手順によって生成される。従って、この場合には、第１の実施の形態とほぼ同じ手順が、異なったパラメータで３回繰り返されることによって、１つのデスティネーション画像データが得られる。
【０２３１】
図３９は、本発明の第３の実施の形態においてブロックに分割されたデスティネーション画像を得るときに使用されるソース画像のブロックの一例を示す説明図である。デスティネーション画像の各ブロックのデータを生成するために、ソース画像領域も同様にＹ方向に３分割され、各領域のデータが１ラインずつ入力されて拡大・平滑化される。ところが、ここで平滑化処理を行なうために、ソース画像データは隣り合う領域でオーバーラップさせて入力する必要がある。
【０２３２】
すなわち、図３８のデスティネーション画像の各ブロックを生成するために、ソース画像を図３９（Ａ）に示したような３つのブロックに分割する必要がある。なおこの図でそれぞれのブロックには、ブロック１、２、３という名前をつけて、図３８との対応を示した。また、ソース画像の各ブロックがオーバーラップしていることを示すために、各ブロックにはハッチングを施し、隣接するブロックのハッチングを異ならせた。
【０２３３】
また、図３９（Ｂ）は、各ブロックが入力される順番の説明図である。図３９（Ｂ）でハッチングされた領域は、入力される１ライン分のデータを示したものであり、第１の実施の形態と同様、Ｘ方向に３画素、Ｙ方向にブロックの画素数だけのデータで構成される。ただし、領域１７２，１７４，１７６は、最も左のデータだけがソース画像領域に入っている。
【０２３４】
ブロック１のデスティネーション画像データを生成する時には、まず領域１７１の１ラインが入力され、第１の実施の形態とほぼ同様にして拡大・平滑化が行なわれる。次のライン入力には、第１の実施の形態と同様に、ＭＰ累積部７１で求められる重複数の条件に応じて、領域１７１のデータが再度使用されるか、または領域を１画素分右にずらした領域が使用される。このようにして拡大・平滑化を行ないながら、領域１７２までのデータが入力される。
【０２３５】
その後、ブロック２、ブロック３のデスティネーション画像データを生成する時には、領域１７３〜１７４、領域１７５〜１７６が同様に入力される。
【０２３６】
次に、ソース画像データの各ブロックがオーバーラップすることを説明するために、上下の境界にある画素データを生成する場合に注目しながら、デスティネーション画像の各ブロックのデータを生成する様子について述べる。
【０２３７】
ここでまず、説明を簡単にするために、拡大・平滑化の手順を、ソース画像データが拡大される手順、拡大画像に対して平滑化が行なわれる手順に分けて説明を行なう。まず拡大画像に対して平滑化が行なわれる手順から、１ブロックの画像データを生成する時に使われる拡大画像データについて説明する。
【０２３８】
前述したように、拡大・平滑化した画像データを得るためには、拡大画像に対して平滑化のウインドウ操作が行なわれ、ウインドウ領域の中心に位置するデスティネーション画素が得られる。従って、あるデスティネーション画素を得るためには、拡大後の画像データのうち、その画素を中心とする５×５ウインドウの内部にある画素データも必要になる。従って、それぞれのブロックの上と下の境界付近にあるデータは、拡大画像のうち隣のブロックの位置にある画素も使用することになる。
【０２３９】
このことをさらに詳しく説明する。図４０は、本発明の第３の実施の形態においてブロック２のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。図４０に、ブロック２の位置にある拡大後の画像データを示している。ここで、平滑化前の拡大画像に対しても、拡大・平滑化画像と同様の方法で３ブロックに分割することができる。
【０２４０】
図４０で、ハッチングの施されていない領域１８１が、拡大画像のブロック２の位置にある画像データである。また図４０では、１ライン分の平滑化操作の様子を示すために、下の境界と上の境界の画素を生成するためのウインドウと、その中心画素も示されている。
【０２４１】
上下の境界上の画素データを中心とする５×５ウインドウには、それぞれブロック２をはみ出したデータが５×２画素分含まれる。従って、ブロック２の拡大・平滑化画像を生成するためには、ブロック２の位置にある拡大画像に加えて、ハッチングを施した領域１８２，１８３の上下２画素分のデータが必要である。
【０２４２】
ここで、領域１８２のデータは、拡大画像のブロック１の位置にある領域に含まれるデータであり、領域１８３のデータは、拡大画像のブロック３の位置にある領域に含まれるデータである。また、ブロック２の上の境界上にある画素のＹ座標を、Ｙｄ０とすると、領域１８３のデータのＹ座標は、Ｙｄ０＋１、Ｙｄ０＋２となる。
【０２４３】
図４１は、本発明の第３の実施の形態においてブロック３のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。図４１では、ブロック３のデータに関して拡大後の画像データと上下の境界上の画素を求めるためのウインドウを、図３９と同様に示している。このうち、領域１８４が拡大画像のブロック３の位置にある画像データである。
【０２４４】
ブロック３のデータに関しても、下の境界上にある画素データを求める時に、同様にしてブロック２の位置にある拡大画像の領域に含まれる領域１８５の画像データが必要である。ここで、ブロック３の下の境界上にある画素データのＹ座標は、前述のＹｄ０を使うと、Ｙｄ０＋１となる。従って、領域８４の画素データのＹ座標は、Ｙｄ０−１、Ｙｄ０となる。
【０２４５】
以上のことから、ブロック２とブロック３の平滑化を行なう時には、それぞれＹ座標がＹｄ０−１からＹｄ０＋２までの値をとる４つの拡大画像が、共通に使われることになる。
【０２４６】
なお、図４１において、ブロック３の上の境界の画素データは、デスティネーション画像領域の上の境界の画素データと一致するので、前述の通り領域をはみ出したウインドウ内のデータは０とみなされる。従って、隣のブロックの位置にある画素データは不要である。このことは、ブロック１の下の境界の画素データに関しても同じである。
【０２４７】
次に、上述の１ブロックの画像データを生成する時に使われるソース画像データについて、第１の実施の形態の元画像メモリ制御部１７とＹ方向ＤＤＡ計算部１６の動作の様子も含めて説明する。
【０２４８】
図４２は、本発明の第３の実施の形態においてブロック２と３の境界付近におけるソース画像と拡大後の画像の一例を示す説明図である。図４２（Ａ）は、この画像を生成する時に使われるソース画像の一部を示したもので、Ｙ方向に３画素、Ｘ方向に数画素分を示した。ここで、Ｙ座標はそれぞれＹｓ０、Ｙｓ０＋１、Ｙｓ０＋２とする。また、図４２（Ｂ）は、図４２（Ａ）をＸ、Ｙ方向に３倍に拡大した時の画像を示している。このため、Ｙ方向に９画素分のデータが示されている。ここで、Ｙ座標はＹｄ０−４からＹｄ０＋４となる。また、図中の▲１▼，▲２▼，▲３▼は、それぞれ図４２（Ａ）のソース画像でそのＹ座標がＹｓ０、Ｙｓ０＋１、Ｙｓ０＋２のデータを拡大した結果である。また、図４２（Ｂ）において、Ｙｄ０以下の領域をブロック２、Ｙｄ０＋１以上の領域をブロック３とする。
【０２４９】
ここで、ソース画像データをＹ方向に拡大する時には、第１の実施の形態で述べたようにＹ方向ＤＤＡ計算部１６で残差データを更新し、出力された残差符号をもとにしてＸ方向データ拡大・計数部１１で計数された結果を重複させる。このことによって、平滑化処理後のデータとして図４２（Ｂ）に示したようなＹ方向の拡大データが得られる。
【０２５０】
また、残差データは、前述の通り−３、−１、２が繰り返されながら更新される。ここで残差データ２に対応する残差符号が出力されているときに、Ｙ座標が１だけインクリメントされる。
【０２５１】
ここでまず、ブロック２の画像データを生成する時には、前述の通りＹ座標がＹｄ０＋２までのデータが使用される。従って、図４２（Ａ）と図４２（Ｂ）の対応関係を考慮すれば、ソース画像データを１ライン分入力する時には、ソース画像データの座標Ｙｓ０＋２のデータが読み出されており、かつＹ方向ＤＤＡ計算部１６で計算された残差の値が−３の時まで、元画像メモリ制御部１７およびＹ方向ＤＤＡ計算部１６が動作される。
【０２５２】
さらに、ブロック３の画像データを生成する時には、前述の通りＹ座標がＹｄ０−１のデータから使用される。従って、図４２（Ａ）と図４２（Ｂ）の対応関係を考慮すれば、ソース画像データを１ライン分入力する時には、ソース画像データの座標Ｙｓ０＋１のデータが読み出されており、かつＹ方向ＤＤＡ計算部１６で計算された残差の値が−３の時から、元画像メモリ制御部１７およびＹ方向ＤＤＡ計算部１６の動作が開始される。
【０２５３】
以上のことより、デスティネーション画像をブロックに分割したときには、例えば、ブロック２とブロック３の処理との間で以下の操作が必要になる。まず、ブロック２の１ライン分の画像データが生成されるとき、Ｙ方向ＤＤＡ計算部１６で計算される残差、および元画像メモリ制御部１７で計算されるソース画素のＹ座標の、３画素前の値を格納しておく。次に、ブロック３の計算を開始する時には、格納された残差およびＹ座標の値を、初期値として用いる。従って、第１の実施の形態の回路に、残差とＹ座標を格納する機能を追加することにより、この第３の実施の形態の拡大・平滑化回路１が実現ざれる。
【０２５４】
次に、第３の実施の形態を実現するための回路について、第１の実施の形態との違いに重点を置きながら説明する。図４３は、本発明の画像拡大処理装置の第３の実施の形態の構成を示すブロック図である。図中の符号は図１と同様である。
【０２５５】
まず、元画像フレームメモリ２ｂと、拡大画像フレームメモリ３ｂについて説明する。前述の元画像バッファメモリおよびＤＲＡＭは、元画像フレームメモリ２の中に含まれているものとし、ＤＲＡＭから元画像バッファメモリへデータを格納する操作は元画像フレームメモリ２の中で自動的に行なわれるものとする。また、ＤＲＡＭのリフレッシュも自動的に行なわれる。
【０２５６】
すなわち、元画像バッファメモリにはＤＲＡＭから図３９に示した順番で数ラインずつデータが格納され、入力されるアドレスＡａ１１〜０信号に応じてデータを出力する。またこのとき、アドレス信号で表わされるＸアドレスを調べ、元画像バッファメモリのデータのうち使い終わったものが含まれているときには、その部分をＤＲＡＭから読み出した新しいデータに更新する。
【０２５７】
さらに、ＤＲＡＭからデータを読み出す前にＡａ１１〜０入力にそのデータのアドレスが入力された時には、図示しないｗａｉｔ０信号を有効にし、拡大・平滑化回路１を一時的に止めることを要求する。
【０２５８】
また、前述の拡大画像バッファメモリおよびＤＲＡＭは、拡大画像フレームメモリ３の中に含まれているものとし、拡大画像バッファメモリからＤＲＡＭへデータを格納する操作は拡大画像フレームメモリ３の中で自動的に行なわれるものとする。また、ＤＲＡＭのリフレッシュも自動的に行なわれる。
【０２５９】
すなわち、拡大画像バッファメモリには、アドレス信号Ａｂ１５〜０に従って、Ｄｄ０から入力されるデータが格納される。その後、１６ライン分のデータの格納が終わってから、ＤＲＡＭの所定の位置に格納される。ＤＲＡＭに格納した後、再度拡大画像バッファメモリへの格納が続けられる。
【０２６０】
さらに、拡大画像バッファメモリに空きがない状態の時に、拡大・平滑化回路１ｂから書き込みが行なわれた時は、図示しないｗａｉｔ１信号を有効にし、拡大・平滑化回路１を一時的に止めることを要求する。
【０２６１】
全体制御部１０９には、外部から入力されるクロック信号ＣＬＫを止め、拡大・平滑化回路の各部分の動作を止める機能が追加されており、上述のｗａｉｔ０またはｗａｉｔ１信号が有効になっている時には、クロック信号を止める。
【０２６２】
従って、拡大・平滑化回路１からは、アドレス信号Ａａ１１〜０によって、第１の実施の形態と全く同じ手順でＤａ２〜０からデータが読み出されるものとする。また、拡大・平滑化回路１からは、アドレスＡｂ１５〜０とｗｅ信号とによって、第１の実施の形態と全く同じ手順でＤｄ０に出力されたデータが書き込まれる。
【０２６３】
次に、Ｙ方向ＤＤＡ計算部１６と、元画像メモリ制御部１７について説明する。図４４は、本発明の第３の実施の形態においてＹ方向ＤＤＡ計算部の構成の一例を示すブロック図である。図中、図３０と同様の部分には同じ符号を付して説明を省略する。１１８ａ〜１１８ｃはフリップフロップ、１１９はマルチプレクサである。図３０に示した第１の実施の形態のＹ方向ＤＤＡ計算部１６との違いは、残差の値を３個分格納するフリップフロップ１１８ａ、１１８ｂ、１１８ｃが追加され、フリップフロップ１１８ｃの出力と初期値レジスタ１１１の値がマルチプレクサ１１９によって選択されていることである。従って、これらの違いに注目しながら説明する。
【０２６４】
まず、ＩＤＤＡＹＳ入力が０の時には、マルチプレクサ１１９は初期値レジスタの値を選択するので、前述の図３０の回路と同じ動作により、初期値を設定し、また残差を更新する。ここで、残差を更新しているとき、ＥＳＶＤＹ入力が１になっていると、フリップフロップ１１８ａ〜１１８ｃがイネーブルになるので、更新された残差の値がこれらのフリップフロップに入力されていく。そして、フリップフロップ１１８ｃには３クロック前の残差の値が格納される。
【０２６５】
また、ＩＤＤＡＹ、ＥＤＤＡＹ入力を１にして残差を初期化する時に、ＩＤＤＡＹＳを同時に１にすると、マルチプレクサ１１９はフリップフロップ１１８ｃから出力されている値を選択するので、残差はこのフリップフロップの値に初期化される。このように、図４４に示すＹ方向ＤＤＡ計算部１６の回路は、図３０の回路の機能に加えて、３クロック前の残差を格納する機能と、格納した残差を初期値として使う機能を有する。
【０２６６】
図４５は、本発明の第３の実施の形態において元画像メモリ制御部の構成の一例を示すブロック図である。図中、図３１と同様の部分には同じ符号を付して説明を省略する。１３２ａ〜１３２ｃはフリップフロップ、１３３はマルチプレクサである。図３１に示した第１の実施の形態の元画像メモリ制御部１７との違いは、Ｙ座標カウンタの出力を３個分格納するフリップフロップ１３２ａ、１３２ｂ、１３２ｃが追加され、フリップフロップ１３２ｃの出力と初期値レジスタ１２１の値がマルチプレクサ１３３によって選択されていることである。従って、これらの違いに注目しながら、Ｙ座標を生成する部分の動作について説明する。
【０２６７】
まず、ＩＡＹＬＳ入力が０の時には、マルチプレクサ１３３は初期値レジスタ１２１の値を選択するので、図３１に示す回路のうち、ソース画像のＹ座標を生成する回路と同じ動作によって初期値の設定とＹ座標の更新が行なわれる。ここで、Ｙ座標を更新している時に、ＥＳＶＡＹ入力が１になっていると、フリップフロップ１３２ａ〜１３２ｃがイネーブルになるので、更新されたＹ座標の値がこれらのフリップフロップに入力されていく。そして、フリップフロップ１３２ｃには３クロック前のＹ座標の値が格納される。
【０２６８】
また、ＬＤＹＳを１にしてＹ座標カウンタを初期化する時に、ＩＡＹＬＳを同時に１にすると、マルチプレクサ１３３はフリップフロップ１３２ｃから出力されている値を選択するので、残差はこのフリップフロップ１３２ｃが保持する値に初期化される。このように、図４５に示す元画像メモリ制御部１７の回路は、図３１に示した回路の機能に加えて、３クロック前のＹ座標を格納する機能と、格納したＹ座標を初期値として使う機能を有する。
【０２６９】
次に、上述したＹ方向ＤＤＡ計算部１６、元画像メモリ制御部１７の制御信号も含めて、全体制御部１９により拡大・平滑化回路１が動作する手順について説明する。
【０２７０】
まず、ブロック１を生成する手順について述べる。前述のように、各ブロックのデスティネーション画像データは、第１の実施の形態において１つのデスティネーション画像データを生成するのとほぼ同じ手順によって生成される。
【０２７１】
ブロック１を生成する時には、第１の実施の形態と同様に、入力されるソース画像データの重複数をＭＰ累積部７１で求めてから、１ライン分のデータが元画像メモリ制御部１７で生成されるアドレスによって読み出され、拡大／計数回路から計数結果がＤｂ２〜０信号に出力される。その後、Ｙ方向データ累積部１２で重複数だけコピーされた後、５個ずつの加算結果が求められ、２値化されて拡大画像メモリ制御部１８によって拡大画像フレームメモリ３に書き込まれる。この操作がブロック１の最後のラインまで繰り返されることにより、デスティネーション画像のブロック１の部分が生成される。
【０２７２】
次に、この手順と第１の実施の形態における手順との違いについて説明する。まず、第１の実施の形態では、拡大／計数回路から出力されるＤｂ２〜０信号には、上下の境界をはみ出したウインドウ内の画素を白とする処理を行なうために、１ラインの最初と最後に２クロックずつ０データが出力されていた。これに対してこの第３の実施の形態では、前述のように下の境界だけでこの処理が行なわれるので、１ラインの最初だけに２クロックの０データが付加される。
【０２７３】
次にソース画像データの読み出し手順について説明する。図４６は、本発明の第３の実施の形態においてブロック１のデスティネーション画像データ生成時のＹ方向ＤＤＡ計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。図４６では、ブロック１の最初のライン、２番目のラインと、最後のラインが読み出される時の動作を示した。
【０２７４】
Ｙ方向ＤＤＡ計算部１６、元画像メモリ制御部１７の制御信号は、第１の実施の形態と同様に制御される。このとき、Ｄａ２〜０信号から入力される１ライン分のデータは、タップ数が５のウインドウで平滑化を行ない、６４個のデスティネーション画像が得られるだけの数となるように、全体制御部１９によって制御信号がコントロールされる。
【０２７５】
この場合には、ＥＤＤＡＹ、ＵＰＹＳ信号は、残差とＹ座標が初期化されてから６５クロック後に立ち下げられる。このことにより、Ｄａ２〜０信号には２２個の有効なデータが読み出される。従ってＤｂ２〜０信号には、上述した０データも含めて２４個の有効なデータが出力される。Ｙ方向データ累積部１２では、これらのデータから２２個の計数結果を重複させて６６個のデータとし、２つの０データとともに６８個のデータから５個ずつの累積値を６４個生成する。これにより、Ｙ方向データ累積部１２からは６４個の有効なデータがＤｃ４〜０信号に出力される。またこのとき、元画像フレームメモリ２からは、図３９（Ｂ）に示した領域１７１から１７２までのデータが読み出されることになる。
【０２７６】
また、図４６に示したように、最後のラインのデータを読み出している間、ＥＳＶＤＹ、ＥＳＶＡＹは１になる。そして、ＥＤＤＡＹ、ＵＰＹＳ信号と同じタイミングで、０に立ち下げられる。このようにすることにより、フリップフロップ１１８ｃ、１３２ｃの出力には、最後から３クロック前の残差とＹアドレスとが保持される。以上のようにして、ブロック１のデスティネーション画像データが得られる。
【０２７７】
次に、ブロック２のデスティネーション画像を生成する手順について述べる。ブロック２のデスティネーション画像が生成される前に、拡大画像メモリ制御部３のＹ座標の初期値を格納するレジスタ１５１の値は、図３８（Ａ）のデスティネーション画像のブロック２の下の境界のＹ座標となるように、全体制御部１９によって書き換えられるものとする。このことにより、生成されたデータがデスティネーション画像のブロック２の位置に書き込まれるようになる。その後、ブロック１とほぼ同じ手順によってブロック２が生成される。従って、両者の間で異なる手順についてのみ説明する。
【０２７８】
まず、この第３の実施の形態では、ブロック２の処理においては前述のように上下の境界において境界をはみ出したウインドウ内の画素を白とする処理は行なわれないので、Ｄｂ２〜０信号に０データは付加されない。
【０２７９】
次にソース画像データの読み出し手順について説明する。図４７は、本発明の第３の実施の形態においてブロック２のデスティネーション画像データ生成時のＹ方向ＤＤＡ計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。図４７では、図４６と同様、ブロック２の最初のライン、２番目のラインと、最後のラインが読み出される時に、Ｙ方向ＤＤＡ計算部、元画像メモリ制御部で元画像フレームメモリのアドレスが生成される様子を示している。
【０２８０】
１ラインの最初のデータを読み出す時、Ｙ方向ＤＤＡ計算部１６、元画像メモリ制御部１７への初期化信号ＩＤＤＡＹ、ＬＤＹＳとともに、ＩＤＤＡＹＳ、ＩＡＹＬＳも１になっている。従って、図４４、図４５に示す回路の説明で述べたように、フリップフロップ１１８ｃ、１３２ｃに格納されている値が残差およびＹ座標の初期値として使われる。これらのフリップフロップにはブロック１の１ラインの最後から３クロック前の残差とＹアドレスとが保持されているので、前述したように、平滑化してブロック２の下の境界のデスティネーション画像を求められるだけのソース画像データが読み出される。また、全体制御部１９によって、Ｄａ２〜０信号から入力される１ライン分のデータを使って、平滑化後に６４個のデスティネーション画像が得られるだけの数となるように制御信号がコントロールされる。
【０２８１】
この場合には、ＥＤＤＡＹ、ＵＰＹＳ信号は、残差とＹ座標が初期化されてから６７クロック後に立ち下げられる。このことにより、Ｄａ２〜０信号、およびＤｂ２〜０信号には２４個の有効なデータが読み出される。Ｙ方向データ累積部１２では、この２４個の計数結果のデータのうち両端を除く２２個のデータを重複させて１＋６６＋１個の計数結果のデータを作成し、５個ずつの累積値を算出する。これにより、Ｙ方向データ累積部１２からは６４個の有効なデータがＤｃ４〜０信号に出力されることになる。またこのとき、元画像フレームメモリからは、図３９（Ｂ）に示した領域１７３から１７４までのデータが読み出されることになる。
【０２８２】
また、図４７に示したように、最後のラインのデータを読み出している間、ＥＳＶＤＹ、ＥＳＶＡＹは１になる。そして、ＥＤＤＡＹ、ＵＰＹＳ信号と同じタイミングで、０に立ち下げられる。なお、残差、Ｙ座標とも、ＥＳＶＤＹ、ＥＳＶＡＹが１に立ち上がった直後のクロックで初期化されているので、上記初期値は正しく格納される。このようにすることにより、ブロック１と同様、フリップフロップ１１８ｃ、１３２ｃには、最後から３クロック前の残差とＹアドレスとが保持される。以上のようにして、ブロック２のデスティネーション画像データが得られる。
【０２８３】
以後、同様にして、拡大画像メモリ制御部１８のＹ座標の初期値を格納するレジスタ１５１の値が図３８（Ａ）のデスティネーション画像のブロック３の下の境界のＹ座標となるように、全体制御部１９によって書き換えられた後、ブロック３のデスティネーション画像が生成される。
【０２８４】
ブロック３の生成の場合には、前述のように上の境界だけではみ出したウインドウ内の画素を白とする処理が行なわれるので、Ｄｂ２〜０信号には１ラインの最後だけに２クロック分の０データが付加される。また、全体制御部１９によってコントロールされるＥＤＤＡＹ、ＵＰＹＳ信号は、残差とＹ座標が初期化されてから６５クロック後に立ち下げられ、前述の０データの処理も考慮すれば、Ｄｃ４〜０信号からは６４個の有効なデータが出力される。あとはブロック２と同じ処理が行なわれ、ブロック３のデスティネーション画像データが得られる。
【０２８５】
以上述べたように、この第３の実施の形態の構成によれば、高速のバッファメモリを介して画像データの入出力ができるようになるので、一層高速に画像データを拡大・平滑化することができる。
【０２８６】
なお、この第３の実施の形態では、倍率が３倍、タップ数が５の場合について述べたが、第２の実施の形態で採用した回路構成を追加することにより、倍率とタップ数の２通り以上の組合せについても拡大・平滑化を行なうことができる。このとき、可変となるタップ数に対応するため、前記フリップフロップ１１８ａ〜１１８ｃおよび１３２ａ〜１３２ｃのそれぞれの出力からマルチプレクサによって選択した値を、新たな残差、Ｙ座標の初期値とするように構成すればよい。
【０２８７】
上述の第３の実施の形態の説明では、ブロック数を３としたが、任意の数のブロック数で処理可能である。ブロック数が４以上の場合には、上下端のブロックについて、上述のブロック１およびブロック３の処理を行ない、他のブロックについてはブロック２の処理を繰り返し行なえばよい。
【０２８８】
なお、この第３の実施の形態では、ＤＲＡＭのアクセス単位中にＸ方向に連続する画素データが存在する場合に特に有効である。このような構成では、上述のように１回のＤＲＡＭのアクセスで得られたソース画像データを複数ラインの処理で用いることができるため、高速な拡大・平滑化処理が期待できる。ＤＲＡＭのアクセス単位中にＹ方向に連続する画素データが存在する場合にも、バッファメモリは有効である。この構成では、１ラインの処理が終了するごとにＤＲＡＭのアクセスが発生するが、バッファメモリを用いることによって、ＤＲＡＭのアクセスは、新たに必要となるソース画像データの１ライン分のみでよく、重複したアクセスを回避し、拡大・平滑化処理を高速化することができる。
【０２８９】
【発明の効果】
以上の説明から明らかなように、本発明によれば、元画像を特定の方向に拡大したときの部分平滑化結果を求め、その部分平滑化結果を重複させて累積し、平滑化結果を得るので、従来のように拡大後の画像を格納するようなメモリは必要なく、既存の回路よりも小さい回路規模で、しかも高速に拡大・平滑化処理を行なうことができる。また、倍率や平滑化処理のためのウインドウの大きさなどを変更可能に構成でき、その切り替えも高速に行なうことができるという効果がある。
【図面の簡単な説明】
【図１】  本発明の画像拡大処理装置の第１の実施の形態を示すブロック図である。
【図２】  画像が拡大されるときの処理装置の流れを示すブロック図である。
【図３】  一般的な画像の拡大の説明図である。
【図４】  画像の拡大によって発生するジャギーの一例の説明図である。
【図５】  平滑化に用いるウインドウの一例の説明図である。
【図６】  拡大画像に対する平滑化処理の結果の一例の説明図である。
【図７】  本発明の第１の実施の形態において拡大・平滑化されるソース画像の具体例の説明図である。
【図８】  本発明の第１の実施の形態におけるＸ方向への拡大および黒画素数の計数処理の一例の説明図である。
【図９】  本発明の第１の実施の形態におけるＹ方向への累積処理の一例を示す説明図である。
【図１０】  本発明の第１の実施の形態におけるデスティネーション画像の一例の説明図である。
【図１１】  ソース画像における領域３２と次の領域の関係を説明する拡大図である。
【図１２】  本発明の第１の実施の形態においてソース画像中の領域３４に対するＸ方向への拡大および黒画素数の計数処理の一例の説明図である。
【図１３】  デスティネーション画像領域をウインドウがはみ出す場合の説明図である。
【図１４】  本発明の第１の実施の形態においてウインドウが左の境界よりはみ出す場合のＸ方向への拡大、部分平滑処理の一例の説明図である。
【図１５】  本発明の第１の実施の形態においてソース画像領域の右の境界をはみ出した画素を含む場合のＸ方向への拡大、部分平滑処理の一例の説明図である。
【図１６】  本発明の第１の実施の形態においてソース画像領域の右の境界をはみ出した画素を含むデータのＸ方向への拡大、部分平滑処理における図１５に示した状態に続く例の説明図である。
【図１７】  本発明の第１の実施の形態における上端および下端における重複後の計数値の一例の説明図である。
【図１８】  本発明の第１の実施の形態において最初のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。
【図１９】  本発明の第１の実施の形態において途中のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。
【図２０】  本発明の第１の実施の形態においてＸ方向ＤＤＡ計算部の内部構成の一例を示すブロック図である。
【図２１】  本発明の第１の実施の形態においてＸ方向データ拡大・計数部の内部構成の一例を示すブロック図である。
【図２２】  本発明の第１の実施の形態において拡大／計数回路の内部構成の一例を示すブロック図である。
【図２３】  本発明の第１の実施の形態においてＭＰ累積回路の内部構成の一例を示すブロック図である。
【図２４】  本発明の第１の実施の形態において最初のラインの生成時におけるＭＰ累積回路の動作の一例を示すタイミングチャートである。
【図２５】  本発明の第１の実施の形態において２番目のラインの生成時におけるＭＰ累積回路の動作の一例を示すタイミングチャートである。
【図２６】  本発明の第１の実施の形態において途中のライン生成時におけるＭＰ累積回路の動作の一例を示すタイミングチャートである。
【図２７】  本発明の第１の実施の形態において読み込む画素データが変更される場合のＭＰ累積回路の動作の一例を示すタイミングチャートである。
【図２８】  本発明の第１の実施の形態においてＹ方向データ累積部の内部構成の一例を示すブロック図である。
【図２９】  本発明の第１の実施の形態においてＹ方向データ累積部の動作の一例を示すタイミングチャートである。
【図３０】  本発明の第１の実施の形態においてＹ方向ＤＤＡ計算部の内部構成の一例を示すブロック図である。
【図３１】  本発明の第１の実施の形態において元画像メモリ制御部の内部構成の一例を示すブロック図である。
【図３２】  本発明の第１の実施の形態において元画像メモリ制御部の動作の一例を示すタイミングチャートである。
【図３３】  本発明の第１の実施の形態において元画像メモリ制御部の制御信号を生成する回路の一例を示すブロック図である。
【図３４】  本発明の第１の実施の形態において元画像メモリ制御部の制御信号を生成する回路の動作の一例を示すタイミングチャートである。
【図３５】  本発明の第１の実施の形態において拡大画像メモリ制御部の内部構成の一例を示すブロック図である。
【図３６】  本発明の画像拡大処理装置の第２の実施の形態を示すブロック図である。
【図３７】  本発明の第２の実施の形態においてＹ方向データ累積部の内部構成の一例を示すブロック図である。
【図３８】  本発明の第３の実施の形態においてデスティネーション画像を３つのブロックに分割する場合の説明図である。
【図３９】  本発明の第３の実施の形態においてブロックに分割されたデスティネーション画像を得るときに使用されるソース画像のブロックの一例を示す説明図である。
【図４０】  本発明の第３の実施の形態においてブロック２のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。
【図４１】  本発明の第３の実施の形態においてブロック３のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。
【図４２】  本発明の第３の実施の形態においてブロック２と３の境界付近におけるソース画像と拡大後の画像の一例を示す説明図である。
【図４３】  本発明の画像拡大処理装置の第３の実施の形態の構成を示すブロック図である。
【図４４】  本発明の第３の実施の形態においてＹ方向ＤＤＡ計算部の構成の一例を示すブロック図である。
【図４５】  本発明の第３の実施の形態において元画像メモリ制御部の構成の一例を示すブロック図である。
【図４６】  本発明の第３の実施の形態においてブロック１のデスティネーション画像データ生成時のＹ方向ＤＤＡ計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。
【図４７】  本発明の第３の実施の形態においてブロック２のデスティネーション画像データ生成時のＹ方向ＤＤＡ計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。
【符号の説明】
１…拡大・平滑化回路、２…元画像フレームメモリ、３…拡大画像フレームメモリ、１１…Ｘ方向データ拡大・計数部、１２…Ｙ方向データ累積部、１３…コンパレータ、１４…閾値レジスタ、１５…Ｘ方向ＤＤＡ計算部、１６…Ｙ方向ＤＤＡ計算部、１７…元画像メモリ制御部、１８…拡大画像メモリ制御部、１９…全体制御部、２１…イメージセンサ、２２…ディスク、２３，２３ｂ…元画像フレームメモリ、２４…拡大回路、２５，２５ｂ…拡大画像フレームメモリ、２６…出力装置、６１…初期値レジスタ、６２…差分０レジスタ、６３…差分１レジスタ、６４，６６…マルチプレクサ、６５…加算器、６７…残差フリップフロップ、７１…ＭＰ累積回路、７２…拡大／計数回路、７３…マルチプレクサ、８１，８２，８３，８６，８７…ＡＮＤゲート、８４，８５…加算器、９１ａ〜９１ｅ…フリップフロップ、９２ａ〜９２ｅ…フリップフロップ、９３ａ〜９３ｅ…マルチプレクサ、９４ａ〜９４ｃ…フリップフロップ、９５ａ〜９５ｃ…カウンタ、９６ａ〜９６ｃ…ＡＮＤ、９７…バレルシフタ、９８…インバータ、１０１，１０２ａ〜１０２ｅ，１０５…フリップフロップ、１０３…加算器、１０４…減算器、１０６…ＯＲゲート、１０７…マルチプレクサ、１１１…初期値レジスタ、１１２…差分０レジスタ、１１３…差分１レジスタ、１１４，１１６…マルチプレクサ、１１５…加算器、１１７…残差フリップフロップ、１１８ａ〜１１８ｃ…フリップフロップ、１１９…マルチプレクサ、１２１…Ｙ座標初期値設定レジスタ、１２２…Ｘ座標初期値設定レジスタ、１２３…Ｘ座標最大値設定レジスタ、１２４…Ｙ座標カウンタ、１２５…Ｘ座標カウンタ、１２６…ＡＮＤゲート、１２７…インバータ、１２８…＋１インクリメンタ、１２９…＋２インクリメンタ、１３０，１３１…比較器、１３２ａ〜１３２ｃ…フリップフロップ、１３３…マルチプレクサ、１４１…立ち上がり検出回路、１４２…比較器、１４３…ＡＮＤゲート、１４４…ＪＫフリップフロップ、１４５…フリップフロップ、１５１，１５２…レジスタ、１５３…Ｙ座標カウンタ、１５４…Ｘ座標カウンタ。
【図１】
0003644123.tif 000002
【図２】
0003644123.tif 000003
【図３】
0003644123.tif 000004
【図４】
0003644123.tif 000005
【図５】
0003644123.tif 000006
【図６】
0003644123.tif 000007
【図７】
0003644123.tif 000008
【図８】
0003644123.tif 000009
【図９】
0003644123.tif 000010
【図１０】
0003644123.tif 000011
【図１１】
0003644123.tif 000012
【図１２】
0003644123.tif 000013
【図１３】
0003644123.tif 000014
【図１４】
0003644123.tif 000015
【図１５】
0003644123.tif 000016
【図１６】
0003644123.tif 000017
【図１７】
0003644123.tif 000018
【図１８】
0003644123.tif 000019
【図１９】
0003644123.tif 000020
【図２０】
0003644123.tif 000021
【図２１】
0003644123.tif 000022
【図２２】
0003644123.tif 000023
【図２３】
0003644123.tif 000024
【図２４】
0003644123.tif 000025
【図２５】
0003644123.tif 000026
【図２６】
0003644123.tif 000027
【図２７】
0003644123.tif 000028
【図２８】
0003644123.tif 000029
【図２９】
0003644123.tif 000030
【図３０】
0003644123.tif 000031
【図３１】
0003644123.tif 000032
【図３２】
0003644123.tif 000033
【図３３】
0003644123.tif 000034
【図３４】
0003644123.tif 000035
【図３５】
0003644123.tif 000036
【図３６】
0003644123.tif 000037
【図３７】
0003644123.tif 000038
【図３８】
0003644123.tif 000039
【図３９】
0003644123.tif 000040
【図４０】
0003644123.tif 000041
【図４１】
0003644123.tif 000042
【図４２】
0003644123.tif 000043
【図４３】
0003644123.tif 000044
【図４４】
0003644123.tif 000045
【図４５】
0003644123.tif 000046
【図４６】
0003644123.tif 000047
【図４７】
0003644123.tif 000048