JPH07262391A - 画像処理方法およびその装置 - Google Patents
画像処理方法およびその装置Info
- Publication number
- JPH07262391A JPH07262391A JP7535394A JP7535394A JPH07262391A JP H07262391 A JPH07262391 A JP H07262391A JP 7535394 A JP7535394 A JP 7535394A JP 7535394 A JP7535394 A JP 7535394A JP H07262391 A JPH07262391 A JP H07262391A
- Authority
- JP
- Japan
- Prior art keywords
- color
- closed curve
- closed
- image
- coordinate
- 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
Links
Landscapes
- Image Generation (AREA)
Abstract
(57)【要約】
【目的】 少ないデータで、低コストに、似顔絵やアニ
メーション画像等をカラー表示する。 【構成】 カラーの似顔絵画像を作成する場合、似顔絵
選択スイッチをオンすると(ステップS12)、似顔絵
番号に対応する閉曲線データA〜Fおよびカラーデータ
A〜FをRAMにロードし(ステップS20)、まず色
を省略した複数の閉曲線A〜Fを作成し(ステップS2
2)、次いで、これらの閉曲線A〜Fの境界および内部
を塗りつぶす色を指定し、さらに各閉曲線A〜Fを色で
塗りつぶす場合の優先順位を決定する。次いで、この優
先順位に従って各閉曲線A〜Fの境界およびその内部を
指定された色で塗りつぶしてカラー画像を作成し(ステ
ップS24)、表示する(ステップS26)。これによ
り、似顔絵をカラー表示させる場合でも、ピクセル毎に
カラーデータを持つ必要がなく、単に閉曲線データとそ
のカラーデータとを持てば、画像をカラー表示すること
が可能になる。
メーション画像等をカラー表示する。 【構成】 カラーの似顔絵画像を作成する場合、似顔絵
選択スイッチをオンすると(ステップS12)、似顔絵
番号に対応する閉曲線データA〜Fおよびカラーデータ
A〜FをRAMにロードし(ステップS20)、まず色
を省略した複数の閉曲線A〜Fを作成し(ステップS2
2)、次いで、これらの閉曲線A〜Fの境界および内部
を塗りつぶす色を指定し、さらに各閉曲線A〜Fを色で
塗りつぶす場合の優先順位を決定する。次いで、この優
先順位に従って各閉曲線A〜Fの境界およびその内部を
指定された色で塗りつぶしてカラー画像を作成し(ステ
ップS24)、表示する(ステップS26)。これによ
り、似顔絵をカラー表示させる場合でも、ピクセル毎に
カラーデータを持つ必要がなく、単に閉曲線データとそ
のカラーデータとを持てば、画像をカラー表示すること
が可能になる。
Description
【0001】
【産業上の利用分野】本発明は、画像処理方法およびそ
の装置に係わり、詳しくはアニメーション、似顔絵等を
作成する際に、閉曲線の内部を塗りつぶすことで、少量
のデータによって描画を可能にした画像処理方法および
その方法を実現する装置に関する。
の装置に係わり、詳しくはアニメーション、似顔絵等を
作成する際に、閉曲線の内部を塗りつぶすことで、少量
のデータによって描画を可能にした画像処理方法および
その方法を実現する装置に関する。
【0002】
【従来の技術】従来、アニメーション、ゲーム等ではビ
ット配列形式の画像データを用いることが多く、この画
像データによりキャラクターや背景データを表示してい
る。そして、このビット配列形式の画像データはドット
で構成され、かつ各ドット毎に表示色番号あるいはパレ
ット番号を持つようになっている。すなわち、コンピュ
ータ画面上などにおいて、似顔絵やアニメーション画像
をカラー表示させるために、ピクセル毎にカラーデータ
を持っている。
ット配列形式の画像データを用いることが多く、この画
像データによりキャラクターや背景データを表示してい
る。そして、このビット配列形式の画像データはドット
で構成され、かつ各ドット毎に表示色番号あるいはパレ
ット番号を持つようになっている。すなわち、コンピュ
ータ画面上などにおいて、似顔絵やアニメーション画像
をカラー表示させるために、ピクセル毎にカラーデータ
を持っている。
【0003】
【発明が解決しようとする課題】ところで、従来の画像
処理装置の場合、コンピュータ画面上あるいはテレビ画
面上において、似顔絵やアニメーション画像をカラー表
示させるためには、ピクセル毎にカラーデータを持たな
ければならず、必然的に大量のデータが必要であるとい
う問題点があった。また、大量のデータを処理するため
のメモリ装置の容量が多くなって、この点でコスト高に
もなっていた。
処理装置の場合、コンピュータ画面上あるいはテレビ画
面上において、似顔絵やアニメーション画像をカラー表
示させるためには、ピクセル毎にカラーデータを持たな
ければならず、必然的に大量のデータが必要であるとい
う問題点があった。また、大量のデータを処理するため
のメモリ装置の容量が多くなって、この点でコスト高に
もなっていた。
【0004】そこで本発明は、少ないデータで、低コス
トに、似顔絵やアニメーション画像等をカラー表示させ
ることができる画像処理方法およびその装置を提供する
ことを目的としている。
トに、似顔絵やアニメーション画像等をカラー表示させ
ることができる画像処理方法およびその装置を提供する
ことを目的としている。
【0005】
【課題を解決するための手段】上記目的達成のため、請
求項1記載の発明による画像処理方法は、所定の画像を
色を省略した複数の閉曲線で作成し、これらの閉曲線の
境界および内部を塗りつぶす色を指定し、前記複数の閉
曲線の境界および内部を塗りつぶす場合の各閉曲線の優
先順位を決定し、この優先順位に従って各閉曲線の境界
およびその内部を指定された色で塗りつぶして所定のカ
ラー画像を作成することを特徴とする。
求項1記載の発明による画像処理方法は、所定の画像を
色を省略した複数の閉曲線で作成し、これらの閉曲線の
境界および内部を塗りつぶす色を指定し、前記複数の閉
曲線の境界および内部を塗りつぶす場合の各閉曲線の優
先順位を決定し、この優先順位に従って各閉曲線の境界
およびその内部を指定された色で塗りつぶして所定のカ
ラー画像を作成することを特徴とする。
【0006】また、好ましい態様として、例えば請求項
2記載のように、前記閉曲線は、直線あるいはベジェ曲
線のうちの1つ以上によって作成されるようにしてもよ
い。例えば請求項3記載のように、前記所定の画像を色
を省略した複数の閉曲線で作成する処理では、複数の閉
曲線を作成する閉曲線データを用い、これら複数の閉曲
線の境界およびその内部を指定された色で塗りつぶす処
理では、塗りつぶしのためのカラーデータを用いるよう
にしてもよい。例えば請求項4記載のように、前記閉曲
線を直線によって作成する処理は、直線を多数のドット
によって形成するものであり、直線の両端を形成する2
つのドット位置を決定するとともに、そのドット位置の
傾きを算出する処理と、この傾きに応じてx座標又はy
座標を1単位ずつ増加させた場合の誤差を累積する処理
と、この誤差が所定値を超えるときにのみ、次のドット
のx座標又はy座標の位置を変更するとともに、前記累
算された誤差から一定値を減算する処理と、を有するよ
うにしてもよい。
2記載のように、前記閉曲線は、直線あるいはベジェ曲
線のうちの1つ以上によって作成されるようにしてもよ
い。例えば請求項3記載のように、前記所定の画像を色
を省略した複数の閉曲線で作成する処理では、複数の閉
曲線を作成する閉曲線データを用い、これら複数の閉曲
線の境界およびその内部を指定された色で塗りつぶす処
理では、塗りつぶしのためのカラーデータを用いるよう
にしてもよい。例えば請求項4記載のように、前記閉曲
線を直線によって作成する処理は、直線を多数のドット
によって形成するものであり、直線の両端を形成する2
つのドット位置を決定するとともに、そのドット位置の
傾きを算出する処理と、この傾きに応じてx座標又はy
座標を1単位ずつ増加させた場合の誤差を累積する処理
と、この誤差が所定値を超えるときにのみ、次のドット
のx座標又はy座標の位置を変更するとともに、前記累
算された誤差から一定値を減算する処理と、を有するよ
うにしてもよい。
【0007】請求項5記載の画像処理装置は、所定の画
像を色を省略した複数の閉曲線で作成する閉曲線作成手
段と、閉曲線作成手段によって作成された閉曲線の境界
および内部を塗りつぶす色を指定する色指定手段と、前
記複数の閉曲線の境界および内部を塗りつぶす場合の各
閉曲線に対する優先順位を決定する優先順位決定手段
と、この優先順位に従って各閉曲線の境界およびその内
部を指定された色で塗りつぶして所定のカラー画像を作
成するカラー画像作成手段と、を備えたことを特徴とす
る。
像を色を省略した複数の閉曲線で作成する閉曲線作成手
段と、閉曲線作成手段によって作成された閉曲線の境界
および内部を塗りつぶす色を指定する色指定手段と、前
記複数の閉曲線の境界および内部を塗りつぶす場合の各
閉曲線に対する優先順位を決定する優先順位決定手段
と、この優先順位に従って各閉曲線の境界およびその内
部を指定された色で塗りつぶして所定のカラー画像を作
成するカラー画像作成手段と、を備えたことを特徴とす
る。
【0008】また、例えば請求項6記載のように、前記
閉曲線作成手段は、直線あるいはベジェ曲線のうちの1
つ以上によって閉曲線を作成するようにしてもよい。例
えば請求項7記載のように、前記閉曲線作成手段は、所
定の画像を構成する複数の閉曲線を閉曲線データによっ
て作成し、前記カラー画像作成手段は、複数の閉曲線の
境界およびその内部を、指定されたカラーデータに対応
する色で塗りつぶすようにしてもよい。例えば請求項8
記載のように、前記カラー画像作成手段によって作成さ
れた所定のカラー画像を表示する表示手段を、さらに有
するようにしてもよい。例えば請求項9記載のように、
前記カラー画像作成手段によって作成された所定のカラ
ー画像を印刷する印刷手段を、さらに有するようにして
もよい。例えば請求項10記載のように、前記閉曲線作
成手段は、閉曲線を多数のドットからなる直線によって
作成する場合、直線の両端を形成する2つのドット位置
を決定するとともに、そのドット位置の傾きを算出する
手段と、この傾きに応じてx座標又はy座標を1単位ず
つ増加させた場合の誤差を累積する手段と、この誤差が
所定値を超えるときにのみ、次のドットのx座標又はy
座標の位置を変更するとともに、前記累算された誤差か
ら一定値を減算する手段とを有するようにしてもよい。
閉曲線作成手段は、直線あるいはベジェ曲線のうちの1
つ以上によって閉曲線を作成するようにしてもよい。例
えば請求項7記載のように、前記閉曲線作成手段は、所
定の画像を構成する複数の閉曲線を閉曲線データによっ
て作成し、前記カラー画像作成手段は、複数の閉曲線の
境界およびその内部を、指定されたカラーデータに対応
する色で塗りつぶすようにしてもよい。例えば請求項8
記載のように、前記カラー画像作成手段によって作成さ
れた所定のカラー画像を表示する表示手段を、さらに有
するようにしてもよい。例えば請求項9記載のように、
前記カラー画像作成手段によって作成された所定のカラ
ー画像を印刷する印刷手段を、さらに有するようにして
もよい。例えば請求項10記載のように、前記閉曲線作
成手段は、閉曲線を多数のドットからなる直線によって
作成する場合、直線の両端を形成する2つのドット位置
を決定するとともに、そのドット位置の傾きを算出する
手段と、この傾きに応じてx座標又はy座標を1単位ず
つ増加させた場合の誤差を累積する手段と、この誤差が
所定値を超えるときにのみ、次のドットのx座標又はy
座標の位置を変更するとともに、前記累算された誤差か
ら一定値を減算する手段とを有するようにしてもよい。
【0009】
【作用】本発明では、カラーの画像(例えば、似顔絵あ
るいはアニメーション画像)を作成する場合、まず色を
省略した複数の閉曲線で画像を作成し、次いで、これら
の閉曲線の境界および内部を塗りつぶす色を指定し、さ
らに各閉曲線を色で塗りつぶす場合の優先順位を決定す
る。次いで、この優先順位に従って各閉曲線の境界およ
びその内部を指定された色で塗りつぶしてカラー画像を
作成する。したがって、例えば似顔絵をカラー表示させ
る場合でも、従来のようにピクセル毎にカラーデータを
持つ必要がなく、単に閉曲線データとカラーデータとを
持てば画像をカラー表示することが可能になる。その結
果、少ないデータ量で、低コストに、似顔絵やアニメー
ション画像等をカラー表示させることが可能になる。
るいはアニメーション画像)を作成する場合、まず色を
省略した複数の閉曲線で画像を作成し、次いで、これら
の閉曲線の境界および内部を塗りつぶす色を指定し、さ
らに各閉曲線を色で塗りつぶす場合の優先順位を決定す
る。次いで、この優先順位に従って各閉曲線の境界およ
びその内部を指定された色で塗りつぶしてカラー画像を
作成する。したがって、例えば似顔絵をカラー表示させ
る場合でも、従来のようにピクセル毎にカラーデータを
持つ必要がなく、単に閉曲線データとカラーデータとを
持てば画像をカラー表示することが可能になる。その結
果、少ないデータ量で、低コストに、似顔絵やアニメー
ション画像等をカラー表示させることが可能になる。
【0010】
【実施例】以下、図面を参照して本発明の実施例につい
て説明する。似顔絵作成装置の構成 図1は本発明に係る画像処理方法を実現する似顔絵作成
装置(画像処理装置に相当)の一実施例を示す構成図で
ある。図1において、似顔絵作成装置は大きく分けてC
PU1、ROM2、RAM3、スイッチ部4、表示部
5、カラープリンタ6および各部を結ぶバス7によって
構成されている。CPU1は装置全体を制御するもの
で、スイッチ部4から描画指令が入力されると、その指
令情報に対応すべくROM2に格納されている制御プロ
グラムに基づいて似顔絵を作成するために必要な処理
(例えば、似顔絵の輪郭や各部位の描画に必要な直線又
はベジェ曲線のデータ計算および塗りつぶしの処理)を
行う。また、CPU1は内部レジスタを有しており、内
部レジスタにフラグやポインタの値を格納する。
て説明する。似顔絵作成装置の構成 図1は本発明に係る画像処理方法を実現する似顔絵作成
装置(画像処理装置に相当)の一実施例を示す構成図で
ある。図1において、似顔絵作成装置は大きく分けてC
PU1、ROM2、RAM3、スイッチ部4、表示部
5、カラープリンタ6および各部を結ぶバス7によって
構成されている。CPU1は装置全体を制御するもの
で、スイッチ部4から描画指令が入力されると、その指
令情報に対応すべくROM2に格納されている制御プロ
グラムに基づいて似顔絵を作成するために必要な処理
(例えば、似顔絵の輪郭や各部位の描画に必要な直線又
はベジェ曲線のデータ計算および塗りつぶしの処理)を
行う。また、CPU1は内部レジスタを有しており、内
部レジスタにフラグやポインタの値を格納する。
【0011】ROM2はCPU1の制御プログラムを格
納しているとともに、後述の図3に示すように似顔絵の
輪郭や顔の各部位を表す閉曲線作成データ、閉曲線カラ
ーデータ等のパラメータを予め格納している。RAM3
はCPU1が演算処理を行う際のワークエリアとして用
いられ、データを一時的に記憶する。スイッチ部4はオ
ペレータによって操作されるもので、似顔絵を選択する
ときに操作される似顔絵選択スイッチおよび似顔絵作成
処理を開始するときに操作されるスタートスイッチを有
している。なお、各操作スイッチは単独操作のプッシュ
スイッチでもよいし、あるいは複数のスイッチからなる
スイッチボード、キーボード等でもよい。また、スイッ
チ部4としてスイッチボード等の他に、マウス、トラッ
クボール等を用いてもよい。表示部(表示手段)5はC
PU1の演算処理によって作成される似顔絵をそのプロ
セス毎に表示するもので、例えば画像信号発生回路(Vi
deo Display Prosseser:以下VDPという)、VRA
M、TVディスプレイを含んで構成される。なお、画面
の表示はTVディスプレイではなく、カラー表示が可能
なものであれば、LCDでもよい。カラープリンタ(印
刷手段)6は所定の用紙に画像を印刷するもので、例え
ば表示部5に表示された似顔絵をカラーで印刷すること
が可能である。上記CPU1、ROM2およびRAM3
は全体として閉曲線作成手段21、色指定手段22、優
先順位決定手段23、カラー画像作成手段24を構成す
る。
納しているとともに、後述の図3に示すように似顔絵の
輪郭や顔の各部位を表す閉曲線作成データ、閉曲線カラ
ーデータ等のパラメータを予め格納している。RAM3
はCPU1が演算処理を行う際のワークエリアとして用
いられ、データを一時的に記憶する。スイッチ部4はオ
ペレータによって操作されるもので、似顔絵を選択する
ときに操作される似顔絵選択スイッチおよび似顔絵作成
処理を開始するときに操作されるスタートスイッチを有
している。なお、各操作スイッチは単独操作のプッシュ
スイッチでもよいし、あるいは複数のスイッチからなる
スイッチボード、キーボード等でもよい。また、スイッ
チ部4としてスイッチボード等の他に、マウス、トラッ
クボール等を用いてもよい。表示部(表示手段)5はC
PU1の演算処理によって作成される似顔絵をそのプロ
セス毎に表示するもので、例えば画像信号発生回路(Vi
deo Display Prosseser:以下VDPという)、VRA
M、TVディスプレイを含んで構成される。なお、画面
の表示はTVディスプレイではなく、カラー表示が可能
なものであれば、LCDでもよい。カラープリンタ(印
刷手段)6は所定の用紙に画像を印刷するもので、例え
ば表示部5に表示された似顔絵をカラーで印刷すること
が可能である。上記CPU1、ROM2およびRAM3
は全体として閉曲線作成手段21、色指定手段22、優
先順位決定手段23、カラー画像作成手段24を構成す
る。
【0012】次に、作用を説明する。メインプログラム 図2は似顔絵作成処理のメインプログラムを示すフロー
チャートである。このプログラムがスタートすると、ま
ずステップS10でイニシャライズ(初期化処理)を行
う。これにより、例えばCPU1内の各種レジスタのイ
ニシャライズ、RAM3のワークエリアのクリア、サブ
ルーチンのイニシャライズ、フラグのリセット等が行わ
れる。次いで、ステップS12でスイッチ部4の似顔絵
選択スイッチがオンしているか否かを判別する。似顔絵
選択スイッチがオンしていなければ、ステップS26の
表示処理にジャンプする。これにより、最初のルーチン
では、例えば初期画面が表示部5に表示される。また、
既に似顔絵が表示されている場合には、以前の似顔絵が
変更されずに表示されることになる。
チャートである。このプログラムがスタートすると、ま
ずステップS10でイニシャライズ(初期化処理)を行
う。これにより、例えばCPU1内の各種レジスタのイ
ニシャライズ、RAM3のワークエリアのクリア、サブ
ルーチンのイニシャライズ、フラグのリセット等が行わ
れる。次いで、ステップS12でスイッチ部4の似顔絵
選択スイッチがオンしているか否かを判別する。似顔絵
選択スイッチがオンしていなければ、ステップS26の
表示処理にジャンプする。これにより、最初のルーチン
では、例えば初期画面が表示部5に表示される。また、
既に似顔絵が表示されている場合には、以前の似顔絵が
変更されずに表示されることになる。
【0013】似顔絵選択スイッチがオンしている場合に
は、ステップS14に進んで似顔絵番号を変更する。こ
こで、ROM2には図3に示すように(1)から(n)
までのn種類の似顔絵データが格納されており、これら
の似顔絵データは似顔絵の輪郭や顔の各部位を表す閉曲
線作成データA〜Fと、閉曲線の色を指定する閉曲線カ
ラーデータA〜Fとに区分されて所定のエリアに格納さ
れている。なお、閉曲線カラーデータA〜Fは、閉曲線
作成データA〜Fのそれぞれの色(閉曲線の境界および
内部を塗りつぶす色)を指定するものである。したがっ
て、例えば似顔絵(1)〜(n)のデータは男の似顔絵
や女の似顔絵に対応させて、自由に設定しておくことが
可能である。
は、ステップS14に進んで似顔絵番号を変更する。こ
こで、ROM2には図3に示すように(1)から(n)
までのn種類の似顔絵データが格納されており、これら
の似顔絵データは似顔絵の輪郭や顔の各部位を表す閉曲
線作成データA〜Fと、閉曲線の色を指定する閉曲線カ
ラーデータA〜Fとに区分されて所定のエリアに格納さ
れている。なお、閉曲線カラーデータA〜Fは、閉曲線
作成データA〜Fのそれぞれの色(閉曲線の境界および
内部を塗りつぶす色)を指定するものである。したがっ
て、例えば似顔絵(1)〜(n)のデータは男の似顔絵
や女の似顔絵に対応させて、自由に設定しておくことが
可能である。
【0014】ステップS14で、例えば似顔絵番号=
(2)が選択された場合には、後述のようにROM2に
格納されている似顔絵番号(2)に対応する似顔絵デー
タ(すなわち、閉曲線作成データおよび閉曲線カラーデ
ータ)が読み出されることになる。次いで、ステップS
16でスイッチ部4のスタートスイッチがオンしたか否
かを判別する。スタートスイッチがオンしていなけれ
ば、ステップS26の表示処理にジャンプする。これに
より、最初のルーチンでは、例えば初期画面が表示部5
に表示されたままの状態となる。また、既に似顔絵が表
示されている場合には、以前の似顔絵が変更されずに表
示されたままである。スタートスイッチがオンした場合
には、ステップS18に進んで表示部5の表示をクリア
する。これにより、最初のルーチンでは初期画面がクリ
アされる。また、既に似顔絵が表示されている場合に
は、以前の似顔絵がクリアされる。次いで、ステップS
20で似顔絵番号に対応する閉曲線作成データA〜Fお
よび閉曲線カラーデータA〜FをROM2から読み出し
て、RAM3にロードする。
(2)が選択された場合には、後述のようにROM2に
格納されている似顔絵番号(2)に対応する似顔絵デー
タ(すなわち、閉曲線作成データおよび閉曲線カラーデ
ータ)が読み出されることになる。次いで、ステップS
16でスイッチ部4のスタートスイッチがオンしたか否
かを判別する。スタートスイッチがオンしていなけれ
ば、ステップS26の表示処理にジャンプする。これに
より、最初のルーチンでは、例えば初期画面が表示部5
に表示されたままの状態となる。また、既に似顔絵が表
示されている場合には、以前の似顔絵が変更されずに表
示されたままである。スタートスイッチがオンした場合
には、ステップS18に進んで表示部5の表示をクリア
する。これにより、最初のルーチンでは初期画面がクリ
アされる。また、既に似顔絵が表示されている場合に
は、以前の似顔絵がクリアされる。次いで、ステップS
20で似顔絵番号に対応する閉曲線作成データA〜Fお
よび閉曲線カラーデータA〜FをROM2から読み出し
て、RAM3にロードする。
【0015】ここで、RAM3には図4に示すような各
種のワークエリアが設けられており、ROM2から読み
出されたデータは対応するエリアにロードされる。RA
M3のワークエリアを説明すると、以下のようになって
いる。 似顔絵選択NO.……似顔絵選択スイッチによって選択
された似顔絵番号を格納するエリア 閉曲線A作成データ……閉曲線Aを作成するためのデー
タを格納するエリア 閉曲線B作成データ……閉曲線Bを作成するためのデー
タを格納するエリア 閉曲線C作成データ……閉曲線Cを作成するためのデー
タを格納するエリア 閉曲線D作成データ……閉曲線Dを作成するためのデー
タを格納するエリア 閉曲線E作成データ……閉曲線Eを作成するためのデー
タを格納するエリア 閉曲線F作成データ……閉曲線Fを作成するためのデー
タを格納するエリア
種のワークエリアが設けられており、ROM2から読み
出されたデータは対応するエリアにロードされる。RA
M3のワークエリアを説明すると、以下のようになって
いる。 似顔絵選択NO.……似顔絵選択スイッチによって選択
された似顔絵番号を格納するエリア 閉曲線A作成データ……閉曲線Aを作成するためのデー
タを格納するエリア 閉曲線B作成データ……閉曲線Bを作成するためのデー
タを格納するエリア 閉曲線C作成データ……閉曲線Cを作成するためのデー
タを格納するエリア 閉曲線D作成データ……閉曲線Dを作成するためのデー
タを格納するエリア 閉曲線E作成データ……閉曲線Eを作成するためのデー
タを格納するエリア 閉曲線F作成データ……閉曲線Fを作成するためのデー
タを格納するエリア
【0016】閉曲線Aカラーデータ……閉曲線Aを塗り
つぶす色(カラー)を指定するデータを格納するエリア 閉曲線Bカラーデータ……閉曲線Bを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Cカラーデータ……閉曲線Cを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Dカラーデータ……閉曲線Dを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Eカラーデータ……閉曲線Eを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Fカラーデータ……閉曲線Fを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア
つぶす色(カラー)を指定するデータを格納するエリア 閉曲線Bカラーデータ……閉曲線Bを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Cカラーデータ……閉曲線Cを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Dカラーデータ……閉曲線Dを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Eカラーデータ……閉曲線Eを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア 閉曲線Fカラーデータ……閉曲線Fを塗りつぶす色(カ
ラー)を指定するデータを格納するエリア
【0017】カラー状態フラグ(A)……閉曲線Aをカ
ラー設定エリアに指定(つまり、色で塗りつぶす)する
か否かを決定するフラグを格納するエリア カラー状態フラグ(B)……閉曲線Bをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(C)……閉曲線Cをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(D)……閉曲線Dをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(E)……閉曲線Eをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(F)……閉曲線Fをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア バックグラウンドカラー番号……背景となる部分を塗り
つぶす色(カラー)を指定するデータを格納するエリア
ラー設定エリアに指定(つまり、色で塗りつぶす)する
か否かを決定するフラグを格納するエリア カラー状態フラグ(B)……閉曲線Bをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(C)……閉曲線Cをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(D)……閉曲線Dをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(E)……閉曲線Eをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア カラー状態フラグ(F)……閉曲線Fをカラー設定エリ
アに指定(つまり、色で塗りつぶす)するか否かを決定
するフラグを格納するエリア バックグラウンドカラー番号……背景となる部分を塗り
つぶす色(カラー)を指定するデータを格納するエリア
【0018】また、その他に作成した似顔絵の各部位に
対応する閉曲線を色で塗りつぶして格納するエリア11
〜16がある。例えば、エリア11は前髪を格納するエ
リア、エリア12は髪型を格納するエリア、エリア13
は髪における光沢部分を格納するエリア、エリア14は
顔の輪郭を格納するエリア、エリア15は顔のパーツを
格納するエリア、エリア16は首を格納するエリアであ
る。次いで、ステップS22でロードした閉曲線作成デ
ータA〜Fに基づいて閉曲線A〜Fをそれぞれ作成する
処理(詳細はサブルーチンで後述)を行うとともに、ス
テップS24で作成した閉曲線A〜Fを塗りつぶす処理
(詳細はサブルーチンで後述)を行う。これにより、選
択された似顔絵番号に対応する閉曲線A〜Fが作成され
るとともに、作成された各閉曲線A〜Fを所定の色で塗
りつぶす処理が行われて似顔絵が作成される。次いで、
ステップS26で表示処理を行う。これにより、作成さ
れた似顔絵が表示部5に表示される。ステップS26を
経ると、ステップS12に戻って同様のループを繰り返
す。このように、似顔絵選択スイッチによって選択され
た似顔絵番号に対応する似顔絵が作成されて表示され
る。
対応する閉曲線を色で塗りつぶして格納するエリア11
〜16がある。例えば、エリア11は前髪を格納するエ
リア、エリア12は髪型を格納するエリア、エリア13
は髪における光沢部分を格納するエリア、エリア14は
顔の輪郭を格納するエリア、エリア15は顔のパーツを
格納するエリア、エリア16は首を格納するエリアであ
る。次いで、ステップS22でロードした閉曲線作成デ
ータA〜Fに基づいて閉曲線A〜Fをそれぞれ作成する
処理(詳細はサブルーチンで後述)を行うとともに、ス
テップS24で作成した閉曲線A〜Fを塗りつぶす処理
(詳細はサブルーチンで後述)を行う。これにより、選
択された似顔絵番号に対応する閉曲線A〜Fが作成され
るとともに、作成された各閉曲線A〜Fを所定の色で塗
りつぶす処理が行われて似顔絵が作成される。次いで、
ステップS26で表示処理を行う。これにより、作成さ
れた似顔絵が表示部5に表示される。ステップS26を
経ると、ステップS12に戻って同様のループを繰り返
す。このように、似顔絵選択スイッチによって選択され
た似顔絵番号に対応する似顔絵が作成されて表示され
る。
【0019】閉曲線A〜Fの作成処理のサブルーチン 図5はメインプログラムの閉曲線A〜Fの作成処理(ス
テップS22)のサブルーチンを示すフローチャートで
ある。このサブルーチンに移行すると、ステップS50
で閉曲線Aを作成する処理を行う。例えば、閉曲線Aが
前髪に相当する場合には、前髪の閉曲線(図4のエリア
11に格納される画像)が作成される。次いで、ステッ
プS52で閉曲線Bを作成する処理を行う。例えば、閉
曲線Bが髪型に相当する場合には、髪型の閉曲線(図4
のエリア12に格納される画像)が作成される。次い
で、ステップS54で閉曲線Cを作成する処理を行う。
例えば、閉曲線Cが髪における光沢部分に相当する場合
には、光沢部分の閉曲線(図4のエリア13に格納され
る画像)が作成される。次いで、ステップS56で閉曲
線Dを作成する処理を行う。例えば、閉曲線Dが顔の輪
郭に相当する場合には、輪郭の閉曲線(図4のエリア1
4に格納される画像)が作成される。次いで、ステップ
S58で閉曲線Eを作成する処理を行う。例えば、閉曲
線Eが顔のパーツに相当する場合には、顔のパーツの閉
曲線(図4のエリア15に格納される画像)が作成され
る。なお、顔のパーツとしては、眉毛、目、鼻、口があ
る。次いで、ステップS60で閉曲線Fを作成する処理
を行う。例えば、閉曲線Fが首に相当する場合には、首
の閉曲線(図4のエリア16に格納される画像)が作成
される。ステップS60を経ると、メインプログラムに
リターンする。このようにして、似顔絵を作成するため
の各閉曲線A〜Fが作成される。
テップS22)のサブルーチンを示すフローチャートで
ある。このサブルーチンに移行すると、ステップS50
で閉曲線Aを作成する処理を行う。例えば、閉曲線Aが
前髪に相当する場合には、前髪の閉曲線(図4のエリア
11に格納される画像)が作成される。次いで、ステッ
プS52で閉曲線Bを作成する処理を行う。例えば、閉
曲線Bが髪型に相当する場合には、髪型の閉曲線(図4
のエリア12に格納される画像)が作成される。次い
で、ステップS54で閉曲線Cを作成する処理を行う。
例えば、閉曲線Cが髪における光沢部分に相当する場合
には、光沢部分の閉曲線(図4のエリア13に格納され
る画像)が作成される。次いで、ステップS56で閉曲
線Dを作成する処理を行う。例えば、閉曲線Dが顔の輪
郭に相当する場合には、輪郭の閉曲線(図4のエリア1
4に格納される画像)が作成される。次いで、ステップ
S58で閉曲線Eを作成する処理を行う。例えば、閉曲
線Eが顔のパーツに相当する場合には、顔のパーツの閉
曲線(図4のエリア15に格納される画像)が作成され
る。なお、顔のパーツとしては、眉毛、目、鼻、口があ
る。次いで、ステップS60で閉曲線Fを作成する処理
を行う。例えば、閉曲線Fが首に相当する場合には、首
の閉曲線(図4のエリア16に格納される画像)が作成
される。ステップS60を経ると、メインプログラムに
リターンする。このようにして、似顔絵を作成するため
の各閉曲線A〜Fが作成される。
【0020】ドット算出処理のサブルーチン 図6、図7は閉曲線A〜Fを作成する場合のドット算出
処理のサブルーチンを示すフローチャートである。この
処理は、2点間を結ぶ直線を表示部5のTVディスプレ
イ(例えば、コンピュータ画面やテレビ画面に相当)に
表示させるために行うもので、2点間を結ぶ直線は多数
のドットを算出して結ぶことによって表示される。な
お、この技術はコンピュータの直線描画に用いられてい
るいわゆる「整数型Bresenham」のアルゴリズムを応用
したものである。通常の「Bresenham」のアルゴリズム
では、直線の傾きや誤差用の判定に、浮動小数点の加減
算と除算を行う必要があるが、整数計算を用いるととも
に、さらに除算を無くしてアルゴリズムの処理速度を高
めたのが、「整数型Bresenham」のアルゴリズムであ
る。なお、以下のフローチャートの説明では、コンピュ
ータで使用される「C言語」の記述方式を用いており、
各ステップの内容は必要に応じて「C言語」の記述で表
すこととする。これは、後述の各フローチャートについ
ても、同様である。
処理のサブルーチンを示すフローチャートである。この
処理は、2点間を結ぶ直線を表示部5のTVディスプレ
イ(例えば、コンピュータ画面やテレビ画面に相当)に
表示させるために行うもので、2点間を結ぶ直線は多数
のドットを算出して結ぶことによって表示される。な
お、この技術はコンピュータの直線描画に用いられてい
るいわゆる「整数型Bresenham」のアルゴリズムを応用
したものである。通常の「Bresenham」のアルゴリズム
では、直線の傾きや誤差用の判定に、浮動小数点の加減
算と除算を行う必要があるが、整数計算を用いるととも
に、さらに除算を無くしてアルゴリズムの処理速度を高
めたのが、「整数型Bresenham」のアルゴリズムであ
る。なお、以下のフローチャートの説明では、コンピュ
ータで使用される「C言語」の記述方式を用いており、
各ステップの内容は必要に応じて「C言語」の記述で表
すこととする。これは、後述の各フローチャートについ
ても、同様である。
【0021】このサブルーチンでは、まずステップS1
00で直線の始点、終点の座標の差(すなわち、傾き)
を演算する。直線の始点、終点はx座標およびy座標を
用いて表される。例えば、直線の始点、終点をそれぞれ
(x1、y1)および(x2、y2)とし、互いに等しくな
いものとする。また、全ての変数は整数とする。そし
て、 x=x1 y=y1 Δx=x2−x1 Δy=y2−y1とし、アルゴリズムの誤差項eに対して e=2eΔx(初期値=−1/2)として演算を進め、
直線の傾きが1/2以上の場合は1単位だけ離れた次の
ポイントに変数yを増加させ、直線の傾きが1/2未満
の場合は次のポイントに変数yを増加させないようにす
る。なお、1単位だけ離れた次のポイントに変数yを増
加させた場合には、次のピクセルを決定する前に誤差項
eを再度初期化するために、誤差項eから「1」を減算
する。
00で直線の始点、終点の座標の差(すなわち、傾き)
を演算する。直線の始点、終点はx座標およびy座標を
用いて表される。例えば、直線の始点、終点をそれぞれ
(x1、y1)および(x2、y2)とし、互いに等しくな
いものとする。また、全ての変数は整数とする。そし
て、 x=x1 y=y1 Δx=x2−x1 Δy=y2−y1とし、アルゴリズムの誤差項eに対して e=2eΔx(初期値=−1/2)として演算を進め、
直線の傾きが1/2以上の場合は1単位だけ離れた次の
ポイントに変数yを増加させ、直線の傾きが1/2未満
の場合は次のポイントに変数yを増加させないようにす
る。なお、1単位だけ離れた次のポイントに変数yを増
加させた場合には、次のピクセルを決定する前に誤差項
eを再度初期化するために、誤差項eから「1」を減算
する。
【0022】さて、ステップS100では直線の始点、
終点の座標の差として、x座標については、gainxを算
出し、y座標については、gainyを算出する。この場
合、開始点のx座標はfromx、開始点のy座標はfromy、
終点のx座標はto.x、終点のy座標はto.yで表してい
る。そして、x座標についての差の演算式は、終点のx
座標to.xから開始点のx座標fromxを減算したもの、つ
まり(to.x−fromx)として表される。同様に、y座標
についての差の演算式は、終点のy座標to.yから開始点
のy座標fromyを減算したもの、つまり(to.y−fromy)
として表される。次いで、ステップS102で直線の始
点、終点の座標の差(すなわち、傾き)の絶対値Δ(de
lta)をそれぞれx座標およびy座標について演算す
る。例えば、x座標ではdeltax=abs(gainx)として
演算する。deltaxはΔx=x2−x1に相当する。y座
標ではdeltay=abs(gainy)として演算する。delta
yはΔy=y2−y1に相当する。
終点の座標の差として、x座標については、gainxを算
出し、y座標については、gainyを算出する。この場
合、開始点のx座標はfromx、開始点のy座標はfromy、
終点のx座標はto.x、終点のy座標はto.yで表してい
る。そして、x座標についての差の演算式は、終点のx
座標to.xから開始点のx座標fromxを減算したもの、つ
まり(to.x−fromx)として表される。同様に、y座標
についての差の演算式は、終点のy座標to.yから開始点
のy座標fromyを減算したもの、つまり(to.y−fromy)
として表される。次いで、ステップS102で直線の始
点、終点の座標の差(すなわち、傾き)の絶対値Δ(de
lta)をそれぞれx座標およびy座標について演算す
る。例えば、x座標ではdeltax=abs(gainx)として
演算する。deltaxはΔx=x2−x1に相当する。y座
標ではdeltay=abs(gainy)として演算する。delta
yはΔy=y2−y1に相当する。
【0023】次いで、ステップS104で直線の始点、
終点の座標のx座標の差gainxの符号を判別する。gain
xが正のときはステップS106に進んでratex=1に
セットし、gainxが「0」のときはステップS108に
進んでratex=0にセットし、さらにgainxが負のとき
はステップS110に進んでratex=−1にセットす
る。ステップS106〜ステップS110の何れかを経
ると、ステップS112に進む。ステップS112では
同様に直線の始点、終点の座標のy座標の差gainyの符
号を判別する。gainyが正のときはステップS114に
進んでratey=1にセットし、gainyが「0」のときは
ステップS116に進んでratey=0にセットし、さら
にgainyが負のときはステップS118に進んでratey
=−1にセットする。ステップS114〜ステップS1
18の何れかを経ると、ステップS120に進む。
終点の座標のx座標の差gainxの符号を判別する。gain
xが正のときはステップS106に進んでratex=1に
セットし、gainxが「0」のときはステップS108に
進んでratex=0にセットし、さらにgainxが負のとき
はステップS110に進んでratex=−1にセットす
る。ステップS106〜ステップS110の何れかを経
ると、ステップS112に進む。ステップS112では
同様に直線の始点、終点の座標のy座標の差gainyの符
号を判別する。gainyが正のときはステップS114に
進んでratey=1にセットし、gainyが「0」のときは
ステップS116に進んでratey=0にセットし、さら
にgainyが負のときはステップS118に進んでratey
=−1にセットする。ステップS114〜ステップS1
18の何れかを経ると、ステップS120に進む。
【0024】ステップS120では直線のx座標方向の
傾きの絶対値deltaxと、y座標方向の傾きの絶対値del
tayとを比較し、deltaxがdeltayより大きいか否かを
判別する。これは、x座標方向とy座標方向のどちらを
メインの誤差項にするかを決定するためである。delta
x>deltayのとき(すなわち、TRUEのとき、いわ
ゆるYESに相当)は、ステップS122に進んでメイ
ン誤差項(main delta)をdeltaxにする。なお、図面
上では(main_delta)としてアンダーバーを付加してい
るが、本文中では繁雑になるので、このアンダーバーを
省略する。次いで、ステップS124でサブ誤差項(su
b delta)をdeltayにする。なお、図面上では(sub_de
lta)としてアンダーバーを付加しているが、本文中で
は繁雑になるので、このアンダーバーを省略する。次い
で、ステップS126でメイン決定フラグ(flag)をT
RUEにして図7のステップS134に進む。メイン決
定フラグ(flag)はメイン誤差項(main delta)をdelt
axにしたか、あるいはdeltayにしたかを示すものであ
る。一方、deltax≦deltayのとき(すなわち、FAL
SEのとき、いわゆるNOに相当)は、ステップS12
8に進んでメイン誤差項(main delta)をdeltayにす
る。次いで、ステップS130でサブ誤差項(sub delt
a)をdeltaxにする。次いで、ステップS132でメイ
ン決定フラグ(flag)をFALSEにして図7のステッ
プS134に進む。
傾きの絶対値deltaxと、y座標方向の傾きの絶対値del
tayとを比較し、deltaxがdeltayより大きいか否かを
判別する。これは、x座標方向とy座標方向のどちらを
メインの誤差項にするかを決定するためである。delta
x>deltayのとき(すなわち、TRUEのとき、いわ
ゆるYESに相当)は、ステップS122に進んでメイ
ン誤差項(main delta)をdeltaxにする。なお、図面
上では(main_delta)としてアンダーバーを付加してい
るが、本文中では繁雑になるので、このアンダーバーを
省略する。次いで、ステップS124でサブ誤差項(su
b delta)をdeltayにする。なお、図面上では(sub_de
lta)としてアンダーバーを付加しているが、本文中で
は繁雑になるので、このアンダーバーを省略する。次い
で、ステップS126でメイン決定フラグ(flag)をT
RUEにして図7のステップS134に進む。メイン決
定フラグ(flag)はメイン誤差項(main delta)をdelt
axにしたか、あるいはdeltayにしたかを示すものであ
る。一方、deltax≦deltayのとき(すなわち、FAL
SEのとき、いわゆるNOに相当)は、ステップS12
8に進んでメイン誤差項(main delta)をdeltayにす
る。次いで、ステップS130でサブ誤差項(sub delt
a)をdeltaxにする。次いで、ステップS132でメイ
ン決定フラグ(flag)をFALSEにして図7のステッ
プS134に進む。
【0025】図7に移り、ステップS134では直線の
始点のx座標に相当するドットdotx[0]を開始点のx座
標fromxにセットするとともに、直線の始点のy座標に
相当するドットdoty[0]を開始点のy座標fromyにセッ
トする。これにより、始点のドットの各座標が決定され
る。次いで、ステップS136で同じくx座標方向のパ
ラメータpxを開始点のx座標fromxにセットするとと
もに、y座標方向のパラメータpyを開始点のy座標fr
omyにセットする。次いで、ステップS138で誤差項
eをerror=2×(sub delta)−(main delta)なる式
から求める。この式によると、例えばe=2*Δy−Δ
xのようになる。
始点のx座標に相当するドットdotx[0]を開始点のx座
標fromxにセットするとともに、直線の始点のy座標に
相当するドットdoty[0]を開始点のy座標fromyにセッ
トする。これにより、始点のドットの各座標が決定され
る。次いで、ステップS136で同じくx座標方向のパ
ラメータpxを開始点のx座標fromxにセットするとと
もに、y座標方向のパラメータpyを開始点のy座標fr
omyにセットする。次いで、ステップS138で誤差項
eをerror=2×(sub delta)−(main delta)なる式
から求める。この式によると、例えばe=2*Δy−Δ
xのようになる。
【0026】次いで、ステップS140でポインタiを
初期値[0]にセットする。ポインタiは直線を形成す
るドットを順次指定していくもので、[1]なる整数に
よってインクリメントされる。次いで、ステップS14
2でポインタiがメイン誤差項(main delta)より小さ
いか否かを判別する。TRUEのときはステップS14
4に進んで誤差項errorがerror≧0であるか否かを判別
する。error≧0のときは、ステップS146でメイン
決定フラグ(flag)を判別する。メイン決定フラグ(fl
ag)がTRUEであればx座標の方がメイン誤差項(ma
in delta)に設定されているから、ステップS148に
進んで今回のルーチンのy座標方向のパラメータpyを
次式に従って演算する。 py=py+ratey
初期値[0]にセットする。ポインタiは直線を形成す
るドットを順次指定していくもので、[1]なる整数に
よってインクリメントされる。次いで、ステップS14
2でポインタiがメイン誤差項(main delta)より小さ
いか否かを判別する。TRUEのときはステップS14
4に進んで誤差項errorがerror≧0であるか否かを判別
する。error≧0のときは、ステップS146でメイン
決定フラグ(flag)を判別する。メイン決定フラグ(fl
ag)がTRUEであればx座標の方がメイン誤差項(ma
in delta)に設定されているから、ステップS148に
進んで今回のルーチンのy座標方向のパラメータpyを
次式に従って演算する。 py=py+ratey
【0027】次いで、ステップS150で今回のルーチ
ンの誤差項eを次式に従って演算する。 error=error−2×(main delta) これにより、誤差項eがメインの誤差によって変化す
る。次いで、再びステップS144に戻って同様のルー
プを繰り返す。一方、ステップS146でメイン決定フ
ラグ(flag)の判別結果がFALSEであれば、y座標
の方がメイン誤差項(main delta)に設定されていると
判断して、ステップS144からステップS152に分
岐し、今回のルーチンのx座標方向のパラメータpxを
次式に従って演算する。 px=px+ratex 次いで、ステップS150に進み、今回のルーチンの誤
差項eを前記演算式に従って演算する。その後、ステッ
プS144に戻って同様のループを繰り返す。そして、
ステップS144で誤差項errorがerror<0になると、
ステップS154に抜ける。以上のステップS144〜
ステップS152の処理により、メイン誤差項(main d
elta)の処理が行われる。
ンの誤差項eを次式に従って演算する。 error=error−2×(main delta) これにより、誤差項eがメインの誤差によって変化す
る。次いで、再びステップS144に戻って同様のルー
プを繰り返す。一方、ステップS146でメイン決定フ
ラグ(flag)の判別結果がFALSEであれば、y座標
の方がメイン誤差項(main delta)に設定されていると
判断して、ステップS144からステップS152に分
岐し、今回のルーチンのx座標方向のパラメータpxを
次式に従って演算する。 px=px+ratex 次いで、ステップS150に進み、今回のルーチンの誤
差項eを前記演算式に従って演算する。その後、ステッ
プS144に戻って同様のループを繰り返す。そして、
ステップS144で誤差項errorがerror<0になると、
ステップS154に抜ける。以上のステップS144〜
ステップS152の処理により、メイン誤差項(main d
elta)の処理が行われる。
【0028】次いで、サブ誤差項(sub delta)の処理
に移る。まず、ステップS154でメイン決定フラグ
(flag)を判別し、メイン決定フラグ(flag)がTRU
Eであれば、x座標の方がメイン誤差項(main delta)
に設定されているから、ステップS156に進んで今回
のルーチンのx座標方向のパラメータpxを次式に従っ
て演算する。 px=px+ratex 次いで、ステップS160で今回のルーチンの誤差項e
を次式に従って演算する。 error=error+2×(sub delta) これにより、誤差項eがサブ誤差sub deltaによって変
化する。次いで、ステップS162でx座標方向の今回
のルーチンのパラメータpxの値を直線のx座標に対応
するドットdotx[i+1]とする。最初のルーチンでは
i=0であるから、dotx[i+1]=dotx[1]となる。
つまり、始点から1ドットだけ離れたx座標のドットdo
txが算出される。次いで、ステップS164でポイン
タiを整数[1]だけインクリメントし、再びステップ
S142に戻ってループを繰り返す。
に移る。まず、ステップS154でメイン決定フラグ
(flag)を判別し、メイン決定フラグ(flag)がTRU
Eであれば、x座標の方がメイン誤差項(main delta)
に設定されているから、ステップS156に進んで今回
のルーチンのx座標方向のパラメータpxを次式に従っ
て演算する。 px=px+ratex 次いで、ステップS160で今回のルーチンの誤差項e
を次式に従って演算する。 error=error+2×(sub delta) これにより、誤差項eがサブ誤差sub deltaによって変
化する。次いで、ステップS162でx座標方向の今回
のルーチンのパラメータpxの値を直線のx座標に対応
するドットdotx[i+1]とする。最初のルーチンでは
i=0であるから、dotx[i+1]=dotx[1]となる。
つまり、始点から1ドットだけ離れたx座標のドットdo
txが算出される。次いで、ステップS164でポイン
タiを整数[1]だけインクリメントし、再びステップ
S142に戻ってループを繰り返す。
【0029】一方、ステップS154でメイン決定フラ
グ(flag)の判別結果がFALSEであれば、y座標の
方がメイン誤差項(main delta)に設定されていると判
断して、ステップS154からステップS158に分岐
し、今回のルーチンのy座標方向のパラメータpyを次
式に従って演算する。 py=py+ratey その後、ステップS160に進み、今回のルーチンのサ
ブ誤差項eを前記演算式に従って演算し、次いで、ステ
ップS162、ステップS164を経て、再びステップ
S142に戻ってループを繰り返す。そして、順次ポイ
ンタiをインクリメントして、上記ループを繰り返し、
ステップS142でポインタiがメイン誤差項(main d
elta)以上になると、このサブルーチンを終了する。こ
のようにして、2点間を結ぶ直線のドットが算出され、
これらのドットを結ぶことによって、2点間を結ぶ直線
を表示させる処理が行われる。この場合、本実施例では
「整数型Bresenham」のアルゴリズムを用いて、整数計
算を主に行っているため、アルゴリズムの処理速度が速
い。
グ(flag)の判別結果がFALSEであれば、y座標の
方がメイン誤差項(main delta)に設定されていると判
断して、ステップS154からステップS158に分岐
し、今回のルーチンのy座標方向のパラメータpyを次
式に従って演算する。 py=py+ratey その後、ステップS160に進み、今回のルーチンのサ
ブ誤差項eを前記演算式に従って演算し、次いで、ステ
ップS162、ステップS164を経て、再びステップ
S142に戻ってループを繰り返す。そして、順次ポイ
ンタiをインクリメントして、上記ループを繰り返し、
ステップS142でポインタiがメイン誤差項(main d
elta)以上になると、このサブルーチンを終了する。こ
のようにして、2点間を結ぶ直線のドットが算出され、
これらのドットを結ぶことによって、2点間を結ぶ直線
を表示させる処理が行われる。この場合、本実施例では
「整数型Bresenham」のアルゴリズムを用いて、整数計
算を主に行っているため、アルゴリズムの処理速度が速
い。
【0030】ベジェ曲線データ計算処理のサブルーチン 図8、図9はベジェ曲線を作成する場合のデータ計算処
理のサブルーチンを示すフローチャートである。ベジェ
曲線は2点のコントロールポイント(P2、P3)と、2
点のアンカーポイント(P1、P4)によって定義され、
一般的には次式のように表される。ここで、アンカーポ
イント(P1、P4)とは曲線の両端の2点で、各点の座
標は、例えばP1(x1、y1)、P4(x4、y4)のよう
に表される。また、コントロールポイント(P2、P3)
とは曲線の曲がり方を制御する2点のことで、各点の座
標は、例えばP2(x2、y2)、P3(x3、y3)のよう
に表される。 B(t)=(1−t)3・P1+3t・(1−t)2・P2
+3t2・(1−t)・P3+t3・P4 ただし、0≦t≦1 tは0から1の間の任意に変化するため、0から1の間
を細かく分けることによって、ベジェ曲線上の点が精度
良く算出される。なお、計算の回数が多くなるため、そ
こで適当な個数の曲線上の点を算出した後に、それらを
直線によって補間する方法を採るようにしている。な
お、例えばt=0を上式に代入すると、P1(x1、
y1)となり、これは一方の端点を表す。また、t=1
を上式に代入すると、P4(x4、y4)となり、これは
他方の端点を表す。なお、直線は幅の無い真っ直ぐなベ
ジェ曲線として表示することも可能である。
理のサブルーチンを示すフローチャートである。ベジェ
曲線は2点のコントロールポイント(P2、P3)と、2
点のアンカーポイント(P1、P4)によって定義され、
一般的には次式のように表される。ここで、アンカーポ
イント(P1、P4)とは曲線の両端の2点で、各点の座
標は、例えばP1(x1、y1)、P4(x4、y4)のよう
に表される。また、コントロールポイント(P2、P3)
とは曲線の曲がり方を制御する2点のことで、各点の座
標は、例えばP2(x2、y2)、P3(x3、y3)のよう
に表される。 B(t)=(1−t)3・P1+3t・(1−t)2・P2
+3t2・(1−t)・P3+t3・P4 ただし、0≦t≦1 tは0から1の間の任意に変化するため、0から1の間
を細かく分けることによって、ベジェ曲線上の点が精度
良く算出される。なお、計算の回数が多くなるため、そ
こで適当な個数の曲線上の点を算出した後に、それらを
直線によって補間する方法を採るようにしている。な
お、例えばt=0を上式に代入すると、P1(x1、
y1)となり、これは一方の端点を表す。また、t=1
を上式に代入すると、P4(x4、y4)となり、これは
他方の端点を表す。なお、直線は幅の無い真っ直ぐなベ
ジェ曲線として表示することも可能である。
【0031】まず、ステップS200でポインタiを
[0]にセットし、ステップS202で変数tをt=i
/nとして算出する。ポインタiは[1]毎にインクリ
メントされるものであるため、変数tをnによって除算
することで、0から1の間に細かく分けるものである。
次いで、ステップS204で偏差tnをtn=1.0−
tなる式によって演算する。次いで、ステップS206
でベジェ曲線B(t)の変数tの0乗の項(すなわち、
t=1)のx座標について次式に従って演算する。 sx[0]=tn×tn×tn×px[0] =(1−t)3・px[0] =(1−t)3・P1(x) px[0]はアンカーポイントP1のx座標である。次い
で、ステップS208でベジェ曲線B(t)の変数tの
1乗の項(すなわち、t)のx座標について次式に従っ
て演算する。 sx[1]=3.0×t×tn×tn×px[1] =3t・(1−t)2・px[1] =3t・(1−t)2・P2(x) px[1]はコントロールポイントP2のx座標である。
[0]にセットし、ステップS202で変数tをt=i
/nとして算出する。ポインタiは[1]毎にインクリ
メントされるものであるため、変数tをnによって除算
することで、0から1の間に細かく分けるものである。
次いで、ステップS204で偏差tnをtn=1.0−
tなる式によって演算する。次いで、ステップS206
でベジェ曲線B(t)の変数tの0乗の項(すなわち、
t=1)のx座標について次式に従って演算する。 sx[0]=tn×tn×tn×px[0] =(1−t)3・px[0] =(1−t)3・P1(x) px[0]はアンカーポイントP1のx座標である。次い
で、ステップS208でベジェ曲線B(t)の変数tの
1乗の項(すなわち、t)のx座標について次式に従っ
て演算する。 sx[1]=3.0×t×tn×tn×px[1] =3t・(1−t)2・px[1] =3t・(1−t)2・P2(x) px[1]はコントロールポイントP2のx座標である。
【0032】次いで、ステップS210でベジェ曲線B
(t)の変数tの2乗の項(すなわち、t2)のx座標
について次式に従って演算する。 sx[2]=3.0×t×t×tn×px[2] =3t2・(1−t)・px[2] =3t2・(1−t)・P3(x) px[2]はコントロールポイントP3のx座標である。次
いで、ステップS212でベジェ曲線B(t)の変数t
の3乗の項(すなわち、t3)のx座標について次式に
従って演算する。 sx[3]=t×t×t×px[3] =t3・px[3] =t3・P4(x) px[3]はアンカーポイントP4のx座標である。
(t)の変数tの2乗の項(すなわち、t2)のx座標
について次式に従って演算する。 sx[2]=3.0×t×t×tn×px[2] =3t2・(1−t)・px[2] =3t2・(1−t)・P3(x) px[2]はコントロールポイントP3のx座標である。次
いで、ステップS212でベジェ曲線B(t)の変数t
の3乗の項(すなわち、t3)のx座標について次式に
従って演算する。 sx[3]=t×t×t×px[3] =t3・px[3] =t3・P4(x) px[3]はアンカーポイントP4のx座標である。
【0033】次いで、ステップS214〜ステップS2
00において、ベジェ曲線B(t)の変数tのy座標に
ついて上記同様の演算を行う。すなわち、ステップS2
14でベジェ曲線B(t)の変数tの0乗の項(すなわ
ち、t=1)のy座標について次式に従って演算する。 sy[0]=tn×tn×tn×py[0] =(1−t)3・py[0] =(1−t)3・P1(y) py[0]はアンカーポイントP1のy座標である。次い
で、ステップS216でベジェ曲線B(t)の変数tの
1乗の項(すなわち、t)のy座標について次式に従っ
て演算する。 sy[1]=3.0×t×tn×tn×py[1] =3t・(1−t)2・py[1] =3t・(1−t)2・P2(y) py[1]はコントロールポイントP2のy座標である。
00において、ベジェ曲線B(t)の変数tのy座標に
ついて上記同様の演算を行う。すなわち、ステップS2
14でベジェ曲線B(t)の変数tの0乗の項(すなわ
ち、t=1)のy座標について次式に従って演算する。 sy[0]=tn×tn×tn×py[0] =(1−t)3・py[0] =(1−t)3・P1(y) py[0]はアンカーポイントP1のy座標である。次い
で、ステップS216でベジェ曲線B(t)の変数tの
1乗の項(すなわち、t)のy座標について次式に従っ
て演算する。 sy[1]=3.0×t×tn×tn×py[1] =3t・(1−t)2・py[1] =3t・(1−t)2・P2(y) py[1]はコントロールポイントP2のy座標である。
【0034】次いで、ステップS218でベジェ曲線B
(t)の変数tの2乗の項(すなわち、t2)のy座標
について次式に従って演算する。 sy[2]=3.0×t×t×tn×py[2] =3t2・(1−t)・py[2] =3t2・(1−t)・P3(y) py[2]はコントロールポイントP3のy座標である。次
いで、ステップS220でベジェ曲線B(t)の変数t
の3乗の項(すなわち、t3)のy座標について次式に
従って演算する。 sy[3]=t×t×t×py[3] =t3・py[3] =t3・P4(y) py[3]はアンカーポイントP4のy座標である。
(t)の変数tの2乗の項(すなわち、t2)のy座標
について次式に従って演算する。 sy[2]=3.0×t×t×tn×py[2] =3t2・(1−t)・py[2] =3t2・(1−t)・P3(y) py[2]はコントロールポイントP3のy座標である。次
いで、ステップS220でベジェ曲線B(t)の変数t
の3乗の項(すなわち、t3)のy座標について次式に
従って演算する。 sy[3]=t×t×t×py[3] =t3・py[3] =t3・P4(y) py[3]はアンカーポイントP4のy座標である。
【0035】図9に移り、ステップS222でベジェ曲
線B(t)上のポイントとポイント間を直線によって補
間する場合の補間定数のx座標bx[i]、y座標by
[i]を最初は共に、bx[i]=by[i]=0にセ
ットする。次いで、ステップS224でポインタjを初
期値[0]におき、続くステップS226で補間定数の
x座標bx[i]およびy座標by[i]をそれぞれ次
式に従って演算する。 bx[i]=bx[i]+sx[j] by[i]=by[i]+sy[j] 次いで、ステップS228でポインタjが[4]以上に
なったか否かを判別し、[4]未満のときはステップS
230に進んでポインタjを[1]だけインクリメント
し、ステップS226に戻り、ループを繰り返す。そし
て、ステップS228でポインタjが[4]以上になる
と、ステップS232に抜ける。
線B(t)上のポイントとポイント間を直線によって補
間する場合の補間定数のx座標bx[i]、y座標by
[i]を最初は共に、bx[i]=by[i]=0にセ
ットする。次いで、ステップS224でポインタjを初
期値[0]におき、続くステップS226で補間定数の
x座標bx[i]およびy座標by[i]をそれぞれ次
式に従って演算する。 bx[i]=bx[i]+sx[j] by[i]=by[i]+sy[j] 次いで、ステップS228でポインタjが[4]以上に
なったか否かを判別し、[4]未満のときはステップS
230に進んでポインタjを[1]だけインクリメント
し、ステップS226に戻り、ループを繰り返す。そし
て、ステップS228でポインタjが[4]以上になる
と、ステップS232に抜ける。
【0036】次いで、ステップS232でポインタiが
n以上になったか否かを判別し、n未満のときはステッ
プS234に進んでポインタiを[1]だけインクリメ
ントし、図8のステップS202に戻り、同様のループ
を繰り返す。そして、ステップS232でポインタiが
n以上になると、本サブルーチンを終了する。このよう
にして、ポインタiを[0]からnまでインクリメント
することによって2点のコントロールポイント(P2、
P3)と、2点のアンカーポイント(P 1、P4)によっ
て定義されるベジェ曲線B(t)上の点を算出し、この
ときtを0から1の間に分けて細かく変化させることに
より、ベジェ曲線上の点を精度良く算出することができ
る。また、ベジェ曲線B(t)上のポイントとポイント
間を4つの点で適切に補間することにより、一層精度が
高められる。
n以上になったか否かを判別し、n未満のときはステッ
プS234に進んでポインタiを[1]だけインクリメ
ントし、図8のステップS202に戻り、同様のループ
を繰り返す。そして、ステップS232でポインタiが
n以上になると、本サブルーチンを終了する。このよう
にして、ポインタiを[0]からnまでインクリメント
することによって2点のコントロールポイント(P2、
P3)と、2点のアンカーポイント(P 1、P4)によっ
て定義されるベジェ曲線B(t)上の点を算出し、この
ときtを0から1の間に分けて細かく変化させることに
より、ベジェ曲線上の点を精度良く算出することができ
る。また、ベジェ曲線B(t)上のポイントとポイント
間を4つの点で適切に補間することにより、一層精度が
高められる。
【0037】カラー設定処理のサブルーチン 図10、図11はメインプログラムにおけるステップS
24の塗りつぶし処理のうち、カラー設定処理のサブル
ーチンを示すフローチャートである。この処理は、作成
された閉曲線に対して指定された色を塗っていくもので
ある。このサブルーチンでは、まずステップS300で
カラーエリアをクリアする。これにより、最初は色を塗
る対象となる全てのエリアが一旦クリアされ、無色にな
る。次いで、ステップS302でカラー状態フラグCfl
agを初期設定する。カラー状態フラグCflagとは、対応
する閉曲線をカラー設定エリアに指定(つまり、色で塗
りつぶす)するか否かを決定するフラグであり、初期設
定されると、図12に示すように、すべて[−1]にな
る。カラー状態フラグ=[−1]とは、カラーを指定す
るカラー番号で取り得ない番号に設定することである。
24の塗りつぶし処理のうち、カラー設定処理のサブル
ーチンを示すフローチャートである。この処理は、作成
された閉曲線に対して指定された色を塗っていくもので
ある。このサブルーチンでは、まずステップS300で
カラーエリアをクリアする。これにより、最初は色を塗
る対象となる全てのエリアが一旦クリアされ、無色にな
る。次いで、ステップS302でカラー状態フラグCfl
agを初期設定する。カラー状態フラグCflagとは、対応
する閉曲線をカラー設定エリアに指定(つまり、色で塗
りつぶす)するか否かを決定するフラグであり、初期設
定されると、図12に示すように、すべて[−1]にな
る。カラー状態フラグ=[−1]とは、カラーを指定す
るカラー番号で取り得ない番号に設定することである。
【0038】図12の例では、オブジェクト1のカラー
〜オブジェクトn(各オブジェクトは、例えば似顔絵の
各部位に相当)のカラーが全て初期状態に設定され、バ
ックグラウンドのカラーだけ何等かのカラー番号が入
り、色で塗られるようになっている。そして、各オブジ
ェクトのカラー切替フラグが[1]になるたびに、それ
に対応するカラー状態フラグが反転(例えば、[−1]
から[1]になる)するようになっている。ステップS
304ではポインタiを[0]にクリアし、ステップS
306でポインタjを[0]にクリアする。ポインタi
は画面上のライン(例えば、0から524までのライン
がある)を順次指定するもので、ポインタjはライン上
のドットを順次指定するものである。ポインタi=
[0]にすることによりライン0が指定され、ポインタ
j=[0]にすることによりライン0上のドット0が指
定される。
〜オブジェクトn(各オブジェクトは、例えば似顔絵の
各部位に相当)のカラーが全て初期状態に設定され、バ
ックグラウンドのカラーだけ何等かのカラー番号が入
り、色で塗られるようになっている。そして、各オブジ
ェクトのカラー切替フラグが[1]になるたびに、それ
に対応するカラー状態フラグが反転(例えば、[−1]
から[1]になる)するようになっている。ステップS
304ではポインタiを[0]にクリアし、ステップS
306でポインタjを[0]にクリアする。ポインタi
は画面上のライン(例えば、0から524までのライン
がある)を順次指定するもので、ポインタjはライン上
のドットを順次指定するものである。ポインタi=
[0]にすることによりライン0が指定され、ポインタ
j=[0]にすることによりライン0上のドット0が指
定される。
【0039】次いで、ステップS308でラインカラー
lcolorを[−1]に設定するとともに、ラインナンバー
(ライン番号)lnumを[−1]に設定する。ラインカラ
ーlcolorは閉曲線のカラーを指定するものである。ま
た、ラインナンバーlnumは閉曲線の境界線の番号を指定
するものである。何れも、[−1]に設定されることに
より、初期状態となる。次いで、ステップS310で閉
曲線ナンバーkを(n−1)に設定する。例えば、閉曲
線が6個あるとすると、閉曲線ナンバーkを[5]に設
定する。閉曲線ナンバーkは値が小さい程、優先度が高
くなるものである。したがって、k=0が最も優先度が
高く、以下、順次低くなる。これにより、ステップS3
10では2番目に優先度の低い状態に設定されることに
なる。
lcolorを[−1]に設定するとともに、ラインナンバー
(ライン番号)lnumを[−1]に設定する。ラインカラ
ーlcolorは閉曲線のカラーを指定するものである。ま
た、ラインナンバーlnumは閉曲線の境界線の番号を指定
するものである。何れも、[−1]に設定されることに
より、初期状態となる。次いで、ステップS310で閉
曲線ナンバーkを(n−1)に設定する。例えば、閉曲
線が6個あるとすると、閉曲線ナンバーkを[5]に設
定する。閉曲線ナンバーkは値が小さい程、優先度が高
くなるものである。したがって、k=0が最も優先度が
高く、以下、順次低くなる。これにより、ステップS3
10では2番目に優先度の低い状態に設定されることに
なる。
【0040】次いで、ステップS312で閉曲線関数C
[k][i][j]を判断する。閉曲線関数C[k]
[i][j]は閉曲線ナンバーkの優先度と、今回の閉
曲線が何れかの閉曲線の中にあるか(つまり、何れかの
閉曲線の境界線が検出されたか)否かを判断可能なもの
である。閉曲線関数C[k][i][j]の判断結果が
TRUEのときは、ステップS314に進んでカラー状
態フラグCflag[k]を反転する。これにより、今回の
閉曲線ナンバーkによって指定された閉曲線のカラー状
態フラグが[−1]から反転して[1]になる。したが
って、対応する閉曲線に対して色が塗られることにな
る。次いで、ステップS316でラインカラーlcolorに
カラー番号を入れるとともに、ラインナンバーlnumに閉
曲線ナンバーkを入れる。これにより、今回の閉曲線に
対してカラー番号(塗るべき色を指定するもの)が与え
られるとともに、その閉曲線の優先度が付与される。次
いで、ステップS318で閉曲線ナンバーkを[1]だ
けデクリメントする。これにより、1つだけ優先度が高
くなる。
[k][i][j]を判断する。閉曲線関数C[k]
[i][j]は閉曲線ナンバーkの優先度と、今回の閉
曲線が何れかの閉曲線の中にあるか(つまり、何れかの
閉曲線の境界線が検出されたか)否かを判断可能なもの
である。閉曲線関数C[k][i][j]の判断結果が
TRUEのときは、ステップS314に進んでカラー状
態フラグCflag[k]を反転する。これにより、今回の
閉曲線ナンバーkによって指定された閉曲線のカラー状
態フラグが[−1]から反転して[1]になる。したが
って、対応する閉曲線に対して色が塗られることにな
る。次いで、ステップS316でラインカラーlcolorに
カラー番号を入れるとともに、ラインナンバーlnumに閉
曲線ナンバーkを入れる。これにより、今回の閉曲線に
対してカラー番号(塗るべき色を指定するもの)が与え
られるとともに、その閉曲線の優先度が付与される。次
いで、ステップS318で閉曲線ナンバーkを[1]だ
けデクリメントする。これにより、1つだけ優先度が高
くなる。
【0041】一方、ステップS312で閉曲線関数C
[k][i][j]の判断結果がFALSEのときは、
ステップS314、ステップS316をジャンプしてス
テップS318に進む。したがって、このときは直ちに
閉曲線ナンバーkが[1]だけデクリメントされ、1つ
上の優先度に移行することになる。ステップS318を
経ると、続くステップS320で閉曲線ナンバーkが
[0]未満である(つまり、未だ一番高い優先度にはな
っていない状態である)か否かを判別する。k=0でな
ければ(最初のルーチンでは優先度は最高になっていな
い)、TRUEに分岐してステップS312に戻ってル
ープを繰り返す。そして、ループの繰り返しにより、閉
曲線ナンバーkが5から4、3、2、1というように順
次上がって、k=0になると、一番高い優先度になった
と判断して図11のステップS322に抜ける。このよ
うにして、各閉曲線に対してカラー状態フラグCflag
[k]が反転することにより、色を塗る許可が与えられ
るとともに、カラー番号によって塗るべき色が指定さ
れ、その閉曲線の優先度が付与される。
[k][i][j]の判断結果がFALSEのときは、
ステップS314、ステップS316をジャンプしてス
テップS318に進む。したがって、このときは直ちに
閉曲線ナンバーkが[1]だけデクリメントされ、1つ
上の優先度に移行することになる。ステップS318を
経ると、続くステップS320で閉曲線ナンバーkが
[0]未満である(つまり、未だ一番高い優先度にはな
っていない状態である)か否かを判別する。k=0でな
ければ(最初のルーチンでは優先度は最高になっていな
い)、TRUEに分岐してステップS312に戻ってル
ープを繰り返す。そして、ループの繰り返しにより、閉
曲線ナンバーkが5から4、3、2、1というように順
次上がって、k=0になると、一番高い優先度になった
と判断して図11のステップS322に抜ける。このよ
うにして、各閉曲線に対してカラー状態フラグCflag
[k]が反転することにより、色を塗る許可が与えられ
るとともに、カラー番号によって塗るべき色が指定さ
れ、その閉曲線の優先度が付与される。
【0042】図11に移り、閉曲線のラインに対して今
度はドット毎に処理するプロセスを実行する。まず、ス
テップS322では閉曲線ナンバーkを(n)に設定す
る。例えば、閉曲線が6個あるとすると、閉曲線ナンバ
ーkを[6]に設定する。閉曲線ナンバーkは値が小さ
い程、優先度が高くなるものであるから、ステップS3
22では一番優先度の低い状態に設定されることにな
る。次いで、ステップS324でカラー状態フラグCfl
ag[k]が[−1]に等しくない状態であるか、すなわ
ち閉曲線が色で塗りつぶされる状態になった否かを判別
する。なお、この判別はフローチャートではCflag
[k]!=−1として表され、「!」の符号は「C言
語」で否定(not)を示すものである。ステップS3
24の判別は優先度の低い閉曲線からカラー状態フラグ
Cflag[k]を判断することを意味している。
度はドット毎に処理するプロセスを実行する。まず、ス
テップS322では閉曲線ナンバーkを(n)に設定す
る。例えば、閉曲線が6個あるとすると、閉曲線ナンバ
ーkを[6]に設定する。閉曲線ナンバーkは値が小さ
い程、優先度が高くなるものであるから、ステップS3
22では一番優先度の低い状態に設定されることにな
る。次いで、ステップS324でカラー状態フラグCfl
ag[k]が[−1]に等しくない状態であるか、すなわ
ち閉曲線が色で塗りつぶされる状態になった否かを判別
する。なお、この判別はフローチャートではCflag
[k]!=−1として表され、「!」の符号は「C言
語」で否定(not)を示すものである。ステップS3
24の判別は優先度の低い閉曲線からカラー状態フラグ
Cflag[k]を判断することを意味している。
【0043】カラー状態フラグCflag[k]が[−1]
に等しくない状態(TRUE)であれば、ステップS3
26に進んでカラーバッファCbufに閉曲線ナンバーk
を入れる。これにより、今回指定された閉曲線ナンバー
kの閉曲線に対して色が塗られることになる。次いで、
ステップS328で閉曲線ナンバーkを[1]だけデク
リメントする。これにより、1つだけ優先度が高くな
る。次いで、ステップS330で閉曲線ナンバーkが
[0]未満である(つまり、未だ一番高い優先度にはな
っていない状態である)か否かを判別する。k=0でな
ければ(最初のルーチンでは優先度は最高になっていな
い)、TRUEに分岐してステップS324に戻ってル
ープを繰り返す。そして、ループの繰り返しにより、閉
曲線ナンバーkが6から4、3、2、1というように順
次上がって、k=0になると、一番高い優先度になった
と判断してステップS332に抜ける。一方、ステップ
S324でカラー状態フラグCflag[k]が[−1]に
等しい状態(FAUSE)であれば、ステップS326
をジャンプしてステップS328に進む。したがって、
このときはカラーバッファCbufに閉曲線ナンバーkが
入れられず、今回指定された閉曲線ナンバーkの閉曲線
に対して色が塗られないことになる。このようにして、
優先度の低い閉曲線からカラーバッファCbufに閉曲線
ナンバーkが入れられる。
に等しくない状態(TRUE)であれば、ステップS3
26に進んでカラーバッファCbufに閉曲線ナンバーk
を入れる。これにより、今回指定された閉曲線ナンバー
kの閉曲線に対して色が塗られることになる。次いで、
ステップS328で閉曲線ナンバーkを[1]だけデク
リメントする。これにより、1つだけ優先度が高くな
る。次いで、ステップS330で閉曲線ナンバーkが
[0]未満である(つまり、未だ一番高い優先度にはな
っていない状態である)か否かを判別する。k=0でな
ければ(最初のルーチンでは優先度は最高になっていな
い)、TRUEに分岐してステップS324に戻ってル
ープを繰り返す。そして、ループの繰り返しにより、閉
曲線ナンバーkが6から4、3、2、1というように順
次上がって、k=0になると、一番高い優先度になった
と判断してステップS332に抜ける。一方、ステップ
S324でカラー状態フラグCflag[k]が[−1]に
等しい状態(FAUSE)であれば、ステップS326
をジャンプしてステップS328に進む。したがって、
このときはカラーバッファCbufに閉曲線ナンバーkが
入れられず、今回指定された閉曲線ナンバーkの閉曲線
に対して色が塗られないことになる。このようにして、
優先度の低い閉曲線からカラーバッファCbufに閉曲線
ナンバーkが入れられる。
【0044】ステップS332ではラインカラーlcolor
が[−1]に等しくない状態であるか、すなわち閉曲線
のカラーが指定されたか否かを判別する。なお、この判
別はフローチャートではlcolor!=−1として表され、
「!」の符号は「C言語」で否定(not)を示す。ラ
インカラーlcolorが[−1]に等しくない状態であれば
(閉曲線のカラーが指定されていれば)、ステップS3
34に進んでラインナンバー(ライン番号)lnumがカラ
ーバッファCbufより小さいか否かを判別する。カラー
バッファCbufには優先度の高い曲線の色が入るから、
ラインナンバー(ライン番号)lnumがカラーバッファC
bufよりも小さければ、TRUEに分岐してステップS
336に進み、ポインタi、jによって指定されるライ
ンおよびドットのカラーcolor[i][j](以下、ポ
インタ指定カラーという)を優先度の高いラインカラー
lcolorにセットし、その後、ステップS338に進む。
これにより、優先度の高い曲線の色がその閉曲線に塗ら
れることになる。
が[−1]に等しくない状態であるか、すなわち閉曲線
のカラーが指定されたか否かを判別する。なお、この判
別はフローチャートではlcolor!=−1として表され、
「!」の符号は「C言語」で否定(not)を示す。ラ
インカラーlcolorが[−1]に等しくない状態であれば
(閉曲線のカラーが指定されていれば)、ステップS3
34に進んでラインナンバー(ライン番号)lnumがカラ
ーバッファCbufより小さいか否かを判別する。カラー
バッファCbufには優先度の高い曲線の色が入るから、
ラインナンバー(ライン番号)lnumがカラーバッファC
bufよりも小さければ、TRUEに分岐してステップS
336に進み、ポインタi、jによって指定されるライ
ンおよびドットのカラーcolor[i][j](以下、ポ
インタ指定カラーという)を優先度の高いラインカラー
lcolorにセットし、その後、ステップS338に進む。
これにより、優先度の高い曲線の色がその閉曲線に塗ら
れることになる。
【0045】一方、ステップS332でラインカラーlc
olorが[−1]に等しい状態(閉曲線のカラーが指定さ
れていない状態)であれば、ステップS340に分岐し
てポインタ指定カラーcolor[i][j]をカラー状態
フラグCflag[Cbuf]にセットしてステップS338
に進む。カラー状態フラグCflag[Cbuf]はバックグ
ラウンド(背景)の色を塗る状態を示すフラグである。
したがって、この場合にはその閉曲線にバックグラウン
ド(背景)の色が塗られる。また、ステップS334で
ラインナンバー(ライン番号)lnumがカラーバッファC
buf以上のときには、FALSEに分岐してステップS
340に進み、同様にポインタ指定カラーcolor[i]
[j]をカラー状態フラグCflag[Cbuf]にセットし
てステップS338に進む。したがって、この場合もそ
の閉曲線にバックグラウンド(背景)の色が塗られる。
このようにして、今回のポインタi、jによって指定さ
れたラインおよびドットに対して優先度の高い閉曲線の
色が塗られたり、あるいはバックグラウンド(背景)の
色が塗られたりする。
olorが[−1]に等しい状態(閉曲線のカラーが指定さ
れていない状態)であれば、ステップS340に分岐し
てポインタ指定カラーcolor[i][j]をカラー状態
フラグCflag[Cbuf]にセットしてステップS338
に進む。カラー状態フラグCflag[Cbuf]はバックグ
ラウンド(背景)の色を塗る状態を示すフラグである。
したがって、この場合にはその閉曲線にバックグラウン
ド(背景)の色が塗られる。また、ステップS334で
ラインナンバー(ライン番号)lnumがカラーバッファC
buf以上のときには、FALSEに分岐してステップS
340に進み、同様にポインタ指定カラーcolor[i]
[j]をカラー状態フラグCflag[Cbuf]にセットし
てステップS338に進む。したがって、この場合もそ
の閉曲線にバックグラウンド(背景)の色が塗られる。
このようにして、今回のポインタi、jによって指定さ
れたラインおよびドットに対して優先度の高い閉曲線の
色が塗られたり、あるいはバックグラウンド(背景)の
色が塗られたりする。
【0046】次いで、ステップS338でポインタjを
[1]だけインクリメントして次のドットに移行する。
次いで、ステップS342でインクリメント後のポイン
タjがndot(例えば、1ラインの最大値でndot=25
6ドット)まで到達したか否かを判別し、到達していな
ければ図10のステップS308に戻って同様のルーチ
ンを繰り返す。これにより、次回のルーチンでは同じラ
イン上の次のドットに対して同様の処理が行われる。そ
して、ステップS342でポインタjがndot(例え
ば、256ドット)まで到達すると、1ラインの全ての
ドットについてカラー設定処理が終了したと判断してス
テップS344に抜ける。ステップS344ではポイン
タiを[1]だけインクリメントして次のラインに移行
する。次いで、ステップS346でインクリメント後の
ポインタiがnline(例えば、1画面の最大値でnline
=525本)まで到達したか否かを判別し、到達してい
なければ図10のステップS306に戻って再びドット
を指定するポインタjを[0]に戻して同様のルーチン
を繰り返す。これにより、次回のルーチンでは次のライ
ンに移行して同様の処理が行われる。そして、ステップ
S346でポインタiがnline(例えば、525本)ま
で到達すると、全てのラインについてカラー設定処理が
終了したと判断して本ルーチンを終了する。
[1]だけインクリメントして次のドットに移行する。
次いで、ステップS342でインクリメント後のポイン
タjがndot(例えば、1ラインの最大値でndot=25
6ドット)まで到達したか否かを判別し、到達していな
ければ図10のステップS308に戻って同様のルーチ
ンを繰り返す。これにより、次回のルーチンでは同じラ
イン上の次のドットに対して同様の処理が行われる。そ
して、ステップS342でポインタjがndot(例え
ば、256ドット)まで到達すると、1ラインの全ての
ドットについてカラー設定処理が終了したと判断してス
テップS344に抜ける。ステップS344ではポイン
タiを[1]だけインクリメントして次のラインに移行
する。次いで、ステップS346でインクリメント後の
ポインタiがnline(例えば、1画面の最大値でnline
=525本)まで到達したか否かを判別し、到達してい
なければ図10のステップS306に戻って再びドット
を指定するポインタjを[0]に戻して同様のルーチン
を繰り返す。これにより、次回のルーチンでは次のライ
ンに移行して同様の処理が行われる。そして、ステップ
S346でポインタiがnline(例えば、525本)ま
で到達すると、全てのラインについてカラー設定処理が
終了したと判断して本ルーチンを終了する。
【0047】このように、1画面をラインとドットに分
けて、カラー設定処理が行われ、このとき描画する全て
の閉曲線(例えば、似顔絵の各部位に対応する閉曲線)
についてのフラグ設定を終了した後、全ての閉曲線のフ
ラグを参考にしてカラー設定エリアにカラー番号が設定
される。この場合、何れかの閉曲線の境界線が検出され
たときには、その境界線がいま属している閉曲線よりも
優先度の高い閉曲線の内部にあるときには、優先度の高
い内部カラーをカラー設定エリアに設定するようにカラ
ー状態フラグが制御される。したがって、常に優先度の
高い閉曲線のカラーで塗りつぶされることになり、似顔
絵を簡単なデータ構成で作成することができる。具体的
には、例えば図4に示すように似顔絵の各部位(前髪、
髪型、髪の光沢、顔の輪郭、顔のパーツ、首)に対応す
る閉曲線を作成するとともに、各部位のカラー設定エリ
アにカラー番号を設定していき、画面に表示するときに
は、優先度の高い各部位のカラーでその閉曲線を塗りつ
ぶす処理が行われる。これにより、図13に示すような
似顔絵100の完成画面が表示部5に表示される。この
場合、本実施例では表示部5(例えば、コンピュータ画
面あるいはテレビ画面)上に似顔絵をカラー表示させる
ために、ピクセル毎にカラーデータを持つ必要がなく、
データ量が少なくて済み、メモリ装置の容量を少なくす
ることができ、低コストにすることができる。また、似
顔絵でなく、アニメーション画像をカラー表示させる場
合にも本実施例と同様の効果を得ることができる。
けて、カラー設定処理が行われ、このとき描画する全て
の閉曲線(例えば、似顔絵の各部位に対応する閉曲線)
についてのフラグ設定を終了した後、全ての閉曲線のフ
ラグを参考にしてカラー設定エリアにカラー番号が設定
される。この場合、何れかの閉曲線の境界線が検出され
たときには、その境界線がいま属している閉曲線よりも
優先度の高い閉曲線の内部にあるときには、優先度の高
い内部カラーをカラー設定エリアに設定するようにカラ
ー状態フラグが制御される。したがって、常に優先度の
高い閉曲線のカラーで塗りつぶされることになり、似顔
絵を簡単なデータ構成で作成することができる。具体的
には、例えば図4に示すように似顔絵の各部位(前髪、
髪型、髪の光沢、顔の輪郭、顔のパーツ、首)に対応す
る閉曲線を作成するとともに、各部位のカラー設定エリ
アにカラー番号を設定していき、画面に表示するときに
は、優先度の高い各部位のカラーでその閉曲線を塗りつ
ぶす処理が行われる。これにより、図13に示すような
似顔絵100の完成画面が表示部5に表示される。この
場合、本実施例では表示部5(例えば、コンピュータ画
面あるいはテレビ画面)上に似顔絵をカラー表示させる
ために、ピクセル毎にカラーデータを持つ必要がなく、
データ量が少なくて済み、メモリ装置の容量を少なくす
ることができ、低コストにすることができる。また、似
顔絵でなく、アニメーション画像をカラー表示させる場
合にも本実施例と同様の効果を得ることができる。
【0048】なお、上記実施例では閉曲線を作成する場
合の曲線パラメータとしてベジェ曲線のパラメータを使
用しているが、これに限るものではなく、例えばBスプ
ライン曲線等の任意の曲線を用いることも可能である。
また、この他に放物線、双曲線、三角関数等のようなパ
ラメータを適宜使用することも可能である。この場合、
作成する閉曲線の形状に応じて放物線、双曲線、三角関
数等の適切な数式を用いればよい。このようにすると、
その時々に応じた適切な閉曲線を作成することができ
る。また、表示するカラー画像は似顔絵やアニメーショ
ン画像に限らず、ゲーム等で使用する各種の画像、キャ
ラクターや背景データであってもよい。さらに、本発明
はコンピュータ画面上あるいはテレビ画面上において、
似顔絵やアニメーション画像をカラー表示させる場合に
限らず、他の分野、他の画像の表示にも適用できる。
合の曲線パラメータとしてベジェ曲線のパラメータを使
用しているが、これに限るものではなく、例えばBスプ
ライン曲線等の任意の曲線を用いることも可能である。
また、この他に放物線、双曲線、三角関数等のようなパ
ラメータを適宜使用することも可能である。この場合、
作成する閉曲線の形状に応じて放物線、双曲線、三角関
数等の適切な数式を用いればよい。このようにすると、
その時々に応じた適切な閉曲線を作成することができ
る。また、表示するカラー画像は似顔絵やアニメーショ
ン画像に限らず、ゲーム等で使用する各種の画像、キャ
ラクターや背景データであってもよい。さらに、本発明
はコンピュータ画面上あるいはテレビ画面上において、
似顔絵やアニメーション画像をカラー表示させる場合に
限らず、他の分野、他の画像の表示にも適用できる。
【0049】
【発明の効果】本発明によれば、カラーの画像(例え
ば、似顔絵あるいはアニメーション画像)を作成する場
合、まず色を省略した複数の閉曲線で画像を作成し、次
いで、この閉曲線の境界および内部を塗りつぶす色を指
定し、さらに各閉曲線を色で塗りつぶす場合の優先順位
を決定し、この優先順位に従って各閉曲線の境界および
その内部を指定された色で塗りつぶしてカラー画像を作
成しているので、以下の効果を得ることができる。 例えば、似顔絵をカラー表示させる場合でも、従来の
ようにピクセル毎にカラーデータを持つ必要がなく、単
に閉曲線データとカラーデータとを持てば画像をカラー
表示することができる。 その結果、少ないデータ量で、低コストに、似顔絵や
アニメーション画像等をカラー表示させることができ
る。
ば、似顔絵あるいはアニメーション画像)を作成する場
合、まず色を省略した複数の閉曲線で画像を作成し、次
いで、この閉曲線の境界および内部を塗りつぶす色を指
定し、さらに各閉曲線を色で塗りつぶす場合の優先順位
を決定し、この優先順位に従って各閉曲線の境界および
その内部を指定された色で塗りつぶしてカラー画像を作
成しているので、以下の効果を得ることができる。 例えば、似顔絵をカラー表示させる場合でも、従来の
ようにピクセル毎にカラーデータを持つ必要がなく、単
に閉曲線データとカラーデータとを持てば画像をカラー
表示することができる。 その結果、少ないデータ量で、低コストに、似顔絵や
アニメーション画像等をカラー表示させることができ
る。
【図1】本発明による似顔絵作成装置の一実施例を示す
構成図である。
構成図である。
【図2】同実施例の似顔絵作成処理のメインプログラム
を示すフローチャートである。
を示すフローチャートである。
【図3】同実施例のROMに格納されているデータを示
す図である。
す図である。
【図4】同実施例のRAMに格納されるデータを示す図
である。
である。
【図5】同実施例の閉曲線A〜F作成処理のサブルーチ
ンを示すフローチャートである。
ンを示すフローチャートである。
【図6】同実施例のドット算出処理のサブルーチンを示
すフローチャートである。
すフローチャートである。
【図7】同実施例のドット算出処理のサブルーチンを示
すフローチャートである。
すフローチャートである。
【図8】同実施例のベジェ曲線を作成する場合のデータ
計算処理のサブルーチンを示すフローチャートである。
計算処理のサブルーチンを示すフローチャートである。
【図9】同実施例のベジェ曲線を作成する場合のデータ
計算処理のサブルーチンを示すフローチャートである。
計算処理のサブルーチンを示すフローチャートである。
【図10】同実施例のカラー設定処理のサブルーチンを
示すフローチャートである。
示すフローチャートである。
【図11】同実施例のカラー設定処理のサブルーチンを
示すフローチャートである。
示すフローチャートである。
【図12】同実施例のカラー状態フラグを説明する図で
ある。
ある。
【図13】同実施例の似顔絵の一例を示す図である。
1 CPU 2 ROM 3 RAM 4 スイッチ部 5 表示部(表示手段) 6 印刷部(印刷手段) 21 閉曲線作成手段 22 色指定手段 23 優先順位決定手段 24 カラー画像作成手段
Claims (10)
- 【請求項1】 所定の画像を色を省略した複数の閉曲線
で作成し、これらの閉曲線の境界および内部を塗りつぶ
す色を指定し、 前記複数の閉曲線の境界および内部を塗りつぶす場合の
各閉曲線の優先順位を決定し、 この優先順位に従って各閉曲線の境界およびその内部を
指定された色で塗りつぶして所定のカラー画像を作成す
ることを特徴とする画像処理方法。 - 【請求項2】 前記閉曲線は、直線あるいはベジェ曲線
のうちの1つ以上によって作成されることを特徴とする
請求項1記載の画像処理方法。 - 【請求項3】 前記所定の画像を色を省略した複数の閉
曲線で作成する処理では、複数の閉曲線を作成する閉曲
線データを用い、 これら複数の閉曲線の境界およびその内部を指定された
色で塗りつぶす処理では、塗りつぶしのためのカラーデ
ータを用いることを特徴とする請求項1記載の画像処理
方法。 - 【請求項4】 前記閉曲線を直線によって作成する処理
は、直線を多数のドットによって形成するものであり、 直線の両端を形成する2つのドット位置を決定するとと
もに、そのドット位置の傾きを算出する処理と、 この傾きに応じてx座標又はy座標を1単位ずつ増加さ
せた場合の誤差を累積する処理と、 この誤差が所定値を超えるときにのみ、次のドットのx
座標又はy座標の位置を変更するとともに、前記累算さ
れた誤差から一定値を減算する処理と、を有することを
特徴とする請求項1記載の画像処理方法。 - 【請求項5】 所定の画像を色を省略した複数の閉曲線
で作成する閉曲線作成手段と、 閉曲線作成手段によって作成された閉曲線の境界および
内部を塗りつぶす色を指定する色指定手段と、 前記複数の閉曲線の境界および内部を塗りつぶす場合の
各閉曲線に対する優先順位を決定する優先順位決定手段
と、 この優先順位に従って各閉曲線の境界およびその内部を
指定された色で塗りつぶして所定のカラー画像を作成す
るカラー画像作成手段と、を備えたことを特徴とする画
像処理装置。 - 【請求項6】 前記閉曲線作成手段は、直線あるいはベ
ジェ曲線のうちの1つ以上によって閉曲線を作成するこ
とを特徴とする請求項6記載の画像処理装置。 - 【請求項7】 前記閉曲線作成手段は、所定の画像を構
成する複数の閉曲線を閉曲線データによって作成し、 前記カラー画像作成手段は、複数の閉曲線の境界および
その内部を、指定されたカラーデータに対応する色で塗
りつぶすことを特徴とする請求項6記載の画像処理装
置。 - 【請求項8】 前記カラー画像作成手段によって作成さ
れた所定のカラー画像を表示する表示手段を、さらに有
することを特徴とする請求項6記載の画像処理装置。 - 【請求項9】 前記カラー画像作成手段によって作成さ
れた所定のカラー画像を印刷する印刷手段を、さらに有
することを特徴とする請求項6記載の画像処理装置。 - 【請求項10】 前記閉曲線作成手段は、閉曲線を多数
のドットからなる直線によって作成する場合、 直線の両端を形成する2つのドット位置を決定するとと
もに、そのドット位置の傾きを算出する手段と、 この傾きに応じてx座標又はy座標を1単位ずつ増加さ
せた場合の誤差を累積する手段と、 この誤差が所定値を超えるときにのみ、次のドットのx
座標又はy座標の位置を変更するとともに、前記累算さ
れた誤差から一定値を減算する手段とを有することを特
徴とする請求項6記載の画像処理装置。
Priority Applications (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7535394A JPH07262391A (ja) | 1994-03-22 | 1994-03-22 | 画像処理方法およびその装置 |
| US08/405,521 US5611037A (en) | 1994-03-22 | 1995-03-16 | Method and apparatus for generating image |
| DE69518180T DE69518180T2 (de) | 1994-03-22 | 1995-03-21 | Verfahren und Gerät zur Bilderzeugung |
| EP95104136A EP0675461B1 (en) | 1994-03-22 | 1995-03-21 | Method and apparatus for generating image |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| JP7535394A JPH07262391A (ja) | 1994-03-22 | 1994-03-22 | 画像処理方法およびその装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| JPH07262391A true JPH07262391A (ja) | 1995-10-13 |
Family
ID=13573795
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP7535394A Pending JPH07262391A (ja) | 1994-03-22 | 1994-03-22 | 画像処理方法およびその装置 |
Country Status (1)
| Country | Link |
|---|---|
| JP (1) | JPH07262391A (ja) |
-
1994
- 1994-03-22 JP JP7535394A patent/JPH07262391A/ja active Pending
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP4385524B2 (ja) | ポリゴンデータの生成方法及び、これを用いた画像表示装置 | |
| JP2690110B2 (ja) | 走査変換方法 | |
| US5611037A (en) | Method and apparatus for generating image | |
| JPH06266847A (ja) | ラスタ化されたオブジェクトを表示する方法および装置 | |
| JPS62123573A (ja) | コンピユ−タ・グラフイツク装置およびその操作方法 | |
| US5640589A (en) | Method and device for generating graphic data using a writing motion model | |
| WO2001009842A1 (en) | System for rapidly performing scan conversion with anti-aliasing upon outline fonts and other graphic elements | |
| US5870107A (en) | Character and symbol pattern generator based on skeleton data including thickness calculation | |
| JP2752975B2 (ja) | 3次曲線プロット方法 | |
| US5642476A (en) | Computer generated variable line width of a vector graphic | |
| EP0749099A2 (en) | Blend control system | |
| EP0603820B1 (en) | Character generating method and apparatus | |
| JP3351093B2 (ja) | 画像処理方法およびその装置 | |
| JPH07262391A (ja) | 画像処理方法およびその装置 | |
| JPH07262399A (ja) | 画像処理方法およびその装置 | |
| JPH07262398A (ja) | 画像処理方法およびその装置 | |
| JPH09180000A (ja) | 3次元グラフィックス制御装置 | |
| JP3059739B2 (ja) | 曲線描画機能を備えた情報処理装置および処理方法 | |
| JP3266905B2 (ja) | 図形処理装置 | |
| JP2748787B2 (ja) | 曲線発生装置 | |
| EP0454125B1 (en) | Method of producing characters and figures using computer | |
| JPS63303477A (ja) | ベクトル文字もしくはベクトル図形の処理方法 | |
| JP2782904B2 (ja) | 多角形塗りつぶし方式 | |
| JP2897721B2 (ja) | 多角形二重化装置 | |
| JP2538631B2 (ja) | ベクトル文字の処理方法 |