(57)【特許請求の範囲】
【請求項１】
色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出手段と、
前記検出手段により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定手段と、
前記閾値設定手段により設定された色差閾値に従って前記検出手段が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整手段と、
前記閾値調整手段によって調整される色差閾値に従って前記検出手段が検出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御手段と
を具備することを特徴とする画像制御装置。
【請求項２】
色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出処理と、
前記検出処理により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定処理と、
前記閾値設定処理により設定された色差閾値に従って前記検出処理が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整処理と、
前記閾値調整処理によって調整される色差閾値に従って前記検出手段が抽出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御処理と
を具備することを特徴とする画像制御方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、例えば，バーチャルリアリティ（仮想現実感）を創出するビデオゲームなどに用いて好適な画像制御装置、および、画像制御方法に関する。
【０００２】
【従来の技術】
従来より、操作パッド等の操作に応じてオブジェクト画像を動画制御したり、効果音を発生させたりする画像制御装置が各種実用化されている。なお、ここで言うオブジェクト画像とは、ゲーム画面に表示される「キャラクタ」を指し、背景となるバックグラウンド画面上に移動表示されるものである。この種の装置は、ビデオゲームあるいはＴＶゲームと呼ばれ、遊戯者の反射神経を問うシューティングゲームや、仮想的な現実感をシミュレートするゲーム等が知られている。
【０００３】
このようなビデオゲームは、ゲーム操作に対応したビデオ信号を発生する画像処理部と、この画像処理部から供給されるビデオ信号を映像表示するディスプレイとから構成される。画像処理部は、ＣＰＵ、ＲＯＭおよびＲＡＭ等から構成され、例えば、ＲＯＭパックに記憶された画像情報および制御情報を順次読み出し、画面背景となるバックグラウンド画像をディスプレイに表示すると共に、ゲーム操作に応じて対応するキャラクタ（オブジェクト画像）を画面背景上を動画表示し、その動きに応じた効果音を発音するようにしている。
【０００４】
【発明が解決しようとする課題】
さて、上述したように、従来の画像制御装置では、操作パッドの操作に応じてオブジェクト画像を表示制御する態様が一般的であり、仮想的な現実感をシミュレートするゲームでは不向きになることが多い。つまり、仮想的な現実感を追求するには、実際の行動（行為）に即した形態で画像制御にする必要がある。例えば、投手が球を投げるシーンを画面に表示し、この表示画面に基づいて遊戯者が打撃操作するようにしたシミュレーションゲームでは、操作パッドに替えて「バット」が操作子となり、この「バット」の位置あるいは動きに応じて画像制御することになる。
【０００５】
このような画像制御を行う場合には、周知のクロマキー検出処理により操作子の位置や動きを検出する手法が採られている。クロマキー検出処理とは、この場合、予め「バット（操作子）」を特定の色で色付けしておき、遊戯者を撮像した画像からこの特定色のクロマキー像を抽出し、これによって、遊戯者が持つ操作子の位置や動きを画面上の位置として検出するものである。そして、検出したクロマキー像の画面上の位置に基づきオブジェクト画像を表示制御することになる。
【０００６】
ところで、クロマキー検出処理では、撮像時の明るさや、特定色に色付けされた操作子であっても、例えば光沢色のように光の受け具合に応じて色の見え方が変化することがあり、このために検出したクロマキー像がぶれたり点滅したりすることが起こり、完全なクロマキー像として検出されず、結果的に位置検出誤差を招く要因になる。
一方、こうした色合の変化に対処するよう、クロマキー検出閾値の範囲を広く設定することが考えられるが、そうすると、今度は特定色の操作子に近い色合の物体がクロマキー対象として誤って検出される虞があり、適正なクロマキー検出が困難になるという弊害を招致する。
【０００７】
そこで本発明は、上述した事情に鑑みてなされたもので、常に最適なクロマキー検出閾値を保ちながら適正なクロマキー検出を行い、位置検出誤差を発生することなく表示制御することができる画像制御装置、および、画像制御方法を提供することを目的としている。
【０００８】
【課題を解決するための手段】
上記目的を達成するため、請求項１記載の発明では、色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出手段と、前記検出手段により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定手段と、前記閾値設定手段により設定された色差閾値に従って前記検出手段が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整手段と、前記閾値調整手段によって調整される色差閾値に従って前記検出手段が検出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御手段とを具備することを特徴としている。
【０００９】
請求項２に記載の発明では、色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出処理と、前記検出処理により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定処理と、前記閾値設定処理により設定された色差閾値に従って前記検出処理が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整処理と、前記閾値調整処理によって調整される色差閾値に従って前記検出手段が抽出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御処理とを具備することを特徴とする。
【００１６】
【作用】
本発明にあっては、撮像信号から検出したクロマキー像の面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定すると、設定された色差閾値に従って検出されるクロマキー像の面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断する。そして、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭めるように調整し、調整された色差閾値に従って検出されるクロマキー像の重心位置に応じて表示画面の表示を制御するので、常に最適なクロマキー検出閾値を保ちながら適正なクロマキー検出を行い、位置検出誤差を発生することなく表示制御することが可能になる。
【００１７】
【実施例】
以下、図面を参照して本発明の実施例について説明する。
Ａ．実施例の概要
図１は、本発明による画像制御装置の全体構成を示す外観図であり、バッティング動作をシミュレートするゲームに適用した一例を図示するものである。この図において、１はＣＣＤ等の固体撮像素子を備える撮像部であり、バッターボックス（図示略）に位置する遊戯者Ｂを撮像する。ここで、遊戯者Ｂは、例えば、クロマキー検出用として「青色」に着色されたバットＢＡＴを用いてバッティング動作する。ＣＰは調整用パネルであり、上記バットＢＡＴと同一の材質で形成され、かつ、同一色に着色される。この調整用パネルＣＰは、予め撮像部１の所定視野に収る位置に配設されるものであり、後述するクロマキー検出閾値の調整に用いられる。
【００１８】
２は装置本体であり、撮像部１から供給される撮像信号にクロマキー検出を施し、実画像におけるバットＢＡＴ像（あるいは調整用パネルＣＰ像）の位置、面積および重心位置を判別する。ここで言う実画像とは、撮像部１によって撮像される画像を指す。また、装置本体２は、ゲームの背景シーンとなるバックグラウンド画像と、このバックグラウンド画像上を移動表示されるオブジェクト画像とを合成し、これをコンピュータグラフィック画像（以下、ＣＧ画像と称す）としてディスプレイ３に表示する。ディスプレイ３には、例えば、背景シーン上における投手のスローイング動作と、スローイングに応じたボールの飛翔動作とが動画表示される。
【００１９】
さらに、装置本体２は、図２（イ）に示すように、ＣＧ画像中に表示されるボール位置からその重心位置を求める一方、同図（ロ）に示すように、実画像からクロマキー検出されたバットＢＡＴ像の重心位置を算出する。そして、ＣＧ画像中の「ボール」と実画像中の「バットＢＡＴ」とが衝突するか否かを所定タイミング毎に判定し、衝突する際には、ミートするタイミング時点で両重心位置の差に応じて打撃具合を求める。
例えば、図２（ハ）のように、「ボール」と「バットＢＡＴ」との衝突時点に両重心位置が一致すれば、ジャストミートとして「ホームラン」とするように現実に近いシミュレーションを行う。
【００２０】
Ｂ．実施例の構成
次に、図３を参照して撮像部１および装置本体２の電気的構成について説明する。
（１）撮像部１の構成
撮像部１は、構成要素１０〜１３から構成されている。１０は発振回路であり、８倍オーバーサンプリング信号８ｆＳＣを発生して出力する。１１はこの８倍オーバーサンプリング信号８ｆＳＣを次段のクロックドライバ１２に供給すると共に、ＣＣＤ１３から出力される撮像信号ＳＳをサンプリング画像データＤＳに変換する撮像信号処理部であり、その構成については後述する。クロックドライバ１２は、発振回路１２から供給される８倍オーバーサンプリング信号８ｆＳＣに基づき、水平駆動信号、垂直駆動信号、水平／垂直同期信号および帰線消去信号等の各種タイミング信号を発生する一方、上記水平駆動信号および垂直駆動信号に対応する撮像駆動信号を発生してＣＣＤ１３に供給する。ＣＣＤ１３は、この撮像駆動信号に従って撮像信号ＳＳを発生する。
【００２１】
撮像信号処理部１１は、ＣＣＤ１３から供給される撮像信号ＳＳをコンディショニングした後、Ａ／Ｄ変換してサンプリング画像データＤＳを発生するものであり、その概略構成について図４を参照して説明する。図４において、１１ａはサンプリング回路であり、上述したクロックドライバ１２から供給される４倍オーバーサンプリング信号４ｆＳＣに応じて撮像信号ＳＳをサンプルホールドして次段へ出力する。１１ｂはサンプリングされた撮像信号ＳＳを所定レベルに変換して出力するＡＧＣ（自動利得制御）回路である。
【００２２】
１１ｃは、撮像信号ＳＳのガンマ特性をγ＝１／２．２に補正して出力するγ補正回路である。１１ｄは、このガンマ補正された撮像信号ＳＳを８ビット長のサンプリング画像データＤＳに変換して出力するＡ／Ｄ変換回路である。サンプリング画像データＤＳは、後述するビデオ信号処理部２０に供給される。１１ｅはビデオ信号処理部２０から供給されるコンポジット映像信号ＤＣＶをアナログビデオ信号ＳＶに変換して前述したディスプレイ３に出力するＤ／Ａ変換回路である。
【００２３】
（２）装置本体２の構成
次に、図３〜図１１を参照して装置本体２の構成について説明する。装置本体２は、ビデオ信号処理部２０、画像処理部３０、位置検出処理部４０および制御部５０から構成されており、以下、これら各部について詳述する。
▲１▼ビデオ信号処理部２０の構成
ビデオ信号処理部２０は、撮像部１から供給されるサンプリング画像データＤＳに対して色差変換処理とクロマキー検出処理とを施し、その結果を後述する位置検出処理部４０に供給する。また、この処理部２０は、後述する画像処理部３０から供給される画像処理データＤＳＰをコンポジット映像信号ＤＣＶに変換し、前述したＤ／Ａ変換回路１１ｅ（図４参照）に供給する。なお、この画像処理データＤＳＰとは、バックグラウンド画像と、当該バックグラウンド画像上に移動表示されるオブジェクト画像とを合成したＣＧ画像を形成するものである。
【００２４】
ここで、図５を参照して上記各処理を具現するビデオ信号処理部２０の構成について説明する。図５において、２０ａは色分離フィルタであり、サンプリング画像データＤＳを信号Ｙｅ（イエロー）、信号Ｃｙ（シアン）および信号Ｇ（グリーン）に色分離して次段へ出力する。２０ｂは映像信号中における変化点の前後に対して輝度変調を施して画質調整する輪郭補正回路である。２０ｃはホワイトバランス回路であり、各信号Ｙｅ，Ｃｙ，Ｇを規定レベルに設定して出力する。２０ｄはバンドパスフィルタで構成される分別フィルタであり、各信号Ｙｅ，Ｃｙを信号Ｒ（赤）および信号Ｂ（青）に分別して出力する。２０ｅは三原色を表わす信号Ｒ，Ｇ，Ｂを各８ビット長の輝度信号Ｙ、色差信号Ｂ−Ｙ，Ｒ−Ｙに変換するマトリクス回路である。
【００２５】
２０ｆはクロマキー信号発生回路であり、後述するＲ−Ｙ閾値およびＢ−Ｙ閾値に応じた閾値設定領域内に、色差信号Ｂ−Ｙ，Ｒ−Ｙがそれぞれ収る時に「Ｈ」レベルのクロマキー検出信号ＣＲＯを発生する。すなわち、この回路２０ｆでは、図６に示すように、ＣＰＵ５１から供給されるＲ−Ｙ閾値（００Ｈ〜４０Ｈ：１６進表示）と、Ｂ−Ｙ閾値（４０Ｈ〜７ＦＨ：１６進表示）とで定められる閾値設定領域内に色差信号Ｂ−Ｙ，Ｒ−Ｙが収る場合、クロマキー検出した旨を表わす「Ｈ」レベルのクロマキー検出信号ＣＲＯを出力する。
なお、この実施例では、Ｒ−Ｙ閾値およびＢ−Ｙ閾値は、図６に図示するよう、「青色」に対応するよう設定される。また、Ｒ−Ｙ閾値およびＢ−Ｙ閾値は、前述した調整用パネルＣＰを撮像して得られるクロマキー像の面積あるいは重心位置が既定値に略一致するよう可変制御されるものであり、こうした調整動作については追って説明する。
【００２６】
２０ｇは、マトリクス回路２０ｅから出力される各８ビット長の輝度信号Ｙ、色差信号Ｂ−Ｙ，Ｒ−Ｙを、４ビット長の輝度信号Ｙ’、２ビット長の色差信号Ｂ−Ｙ’，Ｒ−Ｙ’に変換する色差変換回路である。２０ｈは、画像処理部３０（後述する）から供給される画像処理データＤＳＰ（ＲＧＢ信号）を輝度信号Ｙ、色差信号Ｂ−Ｙ，Ｒ−Ｙに変換するマトリクス回路である。２０ｉはセレクタであり、後述する位置検出処理部４０から供給されるセレクト信号ＳＬに応じてマトリクス回路２０ｅの出力、あるいはマトリクス回路２０ｈの出力のいずれかを選択して次段へ供給する。２０ｊはモジュレータである。モジュレータ２０ｊは、セレクタ２０ｉを介して供給される輝度信号Ｙ、色差信号Ｂ−Ｙ，Ｒ−Ｙに各種同期信号（水平／垂直同期信号および帰線消去信号）を重畳したディジタルコンポジット映像信号ＤＣＶを生成する。
【００２７】
上記構成によれば、ビデオ信号処理部２０は、撮像部１から供給されるサンプリング画像データＤＳを輝度信号Ｙ’、２ビット長の色差信号Ｂ−Ｙ’，Ｒ−Ｙ’に変換すると共に、クロマキー検出信号ＣＲＯを発生して画像処理部３０（後述する）側へ供給する。また、この処理部２０は、画像処理部３０側から入力される画像処理データＤＳＰ（ＲＧＢ信号）、あるいは撮像部１から供給されるサンプリング画像データＤＳのいずれかをセレクト信号ＳＬに応じて選択し、選択されたデータをコンポジット映像信号ＤＣＶに変換して出力する。なお、セレクト信号ＳＬは、後述する位置検出処理部４０から供給される信号である。
【００２８】
▲２▼画像処理部３０の構成
次に、画像処理部３０の構成について説明する。画像処理部３０は、ビデオディスプレイプロセッサ（以下、ＶＤＰと略す）３１とＶＲＡＭ３２とから構成される。このＶＤＰ３１の基本的機能は、ＶＲＡＭ３２に格納されるバックグラウンド画像データＤＢＧおよびオブジェクト画像データＤＯＢを制御部５０（後述する）側から供給される制御信号ＳＣに応じて読み出し、これを１走査ライン毎のドット表示色を表わす画像処理データＤＳＰを発生することにある。以下、図７を参照して各部の構成について詳述する。
【００２９】
図において、３１ａはＣＰＵインタフェース回路であり、制御部５０を構成するＣＰＵ５１のバスを介して供給される制御信号ＳＣに応じて構成要素３１ｂ〜３１ｄに各種制御指示を与える。制御信号ＳＣは、バックグラウンド画像およびオブジェクト画像を表示制御する各種コマンドや、ＶＲＡＭ３２にＤＭＡ転送されるバックグラウンド画像データＤＢＧおよびオブジェクト画像データＤＯＢから形成される。３１ｂはＶＲＡＭコントロール回路であり、構成要素３１ａ，３１ｃおよび３１ｄから供給される制御信号に対応してＶＲＡＭ３２とのデータ授受を行う。
【００３０】
すなわち、上記ＣＰＵインタフェース回路３１ａからＤＭＡ転送する旨の制御信号ＳＣを受けた場合には、当該回路３１ａを介してＤＭＡ転送されるバックグラウンド画像データＤＢＧ、あるいはオブジェクト画像データＤＯＢを所定の記憶エリアに格納する。また、バックグラウンドコントロール回路３１ｃからバックグラウンド画像データＤＢＧを読み出す旨の指示を受けた場合、対応するデータＤＢＧを読み出して回路３１ｃ側に返送する。これと同様に、オブジェクトコントロール回路３１ｄからオブジェクト画像データＤＯＢを読み出す旨の指示を受けた場合、対応するデータＤＯＢを読み出して回路３１ｄ側に返送する。
【００３１】
バックグラウンドコントロール回路３１ｃは、回路３１ａを介して制御部５０側から与えられるバックグラウンド表示制御コマンドに基づき、ＶＲＡＭコントロール回路３１ｂを経由して読み出されたバックグラウンド画像データＤＢＧに対して表示位置を指定した後、色差データ処理回路３１ｅへ供給する。また、この回路３１ｃは、上述したビデオ信号処理部２０から供給される輝度信号Ｙ’，色差信号Ｂ−Ｙ’，Ｒ−Ｙ’、すなわち、撮像部１によって撮像された１フレーム分のサンプリング画像を、ＶＲＡＭコントロール回路３１ｂを介してＶＲＡＭ３２に格納する。つまり、撮像した画像をバックグラウンド画像データＤＢＧにすることが可能になっている。
【００３２】
オブジェクトコントロール回路３１ｄは、回路３１ａを介して制御部５０側から与えられるオブジェクトテーブルデータＴＯＢをオブジェクトテーブルＲＡＭ３１ｆに書き込む。オブジェクトテーブルデータＴＯＢとは、表示画面におけるオブジェクト画像データＤＯＢの表示位置を指定する座標データである。また、当該回路３１ｄは、オブジェクト表示制御コマンドに応じてＶＲＡＭ３２から読み出されたオブジェクト画像データＤＯＢに対し、上記オブジェクトテーブルデータＴＯＢを参照して表示位置を求めると共に、１走査ライン分のオブジェクト画像データＤＯＢをラインバッファＲＡＭ３１ｇに一時記憶する。ラインバッファＲＡＭ３１ｇに一時記憶されるオブジェクト画像データＤＯＢは、１走査毎に更新される。このＲＡＭ３１ｇから読み出されたオブジェクト画像データＤＯＢは、色差データ処理回路３１ｅに供給される。
【００３３】
色差データ処理回路３１ｅは、バックグラウンドコントロール回路３１ｃおよびオブジェクトコントロール回路３１ｄから供給される８ビット長の画像データＤＢＧ，ＤＯＢを、周知のカラールックアップテーブルＲＡＭ３１ｈを参照して各４ビット長のＲ信号，Ｇ信号およびＢ信号から形成される画像処理データＤＳＰに変換して出力する。また、この色差データ処理回路３１ｅは、上述した画像処理データＤＳＰ（ＲＧＢ信号）の他、信号ＹＳＢＧおよび信号ＹＳＯＢＪを発生する。
【００３４】
信号ＹＳＢＧおよび信号ＹＳＯＢＪは、現在出力している画像処理データＤＳＰがバックグラウンド画像データＤＢＧに対応するものであるか、あるいはオブジェクト画像データＤＯＢに対応するものであるかを表わす信号である。例えば、現在出力している画像処理データＤＳＰがバックグラウンド画像データＤＢＧに対応するものである時には、信号ＹＳＢＧが「Ｈ（ハイ）」となり、信号ＹＳＯＢＪが「Ｌ（ロウ）」になる。一方、これとは逆に画像処理データＤＳＰがオブジェクト画像データＤＯＢに対応するものであれば、信号ＹＳＢＧが「Ｌ」となり、信号ＹＳＯＢＪが「Ｈ」になる。
【００３５】
このように、画像処理部３０では、制御部５０側からＤＭＡ転送されるバックグラウンド画像データＤＢＧおよびオブジェクト画像データＤＯＢをＶＲＡＭ３２に格納しておき、ＣＰＵ５１から供給される制御信号ＳＣ（各種表示制御コマンド）に応じてこのＶＲＡＭ３２から画像データＤＢＧあるいは画像データＤＯＢを読み出し、これを１走査ライン毎のドット表示色を表わす画像処理データＤＳＰを発生すると共に、当該画像処理データＤＳＰの表示属性を表わす信号ＹＳＢＧおよびＹＳＯＢＪを出力する。
【００３６】
▲３▼位置検出処理部４０の構成
位置検出処理部４０は、複数のロジック素子を配列してなるゲートアレイ、ラインバッファおよびワークＲＡＭとから構成されており、後述する制御部５０の指示の下にサンプリング画像データＤＳ中に含まれるクロマキー像と、オブジェクト画像データＤＯＢにより形成されるオブジェクト画像との衝突座標位置や、これら画像の重心位置等を予め定められたロジックに基づいて論理演算する。図示されていないラインバッファには、ビデオ信号処理部２０から供給されるクロマキー検出信号ＣＲＯが一時記憶される。また、ワークＲＡＭには、ゲートアレイによって論理演算された各種演算結果が一時記憶される。
【００３７】
位置検出処理部４０は、上述した画像処理部３０から供給される信号ＹＳＢＧおよびＹＳＯＢＪに基づき、前述したセレクト信号ＳＬを発生してビデオ信号処理部２０に与え、サンプリング画像データＤＳ（実画像）と画像処理データＤＳＰ（ＣＧ画像）との重なり具合、つまり、画面表示される画像の優先順位（前後関係）を制御する。さらに、処理部４０は、制御部５０の指示の下に前述した撮像信号処理部１１、ビデオ信号処理部２０およびＶＤＰ３１へそれぞれレジスタコントロール信号ＳＲＥＧを供給し、各部レジスタのデータセット／リセットを制御する。
【００３８】
次に、図８を参照して位置検出処理部４０におけるワークＲＡＭのレジスタ構成について説明する。この図において、Ｅ１は初期画面エリアであり、水平方向（走査ライン）当り９６ドット、垂直方向に９６ラインから形成される初期画面のデータを一時記憶する。初期画面のデータとは、ゲーム開始に先立って撮像されたシーン内に存在するクロマキー検出結果を指す。シーン内にクロマキー検出色（例えば、青色）の物体が存在した場合、前述したバットＢＡＴ（図１参照）の一部と誤認する虞がある。そこで、初期画面エリアＥ１に一時記憶されるデータは、クロマキー検出されたドット位置をバットＢＡＴ（図１参照）と誤認しないようにするため、当該ドット位置を不感帯とする際に用いられる。
【００３９】
Ｅ２は水平方向９６ドット、垂直方向９６ラインで形成される処理画面エリアであり、実画像においてクロマキー検出されるバットＢＡＴ像（あるいは調整パネル像ＣＰ）およびＣＧ画像中のオブジェクト画像（本実施例では、ボール像）が１フレーム毎に更新記憶される。Ｅ３〜Ｅ４は、それぞれ１フレーム毎に更新される処理画面でのバットＢＡＴ像の上端／下端位置を一時記憶する上端座標エリア、下端座標エリアである。Ｅ５〜Ｅ６は、それぞれ１フレーム毎に更新される処理画面でのバットＢＡＴ像（あるいは調整パネル像ＣＰ）の左端／右端位置を一時記憶する左端座標エリア、右端座標エリアである。
【００４０】
Ｅ７は第１の衝突座標エリアである。第１の衝突座標エリアＥ１とは、バットＢＡＴ像とオブジェクト画像（ボール像）との重なり（衝突）が最初に検出される走査ライン中の交点を、処理画面上の座標として表現したものである。また、第２の衝突座標エリアＥ８は、バットＢＡＴ像とオブジェクト画像（ボール像）との重なりが最後に検出される走査ライン中の交点を、処理画面上の座標として表現したものである。Ｅ９は重心座標エリアであり、実画像にてクロマキー検出されるバットＢＡＴ像（あるいは調整パネル像ＣＰ）の面積に基づき算出される重心位置を処理画面上の座標位置が記憶される。
【００４１】
Ｅ１０は、実画像にてクロマキー検出されるバットＢＡＴ像（あるいは調整パネル像ＣＰ）の面積が記憶される面積エリアである。この面積エリアＥ１０にセットされる面積は、ブロック個数で表わされる。ここで言うブロックとは、処理画面において水平方向６ドット、垂直方向２ラインからなる１２ドット領域を指す。この１２ドット領域から形成されるブロック中に、「６ドット」以上のクロマキー検出があった場合、そのブロックがバットＢＡＴ像の面積として見做される。Ｅ１１およびＥ１２は、それぞれ前述した調整パネルＣＰ（図１参照）に対応するクロマキー像を検出する際の検出領域を表わす左上端座標および右下端座標を一時記憶する左上端座標記憶エリア、右下端座標記憶エリアである。すなわち、これら記憶エリアＥ１１，Ｅ１２に格納される座標（Ｘ１，Ｙ１）および座標（Ｘ２，Ｙ２）が指定する対角要素に基づき、検出領域が定められる。
【００４２】
▲４▼制御部５０の構成
次に、再び図３を参照して制御部５０の構成について説明する。制御部５０は、構成要素５１〜５７から構成される。ＣＰＵ５１は装置本体２の操作パネルに配設される各種操作子をキースキャンし、これに応じて生成される操作子信号ＫＳに応じて装置各部を制御するものであり、その動作の詳細については後述する。このＣＰＵ５１は、内部タイマを備え、当該タイマによってカウントされるゲームカウンタ値に基づきゲーム進行を管理する。
【００４３】
また、ＣＰＵ５１は、周知のＤＭＡコントローラを備えており、画像制御動作に必要な各種データ（バックグラウンド画像データＤＢＧやオブジェクト画像データＤＯＢ）を前述した画像処理部３０へＤＭＡ転送するよう構成されている。５２はＲＡＭであり、ＣＰＵ５１のワークエリアとして各種演算結果やフラグ値が一時記憶される。５３はＣＰＵ５１の動作を管理するＯＳ（オペレーションシステム）プログラムが記憶されるＲＯＭである。５４はＣＰＵ５１の制御の下に装置全体の動作を規定するシステムクロックを発生するシステムクロック回路である。
【００４４】
５５は装置本体２に対して挿脱自在に装着されるゲームカートリッジであり、ＲＯＭ５５ａと第１音源回路５５ｂとから構成されている。ＲＯＭ５５ａは、ＣＰＵ５１にロードされるアプリケーションプログラムである。なお、この実施例においては、前述したように、打撃練習をシミュレートするゲームプログラムが記憶されている。５５ｂは第１音源回路であり、ＣＰＵ５１側から位置検出処理部４０を介して供給されるイベントデータに基づき、ゲーム動作に対応したゲーム効果音を合成し、これを楽音信号としてＣＰＵ５１へ出力する。５６は第２音源回路であり、ゲーム進行に対応した楽曲、例えば、オープニングやエンディング等の楽曲を楽音合成して出力する。５７はサウンドシステムであり、上記第１音源回路５５ｂおよび第２音源回路５６から供給される楽音信号に対してノイズ除去等のフィルタリングを施した後、これを増幅して出力する。
【００４５】
Ｃ．実施例の動作
次に、上記構成による実施例の動作について説明する。ここでは、まず、前述した位置検出処理部４０の動作について説明した後、本願発明の要旨に係わる制御部５０（ＣＰＵ５１）の動作について説明する。
（１）位置検出処理部４０の動作
ここでは、ゲートアレイによって構成される位置検出処理部４０の動作について図９〜図１４を参照して説明する。処理部４０では、制御部５０の指示の下に設定される検出領域に基づき、前述した調整用パネルＣＰ（図１参照）をクロマキー検出する。ここで言う検出領域とは、記憶エリアＥ１１，Ｅ１２に格納される座標（Ｘ１，Ｙ１）および座標（Ｘ２，Ｙ２）で指定される対角要素に対応する画面領域を指す。また、処理部４０では、調整用パネルＣＰのクロマキー検出がなされた後、制御部５０の指示に応じてサンプリング画像データＤＳ中に含まれるバットＢＡＴ像をクロマキー検出信号ＣＲＯに基づいて検出すると共に、バットＢＡＴ像とオブジェクト画像（ボール像）との衝突座標位置や、これら画像の重心位置を検出する。以下、こうした動作の詳細について説明する。
【００４６】
▲１▼メインルーチンの動作
まず、装置本体２に電源が投入され、ＣＰＵ５１側からシステムリセットを表わす制御信号ＳＣが位置検出処理部４０に供給されたとする。そうすると、位置検出処理部４０は、上記制御信号ＳＣに基づき、内部にセットされるマイクロプログラムをロードして図９に示すメインルーチンを起動してステップＳＡ１を実行する。ステップＳＡ１では、自身の内部レジスタをリセット、あるいは初期値をセットするイニシャライズを行う一方、撮像信号処理部１１、ビデオ信号処理部２０およびＶＤＰ３１へそれぞれレジスタセットを指示するレジスタコントロール信号ＳＲＥＧを供給し、次のステップＳＡ２に進む。
【００４７】
ステップＳＡ２では、「初期画面マップ」が作成されているか否かを判断する。ここで、例えば、「初期画面マップ」が作成されていない場合、判断結果は「ＮＯ」となり、次のステップＳＡ３に処理を進める。なお、この「初期画面マップ」とは、ゲーム開始に先立って、撮像部１が撮像する画面内に、バットＢＡＴ（図１参照）と同色の物体が存在するか否かを確認するためのものである。そして、ステップＳＡ３に進むと、複数フレーム分のクロマキー検出結果を重ね合わせ、これをワークＲＡＭの初期画面エリアＥ１（図１１参照）に格納し、初期画面内に存在するクロマキー検出ブロックを「不感帯」と見做す「初期画面マップ」を作成する。
【００４８】
このようにして「初期画面マップ」の作成がなされると、位置検出処理部４０は、次のステップＳＡ４に処理を進める。なお、「初期画面マップ」が予め用意されている場合には、上記ステップＳＡ２の判断結果は「ＹＥＳ」となり、ステップＳＡ４に進む。ステップＳＡ４では、前述した記憶エリアＥ１１（図８参照）に格納される左上端座標（Ｘ１，Ｙ１）を読出し、これをレジスタＸ，Ｙにセットする。
上述したように、調整用パネルＣＰをクロマキー検出する場合には、当該パネルＣＰの配設位置に応じた左上端座標（Ｘ１，Ｙ１）がＣＰＵ５１側から与えられる一方、バットＢＡＴ像とオブジェクト画像（ボール像）との衝突座標位置や、これら画像の重心位置を検出するゲーム動作時には左上端座標（０，０）が与えられる。すなわち、このレジスタＸ，Ｙには、クロマキー検出すべき画面座標が順次セットされる。
【００４９】
次に、ステップＳＡ５に進むと、位置検出処理部４０は、図示されていないラインバッファに一時記憶されたクロマキー検出信号ＣＲＯに対してブロック単位毎のクロマキー検出を施す。ブロック単位のクロマキー検出とは、ラインバッファから読み出したクロマキー検出信号ＣＲＯを水平方向６ドット、垂直方向２ラインからなるブロックに区分けし、「Ｈ」レベルのクロマキー検出信号ＣＲＯがブロック当り「６ドット」以上存在した時に、当該ブロックの属性を「クロマキー有り」と見做すものである。こうしたクロマキー検出の結果は、前述した処理画面エリアＥ２（図８参照）にブロック属性としてストアされ、これが「処理画面マップ」となる。
【００５０】
次いで、ブロック単位毎のクロマキー検出がなされると、位置検出処理部４０は、次のステップＳＡ６に進み、クロマキー検出された実画像のバットＢＡＴ像とＣＧ画像中におけるオブジェクト画像（ボール像）との衝突の有無を検出し、衝突する場合にはその衝突座標を求める。そして、ステップＳＡ７に進むと、処理部４０は、レジスタＸの値を１インクリメントして歩進させ、続いて、ステップＳＡ８ではレジスタＸの値が「Ｘ２」、つまり、検出領域の右下端Ｘ座標値に達したか否かを判断する。ここで、レジスタＸの値が「Ｘ２」に達していない場合には、判断結果が「ＮＯ」となり、検出領域内での１走査ライン分の処理が完了する迄、上記ステップＳＡ５〜ＳＡ７を繰り返す。
【００５１】
一方、１走査ライン分の処理が完了してレジスタＸの値が右下端Ｘ座標値「Ｘ２」に達すると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＡ９に進み、レジスタＸの値を再び左上端Ｘ座標値「Ｘ１」にリセットすると共に、レジスタＹの値を１インクリメントして走査ラインを垂直方向に更新する。そして、ステップＳＡ１０に進むと、処理部４０はレジスタＹの値が「Ｙ２」、つまり、検出領域の右下端Ｙ座標値に達したか否かを判断する。ここで、レジスタＹの値が右下端Ｙ座標値「Ｙ２」に達していない場合には、判断結果が「ＮＯ」となり、上述したステップＳＡ５〜ＳＡ９を繰り返す。そして、検出領域内の走査が完了すると、ここでの判断結果が「ＹＥＳ」となり、ステップＳＡ１１に処理を進める。
【００５２】
ステップＳＡ１１では、上記ステップＳＡ５においてクロマキー検出されたブロックに基づき、バットＢＡＴ像（あるいは調整用パネルＣＰ）の左端／右端座標および上端／下端座標を算出し、これらをワークＲＡＭの記憶エリアＥ３〜Ｅ６（図８参照）に記憶する一方、クロマキー検出されたブロック個数からバットＢＡＴ像（あるいは調整用パネルＣＰ）の面積を求める。なお、記憶エリアＥ３〜Ｅ４は、それぞれ１フレーム毎に更新される処理画面でのバットＢＡＴ像（あるいは調整用パネルＣＰ）の上端／下端位置を一時記憶し、記憶エリアＥ５〜Ｅ６は、それぞれ１フレーム毎に更新される処理画面でのバットＢＡＴ像（あるいは調整用パネルＣＰ）の左端／右端位置を一時記憶する。また、ブロック個数から算出されるバットＢＡＴ像（あるいは調整用パネルＣＰ）の面積は、記憶エリアＥ１０に格納される。
【００５３】
こうして実画像からバットＢＡＴ像（あるいは調整用パネルＣＰ）をクロマキー検出すると、ステップＳＡ１２に進み、当該バットＢＡＴ像（あるいは調整用パネルＣＰ）の重心位置を求め、続いて、ステップＳＡ１３において割込みフラグが「１」かどうかを判定し、「１」であればＣＰＵ５１に対して割込み信号を出力する（ステップＳＡ１４）。この後、ステップＳＡ１５に進み、衝突フラグＣＦを「０」にセットする。この衝突フラグＣＦとは、実画像のバットＢＡＴ像とＣＧ画像のオブジェクト画像（ボール像）とが衝突状態、すなわち、重なり合う場合に「１」となる。そして、このステップＳＡ１３以後、位置検出処理部４０はその処理をステップＳＡ４に戻し、上述した動作を繰り返し、「バット」と「ボール」との対応関係をフレーム毎に求める。
【００５４】
▲２▼初期画面マップ作成ルーチンの動作
次に、図１０を参照して初期画面マップ作成ルーチンの動作について説明する。上述したように、初期画面マップが作成されていない場合、位置検出処理部４０はステップＳＡ３に処理を進め、図１０に示す初期画面マップ作成ルーチンを実行してステップＳＢ１に処理を進める。ステップＳＢ１では、内部レジスタにセットされるサンプリング回数ｎを読み出す。サンプリング回数ｎとは、撮像部１から供給されるクロマキー検出信号ＣＲＯを何フレーム分取り込むかを表わすものである。次いで、ステップＳＢ２に進むと、レジスタＸ，Ｙの値をゼロリセットし、次のステップＳＢ３に進む。ステップＳＢ３では、ラインバッファに書き込まれたクロマキー検出信号ＣＲＯの内、Ｘ方向（水平方向）の６ドット分、Ｙ方向（垂直方向）の２ライン分、すなわち、１ブロック分を読み出す。
【００５５】
次いで、ステップＳＢ４に進むと、この読み出した１ブロック中に「６ドット」以上の「Ｈ」レベルのクロマキー検出信号ＣＲＯが存在するか否かを判断する。ここで、「６ドット」以上存在しなければ、「クロマキー無し」として判断結果が「ＮＯ」となり、ステップＳＢ５に進む。ステップＳＢ５では、そのブロック属性を「０」として次のステップＳＢ７へ処理を進める。一方、これに対し、「６ドット」以上存在すると、「クロマキー有り」とされて、判断結果が「ＹＥＳ」となり、ステップＳＢ６に進む。ステップＳＢ６では、そのブロック属性を「１」にセットし、次のステップＳＢ７へ処理を進める。ステップＳＢ７では、最初のフレームであるか否かを判断する。ここで、最初にサンプリングしたフレームであると、判断結果は「ＹＥＳ」となり、ステップＳＢ８に進む。
【００５６】
ステップＳＢ８に進むと、位置検出処理部４０は、現レジスタＸ，Ｙの値に応じて初期画面エリアＥ１へ判定したブロック属性をストアする。そして、この後、ステップＳＢ９に進み、レジスタＸの値を１インクリメントし、指定ブロックの番号を歩進させる。次に、ステップＳＢ１０に進むと、この歩進された指定ブロックの番号が「９６」、つまり、１走査（水平）ライン分完了したか否かを判断する。ここで、完了していない場合には、判断結果が「ＮＯ」となり、ステップＳＢ１１に進む。ステップＳＢ１１では、レジスタＹの値が「９６」、つまり、１フレーム分終了したか否かを判断する。ここで、１フレーム分の処理が終了していない場合には、判断結果が「ＮＯ」となり、前述したステップＳＢ３に戻る。これにより、ステップＳＢ３〜ＳＢ６が繰り返され、次のブロック属性が判定される。
【００５７】
そして、例えば、いま、１走査（水平）ライン分のブロック属性の判定が完了したとする。そうすると、ステップＳＢ１０の判断結果が「ＹＥＳ」となり、処理部４０はステップＳＢ１３へ処理を進める。ステップＳＢ１３では、レジスタＸをゼロリセットする一方、レジスタＹの値を１インクリメントして走査ラインを更新する。そして、この後、再び、ステップＳＢ１１を介してステップＳＢ３以降のブロック判定がなされる。次いで、１フレーム分のブロック属性について判定が完了すると、上述したステップＳＢ１１の判断結果が「ＹＥＳ」となり、ステップＳＢ１２に進む。ステップＳＢ１２では、サンプリング回数ｎが設定回数に達したか否かを判断する。
【００５８】
ここで、設定回数に達していない場合には、判断結果が「ＮＯ」となり、ステップＳＢ１４へ処理を進める。ステップＳＢ１４では、サンプリング回数ｎを歩進させ、再び前述したステップＳＢ２以降を実行する。こうして１回目の初期画面マップが作成され、２回目の初期画面マップの作成を行う過程で、ステップＳＢ７に進むと、ここでの判断結果が「ＮＯ」となり、ステップＳＢ１５に進む。ステップＳＢ１５では、先にストアされた対応ブロック属性をレジスタＸ，Ｙの値に応じて初期画面エリアＥ１から読み出す。そして、ステップＳＢ１６に進むと、先のブロック属性と、現在判定されたブロック属性との論理和を求める。続いて、ステップＳＢ８では、この論理和を新たなブロック属性としてレジスタＸ，Ｙの値に基づき初期画面エリアＥ１にストアする。そして、所定フレーム分の論理和が生成されると、上述したステップＳＢ１２の判断結果が「ＹＥＳ」となり、このルーチンを終了し、位置検出処理部４０の処理は前述したメインルーチンへ復帰する。
【００５９】
▲３▼処理画面マップ作成ルーチンの動作
以上のようにして初期画面マップが作成されると、位置検出処理部４０はステップＳＡ５を介して図１１に示す処理画面マップ作成ルーチンを実行してステップＳＣ１に処理を進める。ステップＳＣ１では、ラインバッファに書き込まれたクロマキー検出信号ＣＲＯの内、Ｘ方向（水平方向）６ドット、Ｙ方向（垂直方向）２ラインからなる１ブロックを読み出す。次いで、ステップＳＣ２に進むと、その読み出した１ブロック内に「６ドット」以上の「Ｈ」レベルのクロマキー検出信号ＣＲＯが存在するか否かを判断する。ここで、「６ドット」以上存在しなければ、「クロマキー無し」として判断結果が「ＮＯ」となり、ステップＳＣ３に進む。ステップＳＣ３では、そのブロック属性を「０」として次のステップＳＣ４へ処理を進める。ステップＳＣ４では、この判定されたブロック属性をレジスタＸ，Ｙの値に基づき処理画面エリアＥ２（図８参照）にストアする。
【００６０】
一方、上記ステップＳＣ２の判断結果が「ＹＥＳ」となった場合、すなわち、１ブロック内に「６ドット」以上の「Ｈ」レベルのクロマキー検出信号ＣＲＯが存在する時には、処理部４０はステップＳＣ５に処理を進める。ステップＳＣ５では、リジェクトスイッチＳＲがオン操作されているか否かを判断する。このリジェクトスイッチＳＲとは、装置本体２の操作パネルに配設されるスイッチであり、そのスイッチ操作に応じて「不感帯」を設けるか否かを設定するものである。ここで、当該スイッチＳＲがオン設定されている場合には、初期画面マップに記憶されたクロマキー検出ブロックを「不感帯」と見做すようにする。
【００６１】
すなわち、上記ステップＳＣ５において、リジェクトスイッチＳＲがオン設定されている場合には、判断結果が「ＹＥＳ」となり、次のステップＳＣ６に進む。ステップＳＣ６では、初期画面エリアＥ１からレジスタＸ，Ｙの値に応じて対応するブロック属性を読み出す。次いで、ステップＳＣ７に進むと、初期画面エリアＥ１から読み出したブロック属性が「１」であるか否かを判断する。ここで、当該ブロック属性が「１」である時、その判断結果は「ＹＥＳ」となり、上述したステップＳＣ３に進み、ブロック属性を「０」に変更し、その後、ステップＳＣ４を介して、この変更されたブロック属性をレジスタＸ，Ｙの値に応じて処理画面エリアＥ２に書き込む。この結果、初期画面マップに記憶されたクロマキー検出ブロックが「不感帯」に設定される訳である。
【００６２】
なお、上記リジェクトスイッチＳＲがオン設定されない場合、つまり、「不感帯」を設定しない時には、ステップＳＣ５の判断結果が「ＮＯ」となり、ステップＳＣ８に進む。ステップＳＣ８では、上述したステップＳＣ２において判定された結果に基づき、対応するブロックの属性を「１」に設定し、続いて、ステップＳＣ４を介してそのブロック属性をレジスタＸ，Ｙの値に応じて処理画面エリアＥ２に書き込む。
【００６３】
▲４▼衝突座標検出ルーチンの動作
次に、図１２を参照して衝突座標検出ルーチンの動作について説明する。上述したように処理画面マップが作成されると、位置検出処理部４０はステップＳＡ６（図９参照）を介して衝突座標検出ルーチンを実行する。このルーチンでは、クロマキー検出された実画像のバットＢＡＴ像とＣＧ画像中におけるオブジェクト画像（ボール像）との衝突の有無を検出するものである。まず、当該ルーチンが実行されると、処理部４０はステップＳＤ１に処理を進め、処理画面エリアＥ２からレジスタＸ，Ｙの値に対応するブロック属性を読み出す。そして、ステップＳＤ２に進むと、その読み出したブロック属性が「１」、すなわち、クロマキー検出されたバットＢＡＴ像であるか否かを判断する。ここで、ブロック属性が「１」でない場合には、判断結果が「ＮＯ」となり、衝突が起こり得ないとして一旦このルーチンを終了する。
【００６４】
これに対し、読み出したブロック属性が「１」である時には、判断結果が「ＹＥＳ」となり、次のステップＳＤ３に処理を進める。ステップＳＤ３では、ラインバッファに書き込まれたＣＧデータをレジスタＸ，Ｙの値に応じて読み出す。ここで言うＣＧデータとは、ＣＧ画像中のオブジェクト画像データＤＯＢに対応する信号ＹＳＯＢＪを指す。なお、信号ＹＳＯＢＪは、ＶＤＰ３１（図３参照）から処理部４０に供給されるものである。
そして、次のステップＳＤ４に進むと、処理部４０は読み出したＣＧデータが「１」であるか否かを判断する。この時、当該ＣＧデータが「１」でなければ、レジスタＸ，Ｙの値に応じて読み出されたブロックはオブジェクト画像データＤＯＢと重ならないことになるから、衝突しないとして判断結果が「ＮＯ」となり、このルーチンを終了する。
【００６５】
一方、読み出したＣＧデータが「１」であると、ステップＳＤ４の判断結果が「ＹＥＳ」となり、ステップＳＤ５に進む。ステップＳＤ５では、衝突フラグＣＦが「０」であるか否かを判断する。衝突フラグＣＦは、実画像のバットＢＡＴ像とＣＧ画像のオブジェクト画像（ボール像）とが重なり合う場合に「１」となるものである。ここで、当該フラグＣＦが「０」である場合、つまり、初めて両画像の衝突が認知された状態では、判断結果が「ＹＥＳ」となり、次のステップＳＤ６に処理を進める。ステップＳＤ６では、最初に検出された第１のＸ座標をを衝突座標エリアＥ７にストアし、続いてステップＳＤ７ではこれに対応する第１のＹ座標を同エリアＥ７にストアする。そして、ステップＳＤ８に進み、衝突フラグＣＦを「１」にセットする。
【００６６】
なお、このようにして衝突フラグＣＦが「１」になると、処理部４０はＣＰＵ５１側へ割込み要求を出し、これに応じてＣＰＵ５１が衝突割込み処理（後述する）を実行するようにしている。
これに対して上記ステップＳＤ５の判断結果が「ＮＯ」の場合、すなわち、既に両画像の衝突が認知された状態では、ステップＳＤ９に進み、最後に検出された第２のＸ座標を衝突座標エリアＥ８にストアし、続いてステップＳＤ１０ではこれに対応する第２のＹ座標を同エリアＥ７にストアする。
【００６７】
▲５▼座標検出ルーチンの動作
次に、図１３を参照して座標検出ルーチンの動作について説明する。位置検出処理部４０はステップＳＡ１１（図９参照）を介して座標検出ルーチンを実行し、ステップＳＥ１に処理を進める。ステップＳＥ１では、レジスタＸ，Ｙと、レジスタＸ’，Ｙ’と、レジスタＳとをそれぞれゼロリセットして初期化する。なお、レジスタＳには、ブロック個数を累算してなるバットＢＡＴ像（あるいは調整用パネルＣＰ像）の面積が格納される。また、レジスタＸ’，Ｙ’に格納される値については後述する。
【００６８】
次いで、ステップＳＥ２に進むと、処理部４０は、処理画面エリアＥ２からレジスタＸ，Ｙの値に応じて対応するブロック属性を読み出してステップＳＥ３に処理を進める。ステップＳＥ３では、その読み出したブロック属性が「１」、すなわち、クロマキー検出されたバットＢＡＴ像（あるいは調整用パネルＣＰ像）であるか否かを判断する。ここで、ブロック属性が「１」でない場合には、判断結果が「ＮＯ」となり、ステップＳＥ４に進む。ステップＳＥ４では、レジスタＸの値を１インクリメントして歩進させる。そして、ステップＳＥ５に進むと、レジスタＸの値が「９６」、つまり、１水平（走査）ライン分のブロック属性を読み出したか否かを判断する。ここで、１水平ライン分の読み出しが完了していない場合には、判断結果が「ＮＯ」となり、再び上記ステップＳＥ２へ処理を戻す。
【００６９】
そして、例えば、読み出したブロック属性が「１」であると、ステップＳＥ３の判断結果が「ＹＥＳ」となり、ステップＳＥ６に処理を進める。ステップＳＥ６では、レジスタＸの値がレジスタＸ’の値より大であるか否かを判断する。レジスタＸ’には、前回検出したＸ座標がセットされており、この座標値と今回の座標値との比較結果に応じて右端／左端座標を更新するようにしている。つまり、ここでの判断結果が「ＮＯ」になると、ステップＳＥ７に進み、レジスタＸの値を左端座標エリアＥ５（図８参照）にストアしてバットＢＡＴ像（あるいは調整用パネルＣＰ像）の左端座標を更新する。一方、ステップＳＥ６の判断結果が「ＹＥＳ」になると、ステップＳＥ８に進み、レジスタＸの値を右端座標エリアＥ６（図８参照）にストアしてバットＢＡＴ像（あるいは調整用パネルＣＰ像）の右端座標を更新する。
【００７０】
次いで、ステップＳＥ９に進むと、処理部４０は、レジスタＹの値がレジスタＹ’の値より大であるか否かを判断する。ここで、レジスタＹ’は、上記レジスタＸ’と同様、前回検出したＹ座標がセットされており、この座標値と今回の座標値との比較結果に応じて上端／下端座標を更新するようにしている。つまり、判断結果が「ＮＯ」になると、ステップＳＥ１０に進み、レジスタＹの値を上端座標エリアＥ３（図８参照）にストアしてバットＢＡＴ像（あるいは調整用パネルＣＰ像）の上端座標を更新する。一方、ステップＳＥ９の判断結果が「ＹＥＳ」になると、ステップＳＥ１１に進み、レジスタＹの値を下端座標エリアＥ４（図８参照）にストアしてバットＢＡＴ像（あるいは調整用パネルＣＰ像）の下端座標を更新する。
【００７１】
そして、ステップＳＥ１２では、レジスタＳの値を１インクリメントし、面積を１ブロック増加させる。続いて、ステップＳＥ１３に進むと、レジスタＸ，Ｙの値をそれぞれレジスタＸ’，Ｙ’に書き換える。
こうして上記ステップＳＥ２〜ＳＥ１３の処理が１水平ライン分なされると、上述したステップＳＥ５の判断結果が「ＹＥＳ」となり、ステップＳＥ１４に進み、レジスタＸの値をゼロリセットすると共に、レジスタＹの値を１歩進させる。次いで、ステップＳＥ１５に進むと、レジスタＹの値が「９６」、つまり、１フレーム分の座標検出がなされたか否かを判断する。そして、１フレーム分の座標検出が完了していない場合には、前述したステップＳＥ２以降が繰り返される。一方、完了した時には、このルーチンから前述したメインルーチン（図９参照）へ処理を戻す。
【００７２】
▲６▼重心計算ルーチンの動作
上記座標検出ルーチンによって、クロマキー検出されたバットＢＡＴ像（あるいは調整用パネルＣＰ像）の左端／右端座標および上端／下端座標が検出されると、位置検出処理部４０はステップＳＡ１２を介して図１４に示す重心計算ルーチンを実行し、ステップＳＦ１に処理を進める。まず、ステップＳＦ１では、レジスタＸＧ，ＹＧをゼロリセットする。レジスタＸＧ，ＹＧは、それぞれクロマキー検出されたブロックに基づいて算出されるバットＢＡＴ像（あるいは調整用パネルＣＰ像）の重心座標が格納されるものである。次に、ステップＳＦ２に進むと、レジスタＸ，Ｙを初期化し、続いて、ステップＳＦ３では、処理画面エリアＥ２からレジスタＸ，Ｙの値に対応するブロック属性を読み出す。
【００７３】
次に、ステップＳＦ４に進むと、処理部４０は、この読み出したブロック属性が「１」、すなわち、クロマキー検出されたバットＢＡＴ像（あるいは調整用パネルＣＰ像）であるか否かを判断する。ここで、ブロック属性が「１」でない場合には、判断結果が「ＮＯ」となり、ステップＳＦ５に進む。ステップＳＦ５では、レジスタＸの値を１インクリメントして歩進させる。そして、ステップＳＦ６に進むと、レジスタＸの値が「９６」、つまり、１水平（走査）ライン分のブロック属性を読み出したか否かを判断する。ここで、１水平ライン分の読み出しが完了していない場合には、判断結果が「ＮＯ」となり、再び上記ステップＳＦ３に処理を戻す。
【００７４】
そして、例えば、次に読み出したブロック属性が「１」であるとする。そうすると、ステップＳＦ４の判断結果は「ＹＥＳ」となり、処理部４０はステップＳＦ７に処理を進める。ステップＳＦ７では、クロマキー検出されたブロックを質点と見做し、このブロックの座標（Ｘ，Ｙ）と面積Ｓとの比を順次累算する重心計算を行う。なお、この面積Ｓは上述した座標検出ルーチンにおいてレジスタＳに格納されるものである。次いで、ステップＳＦ８に進むと、上記ステップＳＦ７の重心計算結果に応じて重心座標を更新し、続いて、ステップＳＦ５においてレジスタＸの値を歩進させる。
【００７５】
ここで、１水平ライン分の読み出しが完了したとすると、ステップＳＦ６の判断結果が「ＹＥＳ」となり、ステップＳＦ９に進み、レジスタＸの値をゼロリセットすると共に、レジスタＹの値を１歩進させる。次いで、ステップＳＦ１０に進むと、レジスタＹの値が「９６」、つまり、１フレーム分の重心計算がなされたか否かを判断する。そして、１フレーム分の重心計算が完了していない場合には、判断結果が「ＮＯ」となり、前述したステップＳＦ３以降の処理を繰り返す。一方、１フレーム分の重心計算が完了した時には、判断結果が「ＹＥＳ」となり、このルーチンを終了してメインルーチン（図９参照）に復帰する。
【００７６】
このように、位置検出処理部４０では、クロマキー検出信号ＣＲＯに基づいてクロマキー検出されるバットＢＡＴ像（あるいは調整用パネルＣＰ像）を処理画面マップに登録する。そして、一定周期毎になされるクロマキー検出閾値調整（後述する）では、この処理画面マップから読み出したブロック属性に従って調整用パネルＣＰ像の左端／右端座標および上端／下端座標を求めてその面積と重心位置とを算出する。
【００７７】
一方、ゲーム処理動作では、処理画面マップから読み出したブロック属性に従ってバットＢＡＴ像とオブジェクト画像（ボール像）との衝突座標位置や、処理画面におけるバットＢＡＴ像の左端／右端座標および上端／下端座標を求めると共に、その面積と重心位置とを算出する。
なお、一定周期毎になされるクロマキー検出閾値調整とは、後述する自動設定処理および閾値調整処理により実行されるものであり、その際、この位置検出処理部４０が検出した調整用パネルＣＰ像の面積と重心位置とが用いられるようになっている。
【００７８】
（２）制御部５０（ＣＰＵ５１）の動作
次に、上述した位置検出処理部４０から供給される各種データに基づき、常に最適なクロマキー検出閾値を保ちながら画像処理部３０、第１音源回路５５ｂおよび第２音源回路５６を制御してゲーム進行を管理するＣＰＵ５１の動作について図１５〜図２４を参照して説明する。
ここでは、まず、ＣＰＵメインルーチンについて説明した後、同ルーチンにおいてコールされ、本願発明の要旨に係わる自動設定処理ルーチンおよび閾値設定処理ルーチンとについて説明する。そして、さらに、ＣＰＵ５１においてなされる各種割込み処理ルーチンについて順次説明する。
【００７９】
▲１▼メインルーチンの動作
まず、装置本体２に電源が投入されると、ＣＰＵ５１はＲＯＭ５３に記憶されたオペレーションシステムプログラムを読み出してロードした後、ゲームカートリッジ５５に内蔵されるＲＯＭ５５ａからアプリケーションプログラムを読み出し、ＲＡＭ５２に展開する。これにより、図１５に示すＣＰＵメインルーチンが起動され、ＣＰＵ５１の処理はステップＳＧ１に進む。ステップＳＧ１では、ＲＡＭ５２に確保される各種レジスタを初期化すると共に、ＶＤＰ３１および位置検出処理部４０へイニシャライズを指定する制御信号ＳＣを供給する。次いで、ステップＳＧ２に進むと、各部へ割込み許可を与える制御信号ＳＣを供給する一方、自身の割込みマスクを解除し、ステップＳＧ３へ処理を進める。
【００８０】
次に、ＣＰＵ５１は、ステップＳＧ３〜ステップＳＧ７を介してゲーム開始時の初期画面を形成する。すなわち、ステップＳＧ３に進むと、ＣＰＵ５１は初期画面背景となるバックグラウンド画像データＤＢＧをＶＤＰ３１へＤＭＡ転送するため、ＤＭＡコントローラに転送先アドレスおよび転送元アドレスをセットする。なお、ＤＭＡ転送は、ディスプレイ３（図１参照）側の垂直帰線期間に同期した割込み処理により行われる。転送命令がセットされたＤＭＡコントローラは、ＣＰＵ５１の指示の下、ＲＯＭ５５ａ（図３参照）から転送元アドレスに対応するバックグラウンド画像データＤＢＧを読み出してＶＤＰ３１（ＶＲＡＭ３２）へＤＭＡ転送する。こうした割込み処理については追って説明する。
【００８１】
次いで、ステップＳＧ４に進むと、ＣＰＵ５１は、画面背景上に表示されるオブジェクト画像データＤＯＢ１をＶＤＰ３１へＤＭＡ転送するため、ＤＭＡコントローラに転送先アドレスおよび転送元アドレスをセットする。このオブジェクト画像データＤＯＢ１とは、画面背景上に表示される「カーソル」に相当するものであり、クロマキー検出されるバットＢＡＴ像の所定部分（例えば、上端部分）に対応して移動表示されるものである。続いて、ステップＳＧ５では、当該データＤＯＢ１に対応するオブジェクトテーブルデータＴＯＢ１の転送先アドレスおよび転送元アドレスをＤＭＡコントローラにセットする。このオブジェクトテーブルデータＴＯＢ１は、初期画面におけるオブジェクト画像データＤＯＢ１の表示位置、すなわち、上述した通り、クロマキー検出されるバットＢＡＴ像の所定部分（例えば、上端部分）に対応した表示位置を指定するものであって、オブジェクトテーブルＲＡＭ３１ｆ（図８参照）に格納される。
【００８２】
ステップＳＧ６では、初期画面の背景上に表示されるオブジェクト画像データＤＯＢ２をＶＤＰ３１へＤＭＡ転送するため、ＤＭＡコントローラに転送先アドレスおよび転送元アドレスをセットする。この場合のオブジェクト画像データＤＯＢ２は、「投手」を模したキャラクタ像と、このキャラクタ像が持つ「ボール像」とから形成される。そして、ステップＳＧ７に進むと、ＣＰＵ５１は、当該データＤＯＢ２に対応するオブジェクトテーブルデータＴＯＢ２の転送先アドレスおよび転送元アドレスをＤＭＡコントローラにセットする。これにより、初期画面を形成する際の準備が整い、垂直帰線期間毎にバックグラウンド画像データＤＢＧ、オブジェクト画像データＤＯＢ１，ＤＯＢ２およびオブジェクトテーブルデータＴＯＢ１，ＴＯＢ２がＤＭＡ転送され、ＶＤＰ３１がこれらに基づき画像処理データＤＳＰを生成する。
【００８３】
このようにして初期画面が形成されると、ＣＰＵ５１はステップＳＧ８に進み、最適なクロマキー検出閾値を自動的に設定する自動設定処理を実行する。この自動設定処理では、前述した位置検出処理部４０にてクロマキー検出された調整用パネルＣＰ像が既定の面積および重心位置を持つように、Ｒ−Ｙ閾値およびＢ−Ｙ閾値を可変制御する。自動設定処理により得られた最適なＲ−Ｙ閾値およびＢ−Ｙ閾値は、前述したように、クロマキー信号発生部２０ｆ（図５参照）に供給される。次いで、自動設定処理が完了すると、ＣＰＵ５１はステップＳＧ９に処理を進め、スタートイベントが発生したか否かを判断する。
【００８４】
ここで言うスタートイベントとは、装置本体２の操作パネルに配設されるスタートスイッチがオン操作された時に発生するイベントである。そして、遊戯者がゲームを開始させるため、当該スタートスイッチをオン操作すると、上記スタートイベントが生成されるから、ここでの判断結果が「ＹＥＳ」となり、ステップＳＧ１０へ処理を進める。ステップＳＧ１０では、レジスタｔをゼロリセットし、続いて、ステップＳＧ１１に進み、レジスタＳＴＦに「１」をセットして次のステップＳＧ１２へ処理を進める。一方、スタートイベントが生成されない場合には、上記ステップＳＧ９の判断結果が「ＮＯ」となり、ステップＳＧ１２へ進む。なお、上述したレジスタｔにはゲーム進行を管理するタイムカウント値が後述する割込み動作によってセットされる。
【００８５】
ステップＳＧ１２では、レジスタＳＴＦの値が「１」、すなわち、ゲーム開始か否かを表わすスタートフラグがゲーム開始状態であるか否かを判断する。ここで、ゲーム開始状態を表わすフラグ値「１」がセットされていなければ、判断結果が「ＮＯ」となり、スタートイベントが生成されるまで上述したステップＳＧ９〜ＳＧ１１を繰り返す。そして、スタートイベントが発生すると、ステップＳＧ１２の判断結果が「ＹＥＳ」となり、ＣＰＵ５１は次のステップＳＧ１３へ処理を進める。ステップＳＧ１３では、レジスタＡＣＫＦ１にセットされる転送フラグＦ１が「０」であるか否かを判断する。この転送フラグＦ１とは、上述したステップＳＧ５において転送セットされたオブジェクトテーブルデータＴＯＢ１がＤＭＡ転送されたか否かを表わすものであり、当該フラグＦ１が「０」の時にＤＭＡ転送完了の旨を表わし、「１」の時に未転送状態にあることを表わす。
【００８６】
そして、転送フラグＦ１が「０」になると、ステップＳＧ１３の判断結果が「ＹＥＳ」となり、ステップＳＧ１４に進む。ステップＳＧ１４では、上記ステップＳＧ８において設定されたＲ−Ｙ閾値およびＢ−Ｙ閾値を最適な値とすべく調整する閾値調整処理を実行する。つまり、上記ステップＳＧ８の自動設定処理がゲーム動作開始前のクロマキー検出閾値を最適な値にするものであるのに対し、この閾値調整処理では、ゲーム動作開始後のクロマキー検出閾値を最適調整するものである。なお、これら調整処理の詳細については追って説明する。
【００８７】
そして、この閾値調整処理が完了した場合、あるいは上記ステップＳＧ１３において既にオブジェクトテーブルデータＴＯＢ１がＤＭＡ転送されている場合には、ＣＰＵ５１は図１６に示すステップＳＧ１５に処理を進める。ステップＳＧ１５では、レジスタＡＣＫＦ２にセットされる転送フラグＦ２が「０」であるか否かを判断する。転送フラグＦ２とは、前述したステップＳＧ７において転送セットされたオブジェクトテーブルデータＴＯＢ２がＤＭＡ転送されたか否かを表わすものであり、当該フラグＦ２が「０」の時にＤＭＡ転送完了の旨を表わし、「１」の時に未転送状態にあることを表わす。
【００８８】
ここで、転送フラグＦ２が「０」であると、ステップＳＧ１５の判断結果が「ＹＥＳ」となり、次のステップＳＧ１６へ処理を進める。ステップＳＧ１６では、レジスタｔの値、すなわち、ゲーム進行に応じたタイムカウント値に基づき、対応するオブジェクトテーブルデータＴＯＢ２を演算する。これにより、ゲーム画面を形成するオブジェクト画像データＤＯＢ２の表示位置が定まる。この場合、オブジェクト画像データＤＯＢ２は、「投手」を模したキャラクタ像と、このキャラクタ像が持つ「ボール像」とから形成される。次に、ステップＳＧ１７に進むと、ＣＰＵ５１は予めＶＤＰ３１側へＤＭＡ転送した複数のオブジェクト画像データＤＯＢ２の内から、レジスタｔに格納されるタイムカウント値に対応する画像データＤＯＢ２を指定する制御信号ＳＣを発生する。この結果、ゲーム画面においてテーブルデータＴＯＢ２で指定された位置に該当するオブジェクト画像データＤＯＢ２が表示される。
【００８９】
以上のようにしてゲーム画面が形成されると、ＣＰＵ５１はステップＳＧ１８に進み、レジスタＡＣＫＦ２に格納される転送フラグＦ２を「１」にセットし、ステップＳＧ１９に進む。なお、上述したステップＳＧ１５において判断結果が「ＮＯ」の場合、つまり、既にオブジェクトテーブルデータＴＯＢ２がＤＭＡ転送されている時にもステップＳＧ１９へ処理を進める。ステップＳＧ１９では、ストップイベントが発生したか否かを判断する。ストップイベントとは、装置本体２に配設されるストップスイッチがオン操作された時に発生するイベントである。そして、遊戯者がゲームを停止させるため、当該ストップスイッチをオン操作すると、上記ストップイベントが生成され、ここでの判断結果が「ＹＥＳ」となり、ステップＳＧ２０へ進む。
【００９０】
ステップＳＧ２０では、レジスタＳＴＦに格納されるスタートフラグを「０」にセットしてゲーム動作を停止させ、この後、ＣＰＵ５１は前述したステップＳＧ９に処理を戻し、スタートイベントが生成されるまでステップＳＧ９，ＳＧ１２を繰り返す。
一方、上記ステップＳＧ１９において、ストップスイッチがオン操作されない場合には、ここでの判断結果が「ＮＯ」となり、ステップＳＧ２１へ処理を進める。ステップＳＧ２１では、レジスタｔに格納されるタイムカウント値が所定値Ｔに達したか否かを判断する。ここで、タイムカウント値がゲーム終了時間に相当する所定値Ｔに達していない場合には、判断結果が「ＮＯ」となり、ステップＳＧ９へ処理を戻す。これに対し、タイムカウント値が所定値Ｔに達した場合には、レジスタｔに格納されるタイムカウント値をゼロリセットした後、ステップＳＧ９へ処理を戻す。
【００９１】
▲２▼自動設定処理ルーチンの動作
次に、図１７を参照して、クロマキー検出された調整用パネルＣＰ像が既定の面積および重心位置を持つように、Ｒ−Ｙ閾値およびＢ−Ｙ閾値を可変制御する自動設定処理ルーチンの動作について説明する。まず、前述したように、ＣＰＵ５１の処理がステップＳＧ８に進むと、自動設定処理ルーチンを起動し、ステップＳＨ１を実行する。ステップＳＨ１では、調整用パネルＣＰのクロマキー像を抽出すべく、位置検出処理部４０に対して検出領域を表わす左上端座標（Ｘ１，Ｙ１）および右下端座標（Ｘ２，Ｙ２）をワークＲＡＭの記憶エリアＥ１１，Ｅ１２にセットする。これにより、位置検出処理部４０は、与えられた検出領域に基づき、実画像から調整用パネルＣＰ像をクロマキー検出する。
【００９２】
次いで、ステップＳＨ２〜ＳＨ５では、クロマキー検出閾値を初期設定する。すなわち、ステップＳＨ２では、Ｒ−Ｙ閾値ｈｉｇｈ側の初期値を「４０Ｈ（１６進表示）」とするため、レジスタＲＨに「４０Ｈ」をセットする。また、ステップＳＨ３では、Ｒ−Ｙ閾値ｌｏｗ側の初期値としてレジスタＲＬに「３ＦＨ」をセットする。さらに、Ｂ−Ｙ閾値ｈｉｇｈ側およびｌｏｗ側では、ステップＳＨ４〜ＳＨ５を介してそれぞれレジスタＢＨ，ＢＬに「７ＦＨ」，「７ＦＨ」がセットされる。
【００９３】
こうしてクロマキー検出閾値を初期設定すると、ＣＰＵ５１はステップＳＨ６に進み、位置検出処理部４０が初期設定されたクロマキー検出閾値に基づきクロマキー検出するまでの間（例えば、６０ｍｓｅｃ）待機する。そして、ステップＳＨ７に進むと、クロマキー検出に応じて求められた調整用パネルＣＰ像の面積および重心位置を、位置検出処理部４０におけるワークＲＡＭの記憶エリアＥ９，Ｅ１０（図８参照）から読出し、これを制御部５０側のテンポラリレジスタにセットする。次に、ステップＳＨ８に進むと、ＣＰＵ５１は位置検出処理部４０から読み出した面積および重心位置に基づき既定値（既定面積および既定重心位置）と比較する。つまり、調整用パネルＣＰの面積および重心位置は既知であるから、既定面積および既定重心位置が位置検出処理部４０から読み出した面積および重心位置にそれぞれ略一致すれば適正なクロマキー検出がなされたと見做せる。
【００９４】
ここで、位置検出処理部４０から読み出した面積および重心位置がそれぞれ既定面積および既定重心位置に略一致しなければ、ステップＳＨ８の判断結果は「ＮＯ」となり、次のステップＳＨ９へ処理を進める。ステップＳＨ９では、レジスタＢＬの値を１デクリメントし、Ｂ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ低減する。次いで、ステップＳＨ１０では、１ステップ低減したＢ−Ｙ閾値ｌｏｗ側の閾値レベルが「４８Ｈ」以下、すなわち、「青」色に達したか否かを判断する。ここで、Ｂ−Ｙ閾値ｌｏｗ側の閾値レベルが「青」色に達していない場合には、判断結果が「ＮＯ」となり、上述したステップＳＨ６に処理を戻し、閾値レベル変更後の面積および重心位置が既定値と略一致するか否かを判断する。
【００９５】
一方、Ｂ−Ｙ閾値ｌｏｗ側の閾値レベルが「青」色に達した場合には、上記ステップＳＨ１０の判断結果が「ＹＥＳ」となり、ステップＳＨ１１に処理を進める。ステップＳＨ１１では、レジスタＲＬの値を１デクリメントし、Ｒ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ低減させ、続いて、ステップＳＨ１２に進み、Ｂ−Ｙ閾値ｌｏｗ側の閾値レベルを初期値「７ＦＨ」にリセットする。この後、ＣＰＵ５１はステップＳＨ１３に処理を進め、レジスタＢＬの値が「４８Ｈ」以下であって、レジスタＲＬの値が「００Ｈ」であるか否かを判断する。すなわち、閾値設定領域の全走査が完了したか否かを判断する。ここで、全走査が完了していない場合には、判断結果は「ＮＯ」となり、ステップＳＨ６に処理を戻し、閾値レベル変更後における面積および重心位置の略一致・不一致を判断する。これに対し、閾値設定領域の全走査が完了した時には、判断結果が「ＹＥＳ」となり、ステップＳＨ２に処理を戻す。
【００９６】
位置検出処理部４０から読み出した面積および重心位置がそれぞれ既定面積および既定重心位置に略一致した場合、つまり、適正なクロマキー検出閾値が設定されると、上述したステップＳＨ８の判断結果が「ＹＥＳ」となり、ステップＳＨ１４に進む。ステップＳＨ１４では、位置検出処理部４０から読み出した面積および重心位置をそれぞれレジスタＭＤ，ＧＤにセットする。次いで、ステップＳＨ１５に進むと、最適なクロマキー検出閾値に設定されたレジスタＲＨ，ＲＬ，ＢＨ，ＢＬの各値を固定する。そして、この後、ＣＰＵ５１はステップＳＨ１６に処理を進め、ゲーム実行用のクロマキー検出領域を位置検出処理部４０におけるワークＲＡＭの記憶エリアＥ１１，Ｅ１２にセットする。次いで、ステップＳＨ１７では、第２音源回路５６（図３参照）に対してノートオンデータを供給し、報知音の発音を指示する。これにより、遊戯者Ｐは、最適なクロマキー検出閾値に設定されたことを認識する。
【００９７】
以上のように、自動設定処理ルーチンでは、ゲーム動作開始に先立ち、調整用パネルＣＰのクロマキー像を検出し、当該クロマキー像の面積およびその重心位置を求め、求めた面積および重心位置が予め設定しておいた既定面積および既定重心位置に略一致するか否かを判断し、不一致である場合には検出した面積および重心位置が既定面積および既定重心位置に略一致するよう閾値設定領域内においてレジスタＲＨ，ＲＬ，ＢＨ，ＢＬの各値を調整するので、最適なクロマキー検出閾値を設定することが可能になる。
なお、この実施例では、クロマキー像から面積および重心位置を求めて既定値との略一致・不一致を判断しているが、これに替えて、「面積」あるいは「重心位置」のいずれか一方のみを判定材料としてクロマキー検出閾値を設定するようにしても良い。
【００９８】
▲３▼閾値調整処理ルーチンの動作
次に、上記自動設定処理ルーチンによってゲーム動作開始前に調整された最適なクロマキー検出閾値を、ゲーム動作中に所定周期毎に最適調整する閾値調整処理ルーチンの動作について図１８を参照して説明する。
まず、ＣＰＵ５１の処理がステップＳＧ１４（図１５参照）に進むと、この閾値調整処理ルーチンを実行し、ステップＳＩ１に処理を進める。ステップＳＩ１では、調整用パネルＣＰのクロマキー像を抽出するための検出領域を位置検出処理部４０の記憶エリアＥ１１，Ｅ１２にセットする。これにより、位置検出処理部４０は、与えられた検出領域に基づき、実画像から調整用パネルＣＰ像をクロマキー検出する。
【００９９】
こうして調整用パネルＣＰのクロマキー像を抽出する検出領域を設定すると、ＣＰＵ５１はステップＳＩ２に進み、位置検出処理部４０が調整用パネルＣＰのクロマキー像を検出するまでの間（例えば、６０ｍｓｅｃ）待機する。そして、ステップＳＩ３に進むと、このクロマキー検出された調整用パネルＣＰ像の面積および重心位置を、位置検出処理部４０におけるワークＲＡＭの記憶エリアＥ９，Ｅ１０から読出し、これを制御部５０のテンポラリレジスタにセットする。
次いで、ステップＳＩ４に進むと、ＣＰＵ５１はテンポラリレジスタにセットした面積および重心位置がレジスタＭＤ，ＧＤにそれぞれ格納される面積、重心位置が略一致するか否か、すなわち、前述した自動設定処理ルーチンに応じて設定されたクロマキー検出閾値に基づく面積、重心位置が変化したか否かを判断する。
【０１００】
ここで、面積、重心位置に変化がなければ、最適なクロマキー検出閾値が保たれているとしてステップＳＩ４の判断結果が「ＹＥＳ」となり、ステップＳＩ５に処理を進める。そして、ステップＳＩ５では、現状のクロマキー検出閾値、つまり、レジスタＲＨ，ＲＬ，ＢＨ，ＢＬの各値をそのまま維持する。この後、ＣＰＵ５１はステップＳＩ６に処理を進め、クロマキー検出領域を調整パネルＣＰ検出用からゲーム実行用に戻した後、メインルーチンへ復帰する。
【０１０１】
これに対し、テンポラリレジスタにセットした面積および重心位置が、レジスタＭＤ，ＧＤにそれぞれ格納される面積、重心位置と略一致しない場合には、最適なクロマキー検出閾値がずれたものと見做してステップＳＩ４の判断結果が「ＮＯ」となり、ステップＳＩ７に処理を進める。ステップＳＩ７では、テンポラリレジスタにセットした今回検出面積がレジスタＭＤに格納される前回検出面積値より小さいか否かを判断する。
【０１０２】
ここで、今回検出面積が前回検出面積値より大きいと、判断結果が「ＮＯ」となり、ステップＳＩ８に処理を進める。ステップＳＩ８では、レジスタＢＬの値が「４８Ｈ」以下であって、レジスタＲＬの値が「７ＦＨ」であるか否かを判断する。ここで、Ｒ−Ｙ閾値ｌｏｗ側が最大レベル「７ＦＨ」に達していない場合、判断結果が「ＮＯ」となり、ステップＳＩ９に進み、レジスタＲＬの値を１インクリメントしてＲ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ上げてクロマキー検出領域を狭くする。なお、レジスタＢＬの値が「４８Ｈ」以下であって、レジスタＲＬの値が「７ＦＨ」である時には、上記ステップＳＩ８の判断結果が「ＹＥＳ」となり、上述したステップＳＩ５に処理を進める。
【０１０３】
一方、上述したステップＳＩ７において、今回検出面積が前回検出面積値より小さい場合、ここでの判断結果が「ＹＥＳ」となり、ステップＳＩ１０に処理を進める。ステップＳＩ１０では、レジスタＢＬの値が「４８Ｈ」以下であって、レジスタＲＬの値が「００Ｈ」であるか否かを判断する。ここで、Ｒ−Ｙ閾値ｌｏｗ側が最小レベル「００Ｈ」に達していない場合には、判断結果が「ＮＯ」となり、ステップＳＩ１１に進む。ステップＳＩ１１では、レジスタＲＬの値を１デクリメントしてＲ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ下げてクロマキー検出領域を広くする。なお、レジスタＢＬの値が「４８Ｈ」以下であって、レジスタＲＬの値が「００Ｈ」である時には、上記ステップＳＩ１０の判断結果が「ＹＥＳ」となり、上述したステップＳＩ５に処理を進める。
【０１０４】
このように、閾値調整処理ルーチンでは、自動設定処理ルーチンに応じて設定されたクロマキー検出閾値に基づく面積、重心位置が変化した場合、テンポラリレジスタにセットした今回検出面積とレジスタＭＤに格納される前回検出面積値とを大小比較し、今回検出面積が前回検出面積値より大きい時には、Ｒ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ上げてクロマキー検出領域を狭くし、一方、今回検出面積が前回検出面積値より小さい時には、Ｒ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ下げてクロマキー検出領域を広げるようにしている。
【０１０５】
なお、この閾値調整処理ルーチンは、ゲーム動作中に時分割に実行されるため、所定時間内に処理を完了させる必要があり、この結果、Ｒ−Ｙ閾値のみを可変制御するようにしている。したがって、ＣＰＵ５１の処理能力が向上すれば、当然、Ｂ−Ｙ閾値を調整する態様も可能であり、Ｒ−Ｙ閾値およびＢ−Ｙ閾値の両者を調整すれば、随時最適なクロマキー検出閾値が設定され、常に安定した適正なクロマキー検出が可能になる。
【０１０６】
▲４▼割込み処理ルーチンの動作
次に、図１９〜図２４を参照し、ＣＰＵ５１において実行される各種割込み処理ルーチンの動作について説明する。
ａ．転送割込み処理ルーチンの動作
ＣＰＵ５１は、クロックドライバ１２（図３参照）から垂直帰線信号が供給される毎にＤＭＡコントローラ（図示略）へ転送指示を与えると共に、図１９に示す転送割込み処理ルーチンを実行する。まず、ステップＳＪ１では、レジスタＡＣＫＦ１に格納される転送フラグＦ１が「１」、つまり、前述したステップＳＧ５（図１５参照）においてＤＭＡ転送セットされたオブジェクトテーブルデータＴＯＢ１が未転送状態にあるか否かを判断する。ここで、当該データＴＯＢ１が既にＤＭＡ転送済みであると、転送フラグＦ１は「０」になっているから、判断結果は「ＮＯ」となり、後述するステップＳＪ４へ処理を進める。
【０１０７】
一方、オブジェクトテーブルデータＴＯＢ１が未転送状態にあると、判断結果は「ＹＥＳ」となり、ＣＰＵ５１は次のステップＳＪ２へ処理を進める。ステップＳＪ２では、レジスタＰＯＳＸ，ＰＯＳＹに格納されるバットＢＡＴ像の上端座標値を読み出し、これをオブジェクトテーブルデータＴＯＢ１としてＶＤＰ３１側へＤＭＡ転送する。このオブジェクトテーブルデータＴＯＢ１は、前述した通り、初期画面における「カーソル」の表示位置を表わすものであって、クロマキー検出されるバットＢＡＴ像の上端座標位置に対応する。したがって、このステップＳＪ２の動作に基づき、バットＢＡＴ像の上端座標位置に応じた「カーソル」が初期画面内に表示される。
【０１０８】
次いで、ステップＳＪ３に進むと、オブジェクトテーブルデータＴＯＢ１のＤＭＡ転送完了を表わすため、レジスタＡＣＫＦ１に格納される転送フラグＦ１の値を「０」にセットし、次のステップＳＪ４に進む。ステップＳＪ４では、レジスタＡＣＫＦ２に格納される転送フラグＦ２の値が「１」、つまり、前述したステップＳＧ７（図１５参照）において転送セットされたオブジェクトテーブルデータＴＯＢ２が未転送状態にあるか否かを判断する。ここで、当該データＴＯＢ２が既にＤＭＡ転送済みであると、転送フラグＦ２は「０」になっているから、判断結果は「ＮＯ」となり、このルーチンを完了し、ＣＰＵメインルーチンへ復帰する。
【０１０９】
一方、オブジェクトテーブルデータＴＯＢ２が未転送状態にあると、判断結果は「ＹＥＳ」となり、次のステップＳＪ５へ処理を進める。ステップＳＪ５では、ＤＭＡコントローラに転送セットされているオブジェクト画像データＤＯＢ２をＶＤＰ３１側へＤＭＡ転送し、続く、ステップＳＪ６では当該データＤＯＢ２に対応するオブジェクトテーブルデータＴＯＢ２をＤＭＡ転送する。次いで、ステップＳＪ７に進むと、ＣＰＵ５１はレジスタＡＣＫＦ２に格納される転送フラグＦ２を「０」としてこのルーチンを完了する。
【０１１０】
このように、転送割込み処理ルーチンにあっては、レジスタＡＣＫＦ１にセットされる転送フラグＦ１に応じて「カーソル」位置を表わすオブジェクトテーブルデータＴＯＢ２をＶＤＰ３１にＤＭＡ転送し、レジスタＡＣＫＦ２にセットされる転送フラグＦ２に応じてＣＧ画像を形成するオブジェクト画像データＤＯＢ２およびオブジェクトテーブルデータＴＯＢ２をＶＤＰ３１にＤＭＡ転送する。
【０１１１】
ｂ．衝突割込み処理ルーチンの動作
ＣＰＵ５１では、ゲーム進行に応じたタイムカウント値に基づいてゲーム画面を形成するオブジェクト画像データＤＯＢ２およびオブジェクトテーブルデータＴＯＢ２を順次ＤＭＡ転送するよう制御しており、一方、ＶＤＰ３１側ではこれらデータＤＯＢ２，ＴＯＢ２に対応するオブジェクト画像とクロマキー検出されるバットＢＡＴ像とを合成し、時々刻々変化するＣＧ画像を生成する。
この時、位置検出処理部４０では、前述した衝突座標検出処理ルーチン（図１２参照）の動作に基づき、「バット像」と「ボール像」との衝突の有無を随時検出する。そして、位置検出処理部４０が衝突を検出した場合、衝突フラグＣＦを「１」に設定することにより、ＣＰＵ５１は図１９に示す衝突割込み処理ルーチンを実行し、ステップＳＫ１へ処理を進める。
【０１１２】
まず、ステップＳＫ１では、レジスタｔにセットされるタイムカウント値が所定値Ｔ１〜Ｔ２の範囲に収っているか否かを判断する。タイムカウント値は、ゲーム開始直後からカウントされ、ゲーム進行を管理する値である。また、ここで言う所定値Ｔ１〜Ｔ２とは、「バット像」と「ボール像」とがミートする際の有効期間を指す。つまり、このステップＳＫ１では、「バット像」と「ボール像」とが衝突したタイミングがミートの有効期間内にあるか否かを判断している。ここで、例えば、遊戯者がバットＢＡＴを早目に振ったり、振り遅れたりすると、衝突したタイミングがミートの有効期間を外すことになるから、判断結果は「ＮＯ」となり、このルーチンを完了する。
【０１１３】
これに対し、衝突したタイミングがミートの有効期間内にあると、判断結果は「ＹＥＳ」となり、次のステップＳＫ２へ処理を進める。ステップＳＫ２では、クロマキー検出された「バットＢＡＴ像」の重心位置、すなわち、位置検出処理部４０のワークＲＡＭにおける重心座標エリアＥ９から重心座標を取り込む。次いで、ステップＳＫ３に進むと、オブジェクト画像データＤＯＢ２から形成される「ボール像」の重心位置と、クロマキー検出された「バットＢＡＴ像」の重心位置との対応関係を判定する。ここで、両者の重心位置が一致した場合には、ステップＳＫ４に進み、後述する第１画像処理ルーチンが実行される。
また、「ボール像」の重心が「バットＢＡＴ像」の重心より下方に位置する場合には、ステップＳＫ５に進み、後述する第２画像処理ルーチンが実行される。さらに、「ボール像」の重心が「バットＢＡＴ像」の重心より上方に位置する場合には、ステップＳＫ６に進み、後述する第３画像処理ルーチンが実行される。
【０１１４】
ｃ．タイマインタラプト処理ルーチン
次に、ゲーム進行を管理するタイムカウント値を発生するタイマインタラプト処理ルーチンの動作について図２１を参照して説明する。ＣＰＵ５１は、システムクロック回路２４から供給されるシステムクロックに基づき、所定周期毎に本ルーチンを起動し、ステップＳＭ１を実行し、レジスタｔに格納されるタイムカウント値を１インクリメントして歩進させている。
【０１１５】
ｄ．画像処理ルーチンの動作
次に、上記第１〜第３画像処理ルーチンの動作について図２２〜図２４を参照して説明する。図２２は、上述した第１〜第３画像処理ルーチンの処理内容を共通化したフロチャートである。まず、ステップＳＬ１では、レジスタｔに格納されるタイムカウント値に基づいてオブジェクト画像データＤＯＢ２（「ボール像」）の表示位置を演算し、続いて、ステップＳＬ２では、当該タイムカウント値に応じたオブジェクト画像データＤＯＢ２を指定すると共に、レジスタＡＣＫＦ２に格納される転送フラグＦ２の値を「１」にセットする。
【０１１６】
したがって、第１画像処理ルーチンにあっては、「ボール像」の重心と「バットＢＡＴ像」の重心とが一致するから、実際のバッティングと同様に、例えば、”ホームラン”となるように「ボール像」をＣＧ画像中で表示する。
また、第２画像処理ルーチンでは、図２３に図示するように、「ボール像」の重心が「バットＢＡＴ像」の重心より下方に位置するバッティングとなるので、例えば、”ゴロ”となるように「ボール像」をＣＧ画像中で表示する。
さらに、第３画像処理ルーチンでは、図２４に図示するように、「ボール像」の重心が「バットＢＡＴ像」の重心より上方に位置するバッティングとなるので、例えば、”フライ”となるように「ボール像」をＣＧ画像中で表示する。
【０１１７】
このようにして、「ボール像」の重心位置と「バットＢＡＴ像」の重心位置との対応関係に応じたＣＧ画像を生成すると、ＣＰＵ５１はステップＳＬ３に処理を進める。ステップＳＬ３では、レジスタｔに格納されるタイムカウント値がゲーム終了値ＥＮＤに達したか否かを判断する。ここで、タイムカウント値が当該ゲーム終了値ＥＮＤに達した場合には、判断結果が「ＹＥＳ」となり、ステップＳＬ４に進み、タイムカウント値をゼロリセットしてこのルーチンを完了する。
【０１１８】
一方、タイムカウント値がゲーム終了値ＥＮＤに満たない場合には、上記ステップＳＬ３の判断結果が「ＮＯ」となり、ステップＳＬ５に進む。ステップＳＬ５では、ストップイベントが発生したか否かを判断する。ここで、ストップイベントが発生していない場合には、判断結果が「ＮＯ」となり、上述したステップＳＬ１〜ＳＬ３を繰り返す。これに対して、ストップイベントが発生すると、判断結果が「ＹＥＳ」となって、ステップＳＬ６に進み、レジスタＳＴＦに格納されるスタートフラグを「０」にセットし、ゲーム終了の旨を表わしてこのルーチンを完了する。
【０１１９】
以上のように、本実施例では、ゲーム動作開始に先立ち、調整用パネルＣＰのクロマキー像を検出し、当該クロマキー像の面積およびその重心位置を求め、求めた面積および重心位置が予め設定しておいた既定面積および既定重心位置に略一致するか否かを判断し、不一致である場合には検出した面積および重心位置が既定面積および既定重心位置に略一致するよう閾値設定領域内においてレジスタＲＨ，ＲＬ，ＢＨ，ＢＬの各値を調整するので、最適なクロマキー検出閾値を設定することが可能になる。
【０１２０】
また、ゲーム動作実行中において、例えば、明るさや光の当り具合等、撮像環境が変化した時には、閾値調整処理ルーチンの動作に応じてテンポラリレジスタにセットされる今回検出面積とレジスタＭＤに格納される前回検出面積値とを大小比較し、今回検出面積が前回検出面積値より大きい時には、Ｒ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ上げてクロマキー検出領域を狭くし、一方、今回検出面積が前回検出面積値より小さい時には、Ｒ−Ｙ閾値ｌｏｗ側の閾値レベルを１ステップ下げてクロマキー検出領域を広げて、随時最適なクロマキー検出閾値が設定されるよう調整される。この結果、常に安定した適正なクロマキー検出が可能になる。
【０１２１】
なお、上述した実施例にあっては、「バッテイング」動作をシミュレートする画像制御装置に適用した場合について開示したが、本発明による要旨は当該装置に限定されるものではなく、例えば、「テニス」や「ゴルフ」等、遊戯者の運動行動を取り入れた各種ゲーム、あるいはロールプレイングゲームに適用することが可能であるばかりか、クロマキー検出を用いて画像制御するものであれば上述した本願特有の効果を達成し得る。
【０１２２】
【発明の効果】
本発明によれば、撮像信号から検出したクロマキー像の面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定すると、設定された色差閾値に従って検出されるクロマキー像の面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断する。そして、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭めるように調整し、調整された色差閾値に従って検出されるクロマキー像の重心位置に応じて表示画面の表示を制御するので、常に最適なクロマキー検出閾値を保ちながら適正なクロマキー検出を行い、位置検出誤差を発生することなく表示制御することができる。
【図面の簡単な説明】
【図１】本発明の一実施例による画像制御装置の全体構成を示す外観図である。
【図２】同実施例の概要を説明するための図である。
【図３】同実施例の電気的構成を示すブロック図である。
【図４】同実施例における撮像信号処理部１１の構成を示すブロック図である。
【図５】同実施例におけるビデオ信号処理部２０の構成を示すブロック図である。
【図６】同実施例におけるＲ−Ｙ閾値およびＢ−Ｙ閾値と色相との関係を説明するための図である。
【図７】同実施例におけるＶＤＰ３１の構成を示すブロック図である。
【図８】同実施例における位置検出処理部４０のワークＲＡＭの内容を説明するためのメモリマップである。
【図９】位置検出処理部４０におけるメインルーチンの動作を示すフローチャートである。
【図１０】位置検出処理部４０における初期画面マップ作成ルーチンの動作を示すフローチャートである。
【図１１】位置検出処理部４０における処理画面マップ作成ルーチンの動作を示すフローチャートである。
【図１２】位置検出処理部４０における衝突座標検出処理ルーチンの動作を示すフローチャートである。
【図１３】位置検出処理部４０における座標検出処理ルーチンの動作を示すフローチャートである。
【図１４】位置検出処理部４０における重心計算処理ルーチンの動作を示すフローチャートである。
【図１５】同実施例におけるＣＰＵメインルーチンの動作を示すフローチャートである。
【図１６】同実施例におけるＣＰＵメインルーチンの動作を示すフローチャートである。
【図１７】ＣＰＵ５１における自動設定処理ルーチンの動作を示すフローチャートである。
【図１８】ＣＰＵ５１における閾値調整処理ルーチンの動作を示すフローチャートである。
【図１９】ＣＰＵ５１における転送割込み処理ルーチンの動作を示すフローチャートである。
【図２０】ＣＰＵ５１における衝突割込み処理ルーチンの動作を示すフローチャートである。
【図２１】ＣＰＵ５１におけるタイマインタラプトルーチンの動作を示すフローチャートである。
【図２２】ＣＰＵ５１における第ｎ画像処理ルーチンの動作を示すフローチャートである。
【図２３】ＣＰＵ５１における第ｎ画像処理ルーチンの動作を説明するための図である。
【図２４】ＣＰＵ５１における第ｎ画像処理ルーチンの動作を説明するための図である。
【符号の説明】
１  撮像部
２  装置本体
３  ディスプレイ（表示画面）
２０  ビデオ信号処理部（クロマキー抽出手段）
３０  画像処理部（表示制御手段）
４０  位置検出処理部（閾値設定手段、閾値調整手段）
５０  制御部
５１  ＣＰＵ（閾値設定手段、閾値調整手段、表示制御手段）
【図１】
0003622234.tif 000002
【図２】
0003622234.tif 000003
【図３】
0003622234.tif 000004
【図４】
0003622234.tif 000005
【図５】
0003622234.tif 000006
【図６】
0003622234.tif 000007
【図７】
0003622234.tif 000008
【図８】
0003622234.tif 000009
【図９】
0003622234.tif 000010
【図１０】
0003622234.tif 000011
【図１１】
0003622234.tif 000012
【図１２】
0003622234.tif 000013
【図１３】
0003622234.tif 000014
【図１４】
0003622234.tif 000015
【図１５】
0003622234.tif 000016
【図１６】
0003622234.tif 000017
【図１７】
0003622234.tif 000018
【図１８】
0003622234.tif 000019
【図１９】
0003622234.tif 000020
【図２０】
0003622234.tif 000021
【図２１】
0003622234.tif 000022
【図２２】
0003622234.tif 000023
【図２３】
0003622234.tif 000024
【図２４】
0003622234.tif 000025