JP3622234B2 - 画像制御装置、および、画像制御方法 - Google Patents
画像制御装置、および、画像制御方法 Download PDFInfo
- Publication number
- JP3622234B2 JP3622234B2 JP19208094A JP19208094A JP3622234B2 JP 3622234 B2 JP3622234 B2 JP 3622234B2 JP 19208094 A JP19208094 A JP 19208094A JP 19208094 A JP19208094 A JP 19208094A JP 3622234 B2 JP3622234 B2 JP 3622234B2
- Authority
- JP
- Japan
- Prior art keywords
- image
- area
- chroma key
- threshold
- detected
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Landscapes
- Processing Of Color Television Signals (AREA)
- Image Analysis (AREA)
Description
【産業上の利用分野】
本発明は、例えば,バーチャルリアリティ(仮想現実感)を創出するビデオゲームなどに用いて好適な画像制御装置、および、画像制御方法に関する。
【0002】
【従来の技術】
従来より、操作パッド等の操作に応じてオブジェクト画像を動画制御したり、効果音を発生させたりする画像制御装置が各種実用化されている。なお、ここで言うオブジェクト画像とは、ゲーム画面に表示される「キャラクタ」を指し、背景となるバックグラウンド画面上に移動表示されるものである。この種の装置は、ビデオゲームあるいはTVゲームと呼ばれ、遊戯者の反射神経を問うシューティングゲームや、仮想的な現実感をシミュレートするゲーム等が知られている。
【0003】
このようなビデオゲームは、ゲーム操作に対応したビデオ信号を発生する画像処理部と、この画像処理部から供給されるビデオ信号を映像表示するディスプレイとから構成される。画像処理部は、CPU、ROMおよびRAM等から構成され、例えば、ROMパックに記憶された画像情報および制御情報を順次読み出し、画面背景となるバックグラウンド画像をディスプレイに表示すると共に、ゲーム操作に応じて対応するキャラクタ(オブジェクト画像)を画面背景上を動画表示し、その動きに応じた効果音を発音するようにしている。
【0004】
【発明が解決しようとする課題】
さて、上述したように、従来の画像制御装置では、操作パッドの操作に応じてオブジェクト画像を表示制御する態様が一般的であり、仮想的な現実感をシミュレートするゲームでは不向きになることが多い。つまり、仮想的な現実感を追求するには、実際の行動(行為)に即した形態で画像制御にする必要がある。例えば、投手が球を投げるシーンを画面に表示し、この表示画面に基づいて遊戯者が打撃操作するようにしたシミュレーションゲームでは、操作パッドに替えて「バット」が操作子となり、この「バット」の位置あるいは動きに応じて画像制御することになる。
【0005】
このような画像制御を行う場合には、周知のクロマキー検出処理により操作子の位置や動きを検出する手法が採られている。クロマキー検出処理とは、この場合、予め「バット(操作子)」を特定の色で色付けしておき、遊戯者を撮像した画像からこの特定色のクロマキー像を抽出し、これによって、遊戯者が持つ操作子の位置や動きを画面上の位置として検出するものである。そして、検出したクロマキー像の画面上の位置に基づきオブジェクト画像を表示制御することになる。
【0006】
ところで、クロマキー検出処理では、撮像時の明るさや、特定色に色付けされた操作子であっても、例えば光沢色のように光の受け具合に応じて色の見え方が変化することがあり、このために検出したクロマキー像がぶれたり点滅したりすることが起こり、完全なクロマキー像として検出されず、結果的に位置検出誤差を招く要因になる。
一方、こうした色合の変化に対処するよう、クロマキー検出閾値の範囲を広く設定することが考えられるが、そうすると、今度は特定色の操作子に近い色合の物体がクロマキー対象として誤って検出される虞があり、適正なクロマキー検出が困難になるという弊害を招致する。
【0007】
そこで本発明は、上述した事情に鑑みてなされたもので、常に最適なクロマキー検出閾値を保ちながら適正なクロマキー検出を行い、位置検出誤差を発生することなく表示制御することができる画像制御装置、および、画像制御方法を提供することを目的としている。
【0008】
【課題を解決するための手段】
上記目的を達成するため、請求項1記載の発明では、色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出手段と、前記検出手段により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定手段と、前記閾値設定手段により設定された色差閾値に従って前記検出手段が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整手段と、前記閾値調整手段によって調整される色差閾値に従って前記検出手段が検出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御手段とを具備することを特徴としている。
【0009】
請求項2に記載の発明では、色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出処理と、前記検出処理により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定処理と、前記閾値設定処理により設定された色差閾値に従って前記検出処理が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整処理と、前記閾値調整処理によって調整される色差閾値に従って前記検出手段が抽出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御処理とを具備することを特徴とする。
【0016】
【作用】
本発明にあっては、撮像信号から検出したクロマキー像の面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定すると、設定された色差閾値に従って検出されるクロマキー像の面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断する。そして、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭めるように調整し、調整された色差閾値に従って検出されるクロマキー像の重心位置に応じて表示画面の表示を制御するので、常に最適なクロマキー検出閾値を保ちながら適正なクロマキー検出を行い、位置検出誤差を発生することなく表示制御することが可能になる。
【0017】
【実施例】
以下、図面を参照して本発明の実施例について説明する。
A.実施例の概要
図1は、本発明による画像制御装置の全体構成を示す外観図であり、バッティング動作をシミュレートするゲームに適用した一例を図示するものである。この図において、1はCCD等の固体撮像素子を備える撮像部であり、バッターボックス(図示略)に位置する遊戯者Bを撮像する。ここで、遊戯者Bは、例えば、クロマキー検出用として「青色」に着色されたバットBATを用いてバッティング動作する。CPは調整用パネルであり、上記バットBATと同一の材質で形成され、かつ、同一色に着色される。この調整用パネルCPは、予め撮像部1の所定視野に収る位置に配設されるものであり、後述するクロマキー検出閾値の調整に用いられる。
【0018】
2は装置本体であり、撮像部1から供給される撮像信号にクロマキー検出を施し、実画像におけるバットBAT像(あるいは調整用パネルCP像)の位置、面積および重心位置を判別する。ここで言う実画像とは、撮像部1によって撮像される画像を指す。また、装置本体2は、ゲームの背景シーンとなるバックグラウンド画像と、このバックグラウンド画像上を移動表示されるオブジェクト画像とを合成し、これをコンピュータグラフィック画像(以下、CG画像と称す)としてディスプレイ3に表示する。ディスプレイ3には、例えば、背景シーン上における投手のスローイング動作と、スローイングに応じたボールの飛翔動作とが動画表示される。
【0019】
さらに、装置本体2は、図2(イ)に示すように、CG画像中に表示されるボール位置からその重心位置を求める一方、同図(ロ)に示すように、実画像からクロマキー検出されたバットBAT像の重心位置を算出する。そして、CG画像中の「ボール」と実画像中の「バットBAT」とが衝突するか否かを所定タイミング毎に判定し、衝突する際には、ミートするタイミング時点で両重心位置の差に応じて打撃具合を求める。
例えば、図2(ハ)のように、「ボール」と「バットBAT」との衝突時点に両重心位置が一致すれば、ジャストミートとして「ホームラン」とするように現実に近いシミュレーションを行う。
【0020】
B.実施例の構成
次に、図3を参照して撮像部1および装置本体2の電気的構成について説明する。
(1)撮像部1の構成
撮像部1は、構成要素10〜13から構成されている。10は発振回路であり、8倍オーバーサンプリング信号8fSCを発生して出力する。11はこの8倍オーバーサンプリング信号8fSCを次段のクロックドライバ12に供給すると共に、CCD13から出力される撮像信号SSをサンプリング画像データDSに変換する撮像信号処理部であり、その構成については後述する。クロックドライバ12は、発振回路12から供給される8倍オーバーサンプリング信号8fSCに基づき、水平駆動信号、垂直駆動信号、水平/垂直同期信号および帰線消去信号等の各種タイミング信号を発生する一方、上記水平駆動信号および垂直駆動信号に対応する撮像駆動信号を発生してCCD13に供給する。CCD13は、この撮像駆動信号に従って撮像信号SSを発生する。
【0021】
撮像信号処理部11は、CCD13から供給される撮像信号SSをコンディショニングした後、A/D変換してサンプリング画像データDSを発生するものであり、その概略構成について図4を参照して説明する。図4において、11aはサンプリング回路であり、上述したクロックドライバ12から供給される4倍オーバーサンプリング信号4fSCに応じて撮像信号SSをサンプルホールドして次段へ出力する。11bはサンプリングされた撮像信号SSを所定レベルに変換して出力するAGC(自動利得制御)回路である。
【0022】
11cは、撮像信号SSのガンマ特性をγ=1/2.2に補正して出力するγ補正回路である。11dは、このガンマ補正された撮像信号SSを8ビット長のサンプリング画像データDSに変換して出力するA/D変換回路である。サンプリング画像データDSは、後述するビデオ信号処理部20に供給される。11eはビデオ信号処理部20から供給されるコンポジット映像信号DCVをアナログビデオ信号SVに変換して前述したディスプレイ3に出力するD/A変換回路である。
【0023】
(2)装置本体2の構成
次に、図3〜図11を参照して装置本体2の構成について説明する。装置本体2は、ビデオ信号処理部20、画像処理部30、位置検出処理部40および制御部50から構成されており、以下、これら各部について詳述する。
▲1▼ビデオ信号処理部20の構成
ビデオ信号処理部20は、撮像部1から供給されるサンプリング画像データDSに対して色差変換処理とクロマキー検出処理とを施し、その結果を後述する位置検出処理部40に供給する。また、この処理部20は、後述する画像処理部30から供給される画像処理データDSPをコンポジット映像信号DCVに変換し、前述したD/A変換回路11e(図4参照)に供給する。なお、この画像処理データDSPとは、バックグラウンド画像と、当該バックグラウンド画像上に移動表示されるオブジェクト画像とを合成したCG画像を形成するものである。
【0024】
ここで、図5を参照して上記各処理を具現するビデオ信号処理部20の構成について説明する。図5において、20aは色分離フィルタであり、サンプリング画像データDSを信号Ye(イエロー)、信号Cy(シアン)および信号G(グリーン)に色分離して次段へ出力する。20bは映像信号中における変化点の前後に対して輝度変調を施して画質調整する輪郭補正回路である。20cはホワイトバランス回路であり、各信号Ye,Cy,Gを規定レベルに設定して出力する。20dはバンドパスフィルタで構成される分別フィルタであり、各信号Ye,Cyを信号R(赤)および信号B(青)に分別して出力する。20eは三原色を表わす信号R,G,Bを各8ビット長の輝度信号Y、色差信号B−Y,R−Yに変換するマトリクス回路である。
【0025】
20fはクロマキー信号発生回路であり、後述するR−Y閾値およびB−Y閾値に応じた閾値設定領域内に、色差信号B−Y,R−Yがそれぞれ収る時に「H」レベルのクロマキー検出信号CROを発生する。すなわち、この回路20fでは、図6に示すように、CPU51から供給されるR−Y閾値(00H〜40H:16進表示)と、B−Y閾値(40H〜7FH:16進表示)とで定められる閾値設定領域内に色差信号B−Y,R−Yが収る場合、クロマキー検出した旨を表わす「H」レベルのクロマキー検出信号CROを出力する。
なお、この実施例では、R−Y閾値およびB−Y閾値は、図6に図示するよう、「青色」に対応するよう設定される。また、R−Y閾値およびB−Y閾値は、前述した調整用パネルCPを撮像して得られるクロマキー像の面積あるいは重心位置が既定値に略一致するよう可変制御されるものであり、こうした調整動作については追って説明する。
【0026】
20gは、マトリクス回路20eから出力される各8ビット長の輝度信号Y、色差信号B−Y,R−Yを、4ビット長の輝度信号Y’、2ビット長の色差信号B−Y’,R−Y’に変換する色差変換回路である。20hは、画像処理部30(後述する)から供給される画像処理データDSP(RGB信号)を輝度信号Y、色差信号B−Y,R−Yに変換するマトリクス回路である。20iはセレクタであり、後述する位置検出処理部40から供給されるセレクト信号SLに応じてマトリクス回路20eの出力、あるいはマトリクス回路20hの出力のいずれかを選択して次段へ供給する。20jはモジュレータである。モジュレータ20jは、セレクタ20iを介して供給される輝度信号Y、色差信号B−Y,R−Yに各種同期信号(水平/垂直同期信号および帰線消去信号)を重畳したディジタルコンポジット映像信号DCVを生成する。
【0027】
上記構成によれば、ビデオ信号処理部20は、撮像部1から供給されるサンプリング画像データDSを輝度信号Y’、2ビット長の色差信号B−Y’,R−Y’に変換すると共に、クロマキー検出信号CROを発生して画像処理部30(後述する)側へ供給する。また、この処理部20は、画像処理部30側から入力される画像処理データDSP(RGB信号)、あるいは撮像部1から供給されるサンプリング画像データDSのいずれかをセレクト信号SLに応じて選択し、選択されたデータをコンポジット映像信号DCVに変換して出力する。なお、セレクト信号SLは、後述する位置検出処理部40から供給される信号である。
【0028】
▲2▼画像処理部30の構成
次に、画像処理部30の構成について説明する。画像処理部30は、ビデオディスプレイプロセッサ(以下、VDPと略す)31とVRAM32とから構成される。このVDP31の基本的機能は、VRAM32に格納されるバックグラウンド画像データDBGおよびオブジェクト画像データDOBを制御部50(後述する)側から供給される制御信号SCに応じて読み出し、これを1走査ライン毎のドット表示色を表わす画像処理データDSPを発生することにある。以下、図7を参照して各部の構成について詳述する。
【0029】
図において、31aはCPUインタフェース回路であり、制御部50を構成するCPU51のバスを介して供給される制御信号SCに応じて構成要素31b〜31dに各種制御指示を与える。制御信号SCは、バックグラウンド画像およびオブジェクト画像を表示制御する各種コマンドや、VRAM32にDMA転送されるバックグラウンド画像データDBGおよびオブジェクト画像データDOBから形成される。31bはVRAMコントロール回路であり、構成要素31a,31cおよび31dから供給される制御信号に対応してVRAM32とのデータ授受を行う。
【0030】
すなわち、上記CPUインタフェース回路31aからDMA転送する旨の制御信号SCを受けた場合には、当該回路31aを介してDMA転送されるバックグラウンド画像データDBG、あるいはオブジェクト画像データDOBを所定の記憶エリアに格納する。また、バックグラウンドコントロール回路31cからバックグラウンド画像データDBGを読み出す旨の指示を受けた場合、対応するデータDBGを読み出して回路31c側に返送する。これと同様に、オブジェクトコントロール回路31dからオブジェクト画像データDOBを読み出す旨の指示を受けた場合、対応するデータDOBを読み出して回路31d側に返送する。
【0031】
バックグラウンドコントロール回路31cは、回路31aを介して制御部50側から与えられるバックグラウンド表示制御コマンドに基づき、VRAMコントロール回路31bを経由して読み出されたバックグラウンド画像データDBGに対して表示位置を指定した後、色差データ処理回路31eへ供給する。また、この回路31cは、上述したビデオ信号処理部20から供給される輝度信号Y’,色差信号B−Y’,R−Y’、すなわち、撮像部1によって撮像された1フレーム分のサンプリング画像を、VRAMコントロール回路31bを介してVRAM32に格納する。つまり、撮像した画像をバックグラウンド画像データDBGにすることが可能になっている。
【0032】
オブジェクトコントロール回路31dは、回路31aを介して制御部50側から与えられるオブジェクトテーブルデータTOBをオブジェクトテーブルRAM31fに書き込む。オブジェクトテーブルデータTOBとは、表示画面におけるオブジェクト画像データDOBの表示位置を指定する座標データである。また、当該回路31dは、オブジェクト表示制御コマンドに応じてVRAM32から読み出されたオブジェクト画像データDOBに対し、上記オブジェクトテーブルデータTOBを参照して表示位置を求めると共に、1走査ライン分のオブジェクト画像データDOBをラインバッファRAM31gに一時記憶する。ラインバッファRAM31gに一時記憶されるオブジェクト画像データDOBは、1走査毎に更新される。このRAM31gから読み出されたオブジェクト画像データDOBは、色差データ処理回路31eに供給される。
【0033】
色差データ処理回路31eは、バックグラウンドコントロール回路31cおよびオブジェクトコントロール回路31dから供給される8ビット長の画像データDBG,DOBを、周知のカラールックアップテーブルRAM31hを参照して各4ビット長のR信号,G信号およびB信号から形成される画像処理データDSPに変換して出力する。また、この色差データ処理回路31eは、上述した画像処理データDSP(RGB信号)の他、信号YSBGおよび信号YSOBJを発生する。
【0034】
信号YSBGおよび信号YSOBJは、現在出力している画像処理データDSPがバックグラウンド画像データDBGに対応するものであるか、あるいはオブジェクト画像データDOBに対応するものであるかを表わす信号である。例えば、現在出力している画像処理データDSPがバックグラウンド画像データDBGに対応するものである時には、信号YSBGが「H(ハイ)」となり、信号YSOBJが「L(ロウ)」になる。一方、これとは逆に画像処理データDSPがオブジェクト画像データDOBに対応するものであれば、信号YSBGが「L」となり、信号YSOBJが「H」になる。
【0035】
このように、画像処理部30では、制御部50側からDMA転送されるバックグラウンド画像データDBGおよびオブジェクト画像データDOBをVRAM32に格納しておき、CPU51から供給される制御信号SC(各種表示制御コマンド)に応じてこのVRAM32から画像データDBGあるいは画像データDOBを読み出し、これを1走査ライン毎のドット表示色を表わす画像処理データDSPを発生すると共に、当該画像処理データDSPの表示属性を表わす信号YSBGおよびYSOBJを出力する。
【0036】
▲3▼位置検出処理部40の構成
位置検出処理部40は、複数のロジック素子を配列してなるゲートアレイ、ラインバッファおよびワークRAMとから構成されており、後述する制御部50の指示の下にサンプリング画像データDS中に含まれるクロマキー像と、オブジェクト画像データDOBにより形成されるオブジェクト画像との衝突座標位置や、これら画像の重心位置等を予め定められたロジックに基づいて論理演算する。図示されていないラインバッファには、ビデオ信号処理部20から供給されるクロマキー検出信号CROが一時記憶される。また、ワークRAMには、ゲートアレイによって論理演算された各種演算結果が一時記憶される。
【0037】
位置検出処理部40は、上述した画像処理部30から供給される信号YSBGおよびYSOBJに基づき、前述したセレクト信号SLを発生してビデオ信号処理部20に与え、サンプリング画像データDS(実画像)と画像処理データDSP(CG画像)との重なり具合、つまり、画面表示される画像の優先順位(前後関係)を制御する。さらに、処理部40は、制御部50の指示の下に前述した撮像信号処理部11、ビデオ信号処理部20およびVDP31へそれぞれレジスタコントロール信号SREGを供給し、各部レジスタのデータセット/リセットを制御する。
【0038】
次に、図8を参照して位置検出処理部40におけるワークRAMのレジスタ構成について説明する。この図において、E1は初期画面エリアであり、水平方向(走査ライン)当り96ドット、垂直方向に96ラインから形成される初期画面のデータを一時記憶する。初期画面のデータとは、ゲーム開始に先立って撮像されたシーン内に存在するクロマキー検出結果を指す。シーン内にクロマキー検出色(例えば、青色)の物体が存在した場合、前述したバットBAT(図1参照)の一部と誤認する虞がある。そこで、初期画面エリアE1に一時記憶されるデータは、クロマキー検出されたドット位置をバットBAT(図1参照)と誤認しないようにするため、当該ドット位置を不感帯とする際に用いられる。
【0039】
E2は水平方向96ドット、垂直方向96ラインで形成される処理画面エリアであり、実画像においてクロマキー検出されるバットBAT像(あるいは調整パネル像CP)およびCG画像中のオブジェクト画像(本実施例では、ボール像)が1フレーム毎に更新記憶される。E3〜E4は、それぞれ1フレーム毎に更新される処理画面でのバットBAT像の上端/下端位置を一時記憶する上端座標エリア、下端座標エリアである。E5〜E6は、それぞれ1フレーム毎に更新される処理画面でのバットBAT像(あるいは調整パネル像CP)の左端/右端位置を一時記憶する左端座標エリア、右端座標エリアである。
【0040】
E7は第1の衝突座標エリアである。第1の衝突座標エリアE1とは、バットBAT像とオブジェクト画像(ボール像)との重なり(衝突)が最初に検出される走査ライン中の交点を、処理画面上の座標として表現したものである。また、第2の衝突座標エリアE8は、バットBAT像とオブジェクト画像(ボール像)との重なりが最後に検出される走査ライン中の交点を、処理画面上の座標として表現したものである。E9は重心座標エリアであり、実画像にてクロマキー検出されるバットBAT像(あるいは調整パネル像CP)の面積に基づき算出される重心位置を処理画面上の座標位置が記憶される。
【0041】
E10は、実画像にてクロマキー検出されるバットBAT像(あるいは調整パネル像CP)の面積が記憶される面積エリアである。この面積エリアE10にセットされる面積は、ブロック個数で表わされる。ここで言うブロックとは、処理画面において水平方向6ドット、垂直方向2ラインからなる12ドット領域を指す。この12ドット領域から形成されるブロック中に、「6ドット」以上のクロマキー検出があった場合、そのブロックがバットBAT像の面積として見做される。E11およびE12は、それぞれ前述した調整パネルCP(図1参照)に対応するクロマキー像を検出する際の検出領域を表わす左上端座標および右下端座標を一時記憶する左上端座標記憶エリア、右下端座標記憶エリアである。すなわち、これら記憶エリアE11,E12に格納される座標(X1,Y1)および座標(X2,Y2)が指定する対角要素に基づき、検出領域が定められる。
【0042】
▲4▼制御部50の構成
次に、再び図3を参照して制御部50の構成について説明する。制御部50は、構成要素51〜57から構成される。CPU51は装置本体2の操作パネルに配設される各種操作子をキースキャンし、これに応じて生成される操作子信号KSに応じて装置各部を制御するものであり、その動作の詳細については後述する。このCPU51は、内部タイマを備え、当該タイマによってカウントされるゲームカウンタ値に基づきゲーム進行を管理する。
【0043】
また、CPU51は、周知のDMAコントローラを備えており、画像制御動作に必要な各種データ(バックグラウンド画像データDBGやオブジェクト画像データDOB)を前述した画像処理部30へDMA転送するよう構成されている。52はRAMであり、CPU51のワークエリアとして各種演算結果やフラグ値が一時記憶される。53はCPU51の動作を管理するOS(オペレーションシステム)プログラムが記憶されるROMである。54はCPU51の制御の下に装置全体の動作を規定するシステムクロックを発生するシステムクロック回路である。
【0044】
55は装置本体2に対して挿脱自在に装着されるゲームカートリッジであり、ROM55aと第1音源回路55bとから構成されている。ROM55aは、CPU51にロードされるアプリケーションプログラムである。なお、この実施例においては、前述したように、打撃練習をシミュレートするゲームプログラムが記憶されている。55bは第1音源回路であり、CPU51側から位置検出処理部40を介して供給されるイベントデータに基づき、ゲーム動作に対応したゲーム効果音を合成し、これを楽音信号としてCPU51へ出力する。56は第2音源回路であり、ゲーム進行に対応した楽曲、例えば、オープニングやエンディング等の楽曲を楽音合成して出力する。57はサウンドシステムであり、上記第1音源回路55bおよび第2音源回路56から供給される楽音信号に対してノイズ除去等のフィルタリングを施した後、これを増幅して出力する。
【0045】
C.実施例の動作
次に、上記構成による実施例の動作について説明する。ここでは、まず、前述した位置検出処理部40の動作について説明した後、本願発明の要旨に係わる制御部50(CPU51)の動作について説明する。
(1)位置検出処理部40の動作
ここでは、ゲートアレイによって構成される位置検出処理部40の動作について図9〜図14を参照して説明する。処理部40では、制御部50の指示の下に設定される検出領域に基づき、前述した調整用パネルCP(図1参照)をクロマキー検出する。ここで言う検出領域とは、記憶エリアE11,E12に格納される座標(X1,Y1)および座標(X2,Y2)で指定される対角要素に対応する画面領域を指す。また、処理部40では、調整用パネルCPのクロマキー検出がなされた後、制御部50の指示に応じてサンプリング画像データDS中に含まれるバットBAT像をクロマキー検出信号CROに基づいて検出すると共に、バットBAT像とオブジェクト画像(ボール像)との衝突座標位置や、これら画像の重心位置を検出する。以下、こうした動作の詳細について説明する。
【0046】
▲1▼メインルーチンの動作
まず、装置本体2に電源が投入され、CPU51側からシステムリセットを表わす制御信号SCが位置検出処理部40に供給されたとする。そうすると、位置検出処理部40は、上記制御信号SCに基づき、内部にセットされるマイクロプログラムをロードして図9に示すメインルーチンを起動してステップSA1を実行する。ステップSA1では、自身の内部レジスタをリセット、あるいは初期値をセットするイニシャライズを行う一方、撮像信号処理部11、ビデオ信号処理部20およびVDP31へそれぞれレジスタセットを指示するレジスタコントロール信号SREGを供給し、次のステップSA2に進む。
【0047】
ステップSA2では、「初期画面マップ」が作成されているか否かを判断する。ここで、例えば、「初期画面マップ」が作成されていない場合、判断結果は「NO」となり、次のステップSA3に処理を進める。なお、この「初期画面マップ」とは、ゲーム開始に先立って、撮像部1が撮像する画面内に、バットBAT(図1参照)と同色の物体が存在するか否かを確認するためのものである。そして、ステップSA3に進むと、複数フレーム分のクロマキー検出結果を重ね合わせ、これをワークRAMの初期画面エリアE1(図11参照)に格納し、初期画面内に存在するクロマキー検出ブロックを「不感帯」と見做す「初期画面マップ」を作成する。
【0048】
このようにして「初期画面マップ」の作成がなされると、位置検出処理部40は、次のステップSA4に処理を進める。なお、「初期画面マップ」が予め用意されている場合には、上記ステップSA2の判断結果は「YES」となり、ステップSA4に進む。ステップSA4では、前述した記憶エリアE11(図8参照)に格納される左上端座標(X1,Y1)を読出し、これをレジスタX,Yにセットする。
上述したように、調整用パネルCPをクロマキー検出する場合には、当該パネルCPの配設位置に応じた左上端座標(X1,Y1)がCPU51側から与えられる一方、バットBAT像とオブジェクト画像(ボール像)との衝突座標位置や、これら画像の重心位置を検出するゲーム動作時には左上端座標(0,0)が与えられる。すなわち、このレジスタX,Yには、クロマキー検出すべき画面座標が順次セットされる。
【0049】
次に、ステップSA5に進むと、位置検出処理部40は、図示されていないラインバッファに一時記憶されたクロマキー検出信号CROに対してブロック単位毎のクロマキー検出を施す。ブロック単位のクロマキー検出とは、ラインバッファから読み出したクロマキー検出信号CROを水平方向6ドット、垂直方向2ラインからなるブロックに区分けし、「H」レベルのクロマキー検出信号CROがブロック当り「6ドット」以上存在した時に、当該ブロックの属性を「クロマキー有り」と見做すものである。こうしたクロマキー検出の結果は、前述した処理画面エリアE2(図8参照)にブロック属性としてストアされ、これが「処理画面マップ」となる。
【0050】
次いで、ブロック単位毎のクロマキー検出がなされると、位置検出処理部40は、次のステップSA6に進み、クロマキー検出された実画像のバットBAT像とCG画像中におけるオブジェクト画像(ボール像)との衝突の有無を検出し、衝突する場合にはその衝突座標を求める。そして、ステップSA7に進むと、処理部40は、レジスタXの値を1インクリメントして歩進させ、続いて、ステップSA8ではレジスタXの値が「X2」、つまり、検出領域の右下端X座標値に達したか否かを判断する。ここで、レジスタXの値が「X2」に達していない場合には、判断結果が「NO」となり、検出領域内での1走査ライン分の処理が完了する迄、上記ステップSA5〜SA7を繰り返す。
【0051】
一方、1走査ライン分の処理が完了してレジスタXの値が右下端X座標値「X2」に達すると、ここでの判断結果が「YES」となり、ステップSA9に進み、レジスタXの値を再び左上端X座標値「X1」にリセットすると共に、レジスタYの値を1インクリメントして走査ラインを垂直方向に更新する。そして、ステップSA10に進むと、処理部40はレジスタYの値が「Y2」、つまり、検出領域の右下端Y座標値に達したか否かを判断する。ここで、レジスタYの値が右下端Y座標値「Y2」に達していない場合には、判断結果が「NO」となり、上述したステップSA5〜SA9を繰り返す。そして、検出領域内の走査が完了すると、ここでの判断結果が「YES」となり、ステップSA11に処理を進める。
【0052】
ステップSA11では、上記ステップSA5においてクロマキー検出されたブロックに基づき、バットBAT像(あるいは調整用パネルCP)の左端/右端座標および上端/下端座標を算出し、これらをワークRAMの記憶エリアE3〜E6(図8参照)に記憶する一方、クロマキー検出されたブロック個数からバットBAT像(あるいは調整用パネルCP)の面積を求める。なお、記憶エリアE3〜E4は、それぞれ1フレーム毎に更新される処理画面でのバットBAT像(あるいは調整用パネルCP)の上端/下端位置を一時記憶し、記憶エリアE5〜E6は、それぞれ1フレーム毎に更新される処理画面でのバットBAT像(あるいは調整用パネルCP)の左端/右端位置を一時記憶する。また、ブロック個数から算出されるバットBAT像(あるいは調整用パネルCP)の面積は、記憶エリアE10に格納される。
【0053】
こうして実画像からバットBAT像(あるいは調整用パネルCP)をクロマキー検出すると、ステップSA12に進み、当該バットBAT像(あるいは調整用パネルCP)の重心位置を求め、続いて、ステップSA13において割込みフラグが「1」かどうかを判定し、「1」であればCPU51に対して割込み信号を出力する(ステップSA14)。この後、ステップSA15に進み、衝突フラグCFを「0」にセットする。この衝突フラグCFとは、実画像のバットBAT像とCG画像のオブジェクト画像(ボール像)とが衝突状態、すなわち、重なり合う場合に「1」となる。そして、このステップSA13以後、位置検出処理部40はその処理をステップSA4に戻し、上述した動作を繰り返し、「バット」と「ボール」との対応関係をフレーム毎に求める。
【0054】
▲2▼初期画面マップ作成ルーチンの動作
次に、図10を参照して初期画面マップ作成ルーチンの動作について説明する。上述したように、初期画面マップが作成されていない場合、位置検出処理部40はステップSA3に処理を進め、図10に示す初期画面マップ作成ルーチンを実行してステップSB1に処理を進める。ステップSB1では、内部レジスタにセットされるサンプリング回数nを読み出す。サンプリング回数nとは、撮像部1から供給されるクロマキー検出信号CROを何フレーム分取り込むかを表わすものである。次いで、ステップSB2に進むと、レジスタX,Yの値をゼロリセットし、次のステップSB3に進む。ステップSB3では、ラインバッファに書き込まれたクロマキー検出信号CROの内、X方向(水平方向)の6ドット分、Y方向(垂直方向)の2ライン分、すなわち、1ブロック分を読み出す。
【0055】
次いで、ステップSB4に進むと、この読み出した1ブロック中に「6ドット」以上の「H」レベルのクロマキー検出信号CROが存在するか否かを判断する。ここで、「6ドット」以上存在しなければ、「クロマキー無し」として判断結果が「NO」となり、ステップSB5に進む。ステップSB5では、そのブロック属性を「0」として次のステップSB7へ処理を進める。一方、これに対し、「6ドット」以上存在すると、「クロマキー有り」とされて、判断結果が「YES」となり、ステップSB6に進む。ステップSB6では、そのブロック属性を「1」にセットし、次のステップSB7へ処理を進める。ステップSB7では、最初のフレームであるか否かを判断する。ここで、最初にサンプリングしたフレームであると、判断結果は「YES」となり、ステップSB8に進む。
【0056】
ステップSB8に進むと、位置検出処理部40は、現レジスタX,Yの値に応じて初期画面エリアE1へ判定したブロック属性をストアする。そして、この後、ステップSB9に進み、レジスタXの値を1インクリメントし、指定ブロックの番号を歩進させる。次に、ステップSB10に進むと、この歩進された指定ブロックの番号が「96」、つまり、1走査(水平)ライン分完了したか否かを判断する。ここで、完了していない場合には、判断結果が「NO」となり、ステップSB11に進む。ステップSB11では、レジスタYの値が「96」、つまり、1フレーム分終了したか否かを判断する。ここで、1フレーム分の処理が終了していない場合には、判断結果が「NO」となり、前述したステップSB3に戻る。これにより、ステップSB3〜SB6が繰り返され、次のブロック属性が判定される。
【0057】
そして、例えば、いま、1走査(水平)ライン分のブロック属性の判定が完了したとする。そうすると、ステップSB10の判断結果が「YES」となり、処理部40はステップSB13へ処理を進める。ステップSB13では、レジスタXをゼロリセットする一方、レジスタYの値を1インクリメントして走査ラインを更新する。そして、この後、再び、ステップSB11を介してステップSB3以降のブロック判定がなされる。次いで、1フレーム分のブロック属性について判定が完了すると、上述したステップSB11の判断結果が「YES」となり、ステップSB12に進む。ステップSB12では、サンプリング回数nが設定回数に達したか否かを判断する。
【0058】
ここで、設定回数に達していない場合には、判断結果が「NO」となり、ステップSB14へ処理を進める。ステップSB14では、サンプリング回数nを歩進させ、再び前述したステップSB2以降を実行する。こうして1回目の初期画面マップが作成され、2回目の初期画面マップの作成を行う過程で、ステップSB7に進むと、ここでの判断結果が「NO」となり、ステップSB15に進む。ステップSB15では、先にストアされた対応ブロック属性をレジスタX,Yの値に応じて初期画面エリアE1から読み出す。そして、ステップSB16に進むと、先のブロック属性と、現在判定されたブロック属性との論理和を求める。続いて、ステップSB8では、この論理和を新たなブロック属性としてレジスタX,Yの値に基づき初期画面エリアE1にストアする。そして、所定フレーム分の論理和が生成されると、上述したステップSB12の判断結果が「YES」となり、このルーチンを終了し、位置検出処理部40の処理は前述したメインルーチンへ復帰する。
【0059】
▲3▼処理画面マップ作成ルーチンの動作
以上のようにして初期画面マップが作成されると、位置検出処理部40はステップSA5を介して図11に示す処理画面マップ作成ルーチンを実行してステップSC1に処理を進める。ステップSC1では、ラインバッファに書き込まれたクロマキー検出信号CROの内、X方向(水平方向)6ドット、Y方向(垂直方向)2ラインからなる1ブロックを読み出す。次いで、ステップSC2に進むと、その読み出した1ブロック内に「6ドット」以上の「H」レベルのクロマキー検出信号CROが存在するか否かを判断する。ここで、「6ドット」以上存在しなければ、「クロマキー無し」として判断結果が「NO」となり、ステップSC3に進む。ステップSC3では、そのブロック属性を「0」として次のステップSC4へ処理を進める。ステップSC4では、この判定されたブロック属性をレジスタX,Yの値に基づき処理画面エリアE2(図8参照)にストアする。
【0060】
一方、上記ステップSC2の判断結果が「YES」となった場合、すなわち、1ブロック内に「6ドット」以上の「H」レベルのクロマキー検出信号CROが存在する時には、処理部40はステップSC5に処理を進める。ステップSC5では、リジェクトスイッチSRがオン操作されているか否かを判断する。このリジェクトスイッチSRとは、装置本体2の操作パネルに配設されるスイッチであり、そのスイッチ操作に応じて「不感帯」を設けるか否かを設定するものである。ここで、当該スイッチSRがオン設定されている場合には、初期画面マップに記憶されたクロマキー検出ブロックを「不感帯」と見做すようにする。
【0061】
すなわち、上記ステップSC5において、リジェクトスイッチSRがオン設定されている場合には、判断結果が「YES」となり、次のステップSC6に進む。ステップSC6では、初期画面エリアE1からレジスタX,Yの値に応じて対応するブロック属性を読み出す。次いで、ステップSC7に進むと、初期画面エリアE1から読み出したブロック属性が「1」であるか否かを判断する。ここで、当該ブロック属性が「1」である時、その判断結果は「YES」となり、上述したステップSC3に進み、ブロック属性を「0」に変更し、その後、ステップSC4を介して、この変更されたブロック属性をレジスタX,Yの値に応じて処理画面エリアE2に書き込む。この結果、初期画面マップに記憶されたクロマキー検出ブロックが「不感帯」に設定される訳である。
【0062】
なお、上記リジェクトスイッチSRがオン設定されない場合、つまり、「不感帯」を設定しない時には、ステップSC5の判断結果が「NO」となり、ステップSC8に進む。ステップSC8では、上述したステップSC2において判定された結果に基づき、対応するブロックの属性を「1」に設定し、続いて、ステップSC4を介してそのブロック属性をレジスタX,Yの値に応じて処理画面エリアE2に書き込む。
【0063】
▲4▼衝突座標検出ルーチンの動作
次に、図12を参照して衝突座標検出ルーチンの動作について説明する。上述したように処理画面マップが作成されると、位置検出処理部40はステップSA6(図9参照)を介して衝突座標検出ルーチンを実行する。このルーチンでは、クロマキー検出された実画像のバットBAT像とCG画像中におけるオブジェクト画像(ボール像)との衝突の有無を検出するものである。まず、当該ルーチンが実行されると、処理部40はステップSD1に処理を進め、処理画面エリアE2からレジスタX,Yの値に対応するブロック属性を読み出す。そして、ステップSD2に進むと、その読み出したブロック属性が「1」、すなわち、クロマキー検出されたバットBAT像であるか否かを判断する。ここで、ブロック属性が「1」でない場合には、判断結果が「NO」となり、衝突が起こり得ないとして一旦このルーチンを終了する。
【0064】
これに対し、読み出したブロック属性が「1」である時には、判断結果が「YES」となり、次のステップSD3に処理を進める。ステップSD3では、ラインバッファに書き込まれたCGデータをレジスタX,Yの値に応じて読み出す。ここで言うCGデータとは、CG画像中のオブジェクト画像データDOBに対応する信号YSOBJを指す。なお、信号YSOBJは、VDP31(図3参照)から処理部40に供給されるものである。
そして、次のステップSD4に進むと、処理部40は読み出したCGデータが「1」であるか否かを判断する。この時、当該CGデータが「1」でなければ、レジスタX,Yの値に応じて読み出されたブロックはオブジェクト画像データDOBと重ならないことになるから、衝突しないとして判断結果が「NO」となり、このルーチンを終了する。
【0065】
一方、読み出したCGデータが「1」であると、ステップSD4の判断結果が「YES」となり、ステップSD5に進む。ステップSD5では、衝突フラグCFが「0」であるか否かを判断する。衝突フラグCFは、実画像のバットBAT像とCG画像のオブジェクト画像(ボール像)とが重なり合う場合に「1」となるものである。ここで、当該フラグCFが「0」である場合、つまり、初めて両画像の衝突が認知された状態では、判断結果が「YES」となり、次のステップSD6に処理を進める。ステップSD6では、最初に検出された第1のX座標をを衝突座標エリアE7にストアし、続いてステップSD7ではこれに対応する第1のY座標を同エリアE7にストアする。そして、ステップSD8に進み、衝突フラグCFを「1」にセットする。
【0066】
なお、このようにして衝突フラグCFが「1」になると、処理部40はCPU51側へ割込み要求を出し、これに応じてCPU51が衝突割込み処理(後述する)を実行するようにしている。
これに対して上記ステップSD5の判断結果が「NO」の場合、すなわち、既に両画像の衝突が認知された状態では、ステップSD9に進み、最後に検出された第2のX座標を衝突座標エリアE8にストアし、続いてステップSD10ではこれに対応する第2のY座標を同エリアE7にストアする。
【0067】
▲5▼座標検出ルーチンの動作
次に、図13を参照して座標検出ルーチンの動作について説明する。位置検出処理部40はステップSA11(図9参照)を介して座標検出ルーチンを実行し、ステップSE1に処理を進める。ステップSE1では、レジスタX,Yと、レジスタX’,Y’と、レジスタSとをそれぞれゼロリセットして初期化する。なお、レジスタSには、ブロック個数を累算してなるバットBAT像(あるいは調整用パネルCP像)の面積が格納される。また、レジスタX’,Y’に格納される値については後述する。
【0068】
次いで、ステップSE2に進むと、処理部40は、処理画面エリアE2からレジスタX,Yの値に応じて対応するブロック属性を読み出してステップSE3に処理を進める。ステップSE3では、その読み出したブロック属性が「1」、すなわち、クロマキー検出されたバットBAT像(あるいは調整用パネルCP像)であるか否かを判断する。ここで、ブロック属性が「1」でない場合には、判断結果が「NO」となり、ステップSE4に進む。ステップSE4では、レジスタXの値を1インクリメントして歩進させる。そして、ステップSE5に進むと、レジスタXの値が「96」、つまり、1水平(走査)ライン分のブロック属性を読み出したか否かを判断する。ここで、1水平ライン分の読み出しが完了していない場合には、判断結果が「NO」となり、再び上記ステップSE2へ処理を戻す。
【0069】
そして、例えば、読み出したブロック属性が「1」であると、ステップSE3の判断結果が「YES」となり、ステップSE6に処理を進める。ステップSE6では、レジスタXの値がレジスタX’の値より大であるか否かを判断する。レジスタX’には、前回検出したX座標がセットされており、この座標値と今回の座標値との比較結果に応じて右端/左端座標を更新するようにしている。つまり、ここでの判断結果が「NO」になると、ステップSE7に進み、レジスタXの値を左端座標エリアE5(図8参照)にストアしてバットBAT像(あるいは調整用パネルCP像)の左端座標を更新する。一方、ステップSE6の判断結果が「YES」になると、ステップSE8に進み、レジスタXの値を右端座標エリアE6(図8参照)にストアしてバットBAT像(あるいは調整用パネルCP像)の右端座標を更新する。
【0070】
次いで、ステップSE9に進むと、処理部40は、レジスタYの値がレジスタY’の値より大であるか否かを判断する。ここで、レジスタY’は、上記レジスタX’と同様、前回検出したY座標がセットされており、この座標値と今回の座標値との比較結果に応じて上端/下端座標を更新するようにしている。つまり、判断結果が「NO」になると、ステップSE10に進み、レジスタYの値を上端座標エリアE3(図8参照)にストアしてバットBAT像(あるいは調整用パネルCP像)の上端座標を更新する。一方、ステップSE9の判断結果が「YES」になると、ステップSE11に進み、レジスタYの値を下端座標エリアE4(図8参照)にストアしてバットBAT像(あるいは調整用パネルCP像)の下端座標を更新する。
【0071】
そして、ステップSE12では、レジスタSの値を1インクリメントし、面積を1ブロック増加させる。続いて、ステップSE13に進むと、レジスタX,Yの値をそれぞれレジスタX’,Y’に書き換える。
こうして上記ステップSE2〜SE13の処理が1水平ライン分なされると、上述したステップSE5の判断結果が「YES」となり、ステップSE14に進み、レジスタXの値をゼロリセットすると共に、レジスタYの値を1歩進させる。次いで、ステップSE15に進むと、レジスタYの値が「96」、つまり、1フレーム分の座標検出がなされたか否かを判断する。そして、1フレーム分の座標検出が完了していない場合には、前述したステップSE2以降が繰り返される。一方、完了した時には、このルーチンから前述したメインルーチン(図9参照)へ処理を戻す。
【0072】
▲6▼重心計算ルーチンの動作
上記座標検出ルーチンによって、クロマキー検出されたバットBAT像(あるいは調整用パネルCP像)の左端/右端座標および上端/下端座標が検出されると、位置検出処理部40はステップSA12を介して図14に示す重心計算ルーチンを実行し、ステップSF1に処理を進める。まず、ステップSF1では、レジスタXG,YGをゼロリセットする。レジスタXG,YGは、それぞれクロマキー検出されたブロックに基づいて算出されるバットBAT像(あるいは調整用パネルCP像)の重心座標が格納されるものである。次に、ステップSF2に進むと、レジスタX,Yを初期化し、続いて、ステップSF3では、処理画面エリアE2からレジスタX,Yの値に対応するブロック属性を読み出す。
【0073】
次に、ステップSF4に進むと、処理部40は、この読み出したブロック属性が「1」、すなわち、クロマキー検出されたバットBAT像(あるいは調整用パネルCP像)であるか否かを判断する。ここで、ブロック属性が「1」でない場合には、判断結果が「NO」となり、ステップSF5に進む。ステップSF5では、レジスタXの値を1インクリメントして歩進させる。そして、ステップSF6に進むと、レジスタXの値が「96」、つまり、1水平(走査)ライン分のブロック属性を読み出したか否かを判断する。ここで、1水平ライン分の読み出しが完了していない場合には、判断結果が「NO」となり、再び上記ステップSF3に処理を戻す。
【0074】
そして、例えば、次に読み出したブロック属性が「1」であるとする。そうすると、ステップSF4の判断結果は「YES」となり、処理部40はステップSF7に処理を進める。ステップSF7では、クロマキー検出されたブロックを質点と見做し、このブロックの座標(X,Y)と面積Sとの比を順次累算する重心計算を行う。なお、この面積Sは上述した座標検出ルーチンにおいてレジスタSに格納されるものである。次いで、ステップSF8に進むと、上記ステップSF7の重心計算結果に応じて重心座標を更新し、続いて、ステップSF5においてレジスタXの値を歩進させる。
【0075】
ここで、1水平ライン分の読み出しが完了したとすると、ステップSF6の判断結果が「YES」となり、ステップSF9に進み、レジスタXの値をゼロリセットすると共に、レジスタYの値を1歩進させる。次いで、ステップSF10に進むと、レジスタYの値が「96」、つまり、1フレーム分の重心計算がなされたか否かを判断する。そして、1フレーム分の重心計算が完了していない場合には、判断結果が「NO」となり、前述したステップSF3以降の処理を繰り返す。一方、1フレーム分の重心計算が完了した時には、判断結果が「YES」となり、このルーチンを終了してメインルーチン(図9参照)に復帰する。
【0076】
このように、位置検出処理部40では、クロマキー検出信号CROに基づいてクロマキー検出されるバットBAT像(あるいは調整用パネルCP像)を処理画面マップに登録する。そして、一定周期毎になされるクロマキー検出閾値調整(後述する)では、この処理画面マップから読み出したブロック属性に従って調整用パネルCP像の左端/右端座標および上端/下端座標を求めてその面積と重心位置とを算出する。
【0077】
一方、ゲーム処理動作では、処理画面マップから読み出したブロック属性に従ってバットBAT像とオブジェクト画像(ボール像)との衝突座標位置や、処理画面におけるバットBAT像の左端/右端座標および上端/下端座標を求めると共に、その面積と重心位置とを算出する。
なお、一定周期毎になされるクロマキー検出閾値調整とは、後述する自動設定処理および閾値調整処理により実行されるものであり、その際、この位置検出処理部40が検出した調整用パネルCP像の面積と重心位置とが用いられるようになっている。
【0078】
(2)制御部50(CPU51)の動作
次に、上述した位置検出処理部40から供給される各種データに基づき、常に最適なクロマキー検出閾値を保ちながら画像処理部30、第1音源回路55bおよび第2音源回路56を制御してゲーム進行を管理するCPU51の動作について図15〜図24を参照して説明する。
ここでは、まず、CPUメインルーチンについて説明した後、同ルーチンにおいてコールされ、本願発明の要旨に係わる自動設定処理ルーチンおよび閾値設定処理ルーチンとについて説明する。そして、さらに、CPU51においてなされる各種割込み処理ルーチンについて順次説明する。
【0079】
▲1▼メインルーチンの動作
まず、装置本体2に電源が投入されると、CPU51はROM53に記憶されたオペレーションシステムプログラムを読み出してロードした後、ゲームカートリッジ55に内蔵されるROM55aからアプリケーションプログラムを読み出し、RAM52に展開する。これにより、図15に示すCPUメインルーチンが起動され、CPU51の処理はステップSG1に進む。ステップSG1では、RAM52に確保される各種レジスタを初期化すると共に、VDP31および位置検出処理部40へイニシャライズを指定する制御信号SCを供給する。次いで、ステップSG2に進むと、各部へ割込み許可を与える制御信号SCを供給する一方、自身の割込みマスクを解除し、ステップSG3へ処理を進める。
【0080】
次に、CPU51は、ステップSG3〜ステップSG7を介してゲーム開始時の初期画面を形成する。すなわち、ステップSG3に進むと、CPU51は初期画面背景となるバックグラウンド画像データDBGをVDP31へDMA転送するため、DMAコントローラに転送先アドレスおよび転送元アドレスをセットする。なお、DMA転送は、ディスプレイ3(図1参照)側の垂直帰線期間に同期した割込み処理により行われる。転送命令がセットされたDMAコントローラは、CPU51の指示の下、ROM55a(図3参照)から転送元アドレスに対応するバックグラウンド画像データDBGを読み出してVDP31(VRAM32)へDMA転送する。こうした割込み処理については追って説明する。
【0081】
次いで、ステップSG4に進むと、CPU51は、画面背景上に表示されるオブジェクト画像データDOB1をVDP31へDMA転送するため、DMAコントローラに転送先アドレスおよび転送元アドレスをセットする。このオブジェクト画像データDOB1とは、画面背景上に表示される「カーソル」に相当するものであり、クロマキー検出されるバットBAT像の所定部分(例えば、上端部分)に対応して移動表示されるものである。続いて、ステップSG5では、当該データDOB1に対応するオブジェクトテーブルデータTOB1の転送先アドレスおよび転送元アドレスをDMAコントローラにセットする。このオブジェクトテーブルデータTOB1は、初期画面におけるオブジェクト画像データDOB1の表示位置、すなわち、上述した通り、クロマキー検出されるバットBAT像の所定部分(例えば、上端部分)に対応した表示位置を指定するものであって、オブジェクトテーブルRAM31f(図8参照)に格納される。
【0082】
ステップSG6では、初期画面の背景上に表示されるオブジェクト画像データDOB2をVDP31へDMA転送するため、DMAコントローラに転送先アドレスおよび転送元アドレスをセットする。この場合のオブジェクト画像データDOB2は、「投手」を模したキャラクタ像と、このキャラクタ像が持つ「ボール像」とから形成される。そして、ステップSG7に進むと、CPU51は、当該データDOB2に対応するオブジェクトテーブルデータTOB2の転送先アドレスおよび転送元アドレスをDMAコントローラにセットする。これにより、初期画面を形成する際の準備が整い、垂直帰線期間毎にバックグラウンド画像データDBG、オブジェクト画像データDOB1,DOB2およびオブジェクトテーブルデータTOB1,TOB2がDMA転送され、VDP31がこれらに基づき画像処理データDSPを生成する。
【0083】
このようにして初期画面が形成されると、CPU51はステップSG8に進み、最適なクロマキー検出閾値を自動的に設定する自動設定処理を実行する。この自動設定処理では、前述した位置検出処理部40にてクロマキー検出された調整用パネルCP像が既定の面積および重心位置を持つように、R−Y閾値およびB−Y閾値を可変制御する。自動設定処理により得られた最適なR−Y閾値およびB−Y閾値は、前述したように、クロマキー信号発生部20f(図5参照)に供給される。次いで、自動設定処理が完了すると、CPU51はステップSG9に処理を進め、スタートイベントが発生したか否かを判断する。
【0084】
ここで言うスタートイベントとは、装置本体2の操作パネルに配設されるスタートスイッチがオン操作された時に発生するイベントである。そして、遊戯者がゲームを開始させるため、当該スタートスイッチをオン操作すると、上記スタートイベントが生成されるから、ここでの判断結果が「YES」となり、ステップSG10へ処理を進める。ステップSG10では、レジスタtをゼロリセットし、続いて、ステップSG11に進み、レジスタSTFに「1」をセットして次のステップSG12へ処理を進める。一方、スタートイベントが生成されない場合には、上記ステップSG9の判断結果が「NO」となり、ステップSG12へ進む。なお、上述したレジスタtにはゲーム進行を管理するタイムカウント値が後述する割込み動作によってセットされる。
【0085】
ステップSG12では、レジスタSTFの値が「1」、すなわち、ゲーム開始か否かを表わすスタートフラグがゲーム開始状態であるか否かを判断する。ここで、ゲーム開始状態を表わすフラグ値「1」がセットされていなければ、判断結果が「NO」となり、スタートイベントが生成されるまで上述したステップSG9〜SG11を繰り返す。そして、スタートイベントが発生すると、ステップSG12の判断結果が「YES」となり、CPU51は次のステップSG13へ処理を進める。ステップSG13では、レジスタACKF1にセットされる転送フラグF1が「0」であるか否かを判断する。この転送フラグF1とは、上述したステップSG5において転送セットされたオブジェクトテーブルデータTOB1がDMA転送されたか否かを表わすものであり、当該フラグF1が「0」の時にDMA転送完了の旨を表わし、「1」の時に未転送状態にあることを表わす。
【0086】
そして、転送フラグF1が「0」になると、ステップSG13の判断結果が「YES」となり、ステップSG14に進む。ステップSG14では、上記ステップSG8において設定されたR−Y閾値およびB−Y閾値を最適な値とすべく調整する閾値調整処理を実行する。つまり、上記ステップSG8の自動設定処理がゲーム動作開始前のクロマキー検出閾値を最適な値にするものであるのに対し、この閾値調整処理では、ゲーム動作開始後のクロマキー検出閾値を最適調整するものである。なお、これら調整処理の詳細については追って説明する。
【0087】
そして、この閾値調整処理が完了した場合、あるいは上記ステップSG13において既にオブジェクトテーブルデータTOB1がDMA転送されている場合には、CPU51は図16に示すステップSG15に処理を進める。ステップSG15では、レジスタACKF2にセットされる転送フラグF2が「0」であるか否かを判断する。転送フラグF2とは、前述したステップSG7において転送セットされたオブジェクトテーブルデータTOB2がDMA転送されたか否かを表わすものであり、当該フラグF2が「0」の時にDMA転送完了の旨を表わし、「1」の時に未転送状態にあることを表わす。
【0088】
ここで、転送フラグF2が「0」であると、ステップSG15の判断結果が「YES」となり、次のステップSG16へ処理を進める。ステップSG16では、レジスタtの値、すなわち、ゲーム進行に応じたタイムカウント値に基づき、対応するオブジェクトテーブルデータTOB2を演算する。これにより、ゲーム画面を形成するオブジェクト画像データDOB2の表示位置が定まる。この場合、オブジェクト画像データDOB2は、「投手」を模したキャラクタ像と、このキャラクタ像が持つ「ボール像」とから形成される。次に、ステップSG17に進むと、CPU51は予めVDP31側へDMA転送した複数のオブジェクト画像データDOB2の内から、レジスタtに格納されるタイムカウント値に対応する画像データDOB2を指定する制御信号SCを発生する。この結果、ゲーム画面においてテーブルデータTOB2で指定された位置に該当するオブジェクト画像データDOB2が表示される。
【0089】
以上のようにしてゲーム画面が形成されると、CPU51はステップSG18に進み、レジスタACKF2に格納される転送フラグF2を「1」にセットし、ステップSG19に進む。なお、上述したステップSG15において判断結果が「NO」の場合、つまり、既にオブジェクトテーブルデータTOB2がDMA転送されている時にもステップSG19へ処理を進める。ステップSG19では、ストップイベントが発生したか否かを判断する。ストップイベントとは、装置本体2に配設されるストップスイッチがオン操作された時に発生するイベントである。そして、遊戯者がゲームを停止させるため、当該ストップスイッチをオン操作すると、上記ストップイベントが生成され、ここでの判断結果が「YES」となり、ステップSG20へ進む。
【0090】
ステップSG20では、レジスタSTFに格納されるスタートフラグを「0」にセットしてゲーム動作を停止させ、この後、CPU51は前述したステップSG9に処理を戻し、スタートイベントが生成されるまでステップSG9,SG12を繰り返す。
一方、上記ステップSG19において、ストップスイッチがオン操作されない場合には、ここでの判断結果が「NO」となり、ステップSG21へ処理を進める。ステップSG21では、レジスタtに格納されるタイムカウント値が所定値Tに達したか否かを判断する。ここで、タイムカウント値がゲーム終了時間に相当する所定値Tに達していない場合には、判断結果が「NO」となり、ステップSG9へ処理を戻す。これに対し、タイムカウント値が所定値Tに達した場合には、レジスタtに格納されるタイムカウント値をゼロリセットした後、ステップSG9へ処理を戻す。
【0091】
▲2▼自動設定処理ルーチンの動作
次に、図17を参照して、クロマキー検出された調整用パネルCP像が既定の面積および重心位置を持つように、R−Y閾値およびB−Y閾値を可変制御する自動設定処理ルーチンの動作について説明する。まず、前述したように、CPU51の処理がステップSG8に進むと、自動設定処理ルーチンを起動し、ステップSH1を実行する。ステップSH1では、調整用パネルCPのクロマキー像を抽出すべく、位置検出処理部40に対して検出領域を表わす左上端座標(X1,Y1)および右下端座標(X2,Y2)をワークRAMの記憶エリアE11,E12にセットする。これにより、位置検出処理部40は、与えられた検出領域に基づき、実画像から調整用パネルCP像をクロマキー検出する。
【0092】
次いで、ステップSH2〜SH5では、クロマキー検出閾値を初期設定する。すなわち、ステップSH2では、R−Y閾値high側の初期値を「40H(16進表示)」とするため、レジスタRHに「40H」をセットする。また、ステップSH3では、R−Y閾値low側の初期値としてレジスタRLに「3FH」をセットする。さらに、B−Y閾値high側およびlow側では、ステップSH4〜SH5を介してそれぞれレジスタBH,BLに「7FH」,「7FH」がセットされる。
【0093】
こうしてクロマキー検出閾値を初期設定すると、CPU51はステップSH6に進み、位置検出処理部40が初期設定されたクロマキー検出閾値に基づきクロマキー検出するまでの間(例えば、60msec)待機する。そして、ステップSH7に進むと、クロマキー検出に応じて求められた調整用パネルCP像の面積および重心位置を、位置検出処理部40におけるワークRAMの記憶エリアE9,E10(図8参照)から読出し、これを制御部50側のテンポラリレジスタにセットする。次に、ステップSH8に進むと、CPU51は位置検出処理部40から読み出した面積および重心位置に基づき既定値(既定面積および既定重心位置)と比較する。つまり、調整用パネルCPの面積および重心位置は既知であるから、既定面積および既定重心位置が位置検出処理部40から読み出した面積および重心位置にそれぞれ略一致すれば適正なクロマキー検出がなされたと見做せる。
【0094】
ここで、位置検出処理部40から読み出した面積および重心位置がそれぞれ既定面積および既定重心位置に略一致しなければ、ステップSH8の判断結果は「NO」となり、次のステップSH9へ処理を進める。ステップSH9では、レジスタBLの値を1デクリメントし、B−Y閾値low側の閾値レベルを1ステップ低減する。次いで、ステップSH10では、1ステップ低減したB−Y閾値low側の閾値レベルが「48H」以下、すなわち、「青」色に達したか否かを判断する。ここで、B−Y閾値low側の閾値レベルが「青」色に達していない場合には、判断結果が「NO」となり、上述したステップSH6に処理を戻し、閾値レベル変更後の面積および重心位置が既定値と略一致するか否かを判断する。
【0095】
一方、B−Y閾値low側の閾値レベルが「青」色に達した場合には、上記ステップSH10の判断結果が「YES」となり、ステップSH11に処理を進める。ステップSH11では、レジスタRLの値を1デクリメントし、R−Y閾値low側の閾値レベルを1ステップ低減させ、続いて、ステップSH12に進み、B−Y閾値low側の閾値レベルを初期値「7FH」にリセットする。この後、CPU51はステップSH13に処理を進め、レジスタBLの値が「48H」以下であって、レジスタRLの値が「00H」であるか否かを判断する。すなわち、閾値設定領域の全走査が完了したか否かを判断する。ここで、全走査が完了していない場合には、判断結果は「NO」となり、ステップSH6に処理を戻し、閾値レベル変更後における面積および重心位置の略一致・不一致を判断する。これに対し、閾値設定領域の全走査が完了した時には、判断結果が「YES」となり、ステップSH2に処理を戻す。
【0096】
位置検出処理部40から読み出した面積および重心位置がそれぞれ既定面積および既定重心位置に略一致した場合、つまり、適正なクロマキー検出閾値が設定されると、上述したステップSH8の判断結果が「YES」となり、ステップSH14に進む。ステップSH14では、位置検出処理部40から読み出した面積および重心位置をそれぞれレジスタMD,GDにセットする。次いで、ステップSH15に進むと、最適なクロマキー検出閾値に設定されたレジスタRH,RL,BH,BLの各値を固定する。そして、この後、CPU51はステップSH16に処理を進め、ゲーム実行用のクロマキー検出領域を位置検出処理部40におけるワークRAMの記憶エリアE11,E12にセットする。次いで、ステップSH17では、第2音源回路56(図3参照)に対してノートオンデータを供給し、報知音の発音を指示する。これにより、遊戯者Pは、最適なクロマキー検出閾値に設定されたことを認識する。
【0097】
以上のように、自動設定処理ルーチンでは、ゲーム動作開始に先立ち、調整用パネルCPのクロマキー像を検出し、当該クロマキー像の面積およびその重心位置を求め、求めた面積および重心位置が予め設定しておいた既定面積および既定重心位置に略一致するか否かを判断し、不一致である場合には検出した面積および重心位置が既定面積および既定重心位置に略一致するよう閾値設定領域内においてレジスタRH,RL,BH,BLの各値を調整するので、最適なクロマキー検出閾値を設定することが可能になる。
なお、この実施例では、クロマキー像から面積および重心位置を求めて既定値との略一致・不一致を判断しているが、これに替えて、「面積」あるいは「重心位置」のいずれか一方のみを判定材料としてクロマキー検出閾値を設定するようにしても良い。
【0098】
▲3▼閾値調整処理ルーチンの動作
次に、上記自動設定処理ルーチンによってゲーム動作開始前に調整された最適なクロマキー検出閾値を、ゲーム動作中に所定周期毎に最適調整する閾値調整処理ルーチンの動作について図18を参照して説明する。
まず、CPU51の処理がステップSG14(図15参照)に進むと、この閾値調整処理ルーチンを実行し、ステップSI1に処理を進める。ステップSI1では、調整用パネルCPのクロマキー像を抽出するための検出領域を位置検出処理部40の記憶エリアE11,E12にセットする。これにより、位置検出処理部40は、与えられた検出領域に基づき、実画像から調整用パネルCP像をクロマキー検出する。
【0099】
こうして調整用パネルCPのクロマキー像を抽出する検出領域を設定すると、CPU51はステップSI2に進み、位置検出処理部40が調整用パネルCPのクロマキー像を検出するまでの間(例えば、60msec)待機する。そして、ステップSI3に進むと、このクロマキー検出された調整用パネルCP像の面積および重心位置を、位置検出処理部40におけるワークRAMの記憶エリアE9,E10から読出し、これを制御部50のテンポラリレジスタにセットする。
次いで、ステップSI4に進むと、CPU51はテンポラリレジスタにセットした面積および重心位置がレジスタMD,GDにそれぞれ格納される面積、重心位置が略一致するか否か、すなわち、前述した自動設定処理ルーチンに応じて設定されたクロマキー検出閾値に基づく面積、重心位置が変化したか否かを判断する。
【0100】
ここで、面積、重心位置に変化がなければ、最適なクロマキー検出閾値が保たれているとしてステップSI4の判断結果が「YES」となり、ステップSI5に処理を進める。そして、ステップSI5では、現状のクロマキー検出閾値、つまり、レジスタRH,RL,BH,BLの各値をそのまま維持する。この後、CPU51はステップSI6に処理を進め、クロマキー検出領域を調整パネルCP検出用からゲーム実行用に戻した後、メインルーチンへ復帰する。
【0101】
これに対し、テンポラリレジスタにセットした面積および重心位置が、レジスタMD,GDにそれぞれ格納される面積、重心位置と略一致しない場合には、最適なクロマキー検出閾値がずれたものと見做してステップSI4の判断結果が「NO」となり、ステップSI7に処理を進める。ステップSI7では、テンポラリレジスタにセットした今回検出面積がレジスタMDに格納される前回検出面積値より小さいか否かを判断する。
【0102】
ここで、今回検出面積が前回検出面積値より大きいと、判断結果が「NO」となり、ステップSI8に処理を進める。ステップSI8では、レジスタBLの値が「48H」以下であって、レジスタRLの値が「7FH」であるか否かを判断する。ここで、R−Y閾値low側が最大レベル「7FH」に達していない場合、判断結果が「NO」となり、ステップSI9に進み、レジスタRLの値を1インクリメントしてR−Y閾値low側の閾値レベルを1ステップ上げてクロマキー検出領域を狭くする。なお、レジスタBLの値が「48H」以下であって、レジスタRLの値が「7FH」である時には、上記ステップSI8の判断結果が「YES」となり、上述したステップSI5に処理を進める。
【0103】
一方、上述したステップSI7において、今回検出面積が前回検出面積値より小さい場合、ここでの判断結果が「YES」となり、ステップSI10に処理を進める。ステップSI10では、レジスタBLの値が「48H」以下であって、レジスタRLの値が「00H」であるか否かを判断する。ここで、R−Y閾値low側が最小レベル「00H」に達していない場合には、判断結果が「NO」となり、ステップSI11に進む。ステップSI11では、レジスタRLの値を1デクリメントしてR−Y閾値low側の閾値レベルを1ステップ下げてクロマキー検出領域を広くする。なお、レジスタBLの値が「48H」以下であって、レジスタRLの値が「00H」である時には、上記ステップSI10の判断結果が「YES」となり、上述したステップSI5に処理を進める。
【0104】
このように、閾値調整処理ルーチンでは、自動設定処理ルーチンに応じて設定されたクロマキー検出閾値に基づく面積、重心位置が変化した場合、テンポラリレジスタにセットした今回検出面積とレジスタMDに格納される前回検出面積値とを大小比較し、今回検出面積が前回検出面積値より大きい時には、R−Y閾値low側の閾値レベルを1ステップ上げてクロマキー検出領域を狭くし、一方、今回検出面積が前回検出面積値より小さい時には、R−Y閾値low側の閾値レベルを1ステップ下げてクロマキー検出領域を広げるようにしている。
【0105】
なお、この閾値調整処理ルーチンは、ゲーム動作中に時分割に実行されるため、所定時間内に処理を完了させる必要があり、この結果、R−Y閾値のみを可変制御するようにしている。したがって、CPU51の処理能力が向上すれば、当然、B−Y閾値を調整する態様も可能であり、R−Y閾値およびB−Y閾値の両者を調整すれば、随時最適なクロマキー検出閾値が設定され、常に安定した適正なクロマキー検出が可能になる。
【0106】
▲4▼割込み処理ルーチンの動作
次に、図19〜図24を参照し、CPU51において実行される各種割込み処理ルーチンの動作について説明する。
a.転送割込み処理ルーチンの動作
CPU51は、クロックドライバ12(図3参照)から垂直帰線信号が供給される毎にDMAコントローラ(図示略)へ転送指示を与えると共に、図19に示す転送割込み処理ルーチンを実行する。まず、ステップSJ1では、レジスタACKF1に格納される転送フラグF1が「1」、つまり、前述したステップSG5(図15参照)においてDMA転送セットされたオブジェクトテーブルデータTOB1が未転送状態にあるか否かを判断する。ここで、当該データTOB1が既にDMA転送済みであると、転送フラグF1は「0」になっているから、判断結果は「NO」となり、後述するステップSJ4へ処理を進める。
【0107】
一方、オブジェクトテーブルデータTOB1が未転送状態にあると、判断結果は「YES」となり、CPU51は次のステップSJ2へ処理を進める。ステップSJ2では、レジスタPOSX,POSYに格納されるバットBAT像の上端座標値を読み出し、これをオブジェクトテーブルデータTOB1としてVDP31側へDMA転送する。このオブジェクトテーブルデータTOB1は、前述した通り、初期画面における「カーソル」の表示位置を表わすものであって、クロマキー検出されるバットBAT像の上端座標位置に対応する。したがって、このステップSJ2の動作に基づき、バットBAT像の上端座標位置に応じた「カーソル」が初期画面内に表示される。
【0108】
次いで、ステップSJ3に進むと、オブジェクトテーブルデータTOB1のDMA転送完了を表わすため、レジスタACKF1に格納される転送フラグF1の値を「0」にセットし、次のステップSJ4に進む。ステップSJ4では、レジスタACKF2に格納される転送フラグF2の値が「1」、つまり、前述したステップSG7(図15参照)において転送セットされたオブジェクトテーブルデータTOB2が未転送状態にあるか否かを判断する。ここで、当該データTOB2が既にDMA転送済みであると、転送フラグF2は「0」になっているから、判断結果は「NO」となり、このルーチンを完了し、CPUメインルーチンへ復帰する。
【0109】
一方、オブジェクトテーブルデータTOB2が未転送状態にあると、判断結果は「YES」となり、次のステップSJ5へ処理を進める。ステップSJ5では、DMAコントローラに転送セットされているオブジェクト画像データDOB2をVDP31側へDMA転送し、続く、ステップSJ6では当該データDOB2に対応するオブジェクトテーブルデータTOB2をDMA転送する。次いで、ステップSJ7に進むと、CPU51はレジスタACKF2に格納される転送フラグF2を「0」としてこのルーチンを完了する。
【0110】
このように、転送割込み処理ルーチンにあっては、レジスタACKF1にセットされる転送フラグF1に応じて「カーソル」位置を表わすオブジェクトテーブルデータTOB2をVDP31にDMA転送し、レジスタACKF2にセットされる転送フラグF2に応じてCG画像を形成するオブジェクト画像データDOB2およびオブジェクトテーブルデータTOB2をVDP31にDMA転送する。
【0111】
b.衝突割込み処理ルーチンの動作
CPU51では、ゲーム進行に応じたタイムカウント値に基づいてゲーム画面を形成するオブジェクト画像データDOB2およびオブジェクトテーブルデータTOB2を順次DMA転送するよう制御しており、一方、VDP31側ではこれらデータDOB2,TOB2に対応するオブジェクト画像とクロマキー検出されるバットBAT像とを合成し、時々刻々変化するCG画像を生成する。
この時、位置検出処理部40では、前述した衝突座標検出処理ルーチン(図12参照)の動作に基づき、「バット像」と「ボール像」との衝突の有無を随時検出する。そして、位置検出処理部40が衝突を検出した場合、衝突フラグCFを「1」に設定することにより、CPU51は図19に示す衝突割込み処理ルーチンを実行し、ステップSK1へ処理を進める。
【0112】
まず、ステップSK1では、レジスタtにセットされるタイムカウント値が所定値T1〜T2の範囲に収っているか否かを判断する。タイムカウント値は、ゲーム開始直後からカウントされ、ゲーム進行を管理する値である。また、ここで言う所定値T1〜T2とは、「バット像」と「ボール像」とがミートする際の有効期間を指す。つまり、このステップSK1では、「バット像」と「ボール像」とが衝突したタイミングがミートの有効期間内にあるか否かを判断している。ここで、例えば、遊戯者がバットBATを早目に振ったり、振り遅れたりすると、衝突したタイミングがミートの有効期間を外すことになるから、判断結果は「NO」となり、このルーチンを完了する。
【0113】
これに対し、衝突したタイミングがミートの有効期間内にあると、判断結果は「YES」となり、次のステップSK2へ処理を進める。ステップSK2では、クロマキー検出された「バットBAT像」の重心位置、すなわち、位置検出処理部40のワークRAMにおける重心座標エリアE9から重心座標を取り込む。次いで、ステップSK3に進むと、オブジェクト画像データDOB2から形成される「ボール像」の重心位置と、クロマキー検出された「バットBAT像」の重心位置との対応関係を判定する。ここで、両者の重心位置が一致した場合には、ステップSK4に進み、後述する第1画像処理ルーチンが実行される。
また、「ボール像」の重心が「バットBAT像」の重心より下方に位置する場合には、ステップSK5に進み、後述する第2画像処理ルーチンが実行される。さらに、「ボール像」の重心が「バットBAT像」の重心より上方に位置する場合には、ステップSK6に進み、後述する第3画像処理ルーチンが実行される。
【0114】
c.タイマインタラプト処理ルーチン
次に、ゲーム進行を管理するタイムカウント値を発生するタイマインタラプト処理ルーチンの動作について図21を参照して説明する。CPU51は、システムクロック回路24から供給されるシステムクロックに基づき、所定周期毎に本ルーチンを起動し、ステップSM1を実行し、レジスタtに格納されるタイムカウント値を1インクリメントして歩進させている。
【0115】
d.画像処理ルーチンの動作
次に、上記第1〜第3画像処理ルーチンの動作について図22〜図24を参照して説明する。図22は、上述した第1〜第3画像処理ルーチンの処理内容を共通化したフロチャートである。まず、ステップSL1では、レジスタtに格納されるタイムカウント値に基づいてオブジェクト画像データDOB2(「ボール像」)の表示位置を演算し、続いて、ステップSL2では、当該タイムカウント値に応じたオブジェクト画像データDOB2を指定すると共に、レジスタACKF2に格納される転送フラグF2の値を「1」にセットする。
【0116】
したがって、第1画像処理ルーチンにあっては、「ボール像」の重心と「バットBAT像」の重心とが一致するから、実際のバッティングと同様に、例えば、”ホームラン”となるように「ボール像」をCG画像中で表示する。
また、第2画像処理ルーチンでは、図23に図示するように、「ボール像」の重心が「バットBAT像」の重心より下方に位置するバッティングとなるので、例えば、”ゴロ”となるように「ボール像」をCG画像中で表示する。
さらに、第3画像処理ルーチンでは、図24に図示するように、「ボール像」の重心が「バットBAT像」の重心より上方に位置するバッティングとなるので、例えば、”フライ”となるように「ボール像」をCG画像中で表示する。
【0117】
このようにして、「ボール像」の重心位置と「バットBAT像」の重心位置との対応関係に応じたCG画像を生成すると、CPU51はステップSL3に処理を進める。ステップSL3では、レジスタtに格納されるタイムカウント値がゲーム終了値ENDに達したか否かを判断する。ここで、タイムカウント値が当該ゲーム終了値ENDに達した場合には、判断結果が「YES」となり、ステップSL4に進み、タイムカウント値をゼロリセットしてこのルーチンを完了する。
【0118】
一方、タイムカウント値がゲーム終了値ENDに満たない場合には、上記ステップSL3の判断結果が「NO」となり、ステップSL5に進む。ステップSL5では、ストップイベントが発生したか否かを判断する。ここで、ストップイベントが発生していない場合には、判断結果が「NO」となり、上述したステップSL1〜SL3を繰り返す。これに対して、ストップイベントが発生すると、判断結果が「YES」となって、ステップSL6に進み、レジスタSTFに格納されるスタートフラグを「0」にセットし、ゲーム終了の旨を表わしてこのルーチンを完了する。
【0119】
以上のように、本実施例では、ゲーム動作開始に先立ち、調整用パネルCPのクロマキー像を検出し、当該クロマキー像の面積およびその重心位置を求め、求めた面積および重心位置が予め設定しておいた既定面積および既定重心位置に略一致するか否かを判断し、不一致である場合には検出した面積および重心位置が既定面積および既定重心位置に略一致するよう閾値設定領域内においてレジスタRH,RL,BH,BLの各値を調整するので、最適なクロマキー検出閾値を設定することが可能になる。
【0120】
また、ゲーム動作実行中において、例えば、明るさや光の当り具合等、撮像環境が変化した時には、閾値調整処理ルーチンの動作に応じてテンポラリレジスタにセットされる今回検出面積とレジスタMDに格納される前回検出面積値とを大小比較し、今回検出面積が前回検出面積値より大きい時には、R−Y閾値low側の閾値レベルを1ステップ上げてクロマキー検出領域を狭くし、一方、今回検出面積が前回検出面積値より小さい時には、R−Y閾値low側の閾値レベルを1ステップ下げてクロマキー検出領域を広げて、随時最適なクロマキー検出閾値が設定されるよう調整される。この結果、常に安定した適正なクロマキー検出が可能になる。
【0121】
なお、上述した実施例にあっては、「バッテイング」動作をシミュレートする画像制御装置に適用した場合について開示したが、本発明による要旨は当該装置に限定されるものではなく、例えば、「テニス」や「ゴルフ」等、遊戯者の運動行動を取り入れた各種ゲーム、あるいはロールプレイングゲームに適用することが可能であるばかりか、クロマキー検出を用いて画像制御するものであれば上述した本願特有の効果を達成し得る。
【0122】
【発明の効果】
本発明によれば、撮像信号から検出したクロマキー像の面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定すると、設定された色差閾値に従って検出されるクロマキー像の面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断する。そして、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭めるように調整し、調整された色差閾値に従って検出されるクロマキー像の重心位置に応じて表示画面の表示を制御するので、常に最適なクロマキー検出閾値を保ちながら適正なクロマキー検出を行い、位置検出誤差を発生することなく表示制御することができる。
【図面の簡単な説明】
【図1】本発明の一実施例による画像制御装置の全体構成を示す外観図である。
【図2】同実施例の概要を説明するための図である。
【図3】同実施例の電気的構成を示すブロック図である。
【図4】同実施例における撮像信号処理部11の構成を示すブロック図である。
【図5】同実施例におけるビデオ信号処理部20の構成を示すブロック図である。
【図6】同実施例におけるR−Y閾値およびB−Y閾値と色相との関係を説明するための図である。
【図7】同実施例におけるVDP31の構成を示すブロック図である。
【図8】同実施例における位置検出処理部40のワークRAMの内容を説明するためのメモリマップである。
【図9】位置検出処理部40におけるメインルーチンの動作を示すフローチャートである。
【図10】位置検出処理部40における初期画面マップ作成ルーチンの動作を示すフローチャートである。
【図11】位置検出処理部40における処理画面マップ作成ルーチンの動作を示すフローチャートである。
【図12】位置検出処理部40における衝突座標検出処理ルーチンの動作を示すフローチャートである。
【図13】位置検出処理部40における座標検出処理ルーチンの動作を示すフローチャートである。
【図14】位置検出処理部40における重心計算処理ルーチンの動作を示すフローチャートである。
【図15】同実施例におけるCPUメインルーチンの動作を示すフローチャートである。
【図16】同実施例におけるCPUメインルーチンの動作を示すフローチャートである。
【図17】CPU51における自動設定処理ルーチンの動作を示すフローチャートである。
【図18】CPU51における閾値調整処理ルーチンの動作を示すフローチャートである。
【図19】CPU51における転送割込み処理ルーチンの動作を示すフローチャートである。
【図20】CPU51における衝突割込み処理ルーチンの動作を示すフローチャートである。
【図21】CPU51におけるタイマインタラプトルーチンの動作を示すフローチャートである。
【図22】CPU51における第n画像処理ルーチンの動作を示すフローチャートである。
【図23】CPU51における第n画像処理ルーチンの動作を説明するための図である。
【図24】CPU51における第n画像処理ルーチンの動作を説明するための図である。
【符号の説明】
1 撮像部
2 装置本体
3 ディスプレイ(表示画面)
20 ビデオ信号処理部(クロマキー抽出手段)
30 画像処理部(表示制御手段)
40 位置検出処理部(閾値設定手段、閾値調整手段)
50 制御部
51 CPU(閾値設定手段、閾値調整手段、表示制御手段)
Claims (2)
- 色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出手段と、
前記検出手段により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定手段と、
前記閾値設定手段により設定された色差閾値に従って前記検出手段が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整手段と、
前記閾値調整手段によって調整される色差閾値に従って前記検出手段が検出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御手段と
を具備することを特徴とする画像制御装置。 - 色相を指定する色差閾値に応じて撮像信号からクロマキー像を抽出し、抽出したクロマキー像の面積および重心位置を検出する検出処理と、
前記検出処理により検出される面積および重心位置がそれぞれ既定面積および既定重心位置に略一致するよう色差閾値を設定する閾値設定処理と、
前記閾値設定処理により設定された色差閾値に従って前記検出処理が検出した面積および重心位置が、それぞれ既定面積および既定重心位置に略一致するか否かを判断し、略一致しない場合には検出した面積と既定面積とを大小比較し、検出した面積が既定面積より小さければ色差閾値を減少させて色相範囲を広げ、一方、検出した面積が既定面積より大きいければ色差閾値を増加させて色相範囲を狭める閾値調整処理と、
前記閾値調整処理によって調整される色差閾値に従って前記検出手段が抽出するクロマキー像の重心位置に応じて表示画面の表示を制御する表示制御処理と
を具備することを特徴とする画像制御方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19208094A JP3622234B2 (ja) | 1994-07-22 | 1994-07-22 | 画像制御装置、および、画像制御方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP19208094A JP3622234B2 (ja) | 1994-07-22 | 1994-07-22 | 画像制御装置、および、画像制御方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH0836646A JPH0836646A (ja) | 1996-02-06 |
JP3622234B2 true JP3622234B2 (ja) | 2005-02-23 |
Family
ID=16285312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP19208094A Expired - Fee Related JP3622234B2 (ja) | 1994-07-22 | 1994-07-22 | 画像制御装置、および、画像制御方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP3622234B2 (ja) |
-
1994
- 1994-07-22 JP JP19208094A patent/JP3622234B2/ja not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
JPH0836646A (ja) | 1996-02-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3766981B2 (ja) | 画像制御装置および画像制御方法 | |
US6149520A (en) | Video game method and apparatus for effecting character movement and ball control determination | |
US5634850A (en) | Image processing device and method | |
JP3145064B2 (ja) | ビデオゲーム機及びビデオゲームプログラムを記録した媒体 | |
JP5025950B2 (ja) | 情報処理プログラム、情報処理装置、情報処理システムおよび情報処理方法 | |
JP2001029654A (ja) | 画像処理装置 | |
JP3463379B2 (ja) | 画像制御装置及び画像制御方法 | |
JP3622234B2 (ja) | 画像制御装置、および、画像制御方法 | |
JPH0850661A (ja) | 画像制御装置 | |
JPH07271982A (ja) | 画像制御装置 | |
JP3451343B2 (ja) | 信号生成装置及び信号生成方法 | |
JP3371535B2 (ja) | 画像制御装置および画像制御方法 | |
JP3407394B2 (ja) | 画像表示制御装置および画像表示制御方法 | |
JPH07302324A (ja) | 画像制御装置 | |
JPH07282265A (ja) | 画像制御装置 | |
JPH0887592A (ja) | 画像制御装置 | |
JPH07282236A (ja) | 画像制御装置 | |
US6354942B1 (en) | Method for executing game and game device for implementing same | |
JP3367934B2 (ja) | ゲームシステム、ゲームシステムにおける画像描画方法およびゲーム用プログラムが記憶されたコンピュータ読み取り可能な記録媒体 | |
JPH0879621A (ja) | 画像制御装置 | |
JPH0855212A (ja) | 画像制御装置 | |
JP2004334303A (ja) | 塗り絵画像生成装置、プログラム及び方法 | |
JP4277066B2 (ja) | 画像処理装置および画像処理方法 | |
US6296567B1 (en) | Video game machine and computer-readable recording medium containing video game program | |
JP3371521B2 (ja) | 信号生成装置及び信号生成方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040716 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20040803 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040928 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20041102 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20041115 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081203 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091203 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101203 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101203 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111203 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20111203 Year of fee payment: 7 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20121203 Year of fee payment: 8 |
|
LAPS | Cancellation because of no payment of annual fees |