(57)【要約】【課題】マーカーを組み込むことなく、誤動作が少なく、高速動作可能なカメラポインタ装置を提供する。【解決手段】表示画面２０をカメラユニット３１で撮影し、この撮影した画像から、画像認識により、表示画面を認識する。すなわち、指示座標演算部３２で、撮像した画像から、背景以外をラベリングし、ラベルの画素数が最大のものを表示画面と推定し、表示画面と推定したラベルの４隅のカメラ上での座標を求め、これら４隅の座標から、カメラの光軸が指示する表示画面上の絶対座標を計算する。これにより、ＬＥＤ等のマーカーが不要で、誤動作が少なく高速動作可能なカメラポインタ装置が実現できる。【選択図】図２
2008123090.tif 000002
【特許請求の範囲】
【請求項１】
ポインタを表示する表示画面を含む画像を撮影するカメラユニットと、
前記カメラユニットで撮影した画像中の画素を複数の領域にグループ化するグループ化手段と、
前記複数の領域から前記表示画面に対応する領域を判別する判別手段と、
前記表示画面に対応すると判別された領域の前記撮像画面中の位置に基づいて、表示画像中のポインタの座標を演算する座標演算部と、
有することを特徴とするカメラポインタ装置。
【請求項２】
前記判別手段は、各領域の面積に基づいて、表示画面に対応する領域を判別することを特徴とする請求項１に記載のカメラポインタ装置。
【請求項３】
前記判別手段は、各領域の形状に基づいて、表示画面に対応する領域を判別することを特徴とする請求項１に記載のカメラポインタ装置。
【請求項４】
前記判別手段は、前記各領域を平行四辺形に変換し、予め設定した前記表示画面のアスペクト比の平行四辺形であることを満たす領域のうち、画素数が最大の領域を前記表示画面と推定することを特徴とする請求項３に記載のカメラポインタ装置。
【請求項５】
前記グループ化手段は、ラベル付与手段を有することを特徴とする請求項１乃至４に記載のカメラポインタ装置。
【請求項６】
前記ラベル付与手段は、画像メモリの画像データを上書きすることによりラベル付与を実行することを特徴とする請求項５に記載のカメラポインタ装置。
【請求項７】
前記ラベル付与手段は、既に使用されたラベルの中から、このラベルが付与された領域の画素数が所定値以下でかつ増加の見込みがない場合に、この付与された領域を前記判別手段の判別対象から除外するとともに、このラベルを新たな領域へのラベル付与に再使用するために回収するラベル回収手段を更に備えたことを特徴とする請求項５に記載のカメラポインタ装置。
【請求項８】
前記ラベル回収手段が行う画素数が増加の見込みがあるかどうかの判断は、ラベル不足時の画素位置に対して１ライン分前までの画素の範囲に仮ラベルのインデックスがあるかどうかにより行うことを特徴とする請求項７に記載のカメラポインタ装置。
【請求項９】
背景と、背景以外の１つ以上のオブジェクトからなる画像データの画素に対し、有限個数のラベルからなるラベルプールから、前記オブジェクトにラベル番号を付与するラベリング方法であって、
１回目の画像の走査で付与した仮ラベルを２回目の画像の走査で最終ラベルに置換する際に、利用する仮ラベルと最終ラベルとの対応関係を保持するラベル対応テーブルを仮ラベルと最終ラベルとが等しくなるように初期化する第１のステップと、
前記１回目の画素の走査では、注目画素が背景でないとき、前記注目画素の周辺に仮ラベルが付与された画素がない場合に、前記ラベルプールから新しいラベルを取り出して、仮ラベルとして前記注目画素に付与する新規ラベル処理を実行する第２のステップと、
前記注目画素の周辺に仮ラベルが付与されている場合に、前記周辺仮ラベルと前記ラベル対応テーブルから周辺最終ラベルを取得する第３のステップと、
前記周辺最終ラベルが全て同一の場合に、前記注目画素に前記周辺ラベルを仮ラベルとして付与する同一ラベル処理を実行する第４のステップと、
前記周辺最終ラベルが異なる場合に、前記周辺最終ラベルのうち1つを統合ラベルに、残りを非統合ラベルに決定し、前記注目画素に前記統合ラベルを仮ラベルとして付与すると共に、前記ラベル対応テーブルで前記非統合ラベルに対応する仮ラベルを前記統合ラベルに対応付けし直すラベル統合処理を実行する第５のステップと、
前記２回目の画像の走査で、仮ラベルを前記ラベル対応テーブルを用い、最終ラベルへの置換を実行すると共に、前記新規ラベル処理を実行中に、前記ラベルプールのラベルを使い切った場合に、前記ラベル対応テーブルの最終ラベル毎に、各々対応する仮ラベルを付与した画素数を集計した総画素数が、所定値以下かつ増加の見込みがない最終ラベルをノイズラベルとして認識し、前記ラベル対応テーブルで前記ノイズラベルとして認識された最終ラベルに対応する仮ラベルを前記背景に相当する無効ラベルに対応付け直す第６のステップと、
前記ラベル対応テーブルに基づき、既に付与した仮ラベルを対応する最終ラベルに置換する第７のステップと、
前記ラベル対応テーブルで最終ラベルと異なる対応付けをされた仮ラベルを前記ラベルプールに戻す第８のステップと、
前記ラベル対応テーブルを、仮ラベルと最終ラベルが等しくなるように初期化する第９のステップと、
を備えたことを特徴とするラベリング方法。
【請求項１０】
背景と、背景以外の１つ以上のオブジェクトからなる画像データの画素に対し、有限個数のラベルからなるラベルプールから、前記オブジェクトにラベル番号を付与するラベリング方法をコンピュータに実行させるためのプログラムであって、
１回目の画像の走査で付与した仮ラベルを２回目の画像の走査で最終ラベルに置換する際に、利用する仮ラベルと最終ラベルとの対応関係を保持するラベル対応テーブルを仮ラベルと最終ラベルとが等しくなるように初期化する第１のステップと、
前記１回目の画素の走査では、注目画素が背景でないとき、前記注目画素の周辺に仮ラベルが付与された画素がない場合に、前記ラベルプールから新しいラベルを取り出して、仮ラベルとして前記注目画素に付与する新規ラベル処理を実行する第２のステップと、
前記注目画素の周辺に仮ラベルが付与されている場合に、前記周辺仮ラベルと前記ラベル対応テーブルから周辺最終ラベルを取得する第３のステップと、
前記周辺最終ラベルが全て同一の場合に、前記注目画素に前記周辺ラベルを仮ラベルとして付与する同一ラベル処理を実行する第４のステップと、
前記周辺最終ラベルが異なる場合に、前記周辺最終ラベルのうち1つを統合ラベルに、残りを非統合ラベルに決定し、前記注目画素に前記統合ラベルを仮ラベルとして付与すると共に、前記ラベル対応テーブルで前記非統合ラベルに対応する仮ラベルを前記統合ラベルに対応付けし直すラベル統合処理を実行する第５のステップと、
前記２回目の画像の走査で、仮ラベルを前記ラベル対応テーブルを用い、最終ラベルへの置換を実行すると共に、前記新規ラベル処理を実行中に、前記ラベルプールのラベルを使い切った場合に、前記ラベル対応テーブルの最終ラベル毎に、各々対応する仮ラベルを付与した画素数を集計した総画素数が、所定値以下かつ増加の見込みがない最終ラベルをノイズラベルとして認識し、前記ラベル対応テーブルで前記ノイズラベルとして認識された最終ラベルに対応する仮ラベルを前記背景に相当する無効ラベルに対応付け直す第６のステップと、
前記ラベル対応テーブルに基づき、既に付与した仮ラベルを対応する最終ラベルに置換する第７のステップと、
前記ラベル対応テーブルで最終ラベルと異なる対応付けをされた仮ラベルを前記ラベルプールに戻す第８のステップと、
前記ラベル対応テーブルを、仮ラベルと最終ラベルが等しくなるように初期化する第９のステップと、
をコンピュータに実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）ディスプレイやプロジェクタ等の表示デバイスにメニュー等を映し出し、この表示デバイスの画像をカメラで撮影し、カメラの光軸をメニューに向けて動かすことで、メニューの選択による入力が行えるようにしたカメラポインタ装置、及びこのようなカメラポインタ装置に用いて好適なラベリング方法及びプログラムに関する。
【背景技術】
【０００２】
ＬＣＤディスプレイやプロジェクタ等の表示デバイスにメニュー等を映し出し、この表示デバイスの画像をカメラで撮影し、カメラの光軸をメニューに向けて動かすことで、メニューの選択による入力が行えるようにしたポインティングデバイスの開発が進められている。このような従来のポインティングデバイスでは、表示デバイスの表示画面と、カメラの撮影画面とのマッチングを予め設定しておき、カメラで撮影した連続画像のずれ量から、カメラの移動量を求め、この移動量を入力インターフェースに送るようにしている。
【０００３】
また、このようなポインティングデバイスとしては、特許文献１に示されているように、表示デバイス上の４隅に、赤外線ＬＥＤ（Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）等の高輝度の発光体をマーカーとして予め設置又は組み込み、このマーカーをカメラで撮影し、認識して求めた４隅の座標から入力座標を計算するものが提案されている。
【特許文献１】特開２００３−２０８２６０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に示されるポインティングデバイスでは、表示デバイスの４隅に、予めマーカーを組み込んでおく必要がある。このため、マーカーを組み込んでいないテレビジョン受像機等に適用する場合には、マーカーを後付けで精度良く設置する必要がある。このように、マーカーを後付けで精度良く設置するのは、一般的に非常に困難である。また、テレビジョン受像機等にマーカーを組み込むと、見栄えが悪くなるという問題が生じる。
【０００５】
また、プロジェクタのような投射型デバイスでは、表示画面の中にマーカーを写し込むことになるため、表示内容の一部を隠すか、あるいは有効表示領域を縮小することになってしまう。
【０００６】
そこで、表示デバイスの画像をカメラで撮影し、カメラの撮影画像の画像認識により、表示デバイスの表示画面の４隅を認識させて、入力座標を計算することが考えられる。
【０００７】
このような画像認識を行う際には、カメラの撮影画面を２値化し、この２値化画像の背景以外の画素に対して、隣接する画素をグループ化し、同一のラベル番号を付与するようなラベリングの処理が行われる。
【０００８】
このようなラベリングの処理は、一般的には、処理の高速化のために、最初のパスでは、左上から右下へ順次走査し、画素データに仮ラベルを付与し、最後のパスで、仮ラベルの同一情報を基に仮ラベルを統合し、仮ラベルを本ラベルに置き換えるような２つのパスでの処理が行われる。
【０００９】
例えば、図２４（Ａ）に示すような２値画像に対して、１回目のスキャンにおいて、図２４（Ｂ）に示すように、仮ラベル（ラベルＡ、Ｂ、Ｃ、Ｄ）が付けられる。その後、図２４（Ｂ）に示すように、仮ラベルの統合が行われる。この例では、ラベルＣがラベルＡに統合され、ラベルＤがラベルＣに付け替えられている。
【００１０】
しかしながら、このような従来の方式では、画像サイズが大きくなると必要な仮ラベルの数が多くなり、メモリを多く消費するという欠点がある。特に、メモリ容量と帯域を節約するために、８ビットのモノクロ画像（１画素１バイト）を、上書きして２値化（背景のみ「０」に置換）し、更にラベリングで上書きするような画像処理を行う場合、使える仮ラベルの数が最大２５５と極端に少なく、通常は仮ラベルが不足する。
【００１１】
そこで、本発明は、上述の課題を鑑みてなされたものであり、マーカーを組み込むことなく、高速動作可能なカメラポインタ装置を提供することにある。
【００１２】
また、メモリを有効利用し、ラベル数の不足に陥ることなく、ラベルを付けることができるラベリング方法を提供することにある。
【課題を解決するための手段】
【００１３】
本発明は、上記の課題を解決するために、以下の事項を提案している。
（１）本発明は、ポインタを表示する表示画面を含む画像を撮影するカメラユニットと、前記カメラユニットで撮影した画像中の画素を複数の領域にグループ化するグループ化手段と、前記複数の領域から前記表示画面に対応する領域を判別する判別手段と、前記表示画面に対応すると判別された領域の前記撮像画面中の位置に基づいて、表示画像中のポインタの座標を演算する座標演算部と、有することを特徴とするカメラポインタ装置を提案している。
【００１４】
（２）本発明は、背景と、背景以外の１つ以上のオブジェクトからなる画像データの画素に対し、有限個数のラベルからなるラベルプールから、前記オブジェクトにラベル番号を付与するラベリング方法であって、１回目の画像の走査で付与した仮ラベルを２回目の画像の走査で最終ラベルに置換する際に、利用する仮ラベルと最終ラベルとの対応関係を保持するラベル対応テーブルを仮ラベルと最終ラベルとが等しくなるように初期化する第１のステップと、前記１回目の画素の走査では、注目画素が背景でないとき、前記注目画素の周辺に仮ラベルが付与された画素がない場合に、前記ラベルプールから新しいラベルを取り出して、仮ラベルとして前記注目画素に付与する新規ラベル処理を実行する第２のステップと、前記注目画素の周辺に仮ラベルが付与されている場合に、前記周辺仮ラベルと前記ラベル対応テーブルから周辺最終ラベルを取得する第３のステップと、前記周辺最終ラベルが全て同一の場合に、前記注目画素に前記周辺ラベルを仮ラベルとして付与する同一ラベル処理を実行する第４のステップと、前記周辺最終ラベルが異なる場合に、前記周辺最終ラベルのうち1つを統合ラベルに、残りを非統合ラベルに決定し、前記注目画素に前記統合ラベルを仮ラベルとして付与すると共に、前記ラベル対応テーブルで前記非統合ラベルに対応する仮ラベルを前記統合ラベルに対応付けし直すラベル統合処理を実行する第５のステップと、前記２回目の画像の走査で、仮ラベルを前記ラベル対応テーブルを用い、最終ラベルへの置換を実行すると共に、前記新規ラベル処理を実行中に、前記ラベルプールのラベルを使い切った場合に、前記ラベル対応テーブルの最終ラベル毎に、各々対応する仮ラベルを付与した画素数を集計した総画素数が、所定値以下かつ増加の見込みがない最終ラベルをノイズラベルとして認識し、前記ラベル対応テーブルで前記ノイズラベルとして認識された最終ラベルに対応する仮ラベルを前記背景に相当する無効ラベルに対応付け直す第６のステップと、前記ラベル対応テーブルに基づき、既に付与した仮ラベルを対応する最終ラベルに置換する第７のステップと、前記ラベル対応テーブルで最終ラベルと異なる対応付けをされた仮ラベルを前記ラベルプールに戻す第８のステップと、前記ラベル対応テーブルを、仮ラベルと最終ラベルが等しくなるように初期化する第９のステップと、を備えたことを特徴とするラベリング方法を提案している。
【００１５】
（３）本発明は、背景と、背景以外の１つ以上のオブジェクトからなる画像データの画素に対し、有限個数のラベルからなるラベルプールから、前記オブジェクトにラベル番号を付与するラベリング方法をコンピュータに実行させるためのプログラムであって、１回目の画像の走査で付与した仮ラベルを２回目の画像の走査で最終ラベルに置換する際に、利用する仮ラベルと最終ラベルとの対応関係を保持するラベル対応テーブルを仮ラベルと最終ラベルとが等しくなるように初期化する第１のステップと、前記１回目の画素の走査では、注目画素が背景でないとき、前記注目画素の周辺に仮ラベルが付与された画素がない場合に、前記ラベルプールから新しいラベルを取り出して、仮ラベルとして前記注目画素に付与する新規ラベル処理を実行する第２のステップと、前記注目画素の周辺に仮ラベルが付与されている場合に、前記周辺仮ラベルと前記ラベル対応テーブルから周辺最終ラベルを取得する第３のステップと、前記周辺最終ラベルが全て同一の場合に、前記注目画素に前記周辺ラベルを仮ラベルとして付与する同一ラベル処理を実行する第４のステップと、前記周辺最終ラベルが異なる場合に、前記周辺最終ラベルのうち1つを統合ラベルに、残りを非統合ラベルに決定し、前記注目画素に前記統合ラベルを仮ラベルとして付与すると共に、前記ラベル対応テーブルで前記非統合ラベルに対応する仮ラベルを前記統合ラベルに対応付けし直すラベル統合処理を実行する第５のステップと、前記２回目の画像の走査で、仮ラベルを前記ラベル対応テーブルを用い、最終ラベルへの置換を実行すると共に、前記新規ラベル処理を実行中に、前記ラベルプールのラベルを使い切った場合に、前記ラベル対応テーブルの最終ラベル毎に、各々対応する仮ラベルを付与した画素数を集計した総画素数が、所定値以下かつ増加の見込みがない最終ラベルをノイズラベルとして認識し、前記ラベル対応テーブルで前記ノイズラベルとして認識された最終ラベルに対応する仮ラベルを前記背景に相当する無効ラベルに対応付け直す第６のステップと、前記ラベル対応テーブルに基づき、既に付与した仮ラベルを対応する最終ラベルに置換する第７のステップと、前記ラベル対応テーブルで最終ラベルと異なる対応付けをされた仮ラベルを前記ラベルプールに戻す第８のステップと、前記ラベル対応テーブルを、仮ラベルと最終ラベルが等しくなるように初期化する第９のステップと、をコンピュータに実行させるためのプログラムを提案している。
【発明の効果】
【００１６】
本発明によれば、マーカーを組み込むことなく、高速動作可能なカメラポインタ装置を提供できるという効果がある。  
【００１７】
また、メモリを有効利用し、ラベル数の不足に陥ることなく、ラベルを付けることができるラベリング方法を提供できるという効果がある。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施形態について、図面を用いて、詳細に説明する。
なお、本実施形態における構成要素は適宜、既存の構成要素等との置き換えが可能であり、また、他の既存の構成要素との組合せを含む様々なバリエーションが可能である。したがって、本実施形態の記載をもって、特許請求の範囲に記載された発明の内容を限定するものではない。
【００１９】
［第１の実施形態］
＜システムの概要＞
図１は、本発明の第１の実施形態に係るカメラポインタ装置を用いたシステムの概要を示すものである。
図１において、情報機器１は、プレゼンテーションツール等が動作するパーソナルコンピュータや、デジタルテレビのチューナや、録画再生機等のＡＶ（Ａｕｄｉｏ  Ｖｉｓｕａｌ）機器等である。情報機器１は、図２に示すように、情報処理部１１と、座標受信部１２とを有する。
【００２０】
表示装置２は、プロジェクタや、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）ディスプレイ、ＣＲＴ（Ｃａｔｈｏｄｅ−Ｒａｙ  Ｔｕｂｅ）ディスプレイ等の表示デバイスである。表示装置２には、情報機器１から表示データが供給される。表示装置２には、この情報機器１からの表示データに基づいて、表示画面２０が表示される。
【００２１】
カメラポインタ装置３は、利用者がポインタ操作を行い、メニューの設定等の操作を行うものである。すなわち、表示装置２には、情報機器１からの表示データに基づいて、画像が表示される。この画像には、オブジェクトの選択表示、メニュー画面や、マウスカーソル、ポインタ等が含まれている。利用者は、表示画面２０上の指示したい対象に向けて、カメラポインタ装置３を操作する。このように、カメラポインタ装置３を指示したい対象に向けることで、マウスカーソルの移動やポインタの移動、オブジェクトやメニューの選択操作を行うことができる。
【００２２】
カメラポインタ装置３は、図２に示すように、カメラユニット３１と、指示座標演算部３２と、座標送信部３３とから構成される。また、カメラポインタ装置３は、利用者が操作し易いように、レーザポインタのようなペン型や円柱形、或いはリモコンのような直方体等の形状とされている。
【００２３】
図２は、本発明の第１の実施形態に係るカメラポインタ装置を用いたシステムの構成を示すブロック図である。
【００２４】
図２において、表示装置２には、情報機器１の情報処理部１１からの表示データに基づいて、メニュー等のコマンド対象を含む表示画面２０が表示される。この表示画面２０は、カメラポインタ装置３のカメラユニット３１で撮影される。本実施形態では、色情報は不要なため、以下の説明において、カメラユニット３１からの画像は、輝度情報、つまりモノクログレースケールとする。また、解像度や露光時間の観点から、カメラユニット３１としては、モノクロタイプの撮像素子を使用したものの方が望ましい。
【００２５】
カメラユニット３１の撮像画像データは、指示座標演算部３２に送られる。指示座標演算部３２は、カメラユニット３１の撮像画像データの撮像画像中から表示画面に対応する領域として判別された領域の撮像画像中の位置に基づいて、表示画像中のポインタの座標を演算する。より具体的には、カメラユニット３１の撮像画像データから画像認識により、表示画面２０の部分を抽出し、表示画面２０の部分の４隅の座標から演算により、カメラユニット３１の光軸と表示画面２０との交点（後述する図３の点Ｐ）の座標を算出する。
【００２６】
画像認識は、カメラユニット３１の撮像画像データを２値化し、この２値化した画像データの背景以外をラベリング（撮像画像中の画素を複数のグループにグループ化し、各領域の画素数をカウントしてラベル付けを行う）し、ラベリングされた複数の領域から最大の面積となる領域を判定することにより行われる。求められたこの絶対座標は、表示画面２０の解像度に関係ないように、「０」から「１」の小数で出力されるものとされる。そして、求められた絶対座標は、座標送信部３３に送られ、座標送信部３３から情報機器１に向けて、無線等（有線も可）により送信される。
【００２７】
カメラポインタ装置３の座標送信部３３から送信された絶対座標は、情報機器１の座標受信部１２で受信される。そして、座標受信部１２で受信された絶対座標は、情報処理部１１に送られる。
【００２８】
情報処理部１１は、受信した座標に基づいて、マウスカーソルの移動や、ポインタ（点、丸、楕円、下線、四角など）の表示、オブジェクトの選択表示（表のセルや文字列の文字色や背景色の変更など）、メニュー画面でのメニュー項目の選択等を行う。
【００２９】
このように、本実施形態を適用したカメラポインタ装置２では、カメラユニット３１で撮影した撮像画像データの背景以外のラベリングを行い、最大面積のラベル（が付与された領域）を表示画面として推定し、この推定された表示画面の４隅の座標からカメラの光軸が指示する表示画面上の絶対座標を計算させるようにしている。これにより、ＬＥＤ等のマーカーを用いずに、誤動作が少なく、高速動作可能なカメラポインタ装置が実現できる。
【００３０】
＜カメラポインタ装置における絶対座標を求める計算方法＞
次に、本実施形態のシステムにおけるカメラポインタ装置３について詳述する。
上述のように、カメラポインタ装置３は、表示装置２の表示画面２０を撮影し、カメラポインタ装置３のカメラユニット３１の中心を表示画面２０上の指示したい対象に向けて指し示すことで、ポインタの操作を行うことができる。このカメラポインタ装置３の動作原理について、以下に詳述する。
【００３１】
先ず、表示装置２による表示画面２０と、表示画面を撮影したカメラユニット３１の撮影画面３０との関係を明らかにし、絶対座標を求める計算方法について説明する。
【００３２】
図３は、表示装置２による表示画面２０と、表示画面２０を撮影したカメラユニット３１の撮影画面３０との関係を示すものである。図３では、カメラユニット３１の水平方向、垂直方向、光軸方向をそれぞれのベクトルｕ、ｖ、ｗとするｕ−ｖ−ｗ座標系で表現されている。
【００３３】
図３において、表示画面２０のＰ０、Ｐ１、Ｐ２、Ｐ３上の点Ｐがカメラユニット３１（の光軸）で指示している点である。また点Ｏは原点を表している。
【００３４】
カメラユニット３１による撮影により、長方形の表示画面Ｐ０、Ｐ１、Ｐ２、Ｐ３が光軸に垂直（つまり法線ベクトルがｗ）かつ（０、０、１）を通る平面状に、４角形Ｑ０、Ｑ１、Ｑ２、Ｑ３として投影される。
【００３５】
このとき、射影前の表示画面の長方形を始点ベクトル、水平ベクトル、垂直ベクトルを
【００３６】
【数１】
2008123090.tif 000003
【００３７】
とすると、長方形上の任意の点Ｐ（これは求める点でもある）は、
【００３８】
【数２】
2008123090.tif 000004
【００３９】
と表現できる。つまり、このｍとｎを求めることが指示座標（絶対座標）を求めることになる。
【００４０】
同様に、長方形の頂点は（式１）により、
【００４１】
【数３】
2008123090.tif 000005
【００４２】
と表現できる。
【００４３】
そして、点Ｐの射影は、Ｐ（＝ＯＰ）とスクリーンとの交点である。
【００４４】
同様に、（式３）で表現される長方形の頂点もスクリーン上の４角形Ｑ０、Ｑ１、Ｑ２、Ｑ３に射影されるので、
【００４５】
【数４】
2008123090.tif 000006
【００４６】
が成り立つ。ここで、
【００４７】
【数５】
2008123090.tif 000007
【００４８】
とすると、
【００４９】
【数６】
2008123090.tif 000008
【００５０】
が成り立つ。ここで撮影した４角形の頂点の座標を
【００５１】
【数７】
2008123090.tif 000009
【００５２】
とすると、（式６）は
【００５３】
【数８】
2008123090.tif 000010
【００５４】
になる。（式８）を解くことでｊとｋとは簡単に求めることができる。
【００５５】
一方、カメラユニット３１が指示する点Ｐは光軸上なので、
【００５６】
【数９】
2008123090.tif 000011
【００５７】
が成り立つ。ここで（式４）、（式５）により
【００５８】
【数１０】
2008123090.tif 000012
【００５９】
なので、
【００６０】
【数１１】
2008123090.tif 000013
【００６１】
を解くことでｍとｎとは簡単に求められる。
【００６２】
連立方程式
【００６３】
【数１２】
2008123090.tif 000014
【００６４】
の解法
【００６５】
【数１３】
2008123090.tif 000015
【００６６】
を用いることで（式８）、（式１１）は機械的に計算される。
【００６７】
以上のように、カメラユニット３１の撮像画面３０から、表示画面２０を抽出し、この表示画面２０の４隅の座標から、カメラユニット３１の光軸と表示画面２０との交点の絶対座標を求めることができる。
【００６８】
＜カメラポインタ装置における指示座標演算部の構成＞
次に、カメラポインタ装置３における指示座標演算部３２について説明する。
指示座標演算部３２は、前述したように、撮影した画像を基に、カメラユニット３１の光軸と表示画面２０との交点を、指示すべき表示画面２０上の絶対座標として求めるものである。
【００６９】
指示座標演算部３２は、図４に示すように、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）５２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）５３と、画像メモリ５４とから構成されている。これらＣＰＵ５１と、ＲＯＭ５２と、ＲＡＭ５３と、画像メモリ５４とは、ともにバス５５に接続されている。また、このバス５５には、カメラユニット３１や、座標送信部３３も、直接又は不図示のインターフェースを介して接続されている。
【００７０】
ＲＯＭ５２は、フラッシュメモリやマスクＲＯＭなどの不揮発性メモリであり、演算に必要なパラメータなどのデータと、ＣＰＵ５１で実行するプログラムとが格納されている。
【００７１】
ＲＡＭ５３は、ＣＰＵ５１が処理しているデータ等を一時的に記憶するメインメモリである。
【００７２】
画像メモリ５４は、カメラユニット３１から取り込んだ画像データや、ＣＰＵ５１が処理しているデータ等を一時的に記憶する。画像メモリ５４には、カメラユニット３１から取り込んだ画像データが蓄積され、この画像を２値化して上書きし、更に、ラベリングで上書きするようにしている。また、処理の高速化のために、画像メモリ５４でのデータコピー（メモリアクセス）を極力排除する目的から、画像データの変更部分のみ上書きしている。すなわち、ラベリング動作を画像メモリ５４の画像データの上書きにより実行することにより、メモリヘのアクセスを極力行わないようにして、高速動作を可能としている。
【００７３】
なお、図４に示す構成の代わりに、処理の一部または全部をロジック回路で置き換えた構成にしても良い。
【００７４】
＜カメラポインタ装置における指示座標演算部の全体処理フロー＞
図５は、指示座標演算部３２を構成するＣＰＵ５１が実行する処理の全体フローを示すものである。なお、各処理の詳細については、後に説明する。
【００７５】
図５において、先ず、カメラユニット３１で画像が撮影されたら、カメラユニット３１から取り込まれた画像を、輝度が閾値未満の背景（画素データは「０」）と、輝度が閾値以上の背景以外（画素データは非「０」、表示画面を含む）とに２値化する（ステップＳ１）。このときの閾値は、予め設定した固定値を用いてもいいが、判別分析法などで動的に決定することが望ましい。
【００７６】
次に、背景以外の画素に対してラベリングを行う（ステップＳ２）。ラベリングは、隣接する画素をグループ化する操作を行うと共に、画素数も同時にカウントする処理である。このラベリング処理の詳細については、後に詳述する。
【００７７】
次に、最大面積のラベルを抽出する処理を行い、カメラユニット３１の撮像画面中から、表示画面２０の部分を推定する（ステップＳ３）。つまり、通常、表示画面２０の部分は周囲より明るく、また十分な大きさがあるので、最大の画素数（最大面積）を持つ。よって、最大面積のラベルを抽出することで、表示画面２０が推定できる。
【００７８】
例えば、周囲が暗い（真っ暗な）環境下で、表示画面２０を撮影すると、図６（Ａ）に示すように、表示画面２０（同図太線４角形Ａ１）のみが撮像画面３０中に映し出される。この場合、最大面積のラベルを抽出すれば、Ａ１で示される表示画面２０の部分が抽出される。
【００７９】
また、周囲が明るい（薄暗いのも含む）環境下では、図６（Ｂ）に示すように、表示画面２０（同図（Ｂ）における太線４角形Ｂ１）以外のもの（同図（Ｂ）における細線４角形Ｃ１、Ｃ２、Ｃ３等）がノイズとして撮像画面３０中に映し出されている。上述のようなステップＳ１〜Ｓ３の処理を行い、最大面積のラベルを抽出することで、図６（Ｂ）に示すようにノイズを含む場合でも、表示画面のみを推定し、Ｂ１で示される表示画面２０の部分を抽出することができる。
【００８０】
図５において、ステップＳ１〜Ｓ３の処理により、最大面積のラベルを抽出することで、表示画面２０が推定できたら、推定された表示画面２０の４隅の画像データ上での座標を求める（ステップＳ４）。そして、この４隅の座標から、前述したしたように、カメラユニット３１の光軸と表示画面２０との交点の絶対座標を計算する（ステップＳ５）。
【００８１】
＜ラベリング処理の概要＞
次に、図５におけるステップＳ２のラベリング処理について説明する。
ラベリングでは、２値化画像の背景以外の画素に対して、隣接する画素をグループ化し、同一のラベル番号を付与する処理が行われる。このようなラベリングの処理は、一般的には、処理の高速化のために、２つのパスで処理が行われる。
【００８２】
つまり、図７はラベリング処理の説明図である。
図７に示すように、撮像画面３０に対して、最初のパスでは、左上から右下へ順次走査し、画素データに仮ラベル（またはインデックス）を付与する。この際、以下のルールで仮ラベルを付与する。
【００８３】
（１）走査済みでかつ周囲の画素位置（例えば上と左）に仮ラベルが付与されていないときには、新しい仮ラベルを付与する。
（２）周囲の画素位置に全て同じ仮ラベルが付与されているときには、その仮ラベルを付与する。
（３）周囲の画素位置に異なる仮ラベルが付与されているときには、何れかの仮ラベルを付与するとともに、異なる仮ラベルが全て同一であるという情報を作成する。
【００８４】
最後のパスで、仮ラベルの同一情報を基に仮ラベルを統合し、仮ラベルを本ラベルに置き換える。
【００８５】
しかしながら、このような従来の方式では、画像サイズが大きくなると、必要な仮ラベルの数が多くなり、メモリを多く消費するという欠点がある。また、特に、メモリ容量と帯域を節約するために、図４における画像メモリ５４に蓄積された８ビットのモノクロ画像（１画素１バイト）を、上書きして２値化（背景のみ０に置換）し、更にラベリングで上書きするような画像処理を行う場合、使える仮ラベルの数が最大２５５と極端に少なく、通常は仮ラベルが不足する。仮に、１画素２バイトでも、最大６５５３５ラベルであり、３０万画素以上の画像データをラベリングするにはラベルが足りなくなる場合がある。
【００８６】
これに対し、単純に仮ラベルが不足した時点で、仮ラベルの同一情報を基に仮ラベルを統合し、仮ラベルを新たな仮ラベルに置き換えるという仮ラベル回収方法が考えられる。
【００８７】
しかしながら、本実施形態のように、周囲が明るい（薄暗い場合も含む）環境下で、図５のステップＳ１における２値化処理を行うと、孤立雑音が多く発生する。また、図６（Ｂ）に示したように、ノイズ画像Ｃ１、Ｃ２、Ｃ３が発生しており、更に、図示できないほど小さな孤立雑音以外のノイズも存在しており、上述の仮ラベル回収方法では、仮ラベルの回収がうまく行われずに、仮ラベルが不足に陥り易い。
【００８８】
そこで、本実施形態では、最適な仮ラベルの回収と再利用が可能なラベリング処理を行い、ラベルの不足に陥らないようにしている。
【００８９】
本実施形態におけるラベリング処理の要点は、以下の通りである。
（１）仮ラベルを付与している最中に、ある画素で仮ラベルを使い切ったとき、仮ラベルの振り直しを行う前に、ノイズ等で無駄に使われた仮ラベルをノイズラベルとして無効化してから回収する。
（２）ノイズラベルの判断基準は、同一のラベルの画素数が所定値以下かつ、不足時点の画素から丁度１ライン分前までの画素（真上の画素から左隣の画素）に付与されていないもの、つまり同一のラベルが付された画素数が少なく、かつ画素数増加が見込まれないラベルとする。
【００９０】
＜ラベリング処理の全体フロー＞
次に、具体的なラベリング手法を、ラベルテーブルのデータ形式とフローチャートを使って説明する。
【００９１】
ラベルテーブルのデータ形式は、図８に示すように、所定数Ｎ（例えば１画素１バイトの場合２５６個）の配列として定義される。そして、配列の各要素は、ラベル（番号）、画素数、リスト、範囲から構成される。２値化済みの画像データは、ラベルテーブルヘのインデックス番号に置換される。ある画素の最終的なラベルは、この画素のインデックス番号が指すラベルテーブルのラベル（番号）になる。
【００９２】
画素数は、最終的なラベルの画素数であり、ラベル（番号）をインデックスとしてラベルテーブルにアクセスする。
【００９３】
リストは、あるラベル（番号）を参照するインデックス番号の連結リストであり、次のインデックス番号が格納されている。つまり、ラベル（番号）をリストの先頭とし、次のインデックス番号のラベルテーブルにアクセスすることでリストを順に辿ることが可能である。なお、リストに末尾情報を持たせると、リスト同士の連結が高速化できる。
【００９４】
範囲は、あるラベル（番号）を最終ラベルとする画素の範囲を保持する。この範囲情報は、後述するノイズ除去処理や、再ラベル処理を高速化するために利用される。
【００９５】
図９は、図５におけるラベリング処理ステップＳ２の詳細を示すフローチャートである。図９に示すように、ラベリング処理を行う場合には、先ず、ラベルテーブルの初期化を行う（ステップＳ１０１）。
【００９６】
次に、画素位置を、先頭位置（図７の左上隅）に設定する（ステップＳ１０２）。そして、画素が「０」（つまり背景）かどうかを判断する（ステップＳ１０３）。
【００９７】
画素が「０」の場合（ステップＳ１０３の「Ｙｅｓ」）には、何も処理を行わず、画素の位置を進める（ステップＳ１０４）。そして、全画素データを終了したかどうかを判断し（ステップＳ１０５）、全画素データが終了していなければ（ステップＳ１０５の「Ｎｏ」）、ステップＳ１０３にリターンする。
【００９８】
一方、ステップＳ１０３において、画素が「０」でないならば（ステップＳ１０３の「Ｎｏ」）、上と左の画素のラベル（本実施形態では上下左右の連結のみ扱い、斜め方向は考慮しない）を取得する（ステップＳ１０６）。取得した画素には既にインデックスが書き込まれているので、このインデックスで、図８のラベルテーブルのラベル（番号）にアクセスする。なお、ラベルテーブルの「０」のラベルには、「０」が設定されている。また、図７の画像データの上辺と左辺で、参照すべき画素がない場合は、ラベルは「０」とする。そして、ステップＳ１０７、ステップＳ１０８で、２つのラベルを条件で振り分けて処理を行う。
【００９９】
先ず、２つのラベルが共に「０」かどうかの判定を行う（ステップＳ１０７）。２つのラベルが共に「０」ならば（ステップＳ１０７の「Ｙｅｓ」）、新規ラベル処理を行う（ステップＳ１０９）。一方、ステップＳ１０７で２つのラベルが共に「０」でないならば（ステップＳ１０７の「Ｎｏ」）、２つのラベルが同一（ここでは一方のラベルが「０」の場合も同一と見なす）かの判定を行う（ステップＳ１０８）。２つのラベルが同一ならば（ステップＳ１０８の「Ｙｅｓ」）、同一ラベル処理を行い（ステップＳ１１０）、同一でないならば（ステップＳ１０８の「Ｎｏ」）、ラベル統合処理を行う（ステップＳ１１１）。なお、新規ラベル処理（ステップＳ１０９）、同一ラベル処理（ステップＳ１１０）、ラベル統合処理（ステップＳ１１１）については、後に説明する。
【０１００】
上述の処理が終了したら、ステップＳ１０４に行き、画素の位置を進め、そして、ステップＳ１０５で、全画素データを終了したかどうかを判断し、全画素データが終了していなければ（ステップＳ１０５の「Ｎｏ」）、ステップＳ１０３にリターンする。そして、以上の処理を繰り返して行う。
【０１０１】
以上の処理が繰り返して行われ、全画素についての処理が終了すると、ステップＳ１０５で、全画素データの処理が終了したと判断される。ステップＳ１０５で、全画素データの処理が終了したと判断されたら（ステップＳ１０５の「Ｙｅｓ」）、画像データのインデックスを（最終）ラベルに置換する再ラベル処理を実行して（ステップＳ１１２）、ラベリング処理を終了する。
【０１０２】
＜初期化処理＞
次に、図９に示したラベリング処理におけるステップＳ１０１の初期化処理について説明する。
図１０は、図９のステップＳ１０１のテーブル初期化処理を示すフローチャートである。
【０１０３】
図１０において、ラベルテーブルに対するインテックスＪに「０」を代入する（ステップＳ２０１）。そして、ラベルにインデックスＪを代入し、画素数に「０」を代入する（ステップＳ２０２）。ラベルは最初インデックスと等しいが、ラベル統合処理（ステップＳ１１１）により書き換えられる。次に、リストの初期化を行う（ステップＳ２０３）。ここで、リストの次のインデックスは「０」（空）に設定する。また、リストが末尾情報を持つ場合には、インデックスＪを設定する。そして、範囲を無効に設定する（ステップＳ２０４）。
【０１０４】
ステップＳ２０２〜ステップＳ２０４の処理を行ったら、インデックスＪをインクリメントし（ステップＳ２０５）、（Ｊ＝Ｎ）が成立するかどうかを判断する（ステップＳ２０６）。（Ｊ＝Ｎ）が成立しなければ（ステップＳ２０６の「Ｎｏ」）、ステップＳ２０２にリターンし、同様の処理を繰り返す。
【０１０５】
ステップＳ２０２〜ステップＳ２０６のようなループを、（Ｊ＝Ｎ）が成立するまで繰り返し、ステップＳ２０６で、（Ｊ＝Ｎ）が成立したと判断されたら（ステップＳ２０６の「Ｙｅｓ」）、ループを抜けて、初期化処理を終了する。
【０１０６】
＜新規ラベル処理＞
次に、図９に示したラベリング処理におけるステップＳ１０９の新規ラベル処理について説明する。
図１１は、図９のステップＳ１０９の新規ラベル処理を示すフローチャートである。
【０１０７】
図１１において、新規ラベル処理では、先ず、空きラベルＬを検索する（ステップＳ３０１）。これは、インデックス「１」から（Ｎ−１）までのラベルテーブルのうち、画素数が「０」（未使用）のものを探すことである。そして、空きラベルＬが見つかったかの判定を行う（ステップＳ３０２）。
【０１０８】
ステップＳ３０２で、空きラベルＬが見つからない場合（ステップＳ３０２の「Ｎｏ」）には、ラベルの回収を行い（ステップＳ３０３）、再度、空きラベルＬの検索を行う（ステップＳ３０４）。この処理は、ステップＳ３０１と同様である。そして、もう一度、空きラベルＬが見つかったかの判定を行い（ステップＳ３０５）、もし見つからなければ（ステップＳ３０５の「Ｎｏ」）、ラベルを使い切ったのでエラーで終了する。
【０１０９】
ステップＳ３０２又はステップＳ３０５で、１回目または２回目の検索で空きラベルＬが見つかった場合（ステップＳ３０２の「Ｙｅｓ」又はステップＳ３０５の「Ｙｅｓ」）には、画素にＬを書き込み（ステップＳ３０６）、Ｌをインデックスとするラベルテーブルの画素数をインクリメントする（ステップＳ３０７）。最後に、範囲設定を行い（ステップＳ３０８）、処理を終了する。なお、範囲設定は開始位置、終了位置ともに今現在の画素位置を設定する。
【０１１０】
＜同一ラベル処理＞
次に、図９に示したラベリング処理におけるステップＳ１１０の同一ラベル処理について説明する。
図１２は、図９のステップＳ１１０の同一ラベル処理を示すフローチャートである。
【０１１１】
図１２において、同一ラベル処理では、先ず、画素に同一ラベルを書き込み（ステップＳ４０１）、同一ラベルをインデックスとするラベルテーブルの画素数をインクリメントする（ステップＳ４０２）。そして、範囲設定を行い（ステップＳ４０３）、処理を終了する。なお、範囲設定は終了位置のみ今現在の画素位置を設定する。
【０１１２】
＜ラベル統合処理＞
次に、図９に示したラベリング処理におけるステップＳ１１１のラベル統合処理について説明する。
図１３は、図９のステップＳ１１１のラベル統合処理を示すフローチャートである。
【０１１３】
図１３において、ラベル統合化処理では、先ず、統合・非統合ラベルを決定する（ステップＳ５０１）。なお、本質的に、２つのラベルのどちらを統合ラベル、もう一方を非統合ラベルにしても正しく動作する。ここでは、２つのラベルのうち小さいほうを統合ラベルとする。
【０１１４】
次に、リストの先頭を非統合ラベルのリストの先頭（つまり非統合ラベル）に設定する（ステップＳ５０２）。
【０１１５】
そして、リストをインデックスとするラベルテーブルのラベルを統合ラベルに置き換え（ステップＳ５０３）、次のリストに進める処理を行う（ステップＳ５０４）。そして、非統合ラベルのリストが終了したかどうかを判断し（ステップＳ５０５）、非統合ラベルのリストが終了していなければ（ステップＳ５０５の「Ｎｏ」）、ステップＳ５０３にリターンし、非統合ラベルのリストが終了するまで、ステップＳ５０３〜ステップＳ５０５の処理を繰り返す。
【０１１６】
ステップＳ５０５で、非統合ラベルのリストが終了したと判断されたら（ステップＳ５０５の「Ｙｅｓ」）、統合ラベルのリスト（の終端）に非統合ラベル（の先頭）を連結する（ステップＳ５０６）。そして、画素に統合ラベルを書き込み（ステップＳ５０７）、統合ラベルをインデックスとするラベルテーブルの画素数に、統合ラベルの画素数と非統合ラベルの画素数との合計に「１」を加えたものを代入する（ステップＳ５０８）。最後に、範囲設定を行い（ステップＳ５０９）、ラベルの統合化処理を終了する。なお、範囲設定は開始位置を統合・非統合ラベルのうちより前の位置を、終了位置を今現在の両素位置に設定する。
【０１１７】
＜ラベル回収処理＞
次に、図１１のステップＳ３０３のラベル回収処理について説明する。
図１４は、図１１のステップＳ３０３のラベル回収処理を示すフローチャートである。
【０１１８】
ラベル回収処理では、図１４において、先ず、ノイズに相当する画素に与えたインデックスを無効化してノイズ除去する（ステップＳ６０１）。次に、再ラベル処理を実行して（ステップＳ６０２）、ノイズを背景に置換することと、非統合ラベルを統合ラベルに置換することとを同時に行う。
【０１１９】
最後に、ノイズラベル、非統合ラベルの初期化によりラベルテーブルの整理を行い（ステップＳ６０３）、ラベル回収処理を終了する。
【０１２０】
＜ノイズ除去処理＞
図１５は、図１４におけるステップＳ６０１のノイズ除去処理を示すフローチャートである。
【０１２１】
図１５において、ラベルテーブルに対するインテックスＪに「１」を代入する（ステップＳ７０１）。そして、先ず、ラベルとインデックスＪが等しいかの判定を行う（ステップＳ７０２）。ラベルとインデックスＪが等しくないならば（ステップＳ７０２の「Ｎｏ」）、何も処理を行わない。これは、非統合ラベルをスキップするためである。そして、インデックスＪをインクリメントし（ステップＳ７０３）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ７０４）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ７０４の「Ｎｏ」）、ステップＳ７０２にリターンする。
【０１２２】
一方、ステップＳ７０２で、ラベルとインデックスＪが等しいならば（ステップＳ７０２の「Ｙｅｓ」）、画素数が所定値未満かの判定を行う（ステップＳ７０５）。ここで、画素数が所定値以上ならば（ステップＳ７０５の「Ｎｏ」）、ノイズの見込みがないので、何も処理を行わず、インテックスＪをインクリメントし（ステップＳ７０３）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ７０４）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ７０４の「Ｎｏ」）、ステップＳ７０２にリターンする。
【０１２３】
これに対して、ステップＳ７０５で、画素数が所定値未満ならば（ステップＳ７０５の「Ｙｅｓ」）、ノイズの可能性があるので、画素数増加の見込みがあるかの判定を行う（ステップＳ７０６）。
【０１２４】
具体的には、図１６に示すように、今現在の画素位置（同図黒部）に対し、上の画素位置から左の画素位置まで（同図斜線部）の範囲に、仮ラベルのインデックスＪ（の範囲の終了位置）があれば、画素数増加の見込みがあると判断する。すなわち、現在の画素からちょうど１ライン分前までの画素に、仮ラベルのインデックスがあれば、画素数の増加の見込みがあり、仮ラベルのインデックスがなければ、画素数の増加の見込みはないと判断する。
【０１２５】
もし、画素数増加の見込みがあれば（ステップＳ７０６の「Ｙｅｓ」）、ノイズでない可能性もあるので、何も処理を行わず、インテックスＪをインクリメントし（ステップＳ７０３）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ７０４）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ７０４の「Ｎｏ」）、ステップＳ７０２にリターンする。
【０１２６】
ステップＳ７０６で、画素数増加の見込みがなければ（ステップＳ７０６の「Ｎｏ」）、インデックスＪのラベルはノイズなので、ラベルの無効化を行う。すなわち、リストの先頭をインデックスＪに設定し（ステップＳ７０７）、リストをインデックスとするラベルテーブルのラベルを「０」（再ラベル処理で背景になる）に置き換え（ステップＳ７０８）、リストを次のリストに進める（ステップＳ７０９）。そして、リストが終了したかどうかを判断し（ステップＳ７１０）、リストが終了していなければ（ステップＳ７１０の「Ｎｏ」）、ステップＳ７０８にリターンする。そして、ステップＳ７０８〜ステップＳ７１０までの処理を、リストが終了するまで繰り返す。ステップＳ７１０でリストが終了したと判断されたら（ステップＳ７１０の「Ｙｅｓ」）、インテックスＪをインクリメントし（ステップＳ７０３）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ７０４）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ７０４の「Ｎｏ」）、ステップＳ７０２にリターンする。
【０１２７】
上述の処理を繰り返して行い、ステップＳ７０４で、（Ｊ＝Ｎ）が成立したかどうかを判断する。そして、（Ｊ＝Ｎ）が成立したら（ステップＳ７０４の「Ｙｅｓ」）、ノイズ除去処理を終了する。
【０１２８】
＜再ラベル処理＞
図１７は、図１４におけるステップＳ６０２の再ラベル処理を示すフローチャートである。
【０１２９】
図１７において、先ず、再ラベル処理を行う画像データの範囲を求める（ステップＳ８０１）。この範囲は、画像データにインデックスを与えた画素を含み、ラベルテーブルの範囲情報から簡単に作成できる。こうすることで、画像データへの無駄なアクセスを減らすことができる。また、非統合ラベルとノイズラベルのみのラベルテーブルから範囲を作成することより、一層メモリアクセスを減らすこともできる。
【０１３０】
次に、画素位置を求めた範囲の先頭に設定する（ステップＳ８０２）。そして、画素が画素をインデックスとするラベルテーブルのラベルと等しい（つまり書き換え不要）かどうかを判定し（ステップＳ８０３）、もし、等しければ（ステップＳ８０３の「Ｙｅｓ」）、何も処理を行わずに、画素位置を進め（ステップＳ８０４）、画素位置が求めた範囲外にあるかどうかを判断し（ステップＳ８０５）、画素位置が求めた範囲外でなければ（ステップＳ８０５の「Ｎｏ」）、ステップＳ８０３にリターンする。
【０１３１】
一方、ステップＳ８０３で、画素が画素をインデックスとするラベルテーブルのラベルと等しくないならば（ステップＳ８０３の「Ｎｏ」）、画素データはノイズラベルまたは非統合ラベルなので、画素にラベルを設定する（ステップＳ８０６）。これにより、ノイズラベルは「０」（背景）に、非統合ラベルは統合ラベルに置き換えられる。そして、画素位置を進め（ステップＳ８０４）、画素位置が求めた範囲外にあるかどうかを判断し（ステップＳ８０５）、画素位置が求めた範囲外でなければ（ステップＳ８０５の「Ｎｏ」）、ステップＳ８０３にリターンする。
【０１３２】
上述の処理を画素位置が求めた範囲外になるまで繰り返し、ステップＳ８０５で、画素位置が求めた範囲外であると判断されたら（ステップＳ８０５の「Ｙｅｓ」）、再ラベル処理を終了する。
【０１３３】
＜テーブル整理処理＞
図１８は、図１４におけるステップＳ６０３のテーブル整理処理を示すフローチャートである。
【０１３４】
図１８において、テーブル整理処理では、ラベルテーブルに対するインテックスＪに「１」を代入する（ステップＳ９０１）。そして、リストの初期化を行い（ステップＳ９０２）、リストの次のインデックスは「０」（空）に設定する。また、リストが末尾情報を持つ場合には、インデックスＪを設定する。
【０１３５】
次に、ラベルとインデックスＪが等しいかの判定を行う（ステップＳ９０３）。ラベルとインデックスＪが等しいならば（ステップＳ９０３の「Ｙｅｓ」）、何も処理を行わず、インテックスＪをインクリメントする（ステップＳ９０４）。これは、使用中の有効なラベルをスキップするためである。そして、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ９０５）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ９０５の「Ｎｏ」）、ステップＳ９０２にリターンする。
【０１３６】
一方、ステップＳ９０３で、ラベルとインデックスＪが等しくないならば（ステップＳ９０３の「Ｎｏ」）、このインデックスＪはノイズラベルまたは非統合ラベルの無効なラベルなので、以下の初期化を行う。すなわち、先ず、ラベルにインデックスＪを代入し、画素数に「０」を代入する（ステップＳ９０６）。そして、範囲を無効に設定する（ステップＳ９０７）。
【０１３７】
そして、インテックスＪをインクリメントした後（ステップＳ９０４）、（Ｊ＝Ｎ）が成立するかどうかを判断し、（Ｊ＝Ｎ）が成立しなければ（ステップＳ９０５の「Ｎｏ」）、ステップＳ９０２にリターンする。
【０１３８】
以上の処理を（Ｊ＝Ｎ）が成立するまで繰り返して行う。ステップＳ９０５で、（Ｊ＝Ｎ）が成立したと判断されたら（ステップＳ９０５の「Ｙｅｓ」）、テーブル整理処理を終了する。
【０１３９】
以上により、ラベルの不足を極力回避しながら、ラベリングを行うことができる。
【０１４０】
＜最大面積のラベル抽出処理＞
次に、図５に示した全体処理におけるステップＳ３の最大面積のラベルを抽出する処理について説明する。
【０１４１】
最大面積のラベル抽出処理は、図１９にフローチャートで示すように、最大画素数を持つラベルを見つけ、このラベル以外「０」に置換することで得られる。もちろん、実際に置換を行わずに、これ以降の画像処理を行う際に、このラベル以外を背景と見なすように処理することもできる。
【０１４２】
図１９において、先ず、最大値を「０」に設定する（ステップＳ１００１）。次に、ラベルテーブルに対するインテックスＪに「１」を代入し（ステップＳ１００２）。そして、ラベルとインデックスＪが等しいかの判定を行う（ステップＳ１００３）。ラベルとインデックスＪが等しくないならば（ステップＳ１００３の「Ｎｏ」）、何も処理を行わず、インデックスＪをインクリメントし（ステップＳ１００４）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ１００５）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ１００５の「Ｎｏ」）、ステップＳ１００３にリターンする。これは、非統合ラベルをスキップするためである。
【０１４３】
一方、ステップＳ１００３で、ラベルとインデックスＪが等しいならば（ステップＳ１００３の「Ｙｅｓ」）、画素数が最大値より大きいかの判定を行う（ステップＳ１００６）。そして、画素数が最大値以下ならば（ステップＳ１００６の「Ｎｏ」）、何も処理を行わず、インデックスJをインクリメントし（ステップＳ１００４）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ１００５）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ１００５の「Ｎｏ」）、ステップＳ１００３にリターンする。
【０１４４】
ステップＳ１００６で、画素数が最大値より大きければ（ステップＳ１００６の「Ｙｅｓ」）、最大値に画素数を代入して、最大値を更新する（ステップＳ１００７）。
【０１４５】
そして、インデックスJをインクリメントし（ステップＳ１００４）、（Ｊ＝Ｎ）が成立するかどうかを判断し（ステップＳ１００５）、（Ｊ＝Ｎ）が成立しなければ（ステップＳ１００５の「Ｎｏ」）、ステップＳ１００３にリターンする。なお、判定処理Ｓ１００３はなくても動作する。
【０１４６】
（Ｊ＝Ｎ）が成立するまで、上述の処理を繰り返して行い、ステップＳ１００５で、（Ｊ＝Ｎ）が成立すると判断されたら（ステップＳ１００５の「Ｙｅｓ」）、ループを抜けて、処理を終了する。
【０１４７】
＜４隅の座標を求める方法＞
次に、図５におけるステップＳ４の４隅を求める方法を、図２０を使って説明する。
【０１４８】
図２０において、４角形Ａ１０１は、最大面積のラベルを抽出したもので、これにより、撮像画面中から、表示画面２０が得られる。図２０において、４本の直線Ｌ１〜Ｌ４（傾きの異なるペアの直線）は、４隅を求めるためのものである。直線Ｌ１〜Ｌ４の傾き（同図では±１）が４角形のどの辺の傾きとも異なる場合には、４角形と直線Ｌ１〜Ｌ４とは４隅で接する。つまり、抽出したラベルと傾きの異なる２本の検出用直線Ｌ１〜Ｌ４との接点（傾きあたり２点）から４隅（の画像データ上の座標）を求めることができる。
【０１４９】
なお、４角形の辺の傾きと検出用直線Ｌ１〜Ｌ４の傾きが等しくなる可能性がある場合や、歪曲収差（カメラユニット３１のレンズにより直線が曲線になる歪み、長方形が樽型や糸巻き型に変形する場合等）が大きくなり誤動作する可能性がある場合には、検出用直線Ｌ１〜Ｌ４の本数を増やして対処すれば良い。
【０１５０】
＜座標の計算＞
４隅の画素位置から絶対座標への変換は、前述の（式８）、（式１１）に示した通りである。このとき画像データの仮想的な中心位置が原点（光軸）になるようにする。また、焦点距離と画素ピッチから決まる係数を乗じて、長さの正規化を行う。更に、必要ならば４隅の座標に対して歪曲補正を行う。通常、歪曲収差はレンズやカメラユニット３１内部の信号処理で補正されているので、本来補正は必要ないが、歪曲収差の大きさと絶対座標の精度により判断する。なお、この時点で補正を行うのが、最も計算負荷が軽くなる。そして、動作原理で説明した（式８）、（式１１）から絶対座標を計算する。なお、座標計算のみなら長さの正規化は必要ない。
【０１５１】
＜第２の実施形態＞
上述の第１の実施形態では、最大画素数を持つラベルを表示画面と推定している。この方式は、暗所ではほぼ完璧に、明所でも大抵は問題なく動作する。
【０１５２】
ところが、明所において、表示画面付近に窓等がある場合に、この窓等がカメラで撮影される。そして、図２１や図２２のように、窓等（図中斜線の４角形Ｗ１）が表示画面（図中白抜き４角形Ａ２０１）より大きい場合には、図中斜線の４角形が表示画面として推定されるため、カメラポインタが誤動作する。なお、図２１は窓等の全体が、図２２は窓等の一部が、カメラに映っている。
【０１５３】
本実施形態では、この誤動作を大幅に軽減する表示画面推定方法を提供することで、カメラポインタの誤動作をより少ないものにする。
【０１５４】
本実施形態の動作を図２３のフローチャートを用いて説明する。
図２３において、先ず、第１の実施形態における図５のステップＳ１の処理と同様に２値化を行う（ステップＳ２００１）。次に、第１実施形態における図５のステップＳ２の処理と同様に、ラベリングを行う（２００２）。そして、順位Ｊを１に設定し、表示画面が見つかったか否かを表すフラグを未了に設定する（ステップ２００３）。
【０１５５】
そして、面積の多い順で上位Ｊ番目のラベルを得る（ステップＳ２００４）。この動作は、第１の実施形態における図５に示す最大面積のラベル抽出処理（ステップＳ３）での、最大画素数を持つラベルを見つける処理を示した図１９から簡単に類推できる。
【０１５６】
次に、面積上位Ｊ番目のラベルに対して、第１の実施形態における図５のステップＳ４の処理と同様に、４隅の画像データ上での座標（画素位置）を求める（ステップＳ２００５）。この４隅の画素位置を、第１に実施形態の絶対座標の計算と同様に、４点の座標に変換する。このとき、必ず長さの正規化を行う。また、必要ならば４点の座標に対して歪曲補正を行う。
【０１５７】
そして、４点の座標と第１の実施形態の動作原理で説明した（式８）、（式１０）から表示画面（平行四辺形）の長辺と短辺の３次元ベクトルＸ、Ｙを計算する（ステップＳ２００６）。なお、これらベクトルは、（Ｓ・ｗ）＝１となるように正規化する。
【０１５８】
そして、これらベクトルの成す角とアスペクト比、正しい表示画面の成す角（９０度）とアスペクト比とを比較することで、ラベルのベクトルが、表示画面のものかの判定を行う（ステップＳ２００７）。
【０１５９】
ステップＳ２００７で、もし、ラベルが表示画面と推定されれば（ステップＳ２００７の「Ｙｅｓ」）、フラグに終了を設定する（ステップＳ２００８）。一方、ラベルが表示画面でないならば（ステップＳ２００７の「Ｎｏ」）、何も処理を行わない。
【０１６０】
そして、順位Ｊを下降させ（順位番号Ｊを増加させる）（ステップＳ２００９）、順位Ｊが所定の順位Ｍを超えているかどうかを判断する（ステップＳ２０１０）。順位Ｊが所定の順位Ｍを超えていなければ（ステップＳ２０１０の「Ｎｏ」）、ステップＳ２００４にリターンする。
【０１６１】
こうして、順位Ｊが所定の順位Ｍを超えるか又はフラグが終了まで（ステップＳ２０１０の「Ｙｅｓ」）、ステップＳ２００９で順位Ｊを下降させつつ、処理を繰り返す。
【０１６２】
ステップＳ２０１０で、Ｊ＞Ｍ又はフラグが終了と判断されたら（ステップＳ２０１０の「Ｙｅｓ」）、フラグが終了であるかの判定を行う（ステップＳ２０１１）。もし、ステップＳ２０１１でフラグが終了でないならば（ステップＳ２０１１の「Ｎｏ」）、表示画面が見つからなかったので、エラーで終了する。
【０１６３】
一方、ステップＳ２０１１で、フラグが終了ならば（ステップＳ２０１１の「Ｙｅｓ」）、表示画面が見つかったので、表示画面と推定されたラベルの４隅の座標から、第１の実施形態の絶対座標の計算処理（図５のステップＳ５）と同様に、第１の実施形態の動作原理で説明した（式１１）を用いて、表示画面上の絶対座標を計算して（ステップＳ２０１２）、終了する。
【０１６４】
ところで、（式８）はベクトル計算処理（ステップＳ２００６）で解いているので、改めて計算する必要はない。
【０１６５】
なお、ループの終了条件を、順位Ｊが所定順位Ｍを超えることに加えてまたは、代えて順位Ｊのラベルの画素数がある画素数未満（例えば固定の所定値や、ラベルの最大画素数に所定の割合を乗じたもの）を満たすことにしてもよい。以上により、明らかに表示画面にしては小さ過ぎるラベルを表示画面として推定しないようにすることで、誤動作をより少なくできる。
【０１６６】
また、成す角も比較するのは、図２２のように窓の一部が映っている場合には、表示画面が平行四辺形であると仮定して求めた３次元ベクトルＸ、Ｙの成す角が直角になるとは限らないからである。
【０１６７】
以上説明したように、本実施形態では、各々のラベルの４隅の座標から求めた元の表示画面に相当する平行四辺形の長辺、短辺に対応する３次元ベクトルが、予め設定した前記表示画面のアスペクト比の長方形であることを満たすラベルのうち、画素数が最大のラベルを前記表示画面と推定するようにしたことにより、窓など表示画面より大きな光源による誤動作を極力抑えたことができる。
【０１６８】
また、表示画面推定のループの終了条件を、明らかに表示画面にしては小さ過ぎるラベルを表示画面として推定しないようにすることで誤動作をより少なくできる。
【０１６９】
以上、この発明の実施形態につき、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【０１７０】
なお、本発明は、ＡＶ機器の操作や、双方向テレビジョン放送の操作等を行うポインティングデバイスとして利用可能である。
【図面の簡単な説明】
【０１７１】
【図１】本発明の第１の実施形態のカメラポインタ装置を用いたシステムの概要を示す説明図である。
【図２】本発明の第１の実施形態のカメラポインタ装置を用いたシステムの構成を示すブロック図である。
【図３】本発明の第１の実施形態のカメラポインタ装置における絶対座標の算出の説明図である。
【図４】本発明の第１の実施形態のカメラポインタ装置における指示座標算出部の構成を示すブロック図である。
【図５】本発明の第１の実施形態のカメラポインタ装置における指示座標算出部の全体処理を説明するためのフローチャートである。
【図６】本発明の第１の実施形態のカメラポインタ装置における指示座標算出部の表示画面の推定の説明図である。
【図７】本発明の第１の実施形態のカメラポインタ装置におけるラベリング処理の説明図である。
【図８】本発明の第１の実施形態のカメラポインタ装置におけるラベルテーブルの説明図である。
【図９】本発明の第１の実施形態におけるラベリング処理の詳細を示すフローチャートである。
【図１０】本発明の第１の実施形態におけるラベリング処理のテーブル初期化処理を示すフローチャートである。
【図１１】本発明の第１の実施形態におけるラベリング処理の新規ラベル処理を示すフローチャートである。
【図１２】本発明の第１の実施形態におけるラベリング処理の同一ラベル処理を示すフローチャートである。
【図１３】本発明の第１の実施形態におけるラベリング処理のラベル統合処理を示すフローチャートである。
【図１４】本発明の第１の実施形態におけるラベリング処理のラベル回収処理を示すフローチャートである。
【図１５】本発明の第１の実施形態におけるラベリング処理のノイズ除去処理を示すフローチャートである。
【図１６】本発明の第１の実施形態におけるラベリング処理の画素数増加の見込みの判断の説明図である。
【図１７】本発明の第１の実施形態におけるラベリング処理の再ラベル処理を示すフローチャートである。
【図１８】本発明の第１の実施形態におけるラベリング処理のテーブル整理処理を示すフローチャートである。
【図１９】本発明の第１の実施形態におけるラベリング処理の最大面積のラベル抽出処理を示すフローチャートである。
【図２０】本発明の第１の実施形態のカメラポインタ装置における最大画素数を持つラベルから４隅を見つける処理の説明図である。
【図２１】本発明の第２の実施形態のカメラポインタ装置の説明図である。
【図２２】本発明の第２の実施形態のカメラポインタ装置の説明図である。
【図２３】本発明の第２の実施形態のカメラポインタ装置の説明に用いるフローチャートである。
【図２４】従来のラベリング処理の説明図である。
【符号の説明】
【０１７２】
１：情報機器、
２：表示装置、
３：カメラポインタ装置、
１１：情報処理部、
１２：座標受信部、
２０：表示画面、
３０：撮像画面、
３１：カメラユニット、
３２：指示座標演算部、
３３：座標送信部、
５１：ＣＰＵ、
５２：ＲＯＭ、
５３：ＲＡＭ、
５４：画像メモリ
【図１】
2008123090.tif 000016
【図２】
2008123090.tif 000017
【図３】
2008123090.tif 000018
【図４】
2008123090.tif 000019
【図５】
2008123090.tif 000020
【図６】
2008123090.tif 000021
【図７】
2008123090.tif 000022
【図８】
2008123090.tif 000023
【図９】
2008123090.tif 000024
【図１０】
2008123090.tif 000025
【図１１】
2008123090.tif 000026
【図１２】
2008123090.tif 000027
【図１３】
2008123090.tif 000028
【図１４】
2008123090.tif 000029
【図１５】
2008123090.tif 000030
【図１６】
2008123090.tif 000031
【図１７】
2008123090.tif 000032
【図１８】
2008123090.tif 000033
【図１９】
2008123090.tif 000034
【図２０】
2008123090.tif 000035
【図２１】
2008123090.tif 000036
【図２２】
2008123090.tif 000037
【図２３】
2008123090.tif 000038
【図２４】
2008123090.tif 000039