JPH07182497A - 画像変形方法およびその装置 - Google Patents

画像変形方法およびその装置

Info

Publication number
JPH07182497A
JPH07182497A JP5345334A JP34533493A JPH07182497A JP H07182497 A JPH07182497 A JP H07182497A JP 5345334 A JP5345334 A JP 5345334A JP 34533493 A JP34533493 A JP 34533493A JP H07182497 A JPH07182497 A JP H07182497A
Authority
JP
Japan
Prior art keywords
line
small
image data
error
image
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.)
Pending
Application number
JP5345334A
Other languages
English (en)
Inventor
Tatsuya Iijima
達也 飯島
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.)
Casio Computer Co Ltd
Original Assignee
Casio Computer Co Ltd
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 Casio Computer Co Ltd filed Critical Casio Computer Co Ltd
Priority to JP5345334A priority Critical patent/JPH07182497A/ja
Publication of JPH07182497A publication Critical patent/JPH07182497A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Image Processing (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

(57)【要約】 (修正有) 【目的】 少ないメモリ容量で、ビット配列形式の画像
データを自由にかつ滑らかに変形する。 【構成】 図(a)に示す「目」の画像Aを有する変形
対象全体の画像データを予め縦4分割、横6分割して合
計で24個の小矩形(1)(2)(3)〜(24)を作成し、次い
で、変形対象全体が滑らかに変形されるように、所定の
変形規則(例えば、ライン貼り付け法)に従って各小矩
形(1)(2)(3)〜(24)を図(b)に示すような異なる四角
形(1)’(2)’(3)’〜(24)’にそれぞれ変形する。この
過程では、各小矩形の変形に伴って、それぞれの小矩形
に含まれるビット配列形式の画像データが変形する。す
なわちドットの配列を変形の程度に応じて変える。これ
により従来のように全く異なる全体の画像データを予め
持つ必要がなく、少ないメモリ容量で、変形した「目」
の画像Bを得る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、画像変形方法およびそ
の装置に係わり、詳しくはアニメーション、ゲーム等で
用いられるキャラクター、背景データを初めとするドッ
トで構成され、かつ各ドット毎に表示色番号あるいはパ
レット番号を持つようないわゆるビット配列形式の画像
データの配列を変形する画像変形方法およびその方法を
実現する装置に関する。
【0002】
【従来の技術】従来、アニメーション、ゲーム等ではビ
ット配列形式の画像データを用いることが多く、この画
像データによりキャラクターや背景データを表示してい
る。そして、このビット配列形式の画像データはドット
で構成され、かつ各ドット毎に表示色番号あるいはパレ
ット番号を持つようになっている。
【0003】
【発明が解決しようとする課題】ところで、従来の画像
変形方法において、アニメーション、ゲーム等でキャラ
クター又は背景に動きを与えたり、その形を変えるとき
には、全く異なる画像データを予めメモリに持ってお
き、例えば動きを与えるときには一定時間毎に、あるい
はその形を変えるときには何かのきっかけでメモリ上に
ある画像データそのものを表示し直していた。そのた
め、多くのメモリを消費するという欠点があった。ま
た、画像データの拡大、縮小処理あるいはある形状の四
角形から異なる形状の四角形への変形(例えば、正方形
から台形への変形)等の単純な変形処理は、従来のゲー
ム中にも多く用いられているが、変形の度合いが限ら
れ、滑らかな変形が困難であった。さらに、変形を使用
する範囲が限定されてしまい(自由に変形できない)、
予めメモリに多くのデータを持っておく方法を採らざる
を得ず、この点でコスト高にもなっていた。
【0004】そこで本発明は、少ないメモリ容量で、ビ
ット配列形式の画像を自由にかつ滑らかに変形できる画
像変形方法およびその装置を提供することを目的として
いる。
【0005】
【課題を解決するための手段】上記目的達成のため、請
求項1記載の発明による画像変形方法は、ビット配列形
式の画像データを有する変形対象を、複数の小多角形に
分割し、この各小多角形を所定の変形処理に従って異な
る小多角形に変形するデータを記憶し、記憶された変形
データに基づいて前記分割された各小多角形を異なる小
多角形に変形し、変形前の小多角形に含まれるビット配
列形式の画像データの配列を、各小多角形毎に、所定の
データ変換処理に従って、変形後の小多角形のデータに
対応するように順次変更して変更後の全体画像データを
作成するようにしたことを特徴とする。請求項2記載の
発明による画像変形方法は、ビット配列形式の画像デー
タを有する変形対象を、複数の小多角形に分割し、この
各小多角形を所定の変形処理に従って異なる小多角形に
変形し、変形前の小多角形に含まれるビット配列形式の
画像データの配列を、各小多角形毎に、所定のデータ変
換処理に従って、変形後の小多角形のデータに対応する
ように順次変更して変更後の全体画像データを作成する
ようにしたことを特徴とする。
【0006】また、好ましい態様として、例えば請求項
3記載のように、前記変形対象を分割する複数の小多角
形は、矩形であり、この各小矩形を異なる任意の小四角
形にそれぞれ変形して変形後の画像データを作成しても
よい。例えば請求項4記載のように、前記変形対象を分
割する複数の小多角形は、六角形であり、この各六角形
を異なる任意の小六角形にそれぞれ変形して変形後の画
像データを作成してもよい。例えば請求項5記載のよう
に、前記所定の変形処理は、座標変換処理であり、この
座標変換処理では、分割された各小多角形の頂点の座標
を求め、次いで、変形後の各小多角形の頂点の座標を算
出し、この算出した座標に基づいて変形後の異なる小多
角形の形状を決定することにより、分割された各小多角
形を異なる小多角形に変形するようにしてもよい。
【0007】例えば請求項6記載のように、前記所定の
データ変換処理は、変形対象となる各小多角形に含まれ
るビット配列形式の画像データを複数のラインに分割す
る処理と、この分割された各ラインの変形後の小多角形
上での端点を算出する処理と、前記分割された各ライン
を、変形後の小多角形の対応するラインの大きさに合せ
て拡大又は縮小する処理と、この拡大又は縮小されたラ
インを変形後の小多角形の対応するライン上の端点を起
点として順次転送して配置する処理と、を有するように
してもよい。例えば請求項7記載のように、前記端点を
算出する処理は、変形前および変形後のラインの端点の
位置に基づいて、変形前の各ラインの端点の位置を変化
させずに順次変形後の小多角形の対応するラインの端点
の位置とした場合の誤差を順次累算する処理と、この誤
差が所定値を超えるときにのみ、ラインの端点の位置を
変更するとともに、前記累算された誤差から一定値を減
算する処理と、を有するようにしてもよい。
【0008】例えば請求項8記載のように、前記拡大又
は縮小する処理は、変形前および変形後のラインに含ま
れるビット配列形式の画像データおよび変形後のライン
に含まれるビット配列形式の画像データの数に基づい
て、変形前の各ラインに含まれるビット配列形式の各画
像データを変形後のラインに順次指定して配列したとき
の誤差を累算する処理と、この誤差が所定値を超えると
きには、現在指定されている画像データを変形後のライ
ンに転送配置して次の画像データを指定するとともに、
前記累算された誤差から一定値を減算する動作を前記誤
差が所定値以下になるまで繰り返す処理と、前記誤差が
所定値以下のときに、前記指定された画像データを変形
後のラインに転送して配置する処理と、を有するように
してもよい。例えば請求項9記載のように、前記転送す
る処理は、変形前および変形後のラインの数に基づい
て、変形前の各ラインを指定して変形後の小多角形の対
応するラインの位置に順次配列したときの誤差を累算す
る処理と、この誤差が所定値を超えるときには、現在指
定されているラインを変形後の小多角形のラインとして
転送配置して次のラインを指定するとともに、前記累算
された誤差から一定値を減算する動作を前記誤差が所定
値以下になるまで繰り返す処理と、前記誤差が所定値以
下のときに、前記指定されたラインを変形後のラインと
して転送配置する処理と、を有するようにしてもよい。
【0009】請求項10記載の発明による画像変形装置
は、ビット配列形式の画像データを有する変形対象を、
複数の小多角形に分割する分割手段と、分割手段によっ
て分割した各小多角形を所定の変形処理に従って異なる
小多角形に変形する変形手段と、変形前の小多角形に含
まれるビット配列形式の画像データの配列を、各小多角
形毎に、所定のデータ変換処理に従って、変形後の小多
角形のデータに対応するように順次変更して変更後の全
体画像データを作成する画像データ作成手段と、を備え
たことを特徴とする。また、好ましい態様として、例え
ば請求項11記載のように、前記変形手段は、分割手段
によって分割した各小多角形を異なる小多角形に変形す
る所定の変形処理を実行可能な座標変換手段を備え、こ
の座標変換手段は、分割された各小多角形の頂点の座標
を求めるとともに、変形後の各小多角形の頂点の座標を
算出し、この算出した座標に基づいて変形後の異なる小
多角形の形状を決定することにより、分割された各小多
角形を異なる小多角形に変形してもよい。
【0010】例えば請求項12記載のように、前記画像
データ作成手段は、前記所定のデータ変換処理を実行可
能なデータ変換手段を備え、このデータ変換手段は、変
形対象となる各小多角形に含まれるビット配列形式の画
像データを複数のラインに分割する手段と、この分割さ
れた各ラインの変形後の小多角形上での端点を算出する
手段と、前記分割された各ラインを、変形後の小多角形
の対応するラインの大きさに合せて拡大又は縮小する手
段と、この拡大又は縮小されたラインを変形後の小多角
形の対応するライン上の端点を起点として順次転送して
配置する手段と、を有するようにしてもよい。例えば請
求項13記載のように、前記端点を算出する手段は、変
形前および変形後のラインの端点の位置に基づいて、変
形前の各ラインの端点の位置を変化させずに順次変形後
の小多角形の対応するラインの端点の位置とした場合の
誤差を順次累算する手段と、この誤差が所定値を超える
ときにのみ、ラインの端点の位置を変更するとともに、
前記累算された誤差から一定値を減算する手段と、を有
するようにしてもよい。
【0011】例えば請求項14記載のように、前記拡大
又は縮小する手段は、変形前および変形後のラインに含
まれるビット配列形式の画像データおよび変形後のライ
ンに含まれるビット配列形式の画像データの数に基づい
て、変形前の各ラインに含まれるビット配列形式の各画
像データを変形後のラインに順次指定して配列したとき
の誤差を累算する手段と、この誤差が所定値を超えると
きには、現在指定されている画像データを変形後のライ
ンに転送配置して次の画像データを指定するとともに、
前記累算された誤差から一定値を減算する動作を前記誤
差が所定値以下になるまで繰り返す手段と、前記誤差が
所定値以下のときに、前記指定された画像データを変形
後のラインに転送して配置する手段と、を有するように
してもよい。例えば請求項15記載のように、前記転送
する手段は、変形前および変形後のラインの数に基づい
て、変形前の各ラインを指定して変形後の小多角形の対
応するラインの位置に順次配列したときの誤差を累算す
る手段と、この誤差が所定値を超えるときには、現在指
定されているラインを変形後の小多角形のラインとして
転送配置して次のラインを指定するとともに、前記累算
された誤差から一定値を減算する動作を前記誤差が所定
値以下になるまで繰り返す手段と、前記誤差が所定値以
下のときに、前記指定されたラインを変形後のラインと
して転送配置する手段と、を有するようにしてもよい。
【0012】例えば請求項16記載のように、前記画像
データ作成手段によって作成された変形後の画像データ
を表示する表示手段を、さらに有するようにしてもよ
い。例えば請求項17記載のように、変形対象を変形す
る場合の変形態様を指定する変形態様指定手段を有し、
前記変形手段は、この変形態様指定手段の出力に基づい
て前記各小多角形を異なる小多角形にそれぞれ変形処理
してもよい。例えば請求項18記載のように、前記変形
態様指定手段は、変形対象を第1の変形態様に指定する
第1の変形スイッチと、変形対象を第2の変形態様に指
定する第2の変形スイッチとを有するようにしてもよ
い。例えば請求項19記載のように、変形対象のビット
配列形式の画像データと、変形対象をどのように分割す
るかを示す分割データと、分割した各小多角形をどのよ
うに変形するかを示す変形データとを記憶する記憶手段
と、前記変形態様指定手段により変形態様が指定された
とき、記憶手段に記憶された各データを読み出して画像
変形の制御を行う画像変形制御手段と、を備えてもよ
い。
【0013】
【作用】本発明では、まずビット配列形式の画像データ
を有する変形対象を複数の小多角形に分割し、各小多角
形を所定の変形処理(例えば、座標変換処理)に従って
異なる小多角形にそれぞれ変形する。次いで、変形前の
小多角形に含まれるビット配列形式の画像データの配列
を、各小多角形毎に、所定のデータ変換処理に従って変
形後の小多角形のデータに対応するように順次変更して
変更後の全体画像データが作成される。したがって、変
形対象の画像は各小多角形毎に変形処理が行われるか
ら、従来のように全く異なる全体の画像データを予め持
つ必要がなくなり、少ないメモリ容量で、ビット配列形
式の画像データの配列を自由に変形できる。また、変形
対象を複数の小多角形に分割し、各小多角形毎に変形処
理が行われるので、変形に自由度があり、予めメモリに
多くのデータを持たなくても、画像を滑らかに変形でき
る。
【0014】
【実施例】以下、図面を参照して本発明の実施例につい
て説明する。本発明の原理説明 最初に、本発明の原理から説明する。図1は多角形分割
変形方法の原理を示す図である。図1(a)は変形前の
画像データを示し、特にビット配列形式の画像データ
で、「目」の画像(絵)Aを有している。この画像デー
タを変形するために、まず変形対象全体を予め縦4分
割、横6分割して合計で24個の小矩形(1)、(2)、
(3)、・・・・・(24)を作成する。このとき、各小矩形
(1)、(2)、(3)、・・・・・(24)の画像データは複数の
ドットによって構成され、かつ複数の各ドット毎に表示
色番号あるいはパレット番号を持っている。そして、各
小矩形(1)、(2)、(3)、・・・・・(24)毎の画像はその
ドット全体によって表示される。次いで、変形対象全体
が滑らかに変形されるように、所定の変形処理(例え
ば、後述の座標変換処理)に従って各小矩形(1)、(2)、
(3)、・・・・・(24)を図1(b)に示すような異なる
四角形(1)’、(2)’、(3)’、・・・・・(24)’にそれ
ぞれ変形する。例えば、図2に示すように小矩形(6)は
四角形(6)’に変形され、小矩形(1)は四角形(1)’に変
形される。
【0015】この過程では、各小矩形(1)、(2)、(3)、
・・・・・(24)の変形に伴って、それぞれの小矩形に含
まれるビット配列形式の画像データの配列が所定のデー
タ変換処理(例えば、後述のいわゆるライン貼り付け処
理)に従って変形する。すなわち、ドットの配列が変形
の程度に応じて変わることになる。したがって、変形後
の四角形(1)’、(2)’、(3)’、・・・・・(24)を全体
として合成すると、図1(b)に示すように、変形した
「目」の画像(絵)Bが得られる。この場合、変形対象
の画像データの配列に対して各小矩形(1)、(2)、(3)、
・・・・・(24)毎に変形処理が行われるから、従来のよ
うに全く異なる全体の画像データを予め持つ必要がな
く、少ないメモリ容量でビット配列形式の画像を自由に
変形できる。また、変形対象を複数の小矩形(1)、(2)、
(3)、・・・・・(24)に分割し、各小矩形(1)、(2)、
(3)、・・・・・(24)毎に変形処理が行われるので、変
形に自由度があり、予めメモリに多くのデータを持たな
くても、画像を滑らかに変形することが可能になる。
【0016】次に、上記原理に基づく本発明の具体的な
実施例について説明する。画像変形装置の構成 図3は本発明に係る画像変形方法を実現する画像変形装
置の一実施例を示す構成図である。図3において、画像
変形装置は大きく分けてCPU31、入力操作子32、
記憶装置33、画像信号発生回路(Video Display Pros
seser:以下VDPという)34、VRAM35および
TVディスプレイ36によって構成される。CPU31
は装置全体を制御するもので、入力操作子32から画像
変形指令が入力されると、その指令情報に対応すべく内
部のメモリに格納されている制御プログラムに基づいて
記憶装置33に記憶されている変形対象としてのビット
配列形式の画像データ41を読み出してVDP34に出
力するとともに、この画像データ41に対して多角形分
割変形処理を施した後、変形後のビット配列形式の画像
データをVDP34に出力する。また、CPU31は内
部レジスタ31aを有しており、内部レジスタ31aに
は後述の図4に示すような各小矩形の格子点座標や図2
0に示すような端点バッファデータが格納されるように
なっている。
【0017】入力操作子(変形態様指定手段)32はオ
ペレータによって操作されるもので、ビット配列形式の
画像データの配列をどのように変形させるかを指定する
(つまり、変形を行わせるきっかけを与えるための)第
1の変形スイッチ51および第2の変形スイッチ52を
有している。第1の変形スイッチ51は、例えば変形前
の格子点座標42で表される原画像に対して、変形後の
格子点座標43で表される第1の変形画像のような変形
(変形データ1)を与える指令を出力する。第2の変形
スイッチ52は、例えば変形前の格子点座標42で表さ
れる原画像に対して、変形後の格子点座標44で表され
る第2の変形画像のような変形(変形データ2)を与え
る指令を出力する。なお、各変形スイッチ51、52は
単独操作のプッシュスイッチでもよいし、あるいは複数
のスイッチからなるスイッチボード、キーボード等でも
よい。また、入力操作子32としてスイッチボード等の
他に、マウス、トラックボール等を用いてもよい。
【0018】記憶装置(記憶手段)33は変形対象とな
るビット配列形式の画像データ41、変形対象(原画
像)をどのように矩形分割するかを示す変形前の格子点
座標(変形前の小多角形の頂点の座標)42、矩形分割
された各小矩形をどのように変形するかを示す変形デー
タ1に対応する変形後の格子点座標(変形後の異なる小
多角形の頂点の座標)43および矩形分割された各小矩
形をどのように変形するかを示す変形データ2に対応す
る変形後の格子点座標(変形後の異なる小多角形の頂点
の座標)44を記憶している。例えば、格子点座標43
は第1の変形画像に対応し、格子点座標44は第2の変
形画像に対応しているとともに、これらの変形画像を処
理する指令はそれぞれ第1の変形スイッチ51、第2の
変形スイッチ52から出力される。VDP34はCPU
31から与えられた変形前のビット配列形式の画像デー
タや変形後のビット配列形式の画像データをVRAM3
4に書き込む。VRAM34としては、例えば半導体メ
モリが用いられ、表示する画像を1画面単位で記憶す
る。VRAM34に書き込まれた画像データはTVディ
スプレイ(表示手段)36によって表示される。上記C
PU31は分割手段、変形手段、画像データ作成手段、
座標変換手段、データ変換手段を構成するとともに、さ
らに画像変形制御手段を構成する。
【0019】ここで、本実施例では変形前のビット配列
形式の画像データを有する変形対象に対して図4に示す
ように、多数の小矩形に分割する処理が施される。この
場合、矩形分割された各小矩形の頂点に当る部分を格子
点と呼ぶことにする。図4の例では、変形対象を縦方向
にm分割し、横方向にn分割している。したがって、変
形対象は(m×n)個の小矩形に分割されることにな
り、各小矩形は左上端から右下端に行くに従って、小矩
形(0、0)、小矩形(0、1)、小矩形(0、2)、
・・・・・・・小矩形(m−1、n−1)としてそれぞ
れ表される。また、変形対象の画像データの左上端の格
子点を格子点(0、0)、その右隣の格子点を格子点
(0、1)と呼び、以下同様に右に行くに従って格子点
(0、2)、格子点(0、3)、と呼ぶことにする。し
たがって、右上端の格子点は格子点(0、n)になる。
次いで、格子点(0、0)のすぐ下の格子点を格子点
(1、0)と呼び、以下同様に下に行くに従って格子点
(2、0)、格子点(3、0)と呼ぶことにする。した
がって、左下端の格子点は格子点(m、0)になる。ま
た、右下端の格子点は格子点(m、n)になる。
【0020】CPU31の内部レジスタ31aには図4
に示す各小矩形の格子点座標が記憶され、その様子は図
5のように示される。図5において、内部レジスタ31
aには各小矩形(0、0)、小矩形(0、1)、小矩形
(0、2)、・・・・・・・小矩形(m−1、n−1)
に対応する格子点の座標として、以下のように格納され
ている。なお、各格子点の座標はX軸(横方向)および
Y軸(縦方向)を基準とする2つの数値で表される。 格子点(0、0)のX座標 格子点(0、0)のY座標 格子点(0、1)のX座標 格子点(0、1)のY座標 ・ ・ 格子点(m、n)のX座標 格子点(m、n)のY座標
【0021】一方、記憶装置33には変形対象(原画
像)をどのように矩形分割するかを示す変形前の格子点
座標42が格納されているが、この格子点座標42をC
PU31の内部レジスタ31aに記憶されている各小矩
形(0、0)、小矩形(0、1)、小矩形(0、2)、
・・・・・・・小矩形(m−1、n−1)の格子点座標
にそれぞれ対応させて示すと、例えば図5の右端に表す
ようになる。すなわち、両者は以下のような対応関係に
なる。格子点(0、0)のX座標……100(変形前の
格子点座標、以下同様) 格子点(0、0)のY座標……100 格子点(0、1)のX座標……110 格子点(0、1)のY座標……100 ・ ・ 格子点(m、n)のX座標……160 格子点(m、n)のY座標……140
【0022】また、記憶装置33には前述したように第
1の変形スイッチ51からの指令に対応する第1の変形
画像を矩形分割した場合の格子点座標43および第2の
変形スイッチ52からの指令に対応する第2の変形画像
を矩形分割した場合の格子点座標44が記憶されてい
る。例えば、第1の変形スイッチ51が操作されると、
このスイッチ51によって選択された変形番号に相当す
る変形後の格子点座標がCPU31の内部レジスタ31
aに格納され、第2の変形スイッチ52が操作される
と、このスイッチ52によって選択された変形番号に相
当する変形後の格子点座標がCPU31の内部レジスタ
31aに格納される。これらの格子点座標43、44を
CPU31の内部レジスタ31aに記憶されている各小
矩形(0、0)、小矩形(0、1)、小矩形(0、
2)、・・・・・・・小矩形(m−1、n−1)の格子
点座標にそれぞれ対応させて示すと、例えば図5の中央
の図のように表される。なお、変形1とは、第1の変形
スイッチ51からの指令に対応する第1の画像変形処理
のことであり、変形2とは、第2の変形スイッチ52か
らの指令に対応する第2の画像変形処理のことである。
したがって、変形1の格子点座標とは、第1の変形スイ
ッチ51からの指令に対応する第1の変形画像を矩形分
割した場合の格子点座標のことである。同様に、変形2
の格子点座標とは、第2の変形スイッチ52からの指令
に対応する第2の変形画像を矩形分割した場合の格子点
座標のことである。
【0023】次に、作用を説明する。メインプログラム 図6は画像変形処理のメインプログラムを示すフローチ
ャートである。このプログラムがスタートすると、まず
ステップS10でキー情報取り込み処理を行う。これ
は、入力操作子32における第1の変形スイッチ51あ
るいは第2の変形スイッチ52の操作情報を入力するも
のである。次いで、ステップS12で変形スイッチが押
されたか否かを判別し、何れのスイッチも押されていな
ければ、今回のルーチンを終了し、次回のルーチンで再
びステップS10を実行する。このとき、例えばスイッ
チフラグが設けられ、何れのスイッチも押されていなけ
れば、スイッチフラグが[0]のままである。一方、何
れかのスイッチが押されると、スイッチフラグを[1]
にセットするとともに、ステップS14で押された変形
スイッチの番号を判別する。その後、ステップS16あ
るいはステップS18で押された変形スイッチの番号に
応じた変形後の格子点座標をCPU31の内部レジスタ
31aに格納し、次いで、ステップS20に進む。
【0024】具体的には、第1の変形スイッチ51が押
された場合には、ステップS16に進んで記憶装置33
内の第1の変形画像を矩形分割した場合の格子点座標
(つまり、変形データ1に対応する変形後の格子点座
標)43をコピーしてCPU31の内部レジスタ31a
に格子点毎に格納する。したがって、例えば図5に示さ
れるような変形前の格子点座標が記憶されていたとする
と、以下に示すように格子点座標43の値が内部レジス
タ31aに順次格納されることになる。 格子点(0、0)のX座標……90(変形1の格子点座
標、以下同様) 格子点(0、0)のY座標……100 格子点(0、1)のX座標……105 格子点(0、1)のY座標……95 ・ ・ 格子点(m、n)のX座標……140 格子点(m、n)のY座標……130
【0025】一方、第2の変形スイッチ52が押された
場合には、ステップS18に進んで記憶装置33内の第
2の変形画像を矩形分割した場合の格子点座標(つま
り、変形データ2に対応する変形後の格子点座標)44
をコピーしてCPU31の内部レジスタ31aに格子点
毎に格納する。したがって、例えば図5に示されるよう
な変形前の格子点座標が記憶されていたとすると、以下
に示すように格子点座標44の値が内部レジスタ31a
に順次格納されることになる。 格子点(0、0)のX座標……90(変形2の格子点座
標、以下同様) 格子点(0、0)のY座標……100 格子点(0、1)のX座標……105 格子点(0、1)のY座標……100 ・ ・ 格子点(m、n)のX座標……170 格子点(m、n)のY座標……140
【0026】ステップS16あるいはステップS18を
経ると、続くステップS20に進み、記憶装置33から
変形対象となる画像データの中から、処理すべき小矩形
(i、j)に含まれる画像データを読み込んで小矩形の
変形処理を行う(詳細はサブルーチンで後述)。これに
より、小矩形(i、j)についてビット配列形式の画像
データの配列が変形し、変形後の画像が得られることに
なる。小矩形(i、j)とは、例えば図1(a)に示す
ように変形対象を複数に分割した場合の小矩形(1)、
(2)、(3)、・・・・・(24)の何れかを表す一般的な指定
状態を示すものである。なお、ステップS20の処理で
は、小矩形(i、j)で示される変形後の画像データを
VDP34に順次転送することが行われ、これにより、
最終的にすべての小矩形(i、j)に対応する変形した
画像データが合成されて変形画像が得られることにな
る。次いで、ステップS22ですべての小矩形(i、
j)に対して画像の変形処理をしたか否かを判別し、N
OであればステップS20に戻って同様の処理を繰り返
す。そして、すべての小矩形(i、j)に対して画像の
変形処理が終了すると、ステップS22からYESに抜
けて本ルーチンを終了する。このようにして、ステップ
S20およびステップS22において各小矩形単位で画
像の変形処理が行われる。
【0027】小矩形変形処理のサブルーチン 次に、図7はメインプログラムの小矩形変形処理(ステ
ップS20)のサブルーチンを示すフローチャートであ
る。このサブルーチンに移行すると、ステップS30で
小矩形(i、j)の周囲4点の変形前の座標を、記憶装
置33内の変形前の格子点座標42より得る処理を行
う。言換えれば、記憶装置33に記憶されている変形前
の格子点座標42から、処理すべき小矩形の頂点に当る
4つの座標を読み出す。例えば、小矩形(i、j)の場
合、頂点は格子点(i、j)、(i、j+1)、格子点
(i+1、j)、格子点(i+1、j+1)となり、こ
れらが変形前の小矩形の座標である。
【0028】次いで、ステップS32で小矩形(i、
j)の周囲4点の変形後の座標を、CPU31における
内部レジスタ31aの格子点座標より得る処理を行う。
言換えれば、CPU31の内部レジスタ31aに格納さ
れている変形後の格子点座標から、処理すべき小矩形の
頂点に当る4つの座標を読み出す。例えば、同様に小矩
形(i、j)の場合、頂点は格子点(i、j)、(i、
j+1)、格子点(i+1、j)、格子点(i+1、j
+1)となり、これらが変形後の四角形の座標である。
ステップS30、ステップS32により、変形対象の画
像全体が滑らかに変形されるように、各小矩形を異なる
四角形にそれぞれ変形する処理が行われる。この処理
(変形処理に相当)は座標変換処理であり、この座標変
換処理では、分割された各小矩形の頂点の座標を求め、
次いで、変形対象全体が滑らかに変形されるような変形
後の各小四角形の頂点の座標を算出し、この算出した座
標に基づいて変形後の異なる小四角形の形状を決定する
ことにより、分割された各小矩形を異なる小四角形に変
形する。
【0029】次いで、ステップS34でいわゆるライン
貼り付け法(データ変換手順に相当)により各小矩形内
の画像データの配列を変形する処理を行う。ライン貼り
付け法とは、変形元である分割した各小多角形のビット
配列形式の画像データの配列を複数のラインに分割し、
分割した各ラインを変形先の各多角形の対応する位置に
順次転送するとともに、転送に際して転送先の大きさに
合うように拡大又は縮小させながらそれぞれラインとし
て貼り付けていくことにより、変形後の各小多角形の画
像データの配列を作成することをいう。具体的には、図
8(a)に示すように変形元となるビット配列形式の画
像データにおける小矩形Cの画像データの配列を複数の
ライン1〜ラインnに分割し、分割した各ライン1〜n
を変形先の四角形Dの対応する位置に、転送先の大きさ
に合うように拡大又は縮小させながらそれぞれライン
1’〜ラインn’として貼り付けていくものである。こ
のように、小矩形Cの画像データの配列を複数のライン
1〜ラインnに分けて変形させながら貼り付けること
で、画像の変形処理を行うことにより、元画像を滑らか
に変形させることが可能になる。
【0030】これにより、各小矩形は四角形へと変形処
理され、最終的にすべての小矩形(i、j)に対応する
画像データの配列が変形し、変形画像が得られることに
なる。次いで、ステップS36でVDP34に変形済み
の画像データを逐次転送する。これにより、小矩形
(i、j)で示される変形後の画像データがVDP34
に転送され、最終的にすべての小矩形(i、j)に対応
する変形した画像データを合成することにより、TVデ
ィスプレイ36に変形後の画像が表示される。ステップ
S36の処理を経ると、メインプログラムにリターンす
る。
【0031】ライン貼り付け処理のサブルーチン 次に、上記ステップS34におけるライン貼り付け法
(矩形から任意の四角形への変形方法)の内容を具体的
に説明する。図9はライン貼り付け法の処理を示すサブ
ルーチンのフローチャートであり、このサブルーチンの
処理の対象となる画像データの例は図10(a)、
(b)のように示される。すなわち、図10(a)は変
形前の元画像データを示し、詳しくは変形元となるビッ
ト配列形式の画像データを分割した場合のある1つの小
矩形の画像データ(つまり、変形前の小矩形画像デー
タ)に対応する。ここで説明するライン貼り付け法は、
図10(a)に示すように変形前の小矩形画像データと
して縦(Y)方向が12ピクセル、横(X)方向が16
ピクセルで構成される元画像データ(矩形ABCDで表
される)を、図10(b)に示すような四角形A’B’
C’D’に変形する内容である。その変形処理では、ま
ず元画像データを12本の水平ライン(ライン0〜ライ
ン11)に分割する。そして、分割した各ラインを画像
変形態様に応じて変形後の四角形に順番に貼り付けてい
く処理が行われ、変形画像が得られる。
【0032】サブルーチンのステップを進めながら、上
記処理について説明する。このサブルーチンに移行する
と、まずステップS100で辺A’B’についてライン
の端点処理を行う。これは、変形後の四角形のラインの
端点A’B’を求めるものである。なお、ステップS1
00の処理(辺A’B’の位置を求める方法)について
は、後述のサブルーチンで詳述する。すなわち、図10
(a)(b)に示すように、分割した各ラインを画像変
形態様に応じて変形後の四角形に順番に貼り付けていく
処理では、以下のような状態に着目する必要がある。辺
AB上にあった各ラインの一方の端点は辺A’B’上
に、また、辺DC上にあった他方の端点は辺D’C’上
に移動する。このとき、辺ABと辺A’B’および辺D
Cと辺D’C’では、それらの長さが異なるので、辺
A’B’、辺D’C’上でラインの端点が重なったりす
ることがある。これは、図10(b)の☆印で示す部分
であり、辺A’B’上のライン5およびライン6が重な
っている。また、同一のラインを2回以上貼り付けなけ
ればならないこともある。これは、図10(b)の★印
で示す2つの部分であり、辺D’C’上のライン3およ
びライン8が2回繰り返され、それぞれライン3、3’
およびライン8、8’となっている。
【0033】図11にラインを2回貼り付ける様子を示
す。図11(a)は変形前の元画像データであり、詳し
くは変形元となるビット配列形式の画像データを分割し
た場合のある1つの小矩形の画像データに対応する。図
11(b)は変形後の1つの四角形の画像データであ
る。変形前の画像データのライン3が、変形後は途中の
ドットから右側6ドットだけライン3、3’として2ラ
イン分貼り付けられる。また、変形前の画像データのラ
イン5とライン6が、変形後は最初のドットから7ドッ
トまで(つまり左側7ドット分)については同じドット
に貼り付けられ、以後の右側7ドットについてはライン
5、ライン6として別個に貼り付けられる。なお、図1
0〜図19はライン貼り付け法を実行する場合の、複数
の実行過程における変形前の小矩形および変形後の四角
形を示すものであり、各過程の具体例は後述のサブルー
チンを説明するときに述べる。
【0034】次いで、ステップS102で辺D’C’に
ついてラインの端点処理を行う。これは、変形後の四角
形のラインの端点D’C’を求めるものである。なお、
ステップS102の処理(辺D’C’の位置を求める方
法)については、同様に後述のサブルーチンで詳述す
る。このようにして、各ラインの端点が移動する辺A’
B’と辺D’C’の位置が求められると、これらのライ
ンの端点位置は図20に示すように、CPU31の内部
レジスタ31aにある端点バッファにデータを格納す
る。この場合、内部レジスタ31aには辺A’B’上の
端点バッファと、辺D’C’上の端点バッファという2
つの格納エリアがある。そして、これらの各端点バッフ
ァではラインの端点の座標と、そのライン番号を対応付
けて格納する。2つの端点バッファは端点の位置を読み
出すときや、ラインの描画位置を決めるときに使用され
る。
【0035】次いで、ステップS104〜ステップS1
10でラインを描画する処理を行う。まず、ステップS
104では2つの端点バッファからライン番号の同じデ
ータを読み出す。次いで、ステップS106で同じライ
ン番号のラインが複数あるときには描画回数が最小にな
るように組み合せる。これは、図21に示すように、例
えば辺A’B’上で同じライン番号のラインが3本あ
り、一方、辺D’C’上で同じライン番号のラインが2
本ある場合、上側の各端点同士を1本のラインで引き、
辺A’B’上の2つの端点と辺D’C’上の1つの端点
とを2本のラインで引くような処理を行うものである。
次いで、ステップS108で描画処理(詳細はサブルー
チンで後述)を行う。次いで、ステップS110ですべ
てのラインについて処理したか否かを判別し、NOのと
きはステップS104に戻って同様の処理を繰り返す。
そして、すべてのラインについてステップS104〜ス
テップS108の処理が終了すると、ステップS110
からYESに抜けてルーチンを終了する。このようにし
て、各小矩形が異なる四角形にそれぞれ変形され、変形
対象の画像全体が滑らかに変形することになる。
【0036】ライン端点処理のサブルーチン 次に、上記ステップS100およびステップS102に
おけるラインの端点処理のサブルーチンについて説明す
る。図22はラインの端点処理(ステップS110の処
理)を示すサブルーチンのフローチャートである。ま
ず、貼り付けるラインの一方の端点となる辺A’B’の
位置を求める方法から説明する。なお、貼り付けるライ
ンの他方の端点となる辺D’C’の位置を求める方法も
同様である。ステップS200で座標決定用誤差e1、
ライン選択用誤差e2、現在ライン番号をすべて[0]
に初期設定する。座標決定用誤差e1とは、端点の位置
を決めるとき又はラインの描画位置を決めるときに用い
る座標決定用誤差のことである。ライン選択用誤差e2
とは、端点に割り当てるラインを選択するときに用いる
ライン選択用誤差のことである。これにより、最初は各
誤差が[0]になる。
【0037】次いで、ステップS202で処理を開始す
る点(A’又はD’)の座標をCPU31の内部レジス
タ31aにある現在座標というエリアに格納する。例え
ば、貼り付けるラインの一方の端点となる辺A’B’の
位置を求める処理では、A’の座標を格納する。一方、
貼り付けるラインの他方の端点となる辺D’C’の位置
を求める処理では、D’の座標を格納する。CPU31
の内部レジスタ31aには図20に示すように、端点バ
ッファの他に、以下のような格納エリアがある。 座標決定用誤差e1のエリア 座標決定用誤差増分Δe1のエリア 現在座標のエリア ライン選択用誤差e2のエリア ライン選択誤差増分Δe2のエリア 現在ライン番号 また、ドット選択用の格納エリアとしては、以下のよう
なものがある。 ドット選択用誤差e3のエリア ドット選択用誤差増分Δe3のエリア 現在ドット番号のエリア
【0038】次いで、ステップS204でY方向のピク
セル数がX方向のピクセル数より多いか否かを判別す
る。いま、貼り付けるラインの一方の端点となる辺A’
B’の位置を求める場合の具体例は図12に示される。
図12(a)に示す変形前のラインの一方の端点となる
辺ABを示し、図12(b)は貼り付けるラインの一方
の端点となる辺A’B’の様子を示し、さらに図12
(c)は辺A’B’におけるX方向およびY方向のピク
セル数の変化を示している。この例に対応させて考える
と、辺A’B’はY方向に11ピクセル、X方向に4ピ
クセルに渡って描画されるので、ステップS204の判
別結果はYESとなり、このケースではステップS20
6に進む。一方、逆のケースではNOに分岐して図23
に示すステップS238に進む。また、この場合、図1
2に示すケースでは点A’から点B’に向ってY座標を
1ずつ変えていったときにX座標の変化する位置を求め
ると、そのとき変化した座標が辺A’B’の位置とな
る。したがって、無条件に位置の決る始点(点A’)を
除く10個のドットを打つときには、X座標の変化する
位置としてX座標が変化する3箇所を求めることにな
る。
【0039】ステップS206に進むと、座標決定用誤
差増分Δe1を(Xピクセル数−1)/(Yピクセル数
−1)に初期設定するとともに、ライン選択誤差増分Δ
e2を(元ライン数−1)/(Yピクセル数−1)に初
期設定する。ステップS200〜ステップS206の処
理により必要な初期設定が完了する。次いで、ステップ
S208で現在のライン番号と現在座標を端点バッファ
(図20参照)に格納する。次いで、ステップS210
で現在座標のY座標を変更する。次いで、ステップS2
12で座標決定用誤差e1についての判別を以下のよう
にして行う。すなわち、選択誤差(初期値=0)eを決
め、選択誤差eに誤差増分Δeを加える(e=e+Δ
e)。Δeは(X方向のピクセル数−1)/(Y方向の
ピクセル数−1)である。
【0040】なお、ここでは、座標決定用であるからe
をe1とし、ΔeをΔe1として処理をする。そうする
と、e1=e1+Δe1となる。この値が1/2より大
きくなったか否かを判別する。そして、誤差増分Δe1
を加えた結果e1がe1≧(1/2)であれば、ステッ
プS214に進んで次に打つ点の座標(次の現在座標に
相当)のX座標を変更する。これは、選択誤差に誤差増
分を加え、その結果が1/2より大きいか小さいかによ
って処理を選択するもので、選択誤差が1/2以上のと
きに誤差を補正する。
【0041】このようにすると、点A’から点B’に向
ってY座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、X座標の変化する位置が滑らかにつなが
ることになる。なお、この方法はいわゆるBresenhamの
アルゴリズムとして用いられるものである。次いで、ス
テップS216で誤差補正を行い、e1=e1−1とす
る。これは、選択誤差が1/2以上になって次の座標を
変更したので、1を減算することにより、再び次の現在
座標から誤差増分Δeを加えて同様の判別を始めるため
である。その後、ステップS218に進む。一方、誤差
増分Δe1を加えた結果e1がe1<(1/2)であれ
ば、ステップS214、ステップS216をジャンプし
てステップS218に進む。このときは、次に打つ点の
X座標は元のままにする。また、この場合は選択誤差e
1は補正しない。以上のステップS210〜ステップS
216を実行することにより、貼り付けるラインの一方
の端点となる辺A’B’の位置が決定される。
【0042】ここで、図12の場合(貼り付けるライン
の一方の端点となる辺A’B’の位置を決定する場合)
の具体例について説明する。まず、最初の端点A’は無
条件に決まる。この時点で、選択誤差eは[0]に初期
設定されている。また、端点A’から端点B’に対して
はY方向に11ピクセル、X方向に4ピクセルに渡って
描画されるので、誤差増分Δeは Δe=(4−1)/(11−1) =0.30である。次いで、選択誤差eとしてe=0を
加え、誤差増分ΔeとしてΔe=0.30を加えると、
e=0+0.30=0.30<(1/2)となる。した
がって、このときは次に打つ点のX座標は変更しない
(図12(c)参照)。また、選択誤差eは1/2より
小さいので、選択誤差eの補正は行わない。次いで、こ
こまでの選択誤差e=0.30に誤差増分ΔeとしてΔ
e=0.30を加えると、e=0.30+0.30=
0.60≧(1/2)となるので、今度は次に打つ点
のX座標を変更する(図12(c)参照)。以上の処理
を繰り返すことにより、点、の位置でX座標の変更
が行われ、最終的に図12(c)に示すように、端点
B’の位置が決定される。
【0043】一方、上記ステップS204でY方向のピ
クセル数がX方向のピクセル数より小さいときは図23
のステップS238に進み、今度はY座標の方を変更す
る処理を行う。すなわち、ステップS238で座標決定
用誤差増分Δe1を(Yピクセル数−1)/(Xピクセ
ル数−1)に初期設定するとともに、ライン選択誤差増
分Δe2を(元ライン数−1)/(Xピクセル数−1)
に初期設定する。次いで、ステップS240で現在のラ
イン番号と現在座標を端点バッファ(図20参照)に格
納する。次いで、ステップS242で現在座標のX座標
を変更する。次いで、ステップS244で座標決定用誤
差e1についての判別を以下のようにして行う。すなわ
ち、選択誤差(初期値=0)eを決め、選択誤差eに誤
差増分Δeを加える(e=e+Δe)。Δeは(Y方向
のピクセル数−1)/(X方向のピクセル数−1)であ
る。なお、ここでは、同様に座標決定用であるからeを
e1とし、ΔeをΔe1として処理をする。そうする
と、e1=e1+Δe1となる。この値が1/2より大
きくなったか否かを判別する。そして、誤差増分Δe1
を加えた結果e1がe1≧(1/2)であれば、ステッ
プS246に進んで次に打つ点の座標(次の現在座標に
相当)のY座標を変更する。これは、選択誤差に誤差増
分を加え、その結果が1/2より大きいか小さいかによ
って処理を選択するもので、選択誤差が1/2以上のと
きに誤差を補正する。
【0044】このようにすると、点D’から点C’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、Y座標の変化する位置が滑らかにつなが
ることになる。次いで、ステップS248で誤差補正を
行い、e1=e1−1とする。これは、選択誤差が1/
2以上になって次の現在座標のY座標を変更したので、
1を減算することにより、再び次の現在座標から誤差増
分Δeを加えて同様の判別を始めるためである。その
後、ステップS250に進む。一方、誤差増分Δe1を
加えた結果e1がe1<(1/2)であれば、ステップ
S246、ステップS248をジャンプしてステップS
250に進む。このときは、次に打つ点のY座標は元の
ままにする。また、この場合は選択誤差e1は補正しな
い。以上のステップS242〜ステップS248を実行
することにより、貼り付けるラインの一方の端点となる
辺D’C’の位置が決定される。
【0045】ここで、図13の場合(貼り付けるライン
の他方の端点となる辺D’C’の位置を決定する場合)
の具体例について説明する。図13(a)は変形前のラ
インの他方の端点となる辺DCを示し、図13(b)は
貼り付けるラインの他方の端点となる辺D’C’の様子
を示し、さらに図13(c)は辺D’C’におけるX方
向およびY方向のピクセル数の変化を示している。この
例に対応させて考えると、辺D’C’はY方向に14ピ
クセル、X方向に5ピクセルに渡って描画されるので、
点D’から点C’に向ってY座標を1ずつ変えていった
ときにX座標の変化する位置を求めると、そのとき変化
した座標が辺D’C’の位置となる。したがって、無条
件に位置の決る始点(点D’)を除く13個のドットを
打つときには、X座標の変化する位置としてX座標が変
化する4箇所を求めることになる。
【0046】まず、最初の端点D’は無条件に決まる。
この時点で、選択誤差eは[0]に初期設定されてい
る。また、端点D’から端点C’に対してはY方向に1
4ピクセル、X方向に5ピクセルに渡って描画されるの
で、誤差増分Δeは Δe=(5−1)/(14−1) =0.30である。次いで、選択誤差eとしてe=0を
加え、誤差増分ΔeとしてΔe=0.30を加えると、
e=0+0.30=0.30<(1/2)となる。した
がって、このときは次に打つ点のX座標は変更しない
(図13(c)参照)。また、選択誤差eは1/2より
小さいので、選択誤差eの補正は行わない。次いで、こ
こまでの選択誤差e=0.30に誤差増分ΔeとしてΔ
e=0.30を加えると、e=0.30+0.30=
0.60≧(1/2)となるので、今度は次に打つ点
のX座標を変更する(図13(c)参照)。以上の処理
を繰り返すことにより、点、、(12)(なお、10以
降の○付き数字は表示が困難につき、かっこ付きの半角
数字で表す)の位置でX座標の変更が行われ、最終的に
図13(c)に示すように、端点C’の位置が決定され
る。
【0047】さて、再び図22のフローチャートに戻
り、端点位置の決定が行われると、ステップS218に
進む。ステップS218〜ステップS236およびステ
ップS250〜ステップS266では、辺A’B’、辺
D’C’に分割された水平ラインのうち、どのラインの
端点を割り当てるかを求める処理を行う。まず、図14
(b)に示す辺A’B’のように図14(a)に示す元
となる辺ABよりも短い辺に、貼り付けるラインの端点
を割り当てる処理内容について説明する。元画像データ
の水平ライン数は12本、辺A’B’に貼り付けること
のできるライン数は11本なので、元画像データの12
本のラインのうち、2本のラインの端点が辺A’B’上
で重なる。重なるラインの選択の処理は、次のようにな
る。
【0048】ステップS218で選択誤差(初期値=
0)eを決め、選択誤差eに誤差増分Δeを加える(e
=e+Δe)。Δeは(元画像のライン数−1)/(辺
A’B’のピクセル数−1)である。なお、ここでは、
ライン選択用であるからeをe2とし、ΔeをΔe2と
して処理をする。そうすると、e2=e2+Δe2とな
る。次いで、この値が1/2より大きくなったか否かを
ステップS220で判別する。そして、誤差増分Δe2
を加えた結果e2がe2≧(1/2)であれば、ステッ
プS224に進んで現在のライン番号を[1]だけイン
クリメントする(つまり、次のライン番号に進める)。
これは、選択誤差に誤差増分を加え、その結果が1/2
より大きいか小さいかによって処理を選択するもので、
選択誤差が1/2以上のときに誤差を補正する。現在の
ライン番号を1進めることにより、辺A’B’上の次の
点には次のラインの端点が割り当てられる。
【0049】このようにすると、点A’から点B’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe2が1の半分より大きい場合に、次のライン
番号に変更するので、ライン端点の変化する位置が滑ら
かにつながることになる。また、ステップS220でe
2が1/2未満のときはステップS236にジャンプす
る。ステップS236ではすべての端点について処理し
たか否かを判別し、すべての端点について処理が終了し
ていなければ、ステップS208に戻って同様の処理を
繰り返す。したがって、誤差増分Δe2が1の半分より
大きくなった時点でステップS236へジャンプせず、
ステップS224の方に進むことになる。
【0050】ステップS224を経ると、続くステップ
S224で誤差補正を行い、e2=e2−1とする。こ
れは、選択誤差が1/2以上になって次のライン番号に
変更したので、1を減算することにより、再び次のライ
ン番号から誤差増分Δeを加えて同様の判別を始めるた
めである。次いで、ステップS228で再び選択誤差e
2が1/2以上であるか否かを判別する。これは、誤差
補正を行った結果について、再度選択誤差e2の大ささ
を判断するものである。そして、誤差補正を行った結
果、選択誤差e2が依然として1/2以上であれば、ス
テップS230に進み、現在のライン番号と現在座標を
CPU31の内部レジスタ31a内の端点バッファに格
納する。次いで、ステップS232でライン番号を
[1]だけインクリメントする(つまり、次のライン番
号に進める)。これにより、辺A’B’上の同じ点に、
次のラインの端点も割り当てられる。そして、選択誤差
e2が1/2未満になるまで、同じ点に次のラインの端
点が順次割り当てられていく。
【0051】次いで、ステップS234で誤差補正を行
い、e2=e2−1とする。これは、上記同様に選択誤
差が1/2以上になって次のライン番号に変更したの
で、1を減算することにより、再び次のライン番号から
誤差増分Δeを加えて同様の判別を始めるためである。
その後、ステップS228に戻って同様の処理を繰り返
す。したがって、誤差を補正した結果(選択誤差)e2
が未だ1/2より大きければ、ライン番号を更に1進め
て辺A’B’上の同じ点に、次のラインの端点が割り当
てられ、選択誤差e2が1/2未満になるまで、同じ点
に次のラインの端点が割り当てられることになる。
【0052】一方、ステップS228で誤差増分Δe2
を加えた結果e2がe2<(1/2)であれば、ステッ
プS236にジャンプする。このときは、次のライン番
号に変更されず、ライン番号は元のままである。また、
この場合は選択誤差e2は補正しない。ステップS23
6ではすべての端点について処理したか否かを判別す
る。すべての端点について処理が終了していなければ、
ステップS208に戻って処理を繰り返す。これによ
り、点A’から点B’に向ってX座標を1ずつ変えてい
ったときに、誤差増分Δe2の大きさに応じて上記のよ
うな処理が繰り返される。誤差増分Δe2が1/2より
大きい場合に、次のライン番号に変更されていく。以上
のステップS218〜ステップS236を実行すること
により、辺A’B’のように元となる辺ABよりも短い
辺に、貼り付けるラインの端点を割り当てる場合の各ラ
イン端点の位置が決定される。
【0053】ここで、図14の場合(辺A’B’のよう
に元となる辺ABよりも短い辺に、ラインの一方の端点
を割り当てる場合)の具体例について説明する。図14
(a)は変形前のラインの一方の端点となる辺ABを示
し、図14(b)は貼り付けるラインの一方の端点とな
る辺A’B’の様子を示し、さらに図14(c)は辺
A’B’におけるX方向およびY方向のピクセル数の変
化を示している。まず、ライン0の端点が頂点A’上に
決まる。この時点でライン番号は0、選択誤差eは
[0]に初期設定されている。また、誤差増分Δeは Δe=(12−1)/(11−1) =1.10である。次いで、選択誤差eをe=0とし、
誤差増分ΔeとしてΔe=1.10を加えると、e=0
+1.10=1.10≧(1/2)となる。これによ
り、ライン番号を1進める(ライン1になる:図14
(c)参照)。したがって、辺A’B’上の点にはラ
イン1の端点が割り当てられる(図14(b)参照)。
このとき、選択誤差eを次のように補正する。 e=1.10−1=0.10<1/2
【0054】ここまでの選択誤差e=0.10に、再び
誤差増分Δe=1.10を加えると、e=0.10+
1.10=1.20≧(1/2)となる。これにより、
ライン番号を1進める(今度はライン2になる:図14
(c)参照)。したがって、辺A’B’上の点にはラ
イン2の端点が割り当てられる(図14(b)参照)。
このとき、選択誤差eを次のように補正する。 e=1.20−1=0.20<1/2 以下、同様の処理を行い、辺A’B’上の点にはライ
ン3の端点が、点にはライン4の端点が、点にはラ
イン5の端点がそれぞれ割り当てられる(図14(b)
参照)。このとき、ライン5を割り当てて選択誤差eを
補正した時点で選択誤差eは0.50になる。選択誤差
eを補正した時点で未だe≧1/2なので、ライン番号
を更に1進めて(ライン6になる)、点にライン6の
端点も割り当てる。次いで、さらに選択誤差eを以下の
ように補正する。 e=0.50−1=−0.50<1/2 以上の処理を繰り返すことにより、辺A’B’に分割さ
れた元の水平ライン内のどのラインの端点を割り当てる
かが決まる。
【0055】さて、再び図23のフローチャートに戻っ
て説明する。上述の説明は辺A’B’のように元となる
辺ABよりも短い辺に、貼り付けるラインの端点を割り
当てる処理内容であったが、今度は、図15(b)に示
す辺D’C’のように図15(a)に示す元となる辺D
Cよりも長い辺に、貼り付けるラインの端点を割り当て
る処理内容について説明する。この場合には図23に示
すステップS250以降の処理が実行される。これは、
先のステップS204の判別結果がNOである場合に相
当し、この判別結果がNOということは元となる辺DC
よりも長い辺D’C’の処理に進むケースである。ステ
ップS204の判別結果がNOであるときは図23のス
テップS238に分岐し、端点の位置決定を行った後、
ステップS250以降の各ステップを実行する。まず、
元画像データの水平ライン数は12本、辺D’C’に貼
り付けることのできるライン数は14本なので、元画像
データの12本のラインのうち、2本のラインの端点が
辺D’C’上で2回貼り付けられることになる。貼り付
けられるラインの選択の処理は、次のようになる。
【0056】ステップS250で選択誤差(初期値=
0)eを決め、選択誤差eに誤差増分Δeを加える(e
=e+Δe)。Δeは(元画像のライン数−1)/(辺
D’C’のピクセル数−1)である。なお、ここでは、
ライン選択用であるからeをe2とし、ΔeをΔe2と
して処理をする。そうすると、e2=e2+Δe2とな
る。次いで、この値が1/2より大きくなったか否かを
ステップS252で判別する。そして、誤差増分Δe2
を加えた結果e2がe2≧(1/2)であれば、ステッ
プS254に進んで現在のライン番号を[1]だけイン
クリメントする(つまり、次のライン番号に進める)。
これは、選択誤差に誤差増分を加え、その結果が1/2
より大きいか小さいかによって処理を選択するもので、
選択誤差が1/2以上のときに誤差を補正する。現在の
ライン番号を1進めることにより、辺D’C’上の次の
点には次のラインの端点が割り当てられる。
【0057】このようにすると、点D’から点C’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe2が1の半分より大きい場合に、次のライン
番号に変更するので、ライン端点の変化する位置が滑ら
かにつながることになる。また、ステップS252でe
2が1/2未満のときはステップS266にジャンプす
る。ステップS266ではすべての端点について処理し
たか否かを判別し、すべての端点について処理が終了し
ていなければ、ステップS240に戻って同様の処理を
繰り返す。したがって、誤差増分Δe2が1の半分より
大きくなった時点でステップS266へジャンプせず、
ステップS254の方に進むことになる。
【0058】ステップS254を経ると、続くステップ
S256で誤差補正を行い、e2=e2−1とする。こ
れは、選択誤差が1/2以上になって次のライン番号に
変更したので、1を減算することにより、再び次のライ
ン番号から誤差増分Δeを加えて同様の判別を始めるた
めである。次いで、ステップS258で再び選択誤差e
2が1/2以上であるか否かを判別する。これは、誤差
補正を行った結果について、再度選択誤差e2の大きさ
を判断するものである。そして、誤差補正を行った結
果、選択誤差e2が依然として1/2以上であれば、ス
テップS260に進み、現在のライン番号と現在座標を
CPU31の内部レジスタ31a内の端点バッファに格
納する。次いで、ステップS262でライン番号を
[1]だけインクリメントする(つまり、次のライン番
号に進める)。これにより、辺D’C’上の同じ点に、
次のラインの端点も割り当てられる。そして、選択誤差
e2が1/2未満になるまで、同じ点に次のラインの端
点が順次割り当てられていく。
【0059】次いで、ステップS264で誤差補正を行
い、e2=e2−1とする。これは、上記同様に選択誤
差が1/2以上になって次のライン番号に変更したの
で、1を減算することにより、再び次のライン番号から
誤差増分Δeを加えて同様の判別を始めるためである。
その後、再びステップS258に戻って同様の処理を繰
り返す。したがって、誤差を補正した結果(選択誤差)
e2が未だ1/2より大きければ、ライン番号を更に1
進めて辺D’C’上の同じ点に、次のラインの端点が割
り当てられることになる。そして、選択誤差e2が1/
2未満になるまで、同じ点に次のラインの端点が割り当
てられていく。
【0060】一方、ステップS258で誤差増分Δe2
を加えた結果e2がe2<(1/2)であれば、ステッ
プS266にジャンプする。このときは、次のライン番
号に変更されず、ライン番号は元のままである。また、
この場合は選択誤差e2は補正しない。ステップS26
6ではすべての端点について処理したか否かを判別す
る。すべての端点について処理が終了していなければ、
ステップS240に戻って処理を繰り返す。これによ
り、点D’から点C’に向ってX座標を1ずつ変えてい
ったときに、誤差増分Δe2の大きさに応じて上記のよ
うな処理が繰り返される。誤差増分Δe2が1/2より
大きい場合に、次のライン番号に変更されていく。以上
のステップS250〜ステップS266を実行すること
により、辺D’C’のように元となる辺DCよりも長い
辺に、貼り付けるラインの端点を割り当てる場合の各ラ
イン端点の位置が決定される。
【0061】ここで、図15の場合(辺D’C’のよう
に元となる辺ABよりも長い辺に、ラインの一方の端点
を割り当てる場合)の具体例について説明する。図15
(a)は変形前のラインの一方の端点となる辺DCを示
し、図15(b)は貼り付けるラインの一方の端点とな
る辺D’C’の様子を示し、さらに図15(c)は辺
D’C’におけるX方向およびY方向のピクセル数の変
化を示している。まず、ライン0の端点が頂点てD’上
に決まる。この時点でライン番号は0、選択誤差eは
[0]に初期設定されている。また、誤差増分Δeは Δe=(12−1)/(14−1) =0.84である。次いで、選択誤差eをe=0(初期
設定値)とし、誤差増分ΔeとしてΔe=0.84を加
えると、e=0+0.84=0.84≧(1/2)とな
る。これにより、ライン番号を1進める(ライン1にな
る:図15(c)参照)。したがって、辺D’C’上の
点にはライン1の端点が割り当てられる(図15
(b)参照)。このとき、選択誤差eを次のように補正
する。 e=0.84−1=−0.16<1/2
【0062】同様に、辺D’C’上の点にはライン2
の端点が、点にはライン3の端点が割り当てられる
(図15(b)参照)。ライン3を割り当てて選択誤差
eを補正して時点で、選択誤差eは−0.48になって
いる。ここまでの選択誤差e=−0.48に再び誤差増
分Δe=0.84を加えると、e=−0.48+0.8
4=0.36<(1/2)になるので、ライン3を点
にもう一度貼り付ける(図15(c)参照)。このと
き、選択誤差eは補正しない。以上の処理を繰り返すこ
とにより、辺D’C’に分割された元の水平ライン内の
どのラインの端点を割り当てるかが決まる。ライン端点
処理が終わった時点における端点バッファへの格納デー
タは図26に示すようになる。図26では、辺A’B’
上のライン0〜ライン11の12個の端点位置が座標に
よって端点バッファに記憶される。また、辺D’C’上
のライン0〜ライン11(そのうちライン3とライン8
は2つある)の14個の端点位置が座標によって端点バ
ッファに記憶される。
【0063】ライン描画処理のサブルーチン さて、その後はこのようにして求めた辺A’B’上に一
方のラインの端点を持ち、辺D’C’上に他方の端点を
持つような複数のラインに元画像データ(矩形ABC
D)の対応するラインを順番に貼り付けていけば画像変
形が行える。ただし、このとき転送先と転送元ではライ
ンの長さ(ピクセル数)が異なるので、ライン毎に拡大
あるいは縮小をしながら貼り付けていくことになる。そ
こで、続いて前述の図9に示したステップS108のラ
インの描画処理のサブルーチンについて説明する。図2
4はラインの描画処理を示すサブルーチンのフローチャ
ートである。まず、貼り付けるラインの位置を求める処
理から説明する。具体例としては、後にライン0の貼り
付け位置を求める方法を説明をする。他のラインの貼り
付け位置についても同様である。まず、ステップS30
0で座標決定用誤差e1、ドット選択用誤差e3、現在
ドット番号をすべて[0]に初期設定する。座標決定用
誤差e1とは、ここではラインの描画位置を決めるとき
に用いる座標決定用誤差のことである。ドット選択用誤
差e3とは、ラインに割り当てるドットを選択するとき
に用いるドット選択用誤差のことである。これにより、
最初は各誤差が[0]になる。
【0064】次いで、ステップS302で辺A’B’上
の端点の座標をCPU31の内部レジスタ31aにある
現在座標というエリアに格納する(図20参照)。な
お、ドット選択処理の過程で使用される関連の格納エリ
アとしては、ドット選択用誤差e3のエリア、ドット選
択用誤差増分Δe3のエリア、現在ドット番号のエリア
が用いられる。次いで、ステップS304でY方向のピ
クセル数がX方向のピクセル数より多いか否かを判別す
る。いま、ライン0を貼り付けるため各ドットの位置を
求める場合の具体例は図16に示される。図16(a)
は変形前のラインADを示し、図16(b)は変形後の
ライン辺A’D’の様子を示し、さらに図16(c)は
辺A’D’におけるX方向およびY方向のピクセル数の
変化を示している。この例に対応させて考えると、辺
A’D’はY方向に10ピクセル、X方向に2ピクセル
に渡って描画されるので、ステップS304の判別結果
はYESとなり、このケースではステップS306に進
む。一方、逆のケースではNOに分岐して図25に示す
ステップS338に進む。また、この場合、図16に示
すケースでは点A’から点D’に向ってX座標を1ずつ
変えていったときにY座標の変化する位置を求めると、
そのとき変化した座標がラインA’D’を貼り付けする
位置となる。したがって、無条件に位置の決る始点(点
A’)を除く9個のドットを打つときには、X座標の変
化する位置としてX座標が変化する1箇所を求めること
になる。
【0065】ステップS306に進むと、座標決定用誤
差増分Δe1を(Xピクセル数−1)/(Yピクセル数
−1)に初期設定するとともに、ドット選択誤差増分Δ
e3を(転送元ドット数−1)/(転送先ドット数−
1)に初期設定する。ステップS300〜ステップS3
06の処理により必要な初期設定が完了する。次いで、
ステップS308で現在座標に描画されていなければ、
現在ドット番号のドットを描画する。これにより、該当
するラインの最初の点がドットで描画される。次い
で、ステップS310で現在座標のY座標を変更する。
次いで、ステップS312で座標決定用誤差e1につい
ての判別を以下のようにして行う。すなわち、選択誤差
(初期値=0)eを決め、選択誤差eに誤差増分Δeを
加える(e=e+Δe)。Δeは(Y方向のピクセル数
−1)/(X方向のピクセル数−1)である。なお、こ
こでは、座標決定用であるからeをe1とし、ΔeをΔ
e1として処理をする。そうすると、e1=e1+Δe
1となる。この値が1/2より大きくなったか否かを判
別する。そして、誤差増分Δe1を加えた結果e1がe
1≧(1/2)であれば、ステップS314に進んで次
に打つ点の座標(次の現在座標に相当)のX座標を変更
する。これは、選択誤差に誤差増分を加え、その結果が
1/2より大きいか小さいかによって処理を選択するも
ので、選択誤差が1/2以上のときに誤差を補正する。
【0066】このようにすると、点A’から点D’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、Y座標の変化する位置が滑らかにつなが
ることになる。次いで、ステップS316で誤差補正を
行い、e1=e1−1とする。これは、選択誤差が1/
2以上になって次の座標を変更したので、1を減算する
ことにより、再び次の現在座標から誤差増分Δeを加え
て同様の判別を始めるためである。その後、ステップS
318に進む。また、誤差増分Δe1を加えた結果e1
がe1<(1/2)であれば、ステップS314、ステ
ップS316をジャンプしてステップS318に進む。
このときは、次に打つ点のX座標は元のままにする。ま
た、この場合は選択誤差e1は補正しない。以上のステ
ップS310〜ステップS316を実行することによ
り、Y方向のピクセル数がX方向のピクセル数より多い
場合における該当するラインの貼り付け位置が決定され
る。
【0067】一方、上記ステップS304でY方向のピ
クセル数がX方向のピクセル数より小さいときは図25
のステップS328に進み、今度はX座標の方を変更す
る処理を行う。すなわち、ステップS328で座標決定
用誤差増分Δe1を(Yピクセル数−1)/(Xピクセ
ル数−1)に初期設定するとともに、ドット選択誤差増
分Δe3を(転送元ドット数−1)/(転送先ドット数
−1)に初期設定する。次いで、ステップS330で現
在座標に描画されていなければ、現在ドット番号のドッ
トを描画する。これにより、該当するラインの最初の点
がドットで描画される。次いで、ステップS332で
現在座標のX座標を変更する。次いで、ステップS33
4で座標決定用誤差e1についての判別を以下のように
して行う。
【0068】すなわち、選択誤差(初期値=0)eを決
め、選択誤差eに誤差増分Δeを加える(e=e+Δ
e)。Δeは(Y方向のピクセル数−1)/(X方向の
ピクセル数−1)である。なお、ここでは、座標決定用
であるからeをe1とし、ΔeをΔe1として処理をす
る。そうすると、e1=e1+Δe1となる。この値が
1/2より大きくなったか否かを判別する。そして、誤
差増分Δe1を加えた結果e1がe1≧(1/2)であ
れば、ステップS336に進んで次に打つ点の座標(次
の現在座標に相当)のY座標を変更する。これは、選択
誤差に誤差増分を加え、その結果が1/2より大きいか
小さいかによって処理を選択するもので、選択誤差が1
/2以上のときに誤差を補正する。
【0069】このようにすると、点A’から点D’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、Y座標の変化する位置が滑らかにつなが
ることになる。次いで、ステップS340で誤差補正を
行い、e1=e1−1とする。これは、選択誤差が1/
2以上になって次の座標を変更したので、1を減算する
ことにより、再び次の現在座標から誤差増分Δeを加え
て同様の判別を始めるためである。その後、ステップS
342に進む。また、誤差増分Δe1を加えた結果e1
がe1<(1/2)であれば、ステップS338、ステ
ップS340をジャンプしてステップS342に進む。
このときは、次に打つ点のX座標は元のままにする。ま
た、この場合は選択誤差e1は補正しない。以上のステ
ップS332〜ステップS340を実行することによ
り、Y方向のピクセル数がX方向のピクセル数より小さ
い場合における該当するラインの貼り付け位置が決定さ
れる。
【0070】なお、上記処理は前述した図22に示すス
テップS210〜ステップS216と同様の処理内容で
あるが、図22のルーチンに比べてXとYが逆になって
いる部分がある。これは、X方向とY方向のピクセル数
の多い方を基準として考えているからである。図22の
ルーチンではピクセル数の多いY座標を基準として考
え、Y座標を1つずつ変えていったときに、X座標がど
う変化するかを決定したのに対して、図24のルーチン
ではピクセル数の多いX座標を基準として考え、X座標
を1つずつ変えていったときに、Y座標がどう変化する
かを決定している。他のラインの貼り付け位置について
も、同様の方法で求める処理が行われる。
【0071】以上で、各ラインの貼り付け位置が求まっ
たので、次に、元となる水平ドットラインのドット内の
うち、どのドットを割り当てる(つまり、ドットを選択
する)かを求める処理内容を説明する。まず、ドット選
択の処理として示されるステップS318以降の処理
で、転送先ラインのピクセル数が転送元ラインのピクセ
ル数より少ないとき、つまりラインを縮小する方法を説
明する。この方法は、ドット選択の処理であるステップ
S318〜ステップS326で示される。転送元ライン
の最初のドット(ドット0)を無条件に選択するものと
すると、その他のドットの選択の方法は以下のようにな
る。すなわち、まずステップS318で選択誤差(初期
値=0)eを決め、選択誤差eに誤差増分Δeを加える
(e=e+Δe)。Δeは(転送元のドット数−1)/
(転送先のドット数−1)である。なお、ここでは、ド
ット選択用であるからeをe3とし、ΔeをΔe3とし
て処理をする。そうすると、e3=e3+Δe3とな
る。
【0072】次いで、この値が1/2より大きくなった
か否かをステップS320で判別する。そして、誤差増
分Δe3を加えた結果e3がe3≧(1/2)であれ
ば、ステップS322に進んで現在ドット番号(転送元
ラインのドット番号)を[1]だけインクリメントする
(つまり、次のドット番号に進める)。これは、選択誤
差に誤差増分を加え、その結果が1/2より大きいか小
さいかによって処理を選択するもので、選択誤差が1/
2以上のときに誤差を補正する。転送元ラインのドット
番号を1進めることにより、辺AD上で次に選択すべき
転送元ラインのドット番号が割り当てられる。
【0073】このようにすると、点Aから点Dに向って
X座標を1ずつ変えていったときに、少なくとも誤差増
分Δe3が1の半分より大きい場合に、次のドット番号
に変更するので、ドットの変化する位置が滑らかにつな
がることになる。次いで、ステップS324で誤差補正
を行い、e3=e3−1とする。これは、選択誤差が1
/2以上になって次のドット番号を変更したので、1を
減算することにより、再び次の現在ドット番号から誤差
増分Δeを加えて同様の判別を始めるためである。その
後、ステップS344に戻ってステップS344〜ステ
ップS348のループを繰り返す。そして、ステップS
320でe3が1/2未満になると、ステップS350
に分岐する。
【0074】一方、ステップS320でe3が当初から
1/2未満のときはステップS326にジャンプする。
ステップS326ではすべてのドットについて処理した
か否かを判別し、すべてのドットについて処理が終了し
ていなければ、ステップS330に戻って同様の処理を
繰り返す。したがって、誤差増分Δe3が1の半分より
大きくなった時点ではステップS350へジャンプせ
ず、ステップS346の方へ進むことになる。このよう
に、誤差増分Δe3を加えた結果(選択誤差)e3がe
3<(1/2)であれば、転送先ラインの次のドットに
は1つ前のドットと同じデータが再び転送される。この
とき、水平ドット番号と選択誤差e3の変更は行われな
い。
【0075】ここで、ドット選択の具体例について図1
8を参照して説明する。図18(a)は変形前の転送元
ラインのドットの様子を示し、図18(b)は変形後の
転送先ラインのドットの様子を示し、さらに図18
(c)は転送ラインにおけるX方向およびY方向のピク
セル数の変化を示している。この例は、転送先ラインの
ピクセル数が転送元ラインのピクセル数より多いとき、
つまりラインを拡大する処理に相当するものである。こ
の例に対応させて考えると、転送元ラインのドット数は
16個、転送先ラインのドット数は17個なので、転送
先の17個のドットのうち1個は1つ前のドットと同じ
データを転送することになる。転送元ラインの最初のド
ット(ドット0)を無条件に転送するものとすると、そ
の他のドットの転送の処理は次のようにして行われる。
【0076】まず、最初にドット0を転送する。この時
点で、選択誤差eは[0]に初期設定され、ドット番号
は0になっている。また、転送元ラインのドット数は1
6個、転送先ラインのドット数は17個であるから、誤
差増分Δeは Δe=(16−1)/(17−1)=0.93である。
次いで、選択誤差eをe=0(初期設定値)とし、誤差
増分ΔeとしてΔe=0.93を加えると、e=0+
0.93=0.93≧(1/2)となる。したがって、
このときはドット番号を1進める(ドット1になる)。
同時に、選択誤差eを以下のように補正する。 e=0.93−1=−0.07<(1/2) この時点で選択誤差eが1/2より小さくなるので、点
にはドット1が転送される(図18(b)、図18
(c)参照)。
【0077】次いで、同様にここまでの選択誤差e=−
0.07に誤差増分ΔeとしてΔe=0.93を加える
と、e=−0.07+0.93=0.86≧(1/2)
になるので、ドット番号を1進める(ドット2になる)
とともに、選択誤差eを以下のように補正する。 e=0.86−1=−0.14<(1/2) この時点で選択誤差eが1/2より小さくなり、点に
表示すべきドットとして、ドット2が転送される(図1
8(b)、図18(c)参照)。
【0078】以後、同様の処理を行うと、点にはドッ
ト3が、点にはドット4が、点にはドット5が、点
にはドット6が、点にはドット7がそれぞれ割り当
てられる。ドット7を割り当てた時点で選択誤差eは−
0.49になる。ここまでの選択誤差e=−0.49に
誤差増分Δe=0.93を加えると、e=−0.49+
0.93=0.44<(1/2)になるので、今度はド
ット番号は7のままで、選択誤差eも変更しない。した
がって、点にはドット7が再び転送される(図18
(b)、図18(c)参照)。以上の処理を繰り返すこ
とにより、転送先ラインの16個のドットから1個のド
ット(ドット7)が2回転送されて、転送先ラインの1
7個のドットが決定される。このようにして、転送先ラ
インのピクセル数が転送元ラインのピクセル数より多い
場合に、ラインを拡大する処理が行われる。
【0079】上述した各プログラムを実行することによ
り、変形前の画像データのラインを変形後の画像データ
として貼り付ける処理が行われるが、このときラインの
貼り付けは辺A’B’と辺D’C’のうち、長い方の辺
が有するピクセル数分だけ行われる。例えば、図10の
例では辺A’B’と辺D’C’の各ピクセル数を比較す
ると、辺A’B’のピクセル数が11、辺D’C’のピ
クセル数が14であるから、辺D’C’のピクセル数分
(=14)だけ行われる。具体的には、図10(b)に
示すように辺D’C’のピクセル数に対応して、ライン
0、ライン0、ライン1、ライン2、ライン3、ライン
3’、ライン4、ライン5、ライン6、ライン7、ライ
ン8、ライン8’、ライン9、ライン10、ライン11
の14回ラインの貼り付けるが行われる。そして、各ラ
インを貼り付けた最終的な状態は図19(b)のように
示される。なお、図19(a)は変形前の画像データの
ラインである。なお、図11(a)、(b)に示すよう
に貼り付けた2つのラインが重なる部分が生じるが、本
実施例では先に書かれたものを優先するようにしてい
る。また、この他に、後に書かれたものを優先する方
法、あるいは重なった部分では2つのドットデータの色
コードを合成する毎に、その値を加えて1/2する等の
処理方法もある。ドットデータの色コードを合成する場
合には、例えばR(赤成分)、G(緑成分)、B(青成
分)というように色コードを分ける。
【0080】このように本実施例では、ビット配列形式
の画像データ(例えば、図10(a)の画像データ)を
有する変形対象を予め複数の小矩形に分割して、その座
標データを作成し、次いで、変形対象全体が滑らかに変
形されるように、各小矩形をライン貼り付け法という所
定の変形処理に従って異なる任意の四角形にそれぞれ変
形し(例えば、図10(b)参照)、各小四角形毎に変
形前の小矩形形に含まれるビット配列形式の各ドットを
変形後の小四角形へとそれぞれ座標変換し、さらに座標
変換した各小四角形毎のビット配列形式の各ドットに基
づいて変形後の画像データの配列を作成する処理が行わ
れる。例えば、図1(a)に示すようなビット配列形式
の「目」の画像を、図1(b)に示すような「目」の画
像に滑らかに変形させることができる。したがって、変
形対象の画像データの配列に対して各小矩形毎に変形処
理が行われるので、従来のように全く異なる全体の画像
データを予め持つ必要がなく、少ないメモリ容量で、ビ
ット配列形式の画像を自由に変形することができる。ま
た、変形対象を複数の小矩形に分割し、各小矩形毎に変
形処理が行われるので、変形に自由度があり、予めメモ
リに多くのデータを持たなくても、画像を滑らかに変形
することができる。
【0081】具体的な波及効果としては、本発明の適用
により、例えばアニメーション、ゲーム等のキャラクタ
ー又は背景データ等のようにドットで構成され、かつ各
ドット毎に表示色番号あるいはパレット番号を持つよう
なビット配列形式の画像データを、自由にかつ滑らかに
変形することができる。その結果、1つの元画像データ
から元画像データの一部又は全部が滑らかに変形した複
数の画像データを作成することができる。また、アニメ
ーションに適用した場合、従来のように少しずつその形
の異なる複数の画像データを予めメモリに持っておかな
くても、一定時間毎に元画像データを本発明の変形法を
用いて変形すれば、少ないメモリ容量で従来と同等のア
ニメーションを行うことができる。ゲーム等に複数のキ
ャラクターを登場させる場合にも、1つのキャラクター
の画像データから全く別の複数のキャラクターを作るこ
とができる。ゲーム等に登場するキャラクターの一部分
(例えば、目、鼻、手、足等のパーツ)の形を変える場
合にも、元となる1つの画像データだけを持っていれば
よいという効果がある。ゲーム等の背景等に特殊効果を
付加する場合にも、従来のような拡大、縮小、四角形か
ら四角形への変形等に比べてはるかに自由かつ滑らかな
変形を行うことができ、従来にない特殊効果(例えば、
背景を歪ませて異次元の世界を表現する等)を付加する
ことができる。
【0082】なお、上記実施例ではビット配列形式の画
像データを有する変形対象を小矩形に分割し、任意な四
角形に変形しているが、これに限らず、例えば図27
(a)に示すように、ビット配列形式で「目」の画像
(絵)Eを構成する画像データを有する変形対象を複数
の小六角形に分割し、各六角形を例えば上記実施例と同
様の変形処理に従って異なる小六角形にそれぞれ変形す
ることにより、図27(b)に示すような変形後の画像
(「目」の画像(絵)Fを表す)を作成するようにして
もよい。また、ビット配列形式の画像データを有する変
形対象を分割する形状は上記の2種類に限るものではな
く、本発明の目的の範囲内が各種の変形が可能である。
さらに、本発明の適用はアニメーション、ゲーム等のキ
ャラクター又は背景データ等に限るものではなく、他の
分野、他の画像データにも適用できる。
【0083】
【発明の効果】本発明によれば、まずビット配列形式の
画像データを有する変形対象を複数の小多角形に分割
し、各小多角形を所定の変形処理(例えば、座標変換処
理)に従って異なる小多角形にそれぞれ変形し、次い
で、変形前の小多角形に含まれるビット配列形式の画像
データの配列を、各小多角形毎に、所定のデータ変換処
理に従って変形後の小多角形のデータに対応するように
順次変更して変更後の全体画像データを作成しているの
で、以下の効果を得ることができる。 変形対象の画像は各小多角形毎に変形処理が行われる
ので、従来のように全く異なる全体の画像データを予め
持つ必要がなく、少ないメモリ容量で、ビット配列形式
の画像データの配列を自由に変形することができる。 変形対象を複数の小多角形に分割し、各小多角形毎に
変形処理が行われるので、変形に自由度があり、予めメ
モリに多くのデータを持たなくても、画像を滑らかに変
形することができる。
【図面の簡単な説明】
【図1】本発明による多角形分割変形方法の原理を説明
する図である。
【図2】本発明による多角形分割変形方法の小矩形から
任意の四角形への変形例を示す図である。
【図3】本発明に係る画像変形装置の一実施例の構成図
である。
【図4】同実施例の変形対象を多数の小矩形に分割する
例を示す図である。
【図5】同実施例のCPUの内部レジスタへのデータの
格納例を示す図である。
【図6】同実施例の画像変形処理のメインプログラムを
示すフローチャートである。
【図7】同実施例の小矩形変形処理のサブルーチンを示
すフローチャートである。
【図8】同実施例のライン貼り付け法を説明する図であ
る。
【図9】同実施例のライン貼り付け処理のサブルーチン
を示すフローチャートである。
【図10】同実施例の画像データの変形例を示す図であ
る。
【図11】同実施例の画像データの変形例を示す図であ
る。
【図12】同実施例の画像データの変形例を示す図であ
る。
【図13】同実施例の画像データの変形例を示す図であ
る。
【図14】同実施例の画像データの変形例を示す図であ
る。
【図15】同実施例の画像データの変形例を示す図であ
る。
【図16】同実施例の画像データの変形例を示す図であ
る。
【図17】同実施例の画像データの変形例を示す図であ
る。
【図18】同実施例の画像データの変形例を示す図であ
る。
【図19】同実施例の画像データの変形例を示す図であ
る。
【図20】同実施例のCPUの内部レジスタへのデータ
の格納例を示す図である。
【図21】同実施例のライン描画の一例を説明する図で
ある。
【図22】同実施例のライン端点処理のサブルーチンの
一部を示すフローチャートである。
【図23】同実施例のライン端点処理のサブルーチンの
一部を示すフローチャートである。
【図24】同実施例のライン描画処理のサブルーチンの
一部を示すフローチャートである。
【図25】同実施例のライン描画処理のサブルーチンの
一部を示すフローチャートである。
【図26】同実施例の端点バッファへのデータの格納例
を示す図である。
【図27】本発明の多角形分割変形方法の変形例を示す
図である。
【符号の説明】
31 CPU(分割手段、変形手段、画像データ作成手
段、座標変換手段、データ変換手段、画像変形制御手
段) 32 入力操作子(変形態様指定手段) 33 記憶装置(記憶手段) 34 VDP 35 VRAM 36 TVディスプレイ(表示手段) 41 ビット配列形式の画像データ 42 変形前の格子点座標 43、44 変形後の格子点座標 51 第1の変形スイッチ 52 第2の変形スイッチ

Claims (19)

    【特許請求の範囲】
  1. 【請求項1】 ビット配列形式の画像データを有する変
    形対象を、複数の小多角形に分割し、 この各小多角形を所定の変形処理に従って異なる小多角
    形に変形するデータを記憶し、 記憶された変形データに基づいて前記分割された各小多
    角形を異なる小多角形に変形し、 変形前の小多角形に含まれるビット配列形式の画像デー
    タの配列を、各小多角形毎に、所定のデータ変換処理に
    従って、変形後の小多角形のデータに対応するように順
    次変更して変更後の全体画像データを作成するようにし
    たことを特徴とする画像変形方法。
  2. 【請求項2】 ビット配列形式の画像データを有する変
    形対象を、複数の小多角形に分割し、 この各小多角形を所定の変形処理に従って異なる小多角
    形に変形し、 変形前の小多角形に含まれるビット配列形式の画像デー
    タの配列を、各小多角形毎に、所定のデータ変換処理に
    従って、変形後の小多角形のデータに対応するように順
    次変更して変更後の全体画像データを作成するようにし
    たことを特徴とする画像変形方法。
  3. 【請求項3】 前記変形対象を分割する複数の小多角形
    は、矩形であり、この各小矩形を異なる任意の小四角形
    にそれぞれ変形して変形後の画像データを作成すること
    を特徴とする請求項1又は2記載の画像変形方法。
  4. 【請求項4】 前記変形対象を分割する複数の小多角形
    は、六角形であり、この各六角形を異なる任意の小六角
    形にそれぞれ変形して変形後の画像データを作成するこ
    とを特徴とする請求項1又は2記載の画像変形方法。
  5. 【請求項5】 前記所定の変形処理は、座標変換処理で
    あり、 この座標変換処理では、分割された各小多角形の頂点の
    座標を求め、次いで、変形後の各小多角形の頂点の座標
    を算出し、この算出した座標に基づいて変形後の異なる
    小多角形の形状を決定することにより、分割された各小
    多角形を異なる小多角形に変形することを特徴とする請
    求項1又は2記載の画像変形方法。
  6. 【請求項6】 前記所定のデータ変換処理は、 変形対象となる各小多角形に含まれるビット配列形式の
    画像データを複数のラインに分割する処理と、 この分割された各ラインの変形後の小多角形上での端点
    を算出する処理と、 前記分割された各ラインを、変形後の小多角形の対応す
    るラインの大きさに合せて拡大又は縮小する処理と、 この拡大又は縮小されたラインを変形後の小多角形の対
    応するライン上の端点を起点として順次転送して配置す
    る処理と、を有することを特徴とする請求項1又は2記
    載の画像変形方法。
  7. 【請求項7】 前記端点を算出する処理は、 変形前および変形後のラインの端点の位置に基づいて、
    変形前の各ラインの端点の位置を変化させずに順次変形
    後の小多角形の対応するラインの端点の位置とした場合
    の誤差を順次累算する処理と、 この誤差が所定値を超えるときにのみ、ラインの端点の
    位置を変更するとともに、前記累算された誤差から一定
    値を減算する処理と、を有することを特徴とする請求項
    6記載の画像変形方法。
  8. 【請求項8】 前記拡大又は縮小する処理は、 変形前および変形後のラインに含まれるビット配列形式
    の画像データおよび変形後のラインに含まれるビット配
    列形式の画像データの数に基づいて、変形前の各ライン
    に含まれるビット配列形式の各画像データを変形後のラ
    インに順次指定して配列したときの誤差を累算する処理
    と、 この誤差が所定値を超えるときには、現在指定されてい
    る画像データを変形後のラインに転送配置して次の画像
    データを指定するとともに、前記累算された誤差から一
    定値を減算する動作を前記誤差が所定値以下になるまで
    繰り返す処理と、 前記誤差が所定値以下のときに、前記指定された画像デ
    ータを変形後のラインに転送して配置する処理と、を有
    することを特徴とする請求項6記載の画像変形方法。
  9. 【請求項9】 前記転送する処理は、 変形前および変形後のラインの数に基づいて、変形前の
    各ラインを指定して変形後の小多角形の対応するライン
    の位置に順次配列したときの誤差を累算する処理と、 この誤差が所定値を超えるときには、現在指定されてい
    るラインを変形後の小多角形のラインとして転送配置し
    て次のラインを指定するとともに、前記累算された誤差
    から一定値を減算する動作を前記誤差が所定値以下にな
    るまで繰り返す処理と、 前記誤差が所定値以下のときに、前記指定されたライン
    を変形後のラインとして転送配置する処理と、を有する
    ことを特徴とする請求項6記載の画像変形方法。
  10. 【請求項10】 ビット配列形式の画像データを有する
    変形対象を、複数の小多角形に分割する分割手段と、 分割手段によって分割した各小多角形を所定の変形処理
    に従って異なる小多角形に変形する変形手段と、 変形前の小多角形に含まれるビット配列形式の画像デー
    タの配列を、各小多角形毎に、所定のデータ変換処理に
    従って、変形後の小多角形のデータに対応するように順
    次変更して変更後の全体画像データを作成する画像デー
    タ作成手段と、を備えたことを特徴とする画像変形装
    置。
  11. 【請求項11】 前記変形手段は、分割手段によって分
    割した各小多角形を異なる小多角形に変形する所定の変
    形処理を実行可能な座標変換手段を備え、 この座標変換手段は、分割された各小多角形の頂点の座
    標を求めるとともに、変形後の各小多角形の頂点の座標
    を算出し、この算出した座標に基づいて変形後の異なる
    小多角形の形状を決定することにより、分割された各小
    多角形を異なる小多角形に変形することを特徴とする請
    求項10記載の画像変形装置。
  12. 【請求項12】 前記画像データ作成手段は、前記所定
    のデータ変換処理を実行可能なデータ変換手段を備え、 このデータ変換手段は、変形対象となる各小多角形に含
    まれるビット配列形式の画像データを複数のラインに分
    割する手段と、 この分割された各ラインの変形後の小多角形上での端点
    を算出する手段と、 前記分割された各ラインを、変形後の小多角形の対応す
    るラインの大きさに合せて拡大又は縮小する手段と、 この拡大又は縮小されたラインを変形後の小多角形の対
    応するライン上の端点を起点として順次転送して配置す
    る手段と、を有することを特徴とする請求項10記載の
    画像変形装置。
  13. 【請求項13】 前記端点を算出する手段は、 変形前および変形後のラインの端点の位置に基づいて、
    変形前の各ラインの端点の位置を変化させずに順次変形
    後の小多角形の対応するラインの端点の位置とした場合
    の誤差を順次累算する手段と、 この誤差が所定値を超えるときにのみ、ラインの端点の
    位置を変更するとともに、前記累算された誤差から一定
    値を減算する手段と、を有することを特徴とする請求項
    12記載の画像変形装置。
  14. 【請求項14】 前記拡大又は縮小する手段は、 変形前および変形後のラインに含まれるビット配列形式
    の画像データおよび変形後のラインに含まれるビット配
    列形式の画像データの数に基づいて、変形前の各ライン
    に含まれるビット配列形式の各画像データを変形後のラ
    インに順次指定して配列したときの誤差を累算する手段
    と、 この誤差が所定値を超えるときには、現在指定されてい
    る画像データを変形後のラインに転送配置して次の画像
    データを指定するとともに、前記累算された誤差から一
    定値を減算する動作を前記誤差が所定値以下になるまで
    繰り返す手段と、 前記誤差が所定値以下のときに、前記指定された画像デ
    ータを変形後のラインに転送して配置する手段と、を有
    することを特徴とする請求項12記載の画像変形装置。
  15. 【請求項15】 前記転送する手段は、 変形前および変形後のラインの数に基づいて、変形前の
    各ラインを指定して変形後の小多角形の対応するライン
    の位置に順次配列したときの誤差を累算する手段と、 この誤差が所定値を超えるときには、現在指定されてい
    るラインを変形後の小多角形のラインとして転送配置し
    て次のラインを指定するとともに、前記累算された誤差
    から一定値を減算する動作を前記誤差が所定値以下にな
    るまで繰り返す手段と、 前記誤差が所定値以下のときに、前記指定されたライン
    を変形後のラインとして転送配置する手段と、を有する
    ことを特徴とする請求項12記載の画像変形装置。
  16. 【請求項16】 前記画像データ作成手段によって作成
    された変形後の画像データを表示する表示手段を、さら
    に有することを特徴とする請求項10記載の画像変形装
    置。
  17. 【請求項17】 変形対象を変形する場合の変形態様を
    指定する変形態様指定手段を有し、 前記変形手段は、この変形態様指定手段の出力に基づい
    て前記各小多角形を異なる小多角形にそれぞれ変形処理
    することを特徴とする請求項10記載の画像変形装置。
  18. 【請求項18】 前記変形態様指定手段は、変形対象を
    第1の変形態様に指定する第1の変形スイッチと、 変形対象を第2の変形態様に指定する第2の変形スイッ
    チとを有することを特徴とする請求項10記載の画像変
    形装置。
  19. 【請求項19】 変形対象のビット配列形式の画像デー
    タと、変形対象をどのように分割するかを示す分割デー
    タと、分割した各小多角形をどのように変形するかを示
    す変形データとを記憶する記憶手段と、 前記変形態様指定手段により変形態様が指定されたと
    き、記憶手段に記憶された各データを読み出して画像変
    形の制御を行う画像変形制御手段と、を備えたことを特
    徴とする請求項10記載の画像変形装置。
JP5345334A 1993-12-21 1993-12-21 画像変形方法およびその装置 Pending JPH07182497A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP5345334A JPH07182497A (ja) 1993-12-21 1993-12-21 画像変形方法およびその装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP5345334A JPH07182497A (ja) 1993-12-21 1993-12-21 画像変形方法およびその装置

Publications (1)

Publication Number Publication Date
JPH07182497A true JPH07182497A (ja) 1995-07-21

Family

ID=18375887

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5345334A Pending JPH07182497A (ja) 1993-12-21 1993-12-21 画像変形方法およびその装置

Country Status (1)

Country Link
JP (1) JPH07182497A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001340335A (ja) * 2000-06-01 2001-12-11 Fukuda Denshi Co Ltd 超音波診断装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001340335A (ja) * 2000-06-01 2001-12-11 Fukuda Denshi Co Ltd 超音波診断装置

Similar Documents

Publication Publication Date Title
JP2919428B2 (ja) 画像変形装置
JPH09319891A (ja) 画像処理装置及びその処理方法
JP2617007B2 (ja) 対話型大画像処理方法
JP2005077522A (ja) 画像処理装置および画像処理方法
JPH07182497A (ja) 画像変形方法およびその装置
JP3548806B2 (ja) 画像変形方法およびその装置
JP3463125B2 (ja) 画像変形方法およびその装置
JP2002157604A (ja) テクスチャ描画方法、エンタテインメント装置および記録媒体
JP4325812B2 (ja) ベクター画像描画回路およびベクター画像描画方法
JPH07200800A (ja) 画像変形方法およびその装置
JPH07192122A (ja) 画像変形方法およびその装置
JPH11195134A (ja) 画像処理装置
JP3254659B2 (ja) 模様生成方法及び装置
JPH07182499A (ja) 画像変形方法およびその装置
JPH07192121A (ja) 画像変形方法およびその装置
JP3688765B2 (ja) 描画方法およびグラフィックス装置
JP3533472B2 (ja) 画像変形方法およびその装置
JPS63247868A (ja) 三次元図形表示装置
JPS60231267A (ja) 文字間制御方式
JPH0661089B2 (ja) 三次元物体の二次元表現方法
JPH1153513A (ja) 画像内の領域設定方法及び装置
WO1993013490A1 (en) Method for drawing figure in graphic display system
JPH03224370A (ja) 時間制御装置
JPH08305341A (ja) 画像データ処理方法および装置
JP2010009271A (ja) 画像処理装置