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

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

Info

Publication number
JPH07182499A
JPH07182499A JP5347524A JP34752493A JPH07182499A JP H07182499 A JPH07182499 A JP H07182499A JP 5347524 A JP5347524 A JP 5347524A JP 34752493 A JP34752493 A JP 34752493A JP H07182499 A JPH07182499 A JP H07182499A
Authority
JP
Japan
Prior art keywords
small
line
deformation
image
error
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.)
Abandoned
Application number
JP5347524A
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 JP5347524A priority Critical patent/JPH07182499A/ja
Publication of JPH07182499A publication Critical patent/JPH07182499A/ja
Abandoned legal-status Critical Current

Links

Landscapes

  • Processing Or Creating Images (AREA)
  • Image Processing (AREA)
  • Image Generation (AREA)
  • Studio Circuits (AREA)
  • Controls And Circuits For Display Device (AREA)

Abstract

(57)【要約】 【目的】 少ないメモリ容量で、ビット配列形式の画像
を自由にかつ滑らかに変形できる画像変形方法およびそ
の装置を提供する。 【構成】 変形対象の外枠の上辺にある複数個の小多角
形の頂点をベジェ曲線のパラメータに従い、少なくとも
変形後に再び外枠を構成するような任意の位置に移動し
たとき、変形対象全体が滑らかに変形されるように他の
小多角形の頂点を移動させ、移動した他の小多角形の頂
点を任意の小多角形の移動後の頂点に基づいて算出す
る。このとき、曲線パラメータのデータとして、曲線の
両端の座標(xb1、yb1)、(xb4、yb4)
と、曲線の曲がり方を制御する座標(xb2、yb
2)、(xb3、yb3)とを用いる。そして、その
後、算出した各頂点に対応して変形後の各小多角形の形
状を決定し、変形後の小多角形のデータに対応するよう
に元画像を順次変形処理して変形後の全体画像を作成す
る。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、画像変形方法およびそ
の装置に係わり、詳しくはアニメーション、ゲーム等で
用いられるキャラクター、背景データを始めとするドッ
トで構成され、かつ各ドット毎に表示色番号あるいはパ
レット番号を持つようないわゆるビット配列形式の画像
データの配列を変更することにより、画像を変形する画
像変形方法およびその方法を実現する装置に関する。
【0002】
【従来の技術】従来、アニメーション、ゲーム等ではビ
ット配列形式の画像データを用いることが多く、この画
像データによりキャラクターや背景データを表示してい
る。そして、このビット配列形式の画像データはドット
で構成され、かつ各ドット毎に表示色番号あるいはパレ
ット番号を持つようになっている。
【0003】
【発明が解決しようとする課題】ところで、従来の画像
変形方法において、アニメーション、ゲーム等でキャラ
クター又は背景に動きを与えたり、その形を変えるとき
には、全く異なる画像データを予めメモリに持ってお
き、例えば動きを与えるときには一定時間毎に、あるい
はその形を変えるときには何かのきっかけでメモリ上に
ある画像データそのものを表示し直していた。そのた
め、多くのメモリを消費するという欠点があった。ま
た、画像の拡大、縮小処理あるいはある形状の四角形か
ら異なる形状の四角形への変形(例えば、正方形から台
形への変形)等の単純な変形処理は、従来のゲーム中に
も多く用いられているが、変形の度合いが限られ、滑ら
かな変形が困難であった。さらに、変形を使用する範囲
が限定されてしまい(自由に変形できない)、予めメモ
リに多くのデータを持っておく方法を採らざるを得ず、
この点でコスト高にもなっていた。
【0004】そこで本発明は、少ないメモリ容量で、ビ
ット配列形式の画像を自由にかつ滑らかに変形できる画
像変形方法およびその装置を提供することを目的として
いる。
【0005】
【課題を解決するための手段】上記目的達成のため、請
求項1記載の発明による画像変形方法は、ビット配列形
式の画像データを有する変形対象を、複数の小多角形に
分割し、この各小多角形を所定の変形処理に従って異な
る小多角形に変形し、変形前の小多角形に含まれるビッ
ト配列形式の画像データの配列を、各小多角形毎に、所
定のデータ変換処理に従って、変形後の小多角形のデー
タに対応するように順次変更して変更後の全体画像デー
タを作成するとともに、前記小多角形の変形処理では、
変形対象の外枠を構成する任意の辺を選択し、選択した
辺上にある複数個の小多角形の頂点を、所定の曲線パラ
メータに従い、少なくとも変形後に再び外枠を構成する
ような任意の位置に移動したとき、前記任意の小多角形
の移動に応じて他の小多角形の頂点を移動させ、移動し
た他の小多角形の頂点を前記複数個の小多角形の移動後
の頂点に基づいて算出し、この算出した頂点に対応して
各小多角形を変形することを特徴とする。請求項2記載
の発明による画像変形方法は、前記小多角形の変形処理
では、変形対象の外枠を構成する向い合う複数の辺を選
択し、選択したそれぞれの辺上にある複数個の小多角形
の頂点を、それぞれの辺に対応する所定の曲線パラメー
タに従い、少なくとも変形後に再び向い合う複数の辺を
構成するような任意の位置に移動したとき、前記任意の
小多角形の移動に応じて他の小多角形の頂点を移動さ
せ、移動した他の小多角形の頂点を前記複数個の小多角
形の移動後の頂点に基づいて算出し、この算出した頂点
に対応して各小多角形を変形することを特徴とする。
【0006】また、好ましい態様として、例えば請求項
3記載のように、前記変形処理における複数個の小多角
形の頂点を移動配置する所定の曲線パラメータは、ベジ
ェ曲線あるいは三角関数の少なくとも一方によって規定
される任意のパラメータであるようにしてもよい。例え
ば請求項4記載のように、前記所定の変形処理は、座標
変換処理であり、この座標変換処理では、分割された各
小多角形の頂点の座標を求め、次いで、変形後の各小多
角形の頂点の座標を算出し、この算出した座標に基づい
て変形後の異なる小多角形の形状を決定することによ
り、分割された各小多角形を異なる小多角形に変形する
ようにしてもよい。例えば請求項5記載のように、前記
所定のデータ変換処理は、変形対象となる各小多角形に
含まれるビット配列形式の画像データを複数のラインに
分割する処理と、この分割された各ラインの変形後の小
多角形上での端点を算出する処理と、前記分割された各
ラインを、変形後の小多角形の対応するラインの大きさ
に合せて拡大又は縮小する処理と、この拡大又は縮小さ
れたラインを変形後の小多角形の対応するライン上の端
点を起点として順次転送して配置する処理と、を有する
ようにしてもよい。
【0007】例えば請求項6記載のように、前記端点を
算出する処理は、変形前および変形後のラインの端点の
位置に基づいて、変形前の各ラインの端点の位置を変化
させずに順次変形後の小多角形の対応するラインの端点
の位置とした場合の誤差を順次累算する処理と、この誤
差が所定値を超えるときにのみ、ラインの端点の位置を
変更するとともに、前記累算された誤差から一定値を減
算する処理と、を有するようにしてもよい。例えば請求
項7記載のように、前記拡大又は縮小する処理は、変形
前および変形後のラインに含まれるビット配列形式の画
像データおよび変形後のラインに含まれるビット配列形
式の画像データの数に基づいて、変形前の各ラインに含
まれるビット配列形式の各画像データを変形後のライン
に順次指定して配列したときの誤差を累算する処理と、
この誤差が所定値を超えるときには、現在指定されてい
る画像データを変形後のラインに転送配置して次の画像
データを指定するとともに、前記累算された誤差から一
定値を減算する動作を前記誤差が所定値以下になるまで
繰り返す処理と、前記誤差が所定値以下のときに、前記
指定された画像データを変形後のラインに転送して配置
する処理と、を有するようにしてもよい。
【0008】例えば請求項8記載のように、前記転送す
る処理は、変形前および変形後のラインの数に基づい
て、変形前の各ラインを指定して変形後の小多角形の対
応するラインの位置に順次配列したときの誤差を累算す
る処理と、この誤差が所定値を超えるときには、現在指
定されているラインを変形後の小多角形のラインとして
転送配置して次のラインを指定するとともに、前記累算
された誤差から一定値を減算する動作を前記誤差が所定
値以下になるまで繰り返す処理と、前記誤差が所定値以
下のときに、前記指定されたラインを変形後のラインと
して転送配置する処理と、を有するようにしてもよい。
【0009】請求項9記載の画像変形装置は、ビット配
列形式の画像データを有する変形対象を、複数の小多角
形に分割する分割手段と、変形対象の外枠を構成する任
意の辺を選択し、選択した辺上にある複数個の小多角形
の頂点を、所定の曲線パラメータに従うとともに、少な
くとも変形後に再び外枠を構成するような任意の位置に
移動させるとともに、前記任意の小多角形の移動に応じ
て他の小多角形の頂点を移動させ、移動した他の小多角
形の頂点を前記任意の小多角形の移動後の頂点に基づい
て算出し、この算出した頂点に対応して分割手段によっ
て分割した各小多角形を異なる小多角形に変形する変形
手段と、変形前の小多角形に含まれるビット配列形式の
画像データの配列を、各小多角形毎に、所定のデータ変
換処理に従って、変形後の小多角形のデータに対応する
ように順次変更して変更後の全体画像データを作成する
画像データ作成手段と、を備えたことを特徴とする。
【0010】請求項10記載の画像変形装置は、前記変
形手段は、変形対象の外枠を構成する向い合う複数の辺
を選択し、選択したそれぞれの辺上にある複数個の小多
角形の頂点を、それぞれの辺に対応する所定の曲線パラ
メータに従うとともに、少なくとも変形後に再び向い合
う複数の辺を構成するような任意の位置にそれぞれ移動
させるような変形処理を行うことを特徴とする。また、
好ましい態様として、例えば請求項11記載のように、
前記変形手段における複数個の小多角形の頂点を移動配
置する所定の曲線パラメータは、曲線、放物線、双曲線
あるいは三角関数によって規定される任意のパラメータ
であるようにしてもよい。例えば請求項12記載のよう
に、前記変形手段は、分割手段によって分割した各小多
角形を異なる小多角形に変形する所定の変形処理を実行
可能な座標変換手段を備え、この座標変換手段は、分割
された各小多角形の頂点の座標を求めるとともに、変形
後の各小多角形の頂点の座標を算出し、この算出した座
標に基づいて変形後の異なる小多角形の形状を決定する
ことにより、分割された各小多角形を異なる小多角形に
変形するようにしてもよい。
【0011】例えば請求項13記載のように、前記画像
データ作成手段は、前記所定のデータ変換処理を実行可
能なデータ変換手段を備え、このデータ変換手段は、変
形対象となる各小多角形に含まれるビット配列形式の画
像データを複数のラインに分割する手段と、この分割さ
れた各ラインの変形後の小多角形上での端点を算出する
手段と、前記分割された各ラインを、変形後の小多角形
の対応するラインの大きさに合せて拡大又は縮小する手
段と、この拡大又は縮小されたラインを変形後の小多角
形の対応するライン上の端点を起点として順次転送して
配置する手段と、を有するようにしてもよい。例えば請
求項14記載のように、前記端点を算出する手段は、変
形前および変形後のラインの端点の位置に基づいて、変
形前の各ラインの端点の位置を変化させずに順次変形後
の小多角形の対応するラインの端点の位置とした場合の
誤差を順次累算する手段と、この誤差が所定値を超える
ときにのみ、ラインの端点の位置を変更するとともに、
前記累算された誤差から一定値を減算する手段と、を有
するようにしてもよい。
【0012】例えば請求項15記載のように、前記拡大
又は縮小する手段は、変形前および変形後のラインに含
まれるビット配列形式の画像データおよび変形後のライ
ンに含まれるビット配列形式の画像データの数に基づい
て、変形前の各ラインに含まれるビット配列形式の各画
像データを変形後のラインに順次指定して配列したとき
の誤差を累算する手段と、この誤差が所定値を超えると
きには、現在指定されている画像データを変形後のライ
ンに転送配置して次の画像データを指定するとともに、
前記累算された誤差から一定値を減算する動作を前記誤
差が所定値以下になるまで繰り返す手段と、前記誤差が
所定値以下のときに、前記指定された画像データを変形
後のラインに転送して配置する手段と、を有するように
してもよい。例えば請求項16記載のように、前記転送
する手段は、変形前および変形後のラインの数に基づい
て、変形前の各ラインを指定して変形後の小多角形の対
応するラインの位置に順次配列したときの誤差を累算す
る手段と、この誤差が所定値を超えるときには、現在指
定されているラインを変形後の小多角形のラインとして
転送配置して次のラインを指定するとともに、前記累算
された誤差から一定値を減算する動作を前記誤差が所定
値以下になるまで繰り返す手段と、前記誤差が所定値以
下のときに、前記指定されたラインを変形後のラインと
して転送配置する手段と、を有するようにしてもよい。
【0013】例えば請求項17記載のように、前記画像
データ作成手段によって作成された変形後の画像データ
を表示する表示手段を、さらに有するようにしてもよ
い。例えば請求項18記載のように、変形対象を変形す
る場合の変形態様を指定する変形態様指定手段を有し、
前記変形手段は、この変形態様指定手段の出力に基づい
て前記各小多角形を異なる小多角形にそれぞれ変形処理
するようにしてもよい。例えば請求項19記載のよう
に、前記変形態様指定手段は、変形対象を第1の変形態
様に指定する第1の変形スイッチと、変形対象を第2の
変形態様に指定する第2の変形スイッチとを有するよう
にしてもよい。例えば請求項20記載のように、変形対
象のビット配列形式の画像データと、変形対象をどのよ
うに分割するかを示す分割データと、分割した各小多角
形をどのように変形するかを示す変形データとを記憶す
る記憶手段と、前記変形態様指定手段により変形態様が
指定されたとき、記憶手段に記憶された各データを読み
出し画像変形の制御を行う画像変形制御手段と、を備え
るようにしてもよい。
【0014】
【作用】本発明では、まずビット配列形式の画像データ
を有する変形対象を複数の小多角形に分割し、各小多角
形を所定の変形処理(例えば、座標変換処理)に従って
異なる小多角形にそれぞれ変形する。このとき、小多角
形の変形処理では、変形対象の外枠を構成する任意の辺
を選択し、選択した辺上にある複数個の小多角形の頂点
を、所定の曲線パラメータに従い、少なくとも変形後に
再び外枠を構成するような任意の位置に移動したとき、
前記任意の小多角形の移動に応じて他の小多角形の頂点
を移動させ(例えば、変形対象全体が滑らかに変形され
るように他の小多角形の頂点を移動させ)、移動した他
の小多角形の頂点を前記任意の小多角形の移動後の頂点
に基づいて算出し、この算出した頂点に対応して各小多
角形を変形することが行われる。次いで、変形前の小多
角形に含まれるビット配列形式の画像データの配列を、
各小多角形毎に、所定のデータ変換処理に従って変形後
の小多角形のデータに対応するように順次変更して変更
後の全体画像データが作成される。
【0015】したがって、変形対象の画像は各小多角形
毎に変形処理が行われるから、従来のように全く異なる
全体の画像データを予め持つ必要がなくなり、少ないメ
モリ容量で、ビット配列形式の画像データの配列を自由
に変更できる。また、変形対象を複数の小多角形に分割
し、各小多角形毎に変形処理が行われるので、変形に自
由度があり、予めメモリに多くのデータを持たなくて
も、画像を滑らかに変形できる。特に、変形対象の外枠
を構成する任意の辺にある任意の小多角形の頂点を曲線
パラメータに従って移動させる変形法を使用することに
より、曲線パラメータとして数点(例えば、4点)分の
座標だけを持っていればよく、変形後のすべての小多角
形の頂点の位置データ(例えば、座標)を持っておく必
要がない。よって少ない変形データで滑らかな画像変形
を行わせることができる。さらに、この変形法を用いる
と、変形対象の外枠の形を変えるので、画像の外形(例
えば、大きさ)を変えることができる。
【0016】他の請求項記載の発明では、変形対象の外
枠を構成する向い合う複数の辺を選択し、選択したそれ
ぞれの辺上にある複数個の小多角形の頂点を、それぞれ
の辺に対応する所定の曲線パラメータに従うとともに、
少なくとも変形後に再び向い合う複数の辺を構成するよ
うな任意の位置に移動したとき、前記任意の小多角形の
移動に応じて他の小多角形の頂点を移動させ、移動した
他の小多角形の頂点を前記複数個の小多角形の移動後の
頂点に基づいて算出し、この算出した頂点に対応して各
小多角形を変形することが行われる。したがって、特
に、変形対象の外枠を構成する向い合う複数の辺の小多
角形の頂点を移動させる変形法を使用することにより、
同様に変形後のすべての小多角形の頂点の位置データ
(例えば、座標)を持っておく必要がなく、少ない変形
データで滑らかな画像変形を行わせることができる。ま
た、この変形法を用いると、変形対象の外枠の形を変え
るので、画像の外形(例えば、大きさ)を変えることが
できる。
【0017】
【実施例】以下、図面を参照して本発明の実施例につい
て説明する。本発明の原理説明 最初に、本発明の原理から説明する。図1は多角形分割
変形方法の原理を示す図である。図1(a)は変形前の
画像データを有する変形対象を示し、この変形対象の画
像データはビット配列形式であり、「目」の画像(絵)
Aを表している。この画像データを変形するために、ま
ず変形対象全体を予め縦4分割、横6分割して合計で2
4個の小矩形(1)、(2)、(3)、・・・・・(24)を作成す
る。このとき、各小矩形(1)、(2)、(3)、・・・・・(2
4)の画像データは複数のドットによって構成され、かつ
複数の各ドット毎に表示色番号あるいはパレット番号を
持っている。そして、各小矩形(1)、(2)、(3)、・・・
・・(24)毎の画像はそのドット全体によって表示され
る。次いで、変形対象全体が滑らかに変形されるよう
に、所定の変形処理(例えば、後述の座標変換処理)に
従って各小矩形(1)、(2)、(3)、・・・・・(24)を図1
(b)に示すような異なる四角形(1)’、(2)’、
(3)’、・・・・・(24)’にそれぞれ変形する。例え
ば、図2に示すように小矩形(6)は四角形(6)’に変形さ
れ、小矩形(1)は四角形(1)’に変形される。
【0018】この過程では、各小矩形(1)、(2)、(3)、
・・・・・(24)の変形に伴って、それぞれの小矩形に含
まれるビット配列形式の画像データの配列が所定のデー
タ変換処理(例えば、後述のいわゆるライン貼り付け処
理)に従って変形する。すなわち、ドットの配列が変形
の程度に応じて変わることになる。したがって、変形後
の四角形(1)’、(2)’、(3)’、・・・・・(24)’を全
体として合成すると、図1(b)に示すように、変形し
た「目」の画像(絵)Bが得られる。この場合、変形対
象の画像データの配列に対して各小矩形(1)、(2)、
(3)、・・・・・(24)毎に変形処理が行われるから、従
来のように全く異なる全体の画像データを予め持つ必要
がなく、少ないメモリ容量でビット配列形式の画像を自
由に変形できる。また、変形対象を複数の小矩形(1)、
(2)、(3)、・・・・・(24)に分割し、各小矩形(1)、
(2)、(3)、・・・・・(24)毎に変形処理が行われるの
で、変形に自由度があり、予めメモリに多くのデータを
持たなくても、画像を滑らかに変形することが可能にな
る。
【0019】特に、変形対象の外枠を構成する任意の辺
(向い合う複数の辺でもよい)にある任意の小多角形の
頂点を曲線パラメータに従って移動させる変形法を使用
すれば、変形後のすべての四角形(1)’、(2)’、
(3)’、・・・・・(24)’の位置データ(例えば、座
標)を持っておく必要がなく、少ない変形データで滑ら
かな画像変形を行わせることができる。さらに、この変
形法を用いると、変形対象の外枠の形を変えるので、画
像の外形(例えば、大きさ)を変えることができる。
【0020】次に、上記原理に基づく本発明の具体的な
実施例について説明する。画像変形装置の構成 図3は本発明に係る画像変形方法を実現する画像変形装
置の第1実施例を示す構成図である。図3において、画
像変形装置は大きく分けてCPU31、入力操作子3
2、記憶装置33、画像信号発生回路(Video Display
Prosseser:以下VDPという)34、VRAM35お
よびTVディスプレイ36によって構成される。CPU
31は装置全体を制御するもので、入力操作子32から
画像変形指令が入力されると、その指令情報に対応すべ
く内部のメモリに格納されている制御プログラムに基づ
いて記憶装置33に記憶されている変形対象としてのビ
ット配列形式の画像データ41を読み出してVDP34
に出力するとともに、この画像データ41に対して多角
形分割変形処理を施した後、変形後のビット配列形式の
画像データをVDP34に出力する。また、CPU31
は内部レジスタ31aを有しており、内部レジスタ31
aには後述の図4に示すような各小矩形の格子点座標等
が格納されるようになっている。
【0021】入力操作子(変形態様指定手段)32はオ
ペレータによって操作されるもので、ビット配列形式の
画像データの配列をどのように変形させるかを指定する
(つまり、変形を行わせるきっかけを与えるための)第
1の変形スイッチ51および第2の変形スイッチ52を
有している。第1の変形スイッチ51は、例えば変形前
の格子点座標42で表される原画像に対して、変形後の
格子点座標43で表される第1の変形画像のような変形
(変形データ1)を与える指令を出力する。第2の変形
スイッチ52は、例えば変形前の格子点座標42で表さ
れる原画像に対して、変形後の格子点座標44で表され
る第2の変形画像のような変形(変形データ2)を与え
る指令を出力する。なお、各変形スイッチ51、52は
単独操作のプッシュスイッチでもよいし、あるいは複数
のスイッチからなるスイッチボード、キーボード等でも
よい。また、入力操作子32としてスイッチボード等の
他に、マウス、トラックボール等を用いてもよい。
【0022】記憶装置(記憶手段)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は分割手段、変形手段、画像データ作成手段、
座標変換手段、データ変換手段を構成するとともに、さ
らに画像変形制御手段を構成する。
【0023】ここで、本実施例では変形前のビット配列
形式の画像データを有する変形対象に対して図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)になる。
【0024】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座標
【0025】一方、記憶装置33には変形対象(原画像
データを有する)をどのように矩形分割するかを示す変
形前の格子点座標42が格納されているが、この格子点
座標42をCPU31の内部レジスタ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
【0026】また、記憶装置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の変形画像を矩形分割した場合の格子点
座標のことである。
【0027】次に、作用を説明する。メインプログラム 図6は画像変形処理のメインプログラムを示すフローチ
ャートである。このプログラムがスタートすると、まず
ステップS10でキー情報取り込み処理を行う。これ
は、入力操作子32における第1の変形スイッチ51あ
るいは第2の変形スイッチ52の操作情報を入力するも
のである。次いで、ステップS12で変形スイッチが押
されたか否かを判別し、何れのスイッチも押されていな
ければ、今回のルーチンを終了し、次回のルーチンで再
びステップS10を実行する。このとき、例えばスイッ
チフラグが設けられ、何れのスイッチも押されていなけ
れば、スイッチフラグが[0]のままである。一方、何
れかのスイッチが押されると、スイッチフラグを[1]
にセットするとともに、ステップS14で押された変形
スイッチの番号を判別する。その後、ステップS16あ
るいはステップS18で押された変形スイッチの番号に
応じた変形後の格子点座標をCPU31の内部レジスタ
31aに格納し、次いで、ステップS20に進む。
【0028】具体的には、第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
【0029】一方、第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
【0030】ステップ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において各小矩形単位で画
像の変形処理が行われる。
【0031】小矩形変形処理のサブルーチン 次に、図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)となり、こ
れらが変形前の小矩形の座標である。
【0032】次いで、ステップ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により、変形対象の画
像全体が滑らかに変形されるように、各小矩形を異なる
四角形にそれぞれ変形する処理が行われる。この処理
(変形処理に相当)は座標変換処理であり、この座標変
換処理では、分割された各小矩形の頂点の座標を求め、
次いで、変形対象全体が滑らかに変形されるような変形
後の各小四角形の頂点の座標を算出し、この算出した座
標に基づいて変形後の異なる小四角形の形状を決定する
ことにより、分割された各小矩形を異なる小四角形に変
形する。
【0033】次いで、ステップS34でいわゆるライン
貼り付け法(データ変換処理に相当)により各小矩形内
の画像データの配列を変形する処理を行う。ライン貼り
付け法とは、変形元である分割した各小多角形のビット
配列形式の画像データの配列を複数のラインに分割し、
分割した各ラインを変形先の各多角形の対応する位置に
順次転送するとともに、転送に際して転送先の大きさに
合うように拡大又は縮小させながらそれぞれラインとし
て貼り付けていくことにより、変形後の各小多角形の画
像データの配列を作成することをいう。具体的には、図
8(a)に示すように変形元となるビット配列形式の画
像データを有する小矩形Cの画像データの配列を複数の
ライン1〜ラインnに分割し、分割した各ライン1〜n
を変形先の四角形Dの対応する位置に、転送先の大きさ
に合うように拡大又は縮小させながらそれぞれライン
1’〜ラインn’として貼り付けていくものである。こ
のように、小矩形Cの画像データの配列を複数のライン
1〜ラインnに分けて変形させながら貼り付けること
で、画像の変形処理を行うことにより、元画像を滑らか
に変形させることが可能になる。
【0034】これにより、各小矩形は四角形へと変形処
理され、最終的にすべての小矩形(i、j)に対応する
画像データの配列が変形し、変形画像が得られることに
なる。次いで、ステップS36でVDP34に変形済み
の画像データを逐次転送する。これにより、小矩形
(i、j)で示される変形後の画像データがVDP34
に転送され、最終的にすべての小矩形(i、j)に対応
する変形した画像を合成することにより、TVディスプ
レイ36に変形後の画像が表示される。ステップS36
の処理を経ると、メインプログラムにリターンする。
【0035】第1実施例の格子点算出処理 次に、本実施例の特徴部分である変形処理(つまり、変
形対象の内部にある任意の1つの格子点を移動したと
き、変形対象が滑らかに変形されるように他の各格子点
を移動させ、移動後の各格子点の座標を算出する処理)
について説明する。まず、この変形処理の対象となる変
形対象の例は図9(a)に示され、変形後の例は図9
(b)に示される。図9(a)に示すように、変形対象
を予め縦m分割(例えば、4分割)、横n分割(例え
ば、6分割)して合計でm×n個(例えば、24個)の
小矩形に分割する。このとき、各小矩形の画像データは
ドットによって構成され、かつ各ドット毎に表示色番号
あるいはパレット番号を持っている。そして、各小矩形
毎の画像はそのドット全体によって表示される。
【0036】さて、変形対象の外枠を構成する任意の辺
を選択し、選択した辺上にある複数個の小多角形の頂点
を、所定の曲線パラメータに従って移動させたときのそ
の他の各小矩形の頂点の座標を算出する処理について説
明する。この例は、あたかも変形対象の外枠にある複数
の小矩形の頂点を外方に緩やかに膨らませるような変形
を行うケースに相当する。ここで、本実施例では格子点
の表し方と、格子点の座標とについて、次のような取り
決めにしている。後述の実施例においても同様である。
例えば、格子点(p、q)という場合、最初の記号でy
軸方向の位置を表示し、次の記号でx軸方向の位置を表
示する。すなわち、格子点(p、q)=(y軸方向の位
置、x軸方向の位置)となり、pはy軸方向の位置に相
当し、qはx軸方向の位置に相当する。これに対して、
座標の表示は数学上で一般的に用いられているものと同
様に、最初の記号でx軸方向の位置を表示し、次の記号
でy軸方向の位置を表示する。したがって、格子点
(p、q)の座標が座標(xd、yd)という場合、x
dがx軸方向の位置で、ydがy軸方向の位置となる。
すなわち、(xd、yd)=(x軸方向の位置、y軸方
向の位置)となる。このように、両者の表示方法が逆に
なっているので、後述のフローチャートでは間違えない
ように理解する必要がある。なお、適宜、説明の都合
上、例えば格子点(座標:x2、yp)というようにし
て該当する格子点について、その座標のみを表示するこ
とも行う。
【0037】さて、変形データとして予め位置が判明し
ているために、位置データの保有が可能なものは、図9
(a)に示す変形前における変形対象の小矩形の頂点で
あり、これらの外枠の2つの頂点の位置データは(x
1、y1)、(x2、y2)なる座標で表される。ま
た、変形後は図9(b)に示す外枠の下辺の小矩形の頂
点であり、その位置データは(x1、y2)、(x2、
y2)なる座標で表される。なお、各小矩形の頂点を、
適宜、格子点という。さらに、図面の説明上、横方向を
x座標、縦方向をy座標とし、x座標は図面上、左から
右へ大きく、y座標は上から下へ大きくなるものとす
る。
【0038】一方、変形対象の外枠を曲線パラメータに
従って移動させるために変形データとして持っているも
のは、図9(b)に示す曲線パラメータのデータで、曲
線の両端の座標(xb1、yb1)、(xb4、yb
4)と、曲線の曲がり方を制御する座標(xb2、yb
2)、(xb3、yb3)である。記憶装置33には図
10に示すように、上記各情報を格納する変形データエ
リアがある。 曲線パラメータ1のx座標……xb1 曲線パラメータ1のy座標……yb1 曲線パラメータ2のx座標……xb2 曲線パラメータ2のy座標……yb2 曲線パラメータ3のx座標……xb3 曲線パラメータ3のy座標……yb3 曲線パラメータ4のx座標……xb4 曲線パラメータ4のy座標……yb4
【0039】図11は変形後の格子点座標算出処理のル
ーチンを示すフローチャートである。このルーチンは、
変形対象の外枠を構成する任意の辺を選択し、選択した
辺上にある複数個の小多角形の頂点(適宜、移動基準格
子点という)を、所定の曲線パラメータに従うととも
に、少なくとも変形後に再び外枠を構成するような任意
の位置に移動したとき、変形対象全体が滑らかに変形さ
れるように他の小多角形の頂点を移動させ、移動した他
の小多角形の頂点を任意の小多角形の移動後の頂点(適
宜、変形移動格子点という)に基づいて算出するもので
ある。そして、その後、算出した各頂点に対応して変形
後の各小多角形の形状が決定され、変形後の小多角形に
対応するように元画像が順次変形処理されて変形後の全
体画像が作成されることになる。
【0040】最初に、ベジェ曲線の発生方法について説
明する。図12に示すように曲線の両端の座標(x1、
y1)、(x4、y4)と、曲線の曲がり方を制御する
座標(x2、y2)、(x3、y3)とを決めると、同
図(a)、(b)にそれぞれ示すようなベジェ曲線10
1、102を描くことが可能である。ベジェ曲線の場
合、その座標(x、y)は以下に示す(1)式、(2)
式によって求めることができる。 x=(1−t)3・x1+3t・(1−t)2・x2 +3t2・(1−t)・x3+t3・x4……(1) y=(1−t)3・y1+3t・(1−t)2・y2 +3t2(1−t)・y3+t3・y4……(2) ただし、0≦t≦1 ここで、t=0のとき上記(1)式、(2)式に代入す
ると、x=x1、y=y1となり、これは一方の端点を
表す。また、t=1のとき上記(1)式、(2)式に代
入すると、x=x4、y=y4となり、これは他方の端
点を表す。
【0041】本ルーチンでは、上記ベジェ曲線の発生方
法に基づいて、変形対象の上側の外枠上にある格子点
を、ベジェ曲線のパラメータに従って移動させ、このと
きの他の格子点の移動後の座標を算出する処理を説明す
る。まず、変形対象の左上側の外枠の頂点の座標を(x
1、y1)とし、右下側の外枠の頂点の座標を(x2、
y2)とする。そして、ステップS98で変形後の外枠
の縦方向の格子点(0、0)〜(m、0)および(0、
n)〜(m、n)の座標を求める。これは、外枠の頂点
の座標(x1、y1)、(x2、y2)により比例演算
により求められる。次いで、ステップS110でポイン
タjを[1]にセットする。ポインタjは格子点をx軸
方向に沿って順次指定するものである。次いで、ステッ
プS112で変形対象の上辺にあった格子点(0、j)
(ただし、0<j<q)の移動後の座標(xd(j)、
yd(j))を、以下に示す(3)式および(4)式に
従って算出する。この格子点(0、j)は、図9(b)
において△印で示される。 xd(j)=(1−j/n)3・xb1+3(j/n)・(1−j/n)2 ・xb2+3(j/n)2・(1−j/n)・xb3 +(j/n)3・xb4……(3) yd(j)=(1−j/n)3・yb1+3(j/n)・(1−j/n)2 ・yb2+3(j/n)2・(1−j/n)・yb3 +(j/n)3・yb4……(4)
【0042】最初のルーチンではj=1であるから、格
子点(0、1)の移動後の座標(xd(1)、yd
(0))が(3)式および(4)式に従って算出され
る。この格子点(0、1)の座標位置は、図9(b)に
おいて△印で示される。次いで、ステップS114でポ
インタjをインクリメントし(1だけ進める)、続くス
テップS16でポインタjがnに等しくなったか(つま
り外枠の右側の辺のひとつ手前まで到達したか)否かを
判別する。今回はNOであるから、ステップS112に
戻って同様のループを繰り返す。したがって、次回のル
ープでは格子点(0、2)の移動後の座標(xd
(2)、yd(0))が(3)式および(4)式に従っ
て算出される。そして、同様のループを繰り返すことに
より、j=nになると、格子点(0、n)の位置までポ
インタjが進んでその移動後の座標(xd(n)、yd
(0))が算出されたと判断してステップS118に抜
ける。このようにして、変形対象の上辺にあった格子点
(0、j)(ただし、0<j<n)の移動後の座標(x
d(j)、yd(0))がすべて順次算出される。その
結果、図9(b)に示すように変形対象の外枠上辺をベ
ジェ曲線のパラメータに従った曲線に変形させることが
できる。
【0043】次いで、変形対象の外枠下辺の各格子点の
座標を算出する処理に移る。ステップS118で再びポ
インタjを[1]にセットする。これにより、今度は外
枠下辺の各格子点をポインタjにより順次x軸方向に沿
って順次指定していくことになる。次いで、ステップS
120で変形対象の下辺にあった格子点(m、j)(た
だし、0<j<n)の移動後の座標(xe(j)、ye
(j))を、以下に示す(5)式および(6)式に従っ
て算出する。 xe(j)=x1・(n−j)/n+x2・j/n……(5) ye(j)=y2……(6) 次いで、ステップS122でポインタiを[1]にセッ
トする。ポインタiは格子点をy軸方向に沿って順次指
定するものである。次いで、ステップS124で以下に
示す(7)式および(8)式に従って、変形対象の上辺
にあった格子点(0、j)と変形対象の下辺にあった格
子点(m、j)とを結ぶ線上の格子点(i、j)(ただ
し、0<i<m)の座標を算出する。この格子点(i、
j)の座標位置は、図9(b)において○印で示され
る。 x=xd(j)・(m−i)/m+xe(j)・i/m……(7) y=yd(j)・(m−i)/m+ye(j)・i/m……(8)
【0044】次いで、ステップS126でポインタiを
インクリメントし(1だけ進める)、続くステップS1
28でポインタiがmに等しくなったか(外枠の下辺の
ひとつ手前に到達したか)否かを判別する。例えば、今
回のルーチンで変形対象の上辺にあった格子点(0、
j)と変形対象の下辺にあった格子点(m、j)とを結
ぶ線上の一番上に位置する格子点(i、j)(例えば、
図9(b)の格子点201)の座標が算出されたとする
と、上記線上にはまだ複数の格子点202、203が存
在しており、ポインタiがmに等しくなって外枠の下辺
のひとつ手前に到達した訳ではないから、ステップS1
30の判別結果はNOとなり、ステップS124に戻っ
て同様のループを繰り返す。したがって、次回のループ
では格子点201の下側にある格子点202の座標が算
出されることになる。そして、同様のループを繰り返す
ことにより、格子点203の座標算出というように処理
が行われ、最終的にi=mになると、外枠の下辺のひと
つ手前の位置までポインタiが進んだと判断してステッ
プS130に抜ける。
【0045】次いで、ステップS130でポインタjを
インクリメントし(1だけ進める)、続くステップS1
32でポインタjがnに等しくなったか(つまり外枠の
右側の辺ひとつ手前まで到達したか)否かを判別する。
今回はNOであるから、ステップS120に戻って同様
のループを繰り返す。最初のルーチンでは、変形対象の
上辺にあった格子点(0、1)と変形対象の下辺にあっ
た格子点(m、1)とを結ぶ線上の格子点(i、j)の
座標が外枠の上辺から下辺まで順次算出されたので、ポ
インタjをインクリメントすることにより、今度は変形
対象の上辺にあった格子点(0、2)と変形対象の下辺
にあった格子点(m、2)とを結ぶ線上の格子点(i、
j)の座標が外枠の上辺から下辺まで順次算出される。
以後、ステップS120〜ステップS132のループを
繰り返すことにより、最終的にj=nになると、外枠の
左辺から右辺まで順次、変形対象の上辺にあった格子点
と変形対象の下辺にあった格子点とを結ぶ線上の格子点
(i、j)の座標がすべて算出されたので、ステップS
132からYESに抜けて本ルーチンを終了する。
【0046】以上のルーチンを実行することにより、変
形対象の上側の外枠上にある格子点をベジェ曲線のパラ
メータに従って移動させ、このときの他の格子点の移動
後の座標を算出する処理が行われる。なお、上記処理で
は変形対象の上側の外枠上にある格子点をベジェ曲線の
パラメータに従って移動させた場合の各格子点座標の算
出方法を述べたものであるが、上側の外枠上にある格子
点に限らず、例えば左側、右側、下側の外枠上にある格
子点をベジェ曲線のパラメータに従って移動させる場合
であっても、同様の処理で各格子点の移動後の座標を算
出することができる。
【0047】このように本実施例では、ビット配列形式
の画像データを有する変形対象を複数の小矩形に分割
し、変形対象全体が滑らかに変形されるように、各小矩
形を座標変換処理に従って異なる小四角形にそれぞれ変
形することが行われる。このとき、小矩形の変形処理で
は、変形対象の外枠を構成する任意の辺(例えば、上記
例のように外枠の上辺)を選択し、選択した辺上にある
複数個の小多角形の頂点を、ベジェ曲線のパラメータに
従うとともに、少なくとも変形後に再び外枠を構成する
ような任意の位置に移動したとき変形対象全体が滑らか
に変形されるように他の小矩形の頂点を移動させ、移動
した他の小矩形の頂点(座標:xd(j)、yd
(j))を基準となる小矩形の頂点に基づいて算出し、
この算出した頂点に対応して各小矩形を四角形に変形す
ることが行われる。その後、変形前の小矩形に含まれる
ビット配列形式の画像データの配列が各小四角毎にライ
ン貼り付け法に従って変形後の小四角形のデータに対応
するように順次変形されて変形後の全体画像が作成され
る。その結果、本実施例の処理を適用することにより、
例えば図1(a)に示すようなビット配列形式の「目」
の画像を図1(b)に示すような「目」の画像に滑らか
に変形させることができる。
【0048】したがって、変形対象の画像データの配列
に対して各小矩形毎に変形処理が行われるので、従来の
ように全く異なる全体の画像データを予め持つ必要がな
く、少ないメモリ容量で、ビット配列形式のデータを有
する画像を自由に変形することができる。また、変形対
象を複数の小矩形に分割し、各小矩形毎に変形処理が行
われるので、変形に自由度があり、予めメモリに多くの
データを持たなくても、画像を滑らかに変形することが
できる。特に、変形対象の外枠を構成する任意の辺にあ
る任意の小多角形の頂点を曲線パラメータに従って移動
させる変形法を使用することにより、曲線パラメータと
して数点(例えば、4点)分の座標だけを持っていれば
よく、変形後のすべての小多角形の頂点の位置データ
(例えば、座標)を持っておく必要がない。よって少な
い変形データで滑らかな画像変形を行わせることができ
る。さらに、この変形法を用いると、変形対象の外枠の
形を変えるので、画像の外形(例えば、大きさ)を変え
ることができる。
【0049】その他に、具体的な波及効果としては、本
発明の適用により、例えばアニメーション、ゲーム等の
キャラクター又は背景データ等のようにドットで構成さ
れ、かつ各ドット毎に表示色番号あるいはパレット番号
を持つようなビット配列形式の画像を、自由にかつ滑ら
かに変形することができる。その結果、1つの元画像デ
ータから元画像データの一部又は全部が滑らかに変形し
た複数の画像データを作成することができる。また、ア
ニメーションに適用した場合、従来のように少しずつそ
の形の異なる複数の画像データを予めメモリに持ってお
かなくても、一定時間毎に元画像データを本発明の変形
法を用いて変形すれば、少ないメモリ容量で従来と同等
のアニメーションを行うことができる。
【0050】ゲーム等に複数のキャラクターを登場させ
る場合にも、1つのキャラクターの画像データから全く
別の複数のキャラクターを作ることができる。ゲーム等
に登場するキャラクターの一部分(例えば、目、鼻、
手、足等のパーツ)の形を変える場合にも、元となる1
つの画像データだけを持っていればよいという効果があ
る。ゲーム等の背景等に特殊効果を付加する場合にも、
従来のような拡大、縮小、四角形から四角形への変形等
に比べてはるかに自由かつ滑らかな変形を行うことがで
き、従来にない特殊効果(例えば、背景を歪ませて異次
元の世界を表現する等)を付加することができる。な
お、上記実施例では曲線パラメータとしてベジェ曲線の
パラメータを使用しているが、これに限るものではな
く、例えばBスプライン曲線等の任意の曲線を用いるこ
とも可能である。また、この他に放物線、双曲線等のよ
うに外枠上の格子点を滑らかに配置可能な任意の数式を
採用することが可能である。この場合、外枠上の格子点
を移動するには曲線の式だけでなく、放物線、双曲線等
の変形のさせ方に応じて適切な数式を用いればよい。こ
のようにすると、その時々に応じた適切な変形を行われ
せることができる。
【0051】第2実施例 次に、本発明の第2実施例として三角関数を使用して外
枠上の格子点を滑らかに配置する処理について説明す
る。まず、この変形処理の対象となる変形対象の例は図
13(a)に示され、変形後の例は図13(b)に示さ
れる。図13(a)に示すように、変形対象を予め縦m
分割(例えば、4分割)、横n分割(例えば、6分割)
して合計でm×n個(例えば、24個)の小矩形に分割
する。このとき、各小矩形の画像データはドットによっ
て構成され、かつ各ドット毎に表示色番号あるいはパレ
ット番号を持っている。そして、各小矩形毎の画像はそ
のドット全体によって表示される。
【0052】さて、変形対象の外枠を構成する上辺を選
択し、選択した辺上にある複数個の小多角形の頂点を、
以下の(9)式で示す三角関数の曲線パラメータに従っ
て移動させたとき、その他の各小矩形の頂点の座標を算
出する処理は前記実施例と同様のルーチン(図11)で
行われる。 y=a・sinπb(x−c)+d……(9) すなわち、変形対象の外枠を三角関数の曲線パラメータ
に従って移動させるために変形データとして持っている
ものは、図13(b)に示す曲線パラメータのデータ
で、曲線の両端の座標(x1、y1)、(x2、y2)
と、曲線の曲がり方を制御する(9)式で示す三角関数
のデータである。
【0053】このとき、記憶装置33には図14に示す
ように、上記(9)式で示す三角関数の情報を格納する
変形データエリアがある。 三角関数の振幅……a 三角関数の周期……b 三角関数の位相……c 三角関数の周期……b y方向のオフセット……d したがって、第2実施例では曲線の両端の座標(x1、
y1)、(x2、y2)と、曲線の曲がり方を制御する
(9)式で示す三角関数のデータに基づいて外枠を構成
する上辺上にある複数個の小多角形の頂点を滑らかに変
形できるとともに、変形に対応してその他の各小矩形の
頂点の座標を算出することができる。その結果、前記実
施例と同様の効果を得ることができる。特に、三角関数
のパラメータを用いているから、前記実施例とは異なる
態様の画像変形を行わせることができる。
【0054】第3実施例 次に、本発明の第3実施例の変形処理について説明す
る。この実施例では、変形対象の外枠を構成する向い合
う複数の辺(ここでは上辺と下辺の2個)を選択し、選
択した辺上にある複数個の小多角形の頂点を、所定の曲
線パラメータに従って移動させたときのその他の各小矩
形の頂点の座標を算出する処理を行うものである。ま
ず、この変形処理の対象となる変形対象の例は図15
(a)に示され、変形後の例は図15(b)に示され
る。図15(a)に示すように、変形対象を予め縦m分
割(例えば、4分割)、横n分割(例えば、6分割)し
て合計でm×n個(例えば、24個)の小矩形に分割す
る。このとき、各小矩形の画像データはドットによって
構成され、かつ各ドット毎に表示色番号あるいはパレッ
ト番号を持っている。そして、各小矩形毎の画像はその
ドット全体によって表示される。
【0055】さて、変形対象の内部にある任意の2つの
小矩形の頂点(p1、q1)、(p2、q2)を、座標
(xd1、yd1)および座標(xd2、yd2)で表
される位置にそれぞれ移動させたときのその他の各小矩
形の頂点の座標を算出する処理について説明する。この
例は、あたかも内部の2つの小矩形の頂点(p1、q
1)、(p2、q2)をやや外側に膨らませて変形対象
を変形させるようなケースに相当する。この例は、あた
かも変形対象の上辺と下辺の外枠にある複数の小矩形の
頂点を外方に緩やかに膨らませるような変形を行うケー
スに相当する。この場合、変形データとして予め位置が
判明しているために、位置データの保有が可能なもの
は、図15(a)に示す変形前における変形対象の小矩
形の頂点であり、これらの外枠の2つの頂点の位置デー
タは(x1、y1)、(x2、y2)なる座標で表され
る。一方、変形対象の外枠を曲線パラメータに従って移
動させるために変形データとして持っているものは、図
15(b)に示す曲線パラメータのデータである。ま
ず、選択した一方の辺に対応する曲線1のパラメータと
しては、曲線1の両端の座標(xb1、yb1)、(x
b4、yb4)と、曲線の曲がり方を制御する座標(x
b2、yb2)、(xb3、yb3)がある。また、選
択した他方の辺に対応する曲線2のパラメータとして
は、曲線2の両端の座標(xc1、yc1)、(xc
4、yc4)と、曲線の曲がり方を制御する座標(xc
2、yc2)、(xc3、yc3)がある。
【0056】記憶装置33には図16に示すように、上
記各情報を格納する変形データエリアがある。 曲線1のパラメータ1のx座標……xb1 曲線1のパラメータ1のy座標……yb1 曲線1のパラメータ2のx座標……xb2 曲線1のパラメータ2のy座標……yb2 曲線1のパラメータ3のx座標……xb3 曲線1のパラメータ3のy座標……yb3 曲線1のパラメータ4のx座標……xb4 曲線1のパラメータ4のy座標……yb4 曲線2のパラメータ1のx座標……xc1 曲線2のパラメータ1のy座標……yc1 曲線2のパラメータ2のx座標……xc2 曲線2のパラメータ2のy座標……yc2 曲線2のパラメータ3のx座標……xc3 曲線2のパラメータ3のy座標……yc3 曲線2のパラメータ4のx座標……xc4 曲線2のパラメータ4のy座標……yc4
【0057】図17は変形後の格子点座標算出処理のル
ーチンを示すフローチャートである。このルーチンで採
用するベジェ曲線の発生方法については、前記実施例と
同様であるので、重複説明を省略する。本ルーチンで
は、上記ベジェ曲線の発生方法に基づいて、変形対象の
上側の外枠上にある格子点および下側の外枠上にある格
子点を、それぞれベジェ曲線のパラメータに従って移動
させ、このときの他の格子点の移動後の座標を算出する
処理を説明する。まず、変形対象の左上側の外枠の頂点
の座標を(x1、y1)とし、右下側の外枠の頂点の座
標を(x2、y2)とする。そして、ステップS198
で変形後の外枠の縦方向の格子点(0、0)〜(m、
0)および(0、n)〜(m、n)の座標を求める。こ
れは、外枠の頂点の座標(x1、y1)、(x2、y
2)により比例演算により求められる。次いで、ステッ
プS200でポインタjを[1]にセットする。
【0058】ポインタjは格子点をx軸方向に沿って順
次指定するものである。次いで、ステップS202で変
形対象の上辺にあった格子点(0、j)(ただし、0<
j<q)の移動後の座標(xd(j)、yd(j))
を、以下に示す(11)式および(12)式に従って算
出する。この格子点(0、j)は、図15(b)におい
て△印で示される。 xd(j)=(1−j/n)3・xb1+3(j/n)・(1−j/n)2 ・xb2+3(j/n)2・(1−j/n)・xb3 +(j/n)3・xb4……(11) yd(j)=(1−j/n)3・yb1+3(j/n)・(1−j/n)2 ・yb2+3(j/n)2・(1−j/n)・yb3 +(j/n)3・yb4……(12)
【0059】最初のルーチンではj=1であるから、格
子点(0、1)の移動後の座標(xd(1)、yd
(0))が(11)式および(12)式に従って算出さ
れる。この格子点(0、1)の座標位置は、図15
(b)において△印で示される。次いで、ステップS2
04でポインタjをインクリメントし(1だけ進め
る)、続くステップS206でポインタjがnに等しく
なったか(つまり外枠の右側の辺まで到達したか)否か
を判別する。今回はNOであるから、ステップS202
に戻って同様のループを繰り返す。したがって、次回の
ループでは格子点(0、2)の移動後の座標(xd
(2)、yd(0))が(11)式および(12)式に
従って算出される。そして、同様のループを繰り返すこ
とにより、j=nになると、格子点(0、n)の位置ま
でポインタjが進んでその移動後の座標(xd(n)、
yd(0))が算出されたと判断してステップS208
に抜ける。このようにして、変形対象の上辺にあった格
子点(0、j)(ただし、0<j<n)の移動後の座標
(xd(j)、yd(0))がすべて順次算出される。
その結果、図15(b)に示すように変形対象の外枠上
辺を第1のベジェ曲線のパラメータに従った形状に変形
させることができる。
【0060】次いで、変形対象の外枠下辺の各格子点の
座標を算出する処理に移る。ステップS208で再びポ
インタjを[1]にセットする。これにより、今度は外
枠下辺の各格子点をポインタjにより順次x軸方向に沿
って順次指定していくことになる。次いで、ステップS
210で変形対象の下辺にあった格子点(m、j)(た
だし、0<j<n)の移動後の座標(xe(j)、ye
(j))を、以下に示す(13)式および(14)式に
従って算出する。 xe(j)=(1−j/n)3・xc1+3(j/n)・(1−j/n)2 ・xc2+3(j/n)2・(1−j/n)・xc3 +(j/n)3・xc4……(13) ye(j)=(1−j/n)3・yc1+3(j/n)・(1−j/n)2 ・yc2+3(j/n)2・(1−j/n)・yc3 +(j/n)3・yc4……(14)
【0061】最初のルーチンではj=1であるから、格
子点(m、1)の移動後の座標(xe(1)、ye
(m))が(13)式および(14)式に従って算出さ
れる。この格子点(m、1)の座標位置は、図15
(b)において▲印で示される。次いで、ステップS2
12でポインタjをインクリメントし(1だけ進め
る)、続くステップS214でポインタjがnに等しく
なったか(つまり外枠の右側の辺まで到達したか)否か
を判別する。今回はNOであるから、ステップS210
に戻って同様のループを繰り返す。したがって、次回の
ループでは格子点(m、2)の移動後の座標(xe
(2)、ye(m))が(13)式および(14)式に
従って算出される。そして、同様のループを繰り返すこ
とにより、j=nになると、格子点(m、n)の位置ま
でポインタjが進んでその移動後の座標(xe(n)、
ye(m))が算出されたと判断して図18のステップ
S216に抜ける。このようにして、変形対象の下辺に
あった格子点(m、j)(ただし、0<j<n)の移動
後の座標(xe(j)、ye(m))がすべて順次算出
される。その結果、図15(b)に示すように変形対象
の外枠下辺を第2のベジェ曲線のパラメータに従った形
状に変形させることができる。
【0062】次に、変形対象の上辺にあった格子点
(0、j)と下辺にあった格子点(m、j)とを結ぶ線
上の格子点の座標を算出する処理に移る。まず、ステッ
プS216でポインタjを[1]にセットする。これに
より、外枠の各格子点をポインタjにより順次x軸方向
に沿って順次指定していく。次いで、ステップS218
でポインタiを[1]にセットする。これにより、外枠
の各格子点をポインタiにより順次y軸方向に沿って順
次指定していく。次いで、ステップS220で以下に示
す(15)式および(16)式に従って、変形対象の上
辺にあった格子点(0、j)と変形対象の下辺にあった
格子点(m、j)とを結ぶ線上の格子点(i、j)(た
だし、0<i<m)の座標を算出する。この格子点
(i、j)の座標位置は、図15(b)において○印で
示される。 x=xd(j)・(m−i)/m+xe(j)・i/m……(15) y=yd(j)・(m−i)/m+ye(j)・i/m……(16)
【0063】次いで、ステップS222でポインタiを
インクリメントし(1だけ進める)、続くステップS2
24でポインタiがmに等しくなったか(外枠の下辺に
到達したか)否かを判別する。例えば、今回のルーチン
で変形対象の上辺にあった格子点(0、j)と変形対象
の下辺にあった格子点(m、j)とを結ぶ線上の一番上
に位置する格子点(i、j)の座標が算出され、上記線
上にまだ複数の格子点が存在していたとすると、ポイン
タiがmに等しくなって外枠の下辺のひとつ手前に到達
した訳ではないから、ステップS224の判別結果はN
Oとなり、ステップS220に戻って同様のループを繰
り返す。したがって、次回のループでは今回求めた格子
点のすぐ下側にある格子点の座標が算出されることにな
る。そして、同様のループを繰り返すことにより、順次
格子点の座標が算出され、最終的にi=mになると、外
枠の下辺のひとつ手前位置までポインタiが進んだと判
断してステップS226に抜ける。
【0064】次いで、ステップS226でポインタjを
インクリメントし(1だけ進める)、続くステップS2
28でポインタjがnに等しくなったか(つまり外枠の
右側の辺のひとつ手前まで到達したか)否かを判別す
る。今回はNOであるから、ステップS218に戻って
同様のループを繰り返す。最初のルーチンでは、変形対
象の上辺にあった格子点(0、1)と変形対象の下辺に
あった格子点(m、1)とを結ぶ線上の格子点(i、
j)の座標が外枠の上辺から下辺まで順次算出されたの
で、ポインタjをインクリメントすることにより、今度
は変形対象の上辺にあった格子点(0、2)と変形対象
の下辺にあった格子点(m、2)とを結ぶ線上の格子点
(i、j)の座標が外枠の上辺から下辺まで順次算出さ
れる。以後、ステップS218〜ステップS228のル
ープを繰り返すことにより、途中の過程では図15
(b)に示すように、変形対象の上辺にあった格子点と
変形対象の下辺にあった格子点とを結ぶ線上の格子点3
01、302、303の座標が順次算出されることにな
る。そして、最終的にj=nになると、外枠の左辺から
右辺まで順次、変形対象の上辺にあった格子点と変形対
象の下辺にあった格子点とを結ぶ線上の格子点(i、
j)の座標がすべて算出されたので、ステップS228
からYESに抜けて本ルーチンを終了する。
【0065】以上のルーチンを実行することにより、変
形対象の上側の外枠上にある格子点を第1のベジェ曲線
のパラメータに従って移動させるとともに、変形対象の
下側の外枠上にある格子点を第2のベジェ曲線のパラメ
ータに従って移動させ、このときの他の格子点の移動後
の座標を算出する処理が行われる。なお、上記処理では
変形対象の上側の外枠上にある格子点を第1のベジェ曲
線のパラメータに従って移動させ、変形対象の下側の外
枠上にある格子点を第2のベジェ曲線のパラメータに従
って移動させた例であるが、曲線パラメータの配置は任
意でよく、例えば左側、右側の外枠上にある格子点をそ
れぞれに対応する曲線パラメータに従って移動させた場
合についても、同様の処理によって各格子点の移動後の
座標を算出することができる。
【0066】したがって、第3実施例では、小矩形の変
形処理において変形対象の外枠を構成する任意の複数の
辺(例えば、上記例のように外枠の上辺と下辺)を選択
し、選択した辺上にある複数個の小多角形の頂点を、ベ
ジェ曲線のパラメータに従って移動させ、このときの他
の格子点の移動後の座標を算出しているので、前記実施
例と同様の効果を得ることができる。この場合、特に、
変形対象の外枠を構成する向い合う複数の辺の小多角形
の頂点を移動させる変形法を使用することにより、変形
対象の外枠の形を変えるので、画像の外形(例えば、大
きさ)を変えることができる。また、移動する格子点を
上側、下側の外枠上にとれば、変形対象の画像を主とし
て上下方向に変形する場合に有効である。一方、移動す
る格子点を左側、右側の外枠上にとれば、変形対象の画
像を主として左右方向に変形する場合に有効である。な
お、上記実施例では第1、第2の曲線パラメータとして
ベジェ曲線のパラメータを使用しているが、これに限る
ものではなく、例えばBスプライン曲線等の任意の曲線
を用いることも可能である。また、この他に放物線、双
曲線等のように外枠上の格子点を滑らかに配置可能な任
意の数式を採用することが可能である。この場合、外枠
上の格子点を移動するには曲線の式だけでなく、放物
線、双曲線等の変形のさせ方に応じて適切な数式を用い
ればよい。このようにすると、その時々に応じた適切な
変形を行われせることができる。
【0067】第4実施例 次に、本発明の第4実施例を説明する。この実施例は外
枠の上側の格子点を三角関数を使用して滑らかに配置
し、外枠の下側の格子点を2次方程式を使用して滑らか
に配置する例である。まず、この変形処理の対象となる
変形対象の例は図19(a)に示され、変形後の例は図
19(b)に示される。図19(a)に示すように、変
形対象を予め縦m分割(例えば、4分割)、横n分割
(例えば、6分割)して合計でm×n個(例えば、24
個)の小矩形に分割する。このとき、各小矩形の画像デ
ータはドットによって構成され、かつ各ドット毎に表示
色番号あるいはパレット番号を持っている。そして、各
小矩形毎の画像はそのドット全体によって表示される。
【0068】さて、変形対象の外枠を構成する上辺を選
択し、選択した辺上にある複数個の小多角形の頂点を、
以下の(21)式で示す三角関数の曲線パラメータに従
って移動させたとき、その他の各小矩形の頂点の座標を
算出する処理は前記実施例と同様のルーチン(図17、
図18)で行われる。 y=a・sinπb(x−c)+d……(21) すなわち、変形対象の外枠の上辺を三角関数の曲線パラ
メータに従って移動させるために変形データとして持っ
ているものは、図19(b)に示す曲線パラメータのデ
ータで、曲線の両端の座標(x1、y1)、(x2、y
2)と、曲線の曲がり方を制御する(21)式で示す三
角関数のデータである。
【0069】このとき、記憶装置33には図20に示す
ように、上記(21式で示す三角関数の情報を格納する
変形データエリアがある。 三角関数の振幅……a 三角関数の周期……b 三角関数の位相……c 三角関数の周期……b y方向のオフセット……d これにより、曲線の両端の座標(x1、y1)、(x
2、y2)と、曲線の曲がり方を制御する(21)式で
示す三角関数のデータに基づいて外枠を構成する上辺上
にある複数個の小多角形の頂点を滑らかに変形すること
ができる。
【0070】次いで、変形対象の外枠を構成する下辺を
選択し、選択した辺上にある複数個の小多角形の頂点
を、以下の(22)式で示す2次方程式(放物線)の曲
線パラメータに従って移動させたとき、その他の各小矩
形の頂点の座標を算出する処理を前記実施例と同様のル
ーチン(図17、図18)で行う。 y=e・x2+f・x+g……(22) このとき、変形対象の外枠の下辺を2次方程式の曲線パ
ラメータに従って移動させるために変形データとして持
っているものは、図19(b)に示す曲線パラメータの
データで、曲線の両端の座標(x1、y1)、(x2、
y2)と、曲線の曲がり方を制御する(22)式で示す
2次方程式のデータである。
【0071】この場合、記憶装置33には図20に示す
ように、上記(22)式で示す2次方程式の情報を格納
する変形データエリアが、三角関数の格納エリアに続い
て配置される。 2次方程式の係数……e 2次方程式の係数……f 2次方程式の係数……g これにより、曲線の両端の座標(x1、y1)、(x
2、y2)と、曲線の曲がり方を制御する(22)式で
示す2次方程式のデータに基づいて外枠を構成する下辺
上にある複数個の小多角形の頂点を滑らかに変形するこ
とができる。次いで、前記実施例と同様のルーチン(図
17、図18)で上下の各辺を結ぶ線上にある各格子点
の座標を算出する処理を行う。その結果、前記実施例と
同様の効果を得ることができる。特に、2次方程式のパ
ラメータを用いているから、前記実施例とは異なる態様
の画像変形を行わせることができる。この実施例では、
外枠の上側の格子点を三角関数を使用して配置し、外枠
の下側の格子点を2次方程式を使用して配置する例であ
るが、各辺に適用する曲線は第4実施例のような態様に
限るものではない。また、外枠上の格子点を移動する際
に曲線の式だけでなく、放物線、双曲線等の変形のさせ
方に応じて適切な数式を用いればよい。このようにする
と、その時々に応じた適切な変形を行われせることがで
きる。
【0072】次に、前述したいわゆるライン貼り付け法
の処理内容について、以下に具体的に詳述する。ライン貼り付け処理のサブルーチン 図7に示したステップS34におけるライン貼り付け法
(矩形から任意の四角形への変形方法)の具体的な内容
は以下の通りである。図21はライン貼り付け法の処理
を示すサブルーチンのフローチャートであり、このサブ
ルーチンの処理の対象となる画像データの例は図22
(a)、(b)のように示される。すなわち、図22
(a)は変形前の元画像データを示し、詳しくは変形元
となるビット配列形式の画像データを分割した場合のあ
る1つの小矩形の画像データ(つまり、変形前の小矩形
画像データ)に対応する。ここで説明するライン貼り付
け法は、図22(a)に示すように変形前の小矩形画像
データとして縦(Y)方向が12ピクセル、横(X)方
向が16ピクセルで構成される元画像データ(矩形AB
CDで表される)を、図22(b)に示すような四角形
A’B’C’D’に変形する内容である。その変形処理
では、まず元画像データを12本の水平ライン(ライン
0〜ライン11)に分割する。そして、分割した各ライ
ンを画像変形態様に応じて変形後の四角形に順番に貼り
付けていく処理が行われ、変形画像が得られる。
【0073】サブルーチンのステップを進めながら、上
記処理について説明する。このサブルーチンに移行する
と、まずステップS1100で辺A’B’についてライ
ンの端点処理を行う。これは、変形後の四角形のライン
の端点A’B’を求めるものである。なお、ステップS
1100の処理(辺A’B’の位置を求める方法)につ
いては、後述のサブルーチンで詳述する。すなわち、図
22(a)(b)に示すように、分割した各ラインを画
像変形態様に応じて変形後の四角形に順番に貼り付けて
いく処理では、以下のような状態に着目する必要があ
る。辺AB上にあった各ラインの一方の端点は辺A’
B’上に、また、辺DC上にあった他方の端点は辺D’
C’上に移動する。このとき、辺ABと辺A’B’およ
び辺DCと辺D’C’では、それらの長さが異なるの
で、辺A’B’、辺D’C’上でラインの端点が重なっ
たりすることがある。これは、図22(b)の☆印で示
す部分であり、辺A’B’上のライン5およびライン6
が重なっている。また、同一のラインを2回以上貼り付
けなければならないこともある。これは、図22(b)
の★印で示す2つの部分であり、辺D’C’上のライン
3およびライン8が2回繰り返され、それぞれライン
3、3’およびライン8、8’となっている。
【0074】図23にラインを2回貼り付ける様子を示
す。図23(a)は変形前の元画像データであり、詳し
くは変形元となるビット配列形式の画像データを分割し
た場合のある1つの小矩形の画像データに対応する。図
23(b)は変形後の1つの四角形の画像データであ
る。変形前の画像データのライン3が、変形後は途中の
ドットから右側6ドットだけライン3、3’として2ラ
イン分貼り付けられる。また、変形前の画像データのラ
イン5とライン6が、変形後は最初のドットから7ドッ
トまで(つまり左側7ドット分)については同じドット
に貼り付けられ、以後の右側7ドットについてはライン
5、ライン6として別個に貼り付けられる。なお、図2
3〜図30はライン貼り付け法を実行する場合の、複数
の実行過程における変形前の小矩形および変形後の四角
形を示すものであり、各過程の具体例は後述のサブルー
チンを説明するときに述べる。
【0075】次いで、ステップS1102で辺D’C’
についてラインの端点処理を行う。これは、変形後の四
角形のラインの端点D’C’を求めるものである。な
お、ステップS1102の処理(辺D’C’の位置を求
める方法)については、同様に後述のサブルーチンで詳
述する。このようにして、各ラインの端点が移動する辺
A’B’と辺D’C’の位置が求められると、これらの
ラインの端点位置は図32に示すように、CPU31の
内部レジスタ31aにある端点バッファにデータを格納
する。この場合、内部レジスタ31aには辺A’B’上
の端点バッファと、辺D’C’上の端点バッファという
2つの格納エリアがある。そして、これらの各端点バッ
ファではラインの端点の座標と、そのライン番号を対応
付けて格納する。2つの端点バッファは端点の位置を読
み出すときや、ラインの描画位置を決めるときに使用さ
れる。
【0076】次いで、ステップS1104〜ステップS
1110でラインを描画する処理を行う。まず、ステッ
プS1104では2つの端点バッファからライン番号の
同じデータを読み出す。次いで、ステップS1106で
同じライン番号のラインが複数あるときには描画回数が
最小になるように組み合せる。これは、図33に示すよ
うに、例えば辺A’B’上で同じライン番号のラインが
3本あり、一方、辺D’C’上で同じライン番号のライ
ンが2本ある場合、上側の各端点同士を1本のラインで
引き、辺A’B’上の2つの端点と辺D’C’上の1つ
の端点とを2本のラインで引くような処理を行うもので
ある。次いで、ステップS1108で描画処理(詳細は
サブルーチンで後述)を行う。次いで、ステップS11
10ですべてのラインについて処理したか否かを判別
し、NOのときはステップS1104に戻って同様の処
理を繰り返す。そして、すべてのラインについてステッ
プS1104〜ステップS1108の処理が終了する
と、ステップS1110からYESに抜けてルーチンを
終了する。このようにして、各小矩形が異なる四角形に
それぞれ変形され、変形対象の画像全体が滑らかに変形
することになる。
【0077】ライン端点処理のサブルーチン 次に、上記ステップS1100およびステップS110
2におけるラインの端点処理のサブルーチンについて説
明する。図34はラインの端点処理(ステップS111
0の処理)を示すサブルーチンのフローチャートであ
る。まず、貼り付けるラインの一方の端点となる辺A’
B’の位置を求める方法から説明する。なお、貼り付け
るラインの他方の端点となる辺D’C’の位置を求める
方法も同様である。ステップS1200で座標決定用誤
差e1、ライン選択用誤差e2、現在ライン番号をすべ
て[0]に初期設定する。座標決定用誤差e1とは、端
点の位置を決めるとき又はラインの描画位置を決めると
きに用いる座標決定用誤差のことである。ライン選択用
誤差e2とは、端点に割り当てるラインを選択するとき
に用いるライン選択用誤差のことである。これにより、
最初は各誤差が[0]になる。
【0078】次いで、ステップS1202で処理を開始
する点(A’又はD’)の座標をCPU31の内部レジ
スタ31aにある現在座標というエリアに格納する。例
えば、貼り付けるラインの一方の端点となる辺A’B’
の位置を求める処理では、A’の座標を格納する。一
方、貼り付けるラインの他方の端点となる辺D’C’の
位置を求める処理では、D’の座標を格納する。CPU
31の内部レジスタ31aには図32に示すように、端
点バッファの他に、以下のような格納エリアがある。 座標決定用誤差e1のエリア 座標決定用誤差増分Δe1のエリア 現在座標のエリア ライン選択用誤差e2のエリア ライン選択誤差増分Δe2のエリア 現在ライン番号 また、ドット選択用の格納エリアとしては、以下のよう
なものがある。 ドット選択用誤差e3のエリア ドット選択用誤差増分Δe3のエリア 現在ドット番号のエリア
【0079】次いで、ステップS1204でY方向のピ
クセル数がX方向のピクセル数より多いか否かを判別す
る。いま、貼り付けるラインの一方の端点となる辺A’
B’の位置を求める場合の具体例は図24に示される。
図241(a)に示す変形前のラインの一方の端点とな
る辺ABを示し、図24(b)は貼り付けるラインの一
方の端点となる辺A’B’の様子を示し、さらに図24
(c)は辺A’B’におけるX方向およびY方向のピク
セル数の変化を示している。この例に対応させて考える
と、辺A’B’はY方向に11ピクセル、X方向に4ピ
クセルに渡って描画されるので、ステップS1204の
判別結果はYESとなり、このケースではステップS1
206に進む。一方、逆のケースではNOに分岐して図
35に示すステップS1238に進む。また、この場
合、図24に示すケースでは点A’から点B’に向って
Y座標を1ずつ変えていったときにX座標の変化する位
置を求めると、そのとき変化した座標が辺A’B’の位
置となる。したがって、無条件に位置の決る始点(点
A’)を除く10個のドットを打つときには、X座標の
変化する位置としてX座標が変化する3箇所を求めるこ
とになる。
【0080】ステップS1206に進むと、座標決定用
誤差増分Δe1を(Xピクセル数−1)/(Yピクセル
数−1)に初期設定するとともに、ライン選択誤差増分
Δe2を(元ライン数−1)/(Yピクセル数−1)に
初期設定する。ステップS1200〜ステップS120
6の処理により必要な初期設定が完了する。次いで、ス
テップS1208で現在のライン番号と現在座標を端点
バッファ(図38参照)に格納する。次いで、ステップ
S1210で現在座標のY座標を変更する。次いで、ス
テップS1212で座標決定用誤差e1についての判別
を以下のようにして行う。すなわち、選択誤差(初期値
=0)eを決め、選択誤差eに誤差増分Δeを加える
(e=e+Δe)。Δeは(X方向のピクセル数−1)
/(Y方向のピクセル数−1)である。
【0081】なお、ここでは、座標決定用であるからe
をe1とし、ΔeをΔe1として処理をする。そうする
と、e1=e1+Δe1となる。この値が1/2より大
きくなったか否かを判別する。そして、誤差増分Δe1
を加えた結果e1がe1≧(1/2)であれば、ステッ
プS1214に進んで次に打つ点の座標(次の現在座標
に相当)のX座標を変更する。これは、選択誤差に誤差
増分を加え、その結果が1/2より大きいか小さいかに
よって処理を選択するもので、選択誤差が1/2以上の
ときに誤差を補正する。
【0082】このようにすると、点A’から点B’に向
ってY座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、X座標の変化する位置が滑らかにつなが
ることになる。なお、この方法はいわゆるBresenhamの
アルゴリズムとして用いられるものである。次いで、ス
テップS1216で誤差補正を行い、e1=e1−1と
する。これは、選択誤差が1/2以上になって次の座標
を変更したので、1を減算することにより、再び次の現
在座標から誤差増分Δeを加えて同様の判別を始めるた
めである。その後、ステップS1218に進む。一方、
誤差増分Δe1を加えた結果e1がe1<(1/2)で
あれば、ステップS1214、ステップS1216をジ
ャンプしてステップS1218に進む。このときは、次
に打つ点のX座標は元のままにする。また、この場合は
選択誤差e1は補正しない。以上のステップS1210
〜ステップS1216を実行することにより、貼り付け
るラインの一方の端点となる辺A’B’の位置が決定さ
れる。
【0083】ここで、図24の場合(貼り付けるライン
の一方の端点となる辺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.3
0<(1/2)となる。したがって、このときは次に打
つ点のX座標は変更しない(図24(c)参照)。ま
た、選択誤差eは1/2より小さいので、選択誤差eの
補正は行わない。次いで、ここまでの選択誤差e=0.
30に誤差増分ΔeとしてΔe=0.30を加えると、
e=0.30+0.30=0.60≧(1/2)となる
ので、今度は次に打つ点のX座標を変更する(図24
(c)参照)。以上の処理を繰り返すことにより、点
、の位置でX座標の変更が行われ、最終的に図24
(c)に示すように、端点B’の位置が決定される。
【0084】一方、上記ステップS1204でY方向の
ピクセル数がX方向のピクセル数より小さいときは図3
5のステップS1238に進み、今度はY座標の方を変
更する処理を行う。すなわち、ステップS1238で座
標決定用誤差増分Δe1を(Yピクセル数−1)/(X
ピクセル数−1)に初期設定するとともに、ライン選択
誤差増分Δe2を(元ライン数−1)/(Xピクセル数
−1)に初期設定する。次いで、ステップS1240で
現在のライン番号と現在座標を端点バッファ(図32参
照)に格納する。次いで、ステップS1242で現在座
標のX座標を変更する。次いで、ステップS1244で
座標決定用誤差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)であ
れば、ステップS1246に進んで次に打つ点の座標
(次の現在座標に相当)のY座標を変更する。これは、
選択誤差に誤差増分を加え、その結果が1/2より大き
いか小さいかによって処理を選択するもので、選択誤差
が1/2以上のときに誤差を補正する。
【0085】このようにすると、点D’から点C’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、Y座標の変化する位置が滑らかにつなが
ることになる。次いで、ステップS1248で誤差補正
を行い、e1=e1−1とする。これは、選択誤差が1
/2以上になって次の現在座標のY座標を変更したの
で、1を減算することにより、再び次の現在座標から誤
差増分Δeを加えて同様の判別を始めるためである。そ
の後、ステップS1250に進む。一方、誤差増分Δe
1を加えた結果e1がe1<(1/2)であれば、ステ
ップS1246、ステップS1248をジャンプしてス
テップS1250に進む。このときは、次に打つ点のY
座標は元のままにする。また、この場合は選択誤差e1
は補正しない。以上のステップS1242〜ステップS
1248を実行することにより、貼り付けるラインの一
方の端点となる辺D’C’の位置が決定される。
【0086】ここで、図25の場合(貼り付けるライン
の他方の端点となる辺D’C’の位置を決定する場合)
の具体例について説明する。図25(a)は変形前のラ
インの他方の端点となる辺DCを示し、図25(b)は
貼り付けるラインの他方の端点となる辺D’C’の様子
を示し、さらに図25(c)は辺D’C’におけるX方
向およびY方向のピクセル数の変化を示している。この
例に対応させて考えると、辺D’C’はY方向に14ピ
クセル、X方向に5ピクセルに渡って描画されるので、
点D’から点C’に向ってY座標を1ずつ変えていった
ときにX座標の変化する位置を求めると、そのとき変化
した座標が辺D’C’の位置となる。したがって、無条
件に位置の決る始点(点D’)を除く13個のドットを
打つときには、X座標の変化する位置としてX座標が変
化する4箇所を求めることになる。
【0087】まず、最初の端点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.3
0<(1/2)となる。したがって、このときは次に打
つ点のX座標は変更しない(図25(c)参照)。ま
た、選択誤差eは1/2より小さいので、選択誤差eの
補正は行わない。次いで、ここまでの選択誤差e=0.
30に誤差増分ΔeとしてΔe=0.30を加えると、
e=0.30+0.30=0.60≧(1/2)となる
ので、今度は次に打つ点のX座標を変更する(図25
c)参照)。以上の処理を繰り返すことにより、点、
、(12)(なお、10以降の○付き数字は表示が困難に
つき、かっこ付きの半角数字で表す)の位置でX座標の
変更が行われ、最終的に図25(c)に示すように、端
点C’の位置が決定される。
【0088】さて、再び図35のフローチャートに戻
り、端点位置の決定が行われると、ステップS1218
に進む。ステップS1218〜ステップS1236およ
びステップS1250〜ステップS1266では、辺
A’B’、辺D’C’に分割された水平ラインのうち、
どのラインの端点を割り当てるかを求める処理を行う。
まず、図26(b)に示す辺A’B’のように図26
(a)に示す元となる辺ABよりも短い辺に、貼り付け
るラインの端点を割り当てる処理内容について説明す
る。元画像データの水平ライン数は12本、辺A’B’
に貼り付けることのできるライン数は11本なので、元
画像データの12本のラインのうち、2本のラインの端
点が辺A’B’上で重なる。重なるラインの選択の処理
は、次のようになる。
【0089】ステップS1218で選択誤差(初期値=
0)eを決め、選択誤差eに誤差増分Δeを加える(e
=e+Δe)。Δeは(元画像のライン数−1)/(辺
A’B’のピクセル数−1)である。なお、ここでは、
ライン選択用であるからeをe2とし、ΔeをΔe2と
して処理をする。そうすると、e2=e2+Δe2とな
る。次いで、この値が1/2より大きくなったか否かを
ステップS1220で判別する。そして、誤差増分Δe
2を加えた結果e2がe2≧(1/2)であれば、ステ
ップS1224に進んで現在のライン番号を[1]だけ
インクリメントする(つまり、次のライン番号に進め
る)。これは、選択誤差に誤差増分を加え、その結果が
1/2より大きいか小さいかによって処理を選択するも
ので、選択誤差が1/2以上のときに誤差を補正する。
現在のライン番号を1進めることにより、辺A’B’上
の次の点には次のラインの端点が割り当てられる。
【0090】このようにすると、点A’から点B’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe2が1の半分より大きい場合に、次のライン
番号に変更するので、ライン端点の変化する位置が滑ら
かにつながることになる。また、ステップS1220で
e2が1/2未満のときはステップS1236にジャン
プする。ステップS1236ではすべての端点について
処理したか否かを判別し、すべての端点について処理が
終了していなければ、ステップS1208に戻って同様
の処理を繰り返す。したがって、誤差増分Δe2が1の
半分より大きくなった時点でステップS1236へジャ
ンプせず、ステップS1224の方に進むことになる。
【0091】ステップS1224を経ると、続くステッ
プS1224で誤差補正を行い、e2=e2−1とす
る。これは、選択誤差が1/2以上になって次のライン
番号に変更したので、1を減算することにより、再び次
のライン番号から誤差増分Δeを加えて同様の判別を始
めるためである。次いで、ステップS1228で再び選
択誤差e2が1/2以上であるか否かを判別する。これ
は、誤差補正を行った結果について、再度選択誤差e2
の大ささを判断するものである。そして、誤差補正を行
った結果、選択誤差e2が依然として1/2以上であれ
ば、ステップS1230に進み、現在のライン番号と現
在座標をCPU31の内部レジスタ31a内の端点バッ
ファに格納する。次いで、ステップS1232でライン
番号を[1]だけインクリメントする(つまり、次のラ
イン番号に進める)。これにより、辺A’B’上の同じ
点に、次のラインの端点も割り当てられる。そして、選
択誤差e2が1/2未満になるまで、同じ点に次のライ
ンの端点が順次割り当てられていく。
【0092】次いで、ステップS1234で誤差補正を
行い、e2=e2−1とする。これは、上記同様に選択
誤差が1/2以上になって次のライン番号に変更したの
で、1を減算することにより、再び次のライン番号から
誤差増分Δeを加えて同様の判別を始めるためである。
その後、ステップS1228に戻って同様の処理を繰り
返す。したがって、誤差を補正した結果(選択誤差)e
2が未だ1/2より大きければ、ライン番号を更に1進
めて辺A’B’上の同じ点に、次のラインの端点が割り
当てられ、選択誤差e2が1/2未満になるまで、同じ
点に次のラインの端点が割り当てられることになる。
【0093】一方、ステップS1228で誤差増分Δe
2を加えた結果e2がe2<(1/2)であれば、ステ
ップS1236にジャンプする。このときは、次のライ
ン番号に変更されず、ライン番号は元のままである。ま
た、この場合は選択誤差e2は補正しない。ステップS
1236ではすべての端点について処理したか否かを判
別する。すべての端点について処理が終了していなけれ
ば、ステップS1208に戻って処理を繰り返す。これ
により、点A’から点B’に向ってX座標を1ずつ変え
ていったときに、誤差増分Δe2の大きさに応じて上記
のような処理が繰り返される。誤差増分Δe2が1/2
より大きい場合に、次のライン番号に変更されていく。
以上のステップS1218〜ステップS1236を実行
することにより、辺A’B’のように元となる辺ABよ
りも短い辺に、貼り付けるラインの端点を割り当てる場
合の各ライン端点の位置が決定される。
【0094】ここで、図26の場合(辺A’B’のよう
に元となる辺ABよりも短い辺に、ラインの一方の端点
を割り当てる場合)の具体例について説明する。図26
(a)は変形前のラインの一方の端点となる辺ABを示
し、図26(b)は貼り付けるラインの一方の端点とな
る辺A’B’の様子を示し、さらに図26(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になる:図26(c)参照)。したがっ
て、辺A’B’上の点にはライン1の端点が割り当て
られる(図26(b)参照)。このとき、選択誤差eを
次のように補正する。 e=1.10−1=0.10<1/2
【0095】ここまでの選択誤差e=0.10に、再び
誤差増分Δe=1.10を加えると、e=0.10+
1.10=1.20≧(1/2)となる。これにより、
ライン番号を1進める(今度はライン2になる:図26
(c)参照)。したがって、辺A’B’上の点にはラ
イン2の端点が割り当てられる(図26(b)参照)。
このとき、選択誤差eを次のように補正する。 e=1.20−1=0.20<1/2 以下、同様の処理を行い、辺A’B’上の点にはライ
ン3の端点が、点にはライン4の端点が、点にはラ
イン5の端点がそれぞれ割り当てられる(図23(b)
参照)。このとき、ライン5を割り当てて選択誤差eを
補正した時点で選択誤差eは0.50になる。選択誤差
eを補正した時点で未だe≧1/2なので、ライン番号
を更に1進めて(ライン6になる)、点にライン6の
端点も割り当てる。次いで、さらに選択誤差eを以下の
ように補正する。 e=0.50−1=−0.50<1/2 以上の処理を繰り返すことにより、辺A’B’に分割さ
れた元の水平ライン内のどのラインの端点を割り当てる
かが決まる。
【0096】さて、再び図35のフローチャートに戻っ
て説明する。上述の説明は辺A’B’のように元となる
辺ABよりも短い辺に、貼り付けるラインの端点を割り
当てる処理内容であったが、今度は、図27(b)に示
す辺D’C’のように図27(a)に示す元となる辺D
Cよりも長い辺に、貼り付けるラインの端点を割り当て
る処理内容について説明する。この場合には図35に示
すステップS1250以降の処理が実行される。これ
は、先のステップS1204の判別結果がNOである場
合に相当し、この判別結果がNOということは元となる
辺DCよりも長い辺D’C’の処理に進むケースであ
る。ステップS1204の判別結果がNOであるときは
図35のステップS1238に分岐し、端点の位置決定
を行った後、ステップS1250以降の各ステップを実
行する。まず、元画像データの水平ライン数は12本、
辺D’C’に貼り付けることのできるライン数は14本
なので、元画像データの12本のラインのうち、2本の
ラインの端点が辺D’C’上で2回貼り付けられること
になる。貼り付けられるラインの選択の処理は、次のよ
うになる。
【0097】ステップS1250で選択誤差(初期値=
0)eを決め、選択誤差eに誤差増分Δeを加える(e
=e+Δe)。Δeは(元画像のライン数−1)/(辺
D’C’のピクセル数−1)である。なお、ここでは、
ライン選択用であるからeをe2とし、ΔeをΔe2と
して処理をする。そうすると、e2=e2+Δe2とな
る。次いで、この値が1/2より大きくなったか否かを
ステップS1252で判別する。そして、誤差増分Δe
2を加えた結果e2がe2≧(1/2)であれば、ステ
ップS1254に進んで現在のライン番号を[1]だけ
インクリメントする(つまり、次のライン番号に進め
る)。これは、選択誤差に誤差増分を加え、その結果が
1/2より大きいか小さいかによって処理を選択するも
ので、選択誤差が1/2以上のときに誤差を補正する。
現在のライン番号を1進めることにより、辺D’C’上
の次の点には次のラインの端点が割り当てられる。
【0098】このようにすると、点D’から点C’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe2が1の半分より大きい場合に、次のライン
番号に変更するので、ライン端点の変化する位置が滑ら
かにつながることになる。また、ステップS252でe
2が1/2未満のときはステップS266にジャンプす
る。ステップS1266ではすべての端点について処理
したか否かを判別し、すべての端点について処理が終了
していなければ、ステップS1240に戻って同様の処
理を繰り返す。したがって、誤差増分Δe2が1の半分
より大きくなった時点でステップS1266へジャンプ
せず、ステップS1254の方に進むことになる。
【0099】ステップS1254を経ると、続くステッ
プS1256で誤差補正を行い、e2=e2−1とす
る。これは、選択誤差が1/2以上になって次のライン
番号に変更したので、1を減算することにより、再び次
のライン番号から誤差増分Δeを加えて同様の判別を始
めるためである。次いで、ステップS1258で再び選
択誤差e2が1/2以上であるか否かを判別する。これ
は、誤差補正を行った結果について、再度選択誤差e2
の大きさを判断するものである。そして、誤差補正を行
った結果、選択誤差e2が依然として1/2以上であれ
ば、ステップS1260に進み、現在のライン番号と現
在座標をCPU31の内部レジスタ31a内の端点バッ
ファに格納する。次いで、ステップS1262でライン
番号を[1]だけインクリメントする(つまり、次のラ
イン番号に進める)。これにより、辺D’C’上の同じ
点に、次のラインの端点も割り当てられる。そして、選
択誤差e2が1/2未満になるまで、同じ点に次のライ
ンの端点が順次割り当てられていく。
【0100】次いで、ステップS1264で誤差補正を
行い、e2=e2−1とする。これは、上記同様に選択
誤差が1/2以上になって次のライン番号に変更したの
で、1を減算することにより、再び次のライン番号から
誤差増分Δeを加えて同様の判別を始めるためである。
その後、再びステップS1258に戻って同様の処理を
繰り返す。したがって、誤差を補正した結果(選択誤
差)e2が未だ1/2より大きければ、ライン番号を更
に1進めて辺D’C’上の同じ点に、次のラインの端点
が割り当てられることになる。そして、選択誤差e2が
1/2未満になるまで、同じ点に次のラインの端点が割
り当てられていく。
【0101】一方、ステップS258で誤差増分Δe2
を加えた結果e2がe2<(1/2)であれば、ステッ
プS1266にジャンプする。このときは、次のライン
番号に変更されず、ライン番号は元のままである。ま
た、この場合は選択誤差e2は補正しない。ステップS
1266ではすべての端点について処理したか否かを判
別する。すべての端点について処理が終了していなけれ
ば、ステップS1240に戻って処理を繰り返す。これ
により、点D’から点C’に向ってX座標を1ずつ変え
ていったときに、誤差増分Δe2の大きさに応じて上記
のような処理が繰り返される。誤差増分Δe2が1/2
より大きい場合に、次のライン番号に変更されていく。
以上のステップS1250〜ステップS1266を実行
することにより、辺D’C’のように元となる辺DCよ
りも長い辺に、貼り付けるラインの端点を割り当てる場
合の各ライン端点の位置が決定される。
【0102】ここで、図27の場合(辺D’C’のよう
に元となる辺ABよりも長い辺に、ラインの一方の端点
を割り当てる場合)の具体例について説明する。図27
(a)は変形前のラインの一方の端点となる辺DCを示
し、図27(b)は貼り付けるラインの一方の端点とな
る辺D’C’の様子を示し、さらに図27(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.8
4≧(1/2)となる。これにより、ライン番号を1進
める(ライン1になる:図27(c)参照)。したがっ
て、辺D’C’上の点にはライン1の端点が割り当て
られる(図27(b)参照)。このとき、選択誤差eを
次のように補正する。 e=0.84−1=−0.16<1/2
【0103】同様に、辺D’C’上の点にはライン2
の端点が、点にはライン3の端点が割り当てられる
(図27(b)参照)。ライン3を割り当てて選択誤差
eを補正して時点で、選択誤差eは−0.48になって
いる。ここまでの選択誤差e=−0.48に再び誤差増
分Δe=0.84を加えると、e=−0.48+0.8
4=0.36<(1/2)になるので、ライン3を点
にもう一度貼り付ける(図27(c)参照)。このと
き、選択誤差eは補正しない。以上の処理を繰り返すこ
とにより、辺D’C’に分割された元の水平ライン内の
どのラインの端点を割り当てるかが決まる。ライン端点
処理が終わった時点における端点バッファへの格納デー
タは図38に示すようになる。図38では、辺A’B’
上のライン0〜ライン11の12個の端点位置が座標に
よって端点バッファに記憶される。また、辺D’C’上
のライン0〜ライン11(そのうちライン3とライン8
は2つある)の14個の端点位置が座標によって端点バ
ッファに記憶される。
【0104】ライン描画処理のサブルーチン さて、その後はこのようにして求めた辺A’B’上に一
方のラインの端点を持ち、辺D’C’上に他方の端点を
持つような複数のラインに元画像データ(矩形ABC
D)の対応するラインを順番に貼り付けていけば画像変
形が行える。ただし、このとき転送先と転送元ではライ
ンの長さ(ピクセル数)が異なるので、ライン毎に拡大
あるいは縮小をしながら貼り付けていくことになる。そ
こで、続いて前述の図21に示したステップS1108
のラインの描画処理のサブルーチンについて説明する。
図35はラインの描画処理を示すサブルーチンのフロー
チャートである。まず、貼り付けるラインの位置を求め
る処理から説明する。具体例としては、後にライン0の
貼り付け位置を求める方法を説明をする。他のラインの
貼り付け位置についても同様である。まず、ステップS
1300で座標決定用誤差e1、ドット選択用誤差e
3、現在ドット番号をすべて[0]に初期設定する。座
標決定用誤差e1とは、ここではラインの描画位置を決
めるときに用いる座標決定用誤差のことである。ドット
選択用誤差e3とは、ラインに割り当てるドットを選択
するときに用いるドット選択用誤差のことである。これ
により、最初は各誤差が[0]になる。
【0105】次いで、ステップS1302で辺A’B’
上の端点の座標をCPU31の内部レジスタ31aにあ
る現在座標というエリアに格納する(図32参照)。な
お、ドット選択処理の過程で使用される関連の格納エリ
アとしては、ドット選択用誤差e3のエリア、ドット選
択用誤差増分Δe3のエリア、現在ドット番号のエリア
が用いられる。次いで、ステップS1304でY方向の
ピクセル数がX方向のピクセル数より多いか否かを判別
する。いま、ライン0を貼り付けるため各ドットの位置
を求める場合の具体例は図28に示される。図28
(a)は変形前のラインADを示し、図28(b)は変
形後のライン辺A’D’の様子を示し、さらに図28
(c)は辺A’D’におけるX方向およびY方向のピク
セル数の変化を示している。この例に対応させて考える
と、辺A’D’はY方向に10ピクセル、X方向に2ピ
クセルに渡って描画されるので、ステップS1304の
判別結果はYESとなり、このケースではステップS1
306に進む。一方、逆のケースではNOに分岐して図
24に示すステップS1328に進む。また、この場
合、図28に示すケースでは点A’から点D’に向って
X座標を1ずつ変えていったときにY座標の変化する位
置を求めると、そのとき変化した座標がラインA’D’
を貼り付けする位置となる。したがって、無条件に位置
の決る始点(点A’)を除く9個のドットを打つときに
は、X座標の変化する位置としてX座標が変化する1箇
所を求めることになる。
【0106】ステップS1306に進むと、座標決定用
誤差増分Δe1を(Xピクセル数−1)/(Yピクセル
数−1)に初期設定するとともに、ドット選択誤差増分
Δe3を(転送元ドット数−1)/(転送先ドット数−
1)に初期設定する。ステップS1300〜ステップS
1306の処理により必要な初期設定が完了する。次い
で、ステップS1308で現在座標に描画されていなけ
れば、現在ドット番号のドットを描画する。これによ
り、該当するラインの最初の点がドットで描画され
る。次いで、ステップS1310で現在座標のY座標を
変更する。次いで、ステップS1312で座標決定用誤
差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)であれば、ステップS13
14に進んで次に打つ点の座標(次の現在座標に相当)
のX座標を変更する。これは、選択誤差に誤差増分を加
え、その結果が1/2より大きいか小さいかによって処
理を選択するもので、選択誤差が1/2以上のときに誤
差を補正する。
【0107】このようにすると、点A’から点D’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、Y座標の変化する位置が滑らかにつなが
ることになる。次いで、ステップS1316で誤差補正
を行い、e1=e1−1とする。これは、選択誤差が1
/2以上になって次の座標を変更したので、1を減算す
ることにより、再び次の現在座標から誤差増分Δeを加
えて同様の判別を始めるためである。その後、ステップ
S1318に進む。また、誤差増分Δe1を加えた結果
e1がe1<(1/2)であれば、ステップS131
4、ステップS1316をジャンプしてステップS13
18に進む。このときは、次に打つ点のX座標は元のま
まにする。また、この場合は選択誤差e1は補正しな
い。以上のステップS1310〜ステップS1316を
実行することにより、Y方向のピクセル数がX方向のピ
クセル数より多い場合における該当するラインの貼り付
け位置が決定される。
【0108】一方、上記ステップS1304でY方向の
ピクセル数がX方向のピクセル数より小さいときは図3
7のステップS1328に進み、今度はX座標の方を変
更する処理を行う。すなわち、ステップS1328で座
標決定用誤差増分Δe1を(Yピクセル数−1)/(X
ピクセル数−1)に初期設定するとともに、ドット選択
誤差増分Δe3を(転送元ドット数−1)/(転送先ド
ット数−1)に初期設定する。次いで、ステップS13
30で現在座標に描画されていなければ、現在ドット番
号のドットを描画する。これにより、該当するラインの
最初の点がドットで描画される。次いで、ステップS
1332で現在座標のX座標を変更する。次いで、ステ
ップS1334で座標決定用誤差e1についての判別を
以下のようにして行う。
【0109】すなわち、選択誤差(初期値=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)であ
れば、ステップS1336に進んで次に打つ点の座標
(次の現在座標に相当)のY座標を変更する。これは、
選択誤差に誤差増分を加え、その結果が1/2より大き
いか小さいかによって処理を選択するもので、選択誤差
が1/2以上のときに誤差を補正する。
【0110】このようにすると、点A’から点D’に向
ってX座標を1ずつ変えていったときに、少なくとも誤
差増分Δe1が1の半分より大きい場合に、次の座標を
変更するので、Y座標の変化する位置が滑らかにつなが
ることになる。次いで、ステップS1340で誤差補正
を行い、e1=e1−1とする。これは、選択誤差が1
/2以上になって次の座標を変更したので、1を減算す
ることにより、再び次の現在座標から誤差増分Δeを加
えて同様の判別を始めるためである。その後、ステップ
S1342に進む。また、誤差増分Δe1を加えた結果
e1がe1<(1/2)であれば、ステップS133
8、ステップS1340をジャンプしてステップS13
42に進む。このときは、次に打つ点のX座標は元のま
まにする。また、この場合は選択誤差e1は補正しな
い。以上のステップS1332〜ステップS1340を
実行することにより、Y方向のピクセル数がX方向のピ
クセル数より小さい場合における該当するラインの貼り
付け位置が決定される。
【0111】なお、上記処理は前述した図34に示すス
テップS1210〜ステップS1216と同様の処理内
容であるが、図34のルーチンに比べてXとYが逆にな
っている部分がある。これは、X方向とY方向のピクセ
ル数の多い方を基準として考えているからである。図3
4のルーチンではピクセル数の多いY座標を基準として
考え、Y座標を1つずつ変えていったときに、X座標が
どう変化するかを決定したのに対して、図37のルーチ
ンではピクセル数の多いX座標を基準として考え、X座
標を1つずつ変えていったときに、Y座標がどう変化す
るかを決定している。他のラインの貼り付け位置につい
ても、同様の方法で求める処理が行われる。
【0112】以上で、各ラインの貼り付け位置が求まっ
たので、次に、元となる水平ドットラインのドット内の
うち、どのドットを割り当てる(つまり、ドットを選択
する)かを求める処理内容を説明する。まず、ドット選
択の処理として示されるステップS1318以降の処理
で、転送先ラインのピクセル数が転送元ラインのピクセ
ル数より少ないとき、つまりラインを縮小する方法を説
明する。この方法は、ドット選択の処理であるステップ
S1318〜ステップS1326で示される。転送元ラ
インの最初のドット(ドット0)を無条件に選択するも
のとすると、その他のドットの選択の方法は以下のよう
になる。すなわち、まずステップS1318で選択誤差
(初期値=0)eを決め、選択誤差eに誤差増分Δeを
加える(e=e+Δe)。Δeは(転送元のドット数−
1)/(転送先のドット数−1)である。なお、ここで
は、ドット選択用であるからeをe3とし、ΔeをΔe
3として処理をする。そうすると、e3=e3+Δe3
となる。
【0113】次いで、この値が1/2より大きくなった
か否かをステップS1320で判別する。そして、誤差
増分Δe3を加えた結果e3がe3≧(1/2)であれ
ば、ステップS1322に進んで現在ドット番号(転送
元ラインのドット番号)を[1]だけインクリメントす
る(つまり、次のドット番号に進める)。これは、選択
誤差に誤差増分を加え、その結果が1/2より大きいか
小さいかによって処理を選択するもので、選択誤差が1
/2以上のときに誤差を補正する。転送元ラインのドッ
ト番号を1進めることにより、辺AD上で次に選択すべ
き転送元ラインのドット番号が割り当てられる。
【0114】このようにすると、点Aから点Dに向って
X座標を1ずつ変えていったときに、少なくとも誤差増
分Δe3が1の半分より大きい場合に、次のドット番号
に変更するので、ドットの変化する位置が滑らかにつな
がることになる。次いで、ステップS1324で誤差補
正を行い、e3=e3−1とする。これは、選択誤差が
1/2以上になって次のドット番号を変更したので、1
を減算することにより、再び次の現在ドット番号から誤
差増分Δeを加えて同様の判別を始めるためである。そ
の後、ステップS1344に戻ってステップS1344
〜ステップS1348のループを繰り返す。そして、ス
テップS1320でe3が1/2未満になると、ステッ
プS1350に分岐する。
【0115】一方、ステップS1320でe3が当初か
ら1/2未満のときはステップS1326にジャンプす
る。ステップS1326ではすべてのドットについて処
理したか否かを判別し、すべてのドットについて処理が
終了していなければ、ステップS1330に戻って同様
の処理を繰り返す。したがって、誤差増分Δe3が1の
半分より大きくなった時点ではステップS1350へジ
ャンプせず、ステップS1346の方へ進むことにな
る。このように、誤差増分Δe3を加えた結果(選択誤
差)e3がe3<(1/2)であれば、転送先ラインの
次のドットには1つ前のドットと同じデータが再び転送
される。このとき、水平ドット番号と選択誤差e3の変
更は行われない。
【0116】ここで、ドット選択の具体例について図3
0を参照して説明する。図30(a)は変形前の転送元
ラインのドットの様子を示し、図30(b)は変形後の
転送先ラインのドットの様子を示し、さらに図30
(c)は転送ラインにおけるX方向およびY方向のピク
セル数の変化を示している。この例は、転送先ラインの
ピクセル数が転送元ラインのピクセル数より多いとき、
つまりラインを拡大する処理に相当するものである。こ
の例に対応させて考えると、転送元ラインのドット数は
16個、転送先ラインのドット数は17個なので、転送
先の17個のドットのうち1個は1つ前のドットと同じ
データを転送することになる。転送元ラインの最初のド
ット(ドット0)を無条件に転送するものとすると、そ
の他のドットの転送の処理は次のようにして行われる。
【0117】まず、最初にドット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が転送される(図30(b)、図30
(c)参照)。
【0118】次いで、同様にここまでの選択誤差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が転送される(図3
0(b)、図30(c)参照)。
【0119】以後、同様の処理を行うと、点にはドッ
ト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が再び転送される(図30
(b)、図30(c)参照)。以上の処理を繰り返すこ
とにより、転送先ラインの16個のドットから1個のド
ット(ドット7)が2回転送されて、転送先ラインの1
7個のドットが決定される。このようにして、転送先ラ
インのピクセル数が転送元ラインのピクセル数より多い
場合に、ラインを拡大する処理が行われる。
【0120】上述した各プログラムを実行することによ
り、変形前の画像データのラインを変形後の画像データ
として貼り付ける処理が行われるが、このときラインの
貼り付けは辺A’B’と辺D’C’のうち、長い方の辺
が有するピクセル数分だけ行われる。例えば、図26の
例では辺A’B’と辺D’C’の各ピクセル数を比較す
ると、辺A’B’のピクセル数が11、辺D’C’のピ
クセル数が14であるから、辺D’C’のピクセル数分
(=14)だけ行われる。具体的には、図26(b)に
示すように辺D’C’のピクセル数に対応して、ライン
0、ライン0、ライン1、ライン2、ライン3、ライン
3’、ライン4、ライン5、ライン6、ライン7、ライ
ン8、ライン8’、ライン9、ライン10、ライン11
の14回ラインの貼り付けるが行われる。そして、各ラ
インを貼り付けた最終的な状態は図31(b)のように
示される。なお、図31(a)は変形前の画像データの
ラインである。なお、図23(a)、(b)に示すよう
に貼り付けた2つのラインが重なる部分が生じるが、本
実施例では先に書かれたものを優先するようにしてい
る。また、この他に、後に書かれたものを優先する方
法、あるいは重なった部分では2つのドットデータの色
コードを合成する毎に、その値を加えて1/2する等の
処理方法もある。ドットデータの色コードを合成する場
合には、例えばR(赤成分)、G(緑成分)、B(青成
分)というように色コードを分ける。
【0121】なお、上記各実施例ではビット配列形式の
画像データを有する変形対象を小矩形に分割し、任意な
四角形に変形しているが、これに限らず、例えば変形対
象を複数の小六角形に分割し、各六角形を例えば所定の
変形処理手順に従って異なる小六角形にそれぞれ変形す
ることにより、変形後の画像データを作成するようにし
てもよい。また、ビット配列形式の画像データを有する
変形対象を分割する形状は上記の2種類に限るものでは
なく、本発明の目的の範囲内が各種の変形が可能であ
る。さらに、本発明の適用はアニメーション、ゲーム等
のキャラクター又は背景データ等に限るものではなく、
他の分野、他の画像データにも適用できる。
【0122】
【発明の効果】本発明によれば、変形対象を複数の小多
角形に分割し、各小多角形を所定の変形処理に従って異
なる小多角形にそれぞれ変形し、このとき小多角形の変
形処理では、変形対象の外枠を構成する任意の辺を選択
し、選択した辺上にある複数個の小多角形の頂点を、所
定の曲線パラメータに従い、少なくとも変形後に再び外
枠を構成するような任意の位置に移動したとき、前記任
意の小多角形の移動に応じて他の小多角形の頂点を移動
させ、移動した他の小多角形の頂点を前記任意の小多角
形の移動後の頂点に基づいて算出し、この算出した頂点
に対応して各小多角形を変形し、さらに変形前の小多角
形に含まれるビット配列形式の画像データの配列を、各
小多角形毎に、所定のデータ変換処理に従って変形後の
小多角形のデータに対応するように順次変更して変更後
の全体画像を作成しているので、以下の効果を得ること
ができる。 変形対象の有する画像データの配列は、各小多角形毎
に変更処理が行われるので、従来のように全く異なる全
体の画像データを予め持つ必要がなく、少ないメモリ容
量で、ビット配列形式の画像を自由に変形することがで
きる。 変形対象を複数の小多角形に分割し、各小多角形毎に
変形処理が行われるので、変形に自由度があり、予めメ
モリに多くのデータを持たなくても、画像を滑らかに変
形することができる。 特に、変形対象の外枠を構成する任意の辺にある任意
の小多角形の頂点を曲線パラメータに従って移動させる
変形法を使用することにより、曲線パラメータとして数
点(例えば、4点)分の座標だけを持っていればよく、
変形後のすべての小多角形の頂点の位置データ(例え
ば、座標)を持っておく必要がない。よって少ない変形
データで滑らかな画像変形を行わせることができる。 この変形法を用いると、変形対象の外枠の形を変える
ので、画像の外形(例えば、大きさ)を容易に変えるこ
とができる。
【0123】また、他の請求項記載の発明によれば、小
多角形の変形処理において、変形対象の外枠を構成する
向い合う複数の辺を選択し、選択したそれぞれの辺上に
ある複数個の小多角形の頂点を、それぞれの辺に対応す
る所定の曲線パラメータに従い、少なくとも変形後に再
び向い合う複数の辺を構成するような任意の位置に移動
したときであっても、他の小多角形の頂点を複数個の小
多角形の移動後の頂点に基づいて算出し、この算出した
頂点に対応して各小多角形を変形しているので、同様に
変形後のすべての小多角形の頂点の位置データ(例え
ば、座標)を持っておく必要がなく、少ない変形データ
で滑らかな画像変形を行わせることができる。また、こ
の変形法を用いると、変形対象の外枠の形を変えるの
で、画像の外形(例えば、大きさ)を変えることができ
る。
【図面の簡単な説明】
【図1】本発明による多角形分割変形方法の原理を説明
する図である。
【図2】本発明による多角形分割変形方法の小矩形から
任意の四角形への変形例を示す図である。
【図3】本発明に係る画像変形装置の第1実施例の構成
図である。
【図4】同実施例の変形対象となる画像データを多数の
小矩形に分割する例を示す図である。
【図5】同実施例のCPUの内部レジスタへのデータの
格納例を示す図である。
【図6】同実施例の画像変形処理のメインプログラムを
示すフローチャートである。
【図7】同実施例の小矩形変形処理のサブルーチンを示
すフローチャートである。
【図8】同実施例のライン貼り付け法を説明する図であ
る。
【図9】同実施例の変形対象の変形処理を説明する図で
ある。
【図10】同実施例のデータの格納例を示す図である。
【図11】同実施例の格子点座標算出処理のルーチンを
示すフローチャートである。
【図12】同実施例のベジェ曲線発生方法を説明する図
である。
【図13】本発明の第2実施例の変形対象の変形処理を
説明する図である。
【図14】同実施例のデータの格納例を示す図である。
【図15】本発明の第3実施例の変形対象の変形処理を
説明する図である。
【図16】同実施例のデータの格納例を示す図である。
【図17】同実施例の格子点座標算出処理のルーチンを
示すフローチャートである。
【図18】同実施例の格子点座標算出処理のルーチンを
示すフローチャートである。
【図19】本発明の第4実施例の変形対象の変形処理を
説明する図である。
【図20】同実施例のデータの格納例を示す図である。
【図21】上記各実施例のライン貼り付け処理のサブル
ーチンを示すフローチャートである。
【図22】上記各実施例の画像データの変形例を示す図
である。
【図23】上記各実施例の画像データの変形例を示す図
である。
【図24】上記各実施例の画像データの変形例を示す図
である。
【図25】上記各実施例の画像データの変形例を示す図
である。
【図26】上記各実施例の画像データの変形例を示す図
である。
【図27】上記各画像データの変形例を示す図である。
【図28】上記各実施例の画像データの変形例を示す図
である。
【図29】上記各実施例の画像データの変形例を示す図
である。
【図30】上記各実施例の画像データの変形例を示す図
である。
【図31】上記各実施例の画像データの変形例を示す図
である。
【図32】上記各実施例のCPUの内部レジスタへのデ
ータの格納例を示す図である。
【図33】上記各実施例のライン描画の一例を説明する
図である。
【図34】上記各実施例のライン端点処理のサブルーチ
ンの一部を示すフローチャートである。
【図35】上記各実施例のライン端点処理のサブルーチ
ンの一部を示すフローチャートである。
【図36】上記各実施例のライン描画処理のサブルーチ
ンの一部を示すフローチャートである。
【図37】上記各実施例のライン描画処理のサブルーチ
ンの一部を示すフローチャートである。
【図38】上記各実施例の端点バッファへのデータの格
納例を示す図である。
【符号の説明】
31 CPU(分割手段、変形手段、画像データ作成手
段、座標変換手段、データ変換手段、画像変形制御手
段) 32 入力操作子(変形態様指定手段) 33 記憶装置(記憶手段) 34 VDP 35 VRAM 36 TVディスプレイ(表示手段) 41 ビット配列形式の画像データ 42 変形前の格子点座標 43、44 変形後の格子点座標 51 第1の変形スイッチ 52 第2の変形スイッチ
フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 G09G 5/36 520 D 9471−5G H04N 5/262 9365−5L G06F 15/72 350

Claims (20)

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

Priority Applications (1)

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

Applications Claiming Priority (1)

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

Publications (1)

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

Family

ID=18390811

Family Applications (1)

Application Number Title Priority Date Filing Date
JP5347524A Abandoned JPH07182499A (ja) 1993-12-24 1993-12-24 画像変形方法およびその装置

Country Status (1)

Country Link
JP (1) JPH07182499A (ja)

Similar Documents

Publication Publication Date Title
US6867787B1 (en) Character generator and character generating method
JP2919428B2 (ja) 画像変形装置
JPH05127654A (ja) 文字図形変形処理装置
US6124859A (en) Picture conversion method and medium used therefor
JP3642259B2 (ja) マルチスクリーン表示装置
JP3463125B2 (ja) 画像変形方法およびその装置
JPH07182499A (ja) 画像変形方法およびその装置
JPH07200800A (ja) 画像変形方法およびその装置
JPH07192122A (ja) 画像変形方法およびその装置
JP4056118B2 (ja) 画像処理装置
US20060104544A1 (en) Automatic image feature embedding
JPH09106453A (ja) 画像の変形方法
JPH07182501A (ja) 画像変形方法およびその装置
JPH07182497A (ja) 画像変形方法およびその装置
JPH07192121A (ja) 画像変形方法およびその装置
JPH08110952A (ja) テクスチャマッピング装置
JP3191739B2 (ja) 多角形描画方法及び装置
JP3170419B2 (ja) 画像の影付け方法
JP3533472B2 (ja) 画像変形方法およびその装置
JP4863306B2 (ja) ベクターイメージ描画装置、ベクターイメージ描画方法およびプログラム
JP3688765B2 (ja) 描画方法およびグラフィックス装置
JPH07182500A (ja) 画像変形方法およびその装置
JP3453410B2 (ja) 画像処理装置及びその方法
JPH0350686A (ja) 図形処理方式
JP3517982B2 (ja) 図形描画装置

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20040625