以下実施の形態の一例を、図面を用いて説明する。
図1は本実施形態に係る陳列状況判定装置100のブロック図である。
陳列状況判定装置100は、プロセッサ1、記憶ユニット2、通信・入出力インタフェース(通信・入出力I/F)3、ステレオカメラ4、ユーザインタフェース(ユーザI/F)5およびバス6を含む。プロセッサ1と、記憶ユニット2、通信・入出力インタフェース3およびユーザインタフェース5とは、バス6によって接続される。バス6は、アドレスバス、データバスおよび制御信号線等を含む。プロセッサ1および記憶ユニット2は、バス6によって接続されることによってコンピュータを構成する。
プロセッサ1は、上記コンピュータの中枢部分に相当する。プロセッサ1は、記憶ユニット2に記憶されるオペレーティングシステムやアプリケーションプログラムに従って、陳列状況判定装置100としての各種の機能を実現するべく陳列状況判定装置100の各部を制御する。
記憶ユニット2は、上記コンピュータの主記憶部分に相当する。記憶ユニット2は、不揮発性のメモリ領域と揮発性のメモリ領域とを含む。記憶ユニット2は、不揮発性のメモリ領域ではオペレーティングシステムやアプリケーションプログラムを記憶する。また記憶ユニット2は、プロセッサ1が各部を制御するための処理を実行する上で必要なデータを不揮発性または揮発性のメモリ領域で記憶する場合もある。揮発性のメモリ領域は、プロセッサ1によってデータが適宜書き換えられるワークエリアとしても機能する。
記憶ユニット2は、上記コンピュータの補助記憶部分に相当する補助記憶デバイスを含んでも良い。当該補助記憶デバイスは、例えばEEPROM(electric erasable programmable read-only memory)、HDD(hard disc drive)、SSD(solid state drive)などである。補助記憶デバイスは、プロセッサ1が各種の処理を行う上で使用するデータや、プロセッサ1での処理によって生成されたデータを保存する。補助記憶デバイスは、アプリケーションプログラムを記憶する場合もある。
通信・入出力インタフェース3は、ネットワークを介したデータ通信および種々の入出力デバイスとの間で行うデータ通信のインタフェースである。通信・入出力インタフェース3としては、例えばインターネットを介したデータ通信を行うための周知のデバイスおよびUSB(universal serial bus)などの周知のインタフェース規格に準拠した周知のデバイスを利用できる。
ステレオカメラ4は、通信・入出力インタフェース3に接続される。ステレオカメラ4は、2つの撮像デバイス41,42を含む。撮像デバイス41,42は、同一の物体を異なる方向から撮影できるように、互いに離間して配置されている。撮像デバイス41,42は、同期的に撮影を行う。撮像デバイス41,42は、撮影した画像を表す画像データをそれぞれ通信・入出力インタフェース3へと出力する。本実施形態においては、撮像デバイス41を主撮像デバイスとして使用する。
ユーザインタフェース5は、入力デバイスおよび出力デバイスを含む。ユーザインタフェース5は、入力デバイスにおけるユーザ操作に基づいて情報を入力する。ユーザインタフェース5は、出力デバイスによって、ユーザに対して情報を提示する。入力デバイスとしては、例えばキーボード、タッチセンサ、あるいはポインティングデバイスなどが相当する。出力デバイスとしては、例えばディスプレイまたはプリンタなどが相当する。入力デバイスおよび出力デバイスとしては、複数種類のデバイスをそれぞれ含んでいても良い。
プロセッサ1、記憶ユニット2、通信・入出力インタフェース3、ステレオカメラ4およびユーザインタフェース5は、例えば単一の台車に搭載され、一体的な陳列状況判定装置100を形成する。そして陳列状況判定装置100は、スーパーマーケットなどの店舗内を、商品を陳列している陳列棚をステレオカメラ4によって撮影しながら移動する。陳列状況判定装置100の移動は、人力によることが想定されるが、モータなどの動力源が発生する駆動力によっても良い。従ってステレオカメラ4が出力する2つの画像データは、いずれも陳列棚を撮影して得られた棚画像を表す。
プロセッサ1、記憶ユニット2、通信・入出力インタフェース3およびユーザインタフェース5と、ステレオカメラ4とがそれぞれ別々のユニットを構成し、これらのユニットの連携により陳列状況判定装置100が形成されるものとしても良い。この場合、2つのユニットは、有線または無線の通信回線または通信網を介して互いに接続される。2つのユニットは、通信回線または通信網を介して直接的に画像データを授受しても良いし、例えばサーバ装置などを介して間接的に画像データを授受しても良い。2つのユニットに分離される場合には例えば、一方のユニットがステレオカメラ4を台車に搭載して構成された移動可能なユニットとされ、他方のユニットが固定的に設置される画像処理装置とされる形態が想定される。
記憶ユニット2が記憶するアプリケーションプログラムには、画像処理プログラム21を含む。画像処理プログラム21は、後述する各ユニットとしてプロセッサ1を機能させるためのコンピュータプログラムである。この画像処理プログラム21は、典型的には陳列状況判定装置100がユーザに譲渡されるのに先立って記憶ユニット2に書き込まれる。しかしながら、画像処理プログラム21が記憶ユニット2に書き込まれない状態の陳列状況判定装置100がユーザに譲渡されたのちに、ユーザによる操作に応じて画像処理プログラム21が記憶ユニット2に書き込まれても良い。
記憶ユニット2の記憶領域の一部は、単体画像データベース(単体画像DB)22として使用される。記憶ユニット2は、調整値23、調整フラグ24および棚割り情報を保存する。
単体画像データベース22には、複数の画像ファイルと1つの管理テーブルとが保存される。
複数の画像ファイルはそれぞれ、陳列状況確認の対象となる商品を単体で撮影して得られた画像(以下、単体画像と称する)を表す画像データを含む。単体画像の撮影には、撮像デバイス41を使用することが望ましい。しかしながら、単体画像の撮影に撮像デバイス42を使用しても良いし、あるいは撮像デバイス41,42とは別の撮像デバイスを使用しても良い。ただし、単体画像の撮影に用いる撮像デバイスは、光学的な倍率および撮像素子の特性などが撮像デバイス41と極力近いことが好ましい。
管理テーブルは、複数の画像ファイルの個々に関連したデータレコードの集合である。
図2は管理テーブルの記述内容の一例を模式的に示す図である。
管理テーブルが含むデータレコードは、ナンバー(No.)、商品名、画像ファイル名および撮影距離情報の各フィールドを含む。ナンバーのフィールドには、他のデータレコードとは重複しないように割り付けた番号が記述される。商品名のフィールドには、関連する商品の名称が記述される。画像ファイル名のフィールドには、関連する画像データを識別するためのファイル名が記述される。撮影距離情報のフィールドには、単体画像を撮影した際の商品から撮像デバイスまでの離間距離が記述される。従って、単体画像の撮影距離は、このフィールドに記述された情報に基づいて既知となる。
なお、撮影距離の情報を画像ファイル中に含めることにより、管理テーブルから撮影距離情報のフィールドを省いても良い。また、単体画像の撮影距離を予め定めた一定距離とすることをルールとして定めておき、撮影距離情報を省略しても良い。
図3は撮影距離の情報を含んだ画像ファイルの構成例を示す図である。
図3の例では、ヘッダ領域に撮影距離の情報を記述している。
調整値23は、陳列状況確認の対象となる位置をユーザが調整するためにユーザにより指定される数値である。
調整フラグ24は、調整値23を用いた調整を実行するか否かを表す。調整フラグ24は、ユーザの指示に応じてプロセッサ1によってオン/オフされる。
棚割り情報25は、どの陳列棚のどの位置にどの商品が陳列されるのかを表すデータレコードの集合である。
図4は棚割り情報25の一例を模式的に示す図である。
棚割り情報25が含むデータレコードは、ナンバー(No.)、商品名、棚番号および棚内位置の各フィールドを含む。ナンバーのフィールドには、他のデータレコードとは重複しないように割り付けた番号が記述される。商品名のフィールドには、関連する商品の名称が記述される。棚番号のフィールドには、関連する商品が陳列される陳列棚を識別するための番号が記述される。棚内位置のフィールドには、関連する商品の陳列棚の中での陳列位置が記述される。
図5は画像処理プログラム21を実行することにより実現されるプロセッサ1の機能のブロック図である。
プロセッサ1は、画像処理プログラム21に基づく処理を後述するように実行することによって、設定ユニット11、決定ユニット12および生成ユニット13として機能する。
設定ユニット11は、ユーザインタフェース5におけるユーザによる指示に応じて調整値を設定する。設定ユニット11は、設定した調整値を記憶ユニット2に書き込む。
決定ユニット12は、撮像デバイス41,42からそれぞれ出力される第1および第2の画像データがそれぞれ表す第1および第2の棚画像に基づいて、検出対象となる商品までの撮像デバイス41による撮影距離を推定する。
決定ユニット12としての機能には、生成モジュール12a、推定モジュール12bおよび調整モジュール12cとしての機能をさらに含む。
生成モジュール12aは、第1の棚画像を構成する画素毎に、当該画素が表す物体の撮像デバイス41による撮影距離を推定する。生成モジュール12aは、第1の棚画像の各画素を、その画素について推定した撮影距離に応じた画素値に置き換えた距離画像を生成する。
推定モジュール12bは、距離画像において規定数以上に渡って水平方向に連続する同程度の画素値に応じた距離として、第1の棚画像に映り込んだ陳列棚の前面までの離間距離dsを推定する。
調整モジュール12cは、記憶ユニット2に保存された調整フラグがオン状態であるときには、記憶ユニット2に保存された調整値23を用いて離間距離dsを調整して探索距離d1を得る。調整モジュール12cは、記憶ユニット2に保存された調整フラグがオフ状態であるときには、離間距離dsをそのまま探索距離d1として採用する。そして調整モジュール12cは、探索距離d1を出力する。
生成ユニット13は、記憶ユニット2に記憶された単体画像を、探索距離d1と当該単体画像の撮影距離d2との比に応じた倍率で画素数変換してテンプレート画像を生成する。
判定ユニット14は、第1の棚画像内のテンプレート画像に類似する領域を判定する。
判定ユニット14としての機能には、生成モジュール14aおよび照合モジュール14bとしての機能をさらに含む。
生成モジュール14aは、第1の棚画像のうちで撮像デバイス41による撮影距離が撮影距離d1とほぼ等しい画素については第1の棚画像における画素値を示し、その他の画素については予め定められた画素値を示した等距離画像を生成する。
照合モジュール14bは、等距離画像内のテンプレート画像に類似する領域を判定する。
なお、プロセッサ1は、上記の各種の機能による処理に際しては、各種の画像を表したデータおよび各種の数値を記憶ユニット2に保存する。
次に以上のように構成された陳列状況判定装置100の動作について説明する。
プロセッサ1は画像処理プログラム21に従って画像処理を実行する。なお、以下に説明する処理の内容は一例であって、同様な結果を得ることが可能な様々な処理を適宜に利用できる。
ユーザは、店舗内で陳列状況判定装置100を移動させながら、陳列状況を確認したい陳列棚をステレオカメラ4により撮影して行く。プロセッサ1は、ステレオカメラ4にて撮像デバイス41,42により得られる第1および第2の棚画像データを、同時に得られたものどうしをセットとして記憶ユニット2に保存する。なお、ステレオカメラ4による撮影タイミングは任意で良いが、典型的には、ユーザによる撮影指示がユーザインタフェース5より入力される毎とする。しかしながら、例えば陳列棚に形成された例えばバーコードなどのマークが撮像デバイス41の視野内に入った場合などに自動的に撮影しても良い。記憶ユニット2には、第1および第2の棚画像データに関連付けて、撮影の対象となった陳列棚の棚番号を保存しても良い。棚番号は、例えばユーザにより指定されても良いし、上記のバーコードなどからプロセッサ1が判定しても良い。
図6はプロセッサ1による画像処理のフローチャートである。
上記のように陳列棚を撮影するのに並行して、あるいは当該撮影が終了した後の任意のタイミングで、プロセッサ1は画像処理プログラム21に基づいて図6に示す処理を実行する。
Act1においてプロセッサ1は、上述のようにして保存された第1および第2の棚画像のうちの1セットを記憶ユニット2から取得する。
Act2においてプロセッサ1は、第1および第2の棚画像に基づいて、距離画像を生成する。
図7は第1の棚画像の一例を示す図である。
図7においては、同種の被写体の領域を同一のハッチングで表している。つまり、陳列棚の部材は、全て同一のハッチングで表している。また同種の商品は、全て同一のハッチングで表している。
第1および第2の棚画像は、同じ陳列棚を同時に撮影して得られた画像であるから、ほぼ同じ画像である。ただし、撮像デバイス41,42が互いに離間しているから、視差に応じた若干の差異が第1および第2の棚画像の間に生じている。プロセッサ1は、視差を利用する周知の処理により第1の撮像デバイスによる被写体の撮影距離を第1の棚画像の画素毎に推定する。そしてプロセッサ1は、第1の棚画像における各画素の画素値を、その画素について推定した撮影距離に応じた画素値に置き換えて距離画像を生成する。
かくして画像処理プログラムに基づく処理をプロセッサ1が実行することによって、プロセッサ1を中枢部分とするコンピュータは生成モジュール12aとして機能する。
図8は図7に示す第1の棚画像に関して生成された距離画像の一例を示す図である。
図8においては、ほぼ同一の画素値を同一のハッチングで表している。
Act3においてプロセッサ1は、第1の棚画像に映り込んだ陳列棚を構成する棚部材までの離間距離dsを推定する。
陳列棚は一般に、水平な天板および棚板を棚部材の1つとして含む。天板および棚板は、陳列される商品よりも水平方向の幅が広い。図7の例では、天板および棚板は、幅W1に渡って水平方向に伸びている。また、天板および棚板の水平方向のさまざまな位置までの撮像デバイス41からの離間距離は、連続的に変化する。プロセッサ1は、このような性質を利用して離間距離dsを推定する。
かくして画像処理プログラムに基づく処理をプロセッサ1が実行することによって、プロセッサ1を中枢部分とするコンピュータは推定モジュール12bとして機能する。
図9はAct3におけるプロセッサ1の詳細な処理を示すフローチャートである。
Act3aにおいてプロセッサ1は、変数iおよび変数Countにいずれも「1」を代入するとともに、変数Sumに画素値P(i)を代入する。変数iは、距離画像における各画素を識別するための画素番号を表す。変数Countは、連続数のカウント値を表す。変数Sumは、画素値の累積和を表す。画素値P(i)は、画素番号がiである画素の画素値を表す。
Act3bにおいてプロセッサ1は、変数iの値を1つ増加する。後述するように、プロセッサ1はAct3bを繰り返し行う。つまりプロセッサ1は、着目する画素を順次に変更する。
Act3cにおいてプロセッサ1は、画素値P(i)が、最小値Clよりも大きく、かつ最大値Cu未満であるかどうかを確認する。ここで最小値Clおよび最大値Cuは、距離画像における棚部材に相当する画素についての画素値として取り得る数値範囲の最小値および最大値を表す。最小値Clおよび最大値Cuは、陳列状況判定装置100の設計者または画像処理プログラム21の作成者などによって、予め適切に定められる。例えば、ステレオカメラ4により陳列棚を撮影するに際してのステレオカメラ4と陳列棚との離間距離の許容範囲を、陳列状況判定装置100を使用する上でのルールとして定める。そして例えば、当該許容範囲の下限値に相当する画素値からマージンを減じた値として最小値Clを定め、上限値に相当する画素値にマージンを加えた値として最大値Cuを定めることが想定される。つまりプロセッサ1は、着目している画素の画素値が、ステレオカメラ4と陳列棚との離間距離としてあり得る距離に相当する値となっているか否かを確認する。そしてプロセッサ1は、ここでYesと判定したならば、Act3dへと進む。
Act3dにおいてプロセッサ1は、画素値P(i)から画素値P(i-1)を減じて求まる値の絶対値が許容差分値d未満となっているか否かを確認する。ここで許容差分値dは、距離画像中において水平方向に隣接する2つの画素間において、当該2つの画素がいずれも水平な棚部材に相当する場合における両画素の画素値の差分として許容される値を表す。許容差分値dは、陳列状況判定装置100の設計者または画像処理プログラム21の作成者などによって、予め適切に定められる。例えば、前述したように、水平方向の棚部材のさまざまな位置までの撮像デバイス41からの離間距離は、連続的に変化する。許容差分値dは、そのような変化により隣接する画素どうしに生じ得る画素値の差分の最大値程度の値として定めることが想定される。つまりプロセッサ1は、現在着目している画素における撮像デバイス41による撮影距離が、1つ前に着目した画素における撮影距離に対して変化した量が、予め定めた許容範囲内であるかどうかを確認する。そしてプロセッサ1は、ここでYesと判定したならば、Act3eへと進む。
Act3eにおいてプロセッサ1は、変数Countの値を1つ増加するとともに、変数Sumの値を、それまでの値に画素値P(i)を加えた値に更新する。
Act3fにおいてプロセッサ1は、変数Countの値が閾値Cc以上であるか否かを確認する。閾値Ccは、陳列状況判定装置100の設計者または画像処理プログラム21の作成者などによって、予め適切に定められる。例えば、水平方向の棚部材の長さに応じた画素数からマージンを減じた画素数を閾値Ccとして設定することが想定される。つまりプロセッサ1は、隣接画素との画素値の差分が許容範囲内となる画素の連続数が、水平方向の棚部材の長さに匹敵する画素数に達したか否かを確認する。そしてプロセッサは、ここでNoと判定したならば、Act3hへと進む。
ところで、プロセッサ1は、着目している画素の画素値が、ステレオカメラ4と陳列棚との離間距離としてあり得ない距離に相当する値となっているならば、Act3cでNoと判定する。またプロセッサ1は、現在着目している画素と1つ前に着目した画素とでの画素値の差分が許容範囲外であるならば、Act3dでNoと判定する。そしてプロセッサ1はこれらの場合に、Act3gへと進む。
Act3gにおいてプロセッサ1は、変数Countに「1」を代入するとともに、変数Sumに画素値P(i)を代入する。すなわちプロセッサ1は、連続数のカウントを最初からやり直すとともに、画素値の累積和を現在の着目画素の画素値にリセットする。そしてプロセッサ1はこののち、Act3hへと進む。
Act3hにおいてプロセッサ1は、変数iが総画素数N未満であるか否かを確認する。総画素数Nは、距離画像に含まれる画素の総数である。つまりプロセッサ1は、距離画像に含まれた画素の全てを着目画素としてAct3c〜Act3gの処理を行い終えたか否かを確認する。そしてプロセッサ1は、ここでYesと判定したならば、Act3bに戻り、それ以降の処理を前述と同様に繰り返す。これによってプロセッサ1は、着目画素を順次に変更しながら、Act3c〜Act3gの処理を繰り返す。
プロセッサ1は、水平な棚部材が映り込んでいる水平ラインに位置する画素を順次に着目画素としているときには、Act3cおよびAct3dのいずれでもYesと判定し続けることになる。従ってプロセッサ1はこの状態では、変数Countを徐々にカウントアップするとともに、各画素の画素値を変数Sumに累積する。そしてプロセッサ1は、変数Countが閾値Cc以上となったことによってAct3fでYesと判定すると、Act3iへと進む。
Act3iにおいてプロセッサ1は、変数Sumの値を変数Countの値で除算することによって離間距離dsを求める。すなわちプロセッサ1は、連続するCc個の画素の画素値の平均値として離間距離dsを求める。そしてプロセッサ1は、これをもって図9に示す処理を終了する。なお、連続するCc個の画素のそれぞれの画素値のうちの最大値または最小値などのような別の代表値を離間距離dsとしても良い。
なおプロセッサ1は、変数Countが閾値Cc以上となることが無いままで変数iが総画素数N以上となったためにAct3hでNoと判定したならば、Act3jへと進む。
Act3jにおいてプロセッサ1は、最大値Cuを離間距離dsとする。そしてプロセッサ1は、これをもって図9に示す処理、すなわち図6におけるAct3の処理を終了する。そしてプロセッサ1はこののち、図6に示すAct4へと進む。
Act4においてプロセッサ1は、調整フラグ24がオンであるか否かを確認する。そしてプロセッサ1は、調整フラグ24がオンであるためにYesと判定したならば、Act5へと進む。
Act5においてプロセッサ1は、記憶ユニット2に記憶された調整値23の値dmを離間距離dsに加えた値として探索距離d1を求める。なお、値dmはマイナス値である場合もある。そしてプロセッサ1はこののちにAct7へと進む。かくして画像処理プログラムに基づく処理をプロセッサ1が実行することによって、プロセッサ1を中枢部分とするコンピュータは調整モジュール12cとして機能する。
一方でプロセッサ1は、調整フラグ24がオフであるためにAct4にてNoと判定したならば、Act6へと進む。
Act6においてプロセッサ1は、離間距離dsをそのまま探索距離d1とする。そしてプロセッサ1はこののちにAct7へと進む。
Act7においてプロセッサ1は、等距離画像を生成する。プロセッサ1は具体的には、距離画像において値がd1である画素値の画素位置を、その画素位置に関する第1の棚画像における画素値とし、その他の画素位置の画素値を予め定めた定数値とした画像として等距離画像を生成する。かくして画像処理プログラムに基づく処理をプロセッサ1が実行することによって、プロセッサ1を中枢部分とするコンピュータは生成モジュール14aとして機能する。
図10は等距離画像の一例を示す図である。
図10に示す等距離画像は、離間距離dsをそのまま探索距離d1とした場合において図7に示す第1の棚画像および図8に示す距離画像に基づいて生成される画像である。
図7に示す例では、商品C1,C2,C3の撮像デバイス41による撮影距離は、離間距離dsよりも大きい。図7に示す第1の棚画像に映り込んだ商品のうちの商品C1,C2,C3以外の各商品の撮像デバイス41による撮影距離はいずれもdsである。このため図10に示す等距離画像には、商品C1,C2,C3が表されていない。
商品C1,C2,C3以外の商品は、いずれも陳列棚の手前側に並べられており、撮像デバイス41による撮影距離は離間距離dsとほぼ等しい。厳密には、これらの商品の撮影距離は、離間距離dsよりも若干大きくなることが多い。しかしながら、画素毎の撮影距離の推定に関わる分解能を適切に調整しておくことにより、図10に示すような等距離画像を生成することができる。あるいは、等距離画像を生成するに当たって、予め定められた範囲内の撮影距離については同一の撮影距離と見なすようにすることによっても、図10に示すような等距離画像を生成することができる。
図11は等距離画像の別例を示す図である。
図11に示す等距離画像は、離間距離dsに値dmを加えた値を探索距離d1とした場合において、図7に示す第1の棚画像および図8に示す距離画像に基づいて生成される画像である。そして値dmは、商品C1,C2,C3の撮像デバイス41による撮影距離と離間距離dsとの差に等しい。このため図11に示す等距離画像には、商品C1,C2,C3のみが表されている。
Act8においてプロセッサ1は、単体画像データベース22に含まれた単体画像のうちから、図6に示す処理の今回の実行中において未選択の1つを選択する。ここで選択した単体画像が表す商品が、検出対象の商品となる。
Act9においてプロセッサ1は、上記の選択した単体画像を画素数変換してテンプレート画像を生成する。プロセッサ1は具体的には、選択した単体画像の撮影距離をd2と表す場合に、倍数をd2/d1として定める。プロセッサ1は、水平方向、垂直方向ともに、単体画像の画素数に上記のように定めた倍数を乗じて求まる画素数とするように、単体画像を画素数変換する。この画素数変換の具体的な処理には、周知の処理を適用できる。そしてプロセッサ1は、この画素数変換により得られた画像をテンプレート画像とする。かくして画像処理プログラムに基づく処理をプロセッサ1が実行することによって、プロセッサ1を中枢部分とするコンピュータは生成ユニット13として機能する。
図12はテンプレート画像の生成の様子を示す図である。
単体画像は、商品を単体で撮影することから、その撮影距離は棚画像に比べて小さくなることが想定される。そこで多くの場合は、単体画像は、等距離画像に映り込んだ同種の商品の画像よりも大きい。かくして、図10に示す等距離画像に、商品C11に関連する単体画像をそのまま重ねたとすると、例えば図12の左側に示す状態となる。しかし、このような状態にある単体画像に対して上述のような画素数変換を行って得られたテンプレート画像を図10に示す等距離画像に重ねたとすると、図12の右側に示す状態となる。テンプレート画像は、商品C11の画像とほぼ同じ大きさとなっている。
Act10においてプロセッサ1は、等距離画像とテンプレート画像とを用いてテンプレートマッチングを行う。かくして画像処理プログラムに基づく処理をプロセッサ1が実行することによって、プロセッサ1を中枢部分とするコンピュータは照合モジュール14bとして機能する。
図13はAct10におけるプロセッサ1の詳細な処理を示すフローチャートである。
Act10aにおいてプロセッサ1は、開始座標(Xs,Ys)および終了座標(Xe,Ye)を決定する。プロセッサ1は例えば、等距離画像における左上角の座標を開始座標(Xs,Ys)とする。またプロセッサ1は例えば、等距離画像における右下角の座標から、テンプレート画像における横方向の画素数を水平方向に減ずるとともに、テンプレート画像における縦方向の画素数を垂直方向に減じて求まる座標を終了座標(Xe,Ye)とする。
図14は上記の例により決定される開始座標(Xs,Ys)および終了座標(Xe,Ye)を表した図である。
なおプロセッサ1は、棚割り情報25に基づいて、選択中の単体画像に関連する商品の陳列範囲を等距離画像中で特定できる場合には、その領域の左上角および右下角を基準として、上記と同様にして開始座標(Xs,Ys)および終了座標(Xe,Ye)を決定しても良い。プロセッサ1は、このように棚割り情報25を参照するか否かを、予めユーザの指示に応じて定めておいたモード設定に応じて切り替えても良い。
Act10bにおいてプロセッサ1は、変数xにXsを代入するとともに、変数yにYsを代入する。変数xおよび変数yは、等距離画像上でテンプレート画像の左上角を位置させる座標の水平方向および垂直方向の位置をそれぞれ表すものである。つまり等距離画像上でテンプレート画像の左上角を位置させる座標は(x,y)で表されるのである。そしてプロセッサ1は、この座標の初期値を(Xs,Ys)に、すなわち開始座標に設定するのである。
Act10cにおいてプロセッサ1は、左上角を座標(x,y)に位置させた状態のテンプレート画像と重なる等距離画像の領域(以下、対象領域と称する)が照合対象であるか否かを確認する。ここで、対象領域に、画素値が定数値である画素が多数含まれる場合には、当該対象領域内の画像とテンプレート画像との類似度は低い。そこでプロセッサ1は、対象領域に含まれる画素値が定数値である画素の数に関して予め定めた条件が成立する場合に、対象領域を照合対象としない。具体的には、対象領域に含まれる画素のうちの画素値が定数値である画素の割合が予め定めた閾値以上である場合に、対象領域を照合対象としないこととすることが考えられる。そしてプロセッサ1は、対象領域が照合対象であるためにYesと判定したならば、Act10dへと進む。
Act10dにおいてプロセッサ1は、対象領域内の画像とテンプレート画像との類似度S(x,y)を算出する。プロセッサ1は、類似度S(x,y)を記憶ユニット2に保存する。この類似度S(x,y)の算出には、周知のテンプレートマッチング技術で知られた手法を利用できる。そしてプロセッサ1はこののちにAct10eへと進む。
なおプロセッサ1は、対象領域が照合対象ではないためにAct10cでNoと判定したならば、Act10dをパスしてAct10eへと進む。
Act10eにおいてプロセッサ1は、変数xの値がXe未満であるか否かを確認する。そしてプロセッサ1は、変数xの値がXe未満であるためにYesと判定したならば、Act10fへと進む。
Act10fにおいてプロセッサ1は、変数xの値を1つ増加する。そしてプロセッサ1はこののち、Act10cに戻り、それ以降の処理を前述と同様に繰り返す。つまりプロセッサ1は、テンプレート画像の位置を、図14に矢印で示すように水平方向に1画素分ずつずらしながら、類似度S(x,y)を繰り返し算出する。そしてプロセッサ1は、変数xの値がXeとなるまでこの処理を繰り返したならば、変数xの値がXe以上であるためにAct10eでNoと判定することになる。そしてこの場合にプロセッサ1は、Act10gへと進む。
Act10gにおいてプロセッサ1は、変数yの値がYe未満であるか否かを確認する。そしてプロセッサ1は、変数yの値がYe未満であるためにYesと判定したならば、Act10hへと進む。
Act10hにおいてプロセッサ1は、変数xにXsを代入するとともに、変数yの値を1つ増加する。そしてプロセッサ1はこののち、Act10cに戻り、それ以降の処理を前述と同様に繰り返す。
かくしてプロセッサ1は、Act10c〜Act10hを繰り返すことによって、テンプレート画像の位置を徐々に変化させながら、照合対象である領域のそれぞれに関する類似度S(x,y)を収集する。
プロセッサ1は、テンプレート画像の左上角が終了座標(Xe,Ye)に位置しているとき、変数yがYe以上であるから、Act10gにてNoと判定する。そしてプロセッサ1はこの場合、Act10iへと進む。
Act10iにおいてプロセッサ1は、商品領域座標を全て検出する。商品領域座標とは、等距離画像において、テンプレート画像が表す商品と同じ商品が映り込んでいる領域の左上角の座標である。具体的には、採用する類似度の算出方法にもよるが、一例として類似度は、テンプレート画像と、対象領域の画像とが完全に一致する場合に最大となる。そして、両画像の差異が増えるほどに、類似度が低下する。類似度S(x,y)がこのような性質を示す場合、Act10c〜Act10hを繰り返すことにより収集された類似度S(x,y)は、ある座標に関する値が、その周辺の座標に関する値に対して大きな値となる。そこでプロセッサ1は、収集した類似度S(x,y)の中から極大値となる類似度S(x,y)を選択する。さらにプロセッサ1は、選出した類似度S(x,y)の中から、予め定めた閾値以上である類似度S(x,y)を選出し、この選出した類似度S(x,y)が求められた座標(x,y)を商品領域座標とする。
Act10jにおいてプロセッサ1は、検出した商品領域座標の全てと、選択中の単体画像が表す商品の識別情報(例えば商品コード)とを含んだ領域情報を生成し、記憶ユニット2に保存する。プロセッサ1は、図14に示す例では、商品領域座標として(x1,y1)、(x1,y2)、(x2,y1)の3つを検出することになる。そしてプロセッサ1は、これらの座標と商品C11の識別情報とを含んだ領域情報を記憶ユニット2に保存する。そしてプロセッサ1は、これをもって図13に示す処理、すなわち図6におけるAct10の処理を終了する。そしてプロセッサ1はこののち、図6に示すAct11へと進む。なお、プロセッサ1は、テンプレート画像の大きさ等の他の情報を領域情報に含めても良い。
Act11においてプロセッサ1は、単体画像データベース22に含まれた単体画像のうちに、図6に示す処理の今回の実行中において未選択の単体画像が有るか否かを確認する。そしてプロセッサ1は、未選択の単体画像が有るためにYesと判定したならば、Act8に戻り、それ以降の処理を前述と同様に繰り返す。かくしてプロセッサ1は、単体画像データベース22に含まれた単体画像のそれぞれから生成したテンプレート画像を用いてのテンプレートマッチングを順次に行う。そしてプロセッサ1は、全ての単体画像を選択し終えたためにAct11にてNoと判定したならば、図6に示す画像処理を終了する。
以上のように陳列状況判定装置100によれば、テンプレート画像は、探索距離を撮影距離とする状態で撮像デバイス41により撮影されて第1の棚画像に含まれている商品とほぼ同じ画素数で表された画像となる。このため、テンプレート画像を生成するために使用した単体画像に映り込んだ商品が、探索距離を撮影距離とする状態で第1の棚画像に映り込んでいる場合に、その領域をテンプレート画像に類似する領域として判定することができる。しかも、テンプレート画像は、探索距離を撮影距離とする状態で棚画像に映り込んでいる検出対象の商品をほぼ同じ画素数で示した画像である。このため、テンプレート画像は、検出対象の商品の画像との類似度が非常に大きく、検出対象の商品が映り込んでいる領域を、その他の領域と適確に区別できる。
また陳列状況判定装置100は、互いに異なる方向から撮影された少なくとも2つの棚画像から離間距離dsを推定する。このため、離間距離dsを測定するためのセンサなどを備える必要が無い。
また陳列状況判定装置100は、棚画像の画素毎に推定した距離に基づいて、棚画像内の水平方向の棚部材に相当する部分を判定し、その部分に含まれる画素のそれぞれの距離の代表値として離間距離dsを求める。このため、距離推定のための仕掛けを陳列棚または商品に施す必要が無い。
また陳列状況判定装置100は、離間距離dsを調整値23で調整して探索距離d1を決定する。このため、離間距離dsを上記のように求めていても、探索距離d1は離間距離dsとは異なる距離に設定することが可能である。
また陳列状況判定装置100は、調整値23をユーザの操作に応じた値に設定する。このため、探索距離d1をユーザが希望する距離にすることが可能である。
また陳列状況判定装置100によれば、テンプレート画像と重なる等距離画像の領域に定数値である画素が多数含まれる場合には、照合対象とはしない。このため、画像照合のためのプロセッサ1の処理量を減少し、プロセッサ1の負担を軽減できる。
この実施形態は、次のような種々の変形実施が可能である。
3つ以上の撮像デバイスのそれぞれでの撮影により得られた3つ以上の棚画像に基づいて離間距離dsを推定しても良い。
主撮像デバイスとは別に2つ以上の撮像デバイスを備え、主撮像デバイス以外の撮像デバイスでの撮影により得られた2つ以上の棚画像に基づいて離間距離dsを推定しても良い。
レーザ距離計などの測定デバイスを用いて離間距離dsを推定しても良い。
陳列棚に撮像デバイス41,42により撮影可能な状態で所定のマークを形成しておき、このマークまでの距離として離間距離dsを推定しても良い。このマークとしては、陳列棚を識別するための前述したバーコードなどを利用することもできる。
等距離画像を生成せず、第1の棚画像を対象としてテンプレートマッチングを実施しても良い。また、等距離画像をテンプレートマッチングの対象とする場合であっても、Act10cでの判断を省略し、開始座標から終了座標までの全ての位置について類似度を算出しても良い。
なお、測定デバイスを用いて離間距離dsを推定する場合、または陳列棚に形成したマークの位置により離間距離dsを推定する場合であって、かつ等距離画像を生成しない場合は、距離画像も生成しなくても良い。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。