(57)【要約】      （修正有）【課題】精度よく商品在庫を検出する在庫検出プログラム、在庫検出方法及び在庫検出装置を提供する。【解決手段】在庫検出プログラムは、基準点からの距離に関する情報を用いて、商品が陳列される棚の棚板を検出する処理と、測定点における棚板からの深度を算出する処理と、深度を用いて測定点に対応する位置における商品の在庫状況を判定する処理とを、コンピュータに実行させる。【選択図】図１２
2019096162.tif 000002
【特許請求の範囲】
【請求項１】
基準点からの距離に関する情報を用いて、商品が陳列される棚の棚板を検出し、
前記基準点からの距離に関する情報を用いて、測定点における、前記棚板からの深度を算出し、
前記深度を用いて、前記測定点に対応する位置における商品の在庫状況を判定する
処理をコンピュータに実行させることを特徴とする在庫検出プログラム。
【請求項２】
前記判定する処理の結果を出力する処理をさらに前記コンピュータに実行させ、
前記判定する処理は、前記深度が第１の閾値以上第２の閾値未満である場合は、前記商品が品薄であると判定し、前記深度が第２の閾値以上である場合は、前記商品が品切れであると判定することを特徴とする請求項１に記載の在庫検出プログラム。
【請求項３】
前記棚に陳列される商品の陳列数を含む棚割データと、前記在庫状況と、前記商品の大きさに関する情報とを照合することにより、前記商品の種別及び前記商品の在庫数を特定する処理をさらに前記コンピュータに実行させることを特徴とする請求項１又は２に記載の在庫検出プログラム。
【請求項４】
前記検出する処理は、前記基準点からの距離に関する情報として取得された点群データの左右方向の中央部分において、最も前記基準点からの距離が近いと判定される第１の点を特定し、前記第１の点の左右方向に所定の座標分移動した第２の点及び第３の点であって、前記基準点からの距離が、前記基準点から前記第１の点までの距離と近いと判定される点を検出し、前記第２の点及び前記第３の点が前記点群データの左右方向の両端においてそれぞれ検出された場合、前記第２の点と前記第３の点とを結ぶ直線を前記棚板として特定することを特徴とする請求項１乃至３のいずれか１つに記載の在庫検出プログラム。
【請求項５】
前記検出する処理は、前記棚板が特定された場合、又は前記第２の点若しくは前記第３の点が特定されなかった場合、前記点群データの左右方向の中央において、次に前記基準点からの距離が近いと判定される点を新たに前記第１の点とすることを特徴とする請求項４に記載の在庫検出プログラム。
【請求項６】
前記検出する処理を、前記点群データの上下方向の下端の点から開始し、前記点群データの上下方向の上端から所定の座標分移動した点に到達するまで繰り返し前記コンピュータに実行させることを特徴とする請求項５に記載の在庫検出プログラム。
【請求項７】
前記算出する処理は、前記棚板より上方向に所定の座標分移動した第１の測定点を特定し、前記基準点から前記第１の測定点までの距離に関する情報と、前記棚板までの距離に関する情報との差分を、前記深度として算出することを特徴とする請求項１乃至６のいずれか１つに記載の在庫検出プログラム。
【請求項８】
前記算出する処理は、前記第１の測定点において前記深度を特定できない場合、前記第１の測定点からさらに上方向に所定の座標分移動した第２の測定点を特定し、前記基準点から前記第２の測定点までの距離に関する情報と、前記棚板までの距離に関する情報との差分を、前記深度として算出することを特徴とする請求項７に記載の在庫検出プログラム。
【請求項９】
コンピュータが、
基準点からの距離に関する情報を用いて、商品が陳列される棚の棚板を検出し、
前記基準点からの距離に関する情報を用いて、測定点における、前記棚板からの深度を算出し、
前記深度を用いて、前記測定点に対応する位置における商品の在庫状況を判定する
処理を実行することを特徴とする在庫検出方法。
【請求項１０】
基準点からの距離に関する情報を用いて、商品が陳列される棚の棚板を検出する検出部と、
前記基準点からの距離に関する情報を用いて、測定点における、前記棚板からの深度を算出する算出部と、
前記深度を用いて、前記測定点に対応する位置における商品の在庫状況を判定する判定部と
を有することを特徴とする在庫検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、在庫検出プログラム、在庫検出方法及び在庫検出装置に関する。
【背景技術】
【０００２】
スーパーマーケット等の店舗において、棚に陳列された商品の棚割り情報や在庫情報を管理する際に、棚の画像を撮影して、画像から商品を検出する技術が知られている。例えば、複数の整理されたオブジェクトを含むリアログラム画像を受け取り、小売り棚にある１つ以上のアイテムのリアログラム画像においてオブジェクトを検出及び特定する技術が知られている。当該技術は、棚の最前部を特定してそれにラベルを付し、棚の下にある空きスペースを特定し、特定されていない製品がある可能性がある領域を特定し、製品が“品切れ”である領域を特定する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１６−１１５３４８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかし、上記技術においては、在庫の誤検出が生じる可能性が高い。例えば、上記技術においては、画像の輝度やグレースケール値等を用いて在庫を検出する。しかし、輝度などは外部の明るさなどの外的要因等に左右されやすいので、上記技術においては、商品と棚板や、商品と棚の奥面などの誤検出が生じる可能性が高い。
【０００５】
一つの側面では、精度よく商品在庫を検出できる在庫検出プログラム、在庫検出方法及び在庫検出装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
一つの態様において、在庫検出プログラムは、基準点からの距離に関する情報を用いて、商品が陳列される棚の棚板を検出する処理をコンピュータに実行させる。在庫検出プログラムは、基準点からの距離に関する情報を用いて、測定点における、棚板からの深度を算出する処理をコンピュータに実行させる。在庫検出プログラムは、深度を用いて、測定点に対応する位置における商品の在庫状況を判定する処理をコンピュータに実行させる。
【発明の効果】
【０００７】
一つの態様によれば、精度よく商品在庫を検出できる。
【図面の簡単な説明】
【０００８】
【図１】図１は、実施例１における測距データの取得処理の一例を示す図である。
【図２】図２は、在庫状況の一例を示す図である。
【図３】図３は、実施例１における在庫状況に対応する測距データの一例を示す図である。
【図４】図４は、点群データ化した測距データの一例を示す図である。
【図５】図５は、実施例１における検出装置の一例を示す図である。
【図６】図６は、実施例１における測距データＤＢの一例を示す図である。
【図７】図７は、実施例１における深度ＤＢの一例を示す図である。
【図８】図８は、実施例１における棚割ＤＢの一例を示す図である。
【図９Ａ】図９Ａは、実施例１における棚板検出処理の一例を示す図である。
【図９Ｂ】図９Ｂは、実施例１における棚板検出処理の一例を示す図である。
【図９Ｃ】図９Ｃは、実施例１における棚板検出処理の一例を示す図である。
【図１０】図１０は、実施例１における深度算出処理の一例を示す図である。
【図１１】図１１は、実施例１における出力結果の一例を示す図である。
【図１２】図１２は、実施例１における在庫検出処理の一例を示すフローチャートである。
【図１３】図１３は、実施例１における棚板検出処理の一例を示すフローチャートである。
【図１４】図１４は、実施例１における在庫判定処理の一例を示すフローチャートである。
【図１５】図１５は、実施例２における深度算出処理の一例を示す図である。
【図１６】図１６は、実施例２における在庫状況に対応する測距データの一例を示す図である。
【図１７】図１７は、実施例２における検出装置の一例を示す図である。
【図１８】図１８は、実施例２における測距データＤＢの一例を示す図である。
【図１９】図１９は、実施例２における深度ＤＢの一例を示す図である。
【図２０】図２０は、実施例２における在庫検出処理の一例を示すフローチャートである。
【図２１】図２１は、実施例２における深度特定処理の一例を示すフローチャートである。
【図２２】図２２は、検出プログラムを実行するコンピュータの一例を示す図である。
【発明を実施するための形態】
【０００９】
以下に、本願の開示する在庫検出プログラム、在庫検出方法及び在庫検出装置の実施例を図面に基づいて詳細に説明する。なお、この実施例によりこの発明が限定されるものではない。また、以下に示す各実施例は、矛盾を起こさない範囲で適宜組み合わせても良い。
【実施例１】
【００１０】
本実施例における検出装置１００は、基準点から測定点までの距離を測定した測距データを用いて、商品の在庫を検出する。図１は、実施例１における測距データの取得処理の一例を示す図である。図１に示すように、本実施例における検出装置１００は、例えば自走式のロボットである。検出装置１００は、例えば赤外線や音波等を照射することにより、対象物との距離を測定する測距センサを用いて、基準点９２０から測定点までの測距データを取得する。なお、測距データは、距離に関する情報の一例である。
【００１１】
検出装置１００は、取得した測距データのうち、例えば最も距離が小さいデータを用いて、図１に示す棚９００の棚板９０１の位置を特定する。同様に、検出装置１００は、図１に示す棚板９０１の位置から任意の座標分上に移動した、商品の陳列位置に対応する測定点９１０における測距データを用いて、棚板９０１から測定点９１０までの奥行を示す深度を測定する。そして、検出装置１００は、深度が０であるか又は小さい場合は、商品の在庫が十分にあると判定し、深度が大きい場合は、商品の在庫が少ないか又は全くないと判定する。
【００１２】
深度と商品の在庫との関係について、図２及び図３を用いて説明する。図２は、在庫状況の一例を示す図である。図２において、図の上方向は棚の奥方向に対応し、図の下方向は棚の手前方向に対応する。図２に示すように、例えば店員７００は、棚の手前方向から目視することにより、商品８１０乃至８５０の在庫を把握する。
【００１３】
図２において、例えば商品８１０及び８５０は棚に十分な数がそろっているが、商品８２０は商品在庫が少なくなっている。一方、商品８４０は品切れである。
【００１４】
このような商品の棚における、棚板５２０からの奥行を示す深度の測定結果を図３に示す。図３は、実施例１における在庫状況に対応する測距データの一例を示す図である。図３において、ｘ軸は棚の左右方向を示し、ｚ軸は棚の奥行方向を示す。ｚ軸は、数値が大きくなるほど深度が大きいことを示す。
【００１５】
図３に示すように、十分な在庫がそろっている商品８１０について、対応する深度８１１は、第１の閾値８０１よりも小さい。商品８５０に対応する深度８５１についても同様である。これに対して、在庫が少ない商品８２０に対応する深度８２１は、第１の閾値８０１以上であるが、第２の閾値８０２よりは小さい範囲８９１に含まれる。また、品切れとなっている商品８４０に対応する深度８４１は、第２の閾値８０２以上の範囲８９２に含まれる。
【００１６】
なお、測距データとして取得される点群データを図示すると、図４に示すような画像となる。図４は、点群データ化した測距データの一例を示す図である。図４に示す画像５００において、距離が小さい部分の測距データは白に近い色で示され、距離が大きくなるほど黒に近い色で示される。なお、例えば透明な商品や、液体を含む商品等の距離が測定できない部分は、黒で示される。
【００１７】
このように、本実施例における検出装置１００は、測定点からの距離を示す測距データを用いて陳列棚の棚板を検出し、棚板から所定座標分上方の測距データを用いて棚板からの深度を算出して商品の在庫状況を判定するので、簡易に在庫を検出できる。
【００１８】
［機能ブロック］
次に、本実施例における検出装置１００の機能について、図５を用いて説明する。図５は、実施例１における検出装置の一例を示す図である。図５に示すように、本実施例における検出装置１００は、外部Ｉ／Ｆ１１０と、記憶部１２０と、制御部１３０とを有する。
【００１９】
外部Ｉ／Ｆ１１０は、有線又は無線を問わず、店員の端末（不図示）やその他のデータベースサーバ（不図示）など、その他のコンピュータ等との通信を制御する。外部Ｉ／Ｆ１１０は、例えばＮＩＣ（Network  Interface  Card）等の通信インタフェース等である。外部Ｉ／Ｆ１１０は、例えば測距センサを有する外部の装置から、測距データを取得する。なお、図１に示すように、検出装置１００が測距センサを有するロボット等により実装される場合、外部Ｉ／Ｆ１１０の代わりに測距センサを有してもよい。
【００２０】
記憶部１２０は、例えば制御部１３０が実行するプログラムなどの各種データなどを記憶する。また、記憶部１２０は、測距データＤＢ１２１、深度ＤＢ１２２及び棚割ＤＢ１２３を有する。記憶部１２０は、ＲＡＭ（Random  Access  Memory）、ＲＯＭ（Read  Only  Memory）、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤ（Hard  Disk  Drive）などの記憶装置に対応する。なお、以下の説明では、データベース（Database）を「ＤＢ」と表記する場合がある。
【００２１】
測距データＤＢ１２１は、測距データを、測定点の座標と対応付けて記憶する。図６は、実施例１における測距データＤＢの一例を示す図である。図６に示すように、測距データＤＢ１２１は、例えば、「棚番」と、「ｘ座標」及び「ｙ座標」と、「距離」とを対応付けて記憶する。なお、測距データＤＢ１２１に記憶される情報は、例えば後に説明する距離取得部１３１により入力される。測距データＤＢ１２１は、例えば、測定点ごとに１レコードとして記憶する。
【００２２】
図６において、「棚番」は、商品陳列棚を一意に識別する識別子（Identifier）を記憶する。「ｘ座標」及び「ｙ座標」は、測定点の座標を記憶する。なお、ｙ座標は、棚の垂直方向を示す。「距離」は、測定点における距離を記憶する。
【００２３】
深度ＤＢ１２２は、測距データから算出される深度を、棚における位置と対応付けて記憶する。図７は、実施例１における深度ＤＢの一例を示す図である。図７に示すように、深度ＤＢ１２２は、「棚番」と、「棚段」と、「ｘ座標」と、「深度」とを対応付けて記憶する。なお、深度ＤＢ１２２に記憶される情報は、例えば後に説明する深度算出部１３３により入力される。
【００２４】
図７において、「棚段」は、棚番の商品陳列棚における、棚の段の位置を記憶する。例えば、「棚段」は、最上段を「１」とする。「深度」は、測距データから算出される、棚板から測定点までの奥行を示す深度を記憶する。
【００２５】
棚割ＤＢ１２３は、商品陳列棚における商品の配置を記憶する。図８は、実施例１における棚割ＤＢの一例を示す図である。図８に示すように、棚割ＤＢ１２３は、「ＩＤ」と、「棚番」と、「棚段」と、「商品名」と、ＦＡＣＥ数とを対応付けて記憶する。なお、棚割ＤＢ１２３に記憶される情報は、例えば検出装置１００の図示しない管理者により、予め入力される。
【００２６】
図８において、「ＩＤ」は、商品陳列棚に陳列される商品を一意に識別する識別子である。「左端」及び「右端」は、当該商品が陳列される位置の左右方向、例えばｘ軸方向における範囲を記憶する。「商品名」は、当該陳列される商品の名称を記憶する。
【００２７】
図５に戻って、制御部１３０は、検出装置１００の全体的な処理を司る処理部である。制御部１３０は、例えば、ＣＰＵ（Central  Processing  Unit）やＭＰＵ（Micro  Processing  Unit）等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部１３０は、例えば、ＡＳＩＣ（Application  Specific  Integrated  Circuit）やＦＰＧＡ（Field  Programmable  Gate  Array）等の集積回路により実現されるようにしてもよい。
【００２８】
制御部１３０は、距離取得部１３１、棚板検出部１３２、深度算出部１３３、在庫判定部１３４及び出力部１３５を有する。なお、距離取得部１３１、棚板検出部１３２、深度算出部１３３、在庫判定部１３４及び出力部１３５は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【００２９】
距離取得部１３１は、測距データを取得する。例えば、距離取得部１３１は、外部Ｉ／Ｆ１１０を通じて、測距センサから測距データを取得し、測定点の座標と測定された距離とを対応付けて、測距データＤＢ１２１に記憶する。
【００３０】
棚板検出部１３２は、測距データを用いて、棚板を検出する。棚板検出部１３２による処理については、図９Ａ乃至図９Ｃを用いて説明する。なお、棚板検出部１３２は、検出部の一例である。
【００３１】
図９Ａ乃至図９Ｃは、実施例１における棚板検出処理の一例を示す図である。まず、棚板検出部１３２は、図９Ａに示すように、点群データとして取得した測距データのうち、左右方向の中央部分、例えばｘ座標直線上の中線５１１を特定する。次に、棚板検出部１３２は、中線５１１上の点のうち、最も距離が近い点、例えば最も測距データが小さい点５２１を第１の点として特定する。
【００３２】
次に、棚板検出部１３２は、第１の点の左右方向に所定の座標分移動した点を、第２の点及び第３の点として特定する。例えば、棚板検出部１３２は、点５２１を第１の点として特定した場合、図９Ｂに示す点５２２及び５２３を、第２の点及び第３の点として特定する。
【００３３】
そして、棚板検出部１３２は、第２の点及び第３の点のそれぞれにおける測距データと、第１の点における測距データとの差が、所定の閾値未満であるか否かを判定する。棚板検出部１３２は、距離の差が、所定の閾値未満であると判定した場合、第２の点及び第３の点のそれぞれから、さらに左右方向に所定の座標分移動した点を、新たな第２の点及び第３の点として特定する。棚板検出部１３２は、第２の点及び第３の点を特定する処理を、新たな第２の点及び第３の点が点群データの左端５３２及び右端５３３に到達するまで繰り返す。
【００３４】
棚板検出部１３２は、新たな第２の点及び第３の点が点群データの左右両端に到達した場合、当該第２の点と第３の点とを結ぶ左右方向の直線を、棚板の位置として検出する。そして、棚板検出部１３２は、中線５１１上の点のうち、第１の点の次に測距データが小さい点を、新たな第１の点として特定する。また、棚板検出部１３２は、第２の点及び第３の点のそれぞれにおける測距データと、第１の点における測距データとの差が、所定の閾値以上であると判定した場合も、同様に新たな第１の点を特定する。
【００３５】
棚板検出部１３２は、点群データの上下方向、例えばＹ軸方向の下端から第１の点を特定する処理を開始し、Ｙ軸方向の上端から所定の座標分下に移動した点に到達するまで処理を繰り返すことにより、商品陳列棚に含まれる複数の棚板を検出する。棚板検出部１３２は、例えば図９Ｃにおいて、Ｙ軸方向の下端Ｙｍｉｎから処理を開始し、Ｙ軸方向の上端Ｙｍａｘから所定の座標ｈ１の分だけ下に移動した点Ｙｍａｘ−ｈ１に至るまで処理を繰り返す。これにより、棚板検出部１３２は、棚板５２０に加えて、棚板５４０乃至５８０もあわせて検出する。なお、Ｙ軸方向の上端Ｙｍａｘまで処理を繰り返さず、所定の座標分下に移動した点で処理を終了するのは、棚板と棚の上端との間に空間がなければ、棚板上に商品を陳列できないためである。
【００３６】
深度算出部１３３は、測距データを用いて、測定点における深度を算出する。深度算出部１３３による処理については、図１０を用いて説明する。なお、深度算出部１３３は、算出部の一例である。
【００３７】
図１０は、実施例１における深度算出処理の一例を示す図である。まず、深度算出部１３３は、点群データ中において、棚板５２０が検出された位置から所定の座標分上方向に移動した位置における直線６１１を特定する。次に、深度算出部１３３は、直線６１１上の特定のｘ座標の点６１２における測距データを取得する。
【００３８】
そして、深度算出部１３３は、点６１２における測距データと、棚板５２０における測距データとの差分を、点６１２における深度として算出する。深度算出部１３３は、算出した深度を、点６１２のｘ座標、及び棚板５２０に対応する棚段と対応付けて、深度ＤＢ１２２に記憶する。
【００３９】
深度算出部１３３は、例えば棚のｘ座標方向の左端から処理を開始し、深度を算出すると、所定の座標分右方向に移動して処理を繰り返す。
【００４０】
在庫判定部１３４は、深度を用いて、商品の在庫を判定する。なお、在庫判定部１３４は、判定部の一例である。
【００４１】
在庫判定部１３４は、深度ＤＢ１２２から深度を取得する。また、在庫判定部１３４は、棚割ＤＢ１２３を参照し、取得した深度に対応する位置に陳列される商品を特定する。そして、在庫判定部１３４は、取得した深度を、第１の閾値及び第２の閾値と比較する。
【００４２】
在庫判定部１３４は、深度が第１の閾値未満である場合は、対応する位置に陳列される商品は「在庫有」であると判定する。在庫判定部１３４は、深度が第１の閾値以上第２の閾値未満である場合は、対応する位置に陳列される商品は「品薄」であると判定する。在庫判定部１３４は、深度が第２の閾値以上である場合は、対応する位置に陳列される商品は「品切れ」であると判定する。
【００４３】
出力部１３５は、各測定点における在庫の判定結果を、棚割に関する情報と対応付けて出力する。出力部１３５は、深度ＤＢ１２２から、各深度の「棚番」、「棚段」及び「ｘ座標」を取得する。次に、出力部１３５は、棚割ＤＢ１２３を参照し、各「棚番」、「棚段」及び「ｘ座標」に対応する位置に陳列される商品を特定する。そして、出力部１３５は、各位置に陳列される商品の在庫状況を出力する。
【００４４】
例えば、出力部１３５は、深度ＤＢ１２２における棚番「１」、棚段「１」、ｘ座標「８０」は、棚割ＤＢ１２３におけるＩＤ「Ａ００１」に対応することを特定する。そして、出力部１３５は、当該商品が「在庫あり」であることを示す情報を出力する。
【００４５】
図１１は、実施例１における出力結果の一例を示す図である。図１１に示すように、出力部１３５は、ＩＤ「Ａ００１」の商品「●●ラーメン」が「在庫あり」であることを示す情報を含む出力結果を生成する。同様に、出力部１３５は、深度ＤＢ１２２における各位置と、棚割ＤＢ１２３における各商品とを対応付けて、各商品の在庫状況を出力する。例えば、第１の閾値が「３０」であり、第２の閾値が「５０」である場合、対応する陳列位置における深度が「４０」である商品は「品薄」であることが示され、対応する陳列位置における深度が「５０」である商品は「品切れ」であることが示される。
【００４６】
［処理の流れ］
次に、本実施例における処理について、図１２乃至図１４を用いて説明する。図１２は、実施例１における在庫検出処理の一例を示すフローチャートである。図１２に示すように、検出装置１００の距離取得部１３１は、例えば外部Ｉ／Ｆ１１０を通じて測距データを取得するまで待機する（Ｓ１０：Ｎｏ）。
【００４７】
棚板検出部１３２は、測距データを取得したと判定した場合（Ｓ１０：Ｙｅｓ）、図１３に示す棚板検出処理を実行する（Ｓ１１）。棚板検出処理については後に説明する。次に、深度算出部１３３は、深度を算出する（Ｓ１２）。次に、在庫判定部１３４は、算出された深度を用いて、在庫判定処理を実行する（Ｓ１３）。在庫判定処理については後に説明する。
【００４８】
次に、在庫判定部１３４は、ｘ方向にｗ座標分移動した測定点を特定し（Ｓ１４）、当該測定点のｘ座標が所定の閾値以上か否かを判定する（Ｓ１５）。深度算出部１３３は、ｘ座標が所定の閾値未満であると判定した場合（Ｓ１５：Ｎｏ）、Ｓ１２に戻って処理を繰り返す。
【００４９】
一方、在庫判定部１３４は、ｘ座標が所定の閾値以上であると判定した場合（Ｓ１５：Ｙｅｓ）、全ての棚板について処理が完了したか否かを判定する（Ｓ１６）。深度算出部１３３は、全ての棚板について処理が完了していないと判定された場合（Ｓ１６：Ｎｏ）、検出された次の棚板を特定し（Ｓ１７）、Ｓ１２に戻って処理を繰り返す。
【００５０】
一方、出力部１３５は、全ての棚板について処理が完了したと判定された場合（Ｓ１６
：Ｙｅｓ）、棚割ＤＢ１２３を参照し、深度ＤＢ１２２に記憶された座標と棚割情報とを突合する（Ｓ１８）。そして、出力部１３５は、突合結果を出力し（Ｓ１９）、処理を終了する。
【００５１】
次に、棚板検出処理について説明する。図１３は、実施例１における棚板検出処理の一例を示すフローチャートである。図１３に示すように、棚板検出部１３２は、ｘ座標直線上の中線を特定する（Ｓ１１０）。次に、棚板検出部１３２は、中線上で最も距離が近い点を、第１の点として特定する（Ｓ１１１）。
【００５２】
そして、棚板検出部１３２は、第２の点及び第３の点を特定する（Ｓ１１３）。棚板検出部１３２は、第１の点の測距データと第２の点及び第３の点それぞれの測距データとを比較して、距離の差が所定の閾値未満であるか否かを判定する（Ｓ１１４）。棚板検出部１３２は、距離の差が所定の閾値以上であると判定した場合（Ｓ１１４：Ｎｏ）、Ｓ１１７に移行する。
【００５３】
棚板検出部１３２は、距離の差が所定の閾値未満であると判定した場合（Ｓ１１４：Ｙｅｓ）、第２の点及び第３の点が、それぞれ点群データ中の左右両端に到達するまで、Ｓ１１３に戻って処理を繰り返す（Ｓ１１５：Ｎｏ）。
【００５４】
そして、棚板検出部１３２は、第２の点及び第３の点がそれぞれ点群データ中の左右両端に到達したと判定した場合（Ｓ１１５：Ｙｅｓ）、第２の点と第３の点とを結ぶ直線を、棚板として検出する（Ｓ１１６）。
【００５５】
そして、棚板検出部１３２は、中線上で次に距離が近い点を特定し（Ｓ１１７）、当該点のｙ座標がＹｍａｘ−ｈ１以上であるか否かを判定する（Ｓ１１８）。棚板検出部１３２は、ｙ座標がＹｍａｘ−ｈ１未満であると判定した場合（Ｓ１１８：Ｎｏ）、Ｓ１１３に戻って処理を繰り返す。一方、棚板検出部１３２は、ｙ座標がＹｍａｘ−ｈ１以上であると判定した場合（Ｓ１１８：Ｙｅｓ）、在庫検出処理に戻る。
【００５６】
図１４は、実施例１における在庫判定処理の一例を示すフローチャートである。まず、在庫判定部１３４は、取得した深度が第１の閾値以上であるか否かを判定する（Ｓ１３０）。在庫判定部１３４は、深度が第１の閾値未満であると判定した場合（Ｓ１３０：Ｎｏ）、対応する位置に陳列される商品は「在庫有」であると判定し（Ｓ１３２）、在庫検出処理に戻る。
【００５７】
一方、在庫判定部１３４は、深度が第１の閾値以上であると判定した場合（Ｓ１３０：Ｙｅｓ）、深度が第２の閾値以上であるか否かを判定する（Ｓ１３１）。在庫判定部１３４は、深度が第２の閾値未満であると判定した場合（Ｓ１３１：Ｎｏ）、対応する位置に陳列される商品は「品薄」であると判定し（Ｓ１３３）、在庫検出処理に戻る。
【００５８】
在庫判定部１３４は、深度が第２の閾値以上であると判定した場合（Ｓ１３１：Ｙｅｓ）、対応する位置に陳列される商品は「品切れ」であると判定し（Ｓ１３４）、在庫検出処理に戻る。
【００５９】
［効果］
以上説明したように、本実施例における在庫検出装置は、基準点からの距離に関する情報を用いて、商品が陳列される棚の棚板を検出する。在庫検出装置は、基準点からの距離に関する情報を用いて、測定点における、棚板からの深度を算出する。在庫検出装置は、深度を用いて、測定点に対応する位置における商品の在庫状況を判定する。これにより、精度よく商品在庫を検出できる。
【００６０】
また、本実施例における在庫検出装置は、例えば、深度が第１の閾値以上第２の閾値未満である場合は、商品が品薄であると判定し、深度が第２の閾値以上である場合は、商品が品切れであると判定する。さらに、在庫検出装置は、判定する処理の結果を出力してもよい。これにより、商品在庫の状況をより細分化して特定できる。
【００６１】
また、本実施例における在庫検出装置は、基準点からの距離に関する情報として取得された点群データの左右方向の中央部分において、最も基準点からの距離が近いと判定される第１の点を特定する。在庫検出装置は、第１の点の左右方向に所定の座標分移動した第２の点及び第３の点であって、基準点からの距離が、基準点から第１の点までの距離と近いと判定される点を検出する。そして、在庫検出装置は、第２の点及び第３の点が点群データの左右方向の両端においてそれぞれ検出された場合、第２の点と第３の点とを結ぶ直線を棚板として特定する。これにより、棚板をより精度よく特定できる。
【００６２】
また、本実施例における在庫検出装置は、棚板が特定された場合、又は第２の点若しくは第３の点が特定されなかった場合、点群データの左右方向の中央において、次に基準点からの距離が近いと判定される点を新たに第１の点としてもよい。さらに、在庫検出装置は、検出する処理を、点群データの上下方向の下端の点から開始し、点群データの上下方向の上端から所定の座標分移動した点に到達するまで繰り返してもよい。これにより、複数の棚板を精度よく特定できる。
【００６３】
また、本実施例における在庫検出装置は、棚板より上方向に所定の座標分移動した第１の測定点を特定し、基準点から第１の測定点までの距離に関する情報と、棚板までの距離に関する情報との差分を、深度として算出する。これにより、棚板の位置を基準とする商品の深度を特定できる。
【実施例２】
【００６４】
ところで、図４に示すように、測距センサの特性、測定点における商品の特性等により、距離が測定できない場合がある。測距データを取得できない場合、商品の在庫を適切に検出することが困難である。
【００６５】
そこで、本実施例においては、測距データを取得できない場合に、測定点を変更して再度距離の取得を試行する構成について説明する。図１５は、実施例２における深度算出処理の一例を示す図である。図１５に示す点群データ６９９は、例えばペットボトル６９０が陳列される位置の測距データを示す。また、図１５に示すペットボトルは、ラベルで覆われている部分と、ラベルで覆われていない透明な部分とを含む。
【００６６】
図１５に示すように、直線６１１に対応する測定点６９１がペットボトルのラベルで覆われていない透明な部分である場合、当該測定点については距離を正しく取得することができない。このため、図１５において、点群データにおける測定点６９１に対応する測距データ６１３は、距離が測定できなかったことを示す。
【００６７】
この場合において、後に説明する、本実施例における検出装置３００は、直線６１１から、所定の座標分上方向に移動した位置における直線６２１をさらに特定する。そして、検出装置３００は、直線６２１上の特定のｘ座標の測定点６２３における測距データを取得する。この場合において、測定点６２３に対応するペットボトル６９０の部分６９２がラベルで覆われた部分であるので、測定点６２３における測距データを取得することができる。
【００６８】
なお、例えば部分６９２においても距離が測定できない場合、検出装置３００は、直線６２１から、さらに所定の座標分上方向に移動した位置における直線６３１を特定する。そして、検出装置３００は、直線６３１上の特定のｘ座標の測定点６３３における測距データを取得する。この場合において、測定点６３３に対応するペットボトル６９０の部分６９３は、ラベルで覆われていない透明な部分であるので、測定点６３３においても距離を取得できない。
【００６９】
本実施例における深度の測定結果を図１６に示す。図１６は、実施例２における在庫状況に対応する測距データの一例を示す図である。なお、以下の実施例において、先に説明した図面に示す部位と同一の部位には同一の符号を付し、重複する説明は省略する。
【００７０】
図１６において、例えば「●」印８０２１、８０４１及び８０５１は、直線６１１上の測定点において距離が取得されたことを示す。「★」印８０１１は、直線６１１より所定の座標分上方向に移動した位置における直線６２１上の測定点において距離が取得されたことを示す。また、「×」印８０３１は、いすれの直線上の測定点においても、距離を取得できなかったことを示す。
【００７１】
［機能ブロック］
次に、本実施例における検出装置３００の機能について、図１７は、実施例２における検出装置の一例を示す図である。図１７に示すように、本実施例における検出装置３００は、外部Ｉ／Ｆ１１０と、記憶部３２０と、制御部３３０とを有する。なお、以下の実施例において、先に説明した図面に示す部位と同一の部位には同一の符号を付し、重複する説明は省略する。
【００７２】
記憶部３２０は、例えば制御部３３０が実行するプログラムなどの各種データなどを記憶する。また、記憶部３２０は、測距データＤＢ３２１、深度ＤＢ３２２及び棚割ＤＢ１２３を有する。記憶部３２０は、ＲＡＭ、ＲＯＭ、フラッシュメモリなどの半導体メモリ素子や、ＨＤＤなどの記憶装置に対応する。
【００７３】
測距データＤＢ３２１は、図６に示すデータと同様に、測距データを記憶する。なお、測距データＤＢ３２１は、後に説明する距離取得部３３１により、測距データが取得されなかった場合、測距データが取得されなかったことを示す情報（例えば、「−」記号）をさらに記憶する。図１８は、実施例２における測距データＤＢの一例を示す図である。図１８に示すように、測距データＤＢ３２１は、棚番「１」のｘ座標「２００」、ｙ座標「０」における測定点において、測距データが取得されなかったことを示す情報を記憶する。
【００７４】
深度ＤＢ３２２は、図７に示すような測距データから算出される深度を、棚における位置と、距離が測定された高さとに対応付けて記憶する。図１９は、実施例２における深度ＤＢの一例を示す図である。図１９に示すように、深度ＤＢ３２２は、「棚番」と、「棚段」と、「ｘ座標」と、「深度」とに加えて、さらに「測定高さ」を対応付けて記憶する。
【００７５】
図１９において、「測定高さ」は、距離が測定された測定点のＹ軸方向における高さを記憶する。図１９に示す例においては、例えば測定高さ「１」は、図１５に示す直線６１１上の測定点で距離が取得されたことを示し、測定高さ「２」は、直線６２１上の測定点で距離が取得されたことを示す。なお、「−」は、いずれの測定点においても、距離が取得できなかったことを示す。図１９に示す例において、深度ＤＢ３２２は、棚番「１」、棚段「１」のｘ座標「８０」においては、直線６１１上の測定点で距離が取得され、ｘ座標「１６０」及び「２４０」においては、直線６２１上の測定点で距離が取得されたことを記憶する。
【００７６】
制御部３３０は、検出装置３００の全体的な処理を司る処理部である。制御部３３０は、例えば、ＣＰＵやＭＰＵ等によって、内部の記憶装置に記憶されているプログラムがＲＡＭを作業領域として実行されることにより実現される。また、制御部３３０は、例えば、ＡＳＩＣやＦＰＧＡ等の集積回路により実現されるようにしてもよい。
【００７７】
制御部３３０は、距離取得部３３１、棚板検出部１３２、深度算出部３３３、在庫判定部３３４及び出力部１３５を有する。なお、距離取得部３３１、棚板検出部１３２、深度算出部３３３、在庫判定部３３４及び出力部１３５は、プロセッサが有する電子回路の一例やプロセッサが実行するプロセスの一例である。
【００７８】
距離取得部３３１は、測距データが取得できなかった場合、対象とした座標に対応付けて、測距データが取得されなかったことを示す情報を測距データＤＢ３２１に記憶する。
【００７９】
深度算出部３３３は、測距データを用いて、測定点における深度を算出し、深度ＤＢ３２２に記憶する際に、用いた測距データが取得された測定高さも合わせて記憶する。深度算出部３３３は、測定点における測距データが取得できなかった場合には、異なる測定点における測距データを用いて再度深度の算出を試みる。
【００８０】
深度算出部３３３は、例えば図１５に示す直線６１１上の測定点において測距データを取得できない場合、所定の座標分上方向に移動した位置における直線６２１上の測定点において測距データを取得する。深度算出部３３３は、例えば直線６２１上の測定点において測距データが取得できた場合、当該測距データを用いて深度を算出し、測定点に対応する測定高さ「２」と対応付けて深度ＤＢ３２２に記憶する。
【００８１】
また、深度算出部３３３は、候補となるいずれの測定点においても測距データが取得できなかった場合、深度を特定できなかったことを示す情報を深度ＤＢ３２２に記憶する。深度算出部３３３は、例えば図１５に示す直線６３１上の測定点においても測距データを取得できない場合、深度ＤＢ３２２に、「深度」及び「測定高さ」が取得できなかったことを示す情報「−」を記憶する。
【００８２】
［処理の流れ］
次に、本実施例における処理について、図２０及び図２１を用いて説明する。なお、以下の説明において、図１２乃至図１４に示すステップと同じ符号については同様のステップであるため、詳細な説明を省略する。
【００８３】
図２０は、実施例２における在庫検出処理の一例を示すフローチャートである。図２０に示すように、実施例２における在庫検出処理においては、図１２に示すＳ１２及びＳ１３の代わりに、深度特定処理を実行する（Ｓ２２）。
【００８４】
図２１は、実施例２における深度特定処理の一例を示すフローチャートである。まず、深度算出部３３３は、検出された棚板から、所定の座標分上方向に移動した位置における直線を特定する（Ｓ２２１）。次に、深度算出部３３３は、測距データＤＢ３２１を参照し、特定された直線上の測定点において距離が取得できたか否かを判定する（Ｓ２２２）。
【００８５】
深度算出部３３３は、距離が取得できたと判定した場合（Ｓ２２２：Ｙｅｓ）、取得された測距データを用いて深度を算出する（Ｓ２２３）。そして、深度算出部３３３は、算出した深度を用いて、図１４に示す在庫判定処理を行い（Ｓ１３）、在庫検出処理に戻る。
【００８６】
一方、深度算出部３３３は、距離が取得できなかったと判定した場合（Ｓ２２２：Ｎｏ）、特定された測定点から、さらに所定の座標分上方向に移動した位置における直線を特定する（Ｓ２２４）。そして、深度算出部３３３は、特定された直線のｙ座標が、所定の閾値以上であるか否かを判定する（Ｓ２２５）。深度算出部３３３は、ｙ座標が所定の閾値未満であると判定した場合（Ｓ２２５：Ｎｏ）、Ｓ２２２に戻って処理を繰り返す。
【００８７】
一方、深度算出部３３３は、ｙ座標が所定の閾値以上であると判定した場合（Ｓ２２５：Ｙｅｓ）、「深度情報なし」であると判定し、判定結果を深度ＤＢ３２２に記憶して（Ｓ２２６）、在庫検出処理に戻る。
【００８８】
［効果］
以上説明したように、本実施例における在庫検出装置は、棚に陳列される商品の陳列数を含む棚割データと、在庫状況と、商品の大きさに関する情報とを照合することにより、商品の種別及び商品の在庫数を特定する。これにより、棚割に即した在庫状況を特定できる。
【００８９】
また、本実施例における在庫検出装置は、第１の測定点において深度を特定できない場合、第１の測定点からさらに上方向に所定の座標分移動した第２の測定点を特定してもよい。そして、在庫検出装置は、基準点から第２の測定点までの距離に関する情報と、棚板までの距離に関する情報との差分を、深度として算出してもよい。これにより、例えば特定の位置において測距データが取得できない場合であっても、在庫を検出できる可能性を向上できる。
【実施例３】
【００９０】
さて、これまで本発明の実施例について説明したが、本発明は上述した実施例以外にも、種々の異なる形態にて実施されてよいものである。例えば、実施例１における検出装置１００は、図１に示すような自走型のロボットにより実装されるが、これに限られず、当該ロボットが撮影した画像を取得するサーバ等のコンピュータにより実現することもできる。また、当該サーバは、ロボット等が撮影した画像の代わりに、図示しない店員等が撮影した画像を取得してもよい。
【００９１】
また、図７においては、深度算出部１３３が、例えば深度を算出後、右方向に「８０」づつ移動する場合における算出結果を記憶するが、移動する座標は一例であり、例えば棚の幅や商品の幅に応じて適宜変更してもよい。
【００９２】
また、図９Ｃにおいて、Ｙ軸方向の上端Ｙｍａｘから所定の座標ｈ１の分だけ下に移動した点Ｙｍａｘ−ｈ１において処理を終了する構成について説明したが、実施の形態はこれに限られない。例えば、棚板の上端から商品が吊るされている場合などは、棚の上端にも商品が陳列される場合があるので、Ｙ軸方向の上端Ｙｍａｘまで棚板検出処理を繰り返してもよい。
【００９３】
なお、図１３に示す棚板検出処理において、第２の点及び第３の点が検出されない場合、例えば商品が棚板より前にはみ出しているために棚板の位置が誤検出されている可能性がある。そこで、棚板検出部１３２は、第２の点及び第３の点が検出されない場合に、商品の陳列異常を示すような情報を出力してもよい。また、図１４に示す在庫判定処理において、深度が負の値であると判定されるような場合も同様である。
【００９４】
［システム］
また、図示した各部の各構成要素は、必ずしも物理的に図示の如く構成されていることを要しない。すなわち、各部の分散・統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況等に応じて、任意の単位で機能的または物理的に分散・統合して構成することができる。例えば、深度算出部１３３と在庫判定部１３４とを統合してもよい。また、出力部１３５の在庫状況と棚割情報とを突合する処理と、突合結果を出力する処理とを分割し、それぞれ別の処理部として設けてもよい。
【００９５】
さらに、各装置で行われる各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ（Micro  Controller  Unit）等のマイクロ・コンピュータ）上で、その全部または任意の一部を実行するようにしてもよい。また、各種処理機能は、ＣＰＵ（またはＭＰＵ、ＭＣＵ等のマイクロ・コンピュータ）で解析実行されるプログラム上、またはワイヤードロジックによるハードウェア上で、その全部または任意の一部を実行するようにしてもよいことは言うまでもない。  
【００９６】
ところで、上記の実施例で説明した各種の処理は、予め用意されたプログラムをコンピュータで実行することで実現できる。そこで、以下では、上記の実施例と同様の機能を有するプログラムを実行するコンピュータの一例を説明する。図２２は、検出プログラムを実行するコンピュータの一例を示す図である。なお、以下においては、実施例１における検出装置１００を例として説明するが、実施例３における検出装置３００についても同様のコンピュータにより実現できる。
【００９７】
図２２が示すように、コンピュータ２００は、各種演算処理を実行するＣＰＵ２０１と、データ入力を受け付ける入力装置２０２と、モニタ２０３とを有する。また、コンピュータ２００は、記憶媒体からプログラム等を読み取る媒体読取装置２０４と、各種装置と接続するためのインタフェース装置２０５と、他の情報処理装置等と有線または無線により接続するための通信装置２０６とを有する。また、コンピュータ２００は、各種情報を一時記憶するＲＡＭ２０７と、ハードディスク装置２０８とを有する。また、各装置２０１〜２０８は、バス２０９に接続される。  
【００９８】
ハードディスク装置２０８には、図５に示した距離取得部１３１、棚板検出部１３２、深度算出部１３３、在庫判定部１３４及び出力部１３５の各処理部と同様の機能を有する検出プログラムが記憶される。また、ハードディスク装置２０８には、測距データＤＢ１２１、深度ＤＢ１２２及び棚割ＤＢ１２３、並びに検出プログラムを実現するための各種データが記憶される。入力装置２０２は、例えば、コンピュータ２００の管理者から管理情報等の各種情報の入力を受け付ける。モニタ２０３は、例えば、コンピュータ２００の管理者に対して管理情報の画面や各種画面を表示する。インタフェース装置２０５は、例えば、図５に示した外部Ｉ／Ｆ１１０と同様の機能を有し、例えばカメラや測距センサ等のセンサを有する外部の装置等と接続され、各種情報をやりとりする。通信装置２０６は、例えば、図５に示した外部Ｉ／Ｆ１１０と同様の機能を有し、例えば外部のデータベース等と接続され、各種情報をやりとりする。  
【００９９】
ＣＰＵ２０１は、ハードディスク装置２０８に記憶された各プログラムを読み出して、ＲＡＭ２０７に展開して実行することで、各種の処理を行う。また、これらのプログラムは、コンピュータ２００を図１に示した距離取得部１３１、棚板検出部１３２、深度算出部１３３、在庫判定部１３４及び出力部１３５として機能させることができる。  
【０１００】
なお、上記の検出プログラムは、必ずしもハードディスク装置２０８に記憶されている必要はない。例えば、コンピュータ２００が読み取り可能な記憶媒体に記憶されたプログラムを、コンピュータ２００が読み出して実行するようにしてもよい。コンピュータ２００が読み取り可能な記憶媒体は、例えば、ＣＤ−ＲＯＭやＤＶＤディスク、ＵＳＢ（Universal  Serial  Bus）メモリ等の可搬型記録媒体、フラッシュメモリ等の半導体メモリ、ハードディスクドライブ等が対応する。また、公衆回線、インターネット、ＬＡＮ等に接続された装置にこの検出プログラムを記憶させておき、コンピュータ２００がこれらから検出プログラムを読み出して実行するようにしてもよい。
【符号の説明】
【０１０１】
１００、３００  検出装置
１１０  外部Ｉ／Ｆ
１２０、３２０  記憶部
１２１、３２１  測距データＤＢ
１２２、３２２  深度ＤＢ
１２３  棚割ＤＢ
１３０、３３０  制御部
１３１、３３１  距離取得部
１３２  棚板検出部
１３３、３３３  深度算出部
１３４、３３４  在庫判定部
１３５  出力部
【図１】
2019096162.tif 000003
【図２】
2019096162.tif 000004
【図３】
2019096162.tif 000005
【図４】
2019096162.tif 000006
【図５】
2019096162.tif 000007
【図６】
2019096162.tif 000008
【図７】
2019096162.tif 000009
【図８】
2019096162.tif 000010
【図９Ａ】
2019096162.tif 000011
【図９Ｂ】
2019096162.tif 000012
【図９Ｃ】
2019096162.tif 000013
【図１０】
2019096162.tif 000014
【図１１】
2019096162.tif 000015
【図１２】
2019096162.tif 000016
【図１３】
2019096162.tif 000017
【図１４】
2019096162.tif 000018
【図１５】
2019096162.tif 000019
【図１６】
2019096162.tif 000020
【図１７】
2019096162.tif 000021
【図１８】
2019096162.tif 000022
【図１９】
2019096162.tif 000023
【図２０】
2019096162.tif 000024
【図２１】
2019096162.tif 000025
【図２２】
2019096162.tif 000026