JP3644123B2 - 画像拡大処理装置および画像拡大処理方法 - Google Patents

画像拡大処理装置および画像拡大処理方法 Download PDF

Info

Publication number
JP3644123B2
JP3644123B2 JP08174696A JP8174696A JP3644123B2 JP 3644123 B2 JP3644123 B2 JP 3644123B2 JP 08174696 A JP08174696 A JP 08174696A JP 8174696 A JP8174696 A JP 8174696A JP 3644123 B2 JP3644123 B2 JP 3644123B2
Authority
JP
Japan
Prior art keywords
data
image
pixels
input
result
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP08174696A
Other languages
English (en)
Other versions
JPH09274653A (ja
Inventor
深二郎 稲畑
一憲 宋
豊 植田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujifilm Business Innovation Corp
Original Assignee
Fuji Xerox Co Ltd
Fujifilm Business Innovation Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fuji Xerox Co Ltd, Fujifilm Business Innovation Corp filed Critical Fuji Xerox Co Ltd
Priority to JP08174696A priority Critical patent/JP3644123B2/ja
Publication of JPH09274653A publication Critical patent/JPH09274653A/ja
Application granted granted Critical
Publication of JP3644123B2 publication Critical patent/JP3644123B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Landscapes

  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)
  • Facsimile Image Signal Circuits (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、画像をX方向およびY方向に拡大するとともに平滑化する画像拡大処理装置および画像拡大処理方法に関するものである。
【0002】
【従来の技術】
従来より、画像拡大処理装置は、2値または多値画像を扱うプリンタやプロッタなどの出力装置やスキャナなどの入力装置、あるいはFAXやコピーなど、広範囲に使用されている。画像拡大処理装置の利用例として、例えば、2値データで表現された図面などを表わすラスタ画像データを、イメージセンサなどで外部から読み取り、例えばA4の大きさでディスクなどに格納しておき、このデータを拡大してA0の大きさで出力することが行なわれている。
【0003】
画像データを拡大する時は、通常、フレームメモリと呼ばれるメモリを介して拡大操作が行なわれる。図2は、画像が拡大されるときの処理装置の流れを示すブロック図である。21はイメージセンサ、22はディスク、23は元画像フレームメモリ、24は拡大回路、25は拡大画像フレームメモリ、26は出力装置である。イメージセンサ21で読み込まれた画像データは、各種補正やディジタル化などが施された後、2値画像データとしてディスク22に一旦格納される。その後、画像データを拡大して出力するときには、ディスク22に格納された2値画像データが元画像フレームメモリ23に読み出され、拡大回路24で拡大された後、拡大画像フレームメモリ25に格納される。なお、元画像フレームメモリ23と拡大画像フレームメモリ25は、図2では別のメモリとしているが、物理的には同一のメモリの異なったアドレスによって表わされていることもある。拡大画像フレームメモリ25に格納された拡大画像は、出力装置26によりA0などの用紙に印刷され、出力される。
【0004】
図3は、一般的な画像の拡大の説明図である。図3(A)は拡大前のソース画像を表わし、図3(B)は拡大後のデスティネーション画像を表わす。また、各画像中のa〜pのアルファベットを記した小さい四角は1画素を表わしており、同一のアルファベットを記したものが同一の画素に対応する。図3はソース画像をX方向、Y方向とも1.5倍に拡大する場合を示しており、X方向、Y方向とも1画素おきに同一の画素がデスティネーション画像に2つずつコピーされている。このように、一般的にはソース画像の各画素をデスティネーション画像に複数個並べていくことによって拡大操作が行なわれる。
【0005】
従来、この方式によって拡大された画像では、斜めの直線の輪郭がジャギーと呼ばれる階段状の不連続な形状になってしまうという問題点があった。図4は、画像の拡大によって発生するジャギーの一例の説明図である。図4(A)はソース画像であり、図4(B)は図4(A)に示すソース画像を3倍に拡大したものである。ソース画像の同一の画素がX方向およびY方向に3個ずつ並べられるために、白画素と黒画素とが隣接する点において階段状の形状となる。拡大の倍率が大きいほど、階段の段差は大きくなるため、この現象は顕著となる。
【0006】
そこで、画像の拡大時にこの現象を回避するために、例えば、特開平4−170868号公報に記載されているように、拡大された画像に対して平滑化処理が行なわれている。図5は、平滑化に用いるウインドウの一例の説明図である。平滑化は、例えば、図5に示すようなマトリクスを拡大後の画像中にとり、この中の画素に対し、マトリクス中の特定の位置に対応した係数をかけて足し合わせた演算結果を算出し、その値を新たなマトリクスの中心に位置する画素の値とするものである。図5ではX方向、Y方向のマトリクスサイズとも5の時の例を示している(マトリクスサイズのことを本明細書ではタップ数とも呼ぶ)。画像が2値の場合には、係数として同じ値が使われる場合が多く、全ての係数を1/14にする場合には、
(1/14)P0 +(1/14)P1 +(1/14)P2 +・・・+(1/14)P23+(1/14)P24
を計算した結果が、マトリクス中でP12に位置する画素の値となる。すなわち、2値画像の場合には、Pnの値は0(白)または1(黒)であって、上記の計算結果が1以上であれば新たな画素の値は1(黒)、1未満であれば0(白)であるとされる。
【0007】
図6は、拡大画像に対する平滑化処理の結果の一例の説明図である。図6では、図4(B)に示す拡大後のデスティネーション画像に対して平滑化を行なう時の様子を示している。図6(A)で荒いハッチングを施した正方形の領域は、図5で示した5×5のマトリクスを表わしており、図6(A)に示す画像中の全ての画素が、このマトリクスの中心画素となるようにマトリクスが移動される。このようにして、上記の係数によって1画素ずつ平滑化後の画素の値が求められ、最終的には図6(B)に示すような画像となる。図4(B)に示す画像に現れていたジャギーが除去されていることがわかる。
【0008】
上述のように、拡大の倍率が高いほどジャギーは顕著となるため、平滑化に用いるタップ数を増やす必要がある。しかしながら低い倍率では、倍率が高い時に用いるタップ数を用いた場合、細線が太くなってしまうといった現象が発生するため、タップ数を大きくすることはできない。そこで、倍率に応じてタップ数を変えるといった方法が考案されている。
【0009】
このように倍率に応じて平滑化のタップ数を変えるための手段としては、例えば、特開平4−229765公報に示されているように、まず画像を拡大し、この画像をさまざまなタップ数をもった数種類のフィルタに通し、拡大後の画素の重複数に応じてそれぞれのフィルタの出力をセレクタによって切り替える方法が知られていた。しかしながら、この構成では、フィルタを数種類有するため、回路規模が大きくなる。特に、個々のフィルタでは、1画素ごとの遅延操作および係数を乗じる操作が行なわれるので、係数の値が全て同じであり、乗算操作が加算操作で置き換えられるとしても、遅延回路はタップ数の2乗個だけ必要となる。そのため、全体として多数のフリップフロップを備えなければならず、回路規模が大きくなる。
【0010】
また、最大のタップ数のフィルタだけを用意し、このうち使用しない部分の係数だけを0とする構成も容易に類推が可能であるが、依然として遅延回路に要する回路規模は大きいものとなり、さらにタップ数を切り替える時には、ウインドウ中の画素の個数分の係数を書き換えなければならず、操作に時間がかかるといった課題がある。同様の技術として、例えば、特開平3−105484号公報に記載されている技術では、拡大率に応じてフィルタの係数を変化させており、また、例えば、特開平4−16060号公報に記載されている技術では、平均濃度に応じて係数を変化させているが、これらの場合も係数の書き換え操作に時間がかかる。
【0011】
また、上述のような従来の各技術とも、拡大された画像を先に作成し、その後、平滑化処理を行なうため、平滑化処理前の拡大画像を一度保持するためのフレームメモリが必要であり、回路規模を大きくする一因となっていた。
【0012】
【発明が解決しようとする課題】
本発明は、上述した事情に鑑みてなされたもので、従来よりも回路規模が小さく、さらにタップ数を高速に切り替えることのできる画像拡大処理装置および画像拡大処理方法を提供することを目的とするものである。
【0013】
【課題を解決するための手段】
請求項1に記載の発明は、元画像を構成する複数の画素情報をX方向およびY方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理装置において、前記元画像よりX方向またはY方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力する入力制御手段と、該入力制御手段によって入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を計数して該計数結果を部分平滑化結果として出力する部分平滑化手段と、該部分平滑化手段によって求められた部分平滑化結果を入力し該部分平滑化結果を前記特定の方向と直交する方向に拡大して連続した特定の個数だけ累積する累積手段と、該累積手段によって求められた結果を入力し所定の閾値と比較する比較手段と、該比較手段による比較の結果を前記拡大画像の画素として出力する出力制御手段を備えていることを特徴とするものである。
【0014】
請求項2に記載の発明は、請求項1に記載の画像拡大処理装置において、前記部分平滑化手段は、倍率に基づきDDA法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差計算手段によって出力された残差の符号に基づいて前記所定の数の画素のそれぞれに対応した前記特定の範囲内にある重複数を求める重複数累積手段と、前記所定の数の画素の前記特定の画素値を有する画素に対して前記重複数累積手段によって求められた重複数を加算する重複数加算手段を備え、前記重複数加算手段によって求められた結果を計数結果として出力することを特徴とするものである。
【0015】
請求項3に記載の発明は、請求項2に記載の画像拡大処理装置において、前記重複数累積手段は、前記特定の範囲として、前記重複させた結果が前記拡大画像の範囲内にあるものだけを含むことを特徴とするものである。
【0016】
請求項4に記載の発明は、請求項1に記載の画像拡大処理装置において、前記累積手段は、前記部分平滑化手段によって求められた前記部分平滑化結果を重複数だけ重複させる重複手段と、該重複手段の出力を前記連続した特定の個数だけ遅延させる遅延手段と、累積値を格納する累積値格納手段と、該累積値格納手段に格納されている前記累積値と前記重複手段の出力とを加算する加算手段と、該加算手段による加算結果から前記遅延手段による遅延結果を減算しその減算結果を前記累積値格納手段に格納する減算手段を備え、前記累積値を出力することを特徴とするものである。
【0017】
請求項5に記載の発明は、請求項1または4に記載の画像拡大処理装置において、前記累積手段によって累積されるときの前記連続した特定の個数を可変としたことを特徴とするものである。
【0018】
請求項6に記載の発明は、請求項4に記載の画像拡大処理装置において、前記累積手段によって前記部分平滑化結果を重複させる重複数を可変としたことを特徴とするものである。
【0019】
請求項7に記載の発明は、請求項1に記載の画像拡大処理装置において、前記部分平滑化手段における前記特定の重複数と、前記特定の範囲の少なくとも一方を可変としたことを特徴とするものである。
【0020】
請求項8に記載の発明は、請求項1に記載の画像拡大処理装置において、前記入力制御手段は、倍率に基づきDDA法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差の符号に応じて更新される画素位置を格納する画素位置格納手段を有し、該画素位置格納手段に格納されている画素位置から前記特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力することを特徴とするものである。
【0021】
請求項9に記載の発明は、請求項1に記載の画像拡大処理装置において、前記入力制御手段は、前記元画像を複数の領域に分割し、該領域ごとに画素の入力を行なうことを特徴とするものである。
【0022】
請求項10に記載の発明は、元画像を構成する複数の画素情報をX方向およびY方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理方法において、前記元画像よりX方向またはY方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力制御手段により入力し、入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を部分平滑化手段で計数して該計数結果を部分平滑化結果とし、該部分平滑化結果を前記特定の方向と直交する方向に拡大して、連続した特定の個数だけ累積手段で累積し、求められた結果を所定の閾値と比較手段で比較し、該比較の結果を前記拡大画像の画素として出力制御手段が出力することを特徴とするものである。
【0023】
【発明の実施の形態】
図1は、本発明の画像拡大処理装置の第1の実施の形態を示すブロック図である。図中、1は拡大・平滑化回路、2は元画像フレームメモリ、3は拡大画像フレームメモリ、11はX方向データ拡大・計数部、12はY方向データ累積部、13はコンパレータ、14は閾値レジスタ、15はX方向DDA計算部、16はY方向DDA計算部、17は元画像メモリ制御部、18は拡大画像メモリ制御部、19は全体制御部である。図1には、拡大および平滑化を行なう拡大・平滑化回路1とともに、ソース画像が格納される元画像フレームメモリ2、および拡大・平滑化後のデスティネーション画像が格納される拡大画像フレームメモリ3が示されている。
【0024】
拡大・平滑化回路1は、元画像フレームメモリ2に格納されているソース画像の拡大と平滑化を同時に行ない、拡大画像フレームメモリ3にデスティネーション画像として格納する。拡大・平滑化回路1は、X方向データ拡大・計数部11、Y方向データ累積部12、コンパレータ13、閾値レジスタ14、X方向DDA計算部15、Y方向DDA計算部16、元画像メモリ制御部17、拡大画像メモリ制御部18、全体制御部19を有している。
【0025】
X方向データ拡大・計数部11は、X方向に画素データを拡大し、黒画素数を計数する。Y方向データ累積部12は、X方向データ拡大・係数部11で係数された黒画素数をY方向に拡大し、Y方向に所定数ごとに累積する。コンパレータ13は、Y方向データ累積部12で累積した累積数を2値化する。閾値レジスタ14は、コンパレータ13で2値化する際に用いる閾値を格納する。X方向DDA計算部15は、X方向の拡大画素数を計算する。Y方向DDA計算部16は、Y方向の拡大画素数を計算する。元画像メモリ制御部17は、元画像フレームメモリ2から画像データを読み出す際の制御を行なう。拡大画像メモリ制御部18は、拡大画像フレームメモリ3へ拡大・平滑化処理後の画像データを書き込む際の制御を行なう。全体制御部19は、制御信号により各ユニットの制御を行なう。なお、全体制御部19によって生成される制御信号の細かい記述は省略してある。また、これらの回路は、図示しないクロック信号CLKに同期して動作するものとする。
【0026】
次に、本発明の画像拡大処理装置の第1の実施の形態における動作の一例について説明する。まず、動作の概要について、図面を用いながら説明する。なお、以下の説明では、ソース画像およびデスティネーション画像のY方向に連続したデータを、単に1ラインと呼ぶことがある。
【0027】
ここでは、画像は2値とし、X方向およびY方向に64×64個の画素からなるソース画像を元画像フレームメモリ2から読み出し、両方向に3倍に拡大してさらにタップ数5で平滑化し、X方向およびY方向に192×192個の画素よりなるデスティネーション画像を生成して拡大画像フレームメモリ3に書き込む場合を例にとることにする。なおこの例では、1×192個のY方向に連続したラインごとにデスティネーション画像が生成される。
【0028】
概括的には、まずソース画像よりX方向に数ビット分連続したデータを読み出し、このデータを拡大したもののうち平滑化のウインドウ内にあるものを部分的に平滑化する。この部分的な平滑化結果をY方向に拡大し、さらにY方向に平滑化する。このことにより、拡大した画像に対してウインドウをY方向に移動しながら平滑化することと同等の操作が行なわれるので、1ライン分のデスティネーション画像が得られる。この操作を繰り返しながらデスティネーション画像を生成する。
【0029】
次に、上述の手順を詳しく説明する。元画像フレームメモリ2のアドレスAa11〜0は元画像メモリ制御部17から出力され、X方向に連続した3ビット単位でソース画像のデータがDa2〜0から読み出される。図7は、本発明の第1の実施の形態において拡大・平滑化されるソース画像の具体例の説明図である。図7(A)にソース画像全体を示し、図7(B)にその一部を拡大して示している。図中のハッチングを施して示した3つの帯状の領域31,32,33は、Da2〜0から連続して読み出される1ライン分のソース画像データを表わしており、いずれもY方向に画像のサイズ分である64画素、X方向に3画素からなる領域である。
【0030】
まず、このうちの領域32のデータが読み出され、拡大・平滑化された後、デスティネーション画像の1ライン分のデータが生成される様子について説明する。ただし、画像領域のYアドレスが画像領域の境界付近にあるときの処理に関しては後述する。元画像メモリ制御部17からは、元画像フレームメモリ2に対して領域32のデータがY座標の昇順に読み出されるようなアドレスが送られる。例えば、Yアドレスとして・・・(i−3),(i−2),(i−1),i,(i+1),(i+2)、(i+3)、・・・が順に元画像フレームメモリ2に送られ、図7(B)に示すように3ビット単位のソース画像データが読み出される。
【0031】
図8は、本発明の第1の実施の形態におけるX方向への拡大および黒画素数の計数処理の一例の説明図である。X方向データ拡大・計数部11では、Da2〜0から入力される画像データを与えられた倍率で拡大し、タップ数に応じて黒画素を計数する。図8(A)は、Da2〜0から入力されてくる画像データを順番に並べたものである。ここに示した3ビットのソース画像データがX方向に拡大される。なお、この3ビットというビット数は、(ビット数−1)をX方向に、与えられた倍率である3倍に拡大したデータ数の中に、平滑化に使用するウインドウのX方向のタップ数である5が収まるように選ばれる。
【0032】
Da2〜0をX方向に拡大した結果を図8(B)に示す。この例では3倍の拡大が行なわれるため、X方向にデータが9画素ずつ並んだデータが得られる。一方、平滑化のタップ数は5であるので、まず図に示した範囲AがウインドウのX方向の範囲に相当すると仮定する。従って、この1ライン分のデータを処理する間は、範囲Aの中の黒画素が計数される。ここで求められた計数値は、ウインドウ領域の中のX方向に連続したデスティネーション画像の画素値に係数1をかけて足し合わせたものに相当する。最終的な計数値は図8(C)に示したようになり、計数値を2進数で表わしたバイナリデータをDb2〜0信号として出力される。
【0033】
図9は、本発明の第1の実施の形態におけるY方向への累積処理の一例を示す説明図である。X方向の黒画素の計数値は、Y方向データ累積部12に入力され、Y方向に拡大された後、Y方向のタップ数分だけさらに累積される。図9はこの手順を示している。図9のDb2〜0の欄には、Db2〜0信号をY方向に拡大した計数値を縦方向に示している。また、それぞれの計数値には便宜上▲1▼〜▲9▼の番号をふり、計数値の識別のためソース画像のYアドレスを付記している。この時、Y方向データ累積部12の内部では、Db2〜0信号を3回ずつ重複させる。これにより、ソース画像をY方向に3倍に拡大して計数した場合と同様の計数値が得られる。この拡大後の計数値において、連続する5個分を足し合わせ、その結果をDc4〜0信号として出力する。この結果を図9のDc4〜0の欄に示している。
【0034】
このY方向の計数結果は、黒画素の計数値をY方向のタップ数分だけ足し合わせたものであるので、5×5ウインドウ中の黒画素数を表わす。すなわち、この結果は、デスティネーション画像中のウインドウ領域内の全ての画素に係数1をかけて足し合わせたものとなる。また、(▲1▼〜▲5▼までの和)、(▲2▼〜▲6▼までの和)、(▲3▼〜▲7▼までの和)・・・という順番で計数値がDc4〜0信号として出力されるので、ウインドウ領域をY方向に1画素ずつ移動させた時の累積結果が順番に出力されていくことになる。
【0035】
その後、Dc4〜0信号は閾値レジスタ14に設定されている閾値とコンパレータ13で比較される。この比較結果が、図9のDd0の欄に示したように、2値化データがDd0信号として出力される。なお、閾値レジスタ14には、外部から任意の閾値を設定することが可能であるとする。図1では、このレジスタに設定するための回路は省略した。
【0036】
前述のようにDc4〜0信号は5×5ウインドウの係数を1としたときの計算結果であるので、一例として閾値レジスタに14を設定しておくことにより、平滑化の係数が全て1/14であるときと同様の2値化結果が得られる。またこの結果は、デスティネーション画像のY方向に連続した順番で得られる。ここで、このとき得られる画素のデスティネーション画像上でのX座標をm、Y座標をj、j+1、j+2・・・とする。
【0037】
図10は、本発明の第1の実施の形態におけるデスティネーション画像の一例の説明図である。上述のようにしてDd0信号として出力された画素データは、図10(A)に示すようにY方向に並べられ、図10(B)に示すデスティネーション画像の領域42に1画素ずつ書き込まれていく。ここで領域42は、Y方向に画像のサイズ分である192画素、X方向にアドレスがmである1画素からなる領域である。このように拡大画像フレームメモリ3に書き込みが行なわれるときは、拡大画像メモリ制御部18によって拡大画像フレームメモリ3のアドレスが順番に出力され、同時に書き込み信号も出力される。例えば、X座標m、Y座標j、j+1、j+2、・・・と、書き込み信号と、Dd0信号として出力された画素データが拡大画像フレームメモリ3に与えられ、画素データが書き込まれてゆく。
【0038】
次に、デスティネーション画像の他のラインが生成される時の様子について説明する。X座標がmとなるデスティネーション画像の1ライン分の画像データが生成されると、次にXアドレスがm+1となるラインの画素データが生成される。このときには、平滑化のウインドウをデスティネーション画像上でX方向に1画素分ずらして、Y方向にウインドウを移動しながら画素を計算する。そのために、図8(B)に示したように、5画素分からなる範囲Aを右に1画素分だけ移動した範囲Bを使用して、上記の説明と同様の計算を行なうことにより達成される。
【0039】
すなわち、Da2〜0からは、全く同じソース画像のデータがX方向データ拡大・計数部11に入力される。そしてX方向データ拡大・計数部11では、X方向に3倍に拡大したデータのうち、図8(B)の範囲Bにあるものの黒画素を計数してDb2〜0信号に出力する。後の処理は同様に行なうことにより、X座標がm+1となる1ライン分の画素データが得られるため、この画素データがデスティネーション画像として拡大画像フレームメモリ3に書き込まれる。
【0040】
その後、X座標がm+2となるラインが生成されるので、平滑化のウインドウをさらに1画素分ずらした、範囲Cの5画素分のデータを対象にして、同様の処理が行なわれる。以上の結果、デスティネーション画像の3ライン分のデータが生成される。
【0041】
図11は、図7(A)のソース画像において、領域32と次の領域の関係を説明する拡大図である。次にX座標がm+3となるラインが生成される時には、図8(B)の範囲Dのデータが対象になる。このとき、図8(A)に示したDa2〜0のデータのうち、最も左側の1ビットを拡大した結果は範囲Dに含まれなくなる。従って、Da2〜0からは、1ビット右側の3ビットの領域34のデータがX方向データ拡大・計数部に入力されるようになる。ここで領域34は、図11に示すように、領域32をX方向に1画素分ずらした領域である。
【0042】
図12は、本発明の第1の実施の形態においてソース画像中の領域34に対するX方向への拡大および黒画素数の計数処理の一例の説明図である。元画像フレームメモリ2から入力されるソース画像データが1画素分ずれているので、範囲Dは図8(B)に示す場合より3画素分ずれている。
【0043】
以後、同様の操作により、ソース画像データに対して拡大、平滑化が行なわれ、デスティネーション画像の全ての画素データが生成される。
【0044】
次に、生成される画素のX座標またはY座標がデスティネーション画像の境界付近にあり、平滑化に使用される5×5ウインドウの内部の画素がデスティネーション画像領域をはみ出しているときの処理について説明する。この例では、画像領域をはみ出した画素は白とみなして処理を行なうことにする。
【0045】
図13は、デスティネーション画像領域をウインドウがはみ出す場合の説明図である。まず、図13のウインドウ51のように、デスティネーション画像領域のX座標が最小である境界(左の境界とも呼ぶ)からウインドウ内の画素がはみ出している場合について述べる。
【0046】
図14は、本発明の第1の実施の形態においてウインドウが左の境界よりはみ出す場合のX方向への拡大、部分平滑処理の一例の説明図である。この例は、図7(A)に示したソース画像中、最も左に位置する領域31のデータが、Da2〜0からX方向データ拡大・計数部11に入力される場合に相当する。図14では、それぞれのデータがX方向に拡大される様子と、画素数を計数する範囲を示している。なお、図14(B)に示すX方向の拡大結果は、図8、図12などと異なり、8画素分しかないが、これについては後述する。
【0047】
まず、図10(B)に示したデスティネーション画像中、最も左に位置する領域41を生成するために、ソース画像の左の境界に位置する画素をX方向に拡大した画素のうち、最も左の画素がウインドウの中心画素となるように選ばれる。そして、デスティネーション画像の左の境界をはみ出したウインドウ中の画素は白とみなされる。すなわち、はみ出した画素の値は0となるため、計数を行なう範囲に含めなくても同じ計数結果が得られる。従って、図14(B)の範囲A0に示した3画素だけが計数の対象となり、上述した平滑化の操作によって、領域41の1ライン分の画素が得られる。
【0048】
また、次の1ラインを生成するときには、図14(B)の範囲B0にある4画素だけが計数の対象となり、同様の操作が行なわれる。さらにその次の1ラインを生成する時には、範囲C0が計数の対象となる。このときには5×5ウインドウがデスティネーション画像領域に全て入っている状態であるから、以後の操作は上述の通常の拡大・平滑化操作と全く同様にして行なわれる。
【0049】
次に、図13のウインドウ52のように、デスティネーション画像領域のX座標が最大である境界(右の境界とも呼ぶ)からウインドウ内の画素がはみ出している場合について述べる。これは、図7(A)に示したソース画像中、最も右に位置する領域33のデータを入力する場合に相当する。図15は、本発明の第1の実施の形態においてソース画像領域の右の境界をはみ出した画素を含む場合のX方向への拡大、部分平滑処理の一例の説明図である。Da2〜0から入力されるソース画像データの最も左側のデータが使用されなくなった時には、上述の通り領域33がX方向に1画素分ずらさて入力されるようになる。ここで、Da2〜0に入力されるデータのうち最も右側のデータは、ソース画像領域をはみ出したデータとなる。このデータに対しては、その値に拘わらず、図15(B)に示すように拡大結果を必ず白にする操作が行なわれる。この操作は、X方向データ拡大・計数部11の内部で行なわれる。
【0050】
図15(B)の範囲A1は、ウインドウ内部の画素がデスティネーション画像領域の画素を全て含んでいる時の計数の対象となる最後の範囲である。この部分を用いてデスティネーション画像の1ラインを生成した後、範囲B1を計数の対象とする。範囲B1のうち、最も右側の画素はデスティネーション画像領域をはずれているが、上記のように画像領域をはみ出した画素は必ず白とされているので、Da2〜0の最も右側のデータ値にかかわらず、計数処理を行なうことができる。
【0051】
範囲B1を対象としてデスティネーション画像の1ラインを生成した後、Da2〜0から入力した最も左側の画素は、もはや使用されなくなるので、前述の如くソース画像上で入力される領域がX方向にさらに1画素分ずらされる。図16は、本発明の第1の実施の形態においてソース画像領域の右の境界をはみ出した画素を含むデータのX方向への拡大、部分平滑処理における図15に示した状態に続く例の説明図である。この時には、Da2〜0の中央の画素および右側の画素がソース画像領域の外側のデータとなる。このときにも同様の操作が行なわれ、この2画素の拡大結果は図15(B)に示すように全て白とされる。従って、範囲B1のときと同様、ウインドウ中でデスティネーション画像の右の境界からはみ出した画素を全て白とみなした上で、範囲C1を対象にした計数が行なわれ、デスティネーション画像の1ラインが生成される。なお、このラインは、図10(B)の領域43であり、最後のラインであるため、このラインの生成後、処理が終了する。
【0052】
最後に、図13のウインドウ53、54のように、デスティネーション画像領域のY座標が最大、最小である境界(上の境界、下の境界とも呼ぶ)からウインドウ内の画素がはみ出している場合について述べる。
【0053】
前述のように、Db2〜0信号はY方向データ累積部12に入力された後、Y方向に重複された後、5個ずつ累積することによりウインドウ領域内部の黒画素の計数値が得られる。この時、重複された1ライン分の計数値の最初と最後に、2つずつ0を付け加えることによって、デスティネーション画像の下と上の境界をはみだしたウインドウ内部の画素を白とみなすことができる。
【0054】
図17は、本発明の第1の実施の形態における上端および下端における重複後の計数値の一例の説明図である。X方向データ拡大・計数部11から送られてくるDb2〜0信号は、3つずつに複写されるが、このとき図17(C)に示したデータPからデータQまでは、図17(A),(B)に示したようにX方向の計数値である。ここではさらに、データPの前とデータQの後に2つずつ0が付け加えられている。
【0055】
Y方向データ累積部12は、このように0をつけ加えた計数値をもとに、Y方向に5個ずつ累積するため、最初の累積値はデータAを中心とした0+0+5+5+5=15、最後の累積値はデータBを中心とした3+3+3+0+0=9となる。それぞれの値は、コンパレータで2値化された後、デスティネーション画像の下の境界に位置する画素、および上の境界に位置する画素となる。このように、デスティネーション画像領域の下と上の境界からはみだしたウインドウ内の画素は白とみなされ、その計数値は0となる。
【0056】
以上の操作により、ソース画像が拡大・平滑化され、拡大画像フレームメモリ3に書き込まれる。
【0057】
次に、上述した3倍の拡大およびタップ数を5とした平滑化を行なうためのハードウエアについて説明する。個々の回路の説明に先立って、上述した拡大・平滑化回路1の全体の動作について、タイミングチャートを用いながら説明する。図18は、本発明の第1の実施の形態において最初のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。図18ではクロック信号は細かくなりすぎるので省略した。また、各信号でハッチングを施した部分は、信号が意味を持たない時の状態を表わしており、それ以外の信号にはTで始まる記号によってタイミングを区別している。ここでは、動作開始から、デスティネーション画像を2ライン分生成する時のタイミングチャートを示している。
【0058】
まず、拡大・平滑化回路1は、外部からのスタートパルスSTARTによってその動作が開始される。その後、前述のように拡大・平滑化処理が行なわれ、1ラインずつデスティネーション画像が生成される。
【0059】
最初のラインの処理では、タイミングTSX0で、X方向DDA計算部15によって残差と呼ばれる値の計算を行ないながら、残差の符号を示すSX信号がX方向データ拡大・計数部11に出力される。
【0060】
X方向データ拡大・計数部11では、後ほどDa2〜0信号として入力されてくるソース画素から、図14(B)に示した範囲A0にある画素数を直接求めるため、SX信号をもとにして重複数と呼ばれる値を求める。
【0061】
その後、タイミングTDa0で、Da2〜0信号からソース画像データが入力される。X方向データ拡大・計数部11では、上述した重複数を使って、Da2〜0信号から計数結果を求め、この結果をDb2〜0信号として出力する。このとき、まず上述のようにY座標が最小のときの境界を処理するため、Db2〜0信号に先立ってタイミングTDb0において0が2つ分生成される。その後、タインミングTDb1で計数結果が出力される。さらにY座標が最大のときの境界を処理するために、タイミングTDb2で再度0が2つ分生成される。
【0062】
なお、このときタイミングTDa0で入力されてくるDa2〜0信号は、上述の如く、Y方向データ累積部12でY方向に拡大するため、Y方向の累積動作が3回行なわれるごとに1回出力されることになる。
【0063】
その後、Db2〜0信号はY方向データ累積部12でY方向の重複数(ここでは3)となるように計数値が複製され、タップ数である5個ずつ累積されて、累積結果がタイミングTDc4でDc4〜0信号に出力される。なお最初の累積結果は、生成した2つの計数値0と、Da2〜0が1回入力されて3つに複製され、計数値が5つになった後に出力される。このようにして求められた累積結果は、コンパレータ13に入力されて2値化され、タイミングTDd0で拡大画像フレームメモリ3に書き込まれる。
【0064】
以上で、デスティネーション画像の最初の1ラインの処理が終わる。その後、タイミングTSX1で、次のラインの処理が開始される。この時には、X方向拡大・計数部11で、図14(B)に示した範囲B0に相当する重複数が求められ、同様の操作が行なわれる。
【0065】
以下同様にして、デスティネーション画像データが1ラインずつ生成されていく。なお、それぞれのユニットの中では数クロックにわたって処理が行なわれるので、図18でそれぞれの信号のタイミングの間はこのクロック分だけずれているところがある。
【0066】
図19は、本発明の第1の実施の形態において途中のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。ここでは、デスティネーション画像上で、そのXアドレスがm+1、m+2となる2ライン分の生成を行なう時の各データ信号のタイミングを表わしている。X方向拡大・計数部11では、それぞれ図8(B)に示す範囲A、範囲B、範囲Cのいずれかに相当する計数値が求められ、同様にラインの生成が行なわれる。
【0067】
次に、個々の回路について詳細に説明する。図20は、本発明の第1の実施の形態においてX方向DDA計算部の内部構成の一例を示すブロック図である。図中、61は初期値レジスタ、62は差分0レジスタ、63は差分1レジスタ、64,66はマルチプレクサ、65は加算器、67は残差フリップフロップである。この回路は、画像の拡大などに使われる公知のDDA計算を行なうものである。
【0068】
まず、一般的に行なわれているDDAによる拡大について説明を行なう。画像をX方向に拡大する時には、ソース画像からデスティネーション画像へ1画素ずつコピーが行なわれる。このとき、ソース画素の位置をDDA計算により制御しながら拡大が行なわれる。すなわち、DDA計算では、ソース画像のサイズSSIZE、デスティネーション画像のサイズDSIZEを使って、デスティネーション画像の1画素がコピーされるごとに残差と呼ばれる値を求め、残差の符号に応じてソース画像の画素位置を移動するか否かを判定する。このように、拡大が行なわれるときには、ソース画像の同じ画素がデスティネーション画像の数画素にわたってコピーが行なわれる。この画素数は重複数と呼ばれる。実際には、ソース画像のサイズSSIZE、デスティネーション画像のサイズDSIZEは、その比が一定であれば実際の画像のサイズよりも小さい値でよく、簡単のために3倍の場合でSSIZE=1、DSIZE=3として説明を進める。
【0069】
残差の値をEDとすると、まず初期値として2×SSIZE−DSIZE=−1がEDに設定される。その後、デスティネーション画像の1画素にコピーが行なわれるごとに、残差EDに、その符号に応じて以下の差分を加えていく。
EDが正または0の場合:2×(SSIZE−DSIZE)=−4
EDが負の場合 :2×SSIZE=2
一方、デスティネーション画素にコピーするソース画素は、残差EDの符号が正または0であるときだけ、コピーした後に位置を更新する。
【0070】
以上の操作の結果、3倍の例では、残差EDは以下のように変化していく。
−1、+1、−3、−1、+1、−3、−1、+1、−3、・・・
従って、最初のソース画素が2回、デスティネーション画素にコピーされた後、ソース画素の位置が更新され、その後3回ずつデスティネーション画素にコピーされながらソース画素の位置が1回更新される。なお、図14(B)において、3画素からなるDa2〜0の拡大結果が8画素となるのは、このようにデスティネーション画像の最初の画素には2回だけコピーが行なわれるためである。
【0071】
次に、図20に示す回路について説明する。初期値レジスタ61には、残差EDの初期値が格納される。また、差分0レジスタ62には残差EDが正または0の場合の差分が格納され、差分1レジスタ63には残差EDが負の場合の差分が格納される。マルチプレクサ64は、残差の符号SXに応じて差分0レジスタ62の値あるいは差分1レジスタ63の値のいずれかを選択する。加算器65は、マルチプレクサ64で選択された差分0レジスタ62あるいは差分1レジスタ63に格納されている差分の値と、残差EDの値を加算する。マルチプレクサ66は、信号IDDAXに基づいて、初期値レジスタ61に格納されている残差EDの初期値、あるいは加算器65で求めた残差EDのいずれかを選択し、残差フリップフロップ67に対して出力する。残差フリップフロップ67は、クロックCLKに従って残差EDの値を格納して出力する。出力された残差EDは加算器65に入力される。また、残差EDの符号SXがX方向データ拡大・計数部11に出力される。なお、残差フリップフロップ67にはイネーブル端子Eが付いており、EDDAX信号が入力されている。クロックCLKの立ち上がりでEDDAX信号が1の場合のみ、D入力がQ出力に現れ、その値を保持する。またクロックCLKの立ち上がりでEDDAX信号が1の場合には、それまでの値はQ出力に保持したままとなる。
【0072】
図20に示すX方向DDA計算部15の回路の一例における動作例について説明する。この回路は、1クロックごとに残差EDの値を更新する構成になっている。初期値レジスタ61、差分0レジスタ62、差分1レジスタ63には、予め上記の残差の初期値2×SSIZE−DSIZE、残差が正または0の場合の差分2×(SSIZE−DSIZE)、残差が負の場合の差分2×SSIZEの値が、4ビット符号付数で格納されているものとする。なお、図20では省略したが、これらのレジスタには拡大・平滑化回路の外部から任意の値を設定できるようになっているものとする。これらのレジスタに設定する値を変更することによって、X方向の倍率を任意に設定可能である。
【0073】
また、残差ED信号は4ビット符号付数で表わされており、その最上位の符号ビットが0ならEDは正または0、1なら負であることになる。この符号ビットはSX信号として出力される。
【0074】
まず、IDDAX入力およびEDDAX入力が1の場合には、マルチプレクサ66によって、残差フリップフロップ67の入力に初期値レジスタ61の値が入力され、この値がクロックの立ち上がりにおいて残差フリップフロップ67に保持される。従って、残差の初期化が行なわれる。
【0075】
次に、IDDAX入力が0でEDDAX入力が1の場合には、マルチプレクサ66によって、加算器65による加算結果が残差フリップフロップ67に入力され、この値がクロックの立ち上がりにおいて保持される。この時、SX信号として出力されるED信号の符号ビットがマルチプレクサ64に入力されている。従って、残差フリップフロップ67に保持されていた残差EDの値が正または0であるならば、マルチプレクサ64によって差分0レジスタ62の値が、また残差EDの値が負の場合には差分1レジスタ63の値が、加算器65のA入力に入力される。一方、加算器65のB入力には、残差EDの値が入力されているため、残差フリップフロップ67のD入力には、上記のDDAの計算において残差にその符号に応じた差分が加えられた値が入力されていることになる。そしてこの値は、EDDAX入力が1となる次のクロックの立ち上がりで残差フリップフロップ67に格納され、残差が上述のDDA計算の通りに更新されてゆく。
【0076】
最後にEDDAX入力が0の場合には、残差フリップフロップ67はそれまのデータを保持し続けるので、残差の更新は行なわれない。以上述べたように、図20の回路は、IDDAX、EDDAX入力に従ってDDA計算を行ない、残差EDの符号ビットSXを出力する。
【0077】
次に、X方向データ拡大・計数部11について説明する。前述のように、X方向データ拡大・計数部11では、1ライン分のソース画像データを入力する前に、X方向DDA計算部15で計算された残差符号をもとにして、拡大を行なう時の重複数を求める。この時求められる重複数は、平滑化のウインドウ内にある拡大後の画像に関するものである。
【0078】
一例として、図8(B)における範囲Aが計数の対象になっている場合の重複数について述べる。範囲Aの中には、Da2〜0信号から入力されるソース画素のうち、左側の画素が3つ、中心の画素が2つ含まれている。従って、Da2、Da1、Da0に対する重複数は、3、2、0となる。また別の例として、範囲Cが計数の対象になっている場合には、同様にDa2、Da1、Da0に対する重複数は1、3、1となる。
【0079】
重複数が求められた後、Da2〜0信号からソース画素の入力が開始される。このとき、X方向データ拡大・計数部11では、3画素のうち黒画素に対応する重複数のみが足し合わされる。この値は前述の計数の対象となる範囲内の黒画素数であるので、Db2〜0信号に出力される。このように、拡大画素を作成することなく、ソース画素から直接、計数値を求めることができる。なお、前述したように、上下の境界を処理するために、1ライン分の計数値の前後には、0データが付加される。
【0080】
次に、拡大・計数部の具体的な回路について説明する。図21は、本発明の第1の実施の形態においてX方向データ拡大・計数部の内部構成の一例を示すブロック図である。図中、71はMP累積回路、72は拡大/計数回路、73はマルチプレクサである。MP累積回路71は、X方向DDA計算部15で計算された残差の符号SXから上述の重複数を求め、求めた重複数を2進数で表わしたものをそれぞれMPC21〜20、MPC11〜10、MPC01〜00信号に出力する。拡大/計数回路72は、これらの重複数とDa2〜0信号とを入力し、上述の計数値を求めてSUM2〜0信号に出力する。
【0081】
一方、マルチプレクサ73では、制御信号BDXにより0データとSUM2〜0とのうちの1つが選択され、Db2〜0に出力される。すなわち、図18のTDb0、TDb2のように、1ラインの前後に付加する0データを出力している時には制御信号BDXが1となり、またTDb1のように計数データを出力する時には、制御信号BDXが0となる。
【0082】
次に、図21に示されているそれぞれの回路の動作について述べる。図22は、本発明の第1の実施の形態において拡大/計数回路の内部構成の一例を示すブロック図である。図中、81,82,83,86,87はANDゲート、84,85は加算器である。まず、ANDゲート86、87は、前述したように、右の境界処理を行なう時に、図15や図16に示すようにソース画像領域をはみ出した画素を0にするためのものである。このとき制御信号VDA1,VDA0が用いられる。Da2〜0が全てソース画像領域に入っている時は、VDA1、VDA0は1であり、Da1、Da0はそのまま使用される。ソース画像領域をはみ出した時の動作は、元画像メモリ制御部17の説明のところで後述するため、VDA1、VDA0は共に1であるとして説明を続ける。
【0083】
ゲート81、82、83は、ソース画素と重複数とを入力とするANDゲート2個ずつから構成されている。それぞれDa2、Da1、Da0が1すなわち黒である場合のみ、それぞれの画素に対応する重複数MPC21〜20、MPC11〜10、MPC01〜00を、信号pca2、pca1、pca0に出力する。Da2、Da1、Da0が0すなわち白の場合は、信号pca2、pca1、pca0が0となる。このようにして得られた信号pca2、pca1、pca0は、加算器84、85によって足し合わされ、SUM2〜0から出力される。これにより、ソース画像をX方向に拡大した後のウインドウ内部の黒画素数が出力されることになる。
【0084】
次に、MP累積回路71について説明する。図23は、本発明の第1の実施の形態においてMP累積回路の内部構成の一例を示すブロック図である。図中、91a〜91eはフリップフロップ、92a〜92eはフリップフロップ、93a〜93eはマルチプレクサ、94a〜94cはフリップフロップ、95a〜95cはカウンタ、96a〜96cはAND、97はバレルシフタ、98はインバータである。図23では、煩雑となるためクロック入力信号CLKの配線は省略したが、CLK信号は図中の全てのフリップフロップとカウンタのクロック入力に接続されているものとする。前述のように、MP累積回路71は1ライン分のソース画像データを拡大/計数回路72に入力する前に、X方向DDA計算部15より計算された残差の符号SXをもとに各ソース画素に対する重複数を求め、出力するものである。
【0085】
フリップフロップ91a〜91eは、残差符号SXをシフトしながら格納するイネーブル付きのフリップフロップであり、イネーブル端子Eには、イネーブル信号ESHIFが入力される。フリップフロップ92a〜92eは、バレルシフタ97の出力をロードし、さらにロードしたデータをシフトする。マルチプレクサ93a〜93eは、信号PSに従い、信号PSが1のときバレルシフタ97の出力を選択し、信号PSが0のとき前段のフリップフロップ92a〜92dの出力を選択する。なお、マルチプレクサ93aは、バレルシフタ97の出力あるいは1のいずれかを選択する。
【0086】
フリップフロップ94a〜94cは、フリップフロップ92a〜92eによるシフト結果をもとにカウンタのUP信号を作り出すイネーブル付きフリップフロップである。イネーブル端子Eにはフリップフロップ92eからのシフト出力がインバータ98を介して入力されている。また、フリップフロップ94aのプリセット端子PRとフリップフロップ94b,94cのリセット端子にはリセット信号RESが入力されており、この信号が1となることによって、フリップフロップ94a〜94cは1、0、0となる。フリップフロップ94aのデータ入力端子Dには0が入力されており、フリップフロップ94b,94cのデータ入力端子Dにはそれぞれ前段のフリップフロップ94a,94bのQ出力が接続されている。
【0087】
カウンタ95a〜95cは、それぞれのソース画素に対応して、その重複数を計数する。ANDゲート96a〜96cは、フリップフロップ94a〜94cの出力とカウントアップのイネーブル信号EUPとの論理積を計算してカウンタ95a〜95cのUP端子に入力する。バレルシフタ97は、フリップフロップ91a〜91eの出力をシフト数BSCに従ってシフトする。インバータ98は、フリップフロップ92eの出力を反転してフリップフロップ94a〜94cのイネーブル端子Eに入力する。
【0088】
この回路の動作は、以下のようになる。まず、X方向DDA計算部15により、そのラインで使用されるX方向の拡大画像を求めるだけの残差符号を計算し、フリップフロップ91a〜91eに格納する。その後、この残差符号をバレルシフタ97を通してフリップフロップ92a〜92eに格納し、フリップフロップ92a〜92eをシフトさせて残差符号を1個ずつ読み出す。読み出された残差符号の値に応じて、カウンタ95a〜95cのうち1個を選択してカウントする。以上の操作によって、各カウンタ出力にそれぞれのソース画素に対応した重複数が求められる。
【0089】
以下、X方向DDA計算部15とこのMP累積回路71の動作について詳細に説明する。図24は、本発明の第1の実施の形態において最初のラインの生成時におけるMP累積回路の動作の一例を示すタイミングチャートである。なお、タイミングチャートには、クロック信号CLKの立ち上がりに記号TCで始まる数字をつけてそのタイミングを区別する。
【0090】
上述のように、図14(B)の範囲A0に示されるデスティネーション画像の3画素分が計数の対象となるので、DDA計算部からは3個の残差符号が入力される。タイミングTC00は、図18のタイミングチャートにおいて、タイミングTSX0開始直後に対応し、タイミングTC09は、図18のタイミングTDb0開始直前に対応している。
【0091】
まず、X方向DDA計算部15で残差が初期化された後、3画素分の残差が求められる。タイミングTC01の前で信号IDDAXと信号EDDAXが1となるため、前述のようにX方向DDA計算部15の内部の残差EDを格納するフリップフロップ67はTC01で初期化されるとともに、TC01直後にSXから初期値の残差符号が出力される。また、TC01の後で信号IDDAXは0になるので、初期化は終了する。信号EDDAXはTC01の後さらに2クロック期間1になるので、TC02、TC03で残差の値は更新され、各タイミングの直後にSXから残差符号が出力される。以上の結果、残差の符号SXとして1、0、1が順番に出力される。また3画素分の残差符号が求まったので、信号EDDAXはTC03の後0となり、残差の更新はストップする。
【0092】
同時に、このようにして入力される3画素分の残差符号が、フロップフロップ91a〜91cに格納される。ESHIF信号は、タイミングTC02の前からTC04の後までの3クロック期間だけ1になる。この間だけフリップフロップ91a〜91eはイネーブル状態となるので、残差の符号SXの値は、フリップフロップ91a〜91cに順番にシフトされていく。この結果、TC04の後ではSXから出力された値は順番にQsc、Qsb、Qsaとして保持される。
【0093】
ここで保持された残差符号は、最も右側の有効な残差符号がフリップフロップ92eに格納されるように、バレルシフタ97によりシフトされた後、信号PSが1となってマルチプレクサ93a〜93eはバレルシフタ97の出力を選択し、フリップフロップ92c〜92eに格納される。
【0094】
ここで、バレルシフタ97は、入力の5ビットを、信号BSCの入力に応じた0〜4のシフト量だけ右にシフトし、出力する動作を行なう。なお、左側の空いた出力からは、1が出力される。このとき、信号BSCから入力されるシフト量は、バレルシフタの入出力の本数である5から、図14(B)の範囲A0で示される、計数の対象となるデスティネーション画像の画素数を引いたものとなるので、この場合は2である。
【0095】
タイミングTC05の前でBSC入力は値2、PS入力は1となる。このため、タイミングTC05で、フリップフロップ92c〜92eにはバレルシフタ97によりフリップフロップ91a〜91cに保持され信号Qsa〜Qscとして出力されていた残差符号値が、またフリップフロップ92a、92bには1が、それぞれロードされる。
【0096】
その後、PS入力が0となり、フリップフロップ92a〜92eはマルチプレクサ93a〜93eを介してシフト動作を始める。このとき、バレルシフタ97により最も右側の有効な残差符号がフリップフロップ92eに格納されるようにシフトされたので、PS入力が0となる直後のクロックの立ち上がりから、Qeに残差符号が順番に現れる。
【0097】
従って、タイミングTC05、TC06、TC07で、Qeに残差符号が読み出されていき、インバータ98で反転されてフリップフロップ94a〜94cのイネーブル信号EUFFとなる。よって、EUFFは残差が0または正のときのみ1となってフリップフロップ94a〜94cをイネーブルにする。上述のように、残差符号は1、0、1が入力されているので、EUFFは0、1、0となる。
【0098】
タイミングTC05でRES信号は1になっているので、フリップフロップ94aは1をプリセットし、出力Quaは1となる。フリップフロップ94b、94cではRES信号によってリセットされるので、出力Qub、Qucは0を出力する。その後、RES信号は0になるので、プリセット、リセットは解除される。
【0099】
一方、上述の通りTC05以降の3クロックでフリップフロップ94a〜94cのイネーブル信号EUFFは0、1、0となる。従って、EUFFが1となるTC07で、フリップフロップ94a〜94cがイネーブルとなり、フリップフロップの値は右にシフトする。このとき、フリップフロップ94aには0が入力されているのでQuaは0となる。
【0100】
以上の結果、Qua、Qub、Qucのうち、タイミングTC06、TC07ではQuaのみが1、タイミングTC08ではQubのみが1となる。このように、フリップフロップ94a〜94cはつねにどれか1個が1を出力している状態となる。
【0101】
カウンタ95a、95b、95cは、図14(B)の範囲A0にある画素を生成するための重複数を計数する。ここでまず、これらのカウンタの計数を制御するUP入力には、ANDゲート96a、96b、96cが接続されている。このANDゲートの一方の入力には、フリップフロップ94a〜94cの出力が、もう一方の入力には、EUP信号が入力されている。ここで、EUP信号は、TC06の前から図14(b)の範囲A0にある画素数である3クロック期間だけ1になるとする。それ以外の期間はEUP信号は0であるため、UP入力は常に0になる。従って、カウンタ95a、95b、95cは、TC06、TC07、TC08の3クロック期間だけカウントが可能である。
【0102】
カウンタ95a、95b、95cのリセット入力には、RES入力が入っているので、フリップフロップ94a〜94cと同様、TC05でリセットされ、出力はすべて0になる。次にTC06、TC07で、上述の通りQuaのみが1となるので、カウンタ95aのみが2回カウントアップする。さらにTC08で、上述の通りQubのみが1となるので、カウンタ95bのみが1回カウントアップする。TC09以降は、EUP信号が0となるので、カウンタ95a、95b、95cはカウントされた値を保持する。
【0103】
この結果、EUP信号が立ち下がった次のクロックの立ち上がりのタイミングである、タイミングT09の時点で、それぞれのソース画素に対応した重複数を表わすMPC21〜20、MPC11〜10、MPC01〜00からDDAによって計算した3画素分の重複数である2、1、0が出力される。
【0104】
このように、フリップフロップ92eから残差符号を順番に読み出しながら、1つだけ1を出力しているフリップフロップ94a〜94cを残差符号が正の時にシフトすることにより、カウンタ95a、95b、95cはそれぞれDa2、Da1、Da0から入力されてくるソース画素の重複数だけ計数される。さらに、EUP信号は平滑化のウインドウ内にある拡大後の画画素数だけ1となるので、カウンタ95a、95b、95cのカウント値の合計はこの画素数と一致し、上記重複数は、平滑化のウインドウの範囲に相当するものとなる。このようにして、MP累積回路71で、デスティネーション画像の最初のラインに対応したX方向の重複数が計算される。
【0105】
図25は、本発明の第1の実施の形態において2番目のラインの生成時におけるMP累積回路の動作の一例を示すタイミングチャートである。ここでの動作のうち、図24と同じものに関しては、詳しい説明は省略する。
【0106】
2番目のラインの場合には、図14(B)の範囲B0に示される4画素分が計数の対象となる。このとき、最初のラインの処理時に最初の3画素分の残差符号はすでに計算されており、フリップフロップ91a〜91cに格納されている状態である。従って、タイミングTC13で1クロック分だけ信号EDDAXが1になり、X方向DDA計算部15から1画素分の残差符号だけが出力される。
【0107】
またこのとき、タイミングTC14で信号ESHIFが1クロックの間だけ1になるため、フリップフロップ91a〜91eが1ビット右にシフトされるとともに、新たな残差符号がフリップフロップ91aに格納される。従って、T14において、図14(B)の範囲B0の画素に対応した残差符号がQsd、Qsc、Qsb、Qsaから出力される。
【0108】
さらに、バレルシフタ97のシフト量BSCには、Qsdの値がフリップフロップ92eに格納されるように1が設定され、タイミングTC15でQsa〜Qsdの内容がフリップフロップ92b〜92eにロードされる。その後、前述と同様にしてQeから残差符号が順番にシフトされていき、フリップフロップ94a〜94cによってカウンタ95a〜95cが順番に計数される。なお、このとき、範囲B0の画素数は4画素であるから、EUP信号は4クロック分が1になっている。以上のようにして、タイミングTC110の時点でカウント動作が終了し、2番目のラインに対応した重複数が求められる。
【0109】
3番目のラインの重複数を求める時には、図14(B)の範囲C0にある5画素が計数の対象になるので、2番目のラインと同様、1回だけDDAの残差が更新されてその残差符号が入力される。またバレルシフタのシフト量BSCは、Qseの値がフリップフロップ92eに格納されるように0となり、さらに5画素分計数するため、カウンタを制御するEUP信号は5クロックの期間が1となる。以下同様の操作が行なわれ、重複数が求められる。以下、計数の対象となる画素数は5のままであり、同様の操作によって重複数が求められる。
【0110】
図26は、本発明の第1の実施の形態において途中のライン生成時におけるMP累積回路の動作の一例を示すタイミングチャートである。このように3番目のライン以降はほぼ同様の動作を行なうが、ここでは一例として、図8(B)の範囲Cにある画素の重複数を求める場合を例に取り、説明する。ここでの動作のうち、今までの説明と同じものに関する説明は省略する。
【0111】
この重複数の計算前には、図8(B)の範囲Bに関する重複数の計算が行なわれており、範囲Bのデスティネーション画素を計算するための残差符号がフリップフロップ91a〜91eに格納されている状態である。このうち、91a〜91dに格納されているものを再利用するため、2番目のラインの計算と同様、X方向DDA計算部では、追加される1画素分の残差符号のみを計算する。この結果、タイミングTC24において、フリップフロップ91a〜91eが1ビット分右にシフトされるとともに、新たに求められた残差符号がフリップフロップ91aに格納される。このとき、フリップフロップ91eに格納されていた範囲Bの右端のデスティネーション画素に対応する残差符号は捨てられる。従って、範囲Cの画素に対応する残差符号がフリップフロップ91a〜91eに格納される。
【0112】
以後、範囲Cの画素数は5であるため、バレルシフタでシフトを行なう時のシフト量BSCはQseの値がフリップフロップ92eに格納されるように0となる。さらに5画素分の計数を行なうので、カウンタを制御するEUP信号は5クロックの期間が1となり、同様の操作が行なわる。この結果、タイミングTC211の時点でカウント動作が終了し、重複数が求められる。
【0113】
次に図8(B)の範囲Dに対応する重複数を求める場合について説明する。図27は、本発明の第1の実施の形態において読み込む画素データが変更される場合のMP累積回路の動作の一例を示すタイミングチャートである。ここで、範囲Cの処理から範囲Dの処理に移る場合、前述のようにDa2〜0から入力されるソース画像データは1画素分ずらしたものになる。このときにも重複数は正しく計算される。
【0114】
まず、範囲Cの重複数を求める時は、図26に示す通りフリップフロップ91a〜91eに格納される残差符号の値は“10110”であり、従ってイネーブル信号EUFFにより、フリップフロップ94aのイネーブル端子の入力はTC25の直後から1、0、0、1、0の順番で変化する。このようにTC26においてフリップフロップ94aのイネーブル信号は1であるため、このフリップフロップの出力はTC26の直後に0に立ち下がる。従って、カウンタ95aは、TC26において1回だけカウントアップする。このカウント値は、ソース画像データDa2の重複数となっている。
【0115】
次に、範囲Dの重複数を求める時には、図27の通りフリップフロップ91a〜91eに格納される残差符号の値は“11011”であり、従ってフリップフロップ92eの反転出力EUFFにより、フリップフロップ94aのイネーブル信号はTC35の直後から0、0、1、0、0の順番で変化する。このことより、フリップフロップ94aのイネーブル信号はTC38まで1とならないため、このフリップフロップ94aの出力はTC38の直後まで1のままである。この結果、カウンタ95aはTC38の直後までカウントアップを続け、最終的には3になる。このカウント値は、ソース画像データを1画素分ずらした後Da2から入力されるデータに対する重複数となっている。
【0116】
このように、Da2〜0から入力されるソース画素がずれたときにも、正しく重複数が求められる。なお、Da2〜0から入力するソース画像をずらす時には、MP累積回路71のMPC21〜20信号などをもとにして制御される。詳しくは、元画像メモリ制御部のところで述べる。以上述べたように、MP累積回路71において各ソース画素に対応する重複数が求められる。
【0117】
次に、X方向DDA計算部15、X方向データ拡大・計数部11によって1ライン分のDb2〜0が生成される手順について述べる。まず、元画像フレームメモリ2からソースデータを入力する前に、上述したように、X方向DDA計算部15、MP累積回路71を動作させ、ソース画素に対する重複数を求める。その後、Da2〜0からソース画像の入力を開始し、またDb2〜0からデータを出力する。
【0118】
このとき、まず前述の境界処理を行なうために追加する0データをDb2〜0から2クロック分出力する。このために、図21に示したBDX信号を2クロック期間だけ1にして、マルチプレクサ73によって0データを出力する。
【0119】
その後、BDX信号を0にして、Da2〜0からソース画素のデータを1ライン分入力する。このとき、元画像メモリ制御部17は後述する手順に従って元画像フレームメモリのアドレスを生成するが、Y方向のアドレスが更新されるごとにアクセスが発生するため、Da2〜0からは3クロックに1個ずつのソース画像データが入力される。
【0120】
また、拡大/計数回路72には、MP累積回路71で求まった重複数が固定されているので、Da2〜0から入力されたデータは図22に示す組合せ回路によってX方向への拡大後の黒画素数が求められ、SUM2〜0から出力される。このとき、マルチプレクサ73によってSUM2〜0が選択されているので、拡大後の黒画素数がDb2〜0から1ライン分出力される。
【0121】
その後、BDX信号は再び2クロック分0となり、前述の境界処理を行なうために追加する0データがDb2〜0から2クロック分出力される。その後、次のラインの処理が同様に繰り返される。
【0122】
なお、ここで述べたX方向DDA計算部15の制御信号(IDDAX、EDDAX)、MP累積回路71の制御信号(ESHIF、BSC、PS、RES、EUP)、X方向データ拡大・計数部11の制御信号(BDX)は、それぞれ所定のタイミングに従って、全体制御部19によって生成されるものとする。
【0123】
次に、Y方向データ累積部12について説明する。このY方向データ累積部12は、X方向データ拡大・計数部11から送られてくるDb2〜0信号を、Y方向の倍率に合わせて重複させるとともに、図9に示したように5個ずつ加え、そのデータをDc4〜0信号に出力するものである。
【0124】
図28は、本発明の第1の実施の形態においてY方向データ累積部の内部構成の一例を示すブロック図である。図中、101,102a〜102e,105はフリップフロップ、103は加算器、104は減算器、106はORゲートである。フリップフロップ101は、X方向の計数結果を重複させるためのイネーブル入力付のフリップフロップである。イネーブル端子Eには、ORゲート106を介してY方向DDA計算部16からSY信号が入力されており、SY信号が0の間、同じ計数値を出力し続ける。フリップフロップ102a〜102eは、Db2〜0から入力されたX方向の計数結果を5クロック分遅らせるためのフリップフロップである。加算器103には、新たにフリップフロップ102aに保持される計数値と、フリップフロップ105に保持されている累積値が入力されており、両者の和を計算して計数結果の累積計算を行なう。減算器104は、累積結果からフリップフロップ102eの出力を引く。フリップフロップ105は5個分の累積結果を格納する。ORゲート106にはSY信号とともにYZCNT信号が入力されており、YZCNT信号によってもフリップフロップ101のイネーブル入力が制御される。通常はYZCNT=0なので、SY信号がそのまま出力される。
【0125】
新たな計数値が入力されると、フリップフロップ101によって3クロックの間保持される。そして、クロックCLKに従ってフリップフロップ102a〜102eに順にシフトされて行く。これによって3倍の拡大が実現される。クロックCLKに従ってフリップフロップ102aに計数値が格納されるとともに、その値に加算器103でフリップフロップ105に保持されている累積結果が加え合わされる。それとともに、減算器104により、フリップフロップ102eによって保持されていた5クロック前のデータを引くことによって、新たな5個分の累積結果が得られ、フリップフロップ105に格納される。
【0126】
この動作をさらに説明する。前述のように、Db2〜0からは3クロックごとにX方向の計数結果が入力され、その前後には2クロック分の0データが入力される。図29は、本発明の第1の実施の形態においてY方向データ累積部の動作の一例を示すタイミングチャートである。タイミングTC41以降、Db2〜0からデータが順番に入力されている。なお、()で囲んだ数字はDb2〜0から入力された計数値の番号を示し、また“”で囲んだ数字はその値そのものを示している。その他の数字は、このY方向データ累積部12で累積計算を行なったデータの番号を表わし、データ1などと呼ぶことにする。このデータは、デスティネーション画像のY方向の画素数である192個ある。
【0127】
一方、フリップフロップ101,102a〜102eには、ハイアクティブのリセット入力RES2によってリセットがかけられるので、TC42においてそれらの出力は全て0になっている。なお、このリセット入力信号RES2は、所定のタイミングに従って、全体制御部19によって生成されるものとする。その後、Db2〜0から最初に入力される0データのためにさらに2クロック分0が出力されるので、TC43までフリップフロップ101,102a〜102eの出力は全て0である。
【0128】
その後、TC44においてフリップフロップ101にデータ(1)が格納される。この値は、Y方向DDA計算部16から倍率に応じた次の制御信号SYが入力されるまで保持される。ここでは3倍に拡大するので、3クロックだけ保持される。次のタイミングTC45,TC46,TC47でそのデータがデータ1,2,3としてフリップフロップ102aおよび加算器103に順次取り込まれる。TC47においてDb2〜0信号で計数結果が入力されるとともに、信号SYが入力されるので、フリップフロップ101は新たな計数結果のデータ(2)を格納し、出力する。このデータ(2)は、TC48〜50でデータ4〜6としてフリップフロップ102aおよび加算器103に取り込まれる。以下、同様にして1つの計数値が3つのデータとして処理される。これによって、Y方向の拡大を実現している。
【0129】
フリップフロップ101から出力されたデータは、1クロックごとにフリップフロップ102aに取り込まれ、フリップフロップ102a〜102eをシフトしていく。
【0130】
データ1がフリップフロップ102eまでシフトされるタイミングTC49までは、QDLY信号は0のままである。従って、TC49までは減算器104のマイナス側の入力は0であって、加算器103とフリップフロップ105とにより構成されるループ構造により、それまでにフリップフロップ102aに出力されるデータが累積され、Dc4〜0から出力される。従って、TC47、TC48、TC49の直後にDc4〜0から出力されるデータ1’,2’,3’は、以下の通りになる。
<1’>=<1>+<2>+<3>
<2’>=<1>+<2>+<3>+<4>
<3’>=<1>+<2>+<3>+<4>+<5>
【0131】
次に、タイミングTC410の直後、データ1がQDLYに現れて減算器104のマイナス側に入力される。またこのとき、減算器104のプラス側の入力には、加算器103により、以下に示すデータが入力されている。
<3’>+<6>=<1>+<2>+<3>+<4>+<5>+<6>
以上のことから、減算器104により、<3’>+<6>−<1>の計算が行なわれ、その出力OSUBには
<4’>=<2>+<3>+<4>+<5>+<6>
が現れる。この値はTC410でフリップフロップ105に格納され、Dc4〜0から出力される。
【0132】
以下同様にして、Dbからの入力データを5個ずつ累積した値である
<5’>=<3>+<4>+<5>+<6>+<7>
<6’>=<4>+<5>+<6>+<7>+<8>
・・・
が、Dc4〜0から出力される。
【0133】
その後、この操作が続けられていき、TC433でフリップフロップ101からの出力を192番目のデータとしてフリップフロップ102aおよび加算器103が取り込んだ後、再び0データが2クロック分入力されるので、この付近の出力値は
<190’>=<188>+<189>+<190>+<191>+<192>
<191’>=<189>+<190>+<191>+<192>
<192’>=<190>+<191>+<192>
となり、1ライン分の累積値の出力が終了する。なお、最初の0データと最後の0データがDb2〜0から入力されるときは、フリップフロップ101は信号YZCNTを1にすることによりORゲート106の出力が1になり、強制的にイネーブルとされる。
【0134】
以上のようにして、Dc4〜0からデータが出力される。この出力は、最初のデータがフリップフロップ101に入力されてから6クロック後に始まり、1クロックにつき1個ずつ、デスティネーション画像のY方向の画素数である192個だけ出力される。
【0135】
以上述べたように、Dc4〜0から出力される累積値のデータは、Db2〜0から入力されるX方向に計数された拡大画像の黒画素数を倍率に応じてY方向に重複させ、さらに5つずつ累積したものとなっているので、平滑化のウインドウ中の黒画素数になる。さらに、最初に出力されるデータ1’と2’は、ウインドウの下の境界からはみ出したデータを白とした時の結果となっており、また最後に出力されるデータ191’と192’とは、ウインドウの上の境界からはみ出したデータを白とした時の結果となっているので、前述した境界処理も正しく行なわれていることがわかる。
【0136】
このようにしてDc4〜0から出力される累積値のデータは、さらにコンパレータ13により閾値レジスタ14に保持されている閾値と比較され、2値化されて、デスティネーション画像の1画素が生成され、Dd0から拡大画像フレームメモリ3に出力される。
【0137】
次に、Y方向DDA計算部16、元画像メモリ制御部17の動作について説明する。これらの回路により、元画像フレームメモリ2からソース画像データを読み出すときのアドレスが生成される。前述のように、ソース画像データは1ラインずつ読み出されるため、アドレスはY方向に連続して生成される。また、X方向の計数値をY方向に拡大するための制御信号も生成される。
【0138】
まず、Y方向DDA計算部16について説明する。Y方向DDA計算部16は、X方向DDA計算部15と同様、前述のDDA計算によって残差を更新して残差符号を出力する。残差符号は、DDAの説明で述べたようにして、Y方向への拡大に使われる。
【0139】
図30は、本発明の第1の実施の形態においてY方向DDA計算部の内部構成の一例を示すブロック図である。図中、111は初期値レジスタ、112は差分0レジスタ、113は差分1レジスタ、114,116はマルチプレクサ、115は加算器、117は残差フリップフロップである。この構成は、図20に示したX方向DDA計算部15の内部構成と全く同じであるため、詳しい説明は省略する。
【0140】
この回路において、初期値レジスタ111、差分0レジスタ112、差分1レジスタ113、マルチプレクサ114、116、加算器115、残差フリップフロップ117は、それぞれ図20の初期値レジスタ61、差分0レジスタ62、差分1レジスタ63、マルチプレクサ64,66、加算器65、残差フリップフロップ67に対応する。また、IDDAY、EDDAY信号により、図20のIDDAX、EDDAX信号と同様、初期値の設定と残差の更新を制御し、残差符号がSY出力から出力される。
【0141】
また、初期値レジスタ111、差分0レジスタ112、差分1レジスタ113は、外部から任意の値が設定可能であるとする。この例ではY方向の倍率も3倍であるので、X方向DDA計算部のレジスタと同じ値が設定される。これらのレジスタに設定する値によって、Y方向の倍率を任意に設定することができる。
【0142】
次に、元画像フレームメモリ2について説明する。元画像フレームメモリ2はアドレスAa11〜0を入力して、ソース画像データをDa2〜0に読み出す。なお、元画像フレームメモリ2は読み出し動作のみが行なわれ、Aa11〜0からアドレス信号が入力された時、対応するデータが1クロック後Da2〜0に読み出されるものとする。ここでは、ソース画像データの座標と、元画像フレームメモリ2のアドレスとの対応について説明する。
【0143】
ここでは、アドレス信号の上位6ビットであるAa11〜6で表わされる符号なし数をYs、下位6ビットであるAa5〜0で表わされる符号なし数をXsとしたとき、Da2からはその座標が(Xs,Ys)で表わされるソース画像データの1画素が、Da1からはその座標が(Xs+1,Ys)で表わされる1画素が、またDa0からはその座標が(Xs+2,Ys)で表わされる1画素が読み出されるものとする。但し、Xs+1、またはXs+2が、ソース画像領域のXアドレスの範囲を越えていた場合には、Da1またはDa0からは任意の値が読み出されるものとする。
【0144】
このような読み出し方は、元画像フレームメモリをデータの読み出しの単位が1ビットである64word×16bitの容量のメモリを4個用いることにより実現できる。すなわち、4個のメモリをそれぞれメモリ0、1、2、3とすると、画素のXアドレスの下位2ビットが00の画素データをメモリ0、01の画素データをメモリ1、10の画素データをメモリ2、11の画素データをメモリ3に格納する。この時、各メモリ共、その上位6ビットを画素のY座標、下位4ビットを画素のX座標の上位4ビットとするようなアドレスに1画素を格納する。このようなメモリに対して、アドレスAa11〜0を与えてアクセスした時、Da2〜0には、Aa1とAa0入力の組合せに応じて以下のメモリからデータを読み出すようにする。
(1)Aa1=0、Aa0=0の時
Da2:メモリ0のアドレス(Aa11〜2)のデータ
Da1:メモリ1のアドレス(Aa11〜2)のデータ
Da0:メモリ2のアドレス(Aa11〜2)のデータ
(2)Aa1=0、Aa0=1の時
Da2:メモリ1のアドレス(Aa11〜2)のデータ
Da1:メモリ2のアドレス(Aa11〜2)のデータ
Da0:メモリ3のアドレス(Aa11〜2)のデータ
(3)Aa1=1、Aa0=0の時
Da2:メモリ2のアドレス(Aa11〜2)のデータ
Da1:メモリ3のアドレス(Aa11〜2)のデータ
Da0:メモリ0のアドレス(Aa11〜2)+1のデータ
(4)Aa1=1、Aa0=1の時
Da2:メモリ3のアドレス(Aa11〜2)のデータ
Da1:メモリ0のアドレス(Aa11〜2)+1のデータ
Da0:メモリ1のアドレス(Aa11〜2)+1のデータ
このような構成は、容易に実現することができる。
【0145】
次に、元画像メモリ制御部17について説明する。この回路では、前述したように、Y方向DDA計算部16によって計算された残差の符号に応じてY座標を更新し、元画像フレームメモリ2のアドレスを生成する。また、デスティネーション画像の1ラインの生成後、次のX方向のウインドウ領域に応じて、次に読み出すソース画像のX座標を更新する。
【0146】
図31は、本発明の第1の実施の形態において元画像メモリ制御部の内部構成の一例を示すブロック図である。図中、121はY座標初期値設定レジスタ、122はX座標初期値設定レジスタ、123はX座標最大値設定レジスタ、124はY座標カウンタ、125はX座標カウンタ、126はANDゲート、127はインバータ、128は+1インクリメンタ、129は+2インクリメンタ、130,131は比較器である。X座標初期値設定レジスタ122、Y座標初期値設定レジスタ121、X座標最大値設定レジスタ123には、予めX座標、Y座標の初期値およびX座標の最大値が設定されている。なお、図31では省略したが、これらのレジスタには外部から任意の値を設定できるようになっており、元画像の一部分のみを設定することも可能である。
【0147】
X座標とY座標はそれぞれ、X座標カウンタ125、Y座標カウンタ124によって生成される。X座標初期値設定レジスタ122、Y座標初期値設定レジスタ121に格納されているX座標、Y座標の初期値は、それぞれLDXS信号、LDYS信号によってX座標カウンタ125、Y座標カウンタ124にロードされる。また、X座標カウンタ125のカウントアップはUPXS信号によって行なわれる。Y座標カウンタ124のカウントアップは、UPYS信号と、Y方向DDA計算部16からの残差の符号SYの反転信号との論理積の信号によって行なわれる。残差の符号SYの反転はインバータ127で行なわれる。また、論理積はANDゲート126で計算される。Y座標カウンタ124、X座標カウンタ125の出力がアドレスAa11〜0として出力される。
【0148】
X座標カウンタ125の出力は、さらに+1インクリメンタ128で1だけ加算され、また、+2インクリメンタ129で2だけ加算される。そして、比較器130,131でX座標最大値設定レジスタ123の内容と比較され、比較結果がVDA1,VDA0信号として図22に示す拡大/計数回路72に出力される。これらの信号は、上述のようにデスティネーション画像の右端からはみ出した画素を強制的に0とするために用いられる。
【0149】
以下、Y座標カウンタ124、X座標カウンタ125を中心にして、Y座標、X座標が生成される時の動作を説明する。ここでまず、Y座標を生成する時の動作について、Y方向DDA計算部16の動作とともに説明する。
【0150】
図32は、本発明の第1の実施の形態において元画像メモリ制御部の動作の一例を示すタイミングチャートである。図32では、任意の1ラインを読み出す時の、Yアドレスを生成する動作を示している。但し、タイミングTC50において、前述の図21に示したX方向データ拡大・計数部11内のMP累積回路71による重複数の計算は終わっているものとする。
【0151】
まず、TC52の手前で、IDDAY、EDDAY信号がともに1となるので、Y方向DDA計算部16の残差データがTC52において初期化される。その後、IDDAY信号だけが0になり、EDDAY信号は1のままであるので、連続してY方向の残差が更新される。なお、残差はデスティネーション画像のY方向の画素数である192回繰り返して更新される。その後、EDDAY信号は0となり、TC553で更新は終了する。
【0152】
これと同様に、TC52の手前でLDYS信号が1クロック期間1となるので、Y座標カウンタ124には、Y座標初期値設定レジスタ121の内容がロードされる。なお、この時のUPYS信号の値は任意でよいものとする。その後、UPYS信号が1になる。一方、Y座標カウンタ124のUP入力には、Y方向DDA計算部で計算された残差符号SYの反転値とUPYS信号とからANDゲート126で論理積が計算されて入力されるので、それぞれのクロックの立ち上がりのタイミングにおける残差符号の値が0となる時だけ、カウンタの内容が更新される。
【0153】
なお、UPYS信号は、カウンタのカウント値がソース画像領域のY座標の最大値となった後に、0となる。図では、TC553の手前においてY座標が54になっているので、この時に0になっている。このようにしてカウントされたY座標は、信号Aa11〜6から元画像フレームメモリに出力される。
【0154】
以上の操作において、タイミングTC55からTC553までの間はX座標は固定されており、この値が信号Aa5〜0から出力される。従って、X方向に連続した3ビットのソース画像データが、順番にY方向に読み出されていく。
【0155】
以上の結果、残差が負である時はY座標が更新されず、同じアドレスが3クロック分出力され続けるが、ソース画像データが読み出されるのは最初のクロックの時だけである。あるいは、3回読み出されるが、そのうちの1回しかX方向データ拡大・計数部11に取り込まれない。
【0156】
次に、X座標を生成する時の動作について、図18、図19のタイミングチャートも参考にしながら説明する。上述の通り、元画像フレームメモリ2から1ライン分のデータが読み出されている時は、X座標は固定されている。従って、X座標カウンタは、1ライン分のデータの読み出し前に動作する。
【0157】
まず、最初の1ラインの読み出しの前に、1クロック期間だけLDXS信号を1にすることによって、X座標初期値設定レジスタ122に設定されている初期値がX座標カウンタ125にロードされる。なお、この時のUPXS信号の値は任意でよいものとする。この操作は、例えば、図18のTSX0の中の1クロックを使って行なうことができる。
【0158】
その後、LDXS信号、UPXS信号はともに0に固定される。従って、最初のラインの読み出し時にXアドレスを初期値に固定した状態で元画像フレームメモリ2からソース画像データが読み出される。
【0159】
ソース画像データを1ライン分読み出した後、次に読み出す1ラインの内容は、前述の通り2通りある。すなわち、全く同じ内容を再度読み出す場合と、X方向に1画素分ずらしたものを読み出す場合である。前者の場合には、UPXS入力は0のままとなり、X座標は更新されずに次の1ラインが読み出される。後者の場合には、次の1ラインを読み出す前に、1クロック期間だけUPXS信号を1にすることによって、X座標カウンタ125に格納されているX座標を1だけインクリメントした後、次の1ラインが読み出される。UPXS信号を1にする操作は、例えば、前述のMP累積部71によって重複数を計算する間の1クロックを使って行なうことができる。
【0160】
前述のように、X方向に1画素分ずらしたラインを読み出すのは、Da2から入力されていたソース画素が、次のラインの処理に使われる平滑化のウインドウ中の拡大画素に使われなくなる場合である。すなわち、ある1ラインに対してMP累積部71で求められたDa2の重複数が1である時に、その次のラインを読み出す前にX座標をインクリメントすればよい。これは、前述の範囲C、Dに対するMP累積部71の説明で述べたことからもわかる。
【0161】
次に、以上述べた、LDXS信号、UPXS信号を生成する回路の一例について説明する。図33は、本発明の第1の実施の形態において元画像メモリ制御部の制御信号を生成する回路の一例を示すブロック図である。図中、141は立ち上がり検出回路、142は比較器、143はANDゲート、144はJKフリップフロップ、145はフリップフロップである。立ち上がり検出回路141は、EDDAX信号の立ち上がりを検出してEUP信号を出力する。比較器142は、MP累積回路71から出力されるDa2の重複数を示すMPC21〜20が1か否かを判定し、1である場合にEQ1信号を出力する。これにより、1ライン前のX方向の計数範囲が図8(B)における範囲Cであることを検知し、次の計数範囲の設定時にはX方向にシフトさせる必要があることを認識する。この比較器142の出力はANDゲート143で立ち上がり検出回路141の出力であるEUP信号と論理積が計算され、JKフリップフロップ144のJ端子に入力される。これにより、1クロック分のパルスがUPXS信号として出力される。一方、フリップフロップ145は、IDDAX信号をラッチし、LDXS信号として出力する。
【0162】
図34は、本発明の第1の実施の形態において元画像メモリ制御部の制御信号を生成する回路の動作の一例を示すタイミングチャートである。図34に示すタイミングチャートは、最初のラインから3ライン分の処理を行なう時の、図33の動作を示したものである。図では、X方向DDA計算部15で使用されるIDDAX、EDDAX信号も示した。これらの信号は、図24、図25に示した通りに変化する。
【0163】
UPXS、LDXS信号とも、各ラインを入力する前に、IDDAX信号、EDDAX信号をもとにして生成される。まず、X方向DDA計算部15のIDDAX信号は、前述のとおり拡大操作の最初で1回だけ1になるので、LDXS信号に使うことができる。図33では、この信号をフリップフロップ145で1クロック遅延させたものをLDXS信号に使用している。従って、LDXS信号は図34のタイミングTC62で1クロックだけ1となり、X座標が初期化される。このとき、TC62でJKフリップフロップ144の出力は0になるので、X座標は初期値に固定された状態で、最初のラインが読み込まれる。
【0164】
一方、UPXS信号は、EDDAX信号をもとにして生成される。まず、立ち上がり検出回路141によって、EDDAX信号が立ち上がった時に、EUP信号は1クロックだけ1になる。従って、最初のラインでは、EDDAX信号はタイミングTC61〜TC63まで1になっているが、EUP信号はTC61のみで1になっている。他のラインでも、EUP信号はEDDAX信号が立ち上がるTC611、TC621、TC631で1クロックだけ1になっている。
【0165】
また、Da2の重複数であるMPC21〜20は、コンパレータ142で値1と比較され、1である時だけEQ1出力は1になる。EQ1出力は、上記EUP信号とともにANDゲート143に入力されているので、TC61、TC611、TC621、TC631だけでEQ1信号の論理に従ってEUP信号が制御され、ANDゲート143から出力される。
【0166】
ここで、MP累積部71の説明で述べたように、重複数を求めるカウンタは、それぞれEDDAX信号が立ち下がるタイミングの1クロック後でリセットされる。従って、EUP信号が1になるタイミングでは、前のラインの処理に使った重複数を保持した状態である。そのため、1つ前のラインの処理時に、MPC21〜20が1である時にだけ、ANDゲート143は1クロックだけ1になる。ここでは、ライン2の時にMPC21〜20が1であるので、タイミングTC621で1クロックだけANDゲートは1を出力する。
【0167】
ANDゲートの出力は、JKフリップフロップ144のJ入力に入力されているため、TC621の後にJKフリップフロップのQ出力は1になる。一方この出力はK入力に入力され、次のクロックで再度Q出力は0になる。これにより、UPXS出力はタイミングTC622で1クロックだけ1になる。従って、ライン2の入力が終了した後、UPXS信号が1クロック期間だけ1になるので、X座標が1だけインクリメントされて、ライン3が読み込まれる。
【0168】
以下、同様にして、MPC21〜20が1である時に、次のラインが読み込まれる前にX座標が1だけインクリメントされる。例えば、図8(B)の範囲Cを計数の対象とするラインの入力が終わった時、MPC21〜20が1になっているので、同様にしてX座標がインクリメントされ、次の入力は1画素分ずれたソース画像データとなる。
【0169】
Da2〜0に読み出される3ビットの画像データに、右の境界をはみ出しているデータが含まれているときの処理について述べる。前述のように、はみ出した画像データは0として扱われる。この処理は、拡大/計数回路72で行なわれ、Da1、Da0がともにソース画像領域からはみ出している場合には、VDA1、VDA0が0となり、図22のANDゲート86、87でDa1、Da0から読み出されたデータのかわりに0がソース画像データとして処理される。また、Da0がソース画像領域からはみ出している場合には、VDA0が0となり、図22のANDゲート87でDa0から読み出されたデータのかわりに0がソースデータとして処理される。
【0170】
このとき、VDA1、VDA0信号は図31に示す回路で生成される。以下、VDA1、VDA0信号を生成する回路の動作について説明する。まず、カウンタ125によって出力されるソース画像データのX座標は+1インクリメンタ128、+2インクリメンタ129に入力される。ここで、このX座標をXsとすると、前述の通り、元画像フレームメモリからDa2〜0に入力される画像データのX座標は、Xs、Xs+1、Xs+2となる。従って、+1インクリメンタ128、+2インクリメンタ129によって、Xsの値からXs+1、Xs+2が生成される。
【0171】
そしてこれらの出力値は、比較器130、131でX座標最大値レジスタに設定されているX座標の最大値と比較される。各比較器130,131では、Xs+1またはXs+2の値がX座標の最大値より大きい時だけ0が出力されるので、各座標が右の境界をはみ出しているときだけVDA1、VDA0信号に0が出力される。なお、前述のように、X座標はソース画像データの各ラインの入力前に確定しているので、VDA1、VDA0信号もラインの入力前に確定する。以上の結果、右の境界をはみ出した画素に対して、VDA1、VDA0信号は0になるので、前述のように拡大/計数回路72によって0として処理される。
【0172】
以上述べたように、元画像メモリ制御部17、Y方向DDA計算部16によって元画像フレームメモリ2のアドレスが更新されるので、1ラインずつDa2〜0信号にソース画像データが読み出される。なお、ここで述べたY方向DDA計算部16の制御信号(IDDAY、EDDAY)、元画像メモリ制御部17の制御信号(LDYS、UPYS)は、それぞれ所定のタイミングに従って、全体制御部19によって生成されるものとする。
【0173】
次に、拡大画像メモリ制御部18について説明する。まず、拡大画像フレームメモリ3について簡単に説明する。拡大画像フレームメモリ3には、図1に示した通り、データDd0、アドレスAb15〜0、書き込み制御信号weがそれぞれ入力されている。さらに、CLK信号も入力されているものとする。
【0174】
拡大画像フレームメモリ3には1ビット単位でデータが書き込まれる。このとき、クロックの立ち上がりにおいて書き込み制御信号weが1であれば、その時点でAb15〜0に入力されているアドレスに、Dd0から入力されている1ビットデータが書き込まれる。また、クロックの立ち上がりにおいてweが0であれば、書き込みは行なわれない。
【0175】
図35は、本発明の第1の実施の形態において拡大画像メモリ制御部の内部構成の一例を示すブロック図である。図中、151,152はレジスタ、153はY座標カウンタ、154はX座標カウンタである。ここで、拡大画像フレームメモリ3のアドレスAb15〜0には、その上位8ビットAb15〜8がY座標、下位8ビットAb7〜0がX座標であるようなデスティネーション画素が格納されるものとする。なお、ここではタイミングチャートを用いた説明は省略する。
【0176】
レジスタ151,152は、それぞれY座標、X座標の初期値を格納する。なお、図35では省略したが、レジスタ151,152には外部から任意の値を設定できるようになっており、Y座標、X座標の初期値が予め設定される。
【0177】
Y座標カウンタ153はY座標をカウントするカウンタであり、X座標カウンタ154はX座標をカウントするカウンタである。それぞれのカウンタのLD、UP入力は、元画像メモリ制御部17で説明したY座標カウンタ124、X座標カウンタ125のLD、UP入力と同じ機能をもつ。
【0178】
まず、X座標カウンタ154によりX座標が変化していく様子について説明する。ここではまず、最初のラインのデスティネーション画像データがDd0に出力される前に、LDXD信号が1クロック期間1となり、レジスタ152に保持されているX座標の初期値がX座標カウンタ154にロードされる。LDXD信号には、例えばIDDAX信号をそのまま入力することができる。
【0179】
その後、各ラインの画像データが出力される前に、UPXD信号が1クロック期間だけ1となり、X座標カウンタの内容が1ずつインクリメントされる。UPXD信号には、例えば、前述の図33に示したEUP信号をそのまま使うことができる。このときには、最初のラインの画像データが出力される前にはEUP信号はIDDAX信号と同時に1になるので、初期化されたX座標カウンタの値はインクリメントされない。このように、X座標カウンタ154は各ラインの画像データが出力される前に変化するので、画像データが出力されている途中はカウンタ値は固定されている。
【0180】
次に、Y座標カウンタ153によりY座標が変化していく様子について説明する。ここではまず、各ラインのデスティネーション画像データの生成が開始される前に、LDYD信号が1クロック期間だけ1となり、レジスタ151に格納されているY座標の初期値がY座標カウンタ153にロードされる。LDYD信号には、例えばEDDAX信号をそのまま入力することができる。
【0181】
次に、各ラインの最初のデータが出力されている時は、UPYD信号を1にする。ここで、デスティネーション画像データは、前述の通り1クロックに1個ずつDd0に出力される。従って、各ラインの最初のデータが出力されると同時に、UPYD信号を1に立ち上げる。このことにより、Y座標カウンタは1クロックごとに、初期値から順番に1ずつインクリメントしていく。また、各ラインの最初のデータが出力されると同時にwe信号を1にすることによって、最初のデータから順番に1ライン分のデスティネーション画像データが拡大画像フレームメモリ3に書き込まれていく。
【0182】
1ラインの最後のデータが書き込まれた後、we信号を0にする。このことにより、次のラインのデータが出力されるまで書き込みは行なわれない。このとき、同時にUPYD信号も0にすることにより、Y座標カウンタ153のインクリメントも止まる。
【0183】
以上の操作を繰り返すことにより、デスティネーション画像データが、1画素ずつ所定の拡大画像フレームメモリ3のアドレスに書き込まれていく。なお、ここで述べた拡大画像フレームメモリの制御信号(we)、拡大画像メモリ制御部の制御信号(LDYD、UPYD、LDXD、UPXD)は、それぞれ所定のタイミングに従って、全体制御部19によって生成されるものとする。
【0184】
以上述べたように、それぞれの回路に含まれる制御信号を、全体制御部19によって上述した手順でコントロールすることにより、元画像フレームメモリ2に格納されたソース画像データを拡大・平滑化して、デスティネーション画像データを生成して拡大画像フレームメモリ3に書き込むことができる。なお、上で述べた手順に従って各制御信号を生成する全体制御部19は、例えば状態遷移を行なう順序回路などによって容易に実現される。
【0185】
このように、本発明の第1の実施の形態によれば、一旦画素を重複させた拡大画像を作成してから平滑化をかけることなく、ソース画像から直接平滑化結果を得るようにしたため、少ない回路規模で拡大・平滑化を行なうことができる。また、各ラインの生成前に一度に重複数を求めるようにしたため、X方向の黒画素数をほぼ1クロックに1回求められ、高速に拡大・平滑化を行なうことができる。
【0186】
なお、この第1の実施の形態では、Y方向の拡大をDb2〜0信号を重複させて行なっているが、元画像フレームメモリ2からソース画像データを読み出す時にY方向に画像データを重複させてX方向データ拡大・計数部11に入力することもできる。
【0187】
また、図23に示したMP累積部71では、シフトレジスタに格納されている残差符号を別のシフトレジスタに読み出し、読み出した値からカウンタによってカウントするようにしたが、カウンタにダウンカウント機能を追加し、各ライン生成前に残差符号を1つ読み出すごとに適当なカウンタをインクリメントするとともに、不要になった残差符号に対応したカウンタをデクリメントするように構成することもできる。この構成により、一層高速に重複数を求めることができる。
【0188】
さらに、MP累積部71において、カウンタを2組もち、1つのラインの生成中に使用されていないカウンタに対して重複数を求めるようにし、次のラインの生成時には、カウンタ出力を切り替えてそのカウンタにより求められた重複数を使用するようにしてもよい。この構成によって、ラインの生成と同時に重複数を求めることができるようになるので、処理を高速化することができる。
【0189】
次に、本発明の第2の実施の形態について説明する。この第2の実施の形態では、3倍の拡大後タップ数5で平滑化する場合に加えて、2倍の拡大後タップ数3で平滑化することができるようにした構成例を示す。
【0190】
図36は、本発明の画像拡大処理装置の第2の実施の形態を示すブロック図である。図中の符号は図1と同様である。上述の第1の実施の形態と異なる部分のみ説明する。この第2の実施の形態では、上述の第1の実施の形態を表わす図1と比較して、外部からタップ数を制御するTAP入力が新たに加わっており、また全体制御部19、Y方向データ累積部12の回路構成が異なる。ここで、TAP入力が1の時にタップ数は5、0の時にタップ数は3であるとする。
【0191】
倍率が2倍、タップ数が3の時には、TAP入力には0が入力されるとともに、X方向DDA計算部15、Y方向DDA計算部16の、初期値レジスタ61,111、差分0レジスタ62,112、差分1レジスタ63,113には、前述のDDAの原理の説明で、SSIZE=1、DSIZE=2としたときの初期値、差分値が格納される。すなわち、初期値レジスタには0、差分0レジスタには−2、差分1レジスタには+2が格納される。従って、これらのDDA計算部の残差は、以下の通りに更新されていく。
0、−2、0、−2、0、−2、・・・・・
このように、残差が2回に1回0または正となるので、X、Y方向に2倍の拡大が行なわれる。さらに、閾値レジスタ14にも、タップ数3に対応した閾値が外部より格納されるものとする。
【0192】
以上の設定で、第1の実施の形態と同様の順番で拡大・平滑化処理が行なわれる。以下に、第1の実施の形態との違いに重点をおきながら、このときの動作を説明する。まず、X方向データ拡大・計数部11、およびX方向DDA計算部15の動作について説明する。
【0193】
各ラインのソース画像データを入力する前に、第1の実施の形態と同様、MP累積部71によって、平滑化のウインドウの内部にあるデスティネーション画像データを生成するための各ソース画素の重複数が計算される。この時にも、MP累積部71の制御信号は、第1の実施の形態と同じ順番で生成される。但し、制御信号の幅など、タップ数に対応した制御量は以下に述べるように異なったものとなる。
【0194】
まず、最初のラインに対する重複数の計算を行なう時には、X方向DDA計算部により2個だけ残差符号が計算される。すなわち、3×3ウインドウの中心がデスティネーション画像領域の左の境界上にある場合には、X方向に2画素だけが画像領域中にあるため、この個数分の残差符号だけを計算する。そこで、まずEDDAX信号、ESHIF信号は、2クロック期間だけ1となり、図23のフリップフロップ91a、91bにそれぞれ残差符号が格納される。
【0195】
その後、バレルシフタ97のシフト量には、Qsbの値がフリップフロップ92eに格納されるように3が設定された上で、Psが1となってフリップフロップ92a〜92eに残差が格納される。その後、残差がQeから読み出されるとともに、EUP信号が2クロック期間だけ1となり、MPC21〜20、MPC11〜10にDa2、Da1に対する重複数が求められる。
【0196】
次のラインの処理からは、第1の実施の形態と同様、残差符号を1回ずつ更新しながらMP累積部71で重複数の計算を行なっていく。このときには、3つの残差が使われるため、Qscの値がフリップフロップ92eに格納されるようにBSC信号を2とした上で残差をフリップフロップ92a〜92eに格納する。
【0197】
また、タップ数は3であるため、平滑化のウインドウ内の画素数も3である。従って、EUPは3クロック期間だけ1となり、カウンタ95a〜95cで重複数がカウントされる。
【0198】
また、元画像フレームメモリ2からの入力データは、第1の実施の形態と同様、Da2〜0からX方向に連続した3ビット分が入力される。ここで、倍率は2倍でタップ数が3であるから、Da2〜0からの3ビットの入力のうち、実際にはDa2〜1だけしか使用されない。しかしながら、Da0から3ビット目のデータが入力されても、正しい動作が行なわれる。
【0199】
すなわち、上で述べたように、タップ数が3の時には、EUPは最大3クロックだけ1となり、また倍率は2倍であるため、カウンタ95aまたはカウンタ95bのどちらかが必ず2回カウントされる。従ってカウンタ95cはカウントされず、このカウンタの出力は必ず0になる。この結果、図22に示す拡大/計数回路72のうち、ANDゲート83の出力であるPca0は必ず0となるため、SUM2〜0出力はDa0からの入力値には影響されない。
【0200】
また、X方向データ拡大・計数部11から1ライン分の計数データが出力される時には、前述のY方向の境界処理を行なうため、各ライン出力の最初と最後にDb2〜0から1クロックずつ0データが出力される。従って、上述の第1の実施の形態ではBDX信号は2クロックずつ1になっていたが、この第2の実施の形態では1クロックずつ1となるように制御される。
【0201】
次に、Y方向データ累積部12について説明する。図37は、本発明の第2の実施の形態においてY方向データ累積部の内部構成の一例を示すブロック図である。図中、図28と同様の部分には同じ符号を付して説明を省略する。107はマルチプレクサである。
【0202】
第1の実施の形態のY方向データ累積部12を表わす図28との違いは、遅延を行なうための3番目のフリップフロップ102cからの出力と5番目のフリップフロップ102eからの出力が、マルチプレクサ107でマルチプレクスされて、減算器104のマイナス側に入力されていることである。そしてタップ数が3の時には、TAP入力が0であるため、フリップフロップ102cからの出力が減算器104に入力される。この結果、リセット後にDb2〜0から1ライン分の計数データが入力されてきた時、最初のデータが入力された時より3クロック後にODLY信号にデータが出力されるようになる。このため、フリップフロップ105には入力データ3個分の計数結果が累積される。従って、Dc4〜0からは、3×3ウインドウ領域内の黒画素数が出力される。
【0203】
なお、元画像メモリ制御部17、Y方向DDA計算部16、拡大画像メモリ制御部18は、第1の実施の形態と同じ手順で制御されるため、説明は省略する。全体制御部19は、TAP入力が0、すなわち倍率が2倍、タップ数が3のときには、以上述べた手順により各制御信号を制御するように、例えば順序回路などを変更すればよい。
【0204】
以上のことより、第1の実施の形態と同様、ソース画像データを2倍の倍率で拡大し、3×3ウインドウによって平滑化したデスティネーション画像データを得ることができる。
【0205】
倍率が3倍、タップ数が5の時には、TAP入力には1が入力されるとともに、X方向DDA計算部15、Y方向DDA計算部16の、初期値レジスタ61,111、差分0レジスタ62,112、差分1レジスタ63,113、閾値レジスタ14には、第1の実施の形態と全く同じ値が設定される。また、この時の全体制御部19の動作も、第1の実施の形態と全く同じであり、Y方向データ累積部12も、図37に示す回路においてフリップフロップ102eの出力がマルチプレクサ107によって減算器104に入力されるため、図28の回路と同じ動作を行なう。従って、この場合の動作は、第1の実施の形態と全く同じとなり、ソース画像データを3倍の倍率で拡大し、5×5ウインドウによって平滑化したデスティネーション画像データを得ることができる。
【0206】
なお、全体制御部19の構成としては、例えば、上に述べた2通りの制御信号(倍率2倍、タップ数3と、倍率3倍、タップ数5)を生成する順序回路をそれぞれ独立に持ち、TAP入力に応じて、マルチプレクサなどでそれぞれの回路が生成する制御信号を切り替えるようなものが考えられる。
【0207】
以上のようにして、全体制御部とY方向データ累積部にわずかの回路を追加するだけで、2通りの倍率とタップ数に対応する拡大・平滑化回路を構成することができる。
【0208】
なお、図23に示したMP累積回路71は、例えば倍率が4倍、タップ数が9などの場合にも、1ビットフリップフロップの数とカウンタのビット数を増やすだけで、実現できる。すなわち、ソース画素から直接重複数を得る構成になっているため、このような大きい倍率に対しても、カウンタは3個で済み、回路規模を小さくすることができる。
【0209】
従来の技術でも述べたように、一般に倍率が大きいほど大きいタップ数が使用される。本発明は、この傾向を利用して、同一の回路構成で、倍率が小さい時には小さいタップ数、また倍率が大きい時には大きいタップ数に効率的に対応できるような構成をもつ。しかしこれに限らず、倍率とタップ数を独立して設定できるように構成してもよい。
【0210】
以上述べたように、この第2の実施の形態の構成によれば、小さい回路規模で、2通りの倍率とタップ数とを使って画像の拡大・平滑化処理を行なうことができる。
【0211】
なお、この第2の実施の形態では、倍率とタップ数の2通りの組合せについて述べたが、3通り以上の組合せについても考えることができる。また、組み合わせ数が多い場合には、それぞれデコード回路を介して選択するように構成すればよい。
【0212】
また、本実施例では、X方向DDA計算部15、Y方向DDA計算部16の、初期値レジスタ61,111、差分0レジスタ62,112、差分1レジスタ63,113、閾値レジスタ14には、倍率とタップ数とに応じて外部から値が設定されるようにしたが、各レジスタを倍率とタップ数との組合せに応じて複数個持ち、それぞれのレジスタには倍率やタップ数に応じた固定値を持たせ、TAP信号のような外部からの選択信号により、マルチプレクサで選択されるようにしてもよい。この構成にすることで、より高速にタップ数と倍率の切替えを行なうことができる。
【0213】
次に、本発明の第3の実施の形態について説明する。この第3の実施の形態は、第1の実施の形態よりも、さらに高速に拡大・平滑化するためのものである。拡大・平滑化を行なう時のソース画像やデスティネーション画像が大きい時には、そのデータ量が多くなるので、元画像フレームメモリや拡大画像フレームメモリにはDRAMが使われることが多い。ところが、一般にDRAMはそのアクセスタイムやサイクルタイムが比較的大きく、データを読み出したり書き込んだりするのに時間がかかる。この結果、第1の実施の形態を適用する時に、クロックの1サイクルに要する時間を小さくできない。このように、メモリのアクセスタイムによって拡大・平滑化処理の高速化が妨げられることがある。さらに、メモリのアクセス単位がワードやバイトであることが多く、1ワードや1バイトに複数の画素データが格納される。上述の第1の実施の形態における処理では、たかだか1バイト中の3ビットしか使用しないため、各ラインごとの処理のたびに同じバイトやワードを繰り返し読み込むことになって処理速度は低下する。このため、アクセスタイムが高速なバッファメモリを通して元画像フレームメモリ2、および拡大画像フレームメモリ3とデータを入出力することにより、高速な入出力が実現できる。しかし、バッファメモリは高速であるが高価であるため、その効率的な利用が望まれるところである。
【0214】
元画像フレームメモリ2からデータを読み出す時は、まず数ライン分のソース画像データをバッファメモリに読み出す(このときバッファメモリを元画像バッファメモリと呼ぶ)。そして、元画像バッファメモリの内容を拡大・平滑化回路1に入力する。
【0215】
一方、前述のように、第1の実施の形態または第2の実施の形態によれば、ソース画像データの同一のラインが複数回読み出される。従って、一度DRAMから元画像バッファメモリに読み出した数ライン分のデータを、拡大・平滑化回路に複数回入力することができる。従って、DRAMからの読み出し回数を減らすことができ、かつ拡大・平滑化回路には元画像バッファメモリから高速にデータを入力できるので、処理を高速化することができるようになる。
【0216】
拡大画像フレームメモリ3にデータを書き込む時は、例えば16ライン分のデスティネーション画像データを生成し、まずバッファメモリ(このときバッファメモリを拡大画像バッファメモリと呼ぶ)に格納する。拡大画像バッファメモリからデスティネーション画像データを格納するDRAMへは、例えばX方向に連続する16ビット単位でデータが書き込まれる。従って、拡大画像バッファメモリ3に16ライン分のデスティネーション画像データが書き込まれた後、DRAMへ書き込むことにより、DRAMへの書き込み回数を減らすことができる。また、拡大画像バッファメモリには高速にデータを書き込めるので、処理を高速化することができるようになる。
【0217】
このように、アクセスタイムの短い元画像バッファメモリ、および拡大画像バッファメモリを設けることにより、クロックの1サイクルに要する時間を短縮することが可能となり、拡大・平滑化処理を一層高速にすることができる。例えば、拡大・平滑化回路1を1つのLSIに集積する場合、元画像バッファメモリ、拡大画像バッファメモリは、同じLSI上に作りこむことで、拡大・平滑化回路1から高速にアクセスすることができるようになる。
【0218】
しかしながら、この場合は、元画像バッファメモリ、拡大画像バッファメモリを他の回路とともにLSI中に作成することになるので、大きい面積を占有することができず、各バッファメモリの容量は限られてしまう。この結果、ソース画像データのY方向の幅が大きい場合、1ライン分のソース画像データが元画像バッファメモリの容量を越えてしまう場合がある。
【0219】
このような場合、第1の実施の形態または第2の実施の形態の拡大・平滑化回路では1ライン分のデータの単位で入力する構成になっているので、以下の手順でデータが入力されることになる。まず、DRAMから1ライン中一部のデータを元画像バッファメモリに読み出して拡大・平滑化回路1に供給する。さらにDRAMから1ラインの残りのデータを元画像バッファメモリに読み出して、拡大・平滑化回路1に供給する。このとき、元画像バッファメモリに格納されていたデータは上書きされてしまうので、次に同じ1ラインのデータを拡大・平滑化回路1に供給するときには、再度DRAMから読み出しを行なう必要がある。この結果、DRAMからデータを読み出す回数は、元画像バッファメモリがないときと同じとなる。
【0220】
また、デスティネーション画像データのY方向の幅が大きい場合、16ライン分のデスティネーション画像データが拡大画像バッファメモリの容量を越えてしまう場合もある。このような場合、第1の実施の形態または第2の実施の形態の拡大・平滑化回路1では1ライン分のデータの単位で出力する構成になっているので、以下の手順でデータが出力されることになる。
【0221】
まず、拡大・平滑化回路によって1ライン分のデータを生成しながら、拡大画像バッファメモリに書き込む。ここで、2ライン分のデータ生成後、拡大画像バッファメモリの容量が一杯になったと仮定すると、拡大画像バッファメモリのデータがDRAMに書き込まれる。このときは、X方向に連続した2ビット単位でDRAMに書き込まれる。
【0222】
ここで、DRAMとは16ビット単位でアクセスすることを仮定しているので、アクセスした16ビットの中にある他のデータを書き換えないように、一旦16ビットデータをDRAMから読み出し、このデータのうち拡大画像バッファメモリの2ビットの位置に相当するデータだけを書き換えた後、DRAMに書き込みを行なうといった手順(リードモディファイライト)を行なわなければならない。この結果、1回の書き込みで2回DRAMにアクセスする必要があり、拡大画像バッファメモリがないときと同じアクセス回数となる。
【0223】
さらに、ソース画像データの大きさが同じでも、拡大の倍率が大きい時には、1ラインの長さも増加するので、拡大画像バッファメモリに収まるライン数はさらに減少する。この結果、DRAMのアクセス回数はさらに増加する。
【0224】
以上のように、DRAMとバッファメモリとのアクセス回数が増加してしまうと、結果的に拡大・平滑化回路全体の動作速度に影響を及ぼすため、速度を向上することができなくなる。
【0225】
従って、この第3の実施の形態では、デスティネーション画像をY方向にいくつかのブロックに分割し、それぞれのブロック単位に第1の実施の形態とほぼ同様の手順で拡大・平滑化画像を生成することとしている。従って、1ラインのデータ量が制限されるので、十分なライン数のデータが元画像バッファメモリ及び拡大画像バッファメモリに収まるようになり、上述のようなDRAMへのアクセス回数の増加が抑えられる。
【0226】
この第3の実施の形態における説明では、第1の実施の形態と同様に倍率3倍でタップ数が5の時を考える。また画像のサイズも、第1の実施の形態と同様に、ソース画像データが64×64画素、デスティネーション画像データが192×192画素とする。
【0227】
図38は、本発明の第3の実施の形態においてデスティネーション画像を3つのブロックに分割する場合の説明図である。ここでは、デスティネーション画像データは、Y方向に64個の画素からなるブロックに分割するものとし、192画素のデスティネーション画像データは図38(A)に示すように3つのブロック(ブロック1〜3)に分割する。
【0228】
図38(B)は、この第3の実施の形態でデスティネーション画像が生成される順番の説明図である。図38(B)で、ハッチングされた領域は、拡大・平滑化により生成される画像の1単位を表わしており、それぞれX方向に1画素、Y方向に64画素からなっている。1つの領域は、第1の実施の形態において1ラインを生成する手順とほぼ同じ手順によって生成される。この実施の形態ではこの領域、およびこの領域を生成する時に使われるソース画像データのことを単に1ラインと呼ぶこともある。
【0229】
デスティネーション画像は以下の順番で生成される。
(1)ブロック1のデスティネーション画像を、領域161、162、・・・、163の順番で生成する。
(2)ブロック2のデスティネーション画像を、領域164、・・・、165の順番で生成する。
(3)ブロック3のデスティネーション画像を、領域166、・・・、167の順番で生成する。
【0230】
ここで、各ブロックのデスティネーション画像データは、第1の実施の形態における1つのデスティネーション画像データを生成する手順とほぼ同じ手順によって生成される。従って、この場合には、第1の実施の形態とほぼ同じ手順が、異なったパラメータで3回繰り返されることによって、1つのデスティネーション画像データが得られる。
【0231】
図39は、本発明の第3の実施の形態においてブロックに分割されたデスティネーション画像を得るときに使用されるソース画像のブロックの一例を示す説明図である。デスティネーション画像の各ブロックのデータを生成するために、ソース画像領域も同様にY方向に3分割され、各領域のデータが1ラインずつ入力されて拡大・平滑化される。ところが、ここで平滑化処理を行なうために、ソース画像データは隣り合う領域でオーバーラップさせて入力する必要がある。
【0232】
すなわち、図38のデスティネーション画像の各ブロックを生成するために、ソース画像を図39(A)に示したような3つのブロックに分割する必要がある。なおこの図でそれぞれのブロックには、ブロック1、2、3という名前をつけて、図38との対応を示した。また、ソース画像の各ブロックがオーバーラップしていることを示すために、各ブロックにはハッチングを施し、隣接するブロックのハッチングを異ならせた。
【0233】
また、図39(B)は、各ブロックが入力される順番の説明図である。図39(B)でハッチングされた領域は、入力される1ライン分のデータを示したものであり、第1の実施の形態と同様、X方向に3画素、Y方向にブロックの画素数だけのデータで構成される。ただし、領域172,174,176は、最も左のデータだけがソース画像領域に入っている。
【0234】
ブロック1のデスティネーション画像データを生成する時には、まず領域171の1ラインが入力され、第1の実施の形態とほぼ同様にして拡大・平滑化が行なわれる。次のライン入力には、第1の実施の形態と同様に、MP累積部71で求められる重複数の条件に応じて、領域171のデータが再度使用されるか、または領域を1画素分右にずらした領域が使用される。このようにして拡大・平滑化を行ないながら、領域172までのデータが入力される。
【0235】
その後、ブロック2、ブロック3のデスティネーション画像データを生成する時には、領域173〜174、領域175〜176が同様に入力される。
【0236】
次に、ソース画像データの各ブロックがオーバーラップすることを説明するために、上下の境界にある画素データを生成する場合に注目しながら、デスティネーション画像の各ブロックのデータを生成する様子について述べる。
【0237】
ここでまず、説明を簡単にするために、拡大・平滑化の手順を、ソース画像データが拡大される手順、拡大画像に対して平滑化が行なわれる手順に分けて説明を行なう。まず拡大画像に対して平滑化が行なわれる手順から、1ブロックの画像データを生成する時に使われる拡大画像データについて説明する。
【0238】
前述したように、拡大・平滑化した画像データを得るためには、拡大画像に対して平滑化のウインドウ操作が行なわれ、ウインドウ領域の中心に位置するデスティネーション画素が得られる。従って、あるデスティネーション画素を得るためには、拡大後の画像データのうち、その画素を中心とする5×5ウインドウの内部にある画素データも必要になる。従って、それぞれのブロックの上と下の境界付近にあるデータは、拡大画像のうち隣のブロックの位置にある画素も使用することになる。
【0239】
このことをさらに詳しく説明する。図40は、本発明の第3の実施の形態においてブロック2のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。図40に、ブロック2の位置にある拡大後の画像データを示している。ここで、平滑化前の拡大画像に対しても、拡大・平滑化画像と同様の方法で3ブロックに分割することができる。
【0240】
図40で、ハッチングの施されていない領域181が、拡大画像のブロック2の位置にある画像データである。また図40では、1ライン分の平滑化操作の様子を示すために、下の境界と上の境界の画素を生成するためのウインドウと、その中心画素も示されている。
【0241】
上下の境界上の画素データを中心とする5×5ウインドウには、それぞれブロック2をはみ出したデータが5×2画素分含まれる。従って、ブロック2の拡大・平滑化画像を生成するためには、ブロック2の位置にある拡大画像に加えて、ハッチングを施した領域182,183の上下2画素分のデータが必要である。
【0242】
ここで、領域182のデータは、拡大画像のブロック1の位置にある領域に含まれるデータであり、領域183のデータは、拡大画像のブロック3の位置にある領域に含まれるデータである。また、ブロック2の上の境界上にある画素のY座標を、Yd0とすると、領域183のデータのY座標は、Yd0+1、Yd0+2となる。
【0243】
図41は、本発明の第3の実施の形態においてブロック3のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。図41では、ブロック3のデータに関して拡大後の画像データと上下の境界上の画素を求めるためのウインドウを、図39と同様に示している。このうち、領域184が拡大画像のブロック3の位置にある画像データである。
【0244】
ブロック3のデータに関しても、下の境界上にある画素データを求める時に、同様にしてブロック2の位置にある拡大画像の領域に含まれる領域185の画像データが必要である。ここで、ブロック3の下の境界上にある画素データのY座標は、前述のYd0を使うと、Yd0+1となる。従って、領域84の画素データのY座標は、Yd0−1、Yd0となる。
【0245】
以上のことから、ブロック2とブロック3の平滑化を行なう時には、それぞれY座標がYd0−1からYd0+2までの値をとる4つの拡大画像が、共通に使われることになる。
【0246】
なお、図41において、ブロック3の上の境界の画素データは、デスティネーション画像領域の上の境界の画素データと一致するので、前述の通り領域をはみ出したウインドウ内のデータは0とみなされる。従って、隣のブロックの位置にある画素データは不要である。このことは、ブロック1の下の境界の画素データに関しても同じである。
【0247】
次に、上述の1ブロックの画像データを生成する時に使われるソース画像データについて、第1の実施の形態の元画像メモリ制御部17とY方向DDA計算部16の動作の様子も含めて説明する。
【0248】
図42は、本発明の第3の実施の形態においてブロック2と3の境界付近におけるソース画像と拡大後の画像の一例を示す説明図である。図42(A)は、この画像を生成する時に使われるソース画像の一部を示したもので、Y方向に3画素、X方向に数画素分を示した。ここで、Y座標はそれぞれYs0、Ys0+1、Ys0+2とする。また、図42(B)は、図42(A)をX、Y方向に3倍に拡大した時の画像を示している。このため、Y方向に9画素分のデータが示されている。ここで、Y座標はYd0−4からYd0+4となる。また、図中の▲1▼,▲2▼,▲3▼は、それぞれ図42(A)のソース画像でそのY座標がYs0、Ys0+1、Ys0+2のデータを拡大した結果である。また、図42(B)において、Yd0以下の領域をブロック2、Yd0+1以上の領域をブロック3とする。
【0249】
ここで、ソース画像データをY方向に拡大する時には、第1の実施の形態で述べたようにY方向DDA計算部16で残差データを更新し、出力された残差符号をもとにしてX方向データ拡大・計数部11で計数された結果を重複させる。このことによって、平滑化処理後のデータとして図42(B)に示したようなY方向の拡大データが得られる。
【0250】
また、残差データは、前述の通り−3、−1、2が繰り返されながら更新される。ここで残差データ2に対応する残差符号が出力されているときに、Y座標が1だけインクリメントされる。
【0251】
ここでまず、ブロック2の画像データを生成する時には、前述の通りY座標がYd0+2までのデータが使用される。従って、図42(A)と図42(B)の対応関係を考慮すれば、ソース画像データを1ライン分入力する時には、ソース画像データの座標Ys0+2のデータが読み出されており、かつY方向DDA計算部16で計算された残差の値が−3の時まで、元画像メモリ制御部17およびY方向DDA計算部16が動作される。
【0252】
さらに、ブロック3の画像データを生成する時には、前述の通りY座標がYd0−1のデータから使用される。従って、図42(A)と図42(B)の対応関係を考慮すれば、ソース画像データを1ライン分入力する時には、ソース画像データの座標Ys0+1のデータが読み出されており、かつY方向DDA計算部16で計算された残差の値が−3の時から、元画像メモリ制御部17およびY方向DDA計算部16の動作が開始される。
【0253】
以上のことより、デスティネーション画像をブロックに分割したときには、例えば、ブロック2とブロック3の処理との間で以下の操作が必要になる。まず、ブロック2の1ライン分の画像データが生成されるとき、Y方向DDA計算部16で計算される残差、および元画像メモリ制御部17で計算されるソース画素のY座標の、3画素前の値を格納しておく。次に、ブロック3の計算を開始する時には、格納された残差およびY座標の値を、初期値として用いる。従って、第1の実施の形態の回路に、残差とY座標を格納する機能を追加することにより、この第3の実施の形態の拡大・平滑化回路1が実現ざれる。
【0254】
次に、第3の実施の形態を実現するための回路について、第1の実施の形態との違いに重点を置きながら説明する。図43は、本発明の画像拡大処理装置の第3の実施の形態の構成を示すブロック図である。図中の符号は図1と同様である。
【0255】
まず、元画像フレームメモリ2bと、拡大画像フレームメモリ3bについて説明する。前述の元画像バッファメモリおよびDRAMは、元画像フレームメモリ2の中に含まれているものとし、DRAMから元画像バッファメモリへデータを格納する操作は元画像フレームメモリ2の中で自動的に行なわれるものとする。また、DRAMのリフレッシュも自動的に行なわれる。
【0256】
すなわち、元画像バッファメモリにはDRAMから図39に示した順番で数ラインずつデータが格納され、入力されるアドレスAa11〜0信号に応じてデータを出力する。またこのとき、アドレス信号で表わされるXアドレスを調べ、元画像バッファメモリのデータのうち使い終わったものが含まれているときには、その部分をDRAMから読み出した新しいデータに更新する。
【0257】
さらに、DRAMからデータを読み出す前にAa11〜0入力にそのデータのアドレスが入力された時には、図示しないwait0信号を有効にし、拡大・平滑化回路1を一時的に止めることを要求する。
【0258】
また、前述の拡大画像バッファメモリおよびDRAMは、拡大画像フレームメモリ3の中に含まれているものとし、拡大画像バッファメモリからDRAMへデータを格納する操作は拡大画像フレームメモリ3の中で自動的に行なわれるものとする。また、DRAMのリフレッシュも自動的に行なわれる。
【0259】
すなわち、拡大画像バッファメモリには、アドレス信号Ab15〜0に従って、Dd0から入力されるデータが格納される。その後、16ライン分のデータの格納が終わってから、DRAMの所定の位置に格納される。DRAMに格納した後、再度拡大画像バッファメモリへの格納が続けられる。
【0260】
さらに、拡大画像バッファメモリに空きがない状態の時に、拡大・平滑化回路1bから書き込みが行なわれた時は、図示しないwait1信号を有効にし、拡大・平滑化回路1を一時的に止めることを要求する。
【0261】
全体制御部109には、外部から入力されるクロック信号CLKを止め、拡大・平滑化回路の各部分の動作を止める機能が追加されており、上述のwait0またはwait1信号が有効になっている時には、クロック信号を止める。
【0262】
従って、拡大・平滑化回路1からは、アドレス信号Aa11〜0によって、第1の実施の形態と全く同じ手順でDa2〜0からデータが読み出されるものとする。また、拡大・平滑化回路1からは、アドレスAb15〜0とwe信号とによって、第1の実施の形態と全く同じ手順でDd0に出力されたデータが書き込まれる。
【0263】
次に、Y方向DDA計算部16と、元画像メモリ制御部17について説明する。図44は、本発明の第3の実施の形態においてY方向DDA計算部の構成の一例を示すブロック図である。図中、図30と同様の部分には同じ符号を付して説明を省略する。118a〜118cはフリップフロップ、119はマルチプレクサである。図30に示した第1の実施の形態のY方向DDA計算部16との違いは、残差の値を3個分格納するフリップフロップ118a、118b、118cが追加され、フリップフロップ118cの出力と初期値レジスタ111の値がマルチプレクサ119によって選択されていることである。従って、これらの違いに注目しながら説明する。
【0264】
まず、IDDAYS入力が0の時には、マルチプレクサ119は初期値レジスタの値を選択するので、前述の図30の回路と同じ動作により、初期値を設定し、また残差を更新する。ここで、残差を更新しているとき、ESVDY入力が1になっていると、フリップフロップ118a〜118cがイネーブルになるので、更新された残差の値がこれらのフリップフロップに入力されていく。そして、フリップフロップ118cには3クロック前の残差の値が格納される。
【0265】
また、IDDAY、EDDAY入力を1にして残差を初期化する時に、IDDAYSを同時に1にすると、マルチプレクサ119はフリップフロップ118cから出力されている値を選択するので、残差はこのフリップフロップの値に初期化される。このように、図44に示すY方向DDA計算部16の回路は、図30の回路の機能に加えて、3クロック前の残差を格納する機能と、格納した残差を初期値として使う機能を有する。
【0266】
図45は、本発明の第3の実施の形態において元画像メモリ制御部の構成の一例を示すブロック図である。図中、図31と同様の部分には同じ符号を付して説明を省略する。132a〜132cはフリップフロップ、133はマルチプレクサである。図31に示した第1の実施の形態の元画像メモリ制御部17との違いは、Y座標カウンタの出力を3個分格納するフリップフロップ132a、132b、132cが追加され、フリップフロップ132cの出力と初期値レジスタ121の値がマルチプレクサ133によって選択されていることである。従って、これらの違いに注目しながら、Y座標を生成する部分の動作について説明する。
【0267】
まず、IAYLS入力が0の時には、マルチプレクサ133は初期値レジスタ121の値を選択するので、図31に示す回路のうち、ソース画像のY座標を生成する回路と同じ動作によって初期値の設定とY座標の更新が行なわれる。ここで、Y座標を更新している時に、ESVAY入力が1になっていると、フリップフロップ132a〜132cがイネーブルになるので、更新されたY座標の値がこれらのフリップフロップに入力されていく。そして、フリップフロップ132cには3クロック前のY座標の値が格納される。
【0268】
また、LDYSを1にしてY座標カウンタを初期化する時に、IAYLSを同時に1にすると、マルチプレクサ133はフリップフロップ132cから出力されている値を選択するので、残差はこのフリップフロップ132cが保持する値に初期化される。このように、図45に示す元画像メモリ制御部17の回路は、図31に示した回路の機能に加えて、3クロック前のY座標を格納する機能と、格納したY座標を初期値として使う機能を有する。
【0269】
次に、上述したY方向DDA計算部16、元画像メモリ制御部17の制御信号も含めて、全体制御部19により拡大・平滑化回路1が動作する手順について説明する。
【0270】
まず、ブロック1を生成する手順について述べる。前述のように、各ブロックのデスティネーション画像データは、第1の実施の形態において1つのデスティネーション画像データを生成するのとほぼ同じ手順によって生成される。
【0271】
ブロック1を生成する時には、第1の実施の形態と同様に、入力されるソース画像データの重複数をMP累積部71で求めてから、1ライン分のデータが元画像メモリ制御部17で生成されるアドレスによって読み出され、拡大/計数回路から計数結果がDb2〜0信号に出力される。その後、Y方向データ累積部12で重複数だけコピーされた後、5個ずつの加算結果が求められ、2値化されて拡大画像メモリ制御部18によって拡大画像フレームメモリ3に書き込まれる。この操作がブロック1の最後のラインまで繰り返されることにより、デスティネーション画像のブロック1の部分が生成される。
【0272】
次に、この手順と第1の実施の形態における手順との違いについて説明する。まず、第1の実施の形態では、拡大/計数回路から出力されるDb2〜0信号には、上下の境界をはみ出したウインドウ内の画素を白とする処理を行なうために、1ラインの最初と最後に2クロックずつ0データが出力されていた。これに対してこの第3の実施の形態では、前述のように下の境界だけでこの処理が行なわれるので、1ラインの最初だけに2クロックの0データが付加される。
【0273】
次にソース画像データの読み出し手順について説明する。図46は、本発明の第3の実施の形態においてブロック1のデスティネーション画像データ生成時のY方向DDA計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。図46では、ブロック1の最初のライン、2番目のラインと、最後のラインが読み出される時の動作を示した。
【0274】
Y方向DDA計算部16、元画像メモリ制御部17の制御信号は、第1の実施の形態と同様に制御される。このとき、Da2〜0信号から入力される1ライン分のデータは、タップ数が5のウインドウで平滑化を行ない、64個のデスティネーション画像が得られるだけの数となるように、全体制御部19によって制御信号がコントロールされる。
【0275】
この場合には、EDDAY、UPYS信号は、残差とY座標が初期化されてから65クロック後に立ち下げられる。このことにより、Da2〜0信号には22個の有効なデータが読み出される。従ってDb2〜0信号には、上述した0データも含めて24個の有効なデータが出力される。Y方向データ累積部12では、これらのデータから22個の計数結果を重複させて66個のデータとし、2つの0データとともに68個のデータから5個ずつの累積値を64個生成する。これにより、Y方向データ累積部12からは64個の有効なデータがDc4〜0信号に出力される。またこのとき、元画像フレームメモリ2からは、図39(B)に示した領域171から172までのデータが読み出されることになる。
【0276】
また、図46に示したように、最後のラインのデータを読み出している間、ESVDY、ESVAYは1になる。そして、EDDAY、UPYS信号と同じタイミングで、0に立ち下げられる。このようにすることにより、フリップフロップ118c、132cの出力には、最後から3クロック前の残差とYアドレスとが保持される。以上のようにして、ブロック1のデスティネーション画像データが得られる。
【0277】
次に、ブロック2のデスティネーション画像を生成する手順について述べる。ブロック2のデスティネーション画像が生成される前に、拡大画像メモリ制御部3のY座標の初期値を格納するレジスタ151の値は、図38(A)のデスティネーション画像のブロック2の下の境界のY座標となるように、全体制御部19によって書き換えられるものとする。このことにより、生成されたデータがデスティネーション画像のブロック2の位置に書き込まれるようになる。その後、ブロック1とほぼ同じ手順によってブロック2が生成される。従って、両者の間で異なる手順についてのみ説明する。
【0278】
まず、この第3の実施の形態では、ブロック2の処理においては前述のように上下の境界において境界をはみ出したウインドウ内の画素を白とする処理は行なわれないので、Db2〜0信号に0データは付加されない。
【0279】
次にソース画像データの読み出し手順について説明する。図47は、本発明の第3の実施の形態においてブロック2のデスティネーション画像データ生成時のY方向DDA計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。図47では、図46と同様、ブロック2の最初のライン、2番目のラインと、最後のラインが読み出される時に、Y方向DDA計算部、元画像メモリ制御部で元画像フレームメモリのアドレスが生成される様子を示している。
【0280】
1ラインの最初のデータを読み出す時、Y方向DDA計算部16、元画像メモリ制御部17への初期化信号IDDAY、LDYSとともに、IDDAYS、IAYLSも1になっている。従って、図44、図45に示す回路の説明で述べたように、フリップフロップ118c、132cに格納されている値が残差およびY座標の初期値として使われる。これらのフリップフロップにはブロック1の1ラインの最後から3クロック前の残差とYアドレスとが保持されているので、前述したように、平滑化してブロック2の下の境界のデスティネーション画像を求められるだけのソース画像データが読み出される。また、全体制御部19によって、Da2〜0信号から入力される1ライン分のデータを使って、平滑化後に64個のデスティネーション画像が得られるだけの数となるように制御信号がコントロールされる。
【0281】
この場合には、EDDAY、UPYS信号は、残差とY座標が初期化されてから67クロック後に立ち下げられる。このことにより、Da2〜0信号、およびDb2〜0信号には24個の有効なデータが読み出される。Y方向データ累積部12では、この24個の計数結果のデータのうち両端を除く22個のデータを重複させて1+66+1個の計数結果のデータを作成し、5個ずつの累積値を算出する。これにより、Y方向データ累積部12からは64個の有効なデータがDc4〜0信号に出力されることになる。またこのとき、元画像フレームメモリからは、図39(B)に示した領域173から174までのデータが読み出されることになる。
【0282】
また、図47に示したように、最後のラインのデータを読み出している間、ESVDY、ESVAYは1になる。そして、EDDAY、UPYS信号と同じタイミングで、0に立ち下げられる。なお、残差、Y座標とも、ESVDY、ESVAYが1に立ち上がった直後のクロックで初期化されているので、上記初期値は正しく格納される。このようにすることにより、ブロック1と同様、フリップフロップ118c、132cには、最後から3クロック前の残差とYアドレスとが保持される。以上のようにして、ブロック2のデスティネーション画像データが得られる。
【0283】
以後、同様にして、拡大画像メモリ制御部18のY座標の初期値を格納するレジスタ151の値が図38(A)のデスティネーション画像のブロック3の下の境界のY座標となるように、全体制御部19によって書き換えられた後、ブロック3のデスティネーション画像が生成される。
【0284】
ブロック3の生成の場合には、前述のように上の境界だけではみ出したウインドウ内の画素を白とする処理が行なわれるので、Db2〜0信号には1ラインの最後だけに2クロック分の0データが付加される。また、全体制御部19によってコントロールされるEDDAY、UPYS信号は、残差とY座標が初期化されてから65クロック後に立ち下げられ、前述の0データの処理も考慮すれば、Dc4〜0信号からは64個の有効なデータが出力される。あとはブロック2と同じ処理が行なわれ、ブロック3のデスティネーション画像データが得られる。
【0285】
以上述べたように、この第3の実施の形態の構成によれば、高速のバッファメモリを介して画像データの入出力ができるようになるので、一層高速に画像データを拡大・平滑化することができる。
【0286】
なお、この第3の実施の形態では、倍率が3倍、タップ数が5の場合について述べたが、第2の実施の形態で採用した回路構成を追加することにより、倍率とタップ数の2通り以上の組合せについても拡大・平滑化を行なうことができる。このとき、可変となるタップ数に対応するため、前記フリップフロップ118a〜118cおよび132a〜132cのそれぞれの出力からマルチプレクサによって選択した値を、新たな残差、Y座標の初期値とするように構成すればよい。
【0287】
上述の第3の実施の形態の説明では、ブロック数を3としたが、任意の数のブロック数で処理可能である。ブロック数が4以上の場合には、上下端のブロックについて、上述のブロック1およびブロック3の処理を行ない、他のブロックについてはブロック2の処理を繰り返し行なえばよい。
【0288】
なお、この第3の実施の形態では、DRAMのアクセス単位中にX方向に連続する画素データが存在する場合に特に有効である。このような構成では、上述のように1回のDRAMのアクセスで得られたソース画像データを複数ラインの処理で用いることができるため、高速な拡大・平滑化処理が期待できる。DRAMのアクセス単位中にY方向に連続する画素データが存在する場合にも、バッファメモリは有効である。この構成では、1ラインの処理が終了するごとにDRAMのアクセスが発生するが、バッファメモリを用いることによって、DRAMのアクセスは、新たに必要となるソース画像データの1ライン分のみでよく、重複したアクセスを回避し、拡大・平滑化処理を高速化することができる。
【0289】
【発明の効果】
以上の説明から明らかなように、本発明によれば、元画像を特定の方向に拡大したときの部分平滑化結果を求め、その部分平滑化結果を重複させて累積し、平滑化結果を得るので、従来のように拡大後の画像を格納するようなメモリは必要なく、既存の回路よりも小さい回路規模で、しかも高速に拡大・平滑化処理を行なうことができる。また、倍率や平滑化処理のためのウインドウの大きさなどを変更可能に構成でき、その切り替えも高速に行なうことができるという効果がある。
【図面の簡単な説明】
【図1】 本発明の画像拡大処理装置の第1の実施の形態を示すブロック図である。
【図2】 画像が拡大されるときの処理装置の流れを示すブロック図である。
【図3】 一般的な画像の拡大の説明図である。
【図4】 画像の拡大によって発生するジャギーの一例の説明図である。
【図5】 平滑化に用いるウインドウの一例の説明図である。
【図6】 拡大画像に対する平滑化処理の結果の一例の説明図である。
【図7】 本発明の第1の実施の形態において拡大・平滑化されるソース画像の具体例の説明図である。
【図8】 本発明の第1の実施の形態におけるX方向への拡大および黒画素数の計数処理の一例の説明図である。
【図9】 本発明の第1の実施の形態におけるY方向への累積処理の一例を示す説明図である。
【図10】 本発明の第1の実施の形態におけるデスティネーション画像の一例の説明図である。
【図11】 ソース画像における領域32と次の領域の関係を説明する拡大図である。
【図12】 本発明の第1の実施の形態においてソース画像中の領域34に対するX方向への拡大および黒画素数の計数処理の一例の説明図である。
【図13】 デスティネーション画像領域をウインドウがはみ出す場合の説明図である。
【図14】 本発明の第1の実施の形態においてウインドウが左の境界よりはみ出す場合のX方向への拡大、部分平滑処理の一例の説明図である。
【図15】 本発明の第1の実施の形態においてソース画像領域の右の境界をはみ出した画素を含む場合のX方向への拡大、部分平滑処理の一例の説明図である。
【図16】 本発明の第1の実施の形態においてソース画像領域の右の境界をはみ出した画素を含むデータのX方向への拡大、部分平滑処理における図15に示した状態に続く例の説明図である。
【図17】 本発明の第1の実施の形態における上端および下端における重複後の計数値の一例の説明図である。
【図18】 本発明の第1の実施の形態において最初のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。
【図19】 本発明の第1の実施の形態において途中のラインを生成する時の回路全体の動作の一例を示すタイミングチャートである。
【図20】 本発明の第1の実施の形態においてX方向DDA計算部の内部構成の一例を示すブロック図である。
【図21】 本発明の第1の実施の形態においてX方向データ拡大・計数部の内部構成の一例を示すブロック図である。
【図22】 本発明の第1の実施の形態において拡大/計数回路の内部構成の一例を示すブロック図である。
【図23】 本発明の第1の実施の形態においてMP累積回路の内部構成の一例を示すブロック図である。
【図24】 本発明の第1の実施の形態において最初のラインの生成時におけるMP累積回路の動作の一例を示すタイミングチャートである。
【図25】 本発明の第1の実施の形態において2番目のラインの生成時におけるMP累積回路の動作の一例を示すタイミングチャートである。
【図26】 本発明の第1の実施の形態において途中のライン生成時におけるMP累積回路の動作の一例を示すタイミングチャートである。
【図27】 本発明の第1の実施の形態において読み込む画素データが変更される場合のMP累積回路の動作の一例を示すタイミングチャートである。
【図28】 本発明の第1の実施の形態においてY方向データ累積部の内部構成の一例を示すブロック図である。
【図29】 本発明の第1の実施の形態においてY方向データ累積部の動作の一例を示すタイミングチャートである。
【図30】 本発明の第1の実施の形態においてY方向DDA計算部の内部構成の一例を示すブロック図である。
【図31】 本発明の第1の実施の形態において元画像メモリ制御部の内部構成の一例を示すブロック図である。
【図32】 本発明の第1の実施の形態において元画像メモリ制御部の動作の一例を示すタイミングチャートである。
【図33】 本発明の第1の実施の形態において元画像メモリ制御部の制御信号を生成する回路の一例を示すブロック図である。
【図34】 本発明の第1の実施の形態において元画像メモリ制御部の制御信号を生成する回路の動作の一例を示すタイミングチャートである。
【図35】 本発明の第1の実施の形態において拡大画像メモリ制御部の内部構成の一例を示すブロック図である。
【図36】 本発明の画像拡大処理装置の第2の実施の形態を示すブロック図である。
【図37】 本発明の第2の実施の形態においてY方向データ累積部の内部構成の一例を示すブロック図である。
【図38】 本発明の第3の実施の形態においてデスティネーション画像を3つのブロックに分割する場合の説明図である。
【図39】 本発明の第3の実施の形態においてブロックに分割されたデスティネーション画像を得るときに使用されるソース画像のブロックの一例を示す説明図である。
【図40】 本発明の第3の実施の形態においてブロック2のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。
【図41】 本発明の第3の実施の形態においてブロック3のデスティネーション画像を得る時の平滑化処理の一例を示す説明図である。
【図42】 本発明の第3の実施の形態においてブロック2と3の境界付近におけるソース画像と拡大後の画像の一例を示す説明図である。
【図43】 本発明の画像拡大処理装置の第3の実施の形態の構成を示すブロック図である。
【図44】 本発明の第3の実施の形態においてY方向DDA計算部の構成の一例を示すブロック図である。
【図45】 本発明の第3の実施の形態において元画像メモリ制御部の構成の一例を示すブロック図である。
【図46】 本発明の第3の実施の形態においてブロック1のデスティネーション画像データ生成時のY方向DDA計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。
【図47】 本発明の第3の実施の形態においてブロック2のデスティネーション画像データ生成時のY方向DDA計算部と元画像メモリ制御部の動作の一例を示すタイミングチャートである。
【符号の説明】
1…拡大・平滑化回路、2…元画像フレームメモリ、3…拡大画像フレームメモリ、11…X方向データ拡大・計数部、12…Y方向データ累積部、13…コンパレータ、14…閾値レジスタ、15…X方向DDA計算部、16…Y方向DDA計算部、17…元画像メモリ制御部、18…拡大画像メモリ制御部、19…全体制御部、21…イメージセンサ、22…ディスク、23,23b…元画像フレームメモリ、24…拡大回路、25,25b…拡大画像フレームメモリ、26…出力装置、61…初期値レジスタ、62…差分0レジスタ、63…差分1レジスタ、64,66…マルチプレクサ、65…加算器、67…残差フリップフロップ、71…MP累積回路、72…拡大/計数回路、73…マルチプレクサ、81,82,83,86,87…ANDゲート、84,85…加算器、91a〜91e…フリップフロップ、92a〜92e…フリップフロップ、93a〜93e…マルチプレクサ、94a〜94c…フリップフロップ、95a〜95c…カウンタ、96a〜96c…AND、97…バレルシフタ、98…インバータ、101,102a〜102e,105…フリップフロップ、103…加算器、104…減算器、106…ORゲート、107…マルチプレクサ、111…初期値レジスタ、112…差分0レジスタ、113…差分1レジスタ、114,116…マルチプレクサ、115…加算器、117…残差フリップフロップ、118a〜118c…フリップフロップ、119…マルチプレクサ、121…Y座標初期値設定レジスタ、122…X座標初期値設定レジスタ、123…X座標最大値設定レジスタ、124…Y座標カウンタ、125…X座標カウンタ、126…ANDゲート、127…インバータ、128…+1インクリメンタ、129…+2インクリメンタ、130,131…比較器、132a〜132c…フリップフロップ、133…マルチプレクサ、141…立ち上がり検出回路、142…比較器、143…ANDゲート、144…JKフリップフロップ、145…フリップフロップ、151,152…レジスタ、153…Y座標カウンタ、154…X座標カウンタ。

Claims (10)

  1. 元画像を構成する複数の画素情報をX方向およびY方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理装置において、前記元画像よりX方向またはY方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力する入力制御手段と、該入力制御手段によって入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を計数して該計数結果を部分平滑化結果として出力する部分平滑化手段と、該部分平滑化手段によって求められた部分平滑化結果を入力し該部分平滑化結果を前記特定の方向と直交する方向に拡大して連続した特定の個数だけ累積する累積手段と、該累積手段によって求められた結果を入力し所定の閾値と比較する比較手段と、該比較手段による比較の結果を前記拡大画像の画素として出力する出力制御手段を備えていることを特徴とする画像拡大処理装置。
  2. 前記部分平滑化手段は、倍率に基づきDDA法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差計算手段によって出力された残差の符号に基づいて前記所定の数の画素のそれぞれに対応した前記特定の範囲内にある重複数を求める重複数累積手段と、前記所定の数の画素の前記特定の画素値を有する画素に対して前記重複数累積手段によって求められた重複数を加算する重複数加算手段を備え、前記重複数加算手段によって求められた結果を計数結果として出力することを特徴とする請求項1に記載の画像拡大処理装置。
  3. 前記重複数累積手段は、前記特定の範囲として、前記重複させた結果が前記拡大画像の範囲内にあるものだけを含むことを特徴とする請求項2に記載の画像拡大処理装置。
  4. 前記累積手段は、前記部分平滑化手段によって求められた前記部分平滑化結果を重複数だけ重複させる重複手段と、該重複手段の出力を前記連続した特定の個数だけ遅延させる遅延手段と、累積値を格納する累積値格納手段と、該累積値格納手段に格納されている前記累積値と前記重複手段の出力とを加算する加算手段と、該加算手段による加算結果から前記遅延手段による遅延結果を減算しその減算結果を前記累積値格納手段に格納する減算手段を備え、前記累積値を出力することを特徴とする請求項1に記載の画像拡大処理装置。
  5. 前記累積手段によって累積されるときの前記連続した特定の個数を可変としたことを特徴とする請求項1または4に記載の画像拡大処理装置。
  6. 前記累積手段によって前記部分平滑化結果を重複させる重複数を可変としたことを特徴とする請求項4に記載の画像拡大処理装置。
  7. 前記部分平滑化手段における前記特定の重複数と、前記特定の範囲の少なくとも一方を可変としたことを特徴とする請求項1に記載の画像拡大処理装置。
  8. 前記入力制御手段は、倍率に基づきDDA法によって残差を計算し該残差の符号を出力する残差計算手段と、該残差の符号に応じて更新される画素位置を格納する画素位置格納手段を有し、該画素位置格納手段に格納されている画素位置から前記特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力することを特徴とする請求項1に記載の画像拡大処理装置。
  9. 前記入力制御手段は、前記元画像を複数の領域に分割し、該領域ごとに画素の入力を行なうことを特徴とする請求項1に記載の画像拡大処理装置。
  10. 元画像を構成する複数の画素情報をX方向およびY方向に重複させることにより拡大し、所定のサイズをもったウインドウによって平滑化することにより拡大画像を生成する画像拡大処理方法において、前記元画像よりX方向またはY方向をなす特定の方向に連続した所定の数の画素を前記特定の方向と直交する方向に入力制御手段により入力し、入力された前記所定の数の画素を前記特定の方向に特定の重複数だけ重複させながら重複させた結果の連続する特定の範囲の画素のうち特定の画素値を有する画素を部分平滑化手段で計数して該計数結果を部分平滑化結果とし、該部分平滑化結果を前記特定の方向と直交する方向に拡大して、連続した特定の個数だけ累積手段で累積し、求められた結果を所定の閾値と比較手段で比較し、該比較の結果を前記拡大画像の画素として出力制御手段が出力することを特徴とする画像拡大処理方法。
JP08174696A 1996-04-03 1996-04-03 画像拡大処理装置および画像拡大処理方法 Expired - Fee Related JP3644123B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP08174696A JP3644123B2 (ja) 1996-04-03 1996-04-03 画像拡大処理装置および画像拡大処理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP08174696A JP3644123B2 (ja) 1996-04-03 1996-04-03 画像拡大処理装置および画像拡大処理方法

Publications (2)

Publication Number Publication Date
JPH09274653A JPH09274653A (ja) 1997-10-21
JP3644123B2 true JP3644123B2 (ja) 2005-04-27

Family

ID=13755010

Family Applications (1)

Application Number Title Priority Date Filing Date
JP08174696A Expired - Fee Related JP3644123B2 (ja) 1996-04-03 1996-04-03 画像拡大処理装置および画像拡大処理方法

Country Status (1)

Country Link
JP (1) JP3644123B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP7130686B2 (ja) * 2014-08-11 2022-09-05 キヤノン株式会社 情報処理装置、コンピュータプログラム、情報処理装置の制御方法

Also Published As

Publication number Publication date
JPH09274653A (ja) 1997-10-21

Similar Documents

Publication Publication Date Title
EP0997822A2 (en) DMA control method and apparatus
KR910000365B1 (ko) 기억회로
JP3644123B2 (ja) 画像拡大処理装置および画像拡大処理方法
JPH1055352A (ja) 浮動小数点数累積加算装置
JP3260630B2 (ja) 定数除算器及び定数除算方法
JPH01288974A (ja) 画像処理方法
JP4011015B2 (ja) Lut符号化方法及びlut符号化装置並びにlutカスケード論理回路
USRE33922E (en) Memory circuit for graphic images
EP0189524A2 (en) Memory unit having arithmetic and logic functions, in particular for graphic processing
JP3085299B2 (ja) 情報処理システム
US5673216A (en) Process and system for adding or subtracting symbols in any base without converting to a common base
JP2606176B2 (ja) 図形処理装置
US6985624B2 (en) Image processing apparatus and its method
JP2538095B2 (ja) 同期保護回路
JP3285033B2 (ja) 情報処理システム
CN114896179A (zh) 内存页的拷贝方法、装置、计算设备及可读存储介质
JP3340449B2 (ja) ラインメモリ回路及び、データ格納方法
JPH06214754A (ja) 四捨五入演算回路及びこれを有する画像処理装置
JP2861435B2 (ja) パイプライン形演算装置
JPS6017131B2 (ja) メモリ制御回路
JPH0589239A (ja) 二値画像のフイルタリング処理装置
JPH04290073A (ja) 画像データ圧縮装置
JPH0581435A (ja) 高速直線描画方式
JPH05120446A (ja) パターン描画方式
JPH09114444A (ja) 矩形画像データ転送システム

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040913

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20040921

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20041117

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050111

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20050124

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees