(57)【要約】【課題】  本発明は、光を発信する送信装置に対して従来よりも一段と高速なトラッキングを実現できるようにする。【解決手段】  本発明は、送信装置により送信データに応じた所定の点滅パターンで発信する光を撮像手段の２次元受光面を介して撮像し、当該撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいてデコードした送信データを当該送信データの１周期以下の周期で出力することにより、送信データの出力周期を従来に比して一段と短縮することができる。【選択図】        図５
2005318005.tif 000002
【特許請求の範囲】
【請求項１】
送信装置により送信データに応じた所定の点滅パターンで発信する光を２次元受光面を介して撮像する撮像手段と、
上記撮像手段により撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいて上記送信データをデコードするデコード手段と
を具え、
上記デコード手段は、上記送信データの１周期以下の周期で当該送信データのデコード結果を出力する
ことを特徴とする情報処理装置。
【請求項２】
上記デコード手段は、上記２次元受光面で受光した上記点滅パターンで発信する光の画面上での位置を検出し、当該位置を上記デコード結果と共に出力する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
上記デコード手段は、上記送信データの１周期以下の周期で当該送信データのデコード結果を出力する場合、上記送信データをデコード出来ていない未復号部分には１周期前の段階で既に受信してデコードした送信データの一部を用いる
ことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
上記デコード手段は、上記受光信号が複数画素に跨がっている場合、当該受光信号に隣接する周囲の隣接画素の情報を用いることにより、上記光の画面上での位置を重心座標として算出する
ことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
上記デコード手段は、上記隣接画素の情報として受光量の変化を用い、当該隣接画素に１つでも有意な情報があると判断した場合には、デコードすべき受光信号として有意な情報が得られなかった場合であっても上記隣接画素の有意な情報をデコードすることにより上記デコード結果を得る
ことを特徴とする請求項４に記載の情報処理装置。
【請求項６】
送信装置により送信データに応じた所定の点滅パターンで発信する光を２次元受光面を介して撮像手段により撮像する撮像ステップと、
上記撮像ステップで撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいて上記送信データをデコードした後、当該デコード結果を上記送信データの１周期以下の周期で出力するデコードステップと
を具えることを特徴とする情報処理方法。
【請求項７】
情報処理装置に対して、
送信装置により送信データに応じた所定の点滅パターンで発信する光を２次元受光面を介して撮像手段により撮像する撮像ステップと、
上記撮像ステップで撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいて上記送信データをデコードした後、当該デコード結果を上記送信データの１周期以下の周期で出力するデコードステップと
を実行させるためのデータ出力制御プログラム。
【請求項８】
送信データに応じた所定の点滅パターンの光を発信する送信装置と、上記光を２次元受光面を介して撮像し、上記送信データをデコードする受信装置とからなるデータ送受信システムであって、
上記受信装置は、
上記点滅パターンの光を２次元受光面を介して撮像する撮像手段と、
上記撮像手段により撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいて上記送信データをデコードするデコード手段と
を具え、
上記デコード手段は、上記送信データの１周期以下の周期でデコード結果を出力する
ことを特徴とするデータ送受信システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置に関し、例えば光ビーコンとＩＤ(Identifier)カメラを利用したＩＤ認識システムに適用して好適なものである。
【背景技術】
【０００２】
従来、所定の点滅パターンで光を発信させることにより送信データを出力する送信装置と、当該送信装置によって発信された光の点滅パターンを受信装置で撮像し、その撮像した点滅パターンに基づいてデータ通信を実現する送受信システムが存在する。
【０００３】
例えば、送受信システムとしては、送信装置として機能する光ビーコンにより発せられる光信号を受信装置としてのＩＤカメラがイメージセンサにより撮像し、当該光ビーコンの点滅パターンをデコードすることにより送信装置が出力するＩＤを復元したり、当該光ビーコンの撮像画面上での位置を検出するようになされたものがある（例えば、非特許文献１及び２参照）。
【非特許文献１】特願2001-325356
【非特許文献２】特願2003-141438
【発明の開示】
【発明が解決しようとする課題】
【０００４】
かかる構成の送受信システムにおいては、図３７に示すようにＩＤカメラが画像を出力するときのビデオフレームのフレーム周波数が３０[Hz]であるとき、光ビーコン２Ａ、２Ｂが１／３０秒間内に８ビットのＩＤを少なくとも２回以上（この場合３回）発信するようになされている。
【０００５】
このことは、光ビーコン２Ａ、２Ｂによる光の点滅パターンとＩＤカメラのビデオフレームにおける垂直同期信号（Vsinc）とが非同期である状態においても、１ビデオフレーム内でＩＤを１個必ず検出できるようにするためである。
【０００６】
かかる従来の送受信システムでは、上述の条件を満たすように、ＩＤカメラが光ビーコン２Ａ、２ＢのＩＤを認識するときのイメージセンサによる撮像フレームのフレームレートと、光ビーコン２Ａ、２ＢにおけるＬＥＤ(Light Emitting Diode)の点滅周波数とを決定していた。
【０００７】
この送受信システムのＩＤカメラでは、１／３０秒間内において最初のＩＤの点滅パターンを認識できれば、それ以降のＩＤの点滅パターンは無視し、ビデオフレームにおける次の垂直同期信号（Vsinc）のタイミングが来たときにＩＤを出力するようになされている。
【０００８】
実際上、送受信システムでは、複数の光ビーコン２Ａ、２ＢがＩＤカメラの対象となっており、例えば光ビーコン２Ａ、２Ｂとが互いに非同期でＩＤを発信している場合、ＩＤカメラが光ビーコン２Ａ、２Ｂの発信する最初のＩＤの点滅パターンをそれぞれ認識したときであっても、次のビデオフレームにおける垂直同期信号（Vsinc）のタイミングまでは双方のＩＤを出力することはなかった。
【０００９】
このためＩＤカメラは、光ビーコン２Ａ及び２ＢのＩＤの出力タイミングをビデオフレームのフレーム周波数に依存していたので、高速移動中の光ビーコン２Ａ及び２Ｂをリアルタイムに追尾（トラッキング）してＩＤを復元したり、高速移動中の光ビーコン２Ａ及び２Ｂの画面上での位置を追尾しながら検出することは困難であるという問題があった。
【００１０】
本発明は以上の点を考慮してなされたもので、光を発信する送信装置に対して従来よりも一段と高速なトラッキングを可能とする情報処理装置を提案しようとするものである。
【課題を解決するための手段】
【００１１】
かかる課題を解決するため本発明の情報処理装置、情報処理方法及びデータ出力制御プログラムにおいては、送信装置により送信データに応じた所定の点滅パターンで発信する光を撮像手段の２次元受光面を介して撮像し、当該撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいてデコードした送信データを当該送信データの１周期以下の周期で出力することにより、送信データの出力周期を従来に比して一段と短縮することができる。
【００１２】
また本発明のデータ送受信システムにおいては、送信データに応じた所定の点滅パターンの光を発信する送信装置と、光を２次元受光面を介して撮像し、送信データをデコードする受信装置とからなるデータ送受信システムであって、受信装置は、点滅パターンの光を２次元受光面を介して撮像する撮像手段と、当該撮像手段により撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいて送信データをデコードするデコード手段とを具え、当該デコード手段は送信データの１周期以下の周期でデコード結果を出力することにより、送信データの出力周期を従来に比して一段と短縮することができる。
【発明の効果】
【００１３】
本発明によれば、送信装置により送信データに応じた所定の点滅パターンで発信する光を撮像手段の２次元受光面を介して撮像し、当該撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいてデコードした送信データを当該送信データの１周期以下の周期で出力することにより、送信データの出力周期を従来に比して一段と短縮することができ、かくして送信装置を高速でトラッキングし得る情報処理装置を実現することができる。
【００１４】
また本発明によれば、送信データに応じた所定の点滅パターンの光を発信する送信装置と、光を２次元受光面を介して撮像し、送信データをデコードする受信装置とからなるデータ送受信システムであって、受信装置は、点滅パターンの光を２次元受光面を介して撮像する撮像手段と、当該撮像手段により撮像された受光信号を処理し、当該受光信号の点滅パターンに基づいて送信データをデコードするデコード手段とを具え、当該デコード手段は送信データの１周期以下の周期でデコード結果を出力することにより、送信データの出力周期を従来に比して一段と短縮することができ、かくして送信装置を高速でトラッキングし得るデータ送受信システムを実現することができる。
【発明を実施するための最良の形態】
【００１５】
以下、図面について、本発明の一実施の形態を詳述する。
【００１６】
（１）本発明の原理
（１−１）ＩＤカメラの概念
本発明におけるＩＤ認識システムのシステム構成を説明する前に、まずＩＤカメラの概念について説明する。
【００１７】
図１に示すように、ＩＤ認識システム１においては、所定の点滅パターンで光を発信する光ビーコン２と、当該光ビーコン２から発信される光の点滅パターンを撮像するＩＤカメラ３とによって構成されており、当該ＩＤカメラ３のイメージセンサ（図示せず）で光ビーコン２から発信される光の点滅パターンを撮像し、その撮像結果に基づいて当該光ビーコン２のＩＤ及び当該光ビーコン２の画面上での位置を検出するようになされている。
【００１８】
なおＩＤ認識システム１では、図示していないが複数の光ビーコン２が任意の位置に配置されている場合、それらについてもＩＤカメラ３で撮像することが可能である。
【００１９】
このようなＩＤ認識システム１では、ＩＤカメラ３におけるイメージセンサの各画素毎に光ビーコン２からの時系列の光の点滅パターンを受光してデコードし、当該画素毎に受信したＩＤを求める。
【００２０】
そしてＩＤカメラ３において、光の点滅パターンを複数画素で受信した場合には、それは同じ光源（光ビーコン２）であるものとみなし、当該複数画素の重心位置を求め、その重心位置を、そのＩＤを発信する光ビーコン２の画面上での位置（座標）として検出する。
【００２１】
またＩＤカメラ３では、イメージセンサの少なくとも１画素で光の点滅パターンを観測できればＩＤの検出が可能であり、それぞれ異なるＩＤを発信する複数の光ビーコン２についても、当該複数の光ビーコン２のＩＤ及び画面上での位置を同時に認識することが可能となる。
【００２２】
なおＩＤ認識システム１では、ＩＤカメラ３が光の点滅パターンを受光するものとしてイメージセンサが用いられているので、同時に映像を取得することも可能である。
【００２３】
（１−２）変調方式の選定
このようなＩＤ認識システム１で用いられる変調方式としては、マンチェスタ符号化が採用されており、その理由について以下説明する。
【００２４】
現在、ＬＥＤ(Light Emitting Diode)等の高速に点滅可能な光源から発する光の点滅パターンに送信データをのせ、受光部を有する電子機器との間でデータ通信を行うことはリモートコントローラやＩｒＤＡ(Infrared Data Association)等で行われている。
【００２５】
ＩＤカメラ３では、２次元アレイの光電変換素子をイメージセンサとして用いることにより、光ビーコン２とのデータ通信を実現したり、当該光ビーコン２に対する画面上での位置を特定することが可能となる。
【００２６】
しかしながら、ＩＤカメラ３と光ビーコン２との間の通信速度を上げるために当該ＩＤカメラ３のイメージセンサにおけるサンプリングレートを上げると、ＩｒＤＡのように単一の光電変換素子だけで通信していた場合に比べて受光部の信号を後段に読み出すときのデータ転送の帯域幅の増加率が大きくなるため、サンプリングレート（２次元アレイなのでフレームレート）を上げることは困難である。
【００２７】
そこでＩＤカメラ３のデータ通信方式としては、できるだけ低い点滅周波数で多くのデータを転送することが可能な符号化方式が求められる。一般に用いられるディジタル変調方式のＡＳＫ(Amplitude Shift Keying)、ＦＳＫ(Frequency Shift Keying)、ＰＳＫ(Phase Shift Keying)等は、搬送波周波数が十分に高くとれる場合には有効であるが、ＩＤカメラ３においてはさらに高効率なディジタル変調方式が有利である。
【００２８】
一般的に点滅パターンのＯＮを「１」、ＯＦＦを「０」とするのが最も効率的ではあるが、１ビットでは安定したデータ転送を行うためのエラー検出が困難であることを考えると、当該１ビットのデータを２ビットで表すマンチェスタ符号化方式が安定かつ高効率であると考えられる。
【００２９】
従ってＩＤカメラ３では、マンチェスタ符号化方式を用いて例えばデータ「０」を「１０」、データ「１」を「０１」として表現する。ここで「１」を光源ＯＮ、「０」を光源ＯＦＦと考えると、データ送信区間は必ず１度は点滅することになり、光源が長くＯＦＦになったり、長くＯＮになったりしないので、環境光との判別も比較的容易となり、安定したデータ通信が可能となる。
【００３０】
（１−３）光の変化の検出方法
次に、ＩＤカメラ３のイメージセンサで受光した光の検出方法について説明する。最も単純なのは、受光量をある決められた閾値と比較することで２値化し、受光量を「１」、「０」のディジタル信号に変換する方法である。
【００３１】
この方法は、最もシンプルで実装も容易であるが周囲の明るさが変化した場合、固定された閾値と比較して２値化する方法では安定したデータ伝送は望めない。本実施の形態では、光の変化を検出するのに、受光量を所定のレートでサンプリングして、時間方向に連続するサンプリング区間の受光量の比較を行うことで光の変化を検出する方法を用いる。
【００３２】
具体的には、時間の経過に従って増加するサンプリング番号をn、各サンプリング区間での受光量をf(n)とすると、光の変化量Ｙは、次式
【００３３】
【数１】
2005318005.tif 000003
【００３４】
で表され、変化量Ｙ＞０のときに光が暗→明になったこと、変化量Ｙ＜０のときに光が明→暗になったことを検出したことになる。
【００３５】
上述の（１）式を２フレーム間差分と定義し、さらに拡張してＭフレーム間差分を定義する。ここでＭは２以上の偶数である。例えばＭ＝２の場合の光の変化量Ｙは、（１）式で表され、Ｍ＝４の場合の光の変化量Ｙは、次式
【００３６】
【数２】
2005318005.tif 000004
【００３７】
で表され、Ｍ＝６の場合の光の変化量Ｙは、次式
【００３８】
【数３】
2005318005.tif 000005
【００３９】
で表される。
【００４０】
すなわちnフレーム目のＭフレーム間差分Ｙ(M，n)は、次式
【００４１】
【数４】
2005318005.tif 000006
【００４２】
で定義される。
【００４３】
この場合Ｍの値が大きいほど、光の変化量が大きくなり検出感度は高くなる。ここで、光の点滅周波数を一定とした場合に、Ｍの値が大きくなると受光側で単位時間当たりに記憶する撮像フレーム数すなわちサンプリング周波数も大きくしなければならない。逆に言えば、受光側でサンプリング周波数を固定したとすると、光の点滅周波数を落とさなければＭの値に応じて設定された撮像フレーム数だけ記憶することができず、結果としてデータ転送効率が悪くなるといったデメリットもある。
【００４４】
（１−４）光源の点滅周波数とフレームレートとの関係の算出
ところで、ＩＤカメラ３において安定して光の変化を検出するためにはイメージセンサの撮像フレームにおけるフレームレートを光源である光ビーコン２の光の点滅周波数に対してＮ倍以上の関係にしなければならない。ここでＮは、光の変化の検出方法によって決まる値である。
【００４５】
例えば、２フレーム間差分ではＮ＞２であり、４フレーム間差分ではＮ＞３である。すなわちＭフレーム間差分（ここではＭは２以上の偶数）の場合、次式
【００４６】
【数５】
2005318005.tif 000007
【００４７】
となる。ここでＮは小さい値の方が同じフレームレートでもデータ転送レートが大きく出来ることから有利であるので、（５）式に従ってシステムを構築するのが最適である。
【００４８】
本実施の形態では、Ｍ＝２すなわち２フレーム間差分を用いて説明する。しかしながら本発明では光の変化を検出するに当たってフレーム間差分以外の方式を用いても同様の効果が得られるので、特にこの光の変化を検出する方法としてはフレーム間差分に限られるものではない。
【００４９】
（１−５）光の立上り検出と光の立下り検出
ＩＤカメラ３では、Ｍフレーム間差分を用いることにより光の立上り変化と光の立下り変化を検出することが可能となり、例えば光の立上り変化の検出を行うには、新しい撮像フレームの輝度から古い撮像フレームの輝度を引くといった正のＭフレーム間差分ＹＰ(M，n)を用いることができる。
【００５０】
ここで、当該正のＭフレーム間差分ＹＰ(M，n)はこれまでのＭフレーム間差分Ｙ(M，n)と同様に、次式
【００５１】
【数６】
2005318005.tif 000008
【００５２】
で定義される。ここでnは撮像フレーム番号（サンプリング番号）を表す。
【００５３】
またＩＤカメラ３において、光の立下り変化の検出を行うには、古い撮像フレームの輝度から新しい撮像フレームの輝度を引くといった負のＭフレーム間差分を用いることができ、当該負のＭフレーム間差分は、次式
【００５４】
【数７】
2005318005.tif 000009
【００５５】
で定義される。
【００５６】
ＩＤカメラ３では、上述した正のＭフレーム間差分ＹＰ(M，n)、負のＭフレーム間差分ＹＭ(M，n)を用いて光の立上り変化と立下り変化を求めるために、ある閾値を用いて２値化した値をＣＰ(n)及びＣＭ(n)と定義する。
【００５７】
すなわち閾値REF(+)を用いると、ＹＰ(M，n) ＞REF(+)のときＣＰ(n)＝１、ＹＰ(M，n)≦REF(+)のときＣＰ(n)＝０のようにＣＰ(n)を定義することができる。また閾値REF(-)を用いると、ＹＭ(M，n) ＞REF(-)のときＣＭ(n)＝１、ＹＭ(M，n)≦REF(-)のときＣＭ(n)＝０のようにＣＭ(n)を定義することができる。
【００５８】
ここで閾値REF(+)及び閾値REF(-)は、それぞれ光の立上り変化と立下りの変化の大きさに対する閾値であり、光の変化量が当該閾値REF(+)及び閾値REF(-)を越えたときにＣＰ(n)及びＣＭ(n)は「１」になる。
【００５９】
（１−６）符号化データ
本実施の形態におけるＩＤ認識システム１では、８ビットからなるデータを光ビーコン２のＩＤとして定義し、当該光ビーコン２の点滅パターンに符号化して情報をのせるようになされている。
【００６０】
すなわちＩＤ認識システム１では、８ビットのデータを用いて２５６通りのＩＤを定義することができるので、２５６個の光ビーコン２を同時に認識することが可能である。もちろんＩＤのビット長は、ＩＤカメラ３のイメージセンサのフレームレートや光ビーコン２のＬＥＤの点滅周波数によって決まり、原理上さらに長いビット長にすることも可能である。
【００６１】
図２に示すように光ビーコン２の送信データとしては、例えばＨ０、Ｈ１、Ｈ２及びＨ３からなるスタートコードと、「０１０００１００」でなる８ビットのＩＤから構成され、当該ＩＤは各ビットがマンチェスタ符号で符号化される。
【００６２】
すなわち８ビットのＩＤは、データが「１」のとき「０１」の２ビットが割り当てられ、データが「０」のとき「１０」の２ビットが割り当てられる。従って８ビットのＩＤは、１６ビットのデータ列に変換される。
【００６３】
またスタートコードは、(1)マンチェスタ符号には決して現れないビットパターンであること（例えば「１」が３回続く符号を含めたこと）、(2)デューティ比が５０％で光のちらつきがないようにすることの２点を考慮し、「Ｈ０−Ｈ１−Ｈ２−Ｈ３」を「０１−１１−００−１０」としている。もちろんスタートコードとしてはこれに限るものではない。
【００６４】
ここで上述の(1)の要件は、スタートコードとＩＤとを区別するために必要な条件であり、(2)の要件はＩＤカメラ３が高速で移動する光ビーコン２を追尾すなわちトラッキングする用途には必ずしも必要ではないが、照明光を用いた通信といった用途の場合にはちらつきがないので有効である。
【００６５】
このように光ビーコン２では、８ビットのスタートコードと、１６ビットのデータ列に変換されたマンチェスタ符号でなるＩＤとによって計２４ビットの符号化データを送信データとして点滅パターンにのせて発信するようになされている。
【００６６】
（１−７）デコード方法
次に、ＩＤカメラ３におけるデコード方法の原理について図３を用いて説明する。図２で説明した「Ｈ０−Ｈ１−Ｈ２−Ｈ３」のスタートコードと、「ｂ０、ｂ１、ｂ２、ｂ３、ｂ４、ｂ５、ｂ６、ｂ７」の８ビットでなるＩＤを１番上のラインに示し、それぞれスタートコードがヘッダーとして表され、ＩＤが２進数で最下位ビットから最上位ビットへ順番に「０１０００１００」として表されている。
【００６７】
例えば、Ｈ０＝「０１」はＬＥＤの光がＯＦＦ→ＯＮに切り換わることが示され、Ｈ１＝「１１」はＬＥＤの光がＯＮ→ＯＮのまま変わらないことが示され、Ｈ２＝「００」はＬＥＤの光がＯＦＦ→ＯＦＦのまま変わらないことが示され、Ｈ３＝「１０」はＬＥＤの光がＯＮ→ＯＦＦに切り換わることが示されている。
【００６８】
このことは８ビットのＩＤについても同様であり、ｂ０＝「１０」はＬＥＤの光がＯＮ→ＯＦＦに切り換わることが示され、ｂ１＝「０１」はＬＥＤの光がＯＦＦ→ＯＮに切り換わることが示され、…、ｂ７＝「１０」はＬＥＤの光がＯＮ→ＯＦＦに切り換わることが示されている。このように８ビットのＩＤでは、マンチェスタ符号化されたことにより、その全てにおいて光がＯＦＦ→ＯＮ又はＯＮ→ＯＦＦに切り換わるようになされている。
【００６９】
そして、横軸は時間軸を表しており、縦線の１区間がＩＤカメラ３のイメージセンサによる２撮像フレーム分に相当し、例えばＨ０＝「０１」（ＯＦＦ→ＯＮ）をデコードするにはイメージセンサの４撮像フレーム分の時間を必要とすることになる。
【００７０】
このとき、光の立上り変化を示すＣＰ(n)と光の立下り変化を示すＣＭ(n)については、ヘッダーのパターンは固定なので、ＣＰ(n)＝１になってから６撮像フレーム後にＣＭ(n)＝１となり、さらに４撮像フレーム後にＣＰ(n)＝１、そしてその２撮像フレーム後にＣＭ(n)＝１となることが決まっており、このような光の変化が検出できたとき、これはヘッダーであることが分かる。
【００７１】
撮像フレームのうち、この最初のＣＰ(n)＝１となる検出フレームを「ヘッダー基準点」と呼び、ヘッダーの最後のＣＭ(n)＝１となる検出フレームを「データ基準点」と呼ぶことにすると、ＩＤのデコード（復元）はデータ基準点から４撮像フレーム毎に８回分のＣＰ(n)及びＣＭ(n)の状態をみることによって行うことができる。
【００７２】
すなわちデータ基準点から４撮像フレーム毎の検出フレームにおいて、ＣＰ(n)＝１ならばマンチェスタ符号化前のビットは「１」であり、ＣＭ(n)＝１ならばマンチェスタ符号化前のビットは「０」となる。
【００７３】
仮に、ＣＰ(n)＝ＣＭ(n)＝「０」の場合にはマンチェスタ符号を受信することができなかったのでエラーとして処理する。なおＩＤのデータ順序としては、ＬＳＢ(Least Significant Bit)から順番にＭＳＢ(Most Significant Bit)まで８ビットのデータが送られている。
【００７４】
（１−８）ＩＤ出力の等倍速モード及び複数倍速モード
図４に、本発明におけるＩＤ出力の方式を示す。すなわち本発明のＩＤカメラ３では、１回の８ビットのＩＤを光ビーコン２から受信する度に、そのＩＤと光ビーコン２の画面上での位置をＩＤデータとして出力するようになされており、これにより従来よりもＩＤ出力周期を何倍（約３倍）も短縮することが可能（図３７参照）となる。以下、これを等倍速モードという。
【００７５】
この場合ＩＤカメラ３では、８ビットのＩＤを垂直同期信号（Vsinc）のタイミングがくるまで待つという必要がなく、かつ垂直同期信号（Vsinc）のタイミングに同期させる必要がないので、従来よりも確実にＩＤ出力周期を短縮し得るようになされている。
【００７６】
また図５に示すようにＩＤカメラ３は、例えば４倍速モードでＩＤデータを出力する場合、８ビットのＩＤを一度全て受信してデコードした後、次の８ビットのＩＤの受信サイクルにおいては、当該ＩＤの受信途中でＩＤデータの出力を順次行うようになされている。
【００７７】
このときＩＤカメラ３は、次の受信サイクルで８ビットのＩＤの受信途中であれば、当然８ビット全てが揃っているわけではないが、１時点前の受信サイクルで既に受信してある８ビットのＩＤのうち不足分のビットを貰い受ける形で合計８ビットのＩＤとして揃え、これをＩＤデータとして出力することにより、等倍速モードに比べてＩＤ出力周期を４倍も短縮し得るようになされている。
【００７８】
なおＩＤカメラ３では、８ビットのＩＤがマンチェスタ符号化され、ヘッダーを合わせた計２４ビットのデータ列に変換されていると共に、スタートコードとして設定された「０１１１００１０」のデータ列中に同じ符号（この場合「１」）が最大３個を超えて続くことがないように考慮されている関係上、符号化データの４ビット毎に必ず１回は光の立上り又は立下りの変化が得られる（図３）。
【００７９】
従って図６に示すようにＩＤカメラ３では、スタートコード及びマンチェスタ符号化前のＩＤの２ビット毎にＩＤデータの出力を行うことができることから、本実施の形態では最大６倍速モードまで設定することが可能となる。
【００８０】
この結果、図７に示すようにＩＤカメラ３ではイメージセンサによる撮像フレームのフレームレートが例えば５００[fps]の場合、光の変化を検出する方法として２フレーム間差分を用いると、光ビーコン２のＬＥＤによる光の発信周波数は２５０[Hz]となる。
【００８１】
これは、サンプリング定理からも明らかなように、光ビーコン２による光の発信周波数の２倍以上の周波数でイメージセンサによるサンプリングをしないと、サンプリング結果からマンチェスタ符号化前の原信号を復元することができないからである。
【００８２】
従って、計２４ビットでなるスタートコード及びＩＤは、光ビーコン２のＬＥＤの周期に換算した場合、ヘッダー８周期＋データ１６周期の計２４周期となり、これを時間に換算すると１／２５０[sec]×２４＝９６[msec]となる。従って光ビーコン２は、９６[msec]毎にＩＤ出力が可能となり、等倍速モードであれば当該光ビーコン２のＩＤ出力周期は１／９６[msec]＝１０．４[Hz]になる。
【００８３】
一方、光ビーコン２は６倍速モードであれば、９６[msec]÷６＝１６[msec]毎にＩＤ出力が可能となり、ＩＤ出力周期は６×１０．４[Hz]＝６２．４[Hz]になる。
【００８４】
また、ＩＤカメラ３のイメージセンサによるフレームレートが１０００[fps]の場合、光の変化の検出方法として２フレーム間差分を用いると、光ビーコン２のＬＥＤによる光の発信周波数は５００[Hz]となり、等倍速モードであればＩＤ出力周期は２０．８[Hz]になり、６倍速モードであれば、ＩＤ出力周期は１２４．８[Hz]となる。
【００８５】
同様にＩＤカメラ３のイメージセンサによるフレームレートが１００００[fps]の場合、光の変化の検出方法として２フレーム間差分を用いると、光ビーコン２のＬＥＤによる光の発信周波数は５Ｋ[Hz]となり、等倍速モードであればＩＤ出力周期は２０８[Hz]になり、６倍速モードであれば、ＩＤ出力周期は１２４８[Hz]となる。
【００８６】
このようにＩＤカメラ３では、イメージセンサが高速な１００００[fps]のフレームレートである場合、これまで実現できていなかった約１Ｋ[Hz]以上のＩＤ出力周期が６倍速モードで達成可能となり、イメージセンサがより低速な５００[fps]のフレームレートである場合にも、６倍速モードを利用すれば約６０[Hz]程度のＩＤ出力周期が可能となるので、モーションキャプチャやユーザインタフェース等の分野でも使用可能な領域までトラッキング性能を向上させ得るようになされている。
【００８７】
ところで、図３７に示したように従来のＩＤ出力周期では、ビデオフレームにおける１／３０秒間の垂直同期信号（Vsinc）のタイミングに合わせてＩＤデータを出力しているためＩＤ出力周期は３０[Hz]であるが、光ビーコン２がビデオフレームの１／３０秒間内にＩＤを少なくとも２回発信しなければならないので、本発明における等倍速モードで考えればＩＤカメラ３によるＩＤ出力周期は６０[Hz]となり、従来のＩＤ出力周期の場合には２８８０[fps]ものフレームレートを有する非常に高速なイメージセンサが必要になる。
【００８８】
しかしながら、本発明におけるＩＤ出力の方式を用いれば、５００[fps]程度のフレームレートしか持たないようなあまり高速ではないイメージセンサであっても、４倍速モード以上を利用すれば、ビデオフレームのフレーム周波数３０[Hz]に合わせてＩＤを出力することが可能となる。
【００８９】
（１−９）近傍画素の情報を利用した受信データのデコード方法
これまでに説明したように、ＩＤ認識システム１の原理から考えると、ＩＤカメラ３と光ビーコン２との相対位置が激しく変化したときに、光が時系列に変化する点滅パターンを受信途中の段階でイメージセンサの画面上で捉えている当該光が他の画素に移動することが考えられ、このような場合にこれまでのＩＤ認識システム１では当該光ビーコン２のＩＤを確実に取得することができなかった。
【００９０】
このような問題を解決するため、ＩＤをデコードする際に周辺画素の受光情報を用いてデコードすることが考えられる。本発明では、光ビーコン２の高速トラッキングを目的としたものであり、さらに１００００[fps]といった非常に高速なイメージセンサに比べれば比較的低速な１０００[fps]程度のイメージセンサによるトラッキングを想定していることから、周辺画素の受光情報を用いてデコード手法を併用することは効果的である。以下、周辺画素の受光情報を利用したデコード方法について説明する。
【００９１】
図８に示すようにデコードを行うべき対象を座標(x,y)の注目画素とし、その周辺の座標(x-1,y+1)、(x,y+1)、(x+1,y+1)、(x+1,y)、(x+1,y-1)、(x,y-1)、(x-1,y-1)、(x-1,y)の画素を周辺画素とした場合、当該周辺画素のウィンドウ領域Ｗは、次式
【００９２】
【数８】
2005318005.tif 000010
【００９３】
で表される。
【００９４】
このウィンドウ領域Ｗにおいて、デコードしたい注目画素からの受光量をＩ(x,y)とすると、光の変化を周辺画素まで含めて考えた場合、光の変化ｄＩ(x,y)は、光の変化があったときに「１」、光の変化がなかったときに「０」の値をとると仮定すると、次式
【００９５】
【数９】
2005318005.tif 000011
【００９６】
で表される。
【００９７】
ここで記号「｜」は、ＯＲ演算であり、右辺はウィンドウ領域Ｗ内の全画素における受光量Ｉ(x,y)のＯＲ演算結果を表したものである。デコード方法としては符号化方式によって異なるので一概にはいえないが、この光の変化ｄＩ(x,y)をＩＤのデコードに利用することにより、データ受信中にデコードすべき注目画素から光が外れても、ウィンドウ領域Ｗ内の画素で当該光を受光できてさえいれば途切れることなくＩＤのデコードが可能となる。
【００９８】
因みに、ここではウィンドウ領域Ｗとして注目画素の周辺である（２ｎ＋１）×（２ｎ＋１）の正方形エリアを用いて上述のデコード方法を説明したが、正方形エリアに限る限定する必要はなく、例えば長方形エリアや４隣接画素等の他の形状エリアを用いてデコードするようにしても良い。特に光ビーコン２が非常に高速で移動する場合には、ｎの値を大きくとり、ウィンドウ領域Ｗをさらに拡大すれば良い。
【００９９】
以下に、光の変化ｄＩ(x,y)をＣＰ(n)及びＣＭ(n)を用いて表す。例えば（９）式において注目画素の光の変化ｄＩ(x,y)を考えるが、ここでｎ＝１として３×３のウィンドウ領域Ｗを考えた場合、当該ウィンドウ領域Ｗ内の画素の情報を用いて求めたウィンドウ領域Ｗの中心座標(x,y)における正のＭフレーム間差分のコンパレータ出力ＣＰw(n)は、座標(x,y)のＣＰ(n)をＣＰ(n,x,y)と定義し直すと、次式
【０１００】
【数１０】
2005318005.tif 000012
【０１０１】
で表される。
【０１０２】
これは、ウィンドウ領域Ｗ内の全画素に対するＣＰ(n)のうち、１つでも「１」すなわち光の立上り変化があったら、座標(x,y)に相当する注目画素のＣＰw(n)を「１」にすることを意味するものである。
【０１０３】
同様にして、負のＭフレーム間差分のコンパレータ出力ＣＭw(n)も、座標(x,y)のＣＭ(n)をＣＭ(n,x,y)と定義し直すと、次式
【０１０４】
【数１１】
2005318005.tif 000013
【０１０５】
で表される。
【０１０６】
（２）本発明を適用したＩＤ認識システムの構成
（２−１）システム構成
図９に示すようにＩＤ認識システム１は、複数の光ビーコン２Ａ、２Ｂ、…と、ＩＤカメラ３とから構成されており、当該光ビーコン２Ａ、２Ｂ、…はそれぞれ異なる点滅パターンの光を発信し、それをＩＤカメラ３で撮像することにより、光ビーコン２Ａ、２Ｂ、…から送信される画像を出力したり、光ビーコン２Ａ、２Ｂ、…のＩＤ及び画面上の位置（座標）を検出するようになされている。
【０１０７】
ここで光ビーコン２Ａ、２Ｂ、…の回路構成を説明するに当たって、当該光ビーコン２Ａ、２Ｂ、…の回路構成は全て同一であるため、光ビーコン２Ａの回路構成だけを説明し、他の光ビーコン２Ｂ、…については便宜上その説明を省略する。
【０１０８】
（２−２）光ビーコンの回路構成
図１０（Ａ）に示すように光ビーコン２Ａは、十分高速に変調可能な光源１０と、送信データの情報を含む点滅パターンを光源１０が発信するように制御する点滅制御部１１と、送信データを格納しておく送信データ保存用メモリ１２とによって構成される。
【０１０９】
この光ビーコン２Ａは、予め送信データ保存用メモリ１２に書き込まれている送信データ（スタートコード及びＩＤ）を符号化し、点滅制御部１１により当該符号化された送信データに基づいて光源１０からの光を点滅させることにより当該送信データを発信するようになされている。
【０１１０】
なお図１０（Ｂ）に示すように光ビーコン２Ａは、図１０（Ａ）で示した送信データ保存用メモリ１２の代わりに外部のネットワークに接続するためのデータ送受信部１３を有し、当該データ送受信部１３を介して外部のネットワークから送信データ（スタートコード及びＩＤ）を受け取り、この送信データに基づいて光源１０からの光を点滅させることにより当該送信データを発信するようにしてもよい。
【０１１１】
（２−３）ＩＤカメラの回路構成
図１１に示すようにＩＤカメラ３は、図示しないＲＯＭ(Read Only Memory)等に格納されたデータ出力制御プログラムに従って全体が動作し、レンズ２０を介して光ビーコン２Ａ、２Ｂ、…からの光をイメージセンサ２１で受光する。
【０１１２】
ここでイメージセンサ２１といえば、一般にＣＣＤ(Charge Coupled Device)イメージセンサや、ＣＭＯＳ(Complementary Metal-Oxide Semiconductor)イメージセンサがある。ＣＭＯＳイメージセンサは、比較的消費電力が低いので、本発明のように高速で光を受光し、その光の変化を捉える用途には、より適していると考えられる。ここでは、一般に市販されているフレームレートが１０００[fps]の高速撮像素子（イメージセンサ）を利用した構成を用い、以下説明する。
【０１１３】
ＩＤカメラ３は、イメージセンサ２１の各画素によって撮像した輝度信号をアナログディジタル変換回路２２を介してディジタルの輝度データに変換し、これを映像モードで用いる映像用フレームメモリ２３及びＩＤモードで用いる差分取得用フレームメモリ２５へそれぞれ送出する。
【０１１４】
ここで映像用フレームメモリ２３は、イメージセンサ２１による撮像フレームのフレームレート１０００[fps]の高速撮像の映像から通常のビデオフレームのフレーム周波数３０[fps]のビデオ映像を生成するために使用される。
【０１１５】
この場合、最も単純なビデオ映像生成方法としては、３３枚の画像を足し合わせて１枚の絵として生成することにより、イメージセンサ２１によるフレームレート１０００[fps]の撮像フレームからビデオフレームのフレーム周波数３０[fps]のビデオ映像を生成することである。
【０１１６】
従ってＩＤカメラ３では、映像用フレームメモリ２３には少なくともイメージセンサ２１による１撮像フレーム分のメモリを用意し、アナログディジタル変換回路２２の出力データを前撮像フレームまで積算された映像データと足し合わせて書き戻す処理を３３回行うことにより実現可能である。
【０１１７】
画像処理部２４は、映像用フレームメモリ２３を用いてビデオフレームのフレーム周波数３０[fps]相当の画像を生成する処理と、その３０[fps]相当のカラー復元処理（モザイク処理）、ガンマ補正やオートホワイトバランス処理、オートゲインコントロール等、一般的なイメージセンサの後段処理を行った後、ビデオ映像として出力する。
【０１１８】
差分取得用フレームメモリ２５は、上述したＭフレーム間差分を行うために使用され、少なくとも１撮像フレーム分のメモリ容量を有して前撮像フレームの画像を蓄えておき、比較部２６においてアナログディジタル変換回路２２から出力される現在の撮像フレームの画像データと前撮像フレームの画像データとにおける輝度の差分を求める。
【０１１９】
比較部２６は、光の変化を検出するためＭフレーム間差分を行い、当該Ｍフレーム間差分の結果をコンパレータで所定の閾値（REF(+)、REF(-)）と比較した結果（ＣＰ(n)及びＣＭ(n)）をウィンドウ処理部２７へ出力する。
【０１２０】
本実施の形態では、Ｍ＝２すなわち２フレーム間差分を用いて以下説明する。図１２に示すように比較部２６においては、正のＭフレーム間差分計算部３１により正のＭフレーム間差分を計算し、後段のコンパレータ３２により所定の閾値REF(+)との比較結果ＣＰ(n)を出力する。
【０１２１】
また同様に比較部２６においては、負のＭフレーム間差分計算部３３により負のＭフレーム間差分を計算し、後段のコンパレータ３４により所定の閾値REF(-)との比較結果ＣＭ(n)を出力する。
【０１２２】
このとき正のＭフレーム間差分は、上述の（６）式により表され、負のＭフレーム間差分は上述の（７）式により表される。ここで（６）式及び（７）式中のf(i)は、ある画素におけるＩ番目の撮像フレームにおける受光量であり、nはフレーム間差分を求めたい撮像フレーム番号を示している。
【０１２３】
また比較部２６の出力ＣＰ(n)及びＣＭ(n)は、次式
【０１２４】
【数１２】
2005318005.tif 000014
【０１２５】
【数１３】
2005318005.tif 000015
【０１２６】
【数１４】
2005318005.tif 000016
【０１２７】
【数１５】
2005318005.tif 000017
【０１２８】
のように定義することができる。
【０１２９】
ウィンドウ処理部２７は、上述の（１−９）近傍画素の情報を利用した受信データのデコード方法において説明した通り、デコード対象の注目画素に対する周辺画素の光の変化情報を用いてデコードするための処理であり、本実施の形態では３×３のウィンドウ領域Ｗを用いて説明するが、当該ウィンドウ領域Ｗの大きさは５×５などの他の大きさでも構わない。
【０１３０】
図１３に示すようにウィンドウ処理部２７は、比較部２６によって計算されたＣＰ(n)及びＣＭ(n)を入力し、内部のディレイライン３６〜３８及び４０〜４３により３×３のウィンドウ領域Ｗに相当する画素情報が蓄積されるまで待ち、それぞれ後段のＯＲ演算処理回路３９及び４３へ送出する
【０１３１】
ＯＲ演算処理回路３９及び４３は、３×３のウィンドウ領域Ｗの中心画素が注目画素とし、当該注目画素とその周辺画素までを含めた９個の画素のうち、どれか１つでもＣＰ(n)＝１（又はＣＭ(n)＝１）となる画素が存在すれば、注目画素をＣＰw(n)＝１（又はＣＭw(n)＝１）として出力するようになされている。
【０１３２】
デコード処理部２８（図１１）は、データの復元処理を行い、光ビーコン２Ａ、２Ｂの各ＩＤを復元すると共に、その光ビーコン２Ａ、２Ｂの画面上における位置（座標）を求めて最終的に出力する。
【０１３３】
なお、ＩＤカメラ３としては、いわゆる機能性イメージセンサを用いた回路構成についても考えられ、その回路構成についは図１１との対応部分に同一符号を付した図１４に示す。
【０１３４】
この機能性イメージセンサ５０は、通常のイメージセンサ２１のフレームレート１０００[fps]に比べて、そのフレームレートが数Ｋ[fps]〜数十Ｋ[fps]と高く、図１５に示すように受光部５１、差分取得用フレームメモリ５２及びコンパレータ５３を有しており、その分だけ外部の回路を比較的小規模にできるのが特徴である。
【０１３５】
この機能性イメージセンサ５０は、光ビーコン２Ａ、２Ｂからの光を受光部５１で受光し、これを輝度信号として外部のアナログディジタル変換回路２２へ送出すると共に、内部の差分取得用フレームメモリ５２へ送出する。
【０１３６】
この差分取得用フレームメモリ５２は、少なくとも２撮像フレーム分の画像をアナログ的に記憶できるフレームメモリであって、現撮像フレームと前撮像フレームとを一旦記憶した後にコンパレータ５３に送出する。
【０１３７】
コンパレータ５３では、現撮像フレームと前撮像フレームとの間で２フレーム間差分を行い、当該２フレーム間差分の結果を所定の閾値REF(+)及びREF(-)と比較することにより得たＣＰ(n)及びＣＭ(n)をウィンドウ処理部２７へ出力する。
【０１３８】
ところで、一般的に数Ｋ[fps]〜数十Ｋ[fps]のような高速フレームレートのイメージセンサで問題となるのが、イメージセンサと外部回路との帯域幅が大きくなってしまうことである。この機能性イメージセンサ５０では、現撮像フレームと前撮像フレームとをディジタルデータに変換することなくアナログのまま２フレーム間差分を行い、その比較結果（ＣＰ(n)及びＣＭ(n)）を外部回路へ出力している。
【０１３９】
このように機能性イメージセンサ５０では、現撮像フレーム及び前撮像フレームをアナログのまま２フレーム間差分を行うことにより、ディジタルデータに変換した後に２フレーム間差分を行う場合と比較してデータ量を大幅に削減し、当該機能性イメージセンサ５０と外部回路との帯域幅が大きくなってしまうことを防止し得るので、本実施の形態の一実装例としては最適なデバイスの１つといえる。
【０１４０】
次に、ＩＤカメラ３の比較部２６及び５３で２フレーム間差分を採用し、ＩＤカメラ３のイメージセンサ２１又は機能性イメージセンサ５０における撮像フレームのフレームレートが光ビーコン２Ａ、２ＢのＬＥＤ発信周波数の２倍である場合を例としてデコード処理部２８のデコード処理について説明する。
【０１４１】
（２−４）デコード処理部の回路構成
図１６に示すようにデコード処理部２８は、ウィンドウ処理部２７から供給されたコンパレータ出力ＣＰw(n)、ＣＭw(n)をＩＤデコード回路部５５のＩＤデコード回路５６に入力する。ＩＤデコード回路５６は、イメージセンサ２１又は機能性イメージセンサ５０で撮像した光ビーコン２Ａ、２Ｂ、…のＩＤを復号する。
【０１４２】
タイミング制御部６０は、ウィンドウ処理部２７からイメージセンサ２１又は機能性イメージセンサ５０で撮像した撮像信号のうち各画素毎に供給されるＣＰw(n)及びＣＭw(n)をＩＤデコード回路５６でデコードする際のデコードタイミングを図り、またＩＤデコード回路５６に入力されるＣＰw(n)及びＣＭw(n)がどの画素（座標）に相当するかを把握し、その座標に対応するフラグデータ及びＩＤの値をＩＤデコード用フレームメモリ６５に書き込む。
【０１４３】
なおタイミング制御部６０は、ＩＤデコード用フレームメモリ６５へのアドレスデータ、リードライト等のリードライト制御信号を生成して供給する一方、ＩＤ重心計算回路６１のタイミング制御を行うタイミング信号についても生成して供給する。
【０１４４】
ＩＤデコード回路５６は、フラグレジスタ５７及びデータレジスタ５８を有し、ＩＤデコード用フレームメモリ６５の各座標に対応付けられたフラグデータ及びＩＤの値を読み出し、当該読み出してフラグデータ及びＩＤの値をフラグレジスタ５７及びデータレジスタ５８に対して書き込むようになされている。
【０１４５】
実際上、ＩＤデコード回路５６は、イメージセンサ２１又は機能性イメージセンサ５０の受光面と対応するＩＤデコード用フレームメモリ６５の各座標値について、何撮像フレーム目までデコードが行われたかをフラグデータとしてフラグレジスタ５７に書き込むと共に、当該各座標値の画素についてデコードしたＩＤの値をデータレジスタ５８に書き込む。
【０１４６】
ここで、（１−７）デコード方法（図３）において上述したように、例えばＩＤを構成するビット「ｂ１」＝「０１」（ＯＦＦ→ＯＮ）はイメージセンサ２１又は機能性イメージセンサ５０の４撮像フレーム分に相当するので、ＩＤデコード回路５６は４撮像フレーム分をデコードするまではＩＤを構成する１ビット「ｂ１」の値を復元することはできず、そのためフラグレジスタ５７に対して何撮像フレーム目までデコードしたかを書き込んでおくようになされている。
【０１４７】
このようにしてＩＤデコード回路５６は、イメージセンサ２１又は機能性イメージセンサ５０における１撮像フレーム分のコンパレータ出力ＣＰw(n)、ＣＭw(n)が入力された段階でＩＤデコード用フレームメモリ６５の全座標値に対応するフラグデータ及びＩＤを当該ＩＤデコード用フレームメモリ６５、フラグレジスタ５７及びデータレジスタ５８の双方に対して書き込むことができる。
【０１４８】
ウィンドウ処理部２７から供給されるコンパレータ出力ＣＰw(n)、ＣＭw(n)は、８ビットのスタートコードと、１６ビットのマンチェスタ符号でなるＩＤとからなる計２４ビットの送信データであって、ＩＤデコード回路５６は当該２４ビットの符号化データを全てデコードしなければＩＤを復元することはできず、そのためには４８フレーム目までデコードする必要がある。
【０１４９】
ここでＩＤデコード回路５６は、タイミング制御部６０によりフラグレジスタ５７に対して何撮像フレーム目までデコードしたかを随時更新しながら書き込み、かつデータレジスタ５８に対してもＩＤの値を撮像フレーム毎に追記しながら書き込むようにしているので、ＩＤデコード用フレームメモリ６５として４８フレーム分の記憶容量をもつ必要はなく最低１撮像フレーム分の記憶容量で済むようになされている。
【０１５０】
図１７に示すようにデータレジスタ５８には、実際に復元されたマンチェスタ符号化前の８ビットでなるＩＤの値が順次格納されていき、またフラグレジスタ５７には１ビットのＩＤイネーブルフラグ、４ビットのデコードステータス及び３ビットのデコードカウンタの値がフラグデータとして格納されるようになされており、これらの具体的内容については後述するＩＤデコード処理と併せて説明する。
【０１５１】
ＩＤ重心計算回路６１は、フラグレジスタ５７及びデータレジスタ５８に対して書き込む情報を監視しており、フラグレジスタ５７の内容に基づいてある画素についてマンチェスタ符号化前の８ビットでなるＩＤを全て復元できたことを確認できた場合には当該ＩＤをＩＤ座標格納メモリ６３に格納すると共に、当該ＩＤを発信している光ビーコン２Ａの画面上における位置（重心座標）を計算した後、重心出力フラグ６２に「１」を書き込む。
【０１５２】
マンチェスタ符号化前のＩＤは「０１０００１００」の８ビット符号であるため、デコード処理部２８では全部で２５６種類のＩＤを認識することが可能であり、ＩＤ座標格納メモリ６３には当該２５６種類のＩＤを全て格納し得るようになされている。
【０１５３】
ＩＤ重心計算回路６１は、仮に光ビーコン２Ａが発信している例えばＩＤ番号「０」のＩＤが複数座標（複数画素）に跨がった状態で検出できたときには、各座標値におけるＸ座標の和及びＹ座標の和を求め、かつ跨がった複数画素すなわち認識画素数を検出した後、これらを除算回路６４へ送出する。
【０１５４】
除算回路６４は、ＩＤ番号「０」のＩＤを検出したときの全ての画素の座標値に基づいてＸ座標の和、Ｙ座標の和を認識し、これらを認識画素数で除算することにより、当該ＩＤを発信している光ビーコン２Ａの画面上における位置（重心座標）を計算するようになされている。
【０１５５】
（２−５）ＩＤデコード処理
図１８では、光ビーコン２Ａ、２Ｂが発信する光の点滅パターンに対してフラグレジスタ５７におけるフラグデータの値がどのように変化していくかを示しており、横軸には時間が示され、縦軸には送信データ、符号化データ、光の点滅パターン、デコードタイミング、フラグレジスタ５７に対するデコードカウンタの値及びデコードステータスの値が示されている。
【０１５６】
送信データには、ヘッダー（スタートコードＨ０、Ｈ１、Ｈ２、Ｈ３）及びマンチェスタ符号化前のＩＤ（０１０００１００）が示され、符号化データに対応した点滅パターンについても示されている。デコードタイミングとしては、点滅パターンのＯＮとＯＦＦとが切り換わる時点により示され、フラグレジスタ５７に書き込まれるデコードカウンタ及びデコードステータスの値がそれぞれ示されている。
【０１５７】
デコード処理部２８ではヘッダーの検出を行うに当たって、最初にフラグレジスタ５７の値を初期化することにより、デコードカウンタ及びデコードステータスの値を共に「０」にする。その後、送信データのうちヘッダーのスタートコード「Ｈ０」の点滅パターンでは立上りエッジが含まれるのでそれを検出（ＣＰw(n)＝１）し、デコードステータスを「０」→「１」に変化させ、その後１撮像フレーム毎にデコードカウンタの値をカウントアップさせる。
【０１５８】
次に、ヘッダーのスタートコード「Ｈ１」から「Ｈ２」の間に立下りエッジが含まれるのでそれを検出（ＣＭw(n)＝１）し、デコードステータスを「１」→「２」に変化させ、デコードカウンタの値を再度「１」に設定した後、その次の撮像フレームから１撮像フレーム毎にカウントアップ動作を行う。
【０１５９】
その次には、ヘッダーのスタートコード「Ｈ２」から「Ｈ３」の間に立上りエッジが含まれるのでそれを検出（ＣＰw(n)＝１）し、デコードステータスをさらに「２」→「３」に変化させ、デコードカウンタの値を再度「１」に設定した後、その次の撮像フレームから１撮像フレーム毎にカウントアップ動作を行う。
【０１６０】
そしてヘッダーのスタートコード「Ｈ３」の真ん中で立下りエッジがあるのでそれを検出（ＣＭw(n)＝１）し、デコードステータスをさらに「３」→「４」に変化させ、デコードカウンタの値を再度「１」に設定した後、その次の撮像フレームから１撮像フレーム毎にカウントアップ動作を行う。
【０１６１】
以上のようにデコードステータス「１」〜「３」の区間はスタートコードを表すヘッダー区間であり、このヘッダーにおける点滅パターンは固定なので、光の立上り変化、立下り変化のパターンも固定となる。
【０１６２】
従ってデコードステータス「１」〜「３」における各デコードステータスの長さ（撮像フレーム数）も固定である。すなわちデコードステータス「１」は６撮像フレーム、デコードステータス「２」は４撮像フレーム、デコードステータス「３」は２撮像フレームとなる。
【０１６３】
また、このデコードステータス「３」がデコードステータス「４」に変化する撮像フレームを、説明のために「データ基準点」と呼ぶことにすると、この後に受信されるＩＤは当該データ基準点から４撮像フレーム毎にデコードすることができる。
【０１６４】
データ基準点から４撮像フレーム後は、ちょうどＩＤにおけるビット「ｂ０」の真ん中に相当し、当該ビット「ｂ０」が値「０」であっても、値「１」であっても、マンチェスタ符号化されているので光の立上り変化或いは立下り変化が必ず発生する。
【０１６５】
すなわち、仮にビット「ｂ０」＝値「１」のときにはマンチェスタ符号が０→１なので、立上り変化が発生してＣＰw(n)＝１となり、ビット「ｂ０」＝値「０」のときにはマンチェスタ符号が１→０なので立下り変化が発生してＣＭw(n)＝１となる。これによりビット「ｂ０」の値を判定することができるのである。
【０１６６】
仮に、ＣＰw(n)＝ＣＭw(n)＝０となる場合には、マンチェスタ符号が受信できなかったことになるのでエラーと判断し、この画素のデコード処理はこの後ヘッダーの検出から再びスタートするためにフラグレジスタ５７及びデータレジスタ５８を「０」に初期化する。
【０１６７】
このようにしてデコード処理部２８は、ビット「ｂ１」〜「ｂ７」のデコードについても、ビット「ｂ０」以降４撮像フレーム毎に同様の処理を行うことにより、マンチェスタ符号化前の８ビットのＩＤを復元し得るようになされている。
【０１６８】
この結果、デコード処理部２８は、マンチェスタ符号化前の８ビットでなるＩＤをデコードステータス「０」、デコードカウンタ「１」のタイミングで出力することにより等倍速モードのＩＤ出力周期を実現するようになされている。
【０１６９】
なおデコード処理部２８は、２倍速モードであれば、等倍速モードと同様にデコードステータス「０」、デコードカウンタ「１」のタイミングでＩＤを出力することに加えて、デコードステータス「６」、デコードカウンタ「１」のタイミングで、それまでに受信してデコードしたヘッダー「Ｈ０」、「Ｈ１」、「Ｈ２」、「Ｈ３」、「ｂ０」、「ｂ１」のうちＩＤの値であるビット「ｂ０」、「ｂ１」と、前サイクルで既に受信してデコード済みの後半のビット「ｂ２」、「ｂ３」、「ｂ４」、「ｂ５」、「ｂ６」、「ｂ７」とを併せて８ビットでなるＩＤを出力することにより等倍速モードの２倍速の周期でＩＤを出力するようになされている。
【０１７０】
同様にデコード処理部２８は、４倍速モード又は６倍速モードであれば等倍速モードの４倍又は６倍の周期でＩＤを出力することができる。
【０１７１】
（２−６）重心位置計算処理
ＩＤ重心位置計算回路６１では、当該ＩＤを発信している光ビーコン２Ａを撮像したときの複数画素の重心座標Ｇを、次式
【０１７２】
【数１６】
2005318005.tif 000018
【０１７３】
で求めることができる。
【０１７４】
ここで、重心計算の対象であるＩＤを受信した認識画素数をＮ、受信した画素の座標をp(i)として、当該p(i)のＸ座標をpx(i)、Ｙ座標をpy(i)とする。また、「i」は同じデータを受信した画素の番号である。
【０１７５】
そうすると、Ｘ座標の和は、次式
【０１７６】
【数１７】
2005318005.tif 000019
【０１７７】
で表され、Ｙ座標の和は、次式
【０１７８】
【数１８】
2005318005.tif 000020
【０１７９】
で表される。
【０１８０】
ＩＤ座標格納メモリ６３には、８ビットのＩＤそれぞれについて、小さい番号の付されたＩＤから順番にＸ座標の和、Ｙ座標の和及び認識画素数が格納される。なお、最初の段階では当該ＩＤ座標格納メモリ６３は初期化され、全て「０」が入っている状態である。
【０１８１】
実際上、ＩＤデコード回路５６は、ＩＤデコード用フレームメモリ６５から順番にフラグデータ及びＩＤを読み出し、その画素のその撮像フレームにおけるＩＤデコード処理を行った後、フラグレジスタ５７及びデータレジスタ５８にデコード結果を書き戻す。
【０１８２】
その後、これらのフラグレジスタ５７及びデータレジスタ５８の情報がＩＤデコード用フレームメモリ６５に書き戻される前に、ＩＤ重心位置計算回路６１がフラグデータ及びＩＤの情報を受け取ることになる。
【０１８３】
ＩＤ重心位置計算回路６１は、フラグレジスタ５７及びデータレジスタ５８の双方から受け取った情報に基づいて、デコードすべき注目画素が重心計算を行うのに必要な画素であるか否かを判断し、仮に重心計算する必要のある画素であれば、この注目画素のＩＤ番号に対応するＩＤのアドレスデータをＩＤ座標格納メモリ６３から読み出し、次式
【０１８４】
【数１９】
2005318005.tif 000021
【０１８５】
【数２０】
2005318005.tif 000022
【０１８６】
【数２１】
2005318005.tif 000023
【０１８７】
を求め、当該新たに求めた「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」をアドレスデータとしてＩＤ座標格納メモリ６３に書き戻すようになされている。
【０１８８】
これらの処理を１撮像フレーム分の画素全てについて終えたときには、その撮像フレームにおける各ＩＤの「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」が全てＩＤ座標格納メモリ６３に格納されたことになる。
【０１８９】
そして１撮像フレーム分の画素全てについて上述の処理を終えたときに、今回の撮像フレームで１つでも等倍速モード又は複数倍速モードにおいて有効な「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」のアドレスデータがある場合（１回でも「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」を計算した画素が存在したとき）、ＩＤ重心位置計算回路６１は当該アドレスデータ（「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」）を読み出し、除算回路６４に供給する。
【０１９０】
除算回路６４は、次式
【０１９１】
【数２２】
2005318005.tif 000024
【０１９２】
【数２３】
2005318005.tif 000025
【０１９３】
の計算を行うことにより当該ＩＤを発信している光ビーコン２を撮像したときの複数画素の重心座標を求め、最終的なＩＤと共に当該重心座標を出力するようになされている。
【０１９４】
（３）ＩＤモードのメイン処理手順
次に、デコード処理部２８において光ビーコン２Ａ、２Ｂ、…のＩＤをデコードすると共に画面上における位置（重心座標）を検出するＩＤモードのメイン処理手順について図１９のフローチャートを用いて説明する。
【０１９５】
デコード処理部２８は、ルーチンＲＴ１の開始ステップから入って次のステップＳＰ１へ移り、まずＩＤデコード用フレームメモリ６５、フラグレジスタ５７及びデータレジスタ５８、その他のローカルレジスタを全て初期化（「０」にセット）し、次のステップＳＰ２へ移る。
【０１９６】
ステップＳＰ２においてデコード処理部２８は、ＩＤデコード回路５６にウィンドウ処理部２７からのＣＰw(n)、ＣＭw(n)が入力されるタイミングに合わせて当該ＣＰw(n)、ＣＭw(n)の座標（注目画素の座標）に相当するフラグデータ及びＩＤをＩＤデコード用フレームメモリ６５から読み出し、これをフラグレジスタ５７及びデータレジスタ５８に書き込んだ後、次のサブルーチンＳＲＴ１へ移る。
【０１９７】
サブルーチンＳＲＴ１においてデコード処理部２８は、後述するＩＤデコードメイン処理を行うことにより４撮像フレームでマンチェスタ符号化前のＩＤを１ビット復元し、次のステップＳＰ３へ移る。ここでマンチェスタ符号化前のＩＤを完全に復元するにはイメージセンサ２１又は機能性イメージセンサ５０により４８フレーム必要となる（図１８）。
【０１９８】
ステップＳＰ３においてデコード処理部２８は、フラグレジスタ５７に対してデコード処理を何撮像フレーム目まで行ったかを書き込むと共に、データレジスタ５８に対して復元したＩＤの値を書き込み、そして、その同じ内容をＩＤデコード用フレームメモリ６５における注目画素の座標に対応するアドレスに書き戻し、次のサブルーチンＳＲＴ２へ移る。
【０１９９】
サブルーチンＳＲＴ２においてデコード処理部２８は、後述するように、ＩＤを発信している光ビーコン２Ａ、２Ｂ、…からの光がイメージセンサ２１又は機能性イメージセンサ５０における複数画素に跨がって受光されている場合、その光の位置（重心座標）をＩＤ重心計算処理によって算出し、次のステップＳＰ４へ移る。
【０２００】
ステップＳＰ４においてデコード処理部２８は、ＩＤデコード回路５６にウィンドウ処理部２７から入力されるＣＰw(n)、ＣＭw(n)が１撮像フレームの全画素分について終了したか否かを判定する。
【０２０１】
ここで否定結果が得られると、このことはウィンドウ処理部２７から入力されるＣＰw(n)、ＣＭw(n)が１撮像フレームの全画素分について終了しておらず、引き続きＣＰw(n)、ＣＭw(n)を入力する必要があることを表しており、このときデコード処理部２８は、次のステップＳＰ５へ移る。
【０２０２】
ステップＳＰ５においてデコード処理部２８は、タイミング制御部６０内に設けられているアドレスカウンタ（図示せず）により、ＩＤデコード用フレームメモリ６５のアドレスカウンタにより読出アドレス及び書込アドレスのカウントアップを行うことにより次の画素に対するＩＤのデコード処理に備え、上述のステップＳＰ２に戻る。
【０２０３】
これに対してステップＳＰ４で肯定結果が得られると、このことはウィンドウ処理部２７から入力されるＣＰw(n)、ＣＭw(n)が１撮像フレームの全画素分について終了していることを表しており、このときデコード処理部２８は、次のステップＳＰ６へ移る。
【０２０４】
ステップＳＰ６においてデコード処理部２８は、１撮像フレームの全画素についてデコード処理が終了しているので、この段階で等倍速モード又は複数倍速モードにより出力することができる光ビーコン２Ａ、２Ｂ、…のＩＤ（８ビット）が存在するか否かを判定するべく、重心出力フラグ６２の値が「１」となっているか否かを判定する。
【０２０５】
この理由は、光ビーコン２Ａ、２Ｂ、…がそれぞれ独立してＩＤを発信するようになされていることから、光ビーコン２ＡのＩＤと、光ビーコン２ＢのＩＤとでは互いに同期しておらず、いつの時点でマンチェスタ符号化前の８ビットでなるＩＤが復元されているかは個々に異なるからである。
【０２０６】
ここで否定結果が得られると、このことは重心出力フラグ６２の値が「１」ではない、すなわち１撮像フレームの中である１画素についてＩＤデコード用フレームメモリ６５からＩＤを読み出す必要がなく、かつＩＤ重心計算に必要な要素である「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」のアドレスデータを求める処理についても行う必要がないことを表しており、このときデコード処理部２８は、ステップＳＰ１１へ移る。
【０２０７】
これに対してステップＳＰ６で肯定結果が得られると、このことは重心出力フラグ６２の値が「１」であること、すなわち１撮像フレームの中で少なくともある１画素についてＩＤデコード用フレームメモリ６５からＩＤを読み出す必要があり、かつＩＤ重心計算に必要な要素である「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」のアドレスデータを求める処理を行う必要があることを表しており、このときデコード処理部２８は、次のステップＳＰ７へ移る。
【０２０８】
ステップＳＰ７においてデコード処理部２８は、ＩＤ座標格納メモリ６３に格納されているＩＤ重心計算に必要な要素のアドレスデータ（「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」）を読み出し、次のステップＳＰ８へ移る。
【０２０９】
ステップＳＰ８においてデコード処理部２８は、除算回路６４により当該アドレスデータ（「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」）を用いて重心計算を行うことによりＩＤの重心座標を求め、次のステップＳＰ９において当該除算回路６４から重心座標を出力し、次のステップＳＰ１０へ移る。
【０２１０】
ステップＳＰ１０においてデコード処理部２８は、ステップＳＰ９でＩＤの重心座標を出力したので、重心出力フラグ６２の値を「０」にクリアし、次のステップＳＰ１１へ移る。
【０２１１】
ステップＳＰ１１においてデコード処理部２８は、ＩＤデコード処理を行うＩＤモードを終了するか否かを判定し、否定結果が得られたときにはＩＤモードを終了せず、次のステップＳＰ１２へ移る。
【０２１２】
ステップＳＰ１２においてデコード処理部２８は、ＩＤ座標格納メモリ６３に格納されているアドレスデータを初期化し、次のステップＳＰ１３へ移る。
【０２１３】
ステップＳＰ１３においてデコード処理部２８は、タイミング制御部６０内のアドレスカウンタを初期化した後、ステップＳＰ２へ戻って上述の処理を繰り返す。
【０２１４】
これに対してステップＳＰ１１で肯定結果が得られると、このことはユーザがＩＤモードにおけるメイン処理を終了する意思があることを表しているので、次のステップＳＰ１４へ移ってＩＤモードのメイン処理手順を終了する。
【０２１５】
（３−１）ＩＤデコードメイン処理手順
続いて、サブルーチンＳＲＴ１のＩＤデコードメイン処理手順について説明する。図２０に示すように、デコード処理部２８はサブルーチンＳＲＴ１のステップＳＰ２１へ移り、フラグレジスタ５７及びデータレジスタ５８の値として、「ＣＰw(n)＝０、デコードカウンタ＝０、デコードステータス＝０（図１８参照）」となっているか否かを判定する。
【０２１６】
この場合、上述のルーチンＲＴ１のステップＳＰ１においてＩＤデコード用フレームメモリ６５、フラグレジスタ５７及びデータレジスタ５８、その他のローカルレジスタが初期化されているときは、フラグレジスタ５７におけるデコードカウンタ及びデコードステータスの値は共に「０」で、データレジスタ５８におけるＣＰw(n)の値も「０」となる。
【０２１７】
そしてＣＰw(n)＝１（光の立上り変化）が来て初めてＩＤのヘッダーに対するデコードを開始する。すなわち「ＣＰw(n)＝０、デコードカウンタ＝０、デコードステータス＝０」を満たすということは、まだこの注目画素ではＩＤのデコードを開始していないことを意味している。
【０２１８】
このステップＳＰ２１で肯定結果が得られると、このことは上述した通り注目画素に対するＩＤのデコードを開始していないことを表しており、このときデコード処理部２８はサブルーチンＳＲＴ１のＩＤデコードメイン処理手順を抜けてルーチンＲＴ１のステップＳＰ３へ戻る。
【０２１９】
これに対してステップＳＰ２１で否定結果が得られると、このことは注目画素に対してＩＤのデコードを開始すること若しくはデコード処理中であることを表しており、このときデコード処理部２８は次のステップＳＰ２２へ移る。
【０２２０】
ステップＳＰ２２においてデコード処理部２８は、エラーフラグの値を「０」にクリアし、次のステップＳＰ２３へ移る。因みにデコード処理部２８は、光の変化が来るべき検出フレームで立上り変化も立下り変化も検出されなかったとき、すなわちＣＰw(n)＝ＣＭw(n)＝０であった場合には、その後エラーフラグを「１」にセットする。
【０２２１】
ステップＳＰ２３においてデコード処理部２８は、フラグレジスタ５７におけるデコードステータスの値が「４」未満であるか否かを判定する。ここで肯定結果が得られると、デコードステータスの値が「０」〜「３」であること、すなわちヘッダーのスタートコードについてデコード処理を開始することを表しており、このときデコード処理部２８は次のサブルーチンＳＲＴ１−１のヘッダーデコード処理手順（後述する）へ移る。
【０２２２】
これに対してステップＳＰ２３で否定結果が得られると、このことはデコードステータスの値が「４」以上すなわちヘッダーのスタートコードではなくＩＤのデコード処理を開始することを表しており、このときデコード処理部２８は次のサブルーチンＳＲＴ１−２のＩＤデコード処理手順（後述する）へ移る。
【０２２３】
これらサブルーチンＳＲＴ１−１におけるヘッダーデコード処理手順及びサブルーチンＳＲＴ１−２におけるＩＤデコード処理手順が終了すると、デコード処理部２８は、次のステップＳＰ２４へ移る。
【０２２４】
ステップＳＰ２４においてデコード処理部２８は、サブルーチンＳＲＴ１−１におけるヘッダーデコード処理手順又はサブルーチンＳＲＴ１−２におけるＩＤデコード処理手順において、光の変化が来るべき検出フレームで光の変化が検出されなかった場合（ＣＰw(n)＝０、ＣＭw(n)＝０）にエラーフラグの値として「１」をセットするか否かを判定し、次のステップＳＰ２５へ移る。
【０２２５】
ここで否定結果が得られると、このことはサブルーチンＳＲＴ１−１におけるヘッダーデコード処理手順又はサブルーチンＳＲＴ１−２におけるＩＤデコード処理手順においてエラーは発生しておらず、デコード処理が成功していることを表しており、このときデコード処理部２８は、サブルーチンＳＲＴ１を抜けてルーチンＲＴ１のステップＳＰ３へ戻る。
【０２２６】
これに対してステップＳＰ２４で肯定結果が得られると、このことはサブルーチンＳＲＴ１−１におけるヘッダーデコード処理手順又はサブルーチンＳＲＴ１−２におけるＩＤデコード処理手順において注目画素のデコード処理中にエラーが発生しデコード処理が成功していないことを表しており、このときデコード処理部２８は、次のステップＳＰ２５へ移る。
【０２２７】
ステップＳＰ２５においてデコード処理部２８は、フラグレジスタ５７におけるデコードカウンタ「０」、デコードステータス「０」及びイネーブルフラグ「０」に初期化してエラー処理を行った後、サブルーチンＳＲＴ１を抜けてルーチンＲＴ１のステップＳＰ３へ戻る。これによりデコード処理部２８は、注目画素についてこれ以降デコードの初期状態に戻し、ヘッダーのスタートコードのデコード処理からやり直すことになる。
【０２２８】
（３−１−１）ヘッダーデコード処理手順
続いて、サブルーチンＳＲＴ１−１のヘッダーデコード処理手順について説明する。図２１に示すように、デコード処理部２８はサブルーチンＳＲＴ１−１のステップＳＰ３１へ移り、フラグレジスタ５７のデコードステータスの値が「０」であるか否かを判定する。
【０２２９】
ここで肯定結果が得られると、デコード処理部２８は次のサブルーチンＳＲＴ１−１０のデコードステータス「０」の処理手順へ移り、否定結果が得られるとデコード処理部２８は次のステップＳＰ３２へ移る。
【０２３０】
ステップＳＰ３２においてデコード処理部２８は、フラグレジスタ５７のデコードステータスの値が「１」であるか否かを判定する。
【０２３１】
ここで肯定結果が得られると、デコード処理部２８は次のサブルーチンＳＲＴ１−１１のデコードステータス「１」の処理手順へ移り、否定結果が得られるとデコード処理部２８は次のステップＳＰ３３へ移る。
【０２３２】
ステップＳＰ３３においてデコード処理部２８は、フラグレジスタ５７のデコードステータスの値が「２」であるか否かを判定する。
【０２３３】
ここで肯定結果が得られると、デコード処理部２８は次のサブルーチンＳＲＴ１−１２のデコードステータス「２」の処理手順へ移り、否定結果が得られるとデコード処理部２８は次のステップＳＰ３４へ移る。
【０２３４】
ステップＳＰ３４においてデコード処理部２８は、フラグレジスタ５７のデコードステータスの値が「３」であるか否かを判定する。
【０２３５】
この場合はヘッダーデコード処理手順であるので、デコードステータス「０」〜「３」以外に遷移することが有り得ず、必ず肯定結果を得てデコード処理部２８は次のサブルーチンＳＲＴ１−１３のデコードステータス「３」の処理手順へ移る。
【０２３６】
（３−１−１−１）デコードステータス「０」の処理手順
続けて、サブルーチンＳＲＴ１−１０のデコードステータス「０」の処理手順について説明する。
【０２３７】
図２２に示すように、デコード処理部２８はサブルーチンＳＲＴ１−１０のステップＳＰ４１へ移り、フラグレジスタ５７におけるデコードカウンタの値が「０」であるか否かを判定する。
【０２３８】
ここで肯定結果が得られると、このことはデコードステータス「０」でかつデコードカウンタ「０」であるため、すなわち注目画素に対するデコード処理を未だ開始していないことを表しており（図１８）、このときデコード処理部２８は次のステップＳＰ４２へ移る。
【０２３９】
一方、ステップＳＰ４１で否定結果が得られると、デコード処理部２８は次のステップＳＰ４３へ移り、フラグレジスタ５７におけるデコードカウンタの値が「４」であるか否かを判定する。
【０２４０】
このようにステップＳＰ４１及びステップＳＰ４３においてデコードカウンタの値が「０」又は「４」であるか否かを判定しているのは、図１８に示したデコードカウンタの推移を見れば明らかなように、デコードステータスが「０」→「１」に遷移するのは、デコードステータス「０」でデコードカウンタ「４」のときであるからである。すなわち、このステップＳＰ４１及びステップＳＰ４３では、デコードステータスが「０」→「１」に遷移するための条件確認を行っているのである。
【０２４１】
このステップＳＰ４３で肯定結果が得られると、このことはデコードステータス「０」でかつデコードカウンタ「４」であるため、次の撮像フレームではヘッダー基準点が来る可能性が高いことを表しており、このときデコード処理部２８はステップＳＰ４２へ移る。
【０２４２】
ステップＳＰ４２においてデコード処理部２８は、ヘッダーのスタートコードにおける最初の「Ｈ０」では光の立上り変化から始まるので、ＣＰw(n)＝１であるか否かを判定する。ここで否定結果が得られると、このことは光の立上り変化が来るべきときに来なかったので、次のステップＳＰ４４へ移ってエラーフラグの値を「１」にセットした後、サブルーチンＳＲＴ１−１０及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２４３】
これに対してステップＳＰ４２で肯定結果が得られると、このことは次のステータスへ移行するべくデコード処理部２８は次のステップＳＰ４５へ移り、現在のデコードステータスの値「０」に「１」を加算してデコードステータスの値を「１」とすると共に、現在のデコードカウンタの値「０」又は「４」を「１」にセットした後、サブルーチンＳＲＴ１−１０及びサブルーチンＳＲＴ１−１を抜けてルーチンＲＴ１のステップＳＰ２４へ戻る。
【０２４４】
一方、ステップＳＰ４３で否定結果が得られると、このことはデコードステータスの値が「０」であるにも係わらず、デコードカウンタの値が「０」又は「４」のいずれでもない、すなわちデコードカウンタの値が「１」〜「３」であることを表しており、このときデコード処理部２８は次のステップＳＰ４６へ移る。
【０２４５】
ステップＳＰ４６においてデコード処理部２８は、現在のデコードカウンタの値に対して「１」を加算した後、サブルーチンＳＲＴ１−１０及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２４６】
（３−１−１−２）デコードステータス「１」の処理手順
引き続き、サブルーチンＳＲＴ１−１１のデコードステータス「１」の処理手順について説明する。
【０２４７】
図２３に示すように、デコード処理部２８はサブルーチンＳＲＴ１−１１のステップＳＰ５１へ移り、フラグレジスタ５７におけるデコードカウンタの値が「６」であるか否かを判定する。
【０２４８】
このようにステップＳＰ５１においてデコードカウンタの値が「６」であるか否かを判定しているのは、デコードカウンタの推移を見れば明らかなように、デコードステータスが「１」→「２」に遷移するのは、デコードステータス「１」でデコードカウンタ「６」のときの検出フレームで光の立下り変化がある場合だからである。すなわち、このステップＳＰ５１では、デコードステータスが「１」→「２」に遷移するための条件確認を行っているのである。
【０２４９】
ここで肯定結果が得られると、このことはデコードステータス「１」でかつデコードカウンタ「６」であるため、デコードステータスが「１」→「２」に遷移する可能性が高いことを表しており、このときデコード処理部２８は次のステップＳＰ５２へ移る。
【０２５０】
ステップＳＰ５２においてデコード処理部２８は、ヘッダーのスタートコードにおける「Ｈ１」が「Ｈ２」に変化する際には光の立下り変化があるので、ＣＭw(n)＝１であるか否かを判定する。
【０２５１】
ここで否定結果が得られると、このことは光の立下り変化が来るべきときに来なかったので、次のステップＳＰ５４へ移ってエラーフラグの値を「１」にセットした後、サブルーチンＳＲＴ１−１１及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２５２】
これに対してステップＳＰ５２で肯定結果が得られると、このことはヘッダーのスタートコードにおける２つ目のエッジ（光の立下り変化）を検出できたことを表しており、次のステータスへ移行するべくデコード処理部２８は次のステップＳＰ５３へ移る。
【０２５３】
ステップＳＰ５３においてデコード処理部２８は、現在のデコードステータスの値「１」に対して「１」を加算することによりデコードステータスの値を「２」とすると共に、現在のデコードカウンタの値「６」を「１」にセットした後、サブルーチンＳＲＴ１−１１及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２５４】
一方、ステップＳＰ５１で否定結果が得られると、このことはデコードカウンタの値が「６」以外の「１」〜「５」のいずれかであることを表しており、デコード処理部２８は次のステップＳＰ５５へ移る。
【０２５５】
ステップＳＰ５５においてデコード処理部２８は、フラグレジスタ５７における現在のデコードカウンタの値に対して「１」を加算した後、サブルーチンＳＲＴ１−１１及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２５６】
（３−１−１−３）デコードステータス「２」の処理手順
さらに続けて、サブルーチンＳＲＴ１−１２のデコードステータス「２」の処理手順について説明する。
【０２５７】
図２４に示すように、デコード処理部２８はサブルーチンＳＲＴ１−１２のステップＳＰ６１へ移り、フラグレジスタ５７におけるデコードカウンタの値が「４」であるか否かを判定する。
【０２５８】
このようにステップＳＰ６１においてデコードカウンタの値が「４」であるか否かを判定しているのは、デコードカウンタの推移を見れば明らかなように、デコードステータスが「２」→「３」に遷移するのは、デコードステータス「２」でデコードカウンタ「４」のときの検出フレームで光の立上り変化がある場合だからである。すなわち、このステップＳＰ６１では、デコードステータスが「２」→「３」に遷移するための条件確認を行っているのである。
【０２５９】
ここで肯定結果が得られると、このことはデコードステータス「２」でかつデコードカウンタ「４」であるため、デコードステータスが「２」→「３」に遷移する可能性が高いことを表しており、このときデコード処理部２８は次のステップＳＰ６２へ移る。
【０２６０】
ステップＳＰ６２においてデコード処理部２８は、ヘッダーのスタートコードにおける「Ｈ２」が「Ｈ３」に変化する際には光の立上り変化があるので、ＣＰw(n)＝１であるか否かを判定する。
【０２６１】
ここで否定結果が得られると、このことは光の立上り変化が来るべきときに来なかったので、次のステップＳＰ６４へ移ってエラーフラグの値を「１」にセットした後、サブルーチンＳＲＴ１−１２及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２６２】
これに対してステップＳＰ６２で肯定結果が得られると、このことはヘッダーのスタートコードにおける３つ目のエッジ（光の立上り変化）を検出できたことを表しており、次のステータスへ移行するべくデコード処理部２８は次のステップＳＰ６３へ移る。
【０２６３】
ステップＳＰ６３においてデコード処理部２８は、現在のデコードステータスの値「２」に対して「１」を加算することによりデコードステータスの値を「３」とすると共に、現在のデコードカウンタの値「４」を「１」にセットした後、サブルーチンＳＲＴ１−１２及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２６４】
一方、ステップＳＰ６１で否定結果が得られると、このことはデコードカウンタの値が「４」以外の「１」〜「３」のいずれかであることを表しており、デコード処理部２８は次のステップＳＰ６５へ移る。
【０２６５】
ステップＳＰ６５においてデコード処理部２８は、フラグレジスタ５７における現在のデコードカウンタの値に対して「１」を加算した後、サブルーチンＳＲＴ１−１２及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２６６】
（３−１−１−４）デコードステータス「３」の処理手順
引き続き、サブルーチンＳＲＴ１−１３のデコードステータス「３」の処理手順について説明する。
【０２６７】
図２５に示すように、デコード処理部２８はサブルーチンＳＲＴ１−１３のステップＳＰ７１へ移り、フラグレジスタ５７のデコードカウンタの値が「２」であるか否かを判定する。
【０２６８】
このようにステップＳＰ７１においてデコードカウンタの値が「２」であるか否かを判定しているのは、デコードカウンタの推移を見れば明らかなように、デコードステータスが「３」→「４」に遷移するのは、デコードステータス「３」でデコードカウンタ「２」のときの検出フレームで光の立下り変化がある場合だからである。すなわち、このステップＳＰ７１では、デコードステータスが「３」→「４」に遷移するための条件確認を行っているのである。
【０２６９】
ここで肯定結果が得られると、このことはデコードステータス「３」でかつデコードカウンタ「２」であるため、デコードステータスが「３」→「４」に遷移する可能性が高いことを表しており、このときデコード処理部２８は次のステップＳＰ７２へ移る。
【０２７０】
ステップＳＰ７２においてデコード処理部２８は、ヘッダーのスタートコードにおける「Ｈ３」が「Ｈ４」に変化する際には光の立下り変化があるので、ＣＭw(n)＝１であるか否かを判定する。
【０２７１】
ここで否定結果が得られると、このことは光の立下り変化が来るべきときに来なかったので、次のステップＳＰ７４へ移ってエラーフラグの値を「１」にセットした後、サブルーチンＳＲＴ１−１３及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２７２】
これに対してステップＳＰ７２で肯定結果が得られると、このことはヘッダーのスタートコードにおける４つ目のエッジ（光の立下り変化）を検出できたことを表しており、次のステータスへ移行するべくデコード処理部２８は次のステップＳＰ７３へ移る。
【０２７３】
ステップＳＰ７３においてデコード処理部２８は、現在のデコードステータスの値「３」に対して「１」を加算することによりデコードステータスの値を「４」とすると共に、現在のデコードカウンタの値「２」を「１」にセットした後、サブルーチンＳＲＴ１−１３及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２７４】
一方、ステップＳＰ７１で否定結果が得られると、このことはデコードカウンタの値が「１」であることを表しており、デコード処理部２８は次のステップＳＰ６５へ移る。
【０２７５】
ステップＳＰ７５においてデコード処理部２８は、フラグレジスタ５７における現在のデコードカウンタの値「１」に対して「１」を加算した後、サブルーチンＳＲＴ１−１３及びサブルーチンＳＲＴ１−１を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２７６】
ここまででサブルーチンＳＲＴ１−１におけるヘッダーデコード処理手順（図２１〜図２５）について全て説明を終了し、ヘッダーのスタートコードを復元することができるようになされている。続いてサブルーチンＳＲＴ１−２におけるＩＤデコード処理手順について説明する。
【０２７７】
（３−１−２）ＩＤデコード処理手順
図２６に示すように、デコード処理部２８はサブルーチンＳＲＴ１−２のＩＤデコード処理手順におけるステップＳＰ８１へ移り、フラグレジスタ５７のデコードカウンタの値が「４」であるか否かを判定する。
【０２７８】
このようにステップＳＰ８１においてデコードカウンタの値が「４」であるか否かを判定しているのは、デコードカウンタの推移を見れば明らかなように、データ基準点の撮像フレームから４撮像フレーム毎に立上りエッジ（ＣＰw(n)＝１）が検出されるか、立下りエッジ（ＣＭw(n)＝１）が検出されるかを調べることでＩＤのデコードを行うことができるからであり、デコードカウンタ「４」のときがデコードする際の検出フレームに相当する。
【０２７９】
ステップＳＰ８１で否定結果が得られると、このことはデコードカウンタの値が「４」以外の「１」〜「３」のいずれかであることを表しており、このときデコード処理部２８は、次のステップＳＰ８２へ移る。
【０２８０】
ステップＳＰ８２においてデコード処理部２８は、フラグレジスタ５７における現在のデコードカウンタの値に「１」を加算した後、サブルーチンＳＲＴ１−２を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２８１】
これに対してステップＳＰ８１で肯定結果が得られると、このことはデコードカウンタの値が「４」であって、ＩＤをデコードするための検出フレームに相当していることを表しており、このときデコード処理部２８は、次のステップＳＰ８３へ移る。
【０２８２】
ステップＳＰ８３においてデコード処理部２８は、ＩＤのデコード処理に関しては、当該デコードカウンタ「４」のときにおける検出フレームで光の立上り変化又は立下り変化のいずれかがあると考えられるので、まずＣＰw(n)＝１であるか否かを判定する。
【０２８３】
ここで肯定結果が得られると、このことは検出フレームで光の立上りエッジが検出できたこと、すなわちマンチェスタ符号化前のＩＤの値として「１」を検出したことを表しており、このときデコード処理部２８は、フラグレジスタ５７における現在のデコードステータスの値からヘッダーの個数である「４」を減算した数の位置に相当するデータレジスタ５８のビットとして当該マンチェスタ符号化前のＩＤの値「１」を書き込み、次のステップＳＰ８４へ移る。
【０２８４】
この場合、データレジスタ５８に対して書き込むべきビットの位置としては、デコードステータス「４」であればＩＤのビット「ｂ０」、デコードステータス「５」であればＩＤのビット「ｂ１」、デコードステータス「６」であればＩＤのビット「ｂ２」、デコードステータス「７」であればＩＤのビット「ｂ３」、デコードステータス「８」であればＩＤのビット「ｂ４」、デコードステータス「９」であればＩＤのビット「ｂ５」、デコードステータス「１０」であればＩＤのビット「ｂ６」、デコードステータス「１１」であればＩＤのビット「ｂ７」となり、マンチェスタ符号化前の８ビットのＩＤ全てが揃うことになる。このように［「デコードステータスの値」−４］の数に相当するビット「ｂｘ」がＬＳＢから見たビット番号に相当する。
【０２８５】
これに対してステップＳＰ８３で否定結果が得られると、このことはＣＰw(n)＝１ではなく、すなわち検出フレームで光の立上りエッジが検出できなかったことを表しており、このときデコード処理部２８は、次のステップＳＰ８５へ移る。
【０２８６】
ステップＳＰ８５においてデコード処理部２８は、検出フレームでＣＭw(n)＝１であるか否かを判定する。ここで否定結果が得られると、このことは検出フレームでＣＰw(n)＝１及びＣＭw(n)＝１のいずれも検出できなかったことを表しており、このときデコード処理部２８は、次のステップＳＰ８６へ移る。
【０２８７】
ステップＳＰ８６においてデコード処理部２８は、検出フレームでＩＤの値として「１」又は「０」のいずれについても検出できなかったこと、すなわち光の変化が来るべきときに光の立上り変化又は立下り変化のいずれも検出できなかったので、エラーフラグを「１」にセットした後、サブルーチンＳＲＴ１−２を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２８８】
これに対してステップＳＰ８５で肯定結果が得られると、このことは検出フレームで光の立上りエッジが検出できたこと、すなわちＩＤの値として「０」を検出したことを表しており、このときデコード処理部２８は、現在のデコードステータスの値からヘッダーの個数である「４」を減算した数の位置に相当するデータレジスタ５８のビット「ｂｘ」としてマンチェスタ符号化前のＩＤの値「０」を書き込み、次のステップＳＰ８８へ移る。
【０２８９】
ステップＳＰ８８においてデコード処理部２８は、フラグレジスタ５７におけるデコードステータスの値が「１１」であるか否かを判定する。
【０２９０】
ここでデコードステータスの値としては「０」〜「１１」までのいずれかの値を取り得るが、デコードステータス「１１」の次は必ずデコードステータス「０」に遷移するため、この判定を行う必要がある。
【０２９１】
ここで肯定結果が得られると、このことはデコードステータス「１１」でかつデコードカウンタ「４」の検出フレームで光の立下り変化を検出したこと、すなわちデコードステータスが「１１」から「０」へ遷移することを表しており、このときデコード処理部２８は、次のステップＳＰ９０へ移る。
【０２９２】
ステップＳＰ９０においてデコード処理部２８は、フラグレジスタ５７におけるデコードステータスの値「１１」を「０」に書き換えて更新した後、次のステップＳＰ９１へ移る。
【０２９３】
これに対してステップＳＰ８８で否定結果が得られると、このことはデコードカウンタ「４」の検出フレームで光の立上り変化又は立下り変化を検出した状態で、かつ現在のデコードステータスの値が「０」〜「１０」のいずれかであることを表しており、このときデコード処理部２８は、次のステップＳＰ８９へ移る。
【０２９４】
ステップＳＰ８９においてデコード処理部２８は、現在のデコードステータスの値に「１」を加算して更新した後、次のステップＳＰ９１へ移る。ステップＳＰ９１においてデコード処理部２８は、デコードステータスの遷移に合わせてデコードカウンタの値を「１」にセットし、次のステップＳＰ９２へ移る。
【０２９５】
ステップＳＰ９２においてデコード処理部２８は、現在のデコードステータスの値が「０」に戻っているか否かを判定する。この場合、デコードカウンタ「１」で、かつデコードステータス「０」となる条件は現在の検出フレームがＩＤのビット「ｂ７」の値をデコードし終えたこと、すなわちマンチェスタ符号化前の８ビットでなるＩＤを全て復元できたことを意味する。
【０２９６】
ここで否定結果が得られると、このことはヘッダー及びＩＤのデコードがまだ一巡していないことを表しており、このときデコード処理部２８は、サブルーチンＳＲＴ１−２を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２９７】
これに対してステップＳＰ９２で肯定結果が得られると、このことはデコードステータスの値が「０」になったこと、すなわちヘッダー及びＩＤのデコードが一巡し終わったことを表しており、このときデコード処理部２８は次のステップＳＰ９３へ移る。
【０２９８】
ステップＳＰ９３においてデコード処理部２８は、マンチェスタ符号化前の８ビットでなるＩＤを全て欠けることなく復元し得たので、この後いつでも８ビットのＩＤを出力できることを示すＩＤイネーブルフラグ「１」をフラグレジスタ５７にセットした後、サブルーチンＳＲＴ１−２を抜けてサブルーチンＳＲＴ１のステップＳＰ２４へ戻る。
【０２９９】
（３−２）ＩＤ重心計算処理手順
次に、サブルーチンＳＲＴ２におけるＩＤ重心計算処理手順について図２７のフローチャートを用いて詳細に説明する。
【０３００】
デコード処理部２８は、サブルーチンＳＲＴ２のＩＤ重心計算処理手順におけるステップＳＰ１０１へ移り、データレジスタ５８の値として「０」となっているか否か（すなわち初期化されているか否か）を判定する。これは、本実施の形態においてＩＤの値として８ビットを想定し、ＩＤ＝０は初期化状態であって除外することとしているからである。
【０３０１】
従ってデコード処理部２８は、データレジスタ５８の値が「０」である場合、この注目画素についてはまだＩＤの受信が始まっていないか、或いはＩＤの受信途中（これまで受信した下位のビットは０で、０以外の値をもつ上位ビットをまだ受信していない状態）のいずれかである。
【０３０２】
ここで肯定結果が得られると、デコード処理部２８はＩＤ重心計算処理を行うことなく、サブルーチンＳＲＴ２を抜けてルーチンＲＴ１のステップＳＰ４へ戻る。
【０３０３】
これに対してステップＳＰ１０１で否定結果が得られると、このことはデータレジスタ５８の値が「０」ではないこと、すなわちＩＤの値がデコードされて書き込まれていることを表しており、このときデコード処理部２８は、次のサブルーチンＳＲＴ２−１における重心計算判断処理手順へ移る。
【０３０４】
サブルーチンＳＲＴ２−１においてデコード処理部２８は、後述する重心計算判断処理を行うことにより、当該注目画素が重心計算を行うべきステータスにあるか否かを判断し、次のステップＳＰ１０２へ移る。
【０３０５】
ステップＳＰ１０２においてデコード処理部２８は、ＩＤ重心計算回路６１内のローカルフラグである重心計算フラグ（図示せず）の値が「１」であるか否かを判定する。ここで重心計算フラグは、当該注目画素が重心計算を行うステータスである場合にその値として「１」がセットされ、そうでない場合には、その値として「０」がセットされる。
【０３０６】
ここで否定結果が得られると、このことは当該注目画素が重心計算を行うべきステータスにはなっていないことを表しており、このときデコード処理部２８は、サブルーチンＳＲＴ２を抜けてルーチンＲＴ１のステップＳＰ４へ戻る。
【０３０７】
これに対してステップＳＰ１０２で肯定結果が得られると、このことは当該注目画素が重心計算を行うべきステータスであることを表しており、このときデコード処理部２８は次のステップＳＰ１０３へ移る。
【０３０８】
ステップＳＰ１０３においてデコード処理部２８は、ＩＤ重心計算回路６１によってＩＤ座標格納メモリ６３から注目画素に対応するＩＤ番号（すなわちデータレジスタ５８の内容）に相当するアドレスデータ（「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」）を読み出し、当該アドレスデータ及び注目画素のアドレスを基に新たにアドレスデータを計算し直し、次のステップＳＰ１０５へ移る。
【０３０９】
実際上、ＩＤ重心計算回路６１は上述の（１９）式、（２０）式及び（２１）式に従って、新たにアドレスデータを計算し直す。
【０３１０】
ステップＳＰ１０５においてデコード処理部２８は、ＩＤ重心計算回路６１によって計算し直した新たなアドレスデータを、ＩＤ座標格納メモリ６３における注目画素のＩＤ番号に相当するアドレスに書き戻し、次のステップＳＰ１０６へ移る。
【０３１１】
ステップＳＰ１０６においてデコード処理部２８は、重心計算を行うための要素が揃ったのでＩＤを発信している光ビーコン２Ａの重心を計算して出力することができると判断し、重心計算回路６１により重心出力フラグ６２の値として「１」をセットした後、サブルーチンＳＲＴ２を抜けてルーチンＲＴ１のステップＳＰ４へ戻る。
【０３１２】
このとき重心計算回路６１は、注目画素が複数画素に跨がっておらず、１画素だけで認識できている場合であっても、重心計算を行うために重心出力フラグ６２の値として「１」をセットするようになされている。なお重心出力フラグ６２は、ＩＤカメラ３から重心座標が出力された後に「０」にクリアされる。
【０３１３】
（３−２−１）重心計算判断処理手順
続いて、サブルーチンＳＲＴ２−１の重心計算判断処理手順について説明する。図２８に示すように、デコード処理部２８はサブルーチンＳＲＴ２−１のステップＳＰ１１１へ移り、現在ユーザから指定されているＩＤデータの出力周期が６倍速モードであるか否かを判定する。
【０３１４】
ここで肯定結果が得られると、デコード処理部２８は、次のサブルーチンＳＲＴ２−１０の６倍速モード重心計算判断処理手順へ移って、６倍速モードにおいて、いずれのデコードステータスといずれのデコードカウンタとの組み合わせのときに重心計算を行うべきかを判断した後、サブルーチンＳＲＴ２−１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３１５】
これに対してステップＳＰ１１１で否定結果が得られると、デコード処理部２８は、次のステップＳＰ１１２へ移り、現在ユーザから指定されているＩＤデータの出力周期が４倍速モードであるか否かを判定する。
【０３１６】
ここで肯定結果が得られると、デコード処理部２８は、次のサブルーチンＳＲＴ２−１１の４倍速モード重心計算判断処理手順へ移って、４倍速モードにおいて、いずれのデコードステータスといずれのデコードカウンタとの組み合わせのときに重心計算を行うべきかを判断した後、サブルーチンＳＲＴ２−１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３１７】
これに対してステップＳＰ１１２で否定結果が得られると、デコード処理部２８は、次のステップＳＰ１１３へ移り、現在ユーザから指定されているＩＤデータの出力周期が２倍速モードであるか否かを判定する。
【０３１８】
ここで肯定結果が得られると、デコード処理部２８は、次のサブルーチンＳＲＴ２−１２の２倍速モード重心計算判断処理手順へ移って、２倍速モードにおいて、いずれのデコードステータスといずれのデコードカウンタとの組み合わせのときに重心計算を行うべきかを判断した後、サブルーチンＳＲＴ２−１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３１９】
これに対してステップＳＰ１１３で否定結果が得られると、デコード処理部２８は、６倍速モード、４倍速モード及び２倍速モードのいずれでもないので、次のサブルーチンＳＲＴ２−１３の等倍速モード重心計算判断処理手順へ移って、等倍速モードにおいて、いずれのデコードステータスといずれのデコードカウンタとの組み合わせのときに重心計算を行うべきかを判断した後、サブルーチンＳＲＴ２−１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３２０】
（３−２−１−１）６倍速モード重心計算判断処理手順
デコード処理部２８は、６倍速モード重心計算判断処理を行う際、図２９に示すように６倍速モードで重心座標を出力するためのタイミングとして、デコードステータスとデコードカウンタとの組み合わせが定められている。
【０３２１】
具体的には、デコードステータス「１」でかつデコードカウンタ「４」のとき、デコードステータス「４」でかつデコードカウンタ「１」のとき、デコードステータス「６」でかつデコードカウンタ「１」のとき、デコードステータス「８」でかつデコードカウンタ「１」のとき、デコードステータス「１０」でかつデコードカウンタ「１」のとき、及びデコードステータス「０」でかつデコードカウンタ「１」のときであり、当然のように６倍速モードにおけるＩＤの出力タイミングと同期しており（図１８）、これ以外の組み合わせのときに重心座標を出力することはない。
【０３２２】
なお、ルーチンＲＴ１のＩＤモードのメイン処理手順（図１９）からも分かるように、ＩＤ重心計算処理を行うのはＩＤデコードメイン処理を行った後であるので、ここでのフラグレジスタ５７におけるデコードステータスとデコードカウンタの値はＩＤデコードメイン処理によって更新された後の値である。
【０３２３】
従って、６倍速モード重心計算判断処理の場合には、上述の組み合わせに示した条件にあうか否かを判断し、条件に合致すれば重心計算フラグに「１」をセットし、条件に合致しなければ重心計算フラグに「０」をセットするようになされている。
【０３２４】
因みにＩＤイネーブルフラグが「１」となる条件判断は、デコードステータス「０」のときはＩＤのビット「ｂ７」をデコードしている検出フレームであるため特に必要ないが、デコードステータス「０」以外のときに重心を出力する判断を行うときには（すなわち等倍速モード以外のときには）、ＩＤイネーブルフラグが「１」であることが必要である。
【０３２５】
図３０に示すように、デコード処理部２８はサブルーチンＳＲＴ２−１０の６倍速モード重心計算判断処理手順におけるステップＳＰ１２１へ移り、デコードステータスの値が「１」であるか否かを判定し、肯定結果が得られると次のステップＳＰ１２２へ移る。
【０３２６】
ステップＳＰ１２２においてデコード処理部２８は、デコードステータス「１」のときにデコードカウンタ「５」であるか否かについて判定する。ここで、否定結果が得られると、このことはデコードカウンタ「５」ではないので６倍速モードにおいて重心計算を行うタイミングではないことを表しており、このときデコード処理部２８は次のステップＳＰ１２４へ移る。
【０３２７】
ステップＳＰ１２４においてデコード処理部２８は、重心計算を行うべきタイミングではないと判断することができるので、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１を抜けてサブルーチンＲＴ２のステップＳＰ１０２へ移る。
【０３２８】
これに対してステップＳＰ１２２で肯定結果が得られると、このことはデコードステータス「１」のときにデコードカウンタ「５」であって重心計算を行うべきタイミングであることを示しており、このときデコード処理部２８は次のステップＳＰ１２６へ移る。
【０３２９】
一方、ステップＳＰ１２１で否定結果が得られると、デコード処理部２８は次のステップＳＰ１２３へ移り、デコードステータス「１」以外のときであって、デコードカウンタ「１」であるか否かを判定する。
【０３３０】
ここで否定結果が得られると、このことはデコードステータス「１」以外のときでデコードカウンタ「１」のときはないこと、すなわち６倍速モードにおいて重心計算を行うべきタイミングではないことを表しており、このときデコード処理部２８はステップＳＰ１３２へ移って、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１を抜けてサブルーチンＲＴ２のステップＳＰ１０２へ移る。
【０３３１】
これに対してステップＳＰ１２３で肯定結果が得られると、デコード処理部２８は次のステップＳＰ１２５へ移り、デコードカウンタ「１」のときにデコードステータス「４」であるか否かを判定する。
【０３３２】
ここで肯定結果が得られると、このことはデコードステータス「４」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１２６へ移る。
【０３３３】
これに対してステップＳＰ１２５で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータスの値が「１」及び「４」のいずれでもないことを表しており、このときデコード処理部２８は次のステップＳＰ１２７へ移る。
【０３３４】
ステップＳＰ１２７においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「６」であるか否かを判定する。
【０３３５】
ここで肯定結果が得られると、このことはデコードステータス「６」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１２６へ移る。
【０３３６】
これに対してステップＳＰ１２７で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータスの値が「１」、「４」及び「６」のいずれでもないことを表しており、このときデコード処理部２８は次のステップＳＰ１２８へ移る。
【０３３７】
ステップＳＰ１２８においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「８」であるか否かを判定する。
【０３３８】
ここで肯定結果が得られると、このことはデコードステータス「８」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１２６へ移る。
【０３３９】
これに対してステップＳＰ１２８で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータスの値が「１」、「４」、「６」及び「８」のいずれでもないことを表しており、このときデコード処理部２８は次のステップＳＰ１２９へ移る。
【０３４０】
ステップＳＰ１２９においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「１０」であるか否かを判定する。
【０３４１】
ここで肯定結果が得られると、このことはデコードステータス「１０」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１２６へ移る。
【０３４２】
ステップＳＰ１２６においてデコード処理部２８は、ＩＤイネーブルフラグの値が「１」であるか否かを判定する。ここで否定結果が得られると、このことはＩＤの８ビットに対するデコード処理が未だ一巡していないことを表しており、このときデコード処理部２８は次のステップＳＰ１２４へ移り、重心計算フラグの値を「０」にセットした後、サブルーチンＳＲＴ２−１０を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３４３】
これに対してステップＳＰ１２６で肯定結果が得られると、このことはＩＤの８ビットに対するデコード処理が既に一巡しており、当該ＩＤの８ビットを全てデコード済みであり、２倍速モード、４倍速モード又は６倍速モードでＩＤを出力することができ、かつ２倍速モード、４倍速モード又は６倍速モードのタイミングに合わせて重心座標を出力し得ることを表しており、このときデコード処理部２８は次のステップＳＰ１３１へ移る。
【０３４４】
これに対してステップＳＰ１２９で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータスの値が「１」、「４」、「６」、「８」及び「１０」のいずれでもないことを表しており、このときデコード処理部２８は次のステップＳＰ１３０へ移る。
【０３４５】
ステップＳＰ１３０においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「０」であるか否かを判定する。
【０３４６】
ここで肯定結果が得られると、このことはデコードカウンタ「１」であり、かつデコードステータス「０」であること、すなわちＩＤのビット「ｂ７」をデコードすることによりＩＤの８ビット全てが揃ったことを表しており、このときデコード処理部２８は次のステップＳＰ１３１へ移る。
【０３４７】
この場合、デコード処理部２８は少なくとも等倍速モードでＩＤを出力することができるので、ＩＤイネーブルフラグの値が「０」又は「１」であるか否かを特に判断する必要はない。
【０３４８】
これに対してステップＳＰ１３０で否定結果が得られると、このことはデコードカウンタ「１」でありながら、デコードステータスの値が「４」、「６」、「８」、「１０」及び「０」のいずれでもなく、重心計算を行うべきタイミングではないことを表しており、このときデコード処理部２８は次のステップＳＰ１３２へ移る。
【０３４９】
ステップＳＰ１３１においてデコード処理部２８は、ＩＤの８ビットが全て揃ったので当該ＩＤと共に重心を出力する必要があるときか、デコードステータス「４」、「６」、「８」、「１０」のいずれかであってイネーブルフラグ「１」であることによりＩＤの８ビットが全て揃わなくても、未揃い分のビットについては前サイクルのデータを用いて出力することが可能であるので、重心計算を行うべきタイミングであると判断し、重心計算フラグに「１」をセットし、サブルーチンＳＲＴ２−１０を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３５０】
一方、ステップＳＰ１３２においてデコード処理部２８は、重心計算を行うべきタイミングではないので、重心計算フラグに「０」を書き込んだ後、サブルーチンＳＲＴ２−１０を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３５１】
（３−２−１−２）４倍速モード重心計算判断処理手順
デコード処理部２８は、４倍速モード重心計算判断処理を行う際、図３１に示すように４倍速モードで重心座標を出力するためのタイミングとして、デコードステータスとデコードカウンタとの組み合わせが定められている。
【０３５２】
具体的には、デコードステータス「２」でかつデコードカウンタ「３」のとき、デコードステータス「６」でかつデコードカウンタ「１」のとき、デコードステータス「９」でかつデコードカウンタ「１」のとき及びデコードステータス「０」でかつデコードカウンタ「１」のときであり、当然のように４倍速速モードにおけるＩＤの出力タイミングと同期しており（図１８）、これ以外の組み合わせのときに重心座標を出力することはない。
【０３５３】
４倍速モード重心計算判断処理の場合にも、６倍速モード重心計算判断処理と同様に、上述の組み合わせに示した条件にあうか否かを判断し、条件に合致すれば重心計算フラグに「１」をセットし、条件に合致しなければ重心計算フラグに「０」をセットするようになされている。
【０３５４】
因みにＩＤイネーブルフラグ「１」となる条件判断は、６倍速モード重心計算判断処理手順と同様に、デコードステータス「０」のときはＩＤのビット「ｂ７」をデコードしている検出フレームであるため特に必要はないが、デコードステータス「０」以外のときに重心を出力する判断を行うときには（すなわち等倍速モード以外のときには）、ＩＤイネーブルフラグの値が「１」であることが必要である。
【０３５５】
図３２に示すように、デコード処理部２８はサブルーチンＳＲＴ２−１１の４倍速モード重心計算判断処理手順におけるステップＳＰ１４１へ移り、デコードステータスの値が「２」であるか否かを判定し、肯定結果が得られると次のステップＳＰ１４２へ移る。
【０３５６】
ステップＳＰ１４２においてデコード処理部２８は、デコードステータス「２」のときにデコードカウンタ「３」であるか否かについて判定する。ここで、否定結果が得られると、このことはデコードカウンタの値が「３」ではないため４倍速モードにおいて重心計算を行うタイミングではないことを表しており、このときデコード処理部２８は次のステップＳＰ１４３へ移る。
【０３５７】
ステップＳＰ１４３においてデコード処理部２８は、重心計算を行うべきタイミングではないとを判断したので、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１１を抜けてサブルーチンＲＴ２のステップＳＰ１０２へ移る。
【０３５８】
これに対してステップＳＰ１４２で肯定結果が得られると、このことはデコードステータス「２」のときにデコードカウンタ「３」であって重心計算を行うべきタイミングであることを示しており、このときデコード処理部２８は次のステップＳＰ１４６へ移る。
【０３５９】
一方、ステップＳＰ１４１で否定結果が得られると、デコード処理部２８は次のステップＳＰ１４４へ移り、デコードステータス「２」以外のときであって、デコードカウンタの値が「１」であるか否かを判定する。
【０３６０】
ここで否定結果が得られると、このことはデコードステータス「２」以外のときでデコードカウンタ「１」のときはないこと、すなわち４倍速モードにおいて重心計算を行うべきタイミングではないことを表しており、このときデコード処理部２８はステップＳＰ１５０へ移って、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１１を抜けてサブルーチンＲＴ２のステップＳＰ１０２へ移る。
【０３６１】
これに対してステップＳＰ１４４で肯定結果が得られると、デコード処理部２８は次のステップＳＰ１４５へ移り、デコードカウンタ「１」のときにデコードステータス「６」であるか否かを判定する。
【０３６２】
ここで肯定結果が得られると、このことはデコードステータス「６」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１４６へ移る。
【０３６３】
これに対してステップＳＰ１４５で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータスの値が「２」及び「６」のいずれでもないことを表しており、このときデコード処理部２８は次のステップＳＰ１４７へ移る。
【０３６４】
ステップＳＰ１４７においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「９」であるか否かを判定する。
【０３６５】
ここで肯定結果が得られると、このことはデコードステータス「９」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１４６へ移る。
【０３６６】
ステップＳＰ１４６においてデコード処理部２８は、ＩＤイネーブルフラグの値が「１」であるか否かを判定する。ここで否定結果が得られると、このことは未だＩＤの８ビットに対するデコード処理が一巡していないことを表しており、このときデコード処理部２８は次のステップＳＰ１４３へ移り、重心計算フラグの値を「０」にセットした後、サブルーチンＳＲＴ２−１１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３６７】
これに対してステップＳＰ１４６で肯定結果が得られると、このことはＩＤの８ビットに対するデコード処理が既に一巡し、当該ＩＤの８ビットを既にデコード済みであり、２倍速モード又は４倍速モードでＩＤを出力することができ、かつ２倍速モード又は４倍速モードのタイミングに合わせて重心座標を出力し得ることを表しており、このときデコード処理部２８は次のステップＳＰ１４９へ移る。
【０３６８】
これに対してステップＳＰ１４７で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータスの値が「２」、「６」及び「９」のいずれでもないことを表しており、このときデコード処理部２８は次のステップＳＰ１４８へ移る。
【０３６９】
ステップＳＰ１４８においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「０」であるか否かを判定する。
【０３７０】
ここで肯定結果が得られると、このことはデコードカウンタ「１」であり、かつデコードステータス「０」であること、すなわちＩＤのビット「ｂ７」をデコードすることによりＩＤの８ビット全てが揃ったことを表しており、このときデコード処理部２８は次のステップＳＰ１４９へ移る。
【０３７１】
これに対してステップＳＰ１４８で否定結果が得られると、このことはデコードカウンタ「１」でありながら、デコードステータスの値が「２」、「６」及び「９」のいずれでもなく、重心計算を行うべきタイミングではないことを表しており、このときデコード処理部２８は次のステップＳＰ１５０へ移る。
【０３７２】
ステップＳＰ１４９においてデコード処理部２８は、ＩＤの８ビットが全て揃ったので当該ＩＤと共に重心座標を出力する必要があるときか、デコードステータス「２」、「６」、「９」のいずれかであってイネーブルフラグ「１」であることによりＩＤの８ビットが全て揃わなくても、未揃い分のビットについては前サイクルのデータを用いて出力することが可能なので、重心計算を行うべきタイミングであると判断し、重心計算フラグに「１」をセットし、サブルーチンＳＲＴ２−１１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３７３】
一方、ステップＳＰ１５０においてデコード処理部２８は、重心計算を行うべきタイミングではないので、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３７４】
（３−２−１−３）２倍速モード重心計算判断処理手順
デコード処理部２８は、２倍速モード重心計算判断処理を行う際、図３３に示すように２倍速モードで重心座標を出力するためのタイミングとして、デコードステータスとデコードカウンタとの組み合わせが定められている。
【０３７５】
具体的には、デコードステータス「６」でかつデコードカウンタ「１」のとき及びデコードステータス「０」でかつデコードカウンタ「１」のときであり、当然のように２倍速速モードにおけるＩＤの出力タイミングと同期しており（図１８）、これ以外の組み合わせのときに重心座標を出力することはない。
【０３７６】
２倍速モード重心計算判断処理の場合にも、６倍速モード重心計算判断処理や４倍速モード重心計算判断処理と同様に、上述の組み合わせに示した条件にあうか否かを判断し、条件に合致すれば重心計算フラグに「１」をセットし、条件に合致しなければ重心計算フラグに「０」をセットするようになされている。
【０３７７】
因みにＩＤイネーブルフラグ「１」となる条件判断は、６倍速モード重心計算判断処理手順や４倍速モード重心計算判断処理手順のときと同様に、デコードステータス「０」のときはＩＤのビット「ｂ７」をデコードしている検出フレームであるため特に必要はないが、デコードステータス「０」以外のときに重心座標を出力する判断を行うときには（すなわち等倍速モード以外のときには）、ＩＤイネーブルフラグの値が「１」であることが必要である。
【０３７８】
図３４に示すように、デコード処理部２８はサブルーチンＳＲＴ２−１２の２倍速モード重心計算判断処理手順におけるステップＳＰ１５１へ移り、デコードカウンタの値が「１」であるか否かを判定する。
【０３７９】
ここで否定結果が得られると、このことは２倍速モードのときにはデコードカウンタ「１」以外のときに重心計算を行うタイミングは存在しないことを表しており、このときデコード処理部２８は次のステップＳＰ１５２へ移る。
【０３８０】
ステップＳＰ１５２においてデコード処理部２８は、重心計算を行うべきタイミングではないと判断したので、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１２を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ移る。
【０３８１】
これに対してステップＳＰ１５１で肯定結果が得られると、このことはデコードカウンタ「１」であって重心計算を行うべきタイミングである可能性があることを示しており、このときデコード処理部２８は次のステップＳＰ１５３へ移る。
【０３８２】
ステップＳＰ１５３においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「６」であるか否かを判定する。
【０３８３】
ここで肯定結果が得られると、このことはデコードステータス「６」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１５４へ移る。
【０３８４】
ステップＳＰ１５４においてデコード処理部２８は、ＩＤイネーブルフラグの値が「１」であるか否かを判定する。ここで否定結果が得られると、このことは未だＩＤの８ビットに対するデコード処理が一巡していないことを表しており、このときデコード処理部２８は次のステップＳＰ１５５へ移る。
【０３８５】
これに対してステップＳＰ１５４で肯定結果が得られると、このことはＩＤの８ビットに対するデコード処理が既に一巡し、当該ＩＤの８ビットを既にデコード済みであり、２倍速モードでＩＤを出力するタイミングに合わせて重心座標を出力し得ることを表しており、このときデコード処理部２８は次のステップＳＰ１５６へ移る。
【０３８６】
ステップＳＰ１５５においてデコード処理部２８は、デコードステータス「６」のときにデコードカウンタ「１」ではあるものの、ＩＤイネーブルフラグの値が「０」であるために２倍速モードで重心座標を出力することはできないと判断し、このとき重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１２を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ移る。
【０３８７】
これに対してステップＳＰ１５３で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータス「６」ではないことを表しており、このときデコード処理部２８は次のステップＳＰ１５７へ移る。
【０３８８】
ステップＳＰ１５７においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「０」であるか否かを判定する。
【０３８９】
ここで肯定結果が得られると、このことはデコードステータス「０」でかつデコードカウンタ「１」であるので重心計算を行うべきタイミングであると判断し、このときデコード処理部２８は次のステップＳＰ１５６へ移る。
【０３９０】
ステップＳＰ１５６においてデコード処理部２８は、ＩＤの８ビットが全て揃ったので当該ＩＤと共に重心座標を出力する必要があるときか、デコードステータス「６」でかつデコードカウンタ「１」であってイネーブルフラグの値が「１」であることによりＩＤの８ビットが全て揃わなくても、未揃い分のビットについては前サイクルのデータを用いて出力することが可能であるときなので、重心計算を行うべきタイミングであると判断し、重心計算フラグに「１」をセットし、サブルーチンＳＲＴ２−１２を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３９１】
これに対してステップＳＰ１５７で否定結果が得られると、このことはデコードカウンタ「１」でありながらデコードステータス「６」でも、デコードステータス「０」でもないことを、すなわち重心計算を行うべきタイミングではないことを表しており、このときデコード処理部２８は次のステップＳＰ１５２へ移る。
【０３９２】
ステップＳＰ１５２においてデコード処理部２８は、重心計算を行うべきタイミングではないので、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１１を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０３９３】
（３−２−１−４）等倍速速モード重心計算判断処理手順
デコード処理部２８は、等倍速速モード重心計算判断処理を行う際、図３５に示すように等倍速モードで重心出力を行うためのタイミングとして、デコードステータスとデコードカウンタとの組み合わせが定められている。
【０３９４】
具体的には、デコードステータス「０」でかつデコードカウンタ「１」の組み合わせのときだけであり、当然のように等倍速速モードにおけるＩＤの出力タイミングと同期しており（図１８）、これ以外の組み合わせのときに重心座標を出力することはない。
【０３９５】
等倍速速モード重心計算判断処理の場合にも、他の６倍速モード重心計算判断処理等と同様に、上述の組み合わせに示した条件にあうか否かを判断し、条件に合致すれば重心計算フラグに「１」をセットし、条件に合致しなければ重心計算フラグに「０」をセットするようになされている。
【０３９６】
因みに、この場合は等倍速速モードだけであるので、フラグレジスタ５７におけるＩＤイネーブルフラグを用いることはなく、その判断処理は省略されている。
【０３９７】
図３６に示すように、デコード処理部２８はサブルーチンＳＲＴ２−１３の等倍速速モード重心計算判断処理手順におけるステップＳＰ１６１へ移り、デコードカウンタの値が「１」であるか否かを判定する。
【０３９８】
ここで否定結果が得られると、このことは等倍速速モードのときにはデコードカウンタ「１」以外のときに重心計算を行うタイミングは存在しないことを表しており、このときデコード処理部２８は次のステップＳＰ１６４へ移る。
【０３９９】
ステップＳＰ１６４においてデコード処理部２８は、重心計算を行うべきタイミングではないと判断したので、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１３を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ移る。
【０４００】
これに対してステップＳＰ１６１で肯定結果が得られると、このことはデコードカウンタの値が「１」であって重心計算を行うべきタイミングである可能性があることを示しており、このときデコード処理部２８は次のステップＳＰ１６２へ移る。
【０４０１】
ステップＳＰ１６２においてデコード処理部２８は、デコードカウンタ「１」のときにデコードステータス「０」であるか否かを判定する。
【０４０２】
ここで肯定結果が得られると、このことはデコードステータス「０」でかつデコードカウンタ「１」ではないので重心計算を行うべきタイミングではないと判断し、このときデコード処理部２８は次のステップＳＰ１６４へ移り、重心計算フラグに「０」をセットした後、サブルーチンＳＲＴ２−１３を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ移る。
【０４０３】
これに対してステップＳＰ１６２で肯定結果が得られると、このことはデコードステータス「０」であり、デコードカウンタ「１」であること、すなわち重心計算を行うタイミングであると判定することができるので、このときデコード処理部２８は次のステップＳＰ１６３へ移る。
【０４０４】
ステップＳＰ１６３においてデコード処理部２８は、重心計算を行うべきタイミングなので、重心計算フラグに「１」をセットした後、サブルーチンＳＲＴ２−１３を抜けてサブルーチンＳＲＴ２のステップＳＰ１０２へ戻る。
【０４０５】
（４）動作及び効果
以上の構成において、ＩＤ認識システム１におけるＩＤカメラ３は、光ビーコン２から発信される光の点滅パターンをイメージセンサ２１又は機能性イメージセンサ５０により撮像し、当該点滅パターンをデコードすることによりマンチェスタ符号化前の８ビットでなるＩＤを復元すると共に、当該光ビーコン２の画面上での位置（重心座標）を検出し、これらをＩＤデータとして出力する。
【０４０６】
このときＩＤカメラ３は、当該ＩＤデータをビデオフレームの垂直同期信号（Vsinc）のタイミングまで待つことなく８ビット全てが揃った段階（等倍速モード）で直ちに出力することにより、従来のように垂直同期信号（Vsinc）のタイミングまで待って出力する場合と比較して、等倍速モードでさえＩＤ出力周期を約３倍も短縮することができる。
【０４０７】
またＩＤカメラ３は、デコード処理によってマンチェスタ符号化前のＩＤが８ビット全て揃ってから出力する等倍速モードばかりではなく、１周期前の前サイクルで既に８ビットのＩＤを全てデコードできていた場合には、現時点でデコード処理によって復元できたＩＤにおける前半部分の値と、前サイクルで既に復元された当該ＩＤにおける後半部分の値とを併せて合計８ビットのＩＤを生成して出力することができるので、１周期の２倍周期すなわち２倍速モードや、４倍周期すなわち４倍速モードや、６倍周期すなわち６倍速モードでＩＤデータを出力することも可能である。
【０４０８】
これによりＩＤカメラ３としては、１００００[fps]の機能性イメージセンサ５０を用いて６倍速モードを選定すれば、特別に構成を複雑化することなく１２４８[Hz]の高速なＩＤ出力周期を可能とすることができる。一方、ＩＤカメラ３では、５００[fps]程度のイメージセンサ２１を用いた場合であっても、６倍速モードを選定すればビデオフレームのフレーム周波数３０[Hz]の約２倍に相当する６０[Hz]のＩＤ出力周期についても容易に実現することができる。
【０４０９】
このようにＩＤカメラ３では、ハードウェア的な構成を追加したり、イメージセンサ２１又は機能性イメージセンサ５０のフレームレートを上げるのではなく、倍速モードを選定してＩＤの８ビットが揃った時点で垂直同期信号（Vsinc）とは無関係にＩＤを出力することにより、ＩＤ周期を従来に比して大幅に短縮することができ、かくして複雑な回路構成を必要としたり、また消費電力を増加させることなく光ビーコン２に対するトラッキングを実現することができる。
【０４１０】
またＩＤカメラ３のデコード処理部２８は、注目画素だけに着目してデコード処理するのではなく、その周辺画素を含めたウィンドウ領域Ｗについてデコード処理し、その中で１つでも有意な受光情報が得られれば、注目画素のデコード結果をＣＰw(n)＝１（又はＣＭw(n)＝１）として出力するようにしたことにより、光ビーコン２Ａが高速に移動して当該ＩＤカメラ３と当該光ビーコン２Ａとの相対位置が激しく変化したときであっても、時系列の点滅パターンとして発信される光をウィンドウ領域Ｗにおける複数の画素で捉えることができるので、当該複数画素の受光情報に基づいて重心座標を算出し正確な位置検出を行うことができる。
【０４１１】
さらに、このときＩＤカメラ３のデコード処理部２８は、複数画素で同一番号のＩＤを復元することになるが、複数画素で捉えられたＩＤの重心座標を算出することにより、高速移動中の光ビーコン２Ａにおける画面上での位置を一段と正確に検出することができるので、モーションキャプチャやユーザインタフェース等にも用いることができる。
【０４１２】
以上の構成によれば、ＩＤカメラ３のデコード処理部２８は、デコード後におけるマンチェスタ符号化前のＩＤが８ビット揃った段階で直ちに出力することにより、従来のように垂直同期信号（Vsinc）のタイミングまで待って出力する場合と比較して、ＩＤ出力周期を格段に短縮したトラッキングを実現することができる。
【０４１３】
またＩＤカメラ３のデコード処理部２８は、１周期前の前サイクルで既に８ビットのＩＤを全てデコードできていた場合には、現時点でデコード処理によって復元できたＩＤにおける前半部分の値と、前サイクルで既に復元された当該ＩＤにおける後半部分の値とを併せた合計８ビットのＩＤとして出力することにより、２倍速モード、４倍速モード又は６倍速モードでＩＤを出力することができ、かくしてフレームレートの高くないイメージセンサであっても倍速モードを選定することによってイメージセンサ２１又は機能性イメージセンサ５０の能力以上の速い周期でＩＤを出力することができる。
【０４１４】
（５）他の実施の形態
なお上述の実施の形態においては、デコード処理部２８を図１６に示したようなハードウェアによって構成するようにした場合について述べたが、本発明はこれに限らず、十分高速なマイクロプロセッサやＤＳＰ(Digital Signal Processor)を用いてソフトウェアによって構成するようにしても良い。
【０４１５】
また上述の実施の形態においては、８ビットのＩＤを「１０」又は「０１」でなる２ビットのマンチェスタ符号に符号化するようにした場合について述べたが、本発明はこれに限らず、データ送信区間に必ず点滅させて光の変化を検出することができるのであれば、３ビットや４ビットのその他種々の符号を用いるようにしてもよい。
【０４１６】
さらに上述の実施の形態においては、データ出力制御プログラムに従い「Ｘ座標の和」、「Ｙ座標の和」及び「認識画素数」を用いて重心座標を計算するようにした場合について述べたが、本発明はこれに限らず、画素単位で重み付けを行うことにより重心座標を計算するようにしても良い。
【０４１７】
さらに上述の実施の形態においては、ＩＤカメラ３がＲＯＭ等に予め格納されたデータ出力制御プログラムに従ってＩＤモードにおけるメイン処理手順等を実行するようにした場合について述べたが、本発明はこれに限らず、データ出力制御プログラムが格納されたプログラム格納媒体をＩＤカメラ３にインストールすることにより上述のＩＤモードにおけるメイン処理手順を実行するようにしても良い。
【０４１８】
さらに上述の実施の形態においては、本発明を情報処理装置としてのＩＤカメラ３に適用するようにした場合について述べたが、本発明はこれに限らず、イメージセンサ等が搭載されたパーソナルコンピュータ、ＰＤＡ(Personal Digital Assistant)、携帯電話機等に適用するようにしても良い。
【０４１９】
さらに上述の実施の形態においては、本発明の情報処理装置又は受信装置としてのＩＤカメラ３を、送信装置としての光ビーコン２により所定の点滅パターンで発光する光を２次元受光面を介して受光する受光手段としてのイメージセンサ２１又は機能性イメージセンサ５０と、当該イメージセンサ２１又は機能性イメージセンサ５０により受光された受光信号を処理し、当該受光信号の点滅パターンに基づいて光ビーコン２からの送信データをデコードするデコード手段としてのデコード処理部２８とによって構成するようにした場合について述べたが、本発明はこれに限らず、その他種々の回路構成で情報処理装置としてのＩＤカメラ３を構成するようにしても良い。
【産業上の利用可能性】
【０４２０】
本発明の情報処理装置は、例えば実世界状況を積極的に利用した拡張現実（ＡＲ：Augmented Reality）システムで用いられるカメラ付携帯端末等に適用することができる。
【図面の簡単な説明】
【０４２１】
【図１】本発明におけるＩＤ認識システムの全体構成を示す略線図である。
【図２】送信データのフォーマットを示す略線図である。
【図３】ＩＤのデコード原理の説明に供する略線図である。
【図４】ＩＤのデータ出力タイミングの説明に供する略線図である。
【図５】ＩＤ出力周期の短縮パターン（４倍速モードの例）の説明に供する略線図である。
【図６】ＩＤ出力周期の短縮の概念を示す略線図である。
【図７】イメージセンサのフレームレートとＩＤ出力周期との関係を示す略線図である。
【図８】近傍画素の受光情報を用いたデコードの説明に供する略線図である。
【図９】ＩＤ認識システムの構成を示す略線図である。
【図１０】光ビーコンの回路構成を示す略線的ブロック図である。
【図１１】ＩＤカメラの回路構成を示す略線的ブロック図である。
【図１２】比較部の回路構成を示す略線的ブロック図である。
【図１３】ウィンドウ処理部の回路構成を示す略線的ブロック図である。
【図１４】機能性イメージセンサを用いたＩＤカメラの回路構成を示す略線的ブロック図である。
【図１５】機能性イメージセンサの回路構成を示す略線的ブロック図である。
【図１６】デコード処理部の回路構成を示す略線的ブロック図である。
【図１７】レジスタの構成を示す略線図である。
【図１８】ＩＤのデコード処理波形を示す略線図である。
【図１９】ＩＤモードのメイン処理手順を示すフローチャートである。
【図２０】ＩＤデコードメイン処理手順を示すフローチャートである。
【図２１】ヘッダーデコード処理手順を示すフローチャートである。
【図２２】デコードステータス「０」の処理手順を示すフローチャートである。
【図２３】デコードステータス「１」の処理手順を示すフローチャートである。
【図２４】デコードステータス「２」の処理手順を示すフローチャートである。
【図２５】デコードステータス「３」の処理手順を示すフローチャートである。
【図２６】ＩＤデコード処理手順を示すフローチャートである。
【図２７】ＩＤ重心計算処理手順を示すフローチャートである。
【図２８】重心計算判断処理手順を示すフローチャートである。
【図２９】６倍速速モードにおける重心出力の組合せを示す略線図である。
【図３０】６倍速速モード重心計算判断処理手順を示すフローチャートである。
【図３１】４倍速速モードにおける重心出力の組合せを示す略線図である。
【図３２】４倍速速モード重心計算判断処理手順を示すフローチャートである。
【図３３】２倍速速モードにおける重心出力の組合せを示す略線図である。
【図３４】２倍速速モード重心計算判断処理手順を示すフローチャートである。
【図３５】等倍速モードにおける重心出力の組合せを示す略線図である。
【図３６】等倍速モード重心計算判断処理手順を示すフローチャートである。
【図３７】従来のＩＤデータ出力タイミングを示す略線図である。
【符号の説明】
【０４２２】
１……ＩＤ認識システム、２……光ビーコン、３……ＩＤカメラ、１０……光源、１１……点滅制御部、１２……送信データ保存用メモリ、１３……データ送受信部、１４……通信路、２０……レンズ、２１……イメージセンサ、２２……アナログディジタル変換回路、２３……映像用フレームメモリ、２４……画像処理部、２５、５２……差分取得用フレームメモリ、２６……比較部、２７……ウィンドウ処理部、２８……デコード処理部、３１……正のＭフレーム間差分計算部、３２、３４、５３……コンパレータ、３３……負のＭフレーム間差分計算部、３６〜３８、４０〜４２……ディレイライン、３９、４３……ＯＲ演算処理回路、５０……機能性イメージセンサ、５１……受光部、５５……ＩＤデコード回路部、５６……ＩＤデコード回路、５７……フラグレジスタ、５８……データレジスタ、６０……タイミング制御部、６１……ＩＤ重心計算回路、６２……重心出力フラグ、６３……ＩＤ座標格納メモリ、６４……除算回路、６５……ＩＤデコード用フレームメモリ。
【図１】
2005318005.tif 000026
【図２】
2005318005.tif 000027
【図３】
2005318005.tif 000028
【図４】
2005318005.tif 000029
【図５】
2005318005.tif 000030
【図６】
2005318005.tif 000031
【図７】
2005318005.tif 000032
【図８】
2005318005.tif 000033
【図９】
2005318005.tif 000034
【図１０】
2005318005.tif 000035
【図１１】
2005318005.tif 000036
【図１２】
2005318005.tif 000037
【図１３】
2005318005.tif 000038
【図１４】
2005318005.tif 000039
【図１５】
2005318005.tif 000040
【図１６】
2005318005.tif 000041
【図１７】
2005318005.tif 000042
【図１８】
2005318005.tif 000043
【図１９】
2005318005.tif 000044
【図２０】
2005318005.tif 000045
【図２１】
2005318005.tif 000046
【図２２】
2005318005.tif 000047
【図２３】
2005318005.tif 000048
【図２４】
2005318005.tif 000049
【図２５】
2005318005.tif 000050
【図２６】
2005318005.tif 000051
【図２７】
2005318005.tif 000052
【図２８】
2005318005.tif 000053
【図２９】
2005318005.tif 000054
【図３０】
2005318005.tif 000055
【図３１】
2005318005.tif 000056
【図３２】
2005318005.tif 000057
【図３３】
2005318005.tif 000058
【図３４】
2005318005.tif 000059
【図３５】
2005318005.tif 000060
【図３６】
2005318005.tif 000061
【図３７】
2005318005.tif 000062