(57)【特許請求の範囲】
【請求項１】
撮像された実画像の輝度情報をフレーム毎に抽出する輝度情報抽出手段と、
この輝度情報抽出手段により抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出する平均輝度発生手段と、
この平均輝度発生手段により得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生手段と、
前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生手段によって発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与手段と
を具備することを特徴とする画像処理装置。
【請求項２】
前記平均輝度発生手段は、所定画素領域で形成されるブロックに含まれる各画素毎の輝度情報を累算した値を、当該ブロック内の総画素数で除算して当該ブロックの平均輝度を発生することを特徴とする請求項１記載の画像処理装置。
【請求項３】
前記シェーディング条件発生手段は、最も高輝度のブロック位置と最も低輝度のブロック位置との間に位置するブロックを前記シェーディング領域と判定することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項４】
前記シェーディング条件発生手段は、最も高輝度のブロック位置に対して前記シェーディング領域に含まれる各ブロックが８方位のいずれに位置するかを判断してシェーディング方向を定めることを特徴とする請求項１又は２に記載の画像処理装置。
【請求項５】
前記シェーディング条件発生手段は、最も高輝度のブロック位置と最も低輝度のブロック位置との座標差を（Ｘ３，Ｙ３）、最も高輝度のブロック位置から前記シェーディング領域の各ブロック位置までの座標差を（Ｘｓ１，Ｙｓ１）とした場合、これら各ブロックのシェーディング率を（Ｘｓ１／Ｘ３）・（Ｙｓ１／Ｙ３）で算出することを特徴とする請求項１又は２に記載の画像処理装置。
【請求項６】
前記シェーディング付与手段は、オブジェクト画像の表示長と、当該オブジェクト画像の表示位置に対応するブロックのシェーディング率とを乗算して当該オブジェクト画像におけるシェーディング領域を判定し、判定したシェーディング領域に含まれる各画素の階調を、対応するシェーディング方向に従って順次低減させてシェーディングを付与することを特徴とする請求項１乃至５の何れかに記載の画像処理装置。
【請求項７】
外部から供給される映像信号にフィルタリングを施して得た輝度信号を、フィールド走査に同期して輝度情報に変換する変換手段と、
この変換手段により変換された複数走査ライン分の輝度情報を帰線消去期間中に所定画素幅で分割してなる各ブロック毎の平均輝度を算出し、算出した平均輝度を複数フィールド走査分蓄積して１画面分のブロックの平均輝度を発生する平均輝度発生手段と、
この平均輝度発生手段により得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とに応じてシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生手段と、
前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生手段によって発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与手段と
を具備することを特徴とする画像処理装置。
【請求項８】
撮像された実画像の輝度情報をフレーム毎に抽出する輝度情報抽出ステップと、
この輝度情報抽出ステップにて抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出する平均輝度発生ステップと、
この平均輝度発生ステップにて得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生ステップと、
前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生ステップにて発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与ステップと
からなることを特徴とする画像処理方法。
【請求項９】
外部から供給される映像信号にフィルタリングを施して得た輝度信号を、フィールド走査に同期して輝度情報に変換する変換ステップと、
この変換ステップにて変換された複数走査ライン分の輝度情報を帰線消去期間中に所定画素幅で分割してなる各ブロック毎の平均輝度を算出し、算出した平均輝度を複数フィールド走査分蓄積して１画面分のブロックの平均輝度を発生する平均輝度発生ステップと、
この平均輝度発生ステップにて得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とに応じてシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生ステップと、
前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生ステップにて発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与ステップと
からなることを特徴とする画像処理方法。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、実画像に対応した写実的なシェーディング処理をオブジェクト画像に施すことができる画像処理装置、及び、画像処理方法に関する。
【０００２】
【従来の技術】
近年、ＣＧ（コンピュータ・グラフィックス）技術の発達に伴い、３次元モデルによるオブジェクト画像にレンダリングやシェーディング等のＣＧ処理を施し、オブジェクト画像をより自然で写実的に表示する技術が各種実用化されている。なお、シェーディングとは、レンダリングにより隠面除去されたオブジェクトの面の見え方、すなわち、オブジェクトを照す光源方向に基づきオブジェクトの面性質（色、反射率、透過率など）に従ってオブジェクト可視面に陰影を付ける処理を指すものを言う。
【０００３】
【発明が解決しようとする課題】
ところで、近年では、実際に撮像した実画像上にオブジェクト画像をスーパーインポーズ表示して仮想現実感を創出する技術も開発されている。さて、こうした表示態様にあっては、上述したＣＧ処理が施されるオブジェクト画像と実画像との間には相関関係が存在しない。このため、実画像中における光源方向に対応してオブジェクト画像にシェーディング処理を施さないと、いかにオブジェクト画像を３次元表示させたとしても、両者をスーパーインポーズした画像は不自然さが目立つという弊害が生じる。
【０００４】
このような弊害を回避するためには、実画像を撮像した時の光源方向や明るさに対応してシェーディングが付与された複数のオブジェクト画像を予め用意しておき、これらの内から実画像の撮像条件に一致するものを選択してスーパーインポーズ表示すれば、上述した不自然さが解消し得る。
しかしながら、そうした場合には、膨大なデータ量で形成される３次元モデルのオブジェクト画像を、フレーム毎に用意しなければならず、時々刻々変化する実画像に対応させることは現実的でない。そのため、時々刻々変化する実画像に対応して２次元のオブジェクト画像を、あたかも３次元像のように簡易的に写実表現させる技術が待望されている状況にある。
【０００５】
本発明は、上述した事情に鑑みてなされたもので、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現し得る画像処理装置、及び、画像処理方法を提供することを目的としている。
【０００６】
【課題を解決するための手段】
上記目的を達成するため、請求項１に記載の発明では、撮像された実画像の輝度情報をフレーム毎に抽出する輝度情報抽出手段と、この輝度情報抽出手段により抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出する平均輝度発生手段と、この平均輝度発生手段により得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生手段と、前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生手段によって発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与手段とを具備することを特徴としている。
【０００７】
請求項１に従属する請求項２に記載の発明によれば、記載前記平均輝度発生手段は、所定画素領域で形成されるブロックに含まれる各画素毎の輝度情報を累算した値を、当該ブロック内の総画素数で除算して当該ブロックの平均輝度を発生することを特徴とする。
【０００８】
請求項１又は２に従属する請求項３に記載の発明によれば、前記シェーディング条件発生手段は、最も高輝度のブロック位置と最も低輝度のブロック位置との間に位置するブロックを前記シェーディング領域と判定する。
【０００９】
請求項１又は２に従属する請求項４に記載の発明によれば、前記シェーディング条件発生手段は、最も高輝度のブロック位置に対して前記シェーディング領域に含まれる各ブロックが８方位のいずれに位置するかを判断してシェーディング方向を定めることを特徴とする。
【００１０】
請求項１又は２に従属する請求項５に記載の発明によれば、前記シェーディング条件発生手段は、最も高輝度のブロック位置と最も低輝度のブロック位置との座標差を（Ｘ３，Ｙ３）、最も高輝度のブロック位置から前記シェーディング領域の各ブロック位置までの座標差を（Ｘｓ１，Ｙｓ１）とした場合、これら各ブロックのシェーディング率を（Ｘｓ１／Ｘ３）・（Ｙｓ１／Ｙ３）で算出することを特徴とする。
【００１１】
請求項１乃至５の何れかに従属する請求項６に記載の発明によれば、前記シェーディング付与手段は、オブジェクト画像の表示長と、当該オブジェクト画像の表示位置に対応するブロックのシェーディング率とを乗算して当該オブジェクト画像におけるシェーディング領域を判定し、判定したシェーディング領域に含まれる各画素の階調を、対応するシェーディング方向に従って順次低減させてシェーディングを付与することを特徴とする。
【００１２】
さらに、本発明の別態様による請求項７に記載の発明では、外部から供給される映像信号にフィルタリングを施して得た輝度信号を、フィールド走査に同期して輝度情報に変換する変換手段と、この変換手段により変換された複数走査ライン分の輝度情報を帰線消去期間中に所定画素幅で分割してなる各ブロック毎の平均輝度を算出し、算出した平均輝度を複数フィールド走査分蓄積して１画面分のブロックの平均輝度を発生する平均輝度発生手段と、この平均輝度発生手段により得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とに応じてシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生手段と、前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生手段によって発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与手段とを具備することを特徴としている。
また上記目的を達成するため、請求項８に記載の発明では、撮像された実画像の輝度情報をフレーム毎に抽出する輝度情報抽出ステップと、この輝度情報抽出ステップにて抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出する平均輝度発生ステップと、この平均輝度発生ステップにて得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生ステップと、前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生ステップにて発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与ステップとからなることを特徴としている。
さらに、本発明の別態様による請求項９に記載の発明では、外部から供給される映像信号にフィルタリングを施して得た輝度信号を、フィールド走査に同期して輝度情報に変換する変換ステップと、この変換ステップにて変換された複数走査ライン分の輝度情報を帰線消去期間中に所定画素幅で分割してなる各ブロック毎の平均輝度を算出し、算出した平均輝度を複数フィールド走査分蓄積して１画面分のブロックの平均輝度を発生する平均輝度発生ステップと、この平均輝度発生ステップにて得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とに応じてシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生するシェーディング条件発生ステップと、前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生ステップにて発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するシェーディング付与ステップとからなることを特徴としている。
【００１３】
【作用】
本発明では、輝度情報抽出手段が撮像された実画像の輝度情報をフレーム毎に抽出すると、平均輝度発生手段が抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出し、シェーディング条件発生手段がこの平均輝度発生手段により得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生する。そして、シェーディング付与手段が実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生手段によって発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与する。
したがって、２次元のオブジェクト画像に対して、実画像を撮像した時の光源方向に応じてシェーディングを施すので、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現することが可能になる。
また本発明では、撮像された実画像の輝度情報を輝度情報抽出ステップにてフレーム毎に抽出すると、平均輝度発生ステップにおいてこの輝度情報抽出ステップにて抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出する。そして、シェーディング条件発生ステップがこの各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生すると、前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合には、シェーディング付与ステップが前記シェーディング条件発生ステップにて発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与する。
したがって、２次元のオブジェクト画像に対して、実画像を撮像した時の光源方向に応じてシェーディングを施すので、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現することが可能になる。
【００１４】
【実施例】
以下では、先ず本発明の概要について説明し、続いて図面を参照して本発明による実施例について説明するものとする。
Ａ．発明の概要
実際に撮像した実画像とオブジェクト画像とをスーパーインポーズ表示して仮想現実感を創出する場合には、前述したように、時々刻々変化する実画像に対応してオブジェクト画像にシェーディング（陰影）を付与して立体表現しないと不自然さが目立ってしまう。
ところで、立体表現されるオブジェクト画像、つまり、３次元モデルによるオブジェクト画像では、ＣＧ処理を施すことで極めて実景に近いものとなるが、処理すべきデータ量が膨大で実画像上の光源方向に対応してリアルタイムにＣＧ処理を施すことはハードウェア上の制約もあり現実的でない。
【００１５】
そこで、本発明では、データ量が膨大となる３次元モデルによるオブジェクト画像に替えて２次元のオブジェクト画像を用い、これを簡易的に立体表現するようにシェーディング（陰影）を施す。シェーディングは、次の手順でなされる。最初に、撮像された実画像の１フレーム毎に所定ドット（画素）で形成されるブロック毎（後述する）の輝度情報を抽出し、抽出した各ブロックの輝度情報に基づきフレーム中の光源方向を検出する。次に、検出した光源方向とフレーム内のオブジェクト画像位置とに応じて当該オブジェクト画像に付与するシェーディング範囲を定め、かつ、予め決められた形状（すなわち、オブジェクトの形）に対応したシェーディング率でオブジェクト画像データの濃淡（陰影）を調整する。これにより、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現し得る訳である。
なお、上記シェーディング率とは、光源方向、形状および面性質とで予め定まる陰影率を指し、その値は経験則的に得られる。具体的に言えば、例えば、オブジェクト形状が「球」であって、その表面が光沢性のものの場合、表面にはハイライト部分とシャドウ部分とが広がり、その際の濃淡比率に相当する。本実施例においては、オブジェクト形状を「球」とした場合について言及している。
【００１６】
Ｂ．第１実施例の構成
次に、図面を参照して本発明による実施例について説明する。まず、図１は本発明の第１実施例による画像処理装置の全体構成を示すブロック図である。この図において、１はＣＣＤカメラであり、後述する画像処理ＤＳＰ５から供給される水平／垂直同期信号、水平／垂直駆動信号に応じて撮像信号ＳＳを発生する。２はＣＣＤカメラ１から供給される撮像信号ＳＳを、コンポジットビデオ信号ＣＶ、色差信号Ｂ−Ｙ，Ｒ−Ｙあるいは輝度信号Ｙに変換して出力する映像出力エンコーダである。このＣＣＤカメラ１と映像出力エンコーダ２とは、撮像部３を形成しており、以下、図２を参照して撮像部３の構成について説明する。
【００１７】
図２において、１ａは撮像対象を後述のＣＣＤ１ｇ上に結像させる光学系である。１ｂは赤外光をカットするカットフィルタ、１ｃはカラーフィルタ、１ｄは発振回路である。１ｅはクロック発生回路であり、例えば、８倍オーバーサンプリング信号８ｆＳＣを発生して出力する。クロック発生回路１ｅは、この８倍オーバーサンプリング信号８ｆＳＣを次段のクロックドライバ１ｆに供給すると共に、ＣＣＤ１３から出力される撮像信号ＳＳをサンプリング画像データＤＳに変換する画像出力エンコーダ２に供給する。
【００１８】
クロックドライバ１ｆは、クロック発生回路１ｅから供給される８倍オーバーサンプリング信号８ｆＳＣに基づき、水平駆動信号、垂直駆動信号、水平／垂直同期信号および帰線消去信号等の各種タイミングに応じた撮像駆動信号を発生してＣＣＤ１ｇに供給する。ＣＣＤ１ｇは、この撮像駆動信号に従って対象物を撮像してなる撮像信号ＳＳをフレーム周期毎に発生する。１ｈはＣＣＤ１ｇから出力される撮像信号ＳＳを増幅して次段の画像出力エンコーダ２側へ供給するアンプである。
【００１９】
画像出力エンコーダ２は、構成要素２ａ〜２ｊから構成される。２ａは、撮像信号ＳＳの不要高周波成分をカットするローパスフィルタ、２ｂ−１〜２ｂ−３は、上述したクロックドライバ１２から供給される４倍オーバーサンプリング信号４ｆＳＣに応じて撮像信号ＳＳをサンプルホールドして次段へ出力するサンプリング回路である。サンプリング回路２ｂ−１〜２ｂ−３は、それぞれ色分離フィルタを備え、サンプリングホールドした撮像信号ＳＳを各々信号Ｙｅ（イエロー）、信号Ｃｙ（シアン）および信号Ｇ（グリーン）に色分離して次段へ出力する。
【００２０】
２ｃ−１，２ｃ−２は、分別フィルタとして作用する減算器であり、減算器２ｃ−１は信号Ｙｅ−信号Ｇより信号Ｒ（赤）を、減算器２ｃ−２は信号信号Ｃｙ−信号Ｇより信号Ｂ（青）を発生する。２ｄはローパスフィルタリングが施された撮像信号ＳＳから輝度信号Ｙを抽出するＹプロセス回路である。２ｅ−１〜２ｅ−３は、それぞれバンドパスフィルタ等から構成され、信号Ｒ，Ｇ，Ｂをそれぞれ抽出するプロセス回路である。
【００２１】
２ｆは三原色を表わす信号Ｒ，Ｇ，Ｂを色差信号Ｂ−Ｙ，Ｒ−Ｙに変換するマトリクス回路である。２ｇ，２ｈはそれぞれマトリクス回路２ｆから出力される色差信号Ｂ−Ｙ，Ｒ−Ｙから不要高周波成分をカットするローパスフィルタである。２ｉは後述する画像処理ＤＳＰ（ディジタル・シグナル・プロセッサ）から供給されるＲＧＢ入力信号を輝度信号Ｙ、色差信号Ｂ−Ｙ，Ｒ−Ｙに変換するマトリクス回路である。２ｊは輝度信号Ｙ、色差信号Ｂ−Ｙ，Ｒ−Ｙに応じてコンポジット映像信号ＣＶを発生するエンコーダである。
【００２２】
次に、再び図１に戻り、実施例の全体構成について説明を進める。図１において、４は映像出力アンプであり、上述した画像出力エンコーダ２から供給されるコンポジットビデオ信号ＣＶを増幅して出力する。画像処理ＤＳＰ５は、後述するＣＰＵ８の制御の下に、撮像信号ＳＳに対応する実画像と画像制御ＶＤＰ６（後述する）から供給されるオブジェクト画像とをスーパーインポーズした合成画像を発生し、当該合成画像に対応したＲＧＢ入力信号を画像出力エンコーダ２に供給する。また、画像処理ＤＳＰ５は、フレームバッファを備えており、当該フレームバッファに１フレーム分の輝度データＤＹを逐次ストアするようになっている。
【００２３】
画像制御ＶＤＰ（ビデオ・ディスプレイ・プロセッサ）６は、ＣＰＵ８の制御の下に、画像表示用ＶＲＡＭ７に格納されるオブジェクト画像の表示位置や表示色を制御する。画像制御ＶＤＰ６から出力されるオブジェクト画像データＤＯＢは、バスＢを介して画像処理ＤＳＰ５に供給される。画像表示用ＶＲＡＭ７には、上記オブジェクト画像データＤＯＢを格納する記憶エリアＥ１と、上述した実画像データを格納する記憶エリアＥ２とを有する。なお、記憶エリアＥ２には、画像処理ＤＳＰ５内部のフレームバッファに一時記憶される輝度データＤＹがＤＭＡ転送される。
【００２４】
ＣＰＵ８は、プログラムＲＯＭ９に記憶された各種制御プログラムを実行して装置各部を制御するものであり、その動作については追って説明する。１０はワークＲＡＭであり、ＣＰＵ８においてなされる各種演算結果やフラグを一時記憶するレジスタ群から構成されている。１１は画像データＲＯＭであり、実画像にスーパーインポーズされる各種のオブジェクト画像データＤＯＢ（あるいはバックグランド画像データＤＢＧ）が記憶されている。この画像データＲＯＭ１１に格納されるオブジェクト画像データＤＯＢは、ＣＰＵ８の指示に基づきＤＭＡコントローラ（図示略）によって画像表示用ＶＲＡＭ７にＤＭＡ転送される。
【００２５】
上記構成において、画像制御ＶＤＰ６がＣＰＵ８の制御の下に、所定のオブジェクト画像データＤＯＢを画像表示ＶＲＡＭ７から読み出して、その表示位置や表示色を制御して画像処理ＤＳＰ５側に与えると、この画像処理ＤＳＰ５が当該オブジェクト画像データＤＯＢと撮像された実画像とをスーパーインポーズする。実画像にスーパーインポーズされるオブジェクト画像データＤＯＢは、ＣＰＵ８の処理によりシェーディング処理が施される。
すなわち、ＣＰＵ８は画像表示ＶＲＡＭ７の記憶エリアＥ２にＤＭＡ転送される１フレーム分の輝度データＤＹを、図３に示すようにＸ方向に９分割、Ｙ方向に８分割して各分割エリア毎の平均輝度を求め、求めた平均輝度から実画像中の光源方向を検出する。光源方向は、図４に図示する通り、オブジェクト画像に対する高輝度方向、つまり、求めた平均輝度の内、最も輝度が高い分割エリアが位置する方向になる。なお、求めた平均輝度が均一である時には「０（無方向）」となる。
【００２６】
こうして実画像中における光源方向を抽出した後、ＣＰＵ８はオブジェクト画像データＤＯＢの表示位置や表示色に応じたシェーディング率に従ってオブジェクト画像に陰影を付与するシェーディング処理を施す。これにより、時々刻々変化する実画像に対応して写実的なシェーディングをオブジェクト画像に施すことが可能になり、以下では、こうした本発明の特徴となる動作について順次説明する。
【００２７】
Ｃ．第１実施例の動作
ここでは、実画像に対応して写実的なシェーディングをオブジェクト画像に施すＣＰＵ８の動作について図５〜図１７を参照して説明する。
なお、以下の動作説明にあっては、「初期化／ＶＤＰ制御」、「輝度データ算出処理」、「光源位置算出処理」、「シェーディング係数処理」、「シェーディング（オブジェクト検出）処理」および「シェーディング（オブジェクトエディット）処理」の各機能に場合分けし、これら各機能について順次説明を進めるものとする。
【００２８】
（１）初期化／ＶＤＰ制御
まず、本実施例に電源が投入されると、ＣＰＵ８はＲＯＭ９に記憶された制御プログラムを読み出してロードした後、図５に示すメインルーチンを起動してステップＳＡ１に処理を進める。ステップＳＡ１では、画像処理ＤＳＰ５や画像制御ＶＤＰ６等の周辺デバイスに対してイニシャライズを指示する制御信号を供給する。続く、ステップＳＡ２では、ワークＲＡＭ１０に確保される各種レジスタ群をリセットしたり、初期値をストアしてイニシャライズする。
また、この時点でＣＰＵ８は画像データＲＯＭ１１にストアされる画像データ、すなわち、オブジェクト画像データＤＯＢ（あるいはバックグラウンド画像データＤＢＧ）および画像データＤＯＢの表示位置や表示色を指定するオブジェクトテーブルデータを画像表示用ＶＲＡＭ７側に一旦格納させるべくＤＭＡコントローラにＤＭＡ転送を指示する。この場合、転送元アドレス、転送バイト数および転送先アドレスからなる転送指示情報をＤＭＡコンローラにセットする。
【００２９】
こうして周辺デバイスおよびワークエリアが初期化されると、ＣＰＵ８はステップＳＡ３に進み、画像表示用ＶＲＡＭ１１に格納されたオブジェクト画像データＤＯＢ（あるいはバックグラウンド画像データＤＢＧ）を読み出して画像制御ＶＤＰ６側に転送し、続く、ステップＳＡ４では同様に読み出したオブジェクトテーブルデータを画像制御ＶＤＰ６側に転送する。そして、ステップＳＡ５に進むと、画像制御ＶＤＰ６に対して表示制御を開始させる旨の制御信号を与える。これにより、画像制御ＶＤＰ６は、オブジェクトテーブルデータで指定される表示位置／表示色のオブジェクト画像データＤＯＢを表示させるべく画像制御する。次いで、この後、ＣＰＵ８はステップＳＡ６に進み、輝度データ算出処理へ移行する。
【００３０】
（２）輝度データ算出処理
ステップＳＡ６に進むと、ＣＰＵ８は図６に示す輝度データ算出処理に移行してステップＳＢ１を実行する。ステップＳＢ１では、前述したＣＣＤカメラ１から供給される撮像信号ＳＳに対応した１フレーム分の輝度データＤＹをサンプリングしてＶＲＡＭ７の記憶エリアＥ２にストアする。次いで、ステップＳＢ２に進むと、レジスタＺ１，Ｚ２およびレジスタａをゼロリセットする。ここで、レジスタＺ１，Ｚ２は、ＶＲＡＭ７の記憶エリアＥ２（図３参照）に格納される１フレーム分の輝度データＤＹをＸ方向に９分割、Ｙ方向に８分割する際のＸポインタ値およびＹポインタ値を一時記憶するものである。また、レジスタａは、１フレーム分の輝度データＤＹをＸ方向に９分割、Ｙ方向に８分割してなる都合７２分割ブロック領域を配列要素で表わす際のポインタ値を一時記憶する。
【００３１】
次いで、ステップＳＢ３に進むと、ＣＰＵ８は上記レジスタＺ１，Ｚ２にストアされるＸポインタ値およびＹポインタ値にそれぞれ「３２」，「２４」を乗算した値をレジスタＸ，Ｙにセットする一方、レジスタＹｃｃをゼロリセットする。
ここで、Ｘポインタ値およびＹポインタ値にそれぞれ乗算される値は、１分割領域のドット数を表わしている。すなわち、１フレーム分の輝度データＤＹをＸ方向に９分割、Ｙ方向に８分割する場合、１分割ブロック領域（以下、これを単にブロックと記す）は３２ドット×２４ドットの画素領域で形成される。また、レジスタＹｃｃは、１ブロック中における各ドット毎の輝度データＤＹを累算した値がストアされるレジスタである。
【００３２】
次に、ステップＳＢ４では、Ｘポインタ値で指定されるブロック内にレジスタＸの値が存在するか否かを判断する。すなわち、１ブロック内においてＸ方向ドット成分（ドットライン）の輝度データＤＹを読み込む条件を満たしているか否かを判断する。ここで、読み込み条件を満たしている時には、判断結果が「ＹＥＳ」となり、次のステップＳＢ５に進み、レジスタＸ，Ｙに対応するドットの輝度データＤＹを読み込み、続く、ステップＳＢ６では読み込んだ輝度データＤＹをレジスタＹｃｃに加算する。次いで、ステップＳＢ７に進むと、次のドット位置での輝度データＤＹを読み込むべく、レジスタＸの値を１インクリメントして歩進させ、上述したステップＳＢ４に処理を戻す。
【００３３】
そして、Ｘポインタ値で指定されるブロック内において、Ｘ方向ドット成分の輝度データＤＹを全て読み込むと、ステップＳＢ４での判断結果が「ＮＯ」となり、ステップＳＢ８に処理を進める。ステップＳＢ８では、Ｙポインタ値で指定されるブロック内にレジスタＹの値が存在するか否かを判断する。すなわち、１ブロック内においてＹ方向ドット成分の輝度データＤＹを読み込む条件を満たしているか否かを判断する。ここで、読み込み条件を満たしている時には、判断結果が「ＹＥＳ」となり、次のステップＳＢ９に進み、レジスタＹの値を１インクリメントすると共に、レジスタＸの値をゼロリセットして上述したステップＳＢ５に進む。これにより、読み込むべきドットラインが更新される。
【００３４】
次いで、上述したステップＳＢ４、ＳＢ８の判断結果がいずれも「ＮＯ」となる場合、つまり、レジスタＺ１，Ｚ２の値で指定されるブロック内の全ての輝度データＤＹが読み込まれると、ＣＰＵ８はステップＳＢ１０に処理を進め、レジスタＹｃｃにストアされている輝度データＤＹ累算値を、ブロック内総ドット数（３２×２４）で除算して当該ブロックの平均輝度を求め、これをレジスタＹ（ａ）にストアする。そして、次のステップＳＢ１１に進むと、レジスタＺ１にセットされているＸポインタ値が「９」以上、すなわち、１ライン分のブロックについて輝度データＤＹの読み込みが完了したか否かを判断する。
【００３５】
ここで、１ライン分の読み込みが完了していない場合には、判断結果が「ＮＯ」となり、ステップＳＢ１２に進む。ステップＳＢ１２では、レジスタＺ１に書込まれるＸポインタ値を１インクリメントして歩進させる一方、レジスタａの値も歩進させ、この後に上述したステップＳＢ３に処理を戻し、対応するブロックにおける各ドットの輝度データＤＹを逐次読み込む。
一方、１ライン分の読み込みが完了した時には、ステップＳＢ１１の判断結果が「ＹＥＳ」となり、ステップＳＢ１３に進む。ステップＳＢ１３では、レジスタＺ２にストアされるＹポインタ値を１インクリメントして歩進させると共に、レジスタＺ１のＸポインタ値をゼロリセットし、さらにレジスタａの値も歩進させる。
【００３６】
そして、ステップＳＢ１４に進むと、ＣＰＵ８はレジスタＺ２にストアされるＹポインタ値が「８」、すなわち、１フレーム分の輝度データＤＹの読み込みが完了したかどうかを判断する。ここで、Ｙポインタ値が「８」でないならば、判断結果が「ＮＯ」となって、ステップＳＢ３に処理を戻し、引続き読み込みを行う。
一方、Ｙポインタ値が「８」となって、１フレーム分の輝度データＤＹの読み込みが完了した時には、判断結果が「ＹＥＳ」となり、後述の光源位置算出処理へ移行する。
【００３７】
（３）光源位置算出処理
こうして１フレーム分の輝度データＤＹを、「３２×２４」ドットのブロックに分け、これら各ブロック毎の輝度データＤＹを読み込んで平均輝度を算出すると、ＣＰＵ８は図７に示す光源位置算出処理に移行してステップＳＣ１を実行する。ステップＳＣ１では、レジスタａ１，ａ２をクリアすると共に、レジスタｂに「１」をセットする。なお、これらレジスタの意図するところについては追って説明する。次に、ステップＳＣ２に進むと、レジスタｂの値が「７２」以下であるか、つまり、全ブロックについて輝度判定（後述する）したか否かを判断する。
【００３８】
この場合、レジスタｂの値は「０」だから、判断結果は「ＹＥＳ」となり、次のステップＳＣ３に進む。ステップＳＣ３では、レジスタＹｃ（ａ１）の値がレジスタＹｃ（ｂ）以下であるか判断する。すなわち、ブロック同士の平均輝度を比較しており、例えば、ブロック（ａ１）＜ブロック（ｂ）の場合には判断結果が「ＮＯ」となり、ステップＳＣ４に進む。ステップＳＣ４では、レジスタｂの値を歩進させ、その値が「７２」以下である時には再びステップＳＣ３において平均輝度を比較する。
そして、ステップＳＣ３において、例えば、ブロック（ａ１）≦ブロック（ｂ）になると、判断結果が「ＹＥＳ」となり、次のステップＳＣ５に進み、レジスタｂの値をレジスタａ１にストアする。続いて、ステップＳＣ６に進むと、レジスタＹｃ（ａ２）の値がレジスタＹｃ（ｂ）以上であるか否かを判断する。
【００３９】
ここで、レジスタＹｃ（ａ２）の値がレジスタＹｃ（ｂ）以上でない場合には判断結果が「ＮＯ」となり、上述したステップＳＣ４に進む。一方、上記判定条件を満たす場合には判断結果が「ＹＥＳ」となって、ステップＳＣ７に進み、レジスタｂの値をレジスタａ２にストアした後、ステップＳＣ４に処理を進める。結局、これらステップＳＣ２〜ＳＣ７を介することで、１フレーム分のブロック中、最も高い平均輝度のブロック（ａ１）と最も低い平均輝度のブロック（ａ２）とが抽出される。そして、こうした輝度比較が７２ブロック分完了した時点でステップＳＣ２の判断結果が「ＮＯ」となり、ステップＳＣ８に進み、レジスタＸ１〜Ｘ３，Ｙ１〜Ｙ３をそれぞれゼロリセットする。
【００４０】
ここで、レジスタＸ１，Ｙ１には、最も高い平均輝度のブロック（ａ１）を指し示すブロック番号（座標）がストアされ、レジスタＸ２，Ｙ２には最も低い平均輝度のブロック（ａ２）を指し示すブロック番号がストアされる。さらに、レジスタＸ３，Ｙ３には、ブロック（ａ１）とブロック（ａ２）との位置差がストアされる。
すなわち、ステップＳＣ９に進むと、ＣＰＵ８はレジスタａ１の値について「９」の剰余を算出し、これにより得られるブロック（ａ１）のＸ方向のブロック番号（図３参照）をレジスタＸ１にセットする。また、レジスタａ１の値を「９」で除算し、その商をレジスタＹ１にセットする。これにより、レジスタＸ１，Ｙ１には、最も高い平均輝度のブロック（ａ１）のブロック番号（座標）として（Ｘ１，Ｙ１）が確保される。
さらに、上述と同様に、レジスタａ２の値について「９」の剰余および商を算出して最も低い平均輝度のブロック（ａ２）のブロック番号（座標）をレジスタＸ２，Ｙ２にストアする。また、最も高い平均輝度のブロック位置（Ｘ１，Ｙ１）と最も低い平均輝度のブロック位置（Ｘ２，Ｙ２）との絶対差分（距離）を求めてレジスタＸ３，Ｙ３にそれぞれストアする。
【００４１】
次に、ステップＳＣ１０では、レジスタａ，ｂに各々「１」をセットした後、ステップＳＣ１１に進み、最も高い平均輝度のブロック座標位置（Ｘ１，Ｙ１）とブロック座標位置（Ｘ（ａ），Ｙ（ｂ））との相対位置（Ｘｓ１，Ｙｓ１）を算出する。次いで、ステップＳＣ１２では、最も低い平均輝度のブロック座標位置（Ｘ２，Ｙ２）とブロック座標位置（Ｘ（ａ），Ｙ（ｂ））との相対位置（Ｘｓ２，Ｙｓ２）を算出する。なお、レジスタａの値はＸ方向ブロック番号（１〜９で変化）、レジスタｂの値はＹ方向ブロック番号（１〜８で変化）がセットされる。
【００４２】
ブロック座標位置（Ｘ１，Ｙ１）と、レジスタａ，ｂの値で指定される各ブロック座標位置（Ｘ（ａ），Ｙ（ｂ））との座標差（Ｘｓ１，Ｙｓ１）およびブロック座標位置（Ｘ２，Ｙ２）と、レジスタａ，ｂの値で指定される各ブロック座標位置（Ｘ（ａ），Ｙ（ｂ））との座標差（Ｘｓ２，Ｙｓ２）が算出されると、ＣＰＵ８は次のステップＳＣ１３に進み、これら座標差（Ｘｓ１，Ｙｓ１）と座標差（Ｘｓ２，Ｙｓ２）とがシェーディング領域内にあるかどうかを判断する。シェーディング領域とは、Ｘ３＞Ｘｓ１またはＹ３＞Ｙｓ１または（Ｘ３＝Ｘｓ２かつＸ３＝Ｙｓ２）なる条件を満たすブロックを指す。すなわち、最も高い平均輝度のブロック位置（Ｘ１，Ｙ１）と最も低い平均輝度のブロック位置（Ｘ２，Ｙ２）との間であって、かつ、最も低い平均輝度のブロック位置でない領域では、判断結果が「ＹＥＳ」となり、後述するシェーディング係数処理へ進む。
【００４３】
これに対し、シェーディング領域でない場合には、判断結果が「ＮＯ」となり、ステップＳＣ１４に進む。ステップＳＣ１４では、シェーディング率Ｄおよびシェーディング方向Ｄｃをそれぞれ「０」にセットする。次いで、ステップＳＣ１５に進むと、ＣＰＵ８はレジスタａの値が「９」以下であるか否を判断し、「ＹＥＳ」の場合には次のステップＳＣ１６に処理を進め、レジスタａの値を１インクリメントする。
一方、判断結果が「ＮＯ」の場合、つまり、１ブロックライン分の処理が完了した時には、ステップＳＣ１７に進み、レジスタａの値を「１」にセットすると共に、レジスタｂの値を１インクリメントする。これにより、ブロックラインがＹ方向へ更新される。
そして、ステップＳＣ１８に進むと、ＣＰＵ８はレジスタｂの値が「８」以上、つまり、１フレーム分の各ブロック（１）〜（７２）について光源位置検出処理がなされたかどうかを判断する。ここで、全ブロックについて処理がなされた場合には、判断結果が「ＹＥＳ」となり、後述する３Ｄシェーディング（ＯＢＪ検出）処理へ移行する。一方、そうでない時には前述したステップＳＣ１１以降を繰り返す。
【００４４】
（４）シェーディング係数処理
上述したステップＳＣ１３において、シェーディング領域と判定されたブロックがあると、ＣＰＵ８は図８に示すシェーディング係数処理に移行してステップＳＤ１を実行する。ステップＳＤ１では、レジスタＤｔをゼロリセットし、続く、ステップＳＤ２〜ＳＤ１８では図４に図示するように、光源方向を特定する。まず、ステップＳＤ２では、レジスタＸ１の値がレジスタＸ（ａ）の値以上であるか否かを判断する。ここで、Ｘ１＜Ｘ（ａ）の場合、すなわち、最も高い平均輝度のブロック位置Ｘ１が現在ブロック位置Ｘ（ａ）の左側に位置する時には判断結果が「ＮＯ」となり、ステップＳＤ３に進む。
【００４５】
ステップＳＤ３では、Ｙ１≧Ｙ（ａ）であるか否かを判断する。ここで、Ｙ１＜Ｙ（ａ）の場合、すなわち、最も高い平均輝度のブロック位置Ｙ１が現在ブロック位置Ｘ（ａ）の上側に位置する時には判断結果が「ＮＯ」となり、ステップＳＤ４に進む。この場合、最も高い平均輝度のブロック位置（Ｘ１，Ｙ１）がフレーム中の左側かつ上方、すなわち、光源方向が図４に示す「８」の方向に相当するから、レジスタＤｔに「８」をセットする。
一方、上記ステップＳＤ３の判断が「ＹＥＳ」の場合、つまり、ブロック位置Ｙ１が現在ブロック位置Ｘ（ａ）に一致するか下方である場合には次のステップＳＤ５に進む。
【００４６】
ステップＳＤ５では、ブロック位置Ｙ１が現在ブロック位置Ｘ（ａ）に一致するか否かを判断する。ここで、一致する場合には、最も高い平均輝度のブロック位置（Ｘ１，Ｙ１）がフレーム中央左側に位置する訳だから、ステップＳＤ６に進み、レジスタＤｔに「７」（図４参照）をセットする。これに対し、ブロック位置Ｙ１が現在ブロック位置Ｘ（ａ）の下方である場合にはステップＳＤ５の判断結果が「ＮＯ」となり、ステップＳＤ７に進む。ステップＳＤ７では、光源方向がフレーム左下側になるから、レジスタＤｔに「６」（図４参照）をセットする。
【００４７】
次に、上述したステップＳＤ２において判断結果が「ＹＥＳ」の場合、すなわち、最も高い平均輝度のブロック位置Ｘ１が現在ブロック位置Ｘ（ａ）と同じか、あるいは右側に位置する時には次のステップＳＤ８に処理を進める。ステップＳＤ８に進むと、ＣＰＵ８は、最も高い平均輝度のブロック位置Ｘ１が現在ブロック位置Ｘ（ａ）と同一であるか否かを判断する。ここで、同一でない場合、つまり、最も高い平均輝度のブロック位置Ｘ１が現在ブロック位置Ｘ（ａ）より右側に位置する時には、判断結果が「ＮＯ」となり、ステップＳＤ９に進む。
【００４８】
ステップＳＤ９では、最も高い平均輝度のブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致するか、あるいは下側に位置するかどうかを判断する。ここで、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）より上側に位置する場合、最も高い平均輝度のブロック位置Ｙ１は右上側になるので、判断結果は「ＮＯ」となり、次のステップＳＤ１０に進み、光源がフレーム右上側に位置することから、レジスタＤｔに「２」（図４参照）をセットする。
【００４９】
一方、最も高い平均輝度のブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致するか、あるいは下側に位置する時には、上記ステップＳＤ９の判断結果が「ＹＥＳ」となり、ステップＳＤ１１に処理を進める。ステップＳＤ１１に進むと、ＣＰＵ８は、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致するか否かを判断する。ここで、一致する場合には判断結果が「ＹＥＳ」となり、ステップＳＤ１２に処理を進め、レジスタＤｔに「３」（図４参照）をセットする。これに対し、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致しない場合、つまり、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）の右下側に位置する時には、上記ステップＳＤ１１の判断結果が「ＮＯ」となり、ステップＳＤ１３に進む。ステップＳＤ１３では、光源がフレーム右下側に位置することから、レジスタＤｔに「４」（図４参照）をセットする。
【００５０】
次に、上述したステップＳＤ８において判断結果が「ＹＥＳ」の場合、すなわち、最も高い平均輝度のブロック位置Ｘ１が現在ブロック位置Ｘ（ａ）と同一である場合には、ステップＳＤ１４に処理を進める。ステップＳＤ１４では、最も高い平均輝度のブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致するか、あるいは下側に位置するかどうかを判断する。ここで、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）より上側にあれば、判断結果は「ＮＯ」となり、ステップＳＤ１５に進む。ステップＳＤ１５では、光源がフレーム上側に位置することから、レジスタＤｔに「１」（図４参照）をセットする。
【００５１】
これに対し、上記ステップＳＤ１４の判断結果が「ＮＯ」となる時、つまり、最も高い平均輝度のブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致するか、あるいは下側に位置する時には次のステップＳＤ１６に処理を進める。ステップＳＤ１６では、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致するか否かを判断する。ここで、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）の下側に位置する時には判断結果が「ＮＯ」になり、ステップＳＤ１７に進み、光源をフレーム下側とすべくレジスタＤｔに「５」（図４参照）をセットする。
【００５２】
一方、ブロック位置Ｙ１が現在ブロック位置Ｙ（ａ）に一致する場合、つまり、ブロック位置（Ｘ１，Ｙ１）と現在ブロック位置（Ｘ（ａ），Ｙ（ａ））とが一致する時には、上記ステップＳＤ１６の判断結果が「ＹＥＳ」となり、ステップＳＤ１８に進む。この場合、現在ブロック位置（Ｘ（ａ），Ｙ（ａ））が光源となるから、ステップＳＤ１８では、光源方向を無方向とすべく、レジスタＤｔに「０」をセットする。
【００５３】
こうして最も高い平均輝度のブロック位置（Ｘ１，Ｙ１）に基づき１フレーム中における光源方向が定まると、ＣＰＵ８はステップＳＤ１９に進み、レジスタａ，ｂの値に応じて設定される各ブロック毎のシェーディング方向Ｄｃ（（ａ＊９）＋ｂ）に、レジスタＤｔの値をストアする。そして、ステップＳＤ２０では、レジスタａ，ｂの値に応じて設定される各ブロック毎のシェーディング率Ｄ（（ａ＊９）＋ｂ）として（Ｘｓ１／Ｘ３）＊（Ｙｓ１／Ｙ３）で定義されるシェーディング率値をストアする。ここで言うシェーディング率Ｄとは、オブジェクト形状に対応して付与される陰影の比率を表わす値である。
そして、上記の通り、１ブロックについて「シェーディング方向Ｄｃ」および「シェーディング率Ｄ」が求まると、次のブロックに関して同様な処理を施すため、前述したステップＳＣ１５（図７参照）へ処理を戻し、レジスタａ，ｂに格納されるポインタを更新させる。
【００５４】
（５）３Ｄシェーディング（オブジェクト検出）処理
上述したシェーディング係数処理によって１フレーム中の各ブロック毎の「シェーディング方向Ｄｃ」および「シェーディング率Ｄ」が求まると、ＣＰＵ８は前述したステップＳＣ１８（図７参照）を介して図９に示す３Ｄシェーディング（オブジェクト検出）処理に進み、ステップＳＥ１を実行する。
ステップＳＥ１では、レジスタＺ１，Ｚ２にそれぞれ格納されるＸポインタおよびＹポインタをゼロリセットすると共に、表示オブジェクト数をカウントするレジスタａの値もゼロリセットする。なお、この処理では、最大６４個までのオブジェクト画像の表示位置を検出し得るようにしている。
【００５５】
次いで、ステップＳＥ２では、レジスタａの値に基づき、画像制御ＶＤＰ６の内部ＲＡＭに格納されているオブジェクトテーブルデータを読み出してレジスタＴＸ（ａ），ＴＹ（ａ）にストアする。オブジェクトテーブルデータとは、画面に表示すべきオブジェクト画像の表示位置を表わすデータである。次に、ステップＳＥ３に進むと、レジスタＴＸ（ａ）にストアしたオブジェクトテーブルデータがＸ方向のどのブロックに対応するか判定する。
ここで、レジスタＺ１に格納されるＸポインタの値に応じて定まるブロック内にレジスタＴＸ（ａ）の値が存在すれば、ステップＳＥ３の判断結果は「ＹＥＳ」となり、後述するステップＳＥ６に処理を進める。
【００５６】
一方、そうでない場合には判断結果が「ＮＯ」となり、ステップＳＥ４に進み、レジスタＺ１の値が「９」以上、つまり、１ブロックライン分の判定が完了したかどうかを判断する。ここで、１ブロックライン分の判定が完了していない場合には、判断結果が「ＮＯ」となり、ステップＳＥ５に進み、レジスタＺ１に格納されるＸポインタ値をインクリメントして歩進させ、再びステップＳＥ３にてレジスタＴＸ（ａ）にストアしたオブジェクトテーブルデータが、Ｘポインタの値に応じて定まるブロック内にあるか否かを判断する。
そして、このステップＳＥ３において、Ｘポインタの値に応じて定まるブロックにオブジェクトテーブルデータが対応する場合、あるいは上記ステップＳＥ４において１ブロックライン分の判定が完了した時には、ステップＳＥ６に処理を進める。
【００５７】
ステップＳＥ６に進むと、ＣＰＵ８は上述したステップＳＥ３〜ＳＥ５と同様に、レジスタＴＹ（ａ）にストアしたオブジェクトテーブルデータがＹ方向のどのブロックに対応するか判定する。ここで、レジスタＺ２に格納されるＹポインタの値に応じて定まるブロック内にレジスタＴＹ（ａ）の値が存在すると、判断結果は「ＹＥＳ」となり、後述するステップＳＥ１１に処理を進める。
一方、そうでない場合には判断結果が「ＮＯ」となり、ステップＳＥ７に進み、レジスタＺ２の値が「８」以上、つまり、１画面分の判定が完了したかどうかを判断する。ここで、１画面分の判定が完了していない場合には、判断結果が「ＮＯ」となり、ステップＳＥ８に進み、レジスタＺ２に格納されるＹポインタ値をインクリメントして歩進させ、再びステップＳＥ６にてレジスタＴＹ（ａ）にストアしたオブジェクトテーブルデータが、Ｙポインタの値に応じて定まるブロック内にあるか否かを判断する。
【００５８】
これに対し、１画面分の判定が完了すると、ステップＳＥ７の判断結果が「ＹＥＳ」となり、ステップＳＥ９に処理を進める。ステップＳＥ９では、レジスタａの値をインクリメントして歩進させる一方、レジスタＺ１，Ｚ２に格納されるＸ，Ｙポインタ値をゼロリセットする。次いで、ステップＳＥ１０では、歩進したレジスタａの値が「６４」以上、すなわち、全オブジェクト画像について表示位置を検出する処理を施したかどうかを判断する。ここで、全オブジェクト画像についての処理が完了したならば、判断結果が「ＹＥＳ」となり、前述した輝度データ算出処理（図６参照）に戻る。一方、そうでない時には、上述したステップＳＥ２以降を実行する。
【００５９】
そして、上述したステップＳＥ３，ＳＥ６を介してＸポインタおよびＹポインタの値に応じて定まるブロックに、レジスタＴＸ（ａ），ＴＹ（ａ）に格納されるオブジェクトテーブルデータが対応する時には、ステップＳＥ１１に処理を進め、ＸポインタおよびＹポインタの値に応じて定まるブロックのシェーディング方向ＤｃをレジスタＥｃにストアする。続いて、ステップＳＥ１２では、ＸポインタおよびＹポインタの値に応じて定まるブロックのシェーディング率ＤをレジスタＥにストアする。これにより、オブジェクト画像に付与すべき「シェーディング方向」と「シェーディング率」とが定まることになる。
【００６０】
このように、３Ｄシェーディング（オブジェクト検出）処理では、前述したシェーディング係数処理によって得られた各ブロック毎の「シェーディング方向Ｄｃ」および「シェーディング率Ｄ」に基づき、オブジェクトテーブルデータで定まるオブジェクト毎の「シェーディング方向Ｅｃ」および「シェーディング率Ｅ」を判定するようにしている。
【００６１】
（６）３Ｄシェーディング（オブジェクトエディット）処理
次に、各オブジェクト毎の「シェーディング方向Ｅｃ」および「シェーディング率Ｅ」が設定されると、ＣＰＵ８は図１０に示す３Ｄシェーディング（オブジェクトエディット）処理に進み、ステップＳＦ１を実行する。まず、ステップＳＦ１では、画像制御ＶＤＰ６の内部ＲＡＭに格納されるオブジェクト画像データＯＢＪ（ａ）を、レジスタａの値に応じて読み出してレジスタＦＣ（ｃ）に格納する。ここで、ｃはオブジェクト画像を形成する３２ドット×３２ドットの画素数１０２４に対応して０≦ｃ＜１０２４の値をなす。
【００６２】
次いで、ステップＳＦ２に進むと、ＣＰＵ８は、３２ドット×３２ドットの画像エリア内におけるオブジェクト画像の左端、右端、上端および下端位置をそれぞれ一時記憶するレジスタＸｈ，ＸＬ，Ｙｈ，ＹＬをゼロリセットすると共に、ドットポインタを格納するレジスタｃをもゼロリセットする。そして、次のステップＳＦ３では、レジスタｃに応じて読み出したオブジェクト画像データが「０」、つまり、透明なデータであるか否かを判断する。ここで、透明なデータである場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ４に処理を進める。
【００６３】
ステップＳＦ４では、レジスタｃの値を１インクリメントして歩進させ、続く、ステップＳＦ５では、歩進した値が「１０２４」を超えたかどうか、つまり、を判断する。ここで、３２ドット×３２ドットからなる１つのオブジェクト画像について完了したか否かを判断する。完了していない場合には、判断結果が「ＮＯ」になり、上記ステップＳＦ３〜ＳＦ４を繰り返す。
一方、１つのオブジェクト画像について完了した時には、判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
【００６４】
さて、上述したステップＳＦ３において、読み出したデータが「透明」なデータでない場合には、ここでの判断結果が「ＮＯ」となり、ステップＳＦ６に進む。ステップＳＦ６では、レジスタｃの値を「３２」で除算し、その商をオブジェクト画像の上端ドット位置としてレジスタＹｈにストアする。次に、ステップＳＦ７に進むと、オブジェクト画像の下端ドット位置ＹＬを検出するため、一旦、レジスタｃの値を最終ドット位置に相当する「１０２３」にセットする。そうして、ステップＳＦ８に進むと、ＣＰＵ８は、現在レジスタｃ値に応じてレジスタＦ（ｃ）から読み出されるオブジェクト画像データが「透明」なデータであるか否かを判断する。
【００６５】
そして、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、ステップＳＦ９に処理を進め、レジスタｃの値を１デクリメントする。次いで、ステップＳＦ１０では、レジスタｃの値が「０」に達したかどうかを判断し、「０」に達していない時には上記ステップＳＦ８〜ＳＦ９を繰り返す。これに対し、こうしてなされる画像データの逆走査が完了した時には、ステップＳＦ１０の判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
【００６６】
一方、上述したステップＳＦ８において、最終ドット位置からなされる逆走査過程で、画像データが検出された時、つまり、「透明」なデータではない画像データが検出された時には、判断結果が「ＮＯ」となり、ステップＳＦ１１に進む。ステップＳＦ１１に進むと、ＣＰＵ８は、現在のレジスタｃの値を「３２」で除算し、その商をオブジェクト画像の下端ドット位置としてレジスタＹＬにストアする。
こうしてオブジェクト画像データの上端／下端ドット位置Ｙｈ、ＹＬが求まると、ＣＰＵ８はステップＳＦ１２に処理を進め、オブジェクト画像データの左端／右端ドット位置Ｘｈ、ＸＬを検出するため、レジスタｃ，ｃ１およびｃｃをゼロリセットしておく。
【００６７】
次に、ステップＳＦ１３では、現レジスタｃの値に応じてレジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるか否かを判断する。ここで、読み出したオブジェクト画像データが「透明」なデータである場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ１４に処理を進める。ステップＳＦ１４では、レジスタｃの値に「３２」を加算すると共にレジスタｃｃの値を１インクリメントする。次いで、ステップＳＦ１５では、レジスタｃｃの値が「３２」以上であるかどうかを判断する。そして、レジスタｃｃの値が「３２」以上でない時には、判断結果が「ＮＯ」になり、上記ステップＳＦ１３〜ＳＦ１４を繰り返す。
【００６８】
一方、レジスタｃｃの値が「３２」以上に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ１６に進み、レジスタｃ１をインクリメントする一方、このインクリメントしたレジスタｃ１の値をレジスタｃにセットし、かつ、レジスタｃｃをゼロリセットする。そして、ステップＳＦ１７に進むと、ＣＰＵ８は、レジスタｃの値が「１０２４」以上、つまり、１つのオブジェクト画像データについて処理が完了したか否かを判断し、完了していない場合には判断結果が「ＮＯ」となり、ステップＳＦ１３に処理を戻す。一方、処理が完了した時には、ここでの判断結果が「ＹＥＳ」となって、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
【００６９】
ステップＳＦ１３のオブジェクト画像データ読み出しにおいて、「透明」なデータでない画像データが読み出された場合には、判断結果が「ＮＯ」となり、ステップＳＦ１８に処理を進める。ステップＳＦ１８では、当該画像の左端ドット位置を検出すべく現在のレジスタｃの値について「３２の剰余」を求め、求めた剰余値を左端ドット位置としてレジスタＸＬにセットする。次いで、ステップＳＦ１９では、右端ドット位置を求めるため、レジスタｃに「１０２３」、レジスタｃ１に「３１」をそれぞれセットすると共に、レジスタｃｃをゼロリセットする。
【００７０】
そして、ステップＳＦ２０では、現レジスタｃの値に応じてレジスタＦ（ｃ）からオブジェクト画像データを読み出し、これが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータである場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ２１に進む。ステップＳＦ２１では、レジスタｃの値から「３２」を減算すると共に、レジスタｃｃの値を１インクリメントする。次いで、ステップＳＦ２２では、レジスタｃｃの値が「３２」以上であるかどうかを判断する。ここで、レジスタｃｃの値が「３２」以上でない時には、判断結果が「ＮＯ」になり、上記ステップＳＦ２０〜ＳＦ２１を繰り返す。
【００７１】
一方、レジスタｃｃの値が「３２」以上に達すると、上記ステップＳＦ２２の判断結果が「ＹＥＳ」となり、ステップＳＦ２３に進み、レジスタｃ１をデクリメントする一方、このデクリメントしたレジスタｃ１の値をレジスタｃにセットし、かつ、レジスタｃｃをゼロリセットする。そして、ステップＳＦ２４に進むと、ＣＰＵ８は、レジスタｃの値が「０」、つまり、１つのオブジェクト画像データについて処理が完了したか否かを判断し、完了していない場合には判断結果が「ＮＯ」となり、ステップＳＦ２０に処理を戻す。一方、処理が完了した時には、ここでの判断結果が「ＹＥＳ」となって、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
【００７２】
上記ステップＳＦ２０のオブジェクト画像データ読み出しにおいて、「透明」なデータでない画像データが読み出されると、ここでの判断結果は「ＮＯ」となり、ステップＳＦ２５に処理を進める。ステップＳＦ２５に進むと、ＣＰＵ８は、オブジェクト画像の右端ドット位置を検出すべく現在のレジスタｃの値について「３２の剰余」を求め、求めた剰余値を右端ドット位置としてレジスタＸｈにセットし、図１１に示すステップＳＦ２６以降に処理を進める。
ステップＳＦ２６以降では、３Ｄシェーディング（オブジェクト検出）処理において求めたオブジェクト毎の「シェーディング方向Ｅｃ」および「シェーディング率Ｅ」に応じてオブジェクト画像毎に陰影を付与するシェーディング処理を行う。以下、シェーディング方向Ｅｃ毎になされるシェーディング処理について説明する。
【００７３】
▲１▼シェーディング方向Ｅｃが「０」の場合
まず、ステップＳＦ２６に進むと、ＣＰＵ８は、レジスタｃの値をゼロリセットし、続く、ステップＳＦ２７では、現在処理対象となっているオブジェクト画像に対応するブロックのシェーディング方向Ｅｃが「０」、すなわち、光源位置であるか否かを判断する。ここで、該当ブロック自身が光源となっている場合には、陰影を付与する必要がないから、判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
【００７４】
▲２▼シェーディング方向Ｅｃが「１」の場合
一方、シェーディング方向Ｅｃが「０」でない時には、判断結果が「ＮＯ」となり、ステップＳＦ２８に処理を進める。そして、ステップＳＦ２８では、オブジェクト画像に対応するブロックのシェーディング方向Ｅｃが「１（図４参照）」であるか否かを判断する。ここで、シェーディング方向Ｅｃが「１」であると、判断結果が「ＹＥＳ」となり、次のステップＳＦ２９に処理を進める。ステップＳＦ２９では、シェーディング領域を算出する。すなわち、レジスタＹＬの値に対応するシェーディング係数Ｅを乗算してレジスタＹｓにストアする一方、レジスタＹｈの値に「３２」を乗算してレジスタｃにセットする。さらに、レジスタｉに格納される階調値を「１６」にセットする。
【００７５】
次いで、ステップＳＦ３０では、レジスタＦ（ｃ）に格納される各ドット毎のオブジェクト画像データを各色毎の画像データとしてレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。そして、ステップＳＦ３１では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ３２に進み、レジスタｃの値を歩進させた後、再び上記ステップＳＦ３０に処理を戻して次のドットに対応する画像データを取込む。
【００７６】
そして、ステップＳＦ３１において、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータでない場合には、判断結果が「ＮＯ」となり、ステップＳＦ３３に進む。ステップＳＦ３３に進むと、ＣＰＵ８はシェーデイング率Ｅに階調値ｉを乗算した値が読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色ＲＧＢにおいて（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ３４に処理を進め。一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ３２に処理を進め、レジスタｃの値を歩進させる。
【００７７】
ステップＳＦ３４では、各色毎の（ｉ・Ｅ）値を各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にセットする。そして、ステップＳＦ３５では、シェーディングを付与したドットがレジスタＹｈに格納される上端ドット位置より下であるか否かを判断する。ここで、上端ドット位置より上である時には、シェーディングを付与する必要がないから、判断結果は「ＮＯ」となり、ステップＳＦ３２を介して次のドットへ移る。一方、上端ドット位置より下であれば、判断結果が「ＹＥＳ」となり、ステップＳＦ３６に処理を進める。ステップＳＦ３６では、レジスタＹｈの値を歩進させ、続く、ステップＳＦ３７では、レジスタｉの階調値を１デクリメントする。
【００７８】
次いで、ステップＳＦ３８に進むと、現在処理しているドットが下端ドット位置Ｙｓより上か、あるいは階調値ｉが「０」であるかを判断する。こうした条件のいずれかを満たした時にシェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、上記条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ３２を介してレジスタｃの値を歩進させ、次のドットに関するシェーディング付与に移行する。
このように、シェーディング方向Ｅｃが「１」の場合、画面上から下に向う光源方向に基づき、オブジェクト画像を形成する各ドットに対して階調値にシェーディング率Ｅを乗算してなるシェーディングを付与し、その際、シェーディングはドット位置が下方向へ向うほど階調が低下して黒くなる。
【００７９】
▲３▼シェーディング方向Ｅｃが「２」の場合
この場合、図１２に示すステップＳＦ３９の判断結果が「ＹＥＳ」となって、ステップＳＦ４０に処理を進める。ステップＳＦ４０では、レジスタＸに「３１」をセットする一方、レジスタＹをゼロリセットする。さらに、レジスタＺに「１」をセットし、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ４１では、シェーディング領域を算出する。すなわち、レジスタＸＬの値にシェーディング係数Ｅを乗算してレジスタＸｓにストアする一方、レジスタＹの値に「３２」を乗算した値にレジスタＸの値を加算してレジスタｃにセットする。
【００８０】
次に、ステップＳＦ４２に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各色（Ｒ，Ｇ，Ｂ）のオブジェクト画像データをレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。続く、ステップＳＦ４３では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ４４に進む。ステップＳＦ４４では、レジスタＸの値が「３１」以上、すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最右端のドットであるか否かを判断する。ここで、最右端位置になければ、判断結果は「ＮＯ」となり、ステップＳＦ４５に処理を進める。
【００８１】
ステップＳＦ４５では、レジスタＸ，Ｙをそれぞれ１インクリメントして歩進させる。すなわち、この場合、シェーディング方向Ｅｃが「２」であるから、光源の方向が右上から進入する。このため、これに直交する方向でオブジェクト画像データの各ドットを読み出すべく、読み出しドット位置をＸ方向およびＹ方向にそれぞれ１ドット分歩進させ、所謂、斜め読み出しがなされる。こうして、読み出しドット位置を斜めに歩進させた後、ＣＰＵ８は上述したステップＳＦ４１に戻す。
一方、上記ステップＳＦ４４において、レジスタＸの値が「３１」以上である時には、読み出しドット位置を変更するため、次のステップＳＦ４６に進む。ステップＳＦ４６では、レジスタＸの値からレジスタＺの値を減算し、その値をレジスタＸにストアする。また、レジスタＹをゼロリセットすると共に、レジスタＺの値をインクリメントする。これにより、読み出しドット位置が最右端に達した場合、上述した斜め読み出しする際の読み出し行が更新される。
【００８２】
次いで、ステップＳＦ４７に進むと、レジスタＸの値がレジスタＸｓの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＮＯ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＹＥＳ」となり、前述したステップＳＦ４１へ処理を戻す。
【００８３】
さて、上述したステップＳＦ４１において読み出したオブジェクト画像データが「透明」なデータでない場合には、当該ステップＳＦ４１における判断結果が「ＮＯ」となり、ステップＳＦ４８に進む。ステップＳＦ４８では、シェーデイング率Ｅに階調値ｉを乗算した値が読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）において（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ４９に処理を進め、一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ４４に処理を進める。
【００８４】
ステップＳＦ４９に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にセットする。そして、ステップＳＦ５０では、レジスタＹの値が「０」、すなわち、読み出しドット位置が最上端に達したかどうかを判断する。ここで、最上端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ４４に処理を進める。
一方、読み出しドット位置が最上端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ５１に進む。ステップＳＦ５１では、前述した斜め読み出しする際の読み出し行が更新されるのに伴い、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【００８５】
そして、続く、ステップＳＦ５２では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ４４に処理を進める。
このように、シェーディング方向Ｅｃが「２」の場合、画面右上から斜め左下に向う光源方向に直交するようオブジェクト画像を形成する各ドットを斜め読み出しし、斜め読み出しされる各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してなるシェーディングを付与する。
【００８６】
▲４▼シェーディング方向Ｅｃが「３」の場合
この場合、前述したステップＳＦ５３の判断が「ＹＥＳ」となり、ステップＳＦ５４に処理を進める。ステップＳＦ５４では、レジスタＸに「３１」をセットする一方、レジスタＹをゼロリセットし、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ５５では、レジスタＸＬの値にシェーディング係数Ｅを乗算してレジスタＸｓにシェーディング領域をストアする一方、レジスタＹの値に「３２」を乗算した値にレジスタＸの値を加算してレジスタｃにセットする。
【００８７】
次に、ステップＳＦ５６に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各ドット毎のオブジェクト画像データを、各色（Ｒ，Ｇ，Ｂ）毎の画像データとしてレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。続く、ステップＳＦ５７では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ５８に進む。ステップＳＦ５８では、レジスタＹの値を１インクリメントして歩進させ、続く、ステップＳＦ５９では、この歩進したレジスタＹの値が「３１」より大であるか否かを判断する。すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最下端のドットであるか否かを判断する。ここで、最下端位置になければ、判断結果は「ＮＯ」となり、前述したステップＳＦ５５に処理を戻す。
【００８８】
一方、読み出したドットの位置が最下端であれば、上記ステップＳＦ５９の判断結果が「ＹＥＳ」となり、ステップＳＦ６０に進む。ステップＳＦ６０では、レジスタＸの値を１デクリメントすると共に、レジスタＹをゼロリセットする。すなわち、この場合、シェーディング方向Ｅｃが「３」であるから、光源の方向が右から真横に進入する。このため、３２ドット×３２ドットのオブジェクト画像データエリアを右端上からＹ方向（下方向）へ至る読み出し行を、順次左方へ走査させる読み出し形態となる。
【００８９】
そして、ステップＳＦ６１では、レジスタＸｓの値がレジスタＸの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＮＯ」となり、前述したステップＳＦ５５へ処理を戻す。
【００９０】
さて、上述したステップＳＦ５７において読み出したオブジェクト画像データが「透明」なデータでない場合には、当該ステップＳＦ５７における判断結果が「ＮＯ」となり、ステップＳＦ６２に進む。ステップＳＦ６２では、シェーデイング率Ｅに階調値ｉを乗算した値が、読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）において（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ６３に処理を進める。一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ５８に処理を進める。
【００９１】
ステップＳＦ６３に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にセットする。そして、ステップＳＦ６４では、レジスタＹの値が「０」、すなわち、読み出しドット位置が最上端に達したかどうかを判断する。ここで、最上端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ５８に処理を進める。
一方、読み出しドット位置が最上端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ６５に進む。ステップＳＦ６５では、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【００９２】
そして、続く、ステップＳＦ６６では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ５８に処理を進める。
このように、シェーディング方向Ｅｃが「３」の場合、画面右真横からの光源方向となるから、３２ドット×３２ドットのオブジェクト画像データエリアを右端上からＹ方向へ至る読み出し行を、順次左端側へ走査させるよう読み出しを行い、読み出された各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してなるシェーディングが付与される。
【００９３】
▲５▼シェーディング方向Ｅｃが「４」の場合
この場合、図１３に示すステップＳＦ６７の判断結果が「ＹＥＳ」となり、ステップＳＦ６８に処理を進める。ステップＳＦ６８では、レジスタＸ，Ｙにそれぞれ「３１」をセットする一方、レジスタＺに「１」をセットし、かつ、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ６９では、シェーディング領域を算出する。すなわち、レジスタＹｈの値にシェーディング係数Ｅを乗算してなる値をレジスタＹｓにストアする一方、レジスタＹの値に「３２」を乗算した値にレジスタＸの値を加算してレジスタｃにセットする。
【００９４】
次に、ステップＳＦ７０に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各ドット毎の各色（Ｒ，Ｇ，Ｂ）のオブジェクト画像データをレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。続く、ステップＳＦ７１では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ７２に進む。ステップＳＦ７２では、レジスタＸの値が「３１」以上、すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最右端のドットであるか否かを判断する。ここで、最右端位置になければ、判断結果は「ＮＯ」となり、ステップＳＦ７３に処理を進める。
【００９５】
ステップＳＦ７３では、レジスタＸの値を１インクリメントすると共に、レジスタＹの値を１デクリメントする。すなわち、この場合、シェーディング方向Ｅｃが「４」であるから、光源の方向が右下から進入する。このため、これに直交する方向でオブジェクト画像データの各ドットを読み出すべく、読み出しドット位置をＸ方向にインクリメントさせつつ、Ｙ方向にデクリメントさせて、所謂、斜め読み出しを行う。こうして、読み出しドット位置を斜めに歩進させた後、ＣＰＵ８は上述したステップＳＦ６９に戻す。
【００９６】
一方、上記ステップＳＦ７２において、レジスタＸの値が「３１」以上である時には、読み出しドット位置を変更するため、次のステップＳＦ７４に進む。ステップＳＦ７４では、現レジスタＸの値からレジスタＺの値を減算し、その値をレジスタＸにストアする。また、レジスタＹに「３１」をセットすると共に、レジスタＺの値をインクリメントする。これにより、読み出しドット位置が最右端に達した場合、上述した斜め読み出しする際の読み出し行が更新される。
【００９７】
次いで、ステップＳＦ７５に進むと、レジスタＹの値がレジスタＹｓの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＮＯ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＹＥＳ」となり、前述したステップＳＦ６９へ処理を戻す。
【００９８】
さて、上述したステップＳＦ６９において読み出したオブジェクト画像データが「透明」なデータでない場合には、当該ステップＳＦ６９における判断結果が「ＮＯ」となり、ステップＳＦ７６に進む。ステップＳＦ７６では、シェーデイング率Ｅに階調値ｉを乗算した値が、読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）における（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ７７に処理を進め、一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ７２に処理を進める。
【００９９】
ステップＳＦ７７に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にそれぞれセットする。そして、ステップＳＦ７８では、レジスタＹの値が「３１」、すなわち、読み出しドット位置が最下端に達したかどうかを判断する。ここで、最下端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ７２に処理を進める。
一方、読み出しドット位置が最下端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ７９に進む。ステップＳＦ７９では、前述した斜め読み出しする際の読み出し行が更新されるのに伴い、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【０１００】
そして、ステップＳＦ８０では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ７２に処理を進める。
このように、シェーディング方向Ｅｃが「４」の場合には、前述したシェーディング方向Ｅｃが「２」と時と同様に、オブジェクト画像を形成する各ドットを斜め読み出しし、斜め読み出しされる各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してシェーディングを付与している。
【０１０１】
▲６▼シェーディング方向Ｅｃが「５」の場合
この場合、ステップＳＦ８１の判断結果が「ＹＥＳ」となり、ステップＳＦ８２に処理を進める。ステップＳＦ８２では、レジスタＸ，Ｙにそれぞれ「３１」をセットする一方、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ８３では、レジスタＹｈの値にシェーディング係数Ｅを乗算し、その結果をレジスタＹｓ（シェーディング領域）をストアする。また、レジスタＹの値に「３２」を乗算した値にレジスタＸの値を加算してレジスタｃにセットする。
【０１０２】
次に、ステップＳＦ８４に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各ドット毎のオブジェクト画像データを各色（Ｒ，Ｇ，Ｂ）毎の画像データとしてレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。続く、ステップＳＦ８５では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ８６に進む。
ステップＳＦ８６では、レジスタＸの値を１デクリメントし、続く、ステップＳＦ８７では、このレジスタＸの値が「０」より小であるか否かを判断する。すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最左端のドットであるか否かを判断する。ここで、最左端ドットでなければ、判断結果は「ＮＯ」となり、前述したステップＳＦ８３に処理を戻す。
【０１０３】
一方、読み出したドットの位置が最左端であれば、上記ステップＳＦ８７の判断結果が「ＹＥＳ」となり、ステップＳＦ８８に進む。ステップＳＦ８８では、レジスタＹの値を１デクリメントすると共に、レジスタＸに「３１」をセットする。すなわち、この場合、シェーディング方向Ｅｃが「５」であるから、光源の方向が真下から進入する。このため、３２ドット×３２ドットのオブジェクト画像データエリアを左端下からＸ方向へ至る読み出し行を、順次上方向へ走査させる読み出し形態となる。
【０１０４】
そして、ステップＳＦ８９では、レジスタＹｈの値がレジスタＹの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＮＯ」となり、前述したステップＳＦ８３へ処理を戻す。
【０１０５】
さて、上述したステップＳＦ８５において読み出したオブジェクト画像データが「透明」なデータでない場合には、当該ステップＳＦ８５における判断結果が「ＮＯ」となり、ステップＳＦ９０に進む。ステップＳＦ９０では、シェーデイング率Ｅに階調値ｉを乗算した値が、読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）における（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ９１に処理を進める。
一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ８６に処理を進める。
【０１０６】
ステップＳＦ９１に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にセットする。そして、ステップＳＦ９２では、レジスタＸの値が「３１」、すなわち、読み出しドット位置が最右端に達したかどうかを判断する。ここで、最右端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ８６に処理を進める。
一方、読み出しドット位置が最右端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ９３に進む。ステップＳＦ９３では、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【０１０７】
そして、続く、ステップＳＦ９４では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ８６に処理を進める。
このように、シェーディング方向Ｅｃが「５」の場合、画面真下からの光源方向となるから、３２ドット×３２ドットのオブジェクト画像データエリアを、左端下からＸ方向へ至る読み出し行を、順次上方向へ走査させる読み出しを行い、読み出された各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してなるシェーディングが付与される。
【０１０８】
▲７▼シェーディング方向Ｅｃが「６」の場合
この場合、図１４に示すステップＳＦ９５の判断結果が「ＹＥＳ」となり、ステップＳＦ９６に処理を進める。ステップＳＦ９６では、レジスタＹに「３１」をセットする一方、レジスタＸをゼロリセットする。さらに、レジスタＺに「１」をセットし、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ９７に進むと、ＣＰＵ８はシェーディング領域を算出する。すなわち、レジスタＹｈの値にシェーディング係数Ｅを乗算してなるシェーディング領域値を、レジスタＹｓにストアすると共に、レジスタＹの値に「３２」を乗算した値とレジスタＸの値とを加算してレジスタｃにセットする。
【０１０９】
次に、ステップＳＦ９８に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各ドット毎の各色（Ｒ，Ｇ，Ｂ）のオブジェクト画像データをレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。続く、ステップＳＦ９９では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ１００に進む。
ステップＳＦ１００では、レジスタＹの値が「３１」以上、すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最下端のドットであるか否かを判断する。ここで、最下端位置になければ、判断結果は「ＮＯ」となり、ステップＳＦ１０１に処理を進める。
【０１１０】
ステップＳＦ１０１では、レジスタＸ，Ｙをそれぞれ１インクリメントして歩進させる。すなわち、この場合、シェーディング方向Ｅｃが「６」であるから、光源の方向が左下（図４参照）から進入する。このため、これに直交する方向でオブジェクト画像データの各ドットを読み出すべく、読み出しドット位置をＸ方向およびＹ方向にそれぞれ１ドット分歩進させ、斜め読み出しを行う。読み出しドット位置を斜めに歩進させた後、ＣＰＵ８は上述したステップＳＦ９７に戻す。
【０１１１】
一方、上記ステップＳＦ１００において、レジスタＹの値が「３１」以上である時には、判断結果が「ＹＥＳ」となり、ステップＳＦ１０２に進む。ステップＳＦ１０２では、読み出しドット位置を変更するため、レジスタＹの値からレジスタＺの値を減算し、その値をレジスタＹにストアする。また、レジスタＸをゼロリセットすると共に、レジスタＺの値をインクリメントする。これにより、読み出しドット位置が最下端に達した場合、上述した斜め読み出しする際の読み出し行が更新される。
【０１１２】
次いで、ステップＳＦ１０３に進むと、レジスタＹの値がレジスタＹｓの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＮＯ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＹＥＳ」となり、前述したステップＳＦ９７へ処理を戻す。
【０１１３】
さて、上述したステップＳＦ９７において読み出したオブジェクト画像データが「透明」なデータでない場合には、当該ステップＳＦ９７における判断結果が「ＮＯ」となり、ステップＳＦ１０４に進む。ステップＳＦ１０４では、シェーデイング率Ｅに階調値ｉを乗算した値が、読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）において（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ１０５に処理を進め、一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ１００に処理を進める。
【０１１４】
ステップＳＦ１０５に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にセットする。そして、ステップＳＦ１０６では、レジスタＸの値が「０」、すなわち、読み出しドット位置が最左端に達したかどうかを判断する。ここで、最左端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ１００に処理を進める。
一方、読み出しドット位置が最左端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ１０７に進む。ステップＳＦ１０７では、前述した斜め読み出しする際の読み出し行が更新されるのに伴い、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【０１１５】
そして、続く、ステップＳＦ１０８では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ１００に処理を進める。
このように、シェーディング方向Ｅｃが「６」の場合、画面左下から斜め右上に向う光源方向に直交するようオブジェクト画像を形成する各ドットを斜め読み出しし、斜め読み出しされる各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してなるシェーディングを付与する。
【０１１６】
▲８▼シェーディング方向Ｅｃが「７」の場合
この場合、ステップＳＦ１０９の判断結果が「ＹＥＳ」となり、ステップＳＦ１１０に処理を進める。ステップＳＦ１１０では、レジスタＸ，Ｙにそれぞれゼロリセットすると共に、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ１１１では、レジスタＸｈの値にシェーディング係数Ｅを乗算して得られるシェーディング領域をレジスタＸｓにストアする一方、レジスタＹの値に「３２」を乗算した値とレジスタＸの値とを加算してレジスタｃにセットする。
【０１１７】
次に、ステップＳＦ１１２に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各ドット毎の各色（Ｒ，Ｇ，Ｂ）のオブジェクト画像データをレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にそれぞれ取込む。続く、ステップＳＦ１１３では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ１１４に進む。
ステップＳＦ１１４では、レジスタＹの値を１インクリメントして歩進させ、続く、ステップＳＦ１１５では、この歩進したレジスタＹの値が「３１」より大であるか否かを判断する。すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最下端のドットであるか否かを判断する。ここで、最下端位置になければ、判断結果は「ＮＯ」となり、前述したステップＳＦ１１１に処理を戻す。
【０１１８】
一方、読み出したドットの位置が最下端であれば、上記ステップＳＦ１１５の判断結果が「ＹＥＳ」となり、ステップＳＦ１１６に進む。ステップＳＦ１１６では、レジスタＸの値を１インクリメントすると共に、レジスタＹをゼロリセットする。すなわち、この場合、シェーディング方向Ｅｃが「７」であるから、光源の方向が左から真横に進入する。このため、３２ドット×３２ドットのオブジェクト画像データエリアを左端上から下方向へ至る読み出し行を、順次右端Ｘ方向へ走査させる読み出し形態となる。
【０１１９】
そして、ステップＳＦ１１７では、レジスタＸｓの値がレジスタＸの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＮＯ」となり、前述したステップＳＦ１１１へ処理を戻す。
【０１２０】
さて、上述したステップＳＦ１１３において読み出したオブジェクト画像データが「透明」なデータでない場合には、当該ステップＳＦ１１３における判断結果が「ＮＯ」となり、ステップＳＦ１１８に進む。ステップＳＦ１１８では、シェーデイング率Ｅに階調値ｉを乗算した値が、読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）における（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ１１９に処理を進める。一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ１１４に処理を進める。
【０１２１】
ステップＳＦ１１９に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にセットする。そして、ステップＳＦ１２０では、レジスタＹの値が「０」、すなわち、読み出しドット位置が最上端に達したかどうかを判断する。ここで、最上端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ１１４に処理を進める。
一方、読み出しドット位置が最上端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ１２１に進む。ステップＳＦ１２１では、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【０１２２】
そして、続く、ステップＳＦ１２２では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ１１４に処理を進める。
このように、シェーディング方向Ｅｃが「７」の場合、画面左真横からの光源方向（図４参照）となるから、３２ドット×３２ドットのオブジェクト画像データエリアを左端上からＹ方向へ至る読み出し行を、順次右端Ｘ方向へ走査させるよう読み出しを行い、読み出された各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してなるシェーディングが付与される。
【０１２３】
▲９▼シェーディング方向Ｅｃが「８」の場合
この場合、図１５に示すステップＳＦ１２３の判断結果が「ＹＥＳ」となり、ステップＳＦ１２４に処理を進める。ステップＳＦ１２４では、レジスタＸ，Ｙをそれぞれゼロリセットする一方、レジスタＺに「１」をセットし、かつ、レジスタｉに階調値「１６」をセットする。次いで、ステップＳＦ１２５では、シェーディング領域を算出する。すなわち、レジスタＸｈの値にシェーディング係数Ｅを乗算してなるシェーディング領域値をレジスタＸｓにストアする一方、レジスタＹの値に「３２」を乗算した値とレジスタＸの値とを加算してレジスタｃにセットする。
【０１２４】
次に、ステップＳＦ１２６に進むと、ＣＰＵ８は、レジスタＦ（ｃ）に格納される各ドット毎の各色（Ｒ，Ｇ，Ｂ）のオブジェクト画像データをレジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）に取込む。続く、ステップＳＦ１２７では、レジスタＦ（ｃ）から読み出したオブジェクト画像データが「透明」なデータであるかどうかを判断する。ここで、「透明」なデータであれば、判断結果が「ＹＥＳ」となり、次のステップＳＦ１２８に進む。
ステップＳＦ１２８では、レジスタＸの値が「０」以下、すなわち、３２ドット×３２ドットで形成されるオブジェクト画像データの内、最左端のドットであるか否かを判断する。ここで、最左端位置になければ、判断結果は「ＮＯ」となり、ステップＳＦ１２９に処理を進める。
【０１２５】
ステップＳＦ７３では、レジスタＸの値を１デクリメントすると共に、レジスタＹの値を１インクリメントする。すなわち、この場合、シェーディング方向Ｅｃが「８」であるから、光源の方向が左上から右斜め下へ進入する。このため、これに直交する方向でオブジェクト画像データの各ドットを読み出すべく、読み出しドット位置をＸ方向にデクリメントさせつつ、Ｙ方向にインクリメントさせて斜め読み出しを行う。こうして、読み出しドット位置を斜めに歩進させた後、ＣＰＵ８は上述したステップＳＦ１２５に戻す。
【０１２６】
一方、上記ステップＳＦ１２８において、レジスタＸの値が「０」以下である時には、読み出しドット位置を変更するため、次のステップＳＦ１３０に進む。ステップＳＦ１３０では、現レジスタＸの値にレジスタＺの値を加算し、その値をレジスタＸにストアする。また、レジスタＹをゼロリセットすると共に、レジスタＺの値を１インクリメントする。これにより、読み出しドット位置が最左端に達した場合、上述した斜め読み出しする際の読み出し行が更新される。
【０１２７】
次いで、ステップＳＦ１３１に進むと、レジスタＸの値がレジスタＸｓの値より大、つまり、シェーディング領域を超えたかどうかを判断する。ここで、シェーディング領域を超えた場合には、判断結果が「ＮＯ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。これに対し、現在のドット位置がシェーディング領域内にあれば、判断結果は「ＹＥＳ」となり、前述したステップＳＦ１２５へ処理を戻す。
【０１２８】
さて、上述したステップＳＦ１２７において、読み出したオブジェクト画像データが「透明」なデータでない場合には、ここでの判断結果が「ＮＯ」となり、ステップＳＦ１３２に進む。ステップＳＦ１３２では、シェーデイング率Ｅに階調値ｉを乗算した値が、読み出した画像データより濃いかどうか各色毎に判定する。ここで、各色（Ｒ，Ｇ，Ｂ）における（ｉ・Ｅ）値が濃い場合には、判断結果が「ＹＥＳ」となり、次のステップＳＦ１３３に処理を進め、一方、そうでない場合には、判断結果が「ＮＯ」となり、上述したステップＳＦ１２８に処理を進める。
【０１２９】
ステップＳＦ１３３に進むと、ＣＰＵ８は、各色（Ｒ，Ｇ，Ｂ）毎の（ｉ・Ｅ）値を、各レジスタＦ（Ｒ），Ｆ（Ｇ），Ｆ（Ｂ）にそれぞれセットする。そして、ステップＳＦ１３４では、レジスタＹの値が「０」、すなわち、読み出しドット位置が最上端に達したかどうかを判断する。ここで、最上端に達していない時には、引続き次のドットに対してシェーディング処理を施す必要があるから、判断結果は「ＮＯ」となり、前述したステップＳＦ１２８に処理を進める。
一方、読み出しドット位置が最上端に達した時には、判断結果が「ＹＥＳ」となり、ステップＳＦ１３５に進む。ステップＳＦ１３５では、前述した斜め読み出しする際の読み出し行が更新されるのに伴い、レジスタｉに格納される階調値を１デクリメントして陰影を１段階濃くする。
【０１３０】
そして、続く、ステップＳＦ１３６では、現在処理しているドット位置がシェーディング領域を超えたか、あるいは階調値ｉが「０」のいずれかを満たしているか否かを判断する。ここで、上記両条件のいずれかを満たした時には、シェーディング付与が完了したとして判断結果が「ＹＥＳ」となり、前述した３Ｄシェーディング（オブジェクト検出）処理におけるステップＳＥ９（図９参照）へ処理を戻す。
これに対し、上記両条件のいずれも満たさない時には、シェーディング付与が完了していないと見做して判断結果が「ＮＯ」となり、ステップＳＦ１２８に処理を進める。
このように、シェーディング方向Ｅｃが「８」の場合には、前述したシェーディング方向Ｅｃが「４」と時と同様に、オブジェクト画像を形成する各ドットを斜め読み出しし、斜め読み出しされる各ドット行毎に順次低減する階調値とシェーディング率Ｅとを乗算してシェーディングを付与している。
【０１３１】
このように、第１実施例にあっては、実画像データから抽出した１フレーム分の輝度データＤＹをＸ方向に９分割、Ｙ方向に８分割したブロックに分け、これら各ブロック毎の輝度データＤＹを読み込んで平均輝度を算出し、このフレームにおける高輝度ブロックと低輝度ブロックとを求める。そして、求めた高輝度ブロックと低輝度ブロックとに応じてシェーディング領域を判定すると共に、当該シェーディング領域におけるシェーディング方向およびシェーディング率を算出し、これに基づいてオブジェクト画像にシェーディング処理を施す。
シェーディング処理では、シェーディング領域に位置するオブジェクト画像毎にシェーディング方向Ｅｃとシェーディング率Ｅとを定める。そして、オブジェクト画像の大きさにシェーディング率Ｅを乗算して当該オブジェクト画像中のシェーディング領域を求め、求めた領域においてオブジェクト画像の階調をシェーディング方向に対応して「白色」から「黒色」へ順次低減され陰影が付けられる。
【０１３２】
これにより、実画像の光源方向に当たるオブジェクト画像では、その光源に対応した「ハイライト」として白色に変化する一方、光源から離れるにつれて階調が低下して黒色に変化する陰影が強調されることになる。この結果、２次元のオブジェクト画像に対して、実画像を撮像した時の光源に応じてシェーディングを施すので、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現することが可能になる訳である。
すなわち、単に、実画像と２次元のオブジェクト画像とをスーパーインポーズ表示した時には、図１６に図示するように、オブジェクト画像を３次元的に写実表現し得ないが、本実施例によれば、図１７に図示する通り、実画像の光源方向に応じて２次元のオブジェクト画像にシェーディングを付与するから、簡易的に写実表現できる。
【０１３３】
Ｄ．第２実施例の概要
上述した第１実施例においては、画像出力エンコーダ２がＣＣＤカメラ１から供給される撮像信号ＳＳを色差信号と輝度信号とに分離し、その内の輝度信号に基づき実画像における光源方向を検出するようにしていた。これに替えて、第２実施例では外部から供給されるコンポジットビデオ信号から直接的に輝度データを抽出し、抽出した輝度データに基づき、上述した第１実施例と同様にオブジェクト画像にシェーディング処理を施すようにしている。
【０１３４】
すなわち、第２実施例では、コンポジットビデオ信号をフィルタリングして得られる輝度信号に対してフィールド走査に同期して２４ライン分をＡＤサンプリングして輝度データａ（０）〜ａ（６９１１）を発生する。１ライン２８８ドットであるから、これを２４ライン分サンプリングするため、都合６９１２データとなり、これを図１９に示す態様でメモリにストアする。
ＡＤサンプリングは、フィールド走査に同期してなされる。本実施例の場合、垂直走査が奇数フィールドと偶数フィールド走査とに分れる飛越し走査となる。奇数フィールド走査では、図２０（イ）に示す垂直同期パルスＶ１８〜Ｖ４１、Ｖ６６〜Ｖ８９、Ｖ１１４〜Ｖ１３７およびＶ１６２〜Ｖ１８５に同期し、偶数フィルードでは垂直同期パルスＶ４２〜Ｖ６５、Ｖ９０〜Ｖ１１３、Ｖ１３８〜Ｖ１６１およびＶ１８６〜Ｖ２０９に同期する。
【０１３５】
水平走査は、奇数フィールド／偶数フィールド共に、同図（ロ）に示すように、水平駆動パルスＨＣ６７〜ＨＣ３５４に同期し、それ以外の駆動パルス期間は水平ブランキング（帰線消去）期間となる。この水平ブランキング期間あるいは垂直帰線期間中において、ＡＤサンプリングされた２４ライン分の輝度データａ（０）〜ａ（６９１１）（図１９参照）をＸ方向に９分割してなるブロック毎の平均輝度を算出し、その結果をラインブロック毎にメモリに記憶する。２４ライン分完了した時点で、偶数フィルード走査に同期して同様に２４ライン分のＡＤサンプリングを行い、ブロック毎の平均輝度を算出し、その結果をラインブロック毎にメモリに記憶する。
【０１３６】
このような奇数フィールド走査と偶数フィールド走査とは、図２１に示す順路でなされ、これにより１フレーム分の各ブロック平均輝度が求まる。なお、図２１にあっては、Ｖｃ＝０が奇数フィールド走査を、Ｖｃ＝１が偶数フィールド走査を表わしている。
なお、帰線消去期間中においては、以上のようにして求めた各ブロックの平均輝度に基づいて定まる光源方向とフレーム内のオブジェクト画像位置とに応じて当該オブジェクト画像に付与するシェーディング範囲を定め、かつ、これに対応したシェーディング率に従ってオブジェクト画像の濃淡（陰影）を調整することでシェーディングが付与される。
【０１３７】
Ｅ．第２実施例の構成
したがって、この第２実施例と前述した第１実施例とは、輝度データを抽出する構成のみが相違する。すなわち、第２実施例では、図１８に図示する通り、第１実施例の撮像部３に替えてフィルタ２０およびＡＤ変換器２１を備える。フィルタ２０は、コンポジットビデオ信号から３．５８ＭＨｚのカラーバースト信号をカットして輝度信号成分を抽出する。ＡＤ変換器２１は、このフィルタ２０から供給される輝度信号を、奇数フィールド走査および偶数フィールド走査のタイミングに同期してＡ／Ｄ変換し、輝度データａ（０）〜ａ（６９１１）を出力する。また、画像合成部２２は、コンポジットビデオ信号と画像制御ＶＤＰ６から出力されるオブジェクト画像とをスーパーインポーズして出力する。なお、図１８において、図１に示す第１実施例と共通する部分には、同一の番号を付し、その説明を省略するものとする。
【０１３８】
Ｆ．第２実施例の動作
ここでは、特に、外部から供給されるコンポジットビデオ信号から輝度データを算出する動作について詳述する。
コンポジットビデオ信号から抽出した各ブロック毎の平均輝度に基づいてなされる「光源位置算出処理」、「シェーディング係数処理」、「シェーディング（オブジェクト検出）処理」および「シェーディング（オブジェクトエディット）処理」は前述した第１実施例と同一だから、その詳細については省略する。
【０１３９】
（１）初期化／ＶＤＰ制御
第２実施例による画像処理装置に電源が投入されると、ＣＰＵ８はＲＯＭ９に記憶された制御プログラムを読み出してロードした後、図２２に示すメインルーチンを起動してステップＳＨ１に処理を進める。ステップＳＨ１では、画像制御ＶＤＰ６等の周辺デバイスに対してイニシャライズを指示する制御信号を供給する。続く、ステップＳＨ２では、ワークＲＡＭ１０に確保される各種レジスタ群をリセットしたり、初期値をストアしてイニシャライズする。
また、この時点でＣＰＵ８は画像データＲＯＭ１１にストアされる画像データ、すなわち、オブジェクト画像データＤＯＢ（あるいはバックグラウンド画像データＤＢＧ）および画像データＤＯＢの表示位置や表示色を指定するオブジェクトテーブルデータを画像表示用ＶＲＡＭ７側に一旦格納させるべくＤＭＡコントローラにＤＭＡ転送を指示する。この場合、転送元アドレス、転送バイト数および転送先アドレスからなる転送指示情報をＤＭＡコンローラにセットする。
【０１４０】
こうして周辺デバイスおよびワークエリアが初期化されると、ＣＰＵ８はステップＳＨ３に進み、画像表示用ＶＲＡＭ１１に格納されたオブジェクト画像データＤＯＢ（あるいはバックグラウンド画像データＤＢＧ）を読み出して画像制御ＶＤＰ６側に転送する。そして、ステップＳＨ４では読み出したオブジェクトテーブルデータを画像制御ＶＤＰ６側に転送する。次いで、ステップＳＨ５に進むと、Ａ／Ｄ変換器２１にバイアスレベルをゼロ点設定する等のイニシャルセットを施す。次に、ステップＳＨ６に進むと、ＣＰＵ８は、画像制御ＶＤＰ６に対して表示制御を開始させる旨の制御信号を与える。これにより、画像制御ＶＤＰ６は、オブジェクトテーブルデータで指定される表示位置／表示色のオブジェクト画像データＤＯＢを表示させるべく画像制御する。次いで、この後、ＣＰＵ８はステップＳＨ７に進み、輝度データ算出処理へ移行する。
【０１４１】
（２）輝度データ算出処理
ステップＳＨ７に進むと、ＣＰＵ８は図２３に示す輝度データ算出処理に移行してステップＳＪ１を実行する。まず、ステップＳＪ１では、レジスタＶｃ，Ｈｃ，Ｈｘ，Ｈｙおよびｂをそれぞれゼロリセットする。なお、これらレジスタにストアされる値については追って説明する。続いて、ステップＳＪ２に進むと、ＣＰＵ８はレジスタＶｃにストアされる垂直同期パルスカウンタ値が「２」以下、つまり、最初の１フレーム（画面）分の輝度データを抽出し終えたかどうかを判断する。ここで、最初の１フレームにおける奇数フィールド走査あるいは偶数フィールド走査がなされている時には、判断結果が「ＹＥＳ」となり、次のステップＳＪ３に処理を進める。
【０１４２】
ステップＳＪ３では、レジスタａの値をゼロリセットし、続く、ステップＳＪ４では、レジスタＣの値をゼロリセットする。そして、ステップＳＪ５に進むと、レジスタＶｃの値が「１」、すなわち、偶数フィールド走査であるか否かを判断する。ここで、最初の奇数フィールド走査である時には、判断結果が「ＮＯ」となり、ステップＳＪ６に進み、レジスタＨｙに走査ライン番号「１８」をセットする。
一方、レジスタＶｃの値が「１」となる偶数フィールド走査であれば、ここでの判断結果は「ＹＥＳ」となり、ステップＳＪ７に処理を進め、レジスタＨｙに走査ライン番号「４２」をセットする。
【０１４３】
次に、ステップＳＪ８では、レジスタＨｃの値が（Ｈｙ＋４８・Ｈｘ）以上であるか、つまり、垂直同期タイミングが奇数フィールド走査（あるいは偶数フィールド走査）のタイミングになるまで待機する。ここで、例えば、最初の奇数フィールド走査である時には、垂直同期パルスが第１８ラインに対応するまで待機する。そして、そのタイミングになった時点で、このステップＳＪ８の判断結果が「ＹＥＳ」となり、次のステップＳＪ９に処理を進める。
ステップＳＪ９では、レジスタＣにカウントされる水平駆動パルスＨＣが「６７」以上に達するまで待機し、カウント値が「６７」未満の時には判断結果が「ＮＯ」となり、ステップＳＪ１０に進む。ステップＳＪ１０では、レジスタＣのカウント値を１インクリメントしてステップＳＪ９に処理を戻す。
【０１４４】
そして、いま、例えば、レジスタＣの値が「６７」に達すると、上記ステップＳＪ９の判断結果が「ＹＥＳ」となり、ステップＳＪ１１に進み、対応する走査ラインの輝度信号をＡ／Ｄサンプリングして輝度データを生成する。次いで、ステップＳＪ１２では、このＡ／Ｄサンプリングされた輝度データをレジスタＹｃ（ａ）にストアする。
次に、ステップＳＪ１３では、レジスタＣの値が「３５５」より大であるかどうかを判断する。すなわち、１走査ライン分の輝度信号をＡ／Ｄサンプリングしたか否かを判断している。ここで、１走査ライン分のサンプリングが完了していない場合には、判断結果が「ＮＯ」となり、ステップＳＪ１４，ＳＪ１５を実行してレジスタａ，Ｃの値を１インクリメントして歩進させ、再びステップＳＪ１２に処理を戻す。一方、１走査ライン分２８８ドットの輝度データをサンプリングし終わった時点で、上記ステップＳＪ１３の判断結果が「ＹＥＳ」となり、次のステップＳＪ１６に処理を進める。
【０１４５】
ステップＳＪ１６に進むと、ＣＰＵ８は、垂直同期パルスの累算値がストアされるレジスタＨｃの値が（Ｈｙ＋４８・Ｈｘ＋２４）を満たすタイミングにあるか否か、すなわち、２４ライン分の走査が完了したか否かを判断する。ここで、２４ライン分の走査が完了していない時には、判断結果が「ＮＯ」となり、ステップＳＪ１７に進み、レジスタＣをゼロリセットした後、ステップＳＪ１２に処理を戻して引続き輝度データをサンプリングする。
一方、２４ライン分の走査が完了すると、ステップＳＪ１６の判断結果が「ＹＥＳ」となり、図２４に示すステップＳＪ１８に処理を進める。ステップＳＪ１８では、レジスタＸ，Ｙ，Ｙｃｃをそれぞれゼロリセットする。
【０１４６】
次いで、ステップＳＪ１９では、サンプリングされ、レジスタＹｃ（ａ）に格納された２８８ドット×２４ラインの輝度データを３２ドット毎のブロックに９分割すべくレジスタａの値を判断する。つまり、２８８＊Ｙ＋３２＊Ｘ≦ａ＜２８８＊Ｙ＋３２＊（Ｘ＋１）なる条件を満たすかどうかを判断する。ここで、レジスタａの値がこの条件を満足する時には、判断結果は「ＹＥＳ」となり、次のステップＳＪ２０に進む。ステップＳＪ２０では、レジスタＹｃｃ（ｂ）にレジスタＹｃ（ａ）の輝度データを累算して行く。つまり、１ブロック３２ドット分の輝度データを累算する。そして、この後、ステップＳＪ２１に進み、レジスタａの値を１インクリメントして歩進させる。
【０１４７】
次に、ステップＳＪ２２に進むと、レジスタＹの値が「２５」以上、つまり、２４ライン分の輝度データをブロック分割し終えたか否かを判断する。ここで、ブロック分割が完了していない時には、判断結果が「ＮＯ」となり、上述したステップＳＪ１９に処理を戻し、再度、輝度データを３２ドット毎のブロックに９分割すべくレジスタａの値を判断する。そして、上述したステップＳＪ１９において、分割条件が満たされない時には、判断結果が「ＮＯ」となり、ステップＳＪ２３に進み、レジスタＹの値を１インクリメントすると共に、レジスタＸの値をゼロリセットし、かつ、レジスタａの値に「２８８」を加算する。つまり、ブロック分割するラインを更新する。
【０１４８】
こうして走査ライン毎の輝度データを逐次３２ドット毎のブロックに分割し、これが２４ライン分なされると、上述したステップＳＪ２２の判断結果が「ＹＥＳ」となり、ＣＰＵ８はステップＳＪ２４に処理を進める。ステップＳＪ２４では、レジスタＹｃｃ（ｂ）に格納されたブロック毎の輝度累算値を総ドット数（３２＊２４）で除算し、ブロック毎の平均輝度を求め、これをレジスタＹｃｃ（ｂ）にストアし直す。次いで、ステップＳＪ２５に進むと、レジスタｂの値を１インクリメントする。続いて、ステップＳＪ２６では、レジスタＸの値が「９」以上、すなわち、１ブロックラインの平均輝度を算出し終えたか否かを判断する。ここで、１ブロックライン分の処理が完了していない時には、判断結果が「ＮＯ」となり、ステップＳＪ２７に処理を進める。
【０１４９】
ステップＳＪ２７では、次のブロックへ処理を移すべく、レジスタＹの値をゼロリセットする一方、レジスタＸの値を歩進させ、レジスタａに「３２＊Ｘ」をセットして前述したステップＳＪ１９に処理を戻す。
これに対し、２４ラインの輝度データをブロック化し、各ブロック毎の平均輝度を算出し終えた場合には、ステップＳＪ２６の判断結果が「ＹＥＳ」となり、ステップＳＪ２８に進む。ステップＳＪ２８に進むと、ＣＰＵ８は、レジスタＨｘの値を１インクリメントし、２８８ドット×２４ラインからなるフィールド走査が完了した旨を表わす。
【０１５０】
そして、ステップＳＪ２９に進むと、ブロック分割する際のＸ，Ｙポインタ、つまり、レジスタＸ，Ｙの値をゼロリセットし、次のステップＳＪ３０に処理を進める。ステップＳＪ３０では、レジスタＨｘが「３」より小さいか否か、すなわち、１画面分の輝度データ（２８８ドット×１９２ライン）分の平均輝度算出が完了したか否かを判断する。ここで、レジスタＨｘが「３」より小さい場合には、１画面分の平均輝度算出が完了していないので、判断結果は「ＹＥＳ」となり、図２３に示すステップＳＪ２に処理を戻す。
一方、１画面分の平均輝度算出が完了した時には、判断結果が「ＮＯ」となり、ステップＳＪ３１に処理を進め、レジスタＨｘの値をゼロリセットする。次いで、ステップＳＪ３２に進み、垂直同期パルスを検出する迄待機し、当該パルスを検出した時点で判断結果が「ＹＥＳ」となり、前述したステップＳＪ２に処理を戻す。
【０１５１】
そして、ステップＳＪ２では、レジスタＶｃの値が「２」以下であるかどうか判断する。１フレーム（画面）分の平均輝度算出が完了していない状態では、レジスタＶｃの値が「２」以下であるから、判断結果が「ＹＥＳ」となり、以上説明した過程を繰り返す。これに対し、１フレーム（画面）分の平均輝度算出が完了した時には、レジスタＶｃの値が「２」より大となり、ここでの判断結果が「ＮＯ」となり、図２５に示す一連のシェーディング処理を実行する。
【０１５２】
このように、第２実施例による輝度データ算出処理にあっては、コンポジットビデオ信号をフィルタリングして得られる輝度信号に対し、フィールド走査に同期して２４ライン分をＡＤサンプリングする。ＡＤサンプリングされた２４ライン分の輝度データａ（０）〜ａ（６９１１）（図１９参照）をＸ方向に９分割してなるブロック毎の平均輝度を算出し、その結果をラインブロック毎にメモリに記憶する。そして、こうした２４ライン分の処理がなされるフィールド走査を、奇数フィールド走査と偶数フィールド走査とにわたって行い１フレーム分の平均輝度を得るようにしている。
【０１５３】
（３）シェーディング処理
以上のようにして１フレーム（画面）分の平均輝度算出が完了すると、図２５に示す一連のシェーディング処理がなされる。
すなわち、前述した第１実施例と同様に、先ず各ブロック毎の平均輝度に基づいてそのフレームにおける高輝度ブロックと低輝度ブロックとを求める（ステップＳＫ１）。そして、求めた高輝度ブロックと低輝度ブロックとに応じて光源の方向を定め、定めた光源方向に応じたシェーディング領域を判定する（ステップＳＫ２）。続いて、当該シェーディング領域のシェーディング係数を算出する（ステップＳＫ３）。
【０１５４】
次に、シェーディング領域に位置するオブジェクト画像を検出し（ステップＳＫ４）、検出したオブジェクト画像毎にシェーディング方向Ｅｃとシェーディング率Ｅとを定める（ステップＳＫ５）。そして、オブジェクト画像の大きさにシェーディング率Ｅを乗算して当該オブジェクト画像中のシェーディング領域を求め、求めた領域においてオブジェクト画像の階調をシェーディング方向に対応して「白色」から「黒色」へ順次低減され、これによりシェーディングが付与される（ステップＳＫ６）。そして、この後、ＣＰＵ８は図２３に示す輝度データ算出処理のステップＳＪ１に処理を戻す。
【０１５５】
（４）割込み処理
次に、所定周期毎に割込み実行されて垂直同期パルスおよび水平駆動パルスをカウントする割込み処理について図２６を参照して説明する。
所定周期毎にこの処理が実行されると、ＣＰＵ８はステップＳＬ１に処理を進め、垂直同期パルスＶ−ＳＹＮＣを検出したか否かを判断する。ここで、垂直同期パルスＶ−ＳＹＮＣを検出すると、判断結果が「ＹＥＳ」となり、次のステップＳＬ２に進む。一方、垂直同期パルスＶ−ＳＹＮＣを検出しなかった時には、判断結果が「ＮＯ」となり、ステップＳＬ２に進む。ステップＳＬ２では、レジスタＶｃの値を１インクリメントして歩進させる。
次いで、ステップＳＬ３では、水平駆動パルスＨＣを検出したかどうかを判断し、検出しなかった時には、この割込み処理を完了してメインルーチンに復帰する。一方、検出した時には、レジスタＨｃの値を１インクリメントし、その後にメインルーチンに復帰する。
【０１５６】
以上説明したように、第２実施例によれば、フィールド走査に同期してコンポジットビデオ信号から直接的に輝度信号を抽出し、抽出した輝度信号に基づいて１画面分の平均輝度を発生するので、第１実施例のように撮像部３や画像処理ＤＳＰ５を備えずとも、リアルタイムに近い状態でシェーディング処理を施すことが可能になる。また、第２実施例においては、２４ライン走査分の輝度データをストアするメモリを時分割的に用いているため、大容量のフレームメモリを必要とせず、メモリ容量の節約も実現している。
【０１５７】
また、本発明による第１および第２実施例におけるシェーディング処理では、シェーディング領域にある各ドット毎に計算を施しているが、これに替えて、例えば、球などの左右対象体では、光源方向を境として一方側の領域での陰影濃度を求め、これを他方側の領域へ写像することも可能である。このようにすることで、シェーディング処理に要する計算量が半減し、より高速な処理が実現し得る。さらに、上述した各実施例にあっては、光源方向を２次元上の８方向に限定したが、これに限らず、光源方向を３次元位置として定め、これに応じたシェーディングを付与することも可能である。
【０１５８】
【発明の効果】
本発明によれば、輝度情報抽出手段が撮像された実画像の輝度情報をフレーム毎に抽出すると、平均輝度発生手段が抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出し、シェーディング条件発生手段がこの平均輝度発生手段により得られた各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生する。そして、シェーディング付与手段が実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合、前記シェーディング条件発生手段によって発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するので、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現することができる。
また、本発明によれば、撮像された実画像の輝度情報を輝度情報抽出ステップにてフレーム毎に抽出すると、平均輝度発生ステップにおいてこの輝度情報抽出ステップにて抽出された１フレーム分の輝度情報を所定画素領域のブロックで面分割し、面分割された複数のブロック毎の平均輝度を算出する。そして、シェーディング条件発生ステップがこの各ブロックの平均輝度の内、最も高輝度のブロック位置と最も低輝度のブロック位置とからシェーディング領域を判定すると共に、当該シェーディング領域に含まれる各ブロックのシェーディング方向およびシェーディング率を発生すると、前記実画像上にスーパーインポーズされるオブジェクト画像の表示位置が前記シェーディング領域内に位置する場合には、シェーディング付与ステップが前記シェーディング条件発生ステップにて発生された当該オブジェクト画像の表示位置に対応するブロックのシェーディング方向およびシェーディング率に応じて前記オブジェクト画像にシェーディングを付与するので、時々刻々変化する実画像に対応してオブジェクト画像を簡易的に写実表現することができる。
【図面の簡単な説明】
【図１】本発明の第１実施例による画像処理装置の電気的構成を示すブロック図である。
【図２】第１実施例における撮像部３の構成を示すブロック図である。
【図３】第１実施例における輝度データＤｙの記憶形態を説明するためのメモリマップである。
【図４】第１実施例における光源方向を説明するための図である。
【図５】第１実施例による初期化／ＶＤＰ制御処理の動作を説明するためのフローチャートである。
【図６】第１実施例による輝度データ算出処理の動作を説明するためのフローチャートである。
【図７】第１実施例による光源位置算出処理の動作を説明するためのフローチャートである。
【図８】第１実施例によるシェーディング係数処理の動作を説明するためのフローチャートである。
【図９】第１実施例による３Ｄシェーディング（オブジェクト検出）処理の動作を説明するためのフローチャートである。
【図１０】第１実施例による３Ｄシェーディング（オブジェクトエディット）処理の動作を説明するためのフローチャートである。
【図１１】第１実施例による３Ｄシェーディング（オブジェクトエディット）処理の動作を説明するためのフローチャートである。
【図１２】第１実施例による３Ｄシェーディング（オブジェクトエディット）処理の動作を説明するためのフローチャートである。
【図１３】第１実施例による３Ｄシェーディング（オブジェクトエディット）処理の動作を説明するためのフローチャートである。
【図１４】第１実施例による３Ｄシェーディング（オブジェクトエディット）処理の動作を説明するためのフローチャートである。
【図１５】第１実施例による３Ｄシェーディング（オブジェクトエディット）処理の動作を説明するためのフローチャートである。
【図１６】シェーディングを施す以前のオブジェクト画像の一例を、ディスプレー上に表示した中間調画像として撮像した写真である。
【図１７】第１実施例によるシェーディングを施したオブジェクト画像の一例を、ディスプレー上に表示した中間調画像として撮像した写真である。
【図１８】第２実施例による画像処理装置の構成を示すブロック図である。
【図１９】第２実施例による輝度データのサンプリング形態を説明するためのメモリマップである。
【図２０】第２実施例による輝度データのサンプリング形態を説明するための垂直／水平走査タイミング図である。
【図２１】第２実施例による飛越し走査を説明するための図である。
【図２２】第２実施例による初期化／ＶＤＰ制御処理の動作を説明するためのフローチャートである。
【図２３】第２実施例による輝度データ算出処理の動作を説明するためのフローチャートである。
【図２４】第２実施例による輝度データ算出処理の動作を説明するためのフローチャートである。
【図２５】第２実施例に適用される第１実施例のシェーディング処理の動作概要を示すフローチャートである。
【図２６】第２実施例による割込み処理の動作を示すフローチャートである。
【符号の説明】
１  ＣＣＤカメラ
２  画像出力エンコーダ
３  撮像部（輝度情報抽出手段）
４  映像出力アンプ
５  画像処理ＤＳＰ
６  画像制御ＤＳＰ
７  画像表示用ＶＲＡＭ
８  ＣＰＵ（平均輝度発生手段、シェーディング条件発生手段、シェーディング付与手段）
９  プログラムＲＯＭ
１０  ワークＲＡＭ（平均輝度発生手段）
１１  画像データＲＯＭ
【図１】
0003630187.tif 000002
【図２】
0003630187.tif 000003
【図３】
0003630187.tif 000004
【図４】
0003630187.tif 000005
【図５】
0003630187.tif 000006
【図６】
0003630187.tif 000007
【図７】
0003630187.tif 000008
【図８】
0003630187.tif 000009
【図９】
0003630187.tif 000010
【図１０】
0003630187.tif 000011
【図１１】
0003630187.tif 000012
【図１２】
0003630187.tif 000013
【図１３】
0003630187.tif 000014
【図１４】
0003630187.tif 000015
【図１５】
0003630187.tif 000016
【図１６】
0003630187.tif 000017
【図１７】
0003630187.tif 000018
【図１８】
0003630187.tif 000019
【図１９】
0003630187.tif 000020
【図２０】
0003630187.tif 000021
【図２１】
0003630187.tif 000022
【図２２】
0003630187.tif 000023
【図２３】
0003630187.tif 000024
【図２４】
0003630187.tif 000025
【図２５】
0003630187.tif 000026
【図２６】
0003630187.tif 000027