以下、本発明の実施形態を、図面を参照しながら説明する。なお、以下の説明における様々な細部の特定ないし実例および数値や文字列その他の記号の例示は、本発明の思想を明瞭にするための、あくまでも参考であって、それらのすべてまたは一部によって本発明の思想が限定されないことは明らかである。また、周知の手法、周知の手順、周知のアーキテクチャおよび周知の回路構成等(以下「周知事項」)についてはその細部にわたる説明を避けるが、これも説明を簡潔にするためであって、これら周知事項のすべてまたは一部を意図的に排除するものではない。かかる周知事項は本発明の出願時点で当業者の知り得るところであるので、以下の説明に当然含まれている。
<利用例>
図1は、本実施形態の利用例図である。なお、ここでは、プレゼンテーションでの利用例を示すが、これは、利用可能な例の一つに過ぎない。
この図において、ユーザ1の手には発光ユニット2が握られており、発光ユニット2から照射されたスポット光3によって形成される光点4がスクリーン5の任意の位置に映し出されているとともに、このスクリーン5には、さらに、プロジェクタ6から照射された拡大投影光7による矩形状領域(以下、投影領域8という)も映し出されている。プロジェクタ6には、必要に応じ、ケーブル9を介してパーソナルコンピュータ13からのカーソル11を含む画面情報12が入力されるようになっており、プロジェクタ6は、パーソナルコンピュータ13の画面14に表示されているカーソル11′と同一のカーソル11を含む画面情報12を拡大投影光7に乗せてスクリーン5に投影する。但し、後述するようにスポット光3は可視領域外の波長の光であり、光点4は人の目には見えない。この光点4は、後述の撮影装置15で撮像した際に始めて“映し出されている”ことが分かるようになっている。
パーソナルコンピュータ13には、ケーブル12を介してビデオカメラやデジタルカメラ等の撮影装置15が接続されている。撮影装置15の撮影範囲16は、少なくともスクリーン5の全体を包含する大きさであり、望ましくはプロジェクタ6の投影領域8の全体をカバーする大きさであるが、厳密さは求められない。ユーザ1の視界から大きく逸脱するなど、極端にスクリーン5や投影領域8から外れていなければよく、大凡の位置及び大きさであればよい。
なお、撮影装置15の撮影条件(焦点距離、ズーム倍率及び絞りなど)については、通常のカメラ撮影と同様に、被写体(スクリーン5)からの距離やその場所の明るさなどを考慮して最適に設定すべきことは当然である。
ここで、詳細な説明に入る前に、この利用例における本実施形態特有の操作について、その概要を説明する。まず、ユーザ1は、自らの手で(又は第三者の手を借りて)、スクリーン5の展開、プロジェクタ6や撮影装置15の設置及び所要の調整等を行い、次いで、パーソナルコンピュータ13とそれらの撮影装置15及びプロジェクタ6との間をケーブル9、12で接続する。そして、パーソナルコンピュータ13を起動してプレゼンテーション資料を表示可能にした後、発光ユニット1を直ぐに持てるように準備してプレゼンテーション開始の時間までスタンバイする。
なお、言うまでもなく、それらの諸設備(スクリーン5やプロジェクタ6及びパーソナルコンピュータ13並びに撮影装置15など)を常設している会場では、ユーザ1は、単にプレゼンテーション資料が収められたリムーバルメディアをパーソナルコンピュータ13にセットし、若干の機器調整を行った後、発光ユニット1を直ぐに持てるように準備してプレゼンテーション開始の時間までスタンバイすればよい。
プレゼンテーションが開始されると、ユーザ1は、事前に用意したシナリオに従って、パーソナルコンピュータ13を操作しながらプレゼンテーションを進めるが、この間、本実施形態にあっては、パーソナルコンピュータ13(及びそれに付属したマウスやキーボード等の既存の入力装置)に一切手を触れる必要はない。
以下に説明するように、発光ユニット2には、既存のマウス操作に必要ないくつかのボタンが設けられており、それらのボタンを適宜に押すことによって、マウスカーソルの移動操作、左右クリック操作及びドラッグ操作を遠隔で行えるようになっているからである。
これらの操作“コマンド”(既存のマウスコマンドに置き換わるもの)は、最終的に撮影装置15で作られる。撮影装置15は、撮影範囲16の画像を所定のフレームレート(撮影間隔:典型的には毎秒30フレーム)で継続的に撮影し、それらのフレーム画像を処理して当該撮影範囲16の中に光点4(発光ユニット2から照射されたスポット光3によって形成される光点4)を検出すると、その光点4の点滅パターンを特定し、そのパターンに対応したコマンドを生成してパーソナルコンピュータ13に送出する。
したがって、この概要説明から理解されるように、本実施形態においては、発光ユニット2のボタンを操作するだけで、パーソナルコンピュータ13の操作に必要な複数のマウスコマンド(本実施形態では、カーソル移動、左クリック、右クリック及びドラッグの4つのコマンドを例とする)を発生することができ、プレゼンテーションを行ったままでパーソナルコンピュータ13を遠隔操作することができる。したがって、第二の従来技術のような“一部”のみの課題達成ではなく、冒頭の課題を完全に達成することができる。しかも、光を使用しているため、第一の従来技術におけるような電波特有の不都合もまったくない。
次に、本実施形態の詳細な説明に入る。
<発光ユニット2の構成と動作>
図2は、発光ユニット2の外観図及びスイッチの拡大図である。この図において、発光ユニット2は、手持ちに適した形状(ここでは円筒状とするが、これは一例である)のケース20と、ケース20の底部を閉鎖可能なキャップ21と、このキャップ21を取り外してケース20の内部に挿入されるバッテリ22と、ケース20の内部に組み込まれた電子ユニット23と、ケース20の先端部に若干量の縮退調整を可能にして取り付けられた光学部24と、その光学部24に内蔵された発光部25と、ケース20の操作しやすい位置に設けられた電源スイッチ26及び操作スイッチ27とを備える。
ここで、発光部25は、可視領域外の波長の光、すなわち人の目には見えない光を発生する発光素子25aを備える。発光素子25aには充分な光量を持つもの(光パワーの大きなもの)を使用する。1個の発光素子25aで光パワーが不足するときには、図示のように複数の発光素子25aを並べてもよい。
光パワーと同等若しくはそれ以上に重要な点は、発光素子25aの応答速度である。可能な限り高速なものを選ぶことが望ましいが、それが難しければ、少なくとも充分な分解能で後述のパターン点滅を行うことができる程度のものを選定しなければならない。応答速度が遅いと、それに合わせてゆっくりとした点滅しかできなくなり、それだけパターンの情報量が少なくなるからである。または、所要量の情報を送るのに長い時間がかかるからである。この点において、LED(Light Emitting Diode)は、フィラメント式の発光素子に比べて応答速度が格段に速く、しかも可視領域外の充分なパワーをもつ素子も安価に手にはいるから、本実施形態の発光素子25aに相応しい。但し、発明の思想上は、フィラメント式の発光素子を排除しない。可視領域外の充分なパワーの光を発生し、且つ、必要充分な応答速度を満たしたものであれば、本実施形態の発光素子25aに何ら不都合なく使用できるからである。
上記の“可視領域外の波長の光”は、撮影装置15で撮影可能な波長領域の光でなければならない。この点において、既存のビデオカメラやデジタルカメラの多くは、可視領域はもちろんのこと、可視領域外の“赤外域”までの撮像感度を有する撮像デバイスを備えているため、上記の“可視領域外の波長の光”は、赤外光とみなすことが現実的である。したがって、以下の説明では、上記の“可視領域外の波長の光”を“赤外光”とすることにする。但し、発明の思想上は、これ(赤外光)に限定しない。撮影装置15で撮影でき、且つ、人の目には見えない波長域の光であればよい。
ケース20の先端部に取り付けられた光学部24は、上記のとおり、若干量の縮退調整を可能にしている。これは、内部のレンズ24aと発光素子25aとの距離を加減することにより、スポット光3の広がり(α)を所定の幅で調整できるようにしているからである。これにより、スクリーン5に映し出される光点4の直径を大きくしたり小さくしたり自由に加減することができる。
但し、光点4の元になる発光素子25aからのスポット光3は、人の目に見えない赤外光であるから、目視しながら光点4の大きさを変えることはできない。この対策としては、たとえば、ケース20の表面に予め距離と光点4の大きさの関係から割り出した距離スケール20aを刻印又は印刷しておき、使用する際にスクリーン5までの目測距離と距離スケール20aの目盛りとを一致させるように光学部24の縮退量を調整してもよい。
なお、光学部24の縮退調整機構は、単純なスライド式であってもよいが、不用意なスライドを防止するために、ねじ込み式としておくことが望ましい。つまり、光学部24とケース20の両接触面に螺旋状のネジ溝を切っておき、光学部24を回転させることによって、その縮退量を調節できるようにしておくことが好ましい。光学部24の不用意な動きを防止できる上、縮退量の微妙な調整も可能になる。
操作スイッチ27は、シーソー型の押しボタン27aを有しており、この押しボタン27aの前方を「A」、後方を「B」と言うことにすると、A、Bいずれも押されていない状態(b)、Aが押された状態(c)、Bが押された状態(d)の三つの操作状態を定義することができる。また、それらに加えて、Aが押された状態(c)でも、その時間の長短によって「短押し」と「長押し」の二つの状態を定義することができる。
以下、A、Bいずれも押されていない状態を「カーソル移動操作」に割り当てるものとし、Aが短く押された状態を「左クリック操作」に割り当てるものとし、Aが長く押された状態を「ドラッグ操作」に割り当てるものとし、Bが押された状態を「右クリック操作」に割り当てるものとする。なお、これらの割り当ては説明のための一例に過ぎず、操作性を十二分に吟味した結果ではない。また、マウス操作は、上記例示の操作だけでなく、たとえば、ダブルクリック操作もある。ダブルクリック操作も加えるのであれば、あるいは、上記例示操作のいずれかと入れ替えるのであれば、スイッチの構造を変更したり又は操作方法を変えるなどして柔軟に対応すればよい。
図3は、発光ユニット2の電気的な構成図である。この図において、操作スイッチ27は、支点27bを軸にして所定量だけ揺動可能な押しボタン27aと、その押しボタン27aの前方(「A」)の直下に設けられた第1マイクロスイッチ27cと、その押しボタン27aの後方(「B」)の直下に設けられた第2マイクロスイッチ27dとを備える。第1マイクロスイッチ27cの一方端子には電源スイッチ26を介してバッテリ22からの電圧Vccが加えられており、同様に、第2マイクロスイッチ27dの一方端子にも電源スイッチ26を介してバッテリ22からの電圧Vccが加えられている。
第1及び第2マイクロスイッチ27c、27dの他方端子からは、それぞれ信号S1、S2が取り出されている。これらの信号S1、S2は、通常は抵抗R1、R2を通してグランドに落ちて(プルダウンされて)おり、グランド電位(0V、以下、ローレベルという)になっているが、それらのスイッチが押し下げ操作(押しボタン27aの「A」又は「B」の押し下げ操作)されたときには、オン接点を介して一方端子の電位(Vcc)が取り出されるようになっている。この場合、信号S1、S2は、Vccの電位(以下、ハイレベルという)に変化する。
電子ユニット23は、特にそれに限定しないが、たとえば、CPU23a、ROM23b、RAM23c及び入出力部23dなどを含むワンチップMPU(Micro Processing Unit)で構成されている。ROM23bには、この発光ユニット2の動作に必要な制御プログラムが収められており、CPU23aは、この制御プログラムをRAM23cにロードして実行することにより、操作スイッチ27からの信号S1、S2の読み込み処理、それらの信号S1、S2の状態判定処理、その判定結果に応じたパターン系列の選択処理、及び、選択されたパターン系列に対応した制御波形C1の生成処理などを行う。
駆動部28は、電子ユニット23からの制御波形C1を受け取り、バッテリ22の電圧Vccをその制御波形C1で変調した駆動電圧P1を作り、その駆動電圧P1で発光部25の発光素子25aを高速駆動する。
図4は、電子ユニット23のCPU23aで実行される制御プログラムのフローチャートを示す図である。発光ユニット2の電源スイッチ26をONにすると、電子ユニット23にバッテリ22からの電源圧(Vcc)が供給される。CPU23aは、この電源供給に応答して、所定のエラーチェックや初期設定処理等を行った後、ROM23bからRAM23cに制御プログラムをロードして、そのプログラムの実行を開始する。
この制御プログラムにおいては、まず、操作スイッチ27からの信号S1、S2の状態を判定する(ステップS10)。ここでは、操作スイッチ27の押しボタン27aの前方「A」又は後方「B」のいずれか一方が押されているか否かを判定する。前記のとおり、操作スイッチ27からの信号S1、S2は、いずれも通常はローレベルにあるが、押しボタン27aの前方「A」が押されると信号S1がローレベルからハイレベルに変化し、また、押しボタン27aの後方「B」が押されると信号S2がローレベルからハイレベルに変化するから、このステップS10では、信号S1、S2のいずれか一方がハイレベルであるか否かを判定していることになる。
そして、ステップS10の判定結果が否定(“NO”)の場合、すなわち、操作スイッチ27の押しボタン27aの前方「A」又は後方「B」のいずれも押されていない場合は、前記の定義より、「カーソル移動操作」であると判断し、この場合はカーソル移動処理(ステップS11)を実行する。
一方、ステップS10の判定結果が肯定(“YES”)の場合、すなわち、操作スイッチ27の押しボタン27aの前方「A」又は後方「B」のいずれかが押された場合は、前記の定義より、「カーソル移動操作」以外の操作(「左クリック操作」、「ドラッグ操作」又は「右クリック操作」)のどれかであると判断し、これらを分離するために、まず、信号S2がハイレベルであるか否かを判定する(ステップS12)。
そして、その判定結果が肯定の場合、すなわち、操作スイッチ27の押しボタン27aの後方「B」が押された場合は、前記の定義より、「右クリック操作」であると判断し、この場合は右クリック処理(ステップS13)を実行する。
又は、ステップS12の判定結果が否定の場合、すなわち、操作スイッチ27の押しボタン27aの前方「A」が押された場合は、前記の定義より、「左クリック操作」又は「ドラッグ操作」のどれかであると判断し、これらを分離するために、まず、ハイレベル期間を計測してその計測結果を変数STにセット(ステップS14)した後、続けて、ST<T1であるか否かを判定する(ステップS15)。ここで、T1は数十ミリ秒程度の短めの基準時間である。この基準時間T1は、ユーザ1のクセ(クリック操作の遅早)に合わせて調整できるようにしておくことが望ましい。
ST<T1の場合、すなわち、操作スイッチ27の押しボタン27aの前方「A」が短く押された場合は、前記の定義より、「左クリック操作」であると判断し、この場合は左クリック処理(ステップS16)を実行する。又は、ST<T1でない場合、すなわち、操作スイッチ27の押しボタン27aの前方「A」が長く押された場合は、前記の定義より、「ドラッグ操作」であると判断し、この場合はドラッグ処理(ステップS17)を実行する。
次に、カーソル移動処理、左クリック処理、右クリック処理及びドラッグ処理を説明する。
<カーソル移動処理>
図5は、カーソル移動処理の概略的なフローチャートを示す図である。このフローチャートでは、予めカーソル移動操作に割り当てられたnビットのパターン系列(以下、第一のパターン系列といい、ここでは、n=4として“1010”のパターン系列とする)をROM23bから読み込み(ステップS11a)、次いで、その第一のパターン系列に基づく1単位の制御波形C1を生成し(ステップS11b)、最後に、その制御波形C1を駆動部28に出力(ステップS11c)した後、図4の制御プログラムに復帰するという一連の処理を実行する。
ここで、第一のパターン系列の論理1の区間(制御波形C1のハイレベル区間)は、発光部25の“点灯”区間となり、また、第一のパターン系列の論理0の区間(制御波形C1のローレベル区間)は、発光部25の“消灯”区間になる。
なお、一般的に“点灯”と“消灯”はその言葉どおり、明かりがついている状態と消えている状態のことをいうが、本明細書ではこの解釈に限定されない。“高輝度”と“低輝度”と解釈してもよい。つまり、“点灯”を明るく光っている状態、“消灯”を暗く光っている状態と言い換えても構わない。
駆動部28は、この制御波形C1に同期した周期で高電位(Vcc)と低電位(0V)を繰り返す駆動電圧P1を作り、その駆動電圧P1で発光部25を駆動する。これにより、発光部25の発光素子25aは、第一のパターン系列の論理1区間で点灯し、論理0区間で消灯するという動作を繰り返す。
このように、カーソル移動処理を実行することにより、発光部25の発光素子25aを、第一のパターン系列(1010)に従って、「点灯」→「消灯」→「点灯」→「消灯」の順番で点滅させることができる。なお、この点滅は途中で終了することはない。カーソル移動処理を1回実行する度に必ず1単位の点滅(「点灯」→「消灯」→「点灯」→「消灯」)が行われ且つ完結するようになっている。但し、このカーソル移動処理は、押しボタン27aがどこも押されていない間、繰り返し実行されるため、実際には、その間、「点灯」→「消灯」→「点灯」→「消灯」を1単位にして、その単位が延々と繰り返される。
制御波形C1の各区間の長さをTSLOTで表すことにする。TSLOTは各区間において等長であり、区間の数は第一のパターン系列のビット数nに等しいから、1単位の制御波形C1の全長は「n×TSLOT」になる。TSLOTは、撮影装置15の1フレームの長さ(TFRAME )の2倍と等しく(TSLOT=2×TFRAME )なるように予め設定されている。このこと(TSLOT=2×TFRAME )は、他の処理(右クリック処理、左クリック処理及びドラッグ処理)においても同様である。
<右クリック処理>
図6は、右クリック処理の概略的なフローチャートを示す図である。このフローチャートでは、予め右クリック操作に割り当てられたnビットのパターン系列(以下、第二のパターン系列といい、ここでは、n=4として“1110”のパターン系列とする)をROM23bから読み込み(ステップS13a)、次いで、その第二のパターン系列に基づく1単位の制御波形C1を生成し(ステップS13b)、最後にその制御波形C1を駆動部28に出力(ステップS13c)した後、図4の制御プログラムに復帰するという一連の処理を実行する。
この右クリック処理においては、瞬間的な右クリック操作が行われる場合を想定して、制御波形C1の出力を所定回繰り返す仕組みを入れておく(ステップS13d)。瞬間的な右クリック操作が行われると、発光部25の点滅が「点灯」→「点灯」→「消灯」→「消灯」の1単位で終わってしまう可能性があり、万が一、撮影装置15でパターンの誤認識(点灯を消灯と誤認し又は消灯を点灯と誤認)を招いたときに対処のしようがないからである。制御波形C1の出力を所定回(所定単位数)繰り返すようにしておけば、仮に、瞬間的な右クリック操作が行われたときであっても、その回数だけ「点灯」→「点灯」→「消灯」→「消灯」の単位が繰り返されるため、仮に、ある単位の点灯を消灯と誤認し又は消灯を点灯と誤認したとしても、次単位で正しく認識しなおすことができるからである。
前記のカーソル移動処理と同様に、第二のパターン系列の論理1の区間(制御波形C1のハイレベル区間)は、発光部25の“点灯”区間となり、また、第二のパターン系列の論理0の区間(制御波形C1のローレベル区間)は、発光部25の“消灯”区間になる。駆動部28は、この制御波形C1に同期した周期で高電位(Vcc)と低電位(0V)を繰り返す駆動電圧P1を作り、その駆動電圧P1で発光部25を駆動する。これにより、発光部25の発光素子25aは、第二のパターン系列の論理1区間で点灯し、論理0区間で消灯するという動作を繰り返す。
このように、右クリック処理を実行することにより、発光部25の発光素子25aを、第二のパターン系列(1110)に従って、「点灯」→「点灯」→「点灯」→「消灯」の順番で点滅(カーソル移動処理とは点滅のパターンが異なっていることに留意)させることができる。なお、上記のカーソル移動処理と同様に、この点滅も途中で終了することはない。右クリック処理を1回実行する度に必ず1単位の点滅(「点灯」→「点灯」→「点灯」→「消灯」)が行われ且つ完結するようになっている。但し、この右クリック処理では、1単位だけでは完結しない。必ず、数単位(ステップS13dの所定回参照)の点滅で完結するようになっている。たとえば、“所定回”を3とすると、「点灯」→「点灯」→「点灯」→「消灯」の単位を3単位繰り返した後、完結する。
<左クリック処理>
図7は、左クリック処理の概略的なフローチャートを示す図である。このフローチャートでは、予め左クリック操作に割り当てられたnビットのパターン系列(以下、第三のパターン系列といい、ここでは、n=4として“1100”のパターン系列とする)をROM23bから読み込み(ステップS16a)、次いで、その第三のパターン系列に基づく1単位の制御波形C1を生成し(ステップS16b)、その制御波形C1を駆動部28に出力(ステップS16c)した後、図4の制御プログラムに復帰するという一連の処理を実行する。
この左クリック処理においても、先の右クリック処理と同様に、制御波形C1の出力を所定回繰り返す仕組みを入れておく(ステップS16d)。
前記のカーソル移動処理や右クリック処理と同様に、第三のパターン系列の論理1の区間(制御波形C1のハイレベル区間)は、発光部25の“点灯”区間となり、また、第三のパターン系列の論理0の区間(制御波形C1のローレベル区間)は、発光部25の“消灯”区間になる。駆動部28は、この制御波形C1に同期した周期で高電位(Vcc)と低電位(0V)を繰り返す駆動電圧P1を作り、その駆動電圧P1で発光部25を駆動する。これにより、発光部25の発光素子25aは、第三のパターン系列の論理1区間で点灯し、論理0区間で消灯するという動作を繰り返す。
このように、左クリック処理を実行することにより、発光部25の発光素子25aを、第三のパターン系列(1100)に従って、「点灯」→「点灯」→「消灯」→「消灯」の順番で点滅(カーソル移動処理や右クリック処理とは点滅のパターンが異なっていることに留意)させることができる。なお、上記のカーソル移動処理や右クリック処理と同様に、この点滅も途中で終了することはない。左クリック処理を1回実行する度に必ず1単位の点滅(「点灯」→「点灯」→「消灯」→「消灯」)が行われ且つ完結するようになっている。但し、この左クリック処理でも、先の右クリック処理と同様に、1単位だけでは完結しない。必ず、数単位(ステップS16dの所定回参照)の点滅で完結するようになっている。たとえば、“所定回”を3とすると、「点灯」→「点灯」→「消灯」→「消灯」の単位を3単位繰り返した後、完結する。
<ドラッグ処理>
図8は、ドラッグ処理の概略的なフローチャートを示す図である。このフローチャートでは、予めドラッグ操作に割り当てられたnビットのパターン系列(以下、第四のパターン系列といい、ここでは、n=4として“1000”のパターン系列とする)をROM23bから読み込み(ステップS17a)、次いで、その第四のパターン系列に基づく1単位の制御波形C1を生成し(ステップS17b)、最後にその制御波形C1を駆動部28に出力(ステップS17c)した後、図4の制御プログラムに復帰するという一連の処理を実行する。
なお、このドラッグ処理では、先の右クリック処理や左クリック処理における仕組み(制御信号C1を数回繰り返し出力する仕組み:図6のステップS13cや図7のステップS16c参照)は必要ない。ドラッグ操作は押しボタン27aの「長押し」で行われるからである。
前記のカーソル移動処理や右クリック処理及び左クリック処理と同様に、第四のパターン系列の論理1の区間(制御波形C1のハイレベル区間)は、発光部25の“点灯”区間となり、また、第四のパターン系列の論理0の区間(制御波形C1のローレベル区間)は、発光部25の“消灯”区間になる。駆動部28は、この制御波形C1に同期した周期で高電位(Vcc)と低電位(0V)を繰り返す駆動電圧P1を作り、その駆動電圧P1で発光部25を駆動する。これにより、発光部25の発光素子25aは、第四のパターン系列の論理1区間で点灯し、論理0区間で消灯するという動作を繰り返す。
このように、ドラッグ処理を実行することにより、発光部25の発光素子25aを、第四のパターン系列(1000)に従って、「点灯」→「消灯」→「消灯」→「消灯」の順番で点滅(カーソル移動処理や右クリック処理及び左クリック処理とは点滅のパターンが異なっていることに留意)させることができる。なお、上記のカーソル移動処理や右クリック処理及び左クリック処理と同様に、この点滅も途中で終了することはない。ドラッグ処理を1回実行する度に必ず1単位の点滅(「点灯」→「消灯」→「消灯」→「消灯」)が行われ且つ完結するようになっている。但し、このドラッグ処理は、押しボタン27aが「長押し」されている間、繰り返し実行されるため、実際には、その長押しの間、「点灯」→「消灯」→「消灯」→「消灯」を1単位にして、その単位が延々と繰り返される。
<発光ユニット2のまとめ>
以上のとおりであるから、この発光ユニット2によれば、電源スイッチ26をONにしたままにしておくと(操作ボタン27を押さないと)、「カーソル移動操作」に対応した第一のパターン系列(1010)に従って「点灯」→「消灯」→「点灯」→「消灯」を繰り返すスポット光3を発射することができる。また、操作ボタン27の後方「B」を押すことにより、「右クリック操作」に対応した第二のパターン系列(1110)に従って「点灯」→「点灯」→「点灯」→「消灯」を繰り返すスポット光3を発射することができる。また、操作ボタン27の前方「A」を短く押すことにより、「左クリック操作」に対応した第三のパターン系列(1100)に従って「点灯」→「点灯」→「消灯」→「消灯」を繰り返すスポット光3を発射することができる。また、操作ボタン27の前方「A」を長く押すことにより、「ドラッグ操作」に対応した第三のパターン系列(1000)に従って「点灯」→「消灯」→「消灯」→「消灯」を繰り返すスポット光3を発射することができる。
ここで、発光ユニット2の操作実例を挙げて説明する。
図9は、発光ユニット2の操作実例を示す図である。この図に示すように、ユーザ1が、まず、5分間継続して「カーソル移動操作」を行い、次いで、「左クリック操作」を一回、「右クリック操作」を1回行ったあと、10秒間継続して「ドラッグ操作」を行い、再び「カーソル移動操作」に戻るという操作例を考える。
最初の「カーソル移動操作」を行っている5分間、図5のカーソル移動処理が繰り返し実行される。したがって、スポット光3は第一のパターン系列(1010)の点滅パターンを5分間、延々と繰り返す。つまり、スポット光3は、「点灯」→「消灯」→「点灯」→「消灯」・・・・を繰り返す。
5分を経過した時点で「右クリック操作」が1回行われ、図6の右クリック処理が実行される。これにより、スポット光3は第二のパターン系列(1110)で点滅する。この右クリック処理の実行回数は、押しボタン27aの後方「B」の押下げ時間に応じて変化する。押下げ時間が長ければ実行回数が増え、短ければ減少する。押下げ時間が極端に短い場合(瞬間的な場合)であっても、図6のステップS13dを入れてあるため、最低でも所定回だけ点滅パターンを繰り返す。たとえば、“所定回”を3とすれば、仮に瞬間的な右クリック操作が行われた場合でも、第二のパターン系列(1110)の点滅パターンを最低3回(3単位)繰り返す。つまり、この場合、スポット光3は、「点灯」→「点灯」→「点灯」→「消灯」→「点灯」→「点灯」→「点灯」→「消灯」→「点灯」→「点灯」→「点灯」→「消灯」の順番で点滅する。
次に、「左クリック操作」が1回行われ、図7の左クリック処理が実行される。これにより、スポット光3は第三のパターン系列(1100)で点滅する。この左クリック処理の実行回数は1回である。押しボタン27aの前方「A」が短い時間(T1以下)しか押されないからである。このように、左クリック処理が1回しか実行されなくても、図7のステップS16dを入れてあるため、最低でも所定回、点滅パターンを繰り返すことができる。たとえば、“所定回”を3とすれば、第三のパターン系列(1100)の点滅パターンを3回(3単位)繰り返す。つまり、スポット光3は、「点灯」→「点灯」→「消灯」→「消灯」→「点灯」→「点灯」→「消灯」→「消灯」→「点灯」→「点灯」→「消灯」→「消灯」の順番で点滅する。
最後に、「ドラッグ操作」を行っている10秒間、図8のドラッグ処理が繰り返し実行される。したがって、スポット光3は第四のパターン系列(1000)の点滅パターンを10秒間繰り返す。つまり、スポット光3は、「点灯」→「消灯」→「消灯」→「消灯」・・・・を繰り返す。
図10は、操作実例の場合のスポット光3の点滅パターンを時系列に並べた図である。スポット光3は、カーソル移動操作、右クリック操作、左クリック操作及びドラッグ操作の各々のパターン系列(第一のパターン系列:1010、第二のパターン系列:1110、第三のパターン系列:1100、第四のパターン系列:1000)を1単位にして延々と点滅を繰り返す。たとえば、図示の操作実例の場合は、まず、1010の点滅を時間(5分間)に応じた単位数だけ繰り返し、次に、1110を最低3単位(所定回=3とした場合)繰り返し、次に、1100を最低3単位(所定回=3とした場合)繰り返し、最後に、1000の点滅を時間(10秒間)に応じた単位数だけ繰り返すという点滅パターンになる。
以下に説明する撮影装置15は、このような特異的な点滅パターンを繰り返すスポット光3によってスクリーン5上に映し出された光点4の像を含む被写体像を所定のフレームレートで継続的に撮影し、複数のフレーム画像の中から上記のパターンの単位を検出して、それらのパターン系列を特定し、特定されたパターン系列に対応するマウスコマンドを発生して、パーソナルコンピュータ13に出力する。
<撮影装置15の構成と動作>
次に、撮影装置15の構成と動作について具体的に説明する。なお、ここでは、デジタルカメラを例に説明するが、これに限定されない。たとえば、ビデオカメラなどであってもよい。
図11は、撮影装置15の外観図である。この図において、撮影装置15は、箱形のボディ30の前面に沈胴式のレンズ鏡筒31、ストロボ発光窓32及びファインダ前面窓33などを配置すると共に、ボディ30の上面に電源スイッチ34及びシャッターボタン35などを配置し、さらに、ボディ30の背面にファインダ後面窓36、モードスイッチ37、ズームスイッチ38、MENUボタン39、上下左右方向移動ボタン40、SETボタン41、DISPボタン42及び液晶モニタ43などを配置し、加えて、ボディ30の底面に三脚44を取り付けるための穴44aを設けている。
図12は、撮影装置15の内部ブロック図である。この図において、撮影装置15は、機能別に、撮像系45、制御系46、画像ファイル記憶系47、表示系48、操作系49及び外部インターフェース系50などに分類することができる。
これらの系毎に説明すると、撮像系45は、レンズ鏡筒31に収められたズーム機能及びオートフォーカス機能付の撮影レンズ群51と、この撮影レンズ群51を通過した被写体像を撮像し、所定のフレームレートの画像(以下、フレーム画像という)に変換して出力するCCD(Charge Coupled Devices)やCMOS(Complementary Metal Oxide Semiconductor)などからなる電子撮像部52と、この電子撮像部52からのフレーム画像に対して所要の画像処理を施す映像処理部53と、画像処理後のフレーム画像を一時的に記臆する、少なくとも1+8枚のフレームメモリ(F0〜F8)からなる画像バッファメモリ54とを備えるとともに、レンズ鏡筒31の不図示のフォーカス機構を駆動するフォーカス駆動部55と、同ズーム機構を駆動するズーム駆動部56と、ボディ前面のストロボ発光窓32に設けられたストロボ発光部57と、このストロボ発光部57を駆動するストロボ駆動部58と、これらの各部(電子撮像部52、映像処理部53、フォーカス駆動部55、ズーム駆動部56、ストロボ駆動部58)を制御するための撮影制御部59とを備える。
ここで、フレームメモリF0は通常撮影用のフレームメモリであるが、他の8枚のフレームメモリF1〜F8は、後述のパターン読み取り処理で使用するためのFIFO型メモリである。FIFO(First-In First-Out)型メモリとは、古く格納した順にデータを取り出すようにしたメモリ構成のことである。一番新しく格納されたデータが一番最後に取り出される。8枚のフレームメモリF1〜F8は、いずれもフレーム画像1枚分の容量を持ち、時系列的に順次入力されるフレーム画像をF1→F2→F3・・・・F8の順番に転送する。
制御系46は、上記の各系を制御して撮影装置15の動作を集中的にコントロールするCPU60と、このCPU60の動作に必要な各種プログラムやデータを不揮発的に記憶するプログラムメモリ61と、画像データ記憶用の内蔵フラッシュメモリ62とを備える。
画像ファイル記憶系47は、インターフェース部63と、このインターフェース部63に着脱可能に接続される外部フラッシュメモリ64とを備える。
表示系48は、CPU60から適宜に出力される表示データを一時的に保持するビデオメモリ(VRAM65)を含む表示制御部66と、表示制御部66の出力信号を表示する液晶モニタ43とを備える。
操作系49は、ボディ30の各部に設けられた様々な操作ボタン類、すなわち、シャッターボタン35、モードスイッチ37、ズームスイッチ38、MENUボタン39、上下左右方向移動ボタン40、SETボタン41及びDISPボタン42を含む操作入力部67と、この操作入力部67からの操作信号をCPU60に入力するための入力回路68とを備える。
外部インターフェース系50は、パーソナルコンピュータ13(図1参照)などの外部機器と接続するためのUSB(Universal Serial Bus)端子69と、このUSB端子69を介して、パーソナルコンピュータ13などの外部機器とCPU60との間のデータのやり取りを制御するUSBインターフェース部70とを備える。なお、言うまでもなく“USB”は一例であり、他の汎用インターフェース規格であっても構わない。たとえば、IEEE1394、有線LAN、無線LAN、ブルーツース、光ファイバー(Fibre Channel)などの汎用インターフェース規格を使用してもよい。
図13は、撮影装置15の動作フローチャートを示す図である。この図において、電源スイッチ34がONになると、まず、モードスイッチ37の現在のスイッチ位置を調べて「撮影モード」であるか「再生モード」であるかを判定する(ステップS20)。そして、判定結果が「再生モード」であれば、所要の再生モード処理を実行する(ステップS21)。
再生モード処理とは、この撮影装置15を通常のデジタルカメラとして用いる際に、撮影済の画像を液晶モニタ43に表示して確認するモードである。すなわち、この再生モードでは、撮影済画像(内蔵フラッシュメモリ又は外部フラッシュメモリ64に格納されている画像)の一覧(縮小画像一覧又はファイル名等のリスト表示)を液晶モニタ43に表示し、ユーザの選択操作(上下左右方向移動ボタン40で選択しSETボタン41で確定する操作)に従って任意の画像を内蔵フラッシュメモリ又は外部フラッシュメモリ64から読み出し、伸張処理して液晶モニタ43に表示する。
一方、ステップS20で「撮影モード」を判定すると、次に、MENUボタン39の押し下げ操作を判定し(ステップS22)、MENUボタン39が押し下げ操作されていなければ、所要の撮影モード処理を実行する(ステップS23)。
撮影モード処理とは、この撮影装置15を通常のデジタルカメラとして写真撮影に用いるときのモードである。このモードも、本発明との直接の関連がないため簡単に説明するが、この撮影モードでは、電子撮像部52から所定のフレームレートで逐次に出力されるフレーム画像を画像メモリバッファ54の1枚のフレームメモリF0に書き込み、そのフレームメモリF0の画像を表示制御部66のVRAM65に転送して液晶モニタ43にスルー画像(構図確認用の画像)を表示しながら、シャッターボタン35の操作を待ち、シャッターボタン35の操作に応答して、そのときのフレーム画像を圧縮処理して内蔵フラッシュメモリ62又は外部フラッシュメモリ64に格納保存する。
さて、ステップS22でMENUボタン39の押し下げが判定された場合、撮影モード用MENU処理を実行する(ステップS24)。
図14は、撮影モード用MENU処理のフローチャートを示す図である。このフローチャートにおいて、最初に撮影モード用メニュー画面(図15参照)を表示し(ステップS24a)、次いで、その撮影メニュー画面のいずれかのメニュー項目が選択されているか否かを判定する(ステップS24b)。そして、いずれのメニュー項目も選択されなければ、撮影モード用メニュー画面を閉じ(ステップS24c)た後、図13のフローチャートに戻るが、いずれかのメニュー項目が選択されたときは、選択メニュー項目の分岐判定を行い(ステップS24d)、選択メニュー項目に対応した処理(たとえば、後述のマウス処理:ステップS24e)を実行した後、図13のフローチャートに戻る。
図15は、撮影モード用メニュー画面を示す図である。この図において、撮影モード用メニュー画面71は、たとえば、撮影タブ72や設定タブ73などを有する任意意匠のメニュー画面であるが、少なくとも、撮影モードメニュー74の下位メニュー画面75の中に、通常の撮影に使用する様々な撮影モードメニュー(例:静止画撮影モードメニュー76や動画撮影モードメニュー77など)に加えて本実施形態特有のメニュー78(本明細書では、「マウスメニュー78」という)を選択可能に表示する点に特徴がある。
このマウスメニュー78を選択すると、撮影装置15を通常の撮影や再生とは異なる特殊な使い方で利用することができる。特殊な使い方の例は、図1の利用例である。すなわち、発光ユニット2から発射されたスポット光3によってスクリーン5の上に形成される光点4の点滅パターンを、この撮影装置15で検出し、そのパターン系列を特定して「カーソル移動」、「右クリック」、「左クリック」又は「ドラッグ」といったマウスコマンドを発生し、パーソナルコンピュータ13に出力するという使い方である。
かかる特殊な使い方をする場合、撮影装置15は、パーソナルコンピュータ13から見て、あたかもマウスのような振る舞いをする。
図16は、マウス処理(図14のステップS24e)のフローチャートを示す図である。このフローチャートを開始すると、まず、パーソナルコンピュータ13との接続を確認する(ステップS25、ステップS26)。まだ接続されていなければ、所要のメッセージを液晶モニタ43に表示して接続を促し(ステップS27)、所定時間を経過(ステップS28)してもまだ接続されていなければ、間違ったメニュー選択であったと判断してフローチャートを抜け、図14のフローチャートに戻る。
一方、ステップS26でパーソナルコンピュータ13の接続を判定した場合は、次に、所要の操作案内を、ユーザの了解操作(たとえば、SETボタン41の押し下げ操作)があるまで液晶モニタ43に表示し続ける(ステップS29、ステップS30)。所要の操作案内とは、たとえば、図1のような利用例を分かりやすく表した絵コンテや説明文などである。また、それらの操作案内に発光ユニット2の使い方やプロジェクタ6及びスクリーン5などの機器類設置に関する注意などを含めておいてもよい。
ユーザが了解操作を行うと、次に、本実施形態特有の処理「パターン読み取り処理」(ステップS31)を実行するが、この「パターン読み取り処理」の詳細を説明する前に、前記利用例で使用した各種機器の内の残りの機器(パーソナルコンピュータ13とプロジェクタ6)について、その構成と動作を説明する。
図17は、パーソナルコンピュータ13とプロジェクタ6の電気的構成の概略ブロック図である。
パーソナルコンピュータ13は、CPU79と、RAM80と、記憶装置81と、キーボード82と、マウス83と、ビデオアダプタ84と、VRAM85と、表示装置86とを備えている。
ビデオアダプタ84は、表示用のビデオ信号(RGB信号又はNTSC信号)を生成し、液晶パネル及びその駆動回路等からなる前記表示装置86に出力し、VRAM85は、ビデオアダプタ84が生成した表示用の画像データを随時記憶する。また、ビデオアダプタ84には、ビデオ出力端子87が設けられており、このビデオ端子87には、ケーブル9の一端が接続されており、ビデオアダプタ84は、CPU79の命令に応じて表示用の画像データをこのケーブル9を介して出力できるようになっている。
CPU79には、図示しないUSBインターフェース回路が接続されており、そのUSBインターフェース回路のUSB端子88には、撮影装置15からのケーブル12が接続されている。そして、このケーブル12を介して、撮影装置15から任意のタイミングで任意のマウスコマンド(「カーソル移動コマンド」、「右クリックコマンド」、「左クリックコマンド」、「ドラッグコマンド」)のいずれかが送られてくると、CPU79は、それらのコマンドを解釈し、自分自身のマウス83で発生したコマンドと同様のイベント(カーソル移動イベント、右クリックイベント、左クリックイベント、ドラッグイベント)を発生する。
プロジェクタ6は、CPU89と、ROM90と、RAM91と、画像入力部92と、光学系を含む表示部93と、操作部94とを備えている。画像入力部92には、ビデオ入力端子95が接続されており、画像入力部92は、このビデオ入力端子95とケーブル9を介してパーソナルコンピュータ13から入力された画像から投影のための表示信号を生成し、その表示信号を表示部93へ送り、表示部93は、その表示信号でクリプトンランプ等の高輝度光を変調し、投影レンズ等の光学系を介してスクリーン5に拡大投影する。
<フレームメモリの構造>
次に、フレームメモリF1〜F8について説明する。
図18は、パターン読み取り処理で参照される8個のフレームメモリF1〜F8の概念構造図である。この図において、画像バッファメモリ54に設けられた8個のフレームメモリF1〜F8は、先にも説明したとおり、FIFO構造になっている。これらのフレームメモリF1〜F8には、電子撮像部52で作られ、映像信号処理部53で所要の信号処理を施されたフレーム画像が所定のフレーム周期(TFRAME)で逐次に入力される。
フレームメモリF1〜F8に取り込まれた8枚のフレーム画像(PC1〜PC8)のうち奇数番目の画像(PC1、PC3、PC5、PC7)がCPU60に読み込まれ、このCPU60で実行されるプログラム(パターン読み取り処理)によって所要の処理を受ける。図中の4個の乗算器96〜99や1個の加算器100は、このプログラムによって仮想的に実現される乗算処理機能や加算処理機能を表している。なお、4個の乗算器96〜99に入力しているki_1〜ki_4は乗算係数である。kiの“i”には1から14までの数字が入る(図21参照)。また、アンダースコア(_)の後に付く数字は乗算係数の桁数を表す。たとえば、後述するように、乗算係数k1は(1,−1,1,−1)であるので、k1_1は左端の“1”を示し、k1_2は左から2番目の“−1”を示し、k1_3は左から3番目の“1”を示し、k1_4は右端の“−1”を示す。
CPU60に取り込まれた4つの画像(PC1、PC3、PC5、PC7)は、各々加算器96〜99で係数乗算された後、加算器100で加算処理される。GΣは、加算処理後の画像(加算画像)を示している。なお、これらの係数乗算や加算の処理は、背景画像等の不要な情報を排除してパターン検出に必要な情報だけを残すために行われるが、その原理や仕組みについては、後で詳しく説明する。
<フレームメモリの数>
図19は、8個のフレームメモリF1〜F8の動作概念図である。この図を用いて、フレームメモリF1〜F8の数(8個)の妥当性を説明する。但し、この図では、撮影装置15のフレーム内動作(露光、読み出し及び転送)を無視し、TFRAME内で撮影された画像が、そのまま単純にフレームメモリに格納されるものとしている。また、図中の多数の升目(太線の升目と細線の升目)は、その横一列分がそれぞれ8個のフレームメモリF1〜F8を表している。多数の升目を並べた理由は、以下の説明から明らかになる。
先に説明した発光ユニット2は、第一のパターン系列〜第四のパターン系列のいずれかで点滅するスポット光3を発射する。これらのパターン系列はnビットの情報を含む。すなわち、第一のパターン系列は「1010」、第二のパターン系列は「1110」、第三のパターン系列は「1100」、第四のパターン系列は「1000」のいずれも4ビットの情報を含むから、この実施形態におけるnの値は“4”である。発光ユニット2で使用可能なパターン系列の種類は理論上、2n 通りである。本実施形態の場合はn=4であるから、最大で24 =16通りのパターン系列を使用することができる。但し、実際にはそのうちの4つ(第一〜第四のパターン系列)しか利用していない。4つでよければ(つまり、将来の拡張性を考慮しないのであれば)n=2で充分であるが、本実施形態においては、マウスコマンドの種類が例示の4つ(カーソル移動、右クリック、左クリック及びドラッグ)に限らない(たとえば、ダブルクリックなども存在する)こと、マウス操作以外への応用も可能(たとえば、プロジェクタ6の遠隔制御など)であること、などを踏まえ、将来の拡張性の余地を残してn=4としている。
以下、n=4として説明する。フレームメモリの数はF1〜F8の8個である。これは、nの値の2倍に相当する。図19において、今、パターン系列「1010」を考える。“1”でスポット光3が点灯、“0”で消灯である。便宜的に、パターン系列の最初の区間の情報(“1”)をB1ということにする。同様に、2番目の区間の情報(“0”)をB2といい、3番目の区間の情報(“1”)をB3といい、最後の区間の情報(“0”)をB4ということにする。なお、Bxは、次単位のパターン系列の最初の区間の情報(“1”)である。
先にも説明したとおり、パターン系列の区間長TSLOTは、撮影装置15のフレーム周期TFRAME の丁度2倍となるように調整されている。発光ユニット2は外部への情報発信(スポット光3の発射)機能しか有していないため、単方向の光通信デバイスということができる。したがって、位相レベルでTSLOTをTFRAME に同期させることはできない。図中の(ア)〜(キ)は、パターン系列の各区間に対する8個のフレームメモリF1〜F8の位相関係を模式化したものである。(ア)は位相が一致している理想的な状態であり、他の(イ)〜(キ)は位相がずれた状態例である。非同期のため、このような位相のズレは高い蓋然性で起こり得る。
さて、(ア)の状態の場合は、8個のフレームメモリF1〜F8の各々にB1〜B4が正しく入る。すなわち、F1とF2にB1が入り、F3とF4にB2が入り、F5とF6にB3が入り、F7とF8にB4が入るから、フレームメモリを一つ置きに(奇数でも偶数でもよい)参照することにより、パターン系列「1010」(B1〜B4)を含む4枚のフレーム画像を支障無く取り出すことができる。
これに対して、位相がずれた(イ)〜(キ)の状態の場合は、いずれも偶数番目のフレームメモリ(F2、F4、F6、F8)に、パターン系列「1010」の隣接区間の情報又はその遷移点の情報(B1+B2、B2+B3、B3+B4)が入っているため、これらの偶数番目のフレームメモリ(F2、F4、F6、F8)からパターン系列「1010」(B1〜B4)を含む4枚のフレーム画像を取り出すことはできない。
しかし、図からも明らかなように、太線で示した奇数番目のフレームメモリ(F1、F3、F5、F7)には位相ズレにもかかわらず、常にパターン系列「1010」(B1〜B4)を含む4枚のフレーム画像が入っている。このため、(ア)の位相一致の状態はもちろんのこと、(イ)〜(キ)の位相ズレ状態であっても、奇数番目のフレームメモリ(F1、F3、F5、F7)を参照することにより、パターン系列「1010」(B1〜B4)を含む4枚のフレーム画像を支障無く取り出すことができる。
これは、フレームメモリの数を2n個として、所定のフレームレートで時系列的に撮影される各々のフレーム画像を、それらの2n個のフレームメモリF1〜F8に順次に格納するようにしたからである。
<パターン読み取り処理>
次に、パターン読み取り処理の詳細を説明する。
図20は、パターン読み取り処理のフローチャートを示す図である。このフローチャートは、先に説明した「マウス処理」プログラム(図16参照)のステップS31のサブルーチンプログラムである。
このフローチャートチャートを開始すると、まず、画像バッファメモリ54の奇数番目のフレームメモリ(F1、F3、F5、F7)から4つの画像PC1、PC5、PC5、PC7(図18参照)を取り出し、それぞれを変数G1〜G4にセットする(ステップS40)。ここで、G1=F1、G2=F3、G3=F5、G4=F7である。
次に、パターン検出処理を実行する(ステップS41)。このパターン検出処理の詳細は後で説明する。次いで、パターン検出処理の結果(検出パターン)を見てパターン非検出を示す所定の値(ここでは“0000”)がセットされているか否かを判定し(ステップS42)、検出パターン=0000であれば、以降の処理を行わず、再びステップS42に復帰するが、検出パターン=0000でなければ、有効なパターン(第一〜第四のパターン系列のいずれか)が検出されたものと判断し、「先回の検出パターンと異なる?」の判定(ステップS43)を経た後、マウスコマンド出力処理を実行する(ステップS44)。なお、マウスコマンド出力処理の詳細及びステップS43の判定(「先回の検出パターンと異なる?」)を行う理由等については、後で詳しく説明する。
マウスコマンド出力処理を完了すると、次に、「マウス」利用終了の判定、つまり、先にも説明した「撮影装置15を通常の撮影や再生とは異なる特殊な使い方で利用する」ことを終わりにするか否かの判定を行い、ユーザ1による何らかの終了操作(たとえば、撮影装置15のMENUボタン39の押し下げ操作など)が行われたことを検出すると、本フローチャートを抜け、図14のMENU処理に復帰する。
<パターン検出処理>
次に、ステップS41のパターン検出処理について、その詳細を説明する。
まず、最初に、検出対象のパターン系列、その検出範囲及び各々の検出範囲に適用する乗算係数について説明する。
図21は、検出対象のパターン系列、その検出範囲及び各々の検出範囲に適用する乗算係数を示す図である。この図において、左端には発光ユニット2の4種類のパターン系列が示されている。上から順に「1010」は第一のパターン系列(カーソル移動に対応)、「1110」は第二のパターン系列(右クリックに対応)、「1100」は第二のパターン系列(左クリックに対応)、「1000」は第四のパターン系列(ドラッグに対応)である。中央と右端には、それぞれパターン検出範囲と、その範囲に適用する乗算係数及び係数識別番号(ki)が示されている。
パターン検出範囲の欄内の数列はパターンの繰り返しを示している。たとえば、最上段の「10101010」は、第一のパターン系列の1単位(1010)を繰り返すことを意味している。なお、2単位しか記載していないのは図示の都合である。また、同欄内に示す実線の横長矩形は、位相がズレていない場合の検出範囲(以下、基本検出範囲101という)であり、破線の横長矩形は、位相がズレている場合の検出範囲(以下、位相ズレ対策用検出範囲102という)である。
第一のパターン系列(1010)の場合は“1”と“0”が交互に現れるため、位相ズレ対策用検出範囲102は1種類でよいが、他のパターン系列(1110、1100、1000)の場合は、“1”と“0”の出現間隔が不等であるため、各々1ビットずつ位置をずらした3種類の位相ズレ対策用検出範囲102が必要である。
したがって、4つのパターン系列(第一〜第四のパターン系列)の全体でパターン検出範囲は14種類になる。乗算係数は、それぞれの検出範囲ごとに必要であるため、この乗算係数も14種類(k1〜k14)になる。
乗算係数は極性を持つ4桁の数値からなり、書式は(±ki_1,±ki_2,±ki_3,±ki_4)である。“±”は極性を表し、“ki”は計数識別番号、“_1、_2、_3、_4”はそれぞれ桁番号を表している。係数の各桁はパターン検出範囲内のそれぞれのビットに対応する。たとえば、乗算係数k1は(1,−1,1,−1)であり、その適用対象となるパターン検出範囲は「1010」であるから、±ki_1=1を1番目のビット(1)の画像に適用し、±ki_2=−1を2番目のビット(0)の画像に適用し、±ki_3=1を3番目のビット(1)の画像に適用し、±ki_4=−1を4番目のビット(0)の画像に適用することを意味する。
以上の点を踏まえて、乗算係数の実際の適用の仕方を具体的に説明する。
図22(a)は、一定の輝度の背景中に目立つ明るさの輝点(たとえば、スクリーン5の上の光点4)を含む画像の三次元輝度分布図である。縦軸(Z軸)は輝度を表し、上に行くほど輝度が高く(明るく)なる。縦と横の辺(Y軸、X軸)は画像の縦サイズと横サイズを表している。この図において、中央部分103が若干盛り上がっているが、これは周囲よりも輝度が高い部分を示している。なお、言うまでもなく、この三次元輝度分布は実際のものを簡略化したものであるが、多くの点で実際の画像の特徴をよく表しているということができる。
図22(b)は、図22(a)の三次元輝度分布を極端に単純化したモデル図である。この図において、若干の厚みを持つ平板状のベース部104は、画像内の背景部分であり、また、そのベース部104のほぼ中央部分でZ軸方向に突き出した円筒部105は高輝度部分である。以下、この単純化したモデル図を用いてパターン検出処理の実際を説明する。
図23及び図24は、たとえば、図21の最上段のパターン検出範囲(1010)に乗算係数k1を適用した場合の作用説明図である。まず、図23を参照する。この図の左側には、上から順にベース部104と円筒部105とを含む第一モデル106、ベース部104のみの第二モデル107、ベース部104と円筒部105とを含む第三モデル108、及び、ベース部104のみの第四モデル109が描かれている。ベース部104と円筒部105とを含むモデル(第一モデル106と第三モデル108)は、パターン検出範囲内のビット1の画像に対応し、ベース部104のみのモデル(第二モデル107と第四モデル109)は、パターン検出範囲内のビット0の画像に対応する。すなわち、これらの第一〜第四モデル106〜109は、図21の最上段のパターン検出範囲(1010)の4枚の画像を表している。
さて、この図の中央部に上から順に描かれた右向きの白抜き矢印110〜113は、それぞれのモデル(第一〜第四モデル106〜109)に固有の係数を乗算することを表している(図18の乗算器96〜99参照)。図21に従えば、第一のモデル106にはk1_1の「+1」が乗算され、第二のモデル107にはk1_2の「−1」が乗算され、第三のモデル108にはk1_3の「+1」が乗算され、第四のモデル109にはk1_4の「−1」が乗算される。
係数の乗算は、簡単に言えば、その係数の極性に従って画像の輝度の向きを反転(係数が負極性の場合)させたり、且つ、その係数の値だけ輝度の大きさを倍増したりすることである。すなわち、図示の例では、第一モデル106や第三モデル108に対しては、いずれも正極性且つ値1の係数を乗じているため、乗算結果はそのまま変わらず、第一モデル106や第三モデル108と同一の第一モデル106′及び第三モデル108′が取り出される。一方、第二モデル107や第四モデル109に対しては、値はいずれも1であるが、負極性の係数を乗じているため、乗算結果は、第二モデル107や第四モデル109を反転させた状態の第二モデル108′及び第四モデル109′が取り出される。
これらの乗算結果(第一モデル106′〜第四モデル109′)は、図24において、加算処理(図18の加算器100参照)される。第一〜第四のモデル106′〜109′の高さ(Z軸の高さ、つまり輝度)は揃っているが、第一モデル106′と第三モデル108′の極性に対して、第二モデル107′と第四モデル109′の極性は逆である。したがって、第一モデル106′と第三モデル108′の各々のベース部104が第二モデル107′と第四モデル109′の各々のベース部104によって打ち消されて取り除かれるとともに、第一モデル106′と第三モデル108′の円筒部105が足し合わされてその高輝度部分114だけが残った加算画像GΣが得られる。
このようにして、パターン検出範囲の各々の画像に対して適切な乗算係数を適用し、その乗算結果を加算することにより、邪魔な背景画像を取り除き、且つ、高輝度部分(つまり光点4の像部分)だけを強調した加算画像GΣを得ることができる。
図25〜図30は、パターン検出処理のフローチャートを示す図であり、このフローチャートは、先に説明した「パターン検出処理」プログラム(図20参照)のステップ41のサブルーチンプログラムである。また、図31〜図37は、パターン検出処理の作用を説明するための概念図である。
図25に示すように、このパターン検出処理では、4つのパターン系列(1010、1110、1100、1000)のそれぞれの検出ステップ(ステップS50、ステップS60、ステップS70、ステップS80)を含み、適当な順番、たとえば、パターン「1010」→パターン「1110」→パターン「1100」→パターン「1000」の順番で検出処理を実行する。後でも詳しく説明するが、このパターン検出処理では、先行する順番のステップでパターンが検出された場合は、それ以降のステップを実行せず、図20のフローチャートに復帰するようになっている。たとえば、ステップS50でパターン「1010」が検出された場合は、それ以降のステップS60、ステップS70及びステップS80を実行しない。
<第一のパターン系列(1010)の検出>
図26に、図25のパターン「1010」の検出処理(ステップS50)の詳細な処理内容が示されている。この詳細な処理内容では、まず、基本検出範囲101のパターン検出を行うために、図31(a)に示すように、4つの画像(G1〜G4)に係数k1を乗じて4つの評価画像(G1′〜G4′)を得る(ステップS50a、ステップS50b)。4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得(ステップS50c)、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する(ステップS50d)。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第一のパターン系列(1010)の画像であると判断し、検出パターンに、そのパターン系列(1010)をセットして(ステップS50e)、図20の「パターン検出処理」プログラムに復帰する。
一方、基本検出範囲101でパターンが検出されなかった場合は、位相ズレ対策用検出範囲102のパターン検出を行うために、図31(b)に示すように、4つの画像(G1〜G4)に係数k2を乗じて4つの評価画像(G1′〜G4′)を得る(ステップS50f、ステップS50g)。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得(ステップS50h)、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する(ステップS50i)。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第一のパターン系列(1010)の画像であると判断し、検出パターンに、そのパターン系列(1010)をセットして(ステップS50e)、図20の「パターン検出処理」プログラムに復帰するが、しきい値(SL)を超える高輝度部分が存在していない場合には、次のパターン検出処理(パターン「1110」の検出処理:ステップS60)に進む。
以上のパターン「1010」の検出処理(ステップS50)の概念図が図27に示されている。この概念図は、図26と同じ処理内容を表の形にまとめて見やすくしたものである。
すなわち、1行目(行数は表外の左に記載した数値)は、基本検出範囲101のパターン検出を行うために、4つの画像(G1〜G4)に係数k1を乗じて4つの評価画像(G1′〜G4′)を得ることを示している。また、2行目は、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得ることを示し、3行目は、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定することを示している。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第一のパターン系列(1010)の画像であると判断し、検出パターンに、そのパターン系列(1010)をセットして(ステップS50e)、図20の「パターン検出処理」プログラムに復帰する。したがって、図27の1行目は、図26のステップS50a及びステップS50bに相当し、同2行目は、図26のステップS50cに相当し、同3行目は、図26のステップS50dに相当する。
さらに、4行目は、基本検出範囲101でパターンが検出されなかった場合、位相ズレ対策用検出範囲102のパターン検出を行うために、4つの画像(G1〜G4)に係数k2を乗じて4つの評価画像(G1′〜G4′)を得ることを示し、5行目は、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得ることを示し、6行目は、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定することを示している。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第一のパターン系列(1010)の画像であると判断し、検出パターンに、そのパターン系列(1010)をセットして(ステップS50e)、図20の「パターン検出処理」プログラムに復帰する。したがって、図27の4行目は、図26のステップS50f及びステップS50gに相当し、同5行目は、図26のステップS50hに相当し、同6行目は、図26のステップS50iに相当する。なお、図27の0行目(黒塗り反転行)は、この処理の検出対象パターンが「1010」であることを示す単なるコメント行である。
以下、他のパターン系列の検出においては、同様の概念図(処理内容を表の形にまとめて見やすくしたもの:図28、図29、図30)を用いて説明することにする。
<第二のパターン系列(1110)の検出>
上記の第一のパターン系列(1010)の検出処理で結果が得られなかった場合(一つの基本検出範囲101と一つの位相ズレ対策用検出範囲102でパターン検出ができなかった場合)は、次に、図28の概念図で示す第二のパターン系列(1110)の検出処理を行う(図25のステップS60参照)、このステップS60では、まず、基本検出範囲101のパターン検出を行うために、図32(a)に示すように、4つの画像(G1〜G4)に係数k3を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第二のパターン系列(1110)の画像であると判断し、検出パターンに、そのパターン系列(1110)をセットして(ステップS61)、図20の「パターン検出処理」プログラムに復帰する。
一方、基本検出範囲101でパターンが検出されなかった場合は、1番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図32(b)に示すように、4つの画像(G1〜G4)に係数k4を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第二のパターン系列(1110)の画像であると判断し、検出パターンに、そのパターン系列(1110)をセットして(ステップS61)、図20の「パターン検出処理」プログラムに復帰する。
1番目の位相ズレ対策用検出範囲102でパターンが検出されなかった場合、2番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図33(a)に示すように、4つの画像(G1〜G4)に係数k5を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第二のパターン系列(1110)の画像であると判断し、検出パターンに、そのパターン系列(1110)をセットして(ステップS61)、図20の「パターン検出処理」プログラムに復帰する。
2番目の位相ズレ対策用検出範囲102でもパターンが検出されなかった場合、3番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図33(b)に示すように、4つの画像(G1〜G4)に係数k6を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第二のパターン系列(1110)の画像であると判断し、検出パターンに、そのパターン系列(1110)をセットして(ステップS61)、図20の「パターン検出処理」プログラムに復帰する。
<第三のパターン系列(1100)の検出>
第二のパターン系列(1110)の検出処理でも結果が得られなかった場合(一つの基本検出範囲101と三つの位相ズレ対策用検出範囲102でパターン検出ができなかった場合)は、次に、図29の概念図で示す第三のパターン系列(1100)の検出処理を行う(図25のステップS70参照)、このステップS70では、まず、基本検出範囲101のパターン検出を行うために、図34(a)に示すように、4つの画像(G1〜G4)に係数k7を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第三のパターン系列(1100)の画像であると判断し、検出パターンに、そのパターン系列(1100)をセットして(ステップS71)、図20の「パターン検出処理」プログラムに復帰する。
一方、基本検出範囲101でパターンが検出されなかった場合は、1番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図34(b)に示すように、4つの画像(G1〜G4)に係数k8を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第三のパターン系列(1100)の画像であると判断し、検出パターンに、そのパターン系列(1100)をセットして(ステップS71)、図20の「パターン検出処理」プログラムに復帰する。
1番目の位相ズレ対策用検出範囲102でパターンが検出されなかった場合、2番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図35(a)に示すように、4つの画像(G1〜G4)に係数k9を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第三のパターン系列(1100)の画像であると判断し、検出パターンに、そのパターン系列(1100)をセットして(ステップS71)、図20の「パターン検出処理」プログラムに復帰する。
2番目の位相ズレ対策用検出範囲102でもパターンが検出されなかった場合、3番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図35(b)に示すように、4つの画像(G1〜G4)に係数k10を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第三のパターン系列(1100)の画像であると判断し、検出パターンに、そのパターン系列(1100)をセットして(ステップS71)、図20の「パターン検出処理」プログラムに復帰する。
<第四のパターン系列(1000)の検出>
第三のパターン系列(1100)の検出処理でも結果が得られなかった場合(一つの基本検出範囲101と三つの位相ズレ対策用検出範囲102でパターン検出ができなかった場合)は、次に、図30の概念図で示す第四のパターン系列(1000)の検出処理を行う(図25のステップS80参照)、このステップS80では、まず、基本検出範囲101のパターン検出を行うために、図36(a)に示すように、4つの画像(G1〜G4)に係数k11を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第四のパターン系列(1000)の画像であると判断し、検出パターンに、そのパターン系列(1000)をセットして(ステップS81)、図20の「パターン検出処理」プログラムに復帰する。
一方、基本検出範囲101でパターンが検出されなかった場合は、1番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図36(b)に示すように、4つの画像(G1〜G4)に係数k12を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第四のパターン系列(1000)の画像であると判断し、検出パターンに、そのパターン系列(1000)をセットして(ステップS81)、図20の「パターン検出処理」プログラムに復帰する。
1番目の位相ズレ対策用検出範囲102でパターンが検出されなかった場合、2番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図37(a)に示すように、4つの画像(G1〜G4)に係数k13を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第四のパターン系列(1000)の画像であると判断し、検出パターンに、そのパターン系列(1000)をセットして(ステップS81)、図20の「パターン検出処理」プログラムに復帰する。
2番目の位相ズレ対策用検出範囲102でもパターンが検出されなかった場合、3番目の位相ズレ対策用検出範囲102のパターン検出を行うために、図37(b)に示すように、4つの画像(G1〜G4)に係数k14を乗じて4つの評価画像(G1′〜G4′)を得る。上記と同様に4つの画像(G1〜G4)は、図23の第一〜第四モデル106〜109に相当し、4つの評価画像(G1′〜G4′)は、図23の第一〜第四モデル106′〜109′に相当する。次いで、4つの評価画像(G1′〜G4′)の加算画像(GΣ)を得、その加算画像(GΣ)中に所定のしきい値(SL)を超えている高輝度部分があるか否かを判定する。この高輝度部分は、図24の高輝度部分114に相当する。そして、しきい値(SL)を超える高輝度部分が存在していれば、対象の画像(G1〜G4)は、第四のパターン系列(1000)の画像であると判断し、検出パターンに、そのパターン系列(1000)をセットして(ステップS81)、図20の「パターン検出処理」プログラムに復帰する。
一方、第四のパターン系列(1000)の検出処理でも結果が得られなかった場合は、発光ユニット2から情報が送られていない又は情報が送られていても正しく受信できていないと判断し、検出パターンに、パターン非検出を示す所定の値(“0000”)をセットして(ステップS82)、図20の「パターン検出処理」プログラムに復帰する。
このようにして、第一のパターン系列(1010)、第二のパターン系列(1110)、第三のパターン系列(1100)及び第四のパターン系列(1000)のパターン検出範囲の各々の画像(G1〜G4)に対して適切な乗算係数kiを適用し、その乗算結果(G1′〜G4′)を加算することにより、邪魔な背景画像を取り除き、且つ、高輝度部分(つまり光点4の像部分)だけを強調した加算画像GΣを得ることができる。そして、その加算画像GΣの高輝度部分(しきい値SLを超える部分)の有無を判定することにより、第一のパターン系列(1010)、第二のパターン系列(1110)、第三のパターン系列(1100)及び第四のパターン系列(1000)の検出を行うことができる。
<マウスコマンド出力処理>
図38は、マウスコマンド出力処理のフローチャートを示す図である。このフローチャートは、先に説明した「パターン検出処理」プログラム(図20参照)のステップ44のサブルーチンプログラムである。
このフローチャートを開始すると、まず、光点座標を検出する(ステップS90)。ここで、光点座標とは、スクリーン5に映し出された光点4の座標のことをいう。光点4の大きさ(直径)は、レーザービームなどに比べて遙かに大きい。光点4の元になるスポット光3が若干の広がり(図2のα参照)を持つためである。したがって、加算画像GΣの高輝度部分(光点4の像部分)も同様に面積が大きくなるから、その高輝度部分の位置をそのまま使用して、たとえば、マウスカーソルの位置移動を行った場合、カーソルの動きが緩慢になるうえ、きめ細かな動きも期待できないという不都合を招く。このための対策としては、たとえば、次のようにしてもよい。
図39は、光点座標の好ましい検出概念図である。この図において、加算画像GΣの高輝度部分(光点4の像部分)は、しきい値SLを超えた領域である。この領域には多数の画素が含まれており、各々の画素は輝度値を持っている。それらの輝度値が飽和していないものとすると、領域のほぼ中央部分に輝度値のピークが観測されるはずである。これは、スポット光3の光軸中心付近の光量が最大であるからであり、このスポット光3によって形成される光点4もまた、その中央部分の明るさが最大になるからである。このような点から、加算画像GΣの中のしきい値SLを超え且つ最も最大の輝度値を持つ画素座標(x,y)を光点座標として利用すればよい。1画素ないしは数画素単位の精度で座標検出を行うことができる。このため、マウスカーソルの位置移動を行った場合のカーソルの動きをきめ細かく制御できるようになる。
このようにして、光点座標を検出すると、次に、上記のパターン検出処理で特定したパターンに対応したマウスコマンドを出力するために、パターン分岐する(ステップS91)。そして、特定されたパターンが第一のパターン系列(1010)であれば、光点座標とともにカーソル移動コマンドを出力し(ステップS92)、又は、特定されたパターンが第二のパターン系列(1110)であれば、光点座標とともに右クリックコマンドを出力し(ステップS93)、又は、特定されたパターンが第三のパターン系列(11000)であれば、光点座標とともに左クリックコマンドを出力し(ステップS94)、又は、特定されたパターンが第四のパターン系列(1000)であれば、光点座標とともにドラッグコマンドを出力(ステップS95)した後、図20の「パターン検出処理」プログラムに復帰する。
<実施形態のまとめ>
以上のとおりであるから、本実施形態によれば、発光ユニット2を操作することにより、プレゼンテーションを行ったままでパーソナルコンピュータ10のマウス移動操作、右クリック操作、左クリック操作又はドラッグ操作を行うことができるという格別の効果が得られる。しかも、これらの操作は「光」を利用して行うため、無線電波のような諸々の不都合もない。さらに、発光ユニット2からのスポット光3は可視領域外の波長の光(赤外線)であるため、光点4も人の目には見えない。それゆえ、発光ユニット3の操作者(ユーザ1)はもちろんのこと、スクリーン5を見ている他の人たちも光点4の存在にはまったく気が付かず、スクリーン5に映し出されている画面情報12やカーソル11から注意が逸らされることはない。また、光点4が見えないため、ユーザ1は実際の操作対象(スクリーン5の上のカーソルなど)を注視しながら、カーソル移動やクリックなどの操作を行うことになるが、発光ユニット3の動き(正確にはケース20の先端に位置するレンズ20aの向き)に伴って操作対象も追従するため、若干の慣れは必要であるが、操作上の支障はまったくない。
<パターン遷移点での誤検出防止策>
次に、図20のステップS43の判定「先回の検出パターンと異なる?」について説明する。
まず、以上の説明からも明らかなように、発光ユニット2は、四つのパターン(第一〜第四のパターン系列)のいずれかの情報を1単位ずつ送信(たとえば、図10参照)し、撮影装置15は、発光ユニット2から送信された情報をnビットずつの範囲(基本検出範囲101や位相ズレ対策用検出範囲102)で区切りながらパターンの検出を行う。
今、1010・・・・1010・・・・・と同一のパターン(第一のパターン系列)が続いている場合を想定する。このような場合は、どの場所でnビットずつの範囲に区切っても1010又は0101となり、基本検出範囲101や位相ズレ対策用検出範囲102のいずれかで正しいパターンの検出を行うことができる。しかし、途中で他のパターンに切り替わった場合、たとえば、第一のパターン系列(1010)から第三のパターン系列(1100)に切り替わった場合には、その切り替わり部分(以下、パターン遷移点又は単に遷移点という)で不都合を生じることがある。
図40は、パターン遷移点における不都合説明図である。この図において、一点鎖線の範囲115で囲まれた、遷移点にまたがる4ビットの並びは「1011」になっている。このビット配列は、遷移前の第一パターン系列(1010)と一致せず、また、遷移後の第三パターン系列(1100)とも一致しない。このようなビット配列(1011)をパターン検索の対象範囲にした場合、本実施形態のパターン検出処理では、第二のパターン系列(1110)と誤認してしまうという不都合を生じる。図21の第二のパターン配列(1110)の欄を見ると、その欄の上から3番目に同一のビット配列(1011)が存在しているからである。
したがって、この場合は、正しくは、第一パターン系列(1010)又は第三パターン系列(1100)のいずれかと判定すべきところ、図28の「パターン(1110)」の検出処理において、2番目の位相ズレ対策用検出範囲102を用いたパターン検出をパスしてしまい、結局、マウスコマンド出力処理に進んで、正しくないコマンド(右クリックコマンド)を出力するという不都合な結果を招く。
図20のステップS43の判定「先回の検出パターンと異なる?」は、かかる不都合を回避するために入れられているものである。つまり、先回の検出パターンと今回の検出パターンが異なるということは、正しいパターン遷移であるかも知れないが、場合によっては、上記のような間違ったパターン(たとえば、図40の1011)を検出している可能性があるため、そのようなパターン遷移を検出した際には、安全のために、マウスコマンド出力処理には進まず、しかも、遷移点から外れるのを所定時間(Td)だけ待つ(ステップS46)ようにしたものである。この所定時間(Td)は、少なくともnビット分に相当する時間、つまり1単位の時間であればよい。遷移点を検出した時点の所定時間(Td)経過後からパターン検出を再開すれば、たとえば、図40の例の場合であっても、間違って第二のパターン系列(1110)を判定することはなく、遷移点を過ぎた後で正しいパターン(第三のパターン系列)を判定することができる。
<変形例>
なお、本発明の実施態様は、以上の例示のものに限らず、様々な変形例や発展例を含むことはもちろんであり、たとえば、以下のようにしてもよい。
図41は、発光ユニットの他の例を示す外観図である。この発光ユニット2′は、前記の実施形態における発光ユニット2のすべての機能を有することに加え、さらに、通常のレーザポインタとしても使えるようにした点(兼用型にした点)に特徴がある。すなわち、この発光ユニット2′は、その手持ちに適したケース20′の内部に、図示は略したが、前記実施形態における発光ユニット2のすべての構成を含むとともに、さらに、レーザポインタ部116を含んでおり、このレーザポインタ部116からのレーザ光線117をケース20′の端面から外部に向けて投射することができるようになっている。このため、この発光ユニット2′においては、マウス操作(たとえば、右クリック操作や右クリック操作)のためのいくつかのボタン118、119を備えるほか、この発光ユニット2′をマウス操作として用いるか、それとも、通常のレーザポインタとして用いるかを切り替えるためのセレクトスイッチ120を備えている。このセレクトスイッチ120は、たとえば、前方側を押すとレーザ発光用のレンズ121からレーザ光線117が発射され、また、後方側を押すとマウス操作用のレンズ24aからスポット光3が発射されるようになっている。
したがって、この発光ユニット2′によれば、レーザポインタとしても使用できる兼用型としたので、マウス操作が不要なプレゼンテーション等においても有効に使用することがで、利便性を向上できる。