以下、本発明を実施するための最良の形態について説明する。なお、この実施の形態は、店舗内を移動する顧客の経路を示す動線データと、その顧客と店舗との間の商取引の内容を示すトランザクションデータとから、顧客の店舗内での行動を解析する場合である。
本実施の形態の動線管理システムは、図1のブロック図に示すように、販売管理装置1と、動線管理装置2と、動線解析装置3とから構成されている。販売管理装置1と、動線管理装置2及び動線解析装置3とは、コンピュータ間ネットワークで双方向通信自在に接続されている。
販売管理装置1は、複数台のPOS端末11と、1台のPOSサーバ12とから構成されている。各POS端末11は、LAN(Local Area Network)等の通信回線13を介して、POSサーバ12に接続されている。POSサーバ12は、各POS端末11の上位機として機能する。本実施の形態では、説明の便宜上、POS端末の台数を2台とする。一方のPOS端末を符号11aで示し、他方のPOS端末を符号11bで示す。このような販売管理装置1は、一般に、POSシステムと称される。
各POS端末11a,11bは、顧客が買上げる商品の販売データとその顧客の支払データとを処理して、顧客毎にトランザクションデータを生成する。生成されたトランザクションデータは、通信回線13を介して、POSサーバ12に送信される。POSサーバ12は、各POS端末11a,11bから受信したトランザクションデータを、トランザクションデータベース14に順次保存する。
トランザクションデータのデータ構造を図2に示す。図示するように、トランザクションデータには、顧客が買上げた商品の明細情報(アイテムID、商品名、分類ID、分類名、単価)と、取引一連番号と、端末番号と、取引日時と、合計金額と、支払区分と、客層とが含まれる。アイテムIDは、各商品を識別するために商品毎に異なるコードが設定される。端末番号は、各POS端末11a,11bを識別するために端末毎に異なる数値が設定される。取引日時は、商取引が開始されたときの日付と時刻である。各POS端末11a,11bには、RTC(Real-Time Clock)が実装されており、顧客の1品目の商品データが入力されたときにRTCが計時している日時データが取引日時としてセットされる。なお、商取引が終了したとき、すなわち、チェックアウトキーが操作された時点の日付と時刻を取引日時としてもよい。支払区分は、代金の支払い方法、例えば現金、クレジットカード等を区分するデータである。客層は、顧客の性別及び年齢層を区分するデータである。
トランザクションデータは、端末番号と取引日時と取引一連番号との組合せによって一意に識別される。すなわち、端末番号、取引日時及び取引一連番号からなるデータは、トランザクションデータのIDとなる。
動線管理装置2は、複数台のカメラCAと動線サーバ20とから構成されている。各カメラCAは、図3の店舗内レイアウト図に示すように、店舗内中央部の天井に1台(CA1)、POS(Point Of Sales)端末11a,11bが置かれている会計カウンタCH近傍の天井に2台(CA2,CA3)、会計カウンタCHに対して店内奥側及び左右壁側の計3箇所の天井に3台(CA4,CA5,CA6)が取り付けられている。このうち、カメラCA1,CA2,CA3は魚眼カメラであり、カメラCA4,C5,CA6は全方位カメラである。
動線サーバ20は、図4のブロック図に示すように、動線データ生成部21と記憶部22とから構成されている。
動線データ生成部21は、各カメラCA1〜CA6でそれぞれ撮影された映像から、一定の周期でカメラ別フレーム画像を抽出する。そして、抽出された同一タイミングのカメラ別フレーム画像を解析する。その結果、移動体を検出したならば、動線データ生成部21は、その移動体をターゲットとして追跡する。また、動線データ生成部21は、新たなターゲットを検出する毎に、そのターゲットに固有の識別子であるターゲットIDを付す。動線データ生成部21は、これらの情報を基に、フレーム単位のオリジナル動線データを生成する。
本実施の形態では、説明の便宜上、ターゲットIDは、“0”から1ずつ昇順に繰り上がる連続番号とする。また、フレーム画像を抽出する周期は1/15秒とする。この周期は変更できる。例えば、より詳細な動線データが必要な場合には、例えば1/30秒というように周期を短くすればよい。オリジナル動線データベース41のファイル容量を小さくする必要がある場合には、例えば1/10秒というように周期を長くすればよい。
記憶部22は、例えばハードディスクやフラッシュメモリ等の不揮発性記憶媒体である。記憶部22には、オリジナル動線データベース41、カメラ画像データベース42、編集動線データベース43、設定データベース44、カメラパラメータデータベース45、店内エリア定義データベース46及び店内マップデータベース47が形成されている。
オリジナル動線データベース41には、図5に示すように、動線データ生成部21で生成されるフレーム単位のオリジナル動線データが順に記憶される。オリジナル動線データは、カメラ画像ファイルのファイル名と、オフセット値と、撮影日時情報と、ターゲット数と、ターゲット数分のターゲット情報(ID,X,Y,H)とによって構成される。
各カメラCA1〜CA6で撮影された映像から同一のタイミングで抽出された各フレーム画像は、1つのカメラ画像ファイルに保存される。このとき、各フレーム画像には、それぞれ異なるオフセット値が付される。このカメラ画像ファイルのファイル名と各フレーム画像のオフセット値とが、そのフレームに基づいたオリジナル動線データに組み込まれる。
動線データ生成部21では、各フレーム画像からターゲットが検出される。ターゲットには固有のIDが付される。また、ターゲットの位置が三次元の世界座標系(X,Y,H)で算出される。本実施の形態では、図3の店内レイアウト図において、左奥の角をX軸及びY軸の原点(0,0)とし、その床面をH(Height)軸の原点としている。同一タイミングのフレーム画像から検出されたターゲットの数と、そのフレーム画像の撮影日時と、ターゲット毎のターゲット情報(ID,X,Y,H)とが、そのフレームに基づいたオリジナル動線データに組み込まれる。
カメラ画像データベース42には、各カメラCA1〜CA6でそれぞれ撮影された映像からカメラCA1〜CA6毎に抽出された同一時刻の各フレーム画像を格納したカメラ画像ファイルのデータが順に記憶される。
編集動線データベース43には、編集動線データが記憶される。編集動線データは、オリジナル動線データに基づいてターゲット毎に生成される。編集動線データのデータ構造を図6に示す。図示するように、編集動線データは、固有の動線IDと、始点座標と、終点座標と、複数のインデックス情報と、各種のステータス情報と、各種の連結定義情報とから構成される。始点座標は、動線IDで特定される動線の始点を示す二次元座標である。終点座標は、その動線の終点を示す二次元座標である。インデックス情報は、画像のフレーム単位に生成される。動線IDで特定される動線の店舗内座標(X,Y,H)と、撮影日時情報Tと、変化点フラグFとが、1つのインデックス情報に含まれる。ステータス情報には、状態ステータス,無効化ステータス及び部分動線ステータスがある。連結定義情報には、起点情報,前連結ID及び後連結IDがある。
設定データベース44には、動線編集作業に必要な種々の設定データが予め格納されている。
カメラパラメータデータベース45には、魚眼カメラCA1〜CA3に関する種々のパラメータデータと、全方位カメラCA4〜CA6に関する種々のパラメータデータとが予め格納されている。
店内エリア定義データベース46には、店舗のエリアを定義するためのデータが予め格納されている。本実施の形態では、店舗を入口エリアと無効エリアと売場エリアとに区分している。入口エリアは、図3において、入退場口IN/OUTより店内側の破線で囲われた矩形のエリアである。この入口エリア内の二次元座標(X,Y)が、入口エリア定義データとして店内エリア定義データベース46に記憶されている。無効エリアは、客が買い回りをすることができないエリアである。図3において、商品陳列棚Rが設置されているエリアと会計カウンタCHより内側のエリアが無効エリアに該当する。この無効エリア内の二次元座標(X,Y)が、無効エリア定義データとして店内エリア定義データベース46に記憶されている。売場エリアは、客が買い回りをするエリアである。店内から入口エリアと無効エリアとを除いたエリアが売場エリアに該当する。この売場エリア内の二次元座標(X,Y)が売場エリア定義データとして店内エリア定義データベース46に記憶されている。
店内マップデータベース47には、図3に示すレイアウト図と同様の店内マップ平面図のイメージデータが予め格納されている。
動線解析装置3は、入力部31、表示部32、通信部33、プログラム記憶部34、データ記憶部35、出力ファイル36及び制御部37で構成されている。入力部31としては、キーボード,マウス等の入力デバイスが用いられる。表示部32としては、液晶ディスプレイ,CRTディスプレイ等の表示デバイスが用いられる。通信部33は、POSサーバ12及び動線サーバ20とのインターフェイス機能を有する。プログラム記憶部34は、ROM(Read Only Memory)で構成されている。データ記憶部35は、RAM(Random Access Memory)で構成されている。出力ファイル36は、ハードディスクや光磁気ディスク等の記録媒体で構成されている。制御部37は、CPU(Central Processing Unit)を主体に構成されている。動線解析装置3は、パーソナルコンピュータ等のコンピュータ機器によって実現される。
プログラム記憶部34には、動線編集プログラムP1と動線解析プログラムP2が記憶されている。
店舗内には商品陳列棚R等が置かれている。このため、ターゲットが棚の陰に隠れてしまって、ターゲットを途中で追跡できなくなる場合がある。また、複数のターゲットが重なってしまって、ターゲットを追跡できなくなる場合もある。動線管理装置2では、ターゲットの追跡が一旦途絶えると、同一人物でも別の動線IDが付されて管理される。
動線解析装置3は、同一人物に対して生成された複数の動線データを抽出し、入店から出店までを結んだ完全動線を編集する機能を有する。また、動線解析装置3は、客の入店から出店までの行動等を分析する機能を有する。前者の機能は、動線編集プログラムP1によって実現される。後者の機能は、動線解析プログラムP2によって実現される。
オペレータが動線編集業務の開始を指令すると、動線編集プログラムP1が起動する。動線編集プログラムP1が起動すると、制御部37は、通信部33を介して動線サーバ20に接続する。そして、動線編集プログラムP1に従い、動線サーバ20の記憶部22に設けられた各データベース41〜47を適宜アクセスして、図8の流れ図に示す手順の動線編集処理を実行する。
制御部37は、ST(ステップ)1として動線編集画面50を表示部32に表示させる。動線編集画面50の一例を図7に示す。図示するように、動線編集画面50は、動線表示部51と、カメラ画像表示部52と、動線リスト表示部53と、座標表示部54とに区分されている。
動線表示部51には、店内マップデータベース47に記憶されているイメージデータに基づいて、店内マップの平面図が表示される。動線表示部51には、スクロールバー55が設けられている。スクロールバー55は、カメラCA1〜CA6の撮影時間に同期している。オペレータが、スクロールバー55を画面に向かって左端から右端にスライドさせると、撮影時間が経過する。そして、その時間に各カメラCA1〜CA6で撮影された画像から検出されたターゲットの動線が、該店内マップに重ねて表示される。
カメラ画像表示部52には、スクロールバー55で指定された時間に各カメラCA1〜CA6で撮影された画像が表示される。図示するように、6台のカメラCA1〜CA6の画像を並べて同時に表示することができる。また、その中から選択された1乃至複数のカメラの画像を拡大して表示することもできる。
動線編集画面50を表示した後、制御部37は、ST2として動線データ作成処理を実行する。この作成処理の処理手順は、図9の流れ図によって示される。すなわち制御部37は、先ず、ST31として編集動線データベース43をクリアする。次に、制御部37は、ST32として番号カウンタのカウント値Nを“0”にプリセットする。このプリセット値“0”は、動線データ生成部21において、新たなターゲットを検出する毎に付与されるターゲットIDの初期値である。
番号カウンタのカウント値Nを“0”にプリセットした後、制御部37は、ST33としてNと一致するターゲットIDが“N”(Nは番号カウンタの値)のターゲット情報を有するオリジナル動線データをオリジナル動線データベース41から検索する。
ST34として該当オリジナル動線データを1つ以上検出できた場合には、制御部37は、ST35としてそのターゲットID“N”を動線IDとする編集動線データを生成する。そして、この編集動線データに、始点座標(X0,Y0)、終点座標(Xn,Yn)及びインデックス情報(X,Y,H,T,F)をセットする。
すなわち制御部37は、オリジナル動線データベース41から検出された全てのオリジナル動線データから、ターゲットIDが“N”のターゲット情報を取得する。そして、撮影日時が最も古いオリジナル動線データから取得したターゲット情報の二次元座標(X,Y)を、編集動線データの始点座標(X0,Y0)としてセットする。また、撮影日時が最も新しいオリジナル動線データから取得したターゲット情報の二次元座標(X,Y)を、編集動線データの終点座標(Xn,Yn)としてセットする。さらに、各オリジナル動線データから取得したターゲット情報の三次元座標(X,Y,H)と、撮影日時情報Tとを、編集動線データのインデックス情報として、撮影日時の古い順にセットする。なお、各インデックス情報の変化点フラグFは、リセットされている。
動線IDが“N”の編集動線データが作成されたならば、制御部37は、ST36としてこの編集動線データを編集動線データベース43に保存する。しかる後、制御部37は、ST37として番号カウンタを“1”だけカウントアップする。そして、ST33〜ST37の処理を再度実行する。
制御部37は、ターゲットIDが“N”のターゲット情報(ID,X,Y,H)を有するオリジナル動線データを検出できなくなるまで、ST33〜ST37の処理を繰り返す。その結果、オリジナル動線データベース41のオリジナル動線データを基に、動線IDが“1”ずつ昇順する編集動線データが生成され、編集動線データベース43に保存される。
ST34としてターゲットIDが“N”のターゲット情報を有するオリジナル動線データを1つも検出できなかった場合には、制御部37は、ST38として番号カウンタのカウント値Nから“1”を減算した値“N−1”を、最終動線IDとしてデータ記憶部35に記憶する。以上で、動線データ作成処理が終了する(動線生成手段)。
動線データ作成処理が終了すると、制御部37は、次に、ST3として動線の状態定義処理を実行する。この状態定義処理の処理手順は、図10の流れ図によって示される。すなわち制御部37は、編集動線データベース43から編集動線データを、例えば動線IDが小さい順に1つずつ抽出する。そして、抽出した編集動線データに対して、制御部37は、以下の処理ルーチンに従い状態ステータスを設定する。
先ず、制御部37は、ST41として編集動線データから始点座標(X0,Y0)を取得する。そして、店内エリア定義データベース46を参照して、この始点座標(X0,Y0)が入口エリアとして定義された座標であるか否かを判断する。入口エリアの座標であった場合には、制御部37は、ST42として編集動線データから終点座標(Xn,Yn)を取得する。そして、店内エリア定義データベース46を参照して、この終点座標(Xn,Yn)も入口エリアの座標であるか否かを判断する。
終点座標(Xn,Yn)も入口エリアの座標であった場合には、制御部37は、ST43として同編集動線データのインデックス情報を撮影日時の古い順に調べる。その結果、入口エリアの座標以外の座標を含むインデックス情報を検出した場合には、この編集動線データに対応するターゲットは、入口エリアから一旦出た後、入口エリアに戻っている。この場合、制御部37は、状態ステータスを「入口→入口」に設定する。
ST43にて入口エリアの座標以外の座標を含むインデックス情報を1つも検出しなかった場合には、この編集動線データに対応するターゲットは、入口エリアから一度も出ていない。この場合、制御部37は、状態ステータスを「入口」に設定する。
ST42にて終点座標(Xn,Yn)が入口エリアの座標でなかった場合には、終点座標(Xn,Yn)は、売場エリアまたは無効エリアとして定義されている。この場合、制御部37は、状態ステータスを「入口→店内」に設定する。
ST41にて始点座標(X0,Y0)が入口エリアの座標でなかった場合には、制御部37は、ST44としてこの始点座標(X0,Y0)が無効エリアとして定義された座標であるか否かを判断する。無効エリアの座標であった場合には、制御部37は、ST45として同編集動線データから終点座標(Xn,Yn)を取得する。そして、店内エリア定義データベース46を参照して、この終点座標(Xn,Yn)が無効エリアの座標であるか否かを判断する。
終点座標(Xn,Yn)が無効エリアの座標であった場合には、制御部37は、ST46として同編集動線データのインデックス情報を撮影日時の古い順に調べる。その結果、無効エリアの座標以外の座標を含むインデックス情報を1つも検出しなかった場合には、この編集動線データに対応するターゲットは、無効エリアから一度も出ていない。この場合、制御部37は、状態ステータスを「無効」に設定する。
ST46にて無効エリアの座標以外の座標を含むインデックス情報を検出した場合には、この編集動線データに対応するターゲットは、無効エリアから一旦出た後、無効エリアに戻っている。この場合、制御部37は、状態ステータスを「店内→店内」に設定する。
ST45にて終点座標(Xn,Yn)が無効エリアの座標でなかった場合には、制御部37は、ST47にて店内エリア定義データベース46を参照してこの終点座標(Xn,Yn)が売場エリアの座標であるか否かを判断する。
終点座標(Xn,Yn)が売場エリアの座標であった場合には、制御部37は、状態ステータスを「店内→店内」に設定する。これに対し、売場エリアの座標でなかった場合には、終点座標(Xn,Yn)は入口エリアの座標である。この場合、制御部37は、状態ステータスを「店内→入口」に設定する。
ST44にて始点座標(X0,Y0)が無効エリアの座標でなかった場合には、始点座標(X0,Y0)は売場エリアの座標である。この場合には、制御部37は、ST48として編集動線データから終点座標(Xn,Yn)を取得する。そして、店内エリア定義データベース46を参照して、この終点座標(Xn,Yn)が入口エリアの座標であるか否かを判断する。
終点座標(Xn,Yn)が入口エリアの座標であった場合には、制御部37は、状態ステータスを「店内→入口」に設定する。これに対し、入口エリアの座標でなかった場合には、終点座標(Xn,Yn)は、売場エリアまたは無効エリアの座標である。この場合、制御部37は、状態ステータスを「店内→店内」に設定する。
制御部37は、編集動線データベース43の全ての編集動線データについて、上述した処理ルーチンを実行する。かくして、各編集動線データには、「入口→入口」,「入口」,「入口→店内」,「店内→入口」,「店内→店内」,「無効」のなかのいずれかの状態ステータスが設定される。
動線の状態定義処理を終了すると、制御部37は、次に、ST4として動線の無効化処理を実行する。この無効化処理の処理手順は、図11の流れ図によって示される。すなわち制御部37は、設定データベース44から無効化条件の設定データを取得する。無効化条件には、領域条件と時間条件とがある。領域条件は、動線の開始位置(始点)または終了位置(終点)が無効エリアに存在する動線を無効化する。時間条件は、動線の追跡時間が予め設定された閾値以下の動線を無効化する。これらの条件を有効とするか否かは、予めオペレータによって条件毎に選択され、設定データベース44に設定されている。
無効化条件設定データを取得した制御部37は、先ず、ST51として領域条件が有効であるか否かを判断する。領域条件が有効でない場合には、制御部37は、ST54の処理に進む。
ST51にて領域条件が有効であった場合には、制御部37は、ST52として編集動線データベース43の編集動線データを1データずつ抽出して、その状態ステータスを調べる。その結果、状態ステータスが「無効」であった場合には(ST53のYES)、制御部37は、その編集動線データの無効化ステータスを「オン」とする。状態ステータスが「無効」でなかった場合には(ST53のNO)、無効化ステータスは「オフ」のままである。無効化ステータスが「オン」となった編集動線データは無効化される。無効化された編集動線データは、この後の編集処理の手順の中で処理されることはない。
こうして、編集動線データベース43の全ての編集動線データについて、状態ステータスを調べ終えたならば、制御部37は、ST54の処理に進む。すなわち、制御部37は、時間条件が有効であるか否かを判断する。時間条件が有効でない場合には、無効化処理が終了する。
ST54にて時間条件が有効であった場合には、制御部37は、ST55として編集動線データベース43の編集動線データを1データずつ抽出する。そして、ST57として動線追跡時間を算出する。すなわち制御部37は、編集動線データの先頭のインデックス情報の撮影日時情報Tから最終のインデックス情報の撮影日時情報Tまでの経過時間を算出する。そして、ST57としてこの動線追跡時間がオペレータによって予め設定データベース44に設定された閾値以下であるか否かを判断する。
動線追跡時間が閾値以下であった場合には(ST57のYES)、制御部37は、その編集動線データの無効化ステータスを「オン」とする。動線追跡時間が閾値より長い場合には(ST57のNO)、無効化ステータスは「オフ」のままである。
こうして、編集動線データベース43の全ての編集動線データについて、動線追跡時間を調べ終えたならば、無効化処理が終了する。
動線の無効化処理が終了すると、制御部37は、次に、ST5として動線の分割処理を実行する。この分割処理の処理手順は、図12の流れ図によって示される。すなわち制御部37は、編集動線データベース43から無効化ステータスが「オン」でない編集動線データを1データずつ抽出する。そして、抽出した編集動線データに対して、制御部37は、以下の処理ルーチンに従い分割処理を行う。
先ず、制御部37は、ST61として動線追跡処理を実行する。この処理は、先ず、編集動線データからインデックス情報を撮影日時の古い順に取得する。インデックス情報を取得する毎に、制御部37は、そのインデックス情報の三次元座標(X.Y,H)を、店内エリア定義データベース46に定義されているエリア別の座標と照合する。そして、入口エリアまたは売場エリアの座標から無効エリアの座標に変化したインデックス情報、または無効エリアの座標から入口エリアまたは売場エリアの座標に変化したインデックス情報を検出する。該当するインデックス情報を検出したならば、制御部37は、ST62としてそのインデックス情報に変化点フラグFをセットする。すなわち、編集動線データに変化点が記録される。
次に、制御部37は、ST63として編集動線データに変化点が記録されたか否かを判断する。変化点フラグがセットされたインデックス情報がある場合は、変化点が記録されている。変化点が記録されていた場合には、制御部37は、ST64としてその変化点での動線分割処理を実行する。この分割処理は、以下の手順で実行される。
先ず、制御部37は、編集動線データのコピーを編集動線データベース43に追加する。次に、制御部37は、前記動線データ作成処理でデータ記憶部35に記憶した最終動線IDに“1”を加算する。そして、この最終動線IDを、コピーされた編集動線データ(以下、コピー先動線データと称する)の動線IDとする。
次に、制御部37は、コピー先動線データのインデックス情報を先頭から順にチェックする。そして、変化点フラグがセットされているインデックス情報を検出したならば、先頭のインデックス情報から、変化点フラグがセットされているインデックス情報の直前のインデックス情報までを削除する。その結果、変化点フラグがセットされているインデックス情報がコピー先動線データの先頭のインデックス情報となる。制御部37は、この先頭となったインデックス情報の変化点フラグをリセットする。また、この先頭となったインデックス情報の二次元座標(X,Y)を、コピー先動線データの始点座標(X0,Y0)とする。
次に、制御部37は、コピー先動線データについて前記状態定義処理と同様の処理を実行して、コピー先動線データの状態ステータスを定義し直す。状態定義処理を終えたならば、制御部37は、コピー先動線データの部分動線ステータスを「オン」する。すなわち、コピー先動線データを部分動線データと定義する。
また、制御部37は、コピー元の編集動線データについても以下の処理を実行する。先ず、制御部37は、コピー元動線データのインデックス情報を先頭から順にチェックする。そして、変化点フラグがセットされているインデックス情報を検出したならば、このインデックス情報以降のインデックス情報を全て削除する。次に、制御部37は、削除して残ったインデックス情報のうち撮影日時が最も新しいインデックス情報の二次元座標を、コピー元編集動線データの終点座標(Xn,Yn)とする。
次に、制御部37は、コピー元編集動線データについて前記状態定義処理と同様の処理を実行して、コピー元編集動線データの状態ステータスを定義し直す。状態定義処理を終えたならば、制御部37は、コピー元動線データの部分動線ステータスを「オン」する。すなわち、コピー元動線データを部分動線データと定義する。
以上の処理により、変化点を有する編集動線データは、変化点より前の部分動線データ(コピー元動線データ)と変化点から後の部分動線データ(コピー先動線データ)とに分割される。
次に、制御部37は、コピー先動線データにさらに変化点があるか否かを判断する。そして、変化点がある場合には、上述した変化点での動線分割処理を再度実行する。
以後、制御部37は、コピー先動線データに変化点がなくなるまで、その変化点での動線分割処理を繰り返す。かくして、変化点を有する編集動線データは、変化点を有さない複数の部分動線データに分割される。
動線分割処理が終了すると、制御部37は、ST65として各部分動線データから無効エリア内の部分動線データを無効化する。すなわち、制御部37は、部分動線データ毎に状態ステータスを調べる。そして、状態ステータスが「無効」の部分動線データを検出したならば、この部分動線データの無効化ステータスを「オン」とする。
編集動線データベース43から抽出した全ての編集動線データに対して、上記ST61〜ST65の処理が実行されたならば、制御部37は、ST66として無効化条件として時間条件が有効か否かを判断する。時間条件が有効でない場合には、この分割処理が終了する。
時間条件が有効な場合には、制御部37は、編集動線データベース43から無効化ステータスが「オン」でない部分動線データを1データずつ抽出する。そして、抽出した部分動線データに対して、制御部37は、時間条件の無効化処理を実行する。すなわち、制御部37は、部分動線データの動線追跡時間を算出する。そして、動線追跡時間が閾値以下であるか否かを判断する。閾値以下の場合には、制御部37は、その部分動線データの無効化ステータスを「オン」とする。
編集動線データベース43から抽出した全ての部分動線データについて上記処理が実行されると、動線の分割処理が終了する。
上記分割処理が実行されることによって、編集動線データベース43内に記憶されている無効化されていない編集動線データは、その定義情報が、「入口」,「入口→入口」,「入口→店内」,「店内→店内」または「店内→入口」のいずれかになる。
動線の分割処理が終了すると、制御部37は、ST6として編集動線データベース43から、無効化ステータスが「オン」されていない有効な編集動線データを全て抽出する。そして、抽出した編集動線データの動線ID、始点座標及び終点座標を一覧にした動線リストを作成する。動線リストは、動線リスト表示部53に表示される。
次に、制御部37は、ST7として連結元動線が選択されるのを待機する。
オペレータは、入力部31を操作して動線リストの中から連結元動線とする動線のIDを選択する。動線IDが選択されると、制御部37は、ST8としてこの選択された動線IDを連結元動線のIDとしてデータ記憶部35に記憶する。
次に、制御部37は、ST9として連結元動線再生処理を実行する。この再生処理の処理手順は、図13の流れ図によって示される。すなわち制御部37は、先ず、ST71としてオリジナル動線データベース41を先頭フレームのオリジナル動線データから順に検索する。そして、ターゲットIDが連結元動線IDと一致するターゲット情報を有するオリジナル動線データを全て取得する。
次に、制御部37は、ST72として取得した各オリジナル動線データから、それぞれカメラ画像ファイル名を取得する。そして、カメラ画像データベース42からこのファイル名が設定されたカメラ画像ファイルを全て取得する。
次に、制御部37は、ST73として取得した各オリジナル動線データの撮影日時情報を比較する。そして、撮影日時情報が古い順にオリジナル動線データを選択して、以下の処理を実行する。
すなわち制御部37は、ST74として選択したオリジナル動線データからターゲットIDが連結元動線IDと一致するターゲット情報の三次元座標を取得する。また、ST75として選択したオリジナル動線データのオフセット値で特定されるフレーム画像をカメラ画像ファイルから抽出する。さらに、ST76として取得した三次元座標(世界座標系)をカメラ画像系の座標に変換する。この変換処理は、カメラCA1〜CA6毎に、図14の流れ図に示す手順で実行される。
なお、この変換処理では、カメラパラメータデータベース45に予め設定されている以下のパラメータを使用する。
・世界座標系の動線座標:x,y,h
・世界座標系のカメラの位置:Wx,Wy,Wz
・画像中心の座標:Cx,Cy
・世界座標系の座標軸周りのカメラ回転角:Rx,Ry,Rz
・全方位カメラのパラメータ:b,c,f
・魚眼カメラのパラメータ:k1,k3,k5,scale
先ず、制御部37は、ST81として変換対象の動線座標(x,y,h)を、カメラ位置を原点とした座標系(X0,Y0,Z0)に平行移動する。この処理は、次の演算式により実行される。
次に、制御部37は、ST82として平行移動した動線座標(X0,Y0,Z0)について、世界座標系の座標軸周りのカメラ回転角を使って回転処理し、世界座標系とカメラ座標系の軸を合せる。この処理は、次の演算式により実行される。
次に、制御部37は、ST83として処理対象のカメラの種類を判別する。魚眼カメラCA1,CA2,CA3に対しては、ST84として魚眼カメラのパラメータを使って、動線座標(Xz,Yz,Zz)を世界座標系からカメラ画像座標系に変換する。この処理は、次の演算により実行される。
先ず、Xd=rcost:Yd=rsintとする。
である。ここで、上記rの値を、下記数式のニュートン法を用いて求める。
なお、この数式において、初期値r0を0.0、目標値をθとする。また、|rn+1−rn|<0.01で収束したとみなす。その時点でのrの値を使用する。
一方、全方位カメラCA4,CA5,CA6に対しては、ST85として全方位カメラのパラメータを使って、動線座標(Xz,Yz,Zz)を世界座標系からカメラ画像座標系に変換する。この処理は、次の演算式により実行される。
こうして、動線座標を世界座標系からカメラ画像座標系に変換したならば、制御部37は、ST86として変換後の座標(Xd,Yd)をカメラ画像座標系の原点に平行移動する。この処理は、次の演算式により実行される。
以上、ST81〜ST86の処理を実行することにより、選択したオリジナル動線データから取得したターゲット情報の三次元座標が、各カメラCA1〜CA6のカメラ画像系の座標に変換される。
三次元座標、フレーム画像及びカメラ画像系座標を取得したならば、制御部37は、ST77としてその三次元座標に基づいて動線編集画面50の動線表示部51に動線を表示する。また同時に、カメラ画像表示部52にフレーム画像を表示し、さらに、カメラ画像系座標に基づいてカメラ画像表示部52に連結元動線IDを表示する。
しかる後、制御部37は、ST78として処理したオリジナル動線データの次に撮影日時が古いオリジナル動線データを取得しているか否かを判断する。オリジナル動線データを取得している場合には、そのオリジナル動線データに対して、前記ST74〜ST78の処理を繰り返す。オリジナル動線データを取得していない場合には、この再生処理を終了する。
連結元動線再生処理が実行されることにより、動線編集画面50の動線表示部51には、動線リストの中からオペレータによって選択された動線が表示される。また、カメラ画像表示部52には、動線に同期して同一時点のカメラ画像が表示される。そして、カメラ画像には、動線のターゲット位置に動線IDが表示される。
したがってオペレータは、動線の動きとカメラ画像とを見比べることによって、その動線が1人の客を追跡したものであるか否かを容易に確認することができる。また、動線が途中で途切れた場合には、その途切れた後の客の行動を追跡している動線があるか否かを容易に確認することできる。そして、途切れた後の客の行動を追跡している動線を確認できた場合には、その動線と途切れる前の動線とを1つの動線に連結することによって、一人の客の完全な動線を作成することができる。そこで次に、この連結作業について説明する。
なお、前述したように、編集動線データベース43に記憶されている有効な編集動線データは、その定義情報が、「入口」,「入口→入口」,「入口→店内」,「店内→店内」または「店内→入口」のいずれかである。このうち、定義情報が「入口→入口」及び「入口」の編集動線データは、入店から退店までを追跡した完全動線である。また、定義情報が「店内→入口」の編集動線データは、退店を示すので連結元動線にはなり得ない。
連結元動線再生処理が終了すると、制御部37は、ST10としてこの再生した連結元動線が完全動線であるか否かを判断する。具体的には、編集動線データベース43を検索して、連結元動線IDを動線IDとする編集動線データを取得する。そして、この編集動線データの状態ステータスを調べる。ここで、状態ステータスが「入口→入口」または「入口」の場合は完全動線とみなす。状態ステータスがそれ以外の場合は不完全動線とみなす。完全動線の場合には、制御部37は、ST15の連結定義処理に進む。
不完全動線の場合には、制御部37は、ST11として連結先動線候補検索処理を実行する。この検索処理の処理手順は、図15の流れ図によって示される。すなわち制御部37は、ST91として設定データベース44から検索条件を取得する。検索条件には、「時間」と「距離」があり、どちらか一方が設定されている。
検索条件として「時間」が設定されていた場合には、制御部37は、ST92として連結元動線の終了時刻を取得する。すなわち、連結元動線IDを動線IDとする編集動線データのなかから最終フレームに対応したインデックス情報の撮影日時を終了時刻として取得する。
次に、制御部37は、ST93として編集動線データベース43を検索して、連結先動線の候補となる編集動線データを抽出する。状態ステータスが「入口→店内」,「店内→店内」または「店内→入口」の編集動線データが、連結先動線の候補となる。連結先動線の候補となる編集動線データを抽出したならば、制御部37は、その先頭フレームに対応したインデックス情報の撮影日時を連結先動線の開始日時として取得する。そして、この連結先動線の開始時刻と連結元動線の終了時刻との時間差を算出する。時間差を算出したならば、制御部37は、その時間差が予め設定された閾値以内であるか否かを判断する。時間差が閾値以内である場合には、この編集動線データを連結先候補の動線として残す。時間差が閾値を超える場合には、この編集動線データを連結先候補から外す。
編集動線データベース43から抽出した全ての編集動線データについて、上記ST93以降の処理を実行したならば、制御部37は、ST94として連結先候補として残った編集動線データの動線ID、始点座標及び終点座標を一覧にした連結先候補リストを作成する。リストの順番は、上記時間差が小さい順とする。連結先候補リストは、動線リスト表示部53に表示される。
検索条件として「距離」が設定されていた場合には、制御部37は、ST95として連結元動線の終了位置を取得する。すなわち、連結元動線IDを動線IDとする編集動線データから終点座標を取得する。
次に、制御部37は、ST96として編集動線データベース43を検索して、連結先動線の候補となる編集動線データを抽出する。連結先動線の候補となる編集動線データを抽出したならば、制御部37は、その始点座標を連結先動線の始点として取得する。そして、この連結先動線の始点と連結元動線の動線終点座標との距離を算出する。距離を算出したならば、制御部37は、その距離が予め設定された閾値以内である否かを判断する。距離が閾値以内である場合には、この編集動線データを連結先候補の動線として残す。距離が閾値を超える場合には、この編集動線データを連結先候補から外す。
編集動線データベース43から抽出した全ての編集動線データについて、上記ST96以降の処理を実行したならば、制御部37は、ST97として連結先候補として残った編集動線データの動線ID、始点座標及び終点座標を一覧にした連結先候補リストを作成する。リストの順番は、上記距離が短い順とする。連結先候補リストは、表示部32に表示される。
連結先候補検索処理が終了すると、制御部37は、ST12として連結先候補リストの中から連結先動線が選択されるのを待機する。
オペレータは、入力部31を操作して連結先候補リストの中から連結先動線とする動線のIDを選択する。動線IDが選択されると、制御部37は、ST13として連結先動線再生処理を実行する。この再生処理は、図13に示した連結元動線再生処理と対象となる動線データが異なるだけで、その処理手順は同じである。よって、説明は省略する。
連結先動線再生処理が実行されることにより、動線編集画面50の動線表示部51には、連結先候補リストの中からオペレータによって選択された動線が表示される。また、カメラ画像表示部52には、動線に同期して同一時点のカメラ画像が表示される。そして、カメラ画像には、動線のターゲット位置に動線IDが表示される。
したがってオペレータは、動線の動きとカメラ画像とを見比べることによって、その動線が連結元動線に連結される連結先動線として正しいか否かを容易に判別することができる。オペレータは、入力部31を操作して、連結先動線として正しいか否かを入力する。
ST14として連結先動線として正しくない旨の入力を受付けた場合には、制御部37は、ST12に戻り、次の連結先動線が選択されるのを待機する。連結先動線として正しい旨の入力を受付けた場合には、制御部37は、ST15の連結定義処理を実行する。この連結定義処理の処理手順は、図16の流れ図によって示される。すなわち制御部37は、ST101として連結元動線として選択された編集動線データの状態ステータスを判定する。
連結元動線の状態ステータスが「入口→入口」または「入口」の場合には、連結元動線は完全動線である。この場合、制御部37は、連結元動線として選択された編集動線データの起点情報を「連結元動線ID」とする。前連結ID及び後連結IDは、いずれも「設定なし」とする。
連結元動線の状態ステータスが「入口→店内」の場合には、連結元動線は追跡の開始時点を含む。この場合、制御部37は、ST102として連結先動線として選択された編集動線データの状態ステータスを判定する。
連結先動線の状態ステータスが「店内→店内」の場合には、連結先動線は追跡の途中である。この場合、制御部37は、連結元動線及び連結先動線としてそれぞれ選択された2つの動線編集データの起点情報を「連結元動線ID」とする。また、連結元動線として選択された編集動線データの前連結IDは「設定なし」とし、後連結IDは「連結先動線ID」とする。一方、連結先動線として選択された編集動線データの前連結IDは「連結元動線ID」とし、後連結IDは未設定とする。
連結先動線の状態ステータスが「店内→入口」または「入口」の場合には、連結先動線は追跡の終了時点を含む。この場合、制御部37は、連結元動線及び連結先動線としてそれぞれ選択された2つの動線編集データの起点情報を「連結元動線ID」とする。また、連結元動線として選択された編集動線データの前連結IDは「設定なし」とし、後連結IDは「連結先動線ID」とする。一方、連結先動線として選択された編集動線データの前連結IDは「連結元動線ID」とし、後連結IDは「設定なし」とする。
連結元動線の状態ステータスが「店内→店内」の場合には、連結元動線は追跡の途中である。この場合、制御部37は、ST103として連結先動線として選択された編集動線データの状態ステータスを判定する。
連結先動線の状態ステータスが「店内→店内」の場合には、連結先動線も追跡の途中である。この場合、制御部37は、連結先動線として選択された動線編集データの起点情報を「連結元動線の起点」とする。また、連結先動線として選択された編集動線データの前連結IDは「連結元動線ID」とし、後連結IDは未設定とする。さらに、連結元動線として選択された編集動線データの後連結IDは「連結先動線ID」とする。
連結先動線の状態ステータスが「店内→入口」であった場合には、連結先動線は、追跡終了時点を含む。この場合、制御部37は、連結先動線として選択された編集動線データの起点情報を「連結元動線の起点」とする。また、連結先動線として選択された編集動線データの前連結IDは「連結元動線ID」とし、後連結IDは「設定なし」とする。さらに、連結元動線として選択された編集動線データの後連結IDは、「連結先動線ID」とする。
連結定義処理が終了すると、制御部37は、ST16として連結元動線が退店まで定義されたか否かを判断する。連結元動線として選択された編集動線データが完全動線であった場合には、退店まで定義されたとみなす。また、連結先動線として選択された編集動線データの状態ステータスが「店内→入口」であった場合も、退店まで定義されたとみなす。それ以外の場合は、まだ退店まで定義されていないとみなす。退店まで定義されていない場合には、制御部37は、ST17として連結先動線として選択された編集動線データを連結元動線として置き換える。そして制御部37は、ST9以降の処理を再度実行する。
ST16にて退店まで定義されたと判断された場合には、制御部37は、ST18として動線の選択完了が指示されたか否かを判断する。
動線確認作業を継続する場合、オペレータは、入力部31を操作して動線の選択継続を指示する。動線確認作業を終了する場合、オペレータは、入力部31を操作して動線の選択完了を指示する。
動線の選択継続が指示された場合には、制御部37は、ST6の処理に戻る。すなわち制御部37は、動線リストを動線リスト表示部53に表示させて、次の連結元動線が選択されるのを待機する。
動線の選択完了が指示された場合には、制御部37は、ST19として連結処理を実行する。この連結処理の処理手順は、図17の流れ図によって示される。すなわち制御部37は、先ず、ST111として編集動線データベース43を検索して、前連結IDが「設定なし」の編集動線データを1つ選択する。制御部37は、選択した編集動線データを第1の動線データAと認識する。
次に、制御部37は、ST112としてこの第1の動線データAに対する編集動線データの後連結IDを取得する。そして、この後連結IDが動線IDとして設定された編集動線データを、編集動線データベース43から取得する。制御部37は、取得した編集動線データを第2の動線データBと認識する。
次に、制御部37は、ST113として第1の動線データAの起点情報と、第2の動線データBの起点情報とを比較する。起点情報が一致している場合には、制御部37は、ST114として第1の動線データAの動線IDと、第2の動線データBの前連結IDとを比較する。IDが一致している場合には、制御部37は、ST115として第1の動線データAの最終フレームに対応したインデックス情報の撮影日時と、第2の動線データBの先頭フレームに対応したインデックス情報の撮影日時との時間差を算出する。そして、この時間差が、カメラ画像の1フレーム以内であるか否かを判断する。
1フレーム以内であった場合には、制御部37は、第1の動線データAの終点と第2の動線データBの始点とが一致しているとみなす。制御部37は、ST116として第1の動線データAと第2の動線データBとを連結する。具体的には、制御部37は、第2の動線データBの先頭フレームから最終フレームまでのインデックス情報を全て読み込む。そして、この読み込んだインデックス情報を第1の動線データAの最終フレームに対応したインデックス情報の後に追加する。また、制御部37は、第1の動線データAの終点座標を、第2の動線データBから読み込んだ、最終フレームに対応したインデックス情報の二次元座標に置換する。さらに、制御部37は、第1の動線データAについて前記状態定義処理と同様の処理を実行して、状態ステータスを定義し直す。かくして、連結元動線の始点から連結先動線の終点までの軌跡を示す新たな編集動線データが生成される(完全動線編集手段)。
撮影日時の時間差が1フレームより長かった場合には、第1の動線データAの終点と第2の動線データBの始点とは一致していない。この場合、制御部37は、補間処理を実行する。補間処理としては、第1の動線データAの終点と第2の動線データBの始点との間を直線で結ぶ線形補間が挙げられる。店内での客の動きは、ゆったりとした歩行が主であるので、線形補間でも充分に補間処理が可能である。補間処理の後、制御部37は、ST116の連結処理を行う。
その後、制御部37は、ST117として第2の動線データBの後連結IDを調べる。後連結IDが「設定なし」以外の場合には、制御部37は、第2の動線データBを第1の動線データAと置き換えて、ST112以降の処理を再度実行する。
第2の動線データBの後連結IDが「設定なし」であった場合には、制御部37は、ST118として前連結IDが「設定なし」の編集動線データが他にあるか否かを判断する。他にある場合には、制御部37は、ST111以降の処理を再度実行する。他にない場合には、連結処理が終了する。連結処理が終了すると、動線編集プログラムP1は終了する。
このように、オペレータが動線解析装置3の入力部31を操作して、編集動線データベース43から連結元となる動線データと連結先となる動線データとを選択すると、連結元となる動線データの始点から連結先となる動線データの終点までの軌跡を示す完全動線データが自動的に生成される。したがって、入退場口IN/OUTから入店した客が店舗内を回り、会計カウンタCHで会計を済ませて出店するまでの経路を、1本の動線で結ぶことができる。
オペレータが動線解析業務の開始を指令すると、動線解析プログラムP2が起動する。動線解析プログラムP2が起動すると、表示部32に動線解析メニューが表示される。動線解析メニューには、会計入力業務、取引紐付け業務、行動分析業務及び条件検索業務がある。
オペレータが会計入力業務を選択すると、制御部37は、通信部33を介して動線サーバ20に接続して、各データベース41〜47をアクセス可能とする。そして、動線解析プログラムP2に従い、図20の流れ図に示す手順の会計入力処理を実行する。
制御部37は、ST201として動線解析画面を表示部32に表示させる。この動線解析画面は、前記動線編集画面50と同じように、動線表示部、カメラ画像表示部、動線リスト表示部及び座標表示部に区分されている。
制御部37は、ST202として編集動線データベース43に記憶された編集動線データの中から、完全動線データを検出する。すなわち、状態ステータスが「入口→入口」または「入口」の編集動線データを検出する。完全動線データを全て検出したならば、制御部37は、ST203としてこの完全動線データを蓄積した完全動線データベース38を出力ファイル36に作成する。
完全動線データのデータ構造を図18に示す。図示するように、完全動線データは、管理番号と、固有の動線IDと、始点座標と、終点座標と、始点から終点までの各フレーム画像に対応した複数のインデックス情報と、状態ステータスと、取引日時情報と、端末番号とから構成される。管理番号は、1からMまでの連続する整数である。Mは、完全動線データベース38に蓄積された完全動線データのデータ数に一致する。
次に、制御部37は、ST204として完全動線データの動線ID、開始時刻、終了時刻を一覧にした完全動線リストを作成する。開始時刻は、始点座標のフレーム画像に対応したインデックス情報の撮影日時である。終了時刻は、終点座標のフレーム画像に対応したインデックス情報の撮影日時である。リストの順番は、開始時刻の早い順とする。完全動線リストは、動線リスト表示部に表示される。
オペレータは、入力部31を操作して完全動線リストのなかから所望の完全動線のIDを選択する。例えば、リストの上から順番に動線IDを選択する。動線IDが選択されると(ST205のYES)、制御部37は、ST206として完全動線再生処理を実行する(動線再生手段)。この再生処理は、図13に示した連結元動線再生処理と対象となる動線データが異なるだけで、その処理手順は同じである。よって、説明は省略する。
完全動線再生処理が実行されることにより、動線解析画面の動線表示部には、完全動線リストの中からオペレータによって選択された動線が表示される。また、カメラ画像表示部には、動線に同期して同一時点のカメラ画像が表示される。そして、カメラ画像には、動線のターゲット位置に動線IDが表示される。
そこでオペレータは、カメラ画像と動線画像から顧客の移動経路を確認する。そして、顧客が会計カウンタCHに到達し、商取引の決済を開始したと思われる時点で、その会計カウンタCHに設置されているPOS端末11aまたは11bの端末番号を入力する(決済情報受付手段)。端末番号の入力は、商取引の決済開始時点であると確信が持てるまで何度でもやり直すことができる。確信を持てたならば、オペレータは、再生終了を指示する。なお、顧客が商取引の決済を行うことなく店を出た場合は、再生終了の指示のみ行う。
制御部37は、入力部31を介して端末番号が入力されたならば(ST208のYES)、ステップST209としてその入力時点に再生しているフレーム画像の撮影日時情報を取得する。そして、この日時情報と端末番号とを、再生中の完全動線データに上書きする。
なお、端末番号を入力するタイミングは、商取引の決済を開始した時点でなく決済を終えた時点、すなわちPOS端末のチェックアウトキーが操作されたと思われる時点であってもよい。
制御部37は、入力部31を介して再生終了が指示された場合には(ST207のYES)、ST210として完全動線再生処理を終了する。そして、制御部37は、次の動線IDが選択されるのを待機する。次の動線IDが選択されたならば(ST205のYES)、制御部37は、上記ST206〜ST210の処理を繰り返す。次の動線IDが選択されることなく、処理終了が宣言された場合には(ST211のYES)、制御部37は、この会計入力処理を終了する。
このように、オペレータは、動線の動きとそれに連動したカメラ画像とから、顧客が会計カウンタで商取引の決済を開始又は終了した時点の時刻とPOS端末11の番号とを、その顧客の完全動線データに付加することができる。
オペレータが取引紐付け業務を選択すると、制御部37は、出力ファイル36に完全動線データベース38が作成されているか否かを判断する。完全動線データベース38が作成されていない場合には、取引紐付け業務を中止する。
完全動線データベース38が作成されている場合には、制御部37は、通信部33を介してPOSサーバ12に接続して、トランザクションデータベース14をアクセス可能とする。そして、動線解析プログラムP2に従い、図21の流れ図に示す手順の取引紐付け処理を実行する。
制御部37は、ST221として取引紐付け処理に使用されるワークテーブルをクリアする。ワークテーブルには、図19に示すように、トランザクションIDリストテーブル61と、動線IDリストテーブル62と、紐付けテーブル63とがある。
制御部37は、ST222として紐付け期間が入力されるのを待機する。オペレータは、入力部31を操作して、紐付け期間として適当な開始日時と終了日時を入力する。終了日時は、開始日時よりも後の日時である。開始日時のみを入力し、終了日時は現在の日時としてもよい。
紐付け期間が入力されると、制御部37は、以下の手順により、この期間内に発生したトランザクションデータと完全動線データとの紐付けを行う。すなわち、制御部37は、ST223として紐付け期間内のトランザクションIDリスト取得処理を実行する。この処理の手順は、図22の流れ図によって具体的に示される。
すなわち制御部37は、ST231として指定された紐付け期間内のトランザクションIDを抽出するためのSQL(Structured Query Language)を作成する。そして、ST232としてこのSQLを、通信部33を介してPOSサーバ12に送信する。
上記SQLの一例を図23に示す。このSQLは、トランザクションデータベース14から端末番号,取引日時及び取引一連番号からなるトランザクションIDを取得し、取引日時の順に昇順に整列してトランザクションIDリストを作成するためのものである。
上記SQLを受信したPOSサーバ12では、トランザクションデータベース14が検索されて、指定期間内を取引日時とするトランザクションデータが全て抽出される。そして、これらのトランザクションデータの端末番号,取引日時及び取引一連番号からなるトランザクションIDリストが作成される。トランザクションIDリストは、動線解析装置3に送信される。
制御部37は、POSサーバ12からトランザクションIDリストを受信したならば、ST233としてこのトランザクションIDリストをトランザクションIDリストテーブル61に格納する。トランザクションIDリストテーブル61の一例を図26に示す。
トランザクションIDリスト取得処理が終了すると、制御部37は、ST224として紐付け期間内の動線IDリスト取得処理を実行する。この処理の手順は、図24の流れ図によって具体的に示される。
すなわち制御部37は、ST241としてカウンタNを一旦“0”にリセットする。次に、ST242として上記カウンタNを“1”だけカウントアップする。そして、ST243として、完全動線データベース38から管理番号がNの完全動線データを取得する。
管理番号Nの完全動線データを取得できた場合(ST244のNO)、制御部37は、ST245としてその完全動線データが取引客のデータか否かを判断する。完全動線データに端末番号と取引日時のデータが付加されていた場合には、そのデータは商取引を行った顧客の完全動線データである。この場合、制御部37は、ST246として完全動線データから動線ID、端末番号,取引日時の各データを取得し、動線IDリストテーブル62に格納する。しかる後、ST242に戻る。
完全動線データに端末番号と取引日時のデータが付加されていなかった場合には、商取引を行わずに店から出て行った顧客の完全動線データである。この場合、制御部37は、ST246の処理を行わずにST242に戻る。
制御部37は、完全動線データベース38に記憶されている完全動線データの数MだけST242〜ST246の処理を繰り返す。その結果、動線IDリストテーブル62には、商取引を行った顧客に関する完全動線データの動線IDと、その顧客が決済に立ち寄った会計カウンタに設置されているPOS端末の端末番号及び決済を行った時点の取引日時とからなる動線IDリストが格納される。
管理番号Nの完全動線データを取得できなかった場合(ST244のYES)、制御部37は、ST247として動線IDリストテーブル62のデータを取引日時の昇順にソートする。以上で、この動線IDリスト取得処理は終了する。動線IDリストテーブル62の一例を図27に示す。
動線IDリスト取得処理を終了すると、制御部37は、ST225として動線自動紐付け処理を実行する(動線紐付け手段)。この処理の手順は、図25の流れ図によって具体的に示される。なお、図25において、Track(i)は、動線IDデータ(動線ID、端末番号、取引日時)を示し、その添え字iは1からn(nは動線IDリストテーブル62に格納された動線IDデータの数)までの整数である。Tran(j)は、トランザクションID(端末番号、取引日時、取引一連番号)を示し、その添え字jは1からm(mはトランザクションIDリストテーブル61に格納されたトランザクションIDの数)までの整数である。θは、紐付けを行う取引日時の許容幅(−θ〜+θ)であり、θは業務開始前にユーザによって任意に設定される。δは、紐付けを行う取引日時の差の絶対値である。Δは、δの最小値である。j_minは、Δが最小のときのjである。j_startは、取引日時の比較開始位置におけるjである。
制御部37は、先ず、ST251として整数iと比較開始位置における整数j_startをそれぞれ“1”に初期設定する。続いて、ST252として最小値Δを無限大に、整数jを比較開始位置における整数j_startに、Δが最小のときの整数j_minを“0”に設定する。
次に、制御部37は、ST253として動線IDリストテーブル62を検索して動線IDデータTrack(i)から取引日時Tiを取得する。また、ST254としてトランザクションIDリストテーブル61を検索してトランザクションIDデータTrn(j)から取引日時Tjを取得する。そして、ST255としてトランザクションIDデータTrn(j)の取引日時Tjが、動線IDデータTrack(i)の取引日時Tiから許容幅θを減じた日時に達したか否かを判断する。
達していない場合には、制御部37は、ST256として整数jを“1”だけカウントアップする。そして、ST257としてカウントアップ後の整数jがトランザクションIDリストテーブル61に格納されたトランザクションIDの数mを超えたか否かを判断する。越えていない場合には、ST254の処理に戻る。すなわち、制御部37は、トランザクションIDリストテーブル61から次のトランザクションIDデータTrn(j)の取引日時Tjを取得し、Ti−θの日時と比較する。
以上の処理により、整数jがデータ数mを超える前に、トランザクションIDデータTrn(j)の取引日時Tjが、動線リストデータTrack(i)の取引日時Tiから許容幅θを減じた日時に達するか否かが判断される。達した場合には、制御部37は、ST258として比較開始位置における整数j_startに、現時点の整数jをセットする。
次に、制御部37は、ST259として動線IDリストテーブル62を検索して動線IDデータTrack(i)から端末番号Riを取得する。また、ST260としてトランザクションIDリストテーブル61を検索してトランザクションIDデータTrn(j)から端末番号Rjを取得する。そして、ST261として動線IDデータTrack(i)の端末番号RiとトランザクションIDデータTrn(j)の端末番号Rjとが一致するか否かを判断する。一致しない場合、制御部37は、ST262として整数jを“1”だけカウントアップする。そして、ST263としてカウントアップ後の整数jがデータ数mを超えたか否かを判断する。
越えていない場合には、ST260の処理に戻る。すなわち制御部37は、トランザクションIDリストテーブル61から次のトランザクションIDデータTrn(j)の端末番号Rjを取得し、動線IDデータTrack(i)の端末番号Riと比較する。
以上の処理により、整数jがデータ数mを超える前に、トランザクションIDデータTrn(j)の端末番号Rjが、動線リストデータTrack(i)の端末番号Riと一致するか否かチェックされる。一致した場合には、制御部37は、ST264としてトランザクションIDデータTrn(j)の取引日時Tjと動線リストデータTrack(i)の取引日時Tiとを取得し、これら取引日時Tj,Tiの差の絶対値δを算出する。
次に、制御部37は、ST265として絶対値δと最小値Δとを比較する。その結果、絶対値δが最小値Δより小さいときには、ST266として最小値Δを絶対値δに置き換える。また、最小値Δの整数j_minを現時点の整数jとする。絶対値δが最小値Δ以上のときには、ST266の処理は行わない。
その後、制御部37は、ST267として整数jをさらに“1”だけカウントアップする。そして、ST268としてトランザクションIDリストテーブル61を検索してトランザクションIDデータTrn(j)から取引日時Tjを取得し、この取引日時Tjが、動線IDデータTrack(i)の取引日時Tiに許容幅θを加算した日時に達したか否かを判断する。達していない場合、制御部37は、ST269として現時点の整数jがデータ数mを超えたか否かを判断する。越えていない場合には、ST260の処理に戻る。
以上の処理により、動線リストデータTrack(i)の取引日時Tiに対し、Ti−θ〜Ti+θの期間内の日時を取引日時TjとするトランザクションIDリストデータTran(j)が選択される。さらに、その中から、端末番号Rjが動線リストデータTrack(i)の端末番号Riと一致するトランザクションIDリストデータTran(j)が選択される。次いで、各々の取引日時Ti,Tjの時間差(絶対値)δが算出される。そして、この時間差(絶対値)δが最小となるトランザクションIDリストデータTran(j)の整数jが、最小値Δの整数j_minとして記憶される。
ST268にて取引日時Tjが取引日時Tiに許容幅θを加算した日時に達した場合、ST270の処理に進む。ST257,ST263またはST269にて現時点の整数jがデータ数mを超えた場合も、ST270の処理に進む。すなわち制御部37は、最小値Δの整数j_minが、初期値“0”のままか否かを判断する。
整数j_minが“0”でない場合には、ST271の処理が実行される。すなわち、制御部37は、動線IDリストテーブル62を検索して動線IDデータTrack(i)から動線IDを取得する。また、トランザクションIDリストテーブル61を検索して、トランザクションIDデータTrn(j_min)から端末番号、取引日時及び取引一連番号を取得する。そして、紐付けテーブル63に、動線IDとトランザクションIDの端末番号、取引日時、取引一連番号とを関連付けて格納する。整数j_minが “0”のままであった場合には、ST271の処理は実行しない。
しかる後、制御部37は、ST272として整数iを“1”だけカウントアップする。そして、ST273としてカウントアップ後の整数iが動線IDリストテーブル62に格納された動線IDデータの数nを超えたか否かを判断する。越えていない場合には、ST252の処理に戻る。すなわち制御部37は、最小値Δを無限大に、整数jを前回のST258の処理にて設定された整数j_startに、整数j_minを“0”に再設定した後、次の動線IDデータTrack(i)についてST253〜ST273の各処理を実行する。
かくして、紐付けテーブル63には、各動線IDに対してトランザクションIDが紐付けられる。そのトランザクションIDは、動線IDで識別される動線データに付加された端末番号と一致し、かつその動線データに付加された取引日時に最も近い日時を取引日時とするトランザクションデータのIDである。紐付けテーブル63の一例を図28に示す。この例は、図26に示したトランザクションIDリストテーブル61と、図27に示した動線IDリストテーブル62のデータとに対応している。
ST273にて整数iがデータ数nを超えると、制御部37は、この紐付け処理を終了する。
上記紐付け処理を終了すると、制御部37は、ST226としてトランザクションIDが紐付けされていない動線IDが存在するか否かを判断する。存在する場合には、制御部37は、ST227として動線手動紐付け処理を実行する。この処理の手順は、図29の流れ図によって具体的に示される。なお、図29において、kは繰返し回数であり、kMAXは繰返し回数kの最大値である。これらk及びkMAXも、θと同様に業務開始前にユーザによって任意に設定される。
制御部37は、先ず、ST281としてトランザクションIDが紐付けされていない動線IDのデータから取引日時Tiと端末番号Riとを取得する。また、ST282として繰返し回数kを“1”に初期設定する。
次に、制御部37は、ST283として現時点の許容幅θに、該許容幅θに繰返し回数kを乗算した値を加算する。すなわち、繰返し回数kが“1”であれば許容幅θを2倍し、繰返し回数kが“2”であれば許容幅θを3倍する。
次に、制御部37は、ST284としてトランザクションIDリストテーブル61を検索する。そして、取引日時Tjが、上記動線IDの取引日時Tiより許容幅θを減じた日時から該取引日時Tiに許容幅θを加算した日時の期間内のトランザクションIDを取得する。
次に、制御部37は、ST285としてトランザクションIDリストテーブル61から取得した該当期間内のトランザクションIDのうち、既に動線IDと紐付けされているトランザクションIDを取り除く。すなわち、紐付けテーブル63に既にセットされているトランザクションIDを取り除く。また、ST286として動線IDの端末番号Riと異なる端末番号Rjを有するトランザクションIDを取り除く。その後、制御部37は、ST287として紐付け候補として残ったトランザクションIDが有るか否かを判断する。
ここで、少なくとも1つのトランザクションIDが残った場合には、制御部37は、ST288として上記動線IDで識別される動線データを、データ記憶部35にダウンロードされている動線データベースから取得する。そして、この動線データに基づく動線を表示部32に表示させる。また、制御部37は、ST289として紐付け候補として残ったトランザクションIDの一覧、すなわち候補トランザクションリストを表示部32に表示させる。このとき、表示部32の画面を2つに分割し、一方の領域に動線を表示し、他方の領域に候補トランザクションリストを表示させる。
制御部37は、ST290として候補トランザクションリストのなかからいずれか1つのトランザクションIDが選択されるのを待機する。オペレータは、入力部31を操作して、いずれか1つのトランザクションIDを選択する。トランザクションIDが選択されたならば、制御部37は、POSサーバ12にそのトランザクションIDを問合せる。
POSサーバ12では、問合せのあったトランザクションIDに対応するトランザクションデータをトランザクションデータベース14から読み出す。そして、このトランザクションデータを動線解析装置3に送信する。制御部37は、ST291としてPOSサーバ12から受信したトランザクションデータの内容を表示部32に表示する。すなわち、商取引で販売された商品の名称等が表示部32に表示される。
オペレータは、動線によって示される顧客の店内の移動状況から当該顧客が購入した商品を推測する。そして、その推測とトランザクションデータの内容とが一致しているか否かを判断して、当該動線IDにトランザクションIDを紐付けるか否かを決定する。紐付ける場合には実行キーを、紐付けない場合には取消キーを操作する。
制御部37は、ST292として実行キーが操作されるか取消キーが操作されるのを待機する。取消キーが操作された場合には(ST292のNO)、制御部37は、ST293として他に紐付け候補のトランザクションIDが有るか否かを判断する。紐付け候補のトランザクションIDが有る場合には、ST289に戻る。
実行キー操作された場合には(ST292のYES)、制御部37は、ST294として当該動線IDにトランザクションIDを紐付ける。すなわち制御部37は、紐付けテーブル63に、紐付け無し動線として検出された動線IDと、紐付け候補として決定されたトランザクションIDの端末番号,取引日時及び取引一連番号とを関連付けて格納する。以上で、トランザクションIDが紐付けされていない動線IDに対する紐付け処理が終了する。
ST287にて紐付け候補としてのトランザクションIDがなかった場合、またはST293にて紐付け候補としてのトランザクションIDがなくなった場合には、ST295の処理に進む。すなわち制御部37は、繰返し回数kを“1”だけカウントアップする。そして、ST296としてカウントアップ後の繰返し回数kがその最大値kMAXを超えたか否かを判断する。繰返し回数kがその最大値kMAXを超えていない場合には、ST283の処理に戻る。すなわち、許容幅θの範囲を広げてST284以降の処理を繰り返す。繰返し回数kがその最大値kMAXを超えたならば、今回の紐付け処理を終了する。この場合は、当該動線IDにはトランザクションIDが紐付けされない。
ST226にて紐付け無し動線が無いと判断すると、制御部37は、ST228として紐付けテーブル63に格納された動線IDとトランザクションIDとの紐付けリストを出力ファイル36に出力する。以上で、動線解析プログラムが終了する。
このように、動線解析装置3は、トランザクションIDリストを作成する処理と、動線IDリストを作成する処理と、動線IDリストの各動線IDとトランザクションIDリストの各トランザクションIDとについて、各々の取引日時データの差が最小となる組合せを形成する処理と、前記動線IDとトランザクションIDとの組合せリストを出力する処理とを実行することができる。
したがって、顧客の動線データに、その顧客の商取引内容を示すトランザクションデータを精度よく紐付けることができる。したがって、紐付け作業に要する手間と時間が大幅に短縮される。
動線解析装置3は、動線IDリストの各動線IDとトランザクションIDリストの各トランザクションIDとについて、POS端末11の端末番号が一致しかつ各々の取引日時データの差が最小となる組合せを形成するようにしている。したがって、複数台のPOS端末11a.11bを使用している店舗でも、動線データにトランザクションデータを精度よく紐付けることができる。
動線解析装置3は、動線IDリストから動線IDを選択する毎に、その動線IDに対応した取引日時データの時刻に対して、一定の許容幅θの時間内の取引日時データを有するトランザクションIDを、トランザクションIDリストから検索している。そして、時間差δを算出し、この時間差δが最小となるトランザクションIDを、選択した動線IDと組み合わせるようにしている。このように、動線データの取引日時を中心にその前後の許容幅の範囲内を取引時刻とするトランザクションデータについてのみ紐付け可否をチェックしている。したがって、チェックに要する処理時間が短く、効率的である。
動線解析装置3は、動線IDリストから組合せが形成されていない動線IDを抽出する。そして、動線IDに対応した取引日時データを含みかつ一定の許容幅θより広い幅kθの時間内の取引日時データを有するトランザクションIDをトランザクションIDリストから検索する。そのうち、組合せが形成されていないトランザクションIDを、表示部32に表示するようにしている。したがって、組合せが形成されていない動線IDについては、候補として残ったトランザクションIDの中から適当なものを手動で紐付けることができ、その紐付け作業も簡便なものである。
オペレータが行動分析業務を選択すると、制御部37は、出力ファイル36に完全動線データベース38が作成されているか否かを判断する。完全動線データベース38が作成されていない場合には、行動分析業務を中止する。
完全動線データベース38が作成されている場合には、制御部37は、出力ファイル36にサブエリア設定テーブル39が作成されているか否かを判断する。サブエリア設定テーブル39が作成されていない場合には、行動分析業務を中止する。
サブエリア設定テーブル39は、図30に示すように、一意のサブエリアIDに対応して、サブエリア名、エリアコーナ座標及び滞在判定条件を記憶する領域である。動線データの追跡範囲である店舗エリア内を細分化したときの1つの領域をサブエリアと称する。
店舗エリア内の細分化の一例について、図31及び図32を用いて説明する。図31には、店舗エリア70のレイアウトが示されている。店舗エリア70は、客が出入する入口部71と、POS端末11がそれぞれ設置される2つのカウンタ72,73と、各商品が陳列される商品陳列部74とに区分されている。商品陳列部74は、飲料,弁当,菓子,雑誌,デザート,文具等の商品分類(商品群)毎に区分されている。図では、同一分類に属する商品群を同一のアルファベット符号で示している。
このような店舗エリア70に対しては、図32の破線で示すように細分化する。すなわち入口部51とカウンタ72,73とは、それぞれ区分して、サブエリアS1,S2,S3とする。商品陳列部74は、商品分類(商品群A〜P)別に区分して、それぞれサブエリアS4〜S19とする。各サブエリアS1〜S19の形状は矩形とする。そして、それぞれその左上角の二次元座標(xi,yi)と右下角の二次元座標(xj,yj)とを、そのサブエリアのエリアコーナ座標とする。
サブエリア設定テーブル39において、滞在判定条件は、対応するサブエリアIDで特定されるサブエリア内に人物が滞在したのか通過しただけなのか判定するための閾値である。本実施の形態では、時間データを閾値と設定している。すなわち制御部37は、滞在判定条件として設定された時間以上、動線データが対応するサブエリア内に留まっていた場合には、この動線データに該当する人物が当該サブエリア内に滞在していたと判定する。設定時間未満の時間で動線データが対応するサブエリア内から離脱した場合には、この動線データに該当する人物が当該サブエリア内を通過したと判定する。この滞在判定手段については後述する。
制御部37は、プログラム記憶部34に記憶されたサブエリア設定プログラムが起動すると、データ記憶部35にサブエリア設定テーブル39のワークテーブルが形成される。また、表示部32に図31に示すような店舗エリア70のレイアウト画面を表示させる。オペレータは、入力部31を操作して、画面上の店舗エリア70内に矩形状のサブエリアを描画する。また、このサブエリアを特定する名称と,そのサブエリアでの滞在判定条件を入力する。オペレータは、店舗エリア70の全域を複数のサブエリアで区分し終わるまで、上記の作業を繰り返す。
サブエリアが描画されると、制御部37は、描画された領域の左上角と右下角のエリアコーナ座標を算出する。そして、このエリアコーナ座標と、入力されたサブエリア名及び滞在判定条件と、一意のサブエリアIDとをワークテーブルに書き込む。
店舗エリア70の全域が複数のサブエリアで区分されると、制御部37は、ワークテーブルをサブエリア設定テーブル39として出力ファイルに保存する。ここに、サブエリア設定テーブル39は、店舗エリア内を細分化して形成される複数のサブエリアをそれぞれ特定する情報、すなわちエリアコーナ座標を記憶するサブエリア情報記憶部として機能する。なお、サブエリアを特定する情報はエリアコーナ座標に限定されるものではなく、店舗エリアに対して各サブエリアの位置を特定できる情報であればよい。
サブエリア設定テーブル39が作成されると、行動分析業務が実行可能となる。制御部37は、出力ファイル36に完全動線データベース38とサブエリア設定テーブル39とが作成されていることを確認すると、動線解析プログラムP2に従い、図33,図34の流れ図に示す手順の行動分析処理を実行する。
制御部37は、ST301として表示部32に分析条件の入力画面を表示させる。分析条件には、サブエリアを指定するサブエリアID、特定の商品または商品群を指定するアイテムIDまたは分類ID、取引期間,取引時間帯,客層等の項目がある。これらの項目のうち、サブエリアIDは必須である。他の項目は任意である。
例えば、2007年7月1日から同年7月31日の期間内において、午前11時から午後1時の間に弁当エリアに滞在し、から揚げ弁当を購入した男性客の行動の特徴を分析する場合には、サブエリア名「弁当」のサブエリアID、商品名「から揚げ弁当」のアイテムID、期間「20070701〜20070731」、時間帯「11:00〜13:00」、客層「男性」を入力する。また、期間や時間帯に関わらず弁当エリアに滞在し、また飲料エリアにていずれかの飲料を購入した客の行動の特徴を分析する場合には、サブエリア名「弁当」のサブエリアIDと商品分類名「飲料」の分類IDとを入力する。期間,時間帯及び客層は「−(未入力)」とする。なお、サブエリア,商品及び商品分類に関しては、それぞれIDを入力するのでなく名称を入力してもよい。
制御部37は、ST302として分析条件入力画面から分析条件項目が入力されるのを待機する(フィルタ条件受付手段)。そして、入力部31を介して分析条件項目が入力されたならば、制御部37は、ST303として分析条件として必須の入力項目であるサブエリアIDを取得する。そして、このサブエリアIDでサブエリア設定テーブル39を検索して、対応するサブエリア名、エリアコーナ座標及び滞在判定条件データを読み出す。
次に、制御部37は、ST304としてカウンタnを“0”に初期化する。続いて、ST305としてこのカウンタnを“1”だけカウントアップする。しかる後、制御部37は、ST306として動線IDリストテーブル62からテーブル番号n(nはカウンタnの値)に記憶されている動線IDを取り込む。
ここで、ST307として動線IDリストテーブル62からテーブル番号nの動線IDを取り込めた場合には、制御部37は、ST308としてデータ記憶部35上に出力リストテーブル80を作成する。
出力リストテーブル80は、図35に示すように、分析条件項目エリア81、動線IDエリア82、トランザクションIDエリア83、サブエリア別行動データエリア84、進入元サブエリアIDエリア85及び離脱先サブエリアIDエリア85によって構成されている。分析条件項目エリア81は、サブエリアID、取引期間,取引時間帯,客層及びアイテムIDまたは商品分類IDの各エリアに区分されている。サブエリア別行動データエリア84は、各サブエリアS1〜S19のサブエリアID毎に、滞在時間、動線長、平均移動速度及び滞在判定フラグの各エリアに区分されている。
出力リストテーブル80を作成した後、制御部37は、ST309としてこの出力リストテーブル80の分析条件項目エリア81に、分析条件入力画面を介して入力された分析条件項目のデータをセットする。
また、制御部37は、ST310として完全動線データベース38を検索して、ST306の処理で動線IDリストテーブル62から取り込んだ動線IDで特定される動線データを読み込む。
次に、制御部37は、ST311として完全動線データベース38から読み込んだ動線データから、この動線に対応した人物が、分析条件として指定されたサブエリアIDの指定サブエリア内を通過したか否かを判断する。すなわち、指定サブエリアに対するエリアコーナ座標(xi,yi),(xj,yj)を、サブエリア設定テーブル39から取得する。そして、当該動線データのインデックス情報を構成する各3次元座標のうちのxy座標に、このエリアコーナ座標によって特定される矩形領域、すなわち座標(xi,yi),(xi,yj),(xj,yi),(xj,yj)で囲われる領域内の座標(xp,yp){i≦p≦jかつi≦q≦j}が存在するか調べる。1つも存在しない場合には、当該動線データの人物は指定サブエリア内を通過していないと判断する。この場合は、制御部37は、この動線データを破棄する。そして、ST305の処理に戻って、カウンタnをカウントアップし、完全動線データベース38からテーブル番号nの動線データを読み込む。
これに対し、動線データのインデックス情報を構成する各3次元座標のうちのxy座標に、当該エリアコーナ座標によって特定される矩形領域で囲われる領域内の座標が1つでも存在する場合には、当該動線データの人物は指定サブエリア内を通過したと判断する。この場合、制御部37は、ST312としてこの動線データを分析対象候補としてデータ記憶部35に保持する(動線データ抽出手段)。
次に、制御部37は、ST313として紐付けテーブル43を検索して、この動線データの動線IDに対してトランザクションIDが紐付けされているか否かを判断する。
トランザクションIDが紐付けされている場合には、制御部37は、ST314として通信部33を介してPOSサーバ12にアクセスする。そして、トランザクションデータベース14を検索して、このトランザクションIDで特定されるトランザクションデータを読み込む。これに対し、トランザクションIDが紐付けされていない場合には、制御部37は、ST15として取引一連番号,端末番号,取引日時,合計金額,支払区分及び買上商品データが全て「なし」で、客層データが「不明」のトランザクションデータを作成する。
その後、制御部37は、ST316としてトランザクションデータベース14から読み込んだトランザクションデータまたは購入アイテム無しとして作成したトランザクションデータのレコードを、分析対象候補としてデータ記憶部35に保持する(商取引データ特定手段)。
次に、制御部37は、ST317として分析対象候補の動線データ及びトランザクションデータが、サブエリア以外の分析条件も満足するか否かを判断する。
すななち、分析条件として特定の商品または商品群を指定するアイテムIDまたは分類IDが指定されていた場合には、制御部37は、分析対象候補のトランザクションデータを検索して、指定されたアイテムIDまたは分類IDを含む買上商品データが含まれているか否かを判断する。含まれている場合は分析条件を満足し、含まれていない場合には分析条件を満足しない。満足しない場合には、分析対象候補の動線データ及びトランザクションデータを破棄する。そして、ST305の処理に戻って、完全動線データベース38から次の動線データを読み込む。
分析条件として取引期間または取引時間帯の少なくとも一方が指定されていた場合には、制御部37は、分析対象候補の動線データを検索して、取引日時が、指定された取引期間内または時間帯内であるか否かを判断する。取引期間内または時間帯内である場合は分析条件を満足し、取引期間内または時間帯内でない場合は分析条件を満足しない。満足しない場合には、分割対象の動線データ及びトランザクションデータを破棄する。そして、ST305の処理に戻って、完全動線データベース38から次の動線データを読み込む。
分析条件として客層が指定されていた場合には、分割対象のトランザクションデータを検索して、客層が、指定された客層条件に合致するか否かを判断する。合致する場合は分析条件を満足し、合致しない場合は分析条件を満足しない。満足しない場合には、分割対象のトランザクションデータ及び動線データを破棄する。そして、ST305の処理に戻って、完全動線データベース38から次の動線データを読み込む。
このように、分析対象候補の動線データ及びトランザクションデータがサブエリア以外の分析条件を1つでも満足しない場合には、制御部37は、この動線データ及びトランザクションデータを破棄する。そして、次の動線データを読み込む。
一方、指定された分析条件を全て満足する場合には、制御部37は、ST318として分析対象候補の動線データにおける動線IDを、出力リストテーブル80の動線IDエリア82にセットする。また、分析対象候補のトランザクションデータにおけるトランザクションIDを、出力リストテーブル80のトランザクションIDエリア83にセットする。
次に、制御部37は、ST319として分析対象候補の動線データを基に、この動線データに該当する人物の各サブエリアにおける滞在時間、動線長及び平均移動速度を、人物行動データとして算出する。
人物行動データの算出方法について、図36を用いて説明する。図36は、エリアコーナ座標(xi,yi),(xj,yj)で特定される1つのサブエリアSk内を通過した1本の動線データD1を示している。動線データ上の各点P1〜Pnは、時刻t(1≦t≦n)の時点で観測された人物の二次元空間座標(xt,yt)を示している。
初めに、滞在時間は、サブエリアSkに進入する直前の点P1の時刻t1から離脱した最初の点Pnの時刻tnまでの時間差である。すなわち、滞在時間は、[tn−t1]として算出される。
次に、動線データ上の2点Pi,Pi+1間の移動距離は、ユーグリッド距離関数で定義すると、下記(10)式で表わされる。
したがって、サブエリアSk内の動線長は、サブエリアSk内で時系列に観測された各2点間の移動距離の総和であるから、下記(11)で表わされる。
次に、サブエリアSk内の平均移動速度は、このサブエリアSk内の動線長を滞在時間で除算することによって算出される。すなわち、下記(12)式で表わされる。
ここで、右辺の[vi,i+1]は時系列に観測された2点間の移動速度である。速度vが区間Δt内で定速であると仮定すると、2点間の移動速度は、下記(13)式で表わされる。
したがって、サブエリアSk内の平均移動速度は、下記(14)式によって算出される。
こうして、サブエリア毎に滞在時間、動線長及び平均移動速度の人物行動データが算出されると、制御部37は、ST320として分析条件として指定されたサブエリア内の人物行動データを検出する。そして、この人物行動データにより、この人物が当該指定サブエリア内に滞在したか否かを判定する。
先ず、制御部37は、指定サブエリア内の人物行動データのなかから滞在時間データを検出する。また、サブエリア設定テーブル39を検索して、指定サブエリアIDに対応して記憶されている滞在判定条件データを取得する。そして、滞在時間データと滞在判定条件データとを比較する。滞在時間データが滞在判定条件データ以上の場合には、人物は指定サブエリア内に滞在している。滞在時間データが滞在判定条件データより小さい場合には、人物は指定サブエリア内を通過しただけで、滞在していない。
人物が当該指定サブエリア内に滞在していないと判断した場合には、制御部37は、ST305の処理に戻り、完全動線データベース38から次の動線データを読み込む。
人物が当該指定サブエリア内に滞在していたと判断した場合には、制御部37は、ST321としてST319の処理で算出したサブエリア別人物行動データを出力リストテーブル80のサブエリア別行動データエリア84にセットする。また、サブエリア毎に同様の滞在判定を行う。そして、滞在していたと判定されたサブエリアに対しては滞在判定フラグを“1”にセットし、滞在していないと判定されたサブエリアに対しては滞在判定フラグを“0”にリセットする。
次に、制御部37は、ST322として分析対象候補の動線データから、当該動線データの人物が指定サブエリアに進入する手前のサブエリア、すなわち進入元サブエリアを特定する。具体的には、指定サブエリアに進入する直前の座標でサブエリア設定テーブル39を検索し、この座標を内包するエリアコーナ座標が設定されたサブエリアIDを進入元サブエリアのIDとして特定する。そして、この進入元サブエリアIDを出力リストテーブル80の進入元サブエリアIDエリア85にセットする。
同様に、制御部37は、ST323として分析対象候補の動線データレコードに含まれる動線データから、当該動線データの人物が指定サブエリアより離脱した先のサブエリア、すなわち離脱先サブエリアを特定する。具体的には、指定サブエリアから離脱した直後の座標でサブエリア設定テーブル39を検索し、この座標を内包するエリアコーナ座標が設定されたサブエリアIDを離脱先サブエリアのIDとして特定する。そして、この離脱先サブエリアIDを出力リストテーブル80の離脱先サブエリアIDエリア86にセットする。
その後、ST305の処理に戻って、完全動線データベース38から次の動線データを読み込む。
以後、完全動線データベース38から動線データを読み込む毎に、ST308〜ST323の各処理を繰返し実行する。ST307にて動線IDリストテーブル62からテーブル番号nの動線IDを取り込めなかった場合には、全ての動線データについてST308〜ST323の処理が実行された。制御部37は、ST324として出力リストテーブル80を出力ファイル36に書込み、保存する。
動線解析装置3は、分析条件として少なくともサブエリアを指定することによって、完全動線データベース38に記憶されている動線データの中から、この指定サブエリアにて滞在した人物の動線データを抽出することができる。また、この動線データの人物が商品を買上げた際に生成されるトランザクションデータがトランザクションデータベース14に記憶されている。さらに、当該動線データと当該トランザクションデータのとの紐付けが紐付けテーブル43上で設定されている。したがって、当該トランザクションデータのトランザクションIDが特定される。その結果、当該動線データの動線IDと当該トランザクションデータのトランザクションIDとがセットされた出力リストテーブル80が作成され、出力ファイル36に保存される。
したがって、出力リストテーブル80の内容から、指定サブエリア内で滞在した人物の動線データと、この人物のトランザクションデータとを特定できる。すなわち、指定サブエリア内に滞在した人物はどのような商品を購入するのかというような分析を容易に行うことができる。
また、分析条件として特定の商品または商品群を指定できるようになっている。そして、特定の商品または商品群を指定した場合には、指定サブエリアにて滞在した人物のうち、指定商品または商品群を購入した人物の動線IDとトランザクションIDとがセットされた出力リストテーブル80が作成される。
したがって、出力リストテーブル80の内容から、指定サブエリア内で滞在し、かつ特定の商品または商品群を購入した客の行動の特徴を容易に分析することができる。
なお、この発明は前記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。
例えば前記実施の形態では、動線解析装置3の外部に、トランザクションデータベース14を備えたPOSサーバ12と、オリジナル動線データベース41、カメラ画像データベース42、編集動線データベース43、設定データベース44、カメラパラメータデータベース45、店内エリア定義データベース46及び店内マップデータベース47を備えた動線サーバ20とを設け、動線解析装置3とPOSサーバ12及び動線サーバ20とを、通信インターフェイスを介して接続したが、各データベースの全部または一部を動線解析装置3の内部に設けて、本発明を実現してもよい。
また、前記実施の形態では、完全動線データのフィルタ処理を施すための条件として、売場内を細分化したサブエリアを通過したか否かに加え、特定の商品または商品群を指定するアイテムIDまたは分類IDを含む買上商品データが含まれているか否か、または取引日時が指定された取引期間内または時間帯内であるか否か、または客層が指定された客層条件に合致するか否か、を例示したが、条件はこれに限定されるものではない。例えばPOSデータに関しては購買金額、購買点数などであってもよい。属性データに関しては、購買回数、会員・非会員などであってもよい。動線データとしては滞在時間、動線長、平均速度、入店時間などであってもよい。
本実施の形態では装置内部に発明を実施する機能である動線編集プログラムP1と動線解析プログラムP2が予め記録されている場合で説明をしたが、これに限らず同様の機能をネットワークから装置にダウンロードしても良いし、同様の機能を記録媒体に記憶させたものを装置にインストールしてもよい。記録媒体としては、CD−ROM等プログラムを記憶でき、かつ装置が読み取り可能な記録媒体であれば、その形態は何れの形態であっても良い。またこのように予めインストールやダウンロードにより得る機能は装置内部のOS(オペレーティング・システム)等と協働してその機能を実現させるものであってもよい。
この他、前記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態に亘る構成要素を組合わせてもよい。
1…販売管理装置、2…動線管理装置、3…動線解析装置、11a,11b…POS端末、12…POSサーバ、14…トランザクションデータベース、20…動線サーバ、21…動線データ生成部、22…記憶部、31…入力部、32…表示部、33…通信部、34…プログラム記憶部、35…データ記憶部、36…出力ファイル、37…制御部、38…完全動線データベース、41…オリジナル動線データベース、42…カメラ画像データベース、43…編集動線データベース、44…設定データベース、45…カメラパラメータデータベース、46…店内エリア定義データベース、47…店内マップデータベース、61…トランザクションIDリストテーブル、62…動線IDリストテーブル、63…紐付けテーブル、80…出力リストテーブル。