以下、図面を参照して、本発明の実施形態について説明する。
図1は、本実施形態に係る光学式認識コード読取装置を含む情報管理システム(ネットワークシステム)の構成の一例を示す。図1に示すように、情報管理システムは、光学式認識コード読取装置10及び情報管理装置20を含む。光学式認識コード読取装置10及び情報管理装置20は、例えばインターネットのようなネットワーク30を介して互いに通信可能に接続されている。
光学式認識コード読取装置10は、例えばスマートフォンまたはタブレット端末等のスマートデバイスであるが、他の情報処理装置であってもよい。光学式認識コード読取装置10は、カメラを備え、後述する光学式認識コードを読み取る(認識する)機能を有する。
情報管理装置20は、光学式認識コード読取装置10による光学式認識コードの読み取り結果を管理する機能を有するサーバ装置である。なお、情報管理装置20は、各種クラウドコンピューティングサービスを提供するサーバ装置であってもよい。
図2は、図1に示す光学式認識コード読取装置10のハードウェア構成の一例を示す。ここでは、光学式認識コード読取装置10が例えばスマートフォンであるものとして説明する。
図2に示すように、光学式認識コード読取装置10は、バス11に接続された、不揮発性メモリ12、CPU13、メインメモリ14、無線通信デバイス15、ディスプレイ16、タッチパネル17及びカメラ18等を備える。
不揮発性メモリ12は、各種プログラムを格納する。不揮発性メモリ12に格納されている各種プログラムには、例えばオペレーティングシステム(OS)及び光学式認識コード読取装置10上で起動される各種アプリケーションプログラム等が含まれる。
CPU13は、例えば不揮発性メモリ12に格納されている各種プログラムを実行する。なお、CPU13は、光学式認識コード読取装置10全体の制御を司るものである。
メインメモリ14は、例えばCPU13が各種プログラムを実行する際に必要とされるワークエリア等として使用される。
無線通信デバイス15は、外部のサーバ装置(例えば、情報管理装置20)等との通信を制御する機能を有する。
ディスプレイ16は、例えば表示パネル及び表示制御を行う駆動回路を備えることにより、各種データ等を表示する機能を有する。なお、カメラ18によって撮像された画像は、このディスプレイ16に表示することができる。
タッチパネル17は、ディスプレイ16の前面に重畳して配置され、例えばユーザの指先等で指定(タッチ)された画面上の位置を検出する機能を有する。これにより、タッチパネル17は、光学式認識コード読取装置10に対するユーザの各種操作を検知することができる。
カメラ18は、各種画像を撮像する機能を有する撮像装置(撮像デバイス)である。光学式認識コード読取装置10がスマートフォンである場合、カメラ18は、例えば当該光学式認識コード読取装置10本体の背面(ディスプレイ16及びタッチパネル17が配置されている面の反対の面)に設けられる。
図3は、図1に示す情報管理装置20のハードウェア構成の一例を示す。図3に示すように、情報管理装置20は、バス21に接続された、不揮発性メモリ22、CPU23、メインメモリ24及び無線通信デバイス25等を備える。
不揮発性メモリ22は、各種プログラムを格納する。不揮発性メモリ22に格納されている各種プログラムには、例えばオペレーティングシステム(OS)及び情報管理装置20上で起動されるサーバプログラム等が含まれる。
CPU23は、例えば不揮発性メモリ22に格納されている各種プログラムを実行する。なお、CPU23は、情報管理装置20全体の制御を司るものである。
メインメモリ24は、例えばCPU23が各種プログラムを実行する際に必要とされるワークエリア等として使用される。
無線通信デバイス25は、例えば光学式認識コード読取装置10等との通信を制御する機能を有する。
なお、図3においては不揮発性メモリ22及びメインメモリ24のみが示されているが、情報管理装置20は、HDD(Hard Disk Drive)及びSSD(Solid State Drive)等の他の記憶装置を備えていてもよい。
ここで、本実施形態に係る光学式認識コード読取装置10は上記したように光学式認識コードを読み取ることが可能であるが、本実施形態における光学式認識コードは、例えば複数のエレメントが線状(棒状)に形成されたコード(以下、カラービットコードと表記)を含む。このカラービットコードは、例えば3以上の色彩のうちの1の色彩が付されたセル(エレメント)が複数配列された構成を有する。このカラービットコードによれば、複数配列された各セルに付されている色彩の遷移によって識別情報(例えば、ID等)のような特定のデータを表すことができる。
以下の説明においては、本実施形態に係る光学式認識コード読取装置10によって読み取られる光学式認識コードはカラービットコードであるものとして説明する。
図4を参照して、カラービットコードについて詳細に説明する。なお、図4においては、便宜的にカラービットコードの一部分のみが示されている。
図4に示すように、カラービットコードは、例えば赤色、緑色及び青色のうちの1の色彩が付されたセル50が複数配列されて構成されている。図4において、赤色はR、緑色はG、青色はBとして示されている。なお、図4においては、説明の便宜上、カラービットコードに3色の色彩(赤色、緑色及び青色)が用いられている例が示されているが、各セルに付されている色彩の遷移を識別することができるのであれば、4色以上の色彩を用いてカラービットコードが作成されていてもよい。
カラービットコードを構成するセル50は、1つの色彩が付される範囲または領域であり、種々の形状を有することができる。図4に示す例では、複数のセル50の各々は四角形状であるが、例えば丸形状または三角形状等であっても構わない。このような複数のセル50を線状(直線状または曲線状)に配列することによってカラービットコードは作成される。
なお、カラービットコードは上記したように色彩の遷移によって特定のデータを表すものであるから、当該カラービットコードにおいて、隣接するセル50同士には同色は付されず、異なる色彩が付される。カラービットコードはこのような条件等に基づいて作成される。
また、カラービットコードを構成する複数のセル50には、端点セルが含まれる。端点セルは、線状に連なったセル群から構成されるカラービットコードの端点(両端)に位置するセルである。カラービットコード内にあるセルは、2つのセルと隣接するが、端点セルは1つのセルとしか隣接しない。このような端点セルは必ずカラービットコード内に2つある。また、このような2つの端点セルに付される色彩は必ず異なるものとする。これにより、端点セルの各々に付されている色彩によって、当該端点セルが始点となるセル(以下、始点セルと表記)であるか終点となるセル(以下、終点セルと表記)であるかを判定することが可能である。
上記したようなカラービットコードによれば例えば3色の色彩の遷移(配列)によって特定のデータを表すことができるため、当該カラービットコードにおける各色彩の占める領域の大きさ及び形状の制限は緩く、当該カラービットコードが例えば凹凸のある表面や柔軟性のある素材上に付されている場合やデジタルサイネージ等の表示装置に表示されている場合であっても、高い読み取り精度を実現することができる。
ここで、本実施形態に係る光学式認識コード読取装置10及び情報管理装置20(を含む情報管理システム)は、例えば物品を管理するために用いられる。この場合、親コードとして用いられるカラービットコード(第1光学式認識コード)及び子コードとして用いられるカラービットコード(第2光学式認識コード)を用意するものとする。
親コードとして用いられるカラービットコード(以下、単に親コードと表記)は、親コードであることを識別可能な識別情報を表すコードであり、例えば管理対象の物品が配置される棚等(以下、物品棚と表記)に付される。すなわち、親コードは、後述する物品棚において形成される空間を識別するために用いられる。
一方、子コードとして用いられるカラービットコード(以下、単に子コードと表記)は、子コードであることを識別可能な識別情報を表すコードであり、例えば親コードが付された物品棚に配置される物品に付される。すなわち、子コードは、物品棚に配置される物品を識別する(管理する)ために用いられる。
なお、親コード及び子コードは、それぞれ複数用意されている。複数の親コードは、1つの物品棚に付されてもよいし、複数の物品棚に付されてもよい。複数の子コードの各々は、それぞれ1つの物品に付される(すなわち、1つの物品に対して1つの子コードが付される)。また、複数の親コード及び複数の子コードは、それぞれが表す識別情報は異なるが、後述する補正処理のために当該コードを構成するセルサイズは同一であることが望ましい。なお、複数の親コード及び複数の子コード(カラービットコード)の各々を構成するセルの数は同一である。
また、親コード及び子コードは、単一のコードで一つの情報を構成する必要はなく、複数のコードで一つの情報を構成するものであってもよい。
以下、本実施形態における情報管理システムの機能構成について説明する。まず、図5は、光学式認識コード読取装置10の機能構成の一例を示すブロック図である。
図5に示すように、光学式認識コード読取装置10は、画像取得部101、デコード処理部102、距離算出部103、管理情報生成部104、格納部105及び管理情報出力部106を含む。
本実施形態において、画像取得部101、デコード処理部102、距離算出部103、管理情報生成部104及び管理情報出力部106は、例えば図2に示すCPU13(つまり、光学式認識コード読取装置10のコンピュータ)が不揮発性メモリ12に格納されている所定のアプリケーションプログラム(以下、物品管理アプリケーションと表記)を実行すること、つまり、ソフトウェアによって実現されるものとする。なお、この物品管理アプリケーションは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、この物品管理アプリケーションは、例えばネットワーク30を介して光学式認識コード読取装置10にダウンロードされても構わない。また、本実施形態において、格納部105は、例えば図2に示す不揮発性メモリ12等によって実現される。
画像取得部101は、光学式認識コード読取装置10に備えられているカメラ18によって撮像された画像を取得する。画像取得部101によって取得された画像は、色情報の最小単位である複数の画素(ピクセル)から構成される。
なお、本実施形態において、画像取得部101によって取得される画像には、上記した物品棚及び当該物品棚に配置されている複数の物品等が含まれる。なお、画像に含まれる物品棚には複数の親コードが付されており、当該画像に含まれる複数の物品の各々にはそれぞれ子コードが付されている。
デコード処理部102は、画像取得部101によって取得された画像に含まれる複数の親コード及び複数の子コードを読み取る(デコードする)処理を実行する。なお、画像に含まれる複数の親コード及び複数の子コードの各々は上記したカラービットコードであり、デコード処理部102によるデコードは、当該カラービットコードにおける色彩の遷移(つまり、当該カラービットコードを構成する複数のセルの各々に付されている色彩の遷移)に基づいて行われる。これにより、デコード処理部102は、画像に含まれるカラービットコード(複数の親コード及び複数の子コードの各々)によって表される識別情報を取得することができる。
本実施形態においては、上記したデコード処理部102によって取得される識別情報に基づいて、画像に含まれる複数のカラービットコードの各々が親コードであるか子コードであるかを判別することができる。なお、各識別情報を表すカラービットコードが親コードであるか子コードであるか(つまり、識別情報とカラービットコードの種類との対応関係)は予め定められており、当該対応関係を示す情報(以下、対応関係情報と表記)は例えば格納部105等に予め格納されているものとする。
ここで、本実施形態においては、画像中の親コードの位置と子コードの位置との間の距離を物品管理に利用する。このため、距離算出部103は、デコード処理部102によって識別情報が取得された親コード及び子コードの画像中の位置に基づいて、当該親コード及び子コード間の距離を算出する。なお、親コード及び子コード間の距離は、例えば画像取得部101によって取得された画像における座標値等を用いて表すことができる。
管理情報生成部104は、距離算出部103によって算出された親コード及び子コード間の距離に基づいて、当該親コード及び子コードを紐づける。これにより、管理情報生成部104は、親コード及び子コードが紐づけられたことを示す管理情報(つまり、子コードに対して親コードが対応づけられた管理情報)を生成する。なお、管理情報生成部104によって生成される管理情報においては、複数の子コードの各々に対して、1つの親コードが対応づけられる(紐づけられる)。すなわち、紐づけられる親コード及び子コードの関係は、1対多の関係となる。なお、本実施形態においては、親コード及び子コードが1対多の関係で紐づけられるものとして説明するが、当該親コード及び子コードの関係は多対多とすることも可能である。管理情報生成部104によって生成された管理情報は、格納部105に格納される。
管理情報出力部106は、格納部105に格納された管理情報を情報管理装置20に出力(送信)する。なお、管理情報出力部106は、管理情報をディスプレイ16に出力(表示)することも可能である。
図6は、情報管理装置20の機能構成の一例を示すブロック図である。図6に示すように、情報管理装置20は、受信部201、格納部202、差分算出部203、送信部204を含む。本実施形態において、受信部201、差分算出部203及び送信部204は、例えば図3に示すCPU23(つまり、情報管理装置20のコンピュータ)が不揮発性メモリ22に格納されているサーバプログラムを実行すること、つまり、ソフトウェアによって実現されるものとする。なお、このサーバプログラムは、コンピュータ読み取り可能な記憶媒体に予め格納して頒布可能である。また、このサーバプログラムは、例えばネットワーク30を介して情報管理装置20にダウンロードされても構わない。また、本実施形態において、格納部202は、例えば図3に示す不揮発性メモリ22または他の記憶装置等によって実現される。
受信部201は、上記した光学式認識コード読取装置10(管理情報出力部106)から送信された管理情報を受信する。
ここで、格納部202には、例えば過去に光学式認識コード読取装置10において生成された管理情報が蓄積されているものとする。
差分算出部203は、受信部201によって受信された管理情報と格納部202に格納されている過去の管理情報との差分を算出する。
送信部204は、差分算出部203によって算出された差分を示す差分情報を光学式認識コード読取装置10に送信する。
送信部204によって送信された差分情報は、光学式認識コード読取装置10において受信され、例えばディスプレイ16に表示される。
なお、受信部201によって受信された管理情報は、例えば当該管理情報が受信された日時等に対応づけて格納部202に格納(蓄積)される。上記した過去の管理情報についても同様に、当該管理情報が受信された日時に対応づけて格納部202に格納されているものとする。
次に、図7のフローチャートを参照して、光学式認識コード読取装置10の処理手順の一例について説明する。
まず、物品棚に配置されている物品を管理する場合、光学式認識コード読取装置10(情報管理システム)のユーザは、当該光学式認識コード読取装置10を操作することによって上記した物品管理アプリケーションを起動する。この場合、物品棚には複数の親コードが付されており、当該物品棚に配置されている複数の物品の各々には子コードが付されているものとする。
物品管理アプリケーションが起動されると、光学式認識コード読取装置10に備えられているカメラ18が起動され、ユーザは、少なくとも1つの物品棚(親コード)と、当該物品棚に配置されている複数の物品(子コード)を含む画像を撮影することができる。
これにより、画像取得部101は、カメラ18を用いてユーザによって撮影された物品棚及び複数の物品を含む画像を取得する(ステップS1)。以下、ステップS1において取得された画像を、便宜的に、対象画像と称する。
図8は、対象画像の一例を示す。図8に示すように、対象画像300には、物品棚301及び物品302を含む複数の物品が含まれている。
物品棚301には、例えば親コード311が付されている。なお、親コード311は、物品棚301に複数の物品302が配置された状態の画像が撮像された際に、親コード311全体が当該画像に含まれる位置に付されている。
ここで、図8に示す対象画像300に含まれる物品棚301は、物品302を含む複数の物品を収納する複数の空間を形成するように構成されている。図8に示す例では、このような物品棚301に対して、当該物品棚301において形成されている空間毎に複数の親コードが付されている。
また、物品302には、子コード312が付されている。なお、子コード312は、親コード311と同様に、物品棚301に物品302が配置された状態の画像が撮像された際に、子コード312全体が当該画像に含まれる位置に付されている。なお、図8に示す物品302以外の物品にも同様に、子コードが付されている。
再び図7に戻ると、デコード処理部102は、対象画像に対する画像解析処理を実行する(ステップS2)。ここで、上記した対象画像に含まれる親コード及び子コードは全てカラービットコードである。このため、ステップS2においては、対象画像に含まれるカラービットコードに対するデコード処理(読み取り処理)が実行される。以下、このデコード処理について具体的に説明する。
まず、デコード処理部102は、対象画像を各色領域に区分けする処理(以下、色領域区分け処理と表記)を実行する。ここで、一般的に対象画像は背景を含めて様々な色彩(を表示する画素)で構成されており、それらのパターンも様々である。このため、色領域区分け処理においては、この対象画像中の色彩を色空間の中で赤色、緑色、青色及び無彩色に区分けし、各画素の色彩をいずれかの領域に当てはめる処理(均色化処理)が行われる。すなわち、色領域区分け処理においては、対象画像中の各画素に対するラベリング処理が実行される。
なお、上記した赤色、緑色及び青色はカラービットコードを構成する各セルに付される色彩として定義された色彩(以下、構成色と表記)であるが、色領域区分け処理においては、例えば照明、彩色、退色等を考慮して色空間上でこれらの構成色と認定することができる一定の範囲に包含される色彩であれば、当該色彩(の画素)を構成色として区分けするものとする。すなわち、例えば赤色の領域を区分けする場合には、当該赤色を中心とする一定の範囲の色彩を表示する画素の全てを赤色の領域として認定する。緑色及び青色の領域を区分けする場合についても同様である。
また、無彩色とは、色領域区分け処理において赤色、緑色及び青色として認定される色彩以外の色彩である。
また、上記したように対象画像に対しては均色化処理が行われるが、一般的に当該対象画像にはノイズ成分が混入している場合が多い。このノイズに相当する微小部位の色彩異変に対しては例えばその周囲の色彩に合わせる、または、平均化する等のノイズ除去処理を行うことによって、当該ノイズを除去することが好ましい。
次に、デコード処理部102は、色領域区分け処理によって区分けされた各色領域に基づいて複数の構成色(赤色、緑色及び青色)の領域が配列されてなるカラービットコードの領域(以下、コード領域と表記)を切り出す処理(以下、コード切り出し処理と表記)を実行する。このコード切り出し処理においては、各色領域の周囲の色彩(例えば、他の構成色の領域及び無彩色の領域の配置等)やカラービットコードを構成するセルの数等に基づいてコード領域が切り出される。コード切り出し処理によって切り出されるコード領域は、例えば画像上における座標値(XY座標値)によって表される。
なお、上記した色領域区分け処理及びコード切り出し処理については、例えば特開2008−287414号公報等に開示されているため、ここではその詳細な説明については省略する。
次に、デコード処理部102は、コード切り出し処理によって対象画像から切り出されたコード領域において配列されている複数の色領域における色彩の遷移(つまり、当該複数の色領域の順番)に基づいてカラービットコードをデコードする。これによれば、カラービットコードにおける例えば始点セル(カラービットコードの開始を表す端点セル)から終点セル(カラービットコードの終了を表す端点セル)までの色彩の遷移によって表される識別情報が取得される。
なお、上記したデコード処理は、対象画像に含まれるカラービットコードの各々に対して実行される。
ステップS2の処理が実行されると、デコード処理部102は、当該ステップS2の処理において取得された識別情報の各々に基づいて、対象画像に含まれる各カラービットコードの種類及び位置を特定する(ステップS3)。
なお、本実施形態におけるカラービットコード(の種類)には親コード及び子コードが含まれるが、識別情報とカラービットコードの種類との対応関係は上記した対応関係情報において予め定められている。このため、デコード処理部102は、デコード処理部102によって取得された識別情報及び対応関係情報から、当該識別情報を表すカラービットコードが親コードであるか子コードであるか(つまり、カラービットコードの種類)を特定することができる。
また、カラービットコードの位置は、上記したコード切り出し処理によって切り出されたコード領域(の座標値)に基づいて特定される。具体的には、デコード処理部102は、当該デコード処理部102によって取得された識別情報を表すカラービットコードのコード領域の中心点の座標値を、当該カラービットコードの位置として特定する。ここでは、コード領域の中心点の座標値をカラービットコードの位置とするものとして説明したが、例えばコード領域に含まれるカラービットコードにおける始点セルまたは終点セルの位置(座標値)等の他の位置を当該カラービットコードの位置としてもよい。
ステップS3においては、上記した処理がデコード処理部102によって取得された識別情報(つまり、当該識別情報を表すカラービットコード)毎に実行されることによって、対象画像に含まれる全てのカラービットコードについて親コードであるか子コードであるかを特定するとともに、当該特定された親コード及び子コードの各々の位置を特定することができる。なお、ステップS1において上記した図8に示す対象画像が取得されている場合、ステップS3においては、親コード311を含む複数の親コード及び子コード312を含む複数の子コードの位置が特定される。
ここで、対象画像における横方向をX軸方向、縦方向をY軸方向とすると、特定の物品が他の物品と比較してZ方向(つまり、奥行き方向)にずれた位置に配置されていた場合には、当該物品に付されている子コード(のコード領域)に基づいて特定された位置は他のコードの位置に対して正確な位置であるとはいえず、後述する親コードとの適切な距離を算出することができない可能性がある。
このため、上記したステップS3において子コードの位置を特定する際には、当該子コードのコード領域の座標値を補正することが好ましい。
以下、コード領域の座標値を補正する子コードを補正対象コードとして当該補正処理について説明する。
本実施形態においては親コード及び子コードを構成するセルの形状及びサイズが同一であるため、例えば対象画像に含まれる補正対象コードのコード領域において隣接するセル間距離(当該対象子コードを構成する各セルの座標値)と他のコードのコード領域において隣接するセル間距離(当該他のコードを構成する各セルの座標値)から当該補正対象コードと他のコードとの大小関係(遠近)を判別することができる。
これにより、補正対象コードが他のコードよりも小さいと判別された場合には、当該補正対象コードが他のコードよりも奥行き方向にずれた位置に配置されている(つまり、補正対象コードの位置にZ軸方向の差異がある)と推定して、他のコードのコード領域の座標値(サイズ)に基づいて当該補正対象コードのコード領域の座標値(サイズ)を補正する。具体的には、補正対象コード(のコード領域)のサイズが他のコードと同程度になるように、当該補正対象コードのコード領域の座標値が補正される。
これによれば、補正対象コードが他のコードと同一面に配置されているものとして扱うことができる。補正対象コードの位置は、このように補正された当該補正対象コードのコード領域の座標値に基づいて特定される。
ここでは、補正対象コードが子コードであるものとして説明したが、物品棚の形状等によっては、当該物品棚に付された親コードを補正対象コードとしてもよい。
次に、対象画像に含まれる複数の子コード(つまり、デコード処理部102によって取得された識別情報を表すカラービットコードのうちの子コード)の各々について、以下のステップS4及びS5の処理が実行される。ここでは、このステップS4及びS5の処理が実行される子コードを対象子コードと称する。
まず、距離算出部103は、ステップS3において特定された複数の親コードの各々の位置と対象子コードの位置とに基づいて、当該対象子コードから当該複数の親コードの各々までの距離を算出する(ステップS4)。
次に、管理情報生成部104は、ステップS4において算出された対象子コードから複数の親コードの各々までの距離に基づいて、当該複数の親コードの中から当該距離が最も近い(短い)親コードを特定し、対象子コードと当該特定された親コードとを紐づける(ステップS5)。
なお、このステップS5においては、親コードの認識(子コードとの紐づけ)に対する信頼性及び正確性を向上させるための親コード認識判定処理が実行されるものとする。例えば図8に示す対象画像300に含まれている物品棚301は上記したように物品302を含む複数の物品を収納する複数の空間を形成するように構成されたものであるが、単に対象子コードと最も近い親コードを当該対象子コードと紐づけた場合には、同一の空間内に配置されている対象子コードと他の子コードとが異なる親コードと紐づけられる場合があり、物品管理の観点からは好ましくない。更に、例えば物品棚301が他の物品棚と並べて配置されているような場合において、物品棚301に配置されている物品302が当該他の物品棚に付されている親コードと紐づけられることも避ける必要がある。
このため、例えば対象子コードと紐づける親コードは、例えば対象画像(画面)中の特定の領域に含まれる(配置されている)必要があるものとする。なお、特定の領域としては、例えば対象画像中の中央に位置する領域、左側に位置する領域、右側に位置する領域、上側に位置する領域、下側に位置する領域等が予め設定されていればよい。なお、図8に示す対象画像300においては、例えば対象画像300中の中央に位置する領域が特定の領域として予め設定されているものとする。
上記した特定の領域の幅は、例えば対象画像(画面)の1/4または1/2等によって設定可能としてもよい。
更に、上記したカラービットコードを構成する複数のセルは、始点セル及び終点セルを含む。上記したステップS2における画像解析処理(デコード処理)においては親コードを構成する始点セル及び終点セル(つまり、親コードの向き)を認識することができるため、当該親コードと紐づけ可能な子コードの位置を当該親コードの向きに基づいて限定するようにしてもよい。
具体的には、例えば対象画像に含まれる親コードが当該対象画像におけるX軸方向(横方向)に沿うように配置されており、当該親コードを構成する始点セルが左側、終点セルが右側に位置する場合には、この親コードは、対象画像において当該親コードの上側(の領域)に配置されている子コードのみと紐づけられるようにすることができる。なお、この親コードの下側の領域に配置されている子コードは、当該親コードとの距離が他の親コードよりも近い場合であっても、当該親コードと紐づけられることはない。
一方、親コードを構成する始点セルが右側、終点セルが左側に位置する場合には、対象画像において当該親コードの下側(の領域)に配置されている子コードのみと紐づけられるようにすることが可能である。
更に、例えば対象画像に含まれる親コードが当該対象画像におけるY軸方向(縦方向)に沿うように配置されている場合には、当該親コードの向き(始点セル及び終点セルの位置)に基づいて、当該親コードの右側または左側に位置する子コードとのみ紐づけられるようにすることも可能である。
なお、上記した親コード認識判定処理により、対象子コードと紐づけられる親コードが存在しない場合には、当該対象コードはいずれの親コードとも紐づけられない。
本実施形態においては、このような親コード認識判定処理が実行されることによって適切であると認識された親コードに対して対象子コードを紐づける(つまり、適切でない親コードを除外する)ことが可能となる。
ステップS5の処理が実行されると、対象画像に含まれる全ての子コードに対してステップS4及びS5の処理が実行されたか否かが判定される(ステップS6)。
全ての子コードに対して処理が実行されていないと判定された場合(ステップS6のNO)、上記したステップS4に戻って処理が繰り返される。この場合、ステップS4及びS5の処理が実行されていない子コードを対象子コードとして当該処理が実行される。
一方、全てのコードに対して処理が実行されたと判定された場合(ステップS6のYES)、管理情報生成部104は、上記した対象画像に含まれる複数の子コードの各々に対して1つの親コードが対応づけられた(紐づけられた)管理情報を生成する(ステップS7)。なお、管理情報は、例えば複数の子コード(カラービットコード)の各々によって表される識別情報と当該子コードと紐づけられた親コード(カラービットコード)によって表される識別情報とを対応づけて含むようなデータ構造を有するものであればよいが、互いに紐づけられた当該子コードと当該親コードとの対応関係を示すものであればよい。
ステップS7の処理が実行されると、管理情報出力部106は、当該ステップS7において生成された管理情報(つまり、複数の子コードの各々に対して1つの親コードが対応づけられた管理情報)をディスプレイ16に出力する。これによれば、ディスプレイ16に管理情報が表示される(ステップS8)。
なお、本実施形態において、上記したステップS1〜S8の処理はリアルタイムで実行されるものとする。
ここで、図9は、管理情報が表示された光学式認識コード読取装置10(ディスプレイ16)の画面(以下、管理情報確認画面と表記)の一例を示す。ここでは、対象画像が図8に示す対象画像300である場合を想定している。
上記したように管理情報は複数の子コードの各々が1つの親コードに対応づけられた情報であるところ、当該親コードと当該子コードとは、1対多の関係にある。
このため、図9に示す管理情報確認画面400では、対象画像300に含まれる1つの親コード及び当該親コードと対応づけられている(紐づけられている)複数の子コードに同一の色彩が付されて表示されている。なお、親コード(及び当該親コードと対応づけられている複数の子コード)毎に、異なる色彩が付されている。
これによれば、ユーザは、例えば子コード312が付されている物品302が親コード311の上側に位置する空間に配置されて管理されていることを容易に把握することができる。物品302以外の物品についても同様である。
なお、上記したように親コードと紐づけられていない子コードが存在する場合、当該子コードには例えば黒色が付される(つまり、当該子コードは黒表示される)ものとする。
更に、管理情報確認画面400においては、対象画像300に含まれる親コード311と重畳する位置に、当該親コード311と対応づけられている子コードの数が表示されている。図9に示す例では、親コード311と対応づけられている子コードの数として9が表示されている。
これによれば、ユーザは、例えば親コード311の上側に位置する空間に配置(管理)されている物品の数が9であることを容易に把握することができる。親コード311以外の親コード(つまり、親コード311の上側に位置する空間以外の空間)についても同様である。
なお、図9に示す管理情報確認画面400のような管理情報の表示は例えば例えばAR(Augmented Reality)技術を利用して実現可能であるが、このような管理情報の表示態様は一例であり、当該管理情報は他の態様で表示されても構わない。図9においては対象画像300上に管理情報を表示する例を示しているが、当該管理情報は、例えば親コードと子コードとの対応関係を表す表形式として表示されてもよい。また、例えば子コードによって表される識別情報に基づいて特定される当該子コードが付されている物品の物品名等を表示するように、管理情報を適宜加工して表示しても構わない。
ここで、管理情報確認画面400には、保存ボタン401が設けられている。ユーザは、管理情報確認画面400に表示されている管理情報(つまり、親コードと子コードとの対応関係)を確認し、当該対応関係(紐づけ結果)に誤りがないと判断した場合には、管理情報確認画面400に対して保存ボタン401を押下する操作を行うことができる。
再び図7に戻ると、ユーザからの管理情報の保存指示があるか否かが判定される(ステップS9)。ステップS9においては、上記した図9に示す管理情報確認画面400に対して保存ボタン401を押下する操作がユーザによって行われた場合に、ユーザからの管理情報の保存指示があると判定される。一方、管理情報確認画面400に対して保存ボタン401を押下する操作がユーザによって行われていない場合には、ユーザからの管理情報の保存指示がないと判定される。
ユーザからの管理情報の保存指示がないと判定された場合(ステップS9のNO)、ユーザは、管理情報確認画面400に表示されている管理情報に誤りがあると判断していることになる。この場合、ユーザは、例えば光学式認識コード読取装置10に備えられるカメラ18の角度を変えるまたは物品棚に配置されている物品の位置を変える等によって、再度物品棚及び物品を撮影するものとする。この場合には、上記したステップS1に戻って処理が繰り返される。
一方、ユーザからの管理情報の保存指示があると判定された場合(ステップS9のYES)、管理情報生成部104は、ステップS7において生成された管理情報(つまり、ステップS8において表示された管理情報)を格納部105に保存(格納)する(ステップS10)。なお、ステップS10の処理が実行された場合、図10に示す画面が光学式認識コード読取装置10(ディスプレイ16)に表示され、管理情報の保存処理が完了した旨がユーザに対して通知される。
ここで、上記したように管理情報が格納部105に保存されると、例えばユーザの操作に応じて、格納部105に保存されている管理情報の一覧画面(以下、管理情報一覧画面と表記)を光学式認識コード読取装置10(のディスプレイ16)に表示することができる。
図11は、管理情報一覧画面の一例を示す。図11に示す管理情報一覧画面500には、上記したようにステップS9において格納部105に保存された管理情報が表示されている。
図11に示すように、管理情報一覧画面500には、例えば管理情報が生成(保存)された日時及び当該管理情報を生成するために対象画像から読み取られたカラービットコードの数(読み取りコード総数)が表示されている。
なお、読み取りコード総数は例えば対象画像から読み取られた子コードの総数であるが、管理情報一覧画面500には、例えば親コード及び子コードの総数が表示されてもよいし、親コードの数及び子コードの数がそれぞれ別個に表示されてもよい。
また、管理情報一覧画面500には、一括送信ボタン501及び一括削除ボタン502が設けられている。一括送信ボタン501は、管理情報一覧画面500に表示されている管理情報を一括して情報管理装置20に送信する(つまり、アップロードする)ためのボタンである。すなわち、管理情報一覧画面500に表示される管理情報は例えば情報管理装置20に送信されていない管理情報であり、情報管理装置20に送信されていない管理情報が格納部105に複数保存されている場合には、管理情報一覧画面500には複数の管理情報が表示される。
一括削除ボタン502は、管理情報一覧画面500に表示されている管理情報を一括して格納部105から削除するためのボタンである。なお、一括削除ボタン502が押下された場合には、例えば格納部105に保存されている管理情報(管理情報一覧画面500に表示されている管理情報)が当該格納部105から削除される。
なお、図11に示す例では、一括送信ボタン501及び一括削除ボタン502が設けられているものとして説明したが、管理情報を個別に送信するための個別送信ボタンや当該管理情報を個別に削除するための個別削除ボタン等が設けられていてもよい。なお、一括送信ボタン501及び一括削除ボタン502と、個別送信ボタン及び個別削除ボタンとは、例えば光学式認識コード読取装置10の画面をスライドさせることによって切り替えることができるようにしてもよい。
再び図7に戻ると、ユーザからの管理情報の送信指示があるか否かが判定される(ステップS11)。ステップS11においては、上記した図11に示す管理情報一覧画面500に対して一括送信ボタン501を押下する操作がユーザによって行われた場合に、ユーザからの管理情報の送信指示があると判定される。一方、管理情報一覧画面500に対して一括送信ボタン501を押下する操作がユーザによって行われていない場合には、ユーザからの管理情報の保存指示がないと判定される。
ユーザからの管理情報の送信指示があると判定された場合(ステップS11のYES)、管理情報出力部106は、当該管理情報(管理情報一覧画面500に表示されている管理情報)を格納部105から取得し、当該取得された管理情報を無線通信デバイス15を介して情報管理装置20に送信する(ステップS12)。なお、ステップS12の処理が実行された場合、図12に示す画面が光学式認識コード読取装置10(ディスプレイ16)に表示され、管理情報の送信処理(一括送信)が完了した旨がユーザに対して通知される。
一方、ユーザからの管理情報の送信指示がないと判定された場合(ステップS12のNO)、ステップS12の処理は実行されず、図7に示す処理は終了される。
なお、図7に示す処理においてはユーザからの管理情報の送信指示に基づいて管理情報を情報管理装置20に送信するものとして説明したが、ステップS12の処理(つまり、当該管理情報の送信処理)は、例えばステップS9においてユーザからの管理情報の保存指示があると判定された場合に自動的に実行されてもよい。この場合、ステップS11の処理は省略されるが、ステップS10の処理は、実行されてもよいし、実行されなくてもよい。
更に、図7に示す処理においてはステップS5において1つの親コードが特定されるものとして説明したが、上記した親コード及び子コードの関係を複数の同一の親コード対複数の子コード(つまり、多対多)とする場合であっても、当該ステップS5において、対象子コードと複数の親コードの各々までの距離が近い親コードが特定され、更に親コード認識判定処理等に基づいて各子コードに対する親コードが特定されればよい。
ここで、本実施形態において、情報管理装置20は、上記したように光学式認識コード読取装置10から送信された管理情報を管理する機能を有するが、当該管理情報を利用して各種処理を実行することも可能である。
以下、図13のフローチャートを参照して、情報管理装置20の処理手順の一例について説明する。
上記した図7に示す処理が実行され、光学式認識コード読取装置10から管理情報が送信された場合、受信部201は、当該管理情報を受信する(ステップS21)。
ステップS21において受信された管理情報は、格納部202に格納される(ステップS22)。この場合、管理情報は、例えば当該管理情報が生成された日時に対応づけて格納部202に格納される。なお、管理情報に対応づけて格納部202に格納される日時は、例えば管理情報が受信部201によって受信された日時等であってもよい。以下の説明では、ステップS22において格納部202に格納された管理情報を、便宜的に、現在の管理情報と称する。
ここで、格納部202には、過去に図7に示す処理が実行されることによって光学式認識コード読取装置10から送信された管理情報(以下、過去の管理情報と表記)も蓄積されているものとする。なお、本実施形態における過去の管理情報とは、上記した物品棚(親コード)と物品(子コード)との過去の対応関係(紐づけの結果)を示す管理情報をいう。
この場合、差分算出部203は、格納部202に格納されている過去の管理情報を取得する(ステップS23)。なお、格納部202に複数の過去の管理情報が蓄積されている場合、ステップS23において取得される過去の管理情報は、例えば上記したステップS22において格納部202に格納された管理情報(つまり、現在の管理情報)に対応づけられている日時と最も近い日時に対応づけて当該格納部202に格納されている管理情報であるものとする。
ここでは、過去の管理情報が日時に基づいて取得されるものとして説明したが、差分算出部203は、日時以外の他の観点に基づいて過去の管理情報を取得してもよい。具体的には、格納部202に蓄積されている過去の管理情報の一覧を光学式認識コード読取装置10を介してユーザに提示し、当該ユーザによって指定された過去の管理情報がステップS23において取得されるようにしてもよい。
ステップS23の処理が実行されると、差分算出部203は、上記した現在の管理情報と過去の管理情報との差分を算出する(ステップS24)。
ステップS24の処理が実行されると、送信部204は、当該ステップS24において算出された差分を示す情報(以下、差分情報と表記)を無線通信デバイス25を介して光学式認識コード読取装置10に送信する(ステップS25)。
上記したステップS25において送信された差分情報は、光学式認識コード読取装置10において受信され、ディスプレイ16に表示することができる。
ここで、上記したように管理情報は複数の子コードの各々に対して1つの親コードを対応づけた情報であるところ、当該管理情報は、当該親コードが付された物品棚において子コードが付された物品が配置されている位置(当該物品が物品棚において形成されているいずれの空間に配置されているか)を示す情報であるといえる。このため、上記した差分情報(現在の管理情報と過去の管理情報との差分)が光学式認識コード読取装置10に表示された場合、当該光学式認識コード読取装置10のユーザは、当該差分情報を確認することによって、物品棚に配置されていた物品が持ち出されたことや当該物品棚において物品が移動されたこと等(つまり、過去の管理情報の時点から現在の管理情報の時点までの間に変化のあった物品)を把握することができる。
なお、本実施形態において、差分情報は上記した過去の管理情報の時点から現在の管理情報の時点までの間に変化のあった物品をユーザが把握することができる態様で表示されればよい。具体的には、例えば物品棚及び当該物品棚に配置されている物品を含む画像(つまり、過去または現在の対象画像)上で変化のあった物品に色彩を付して表示するようにしてもよいし、当該変化のあった物品に付されている子コードによって表される識別情報(または当該物品の物品名)等の一覧を表示するようなことも可能である。
また、図13に示す情報管理装置20の処理は一例であり、情報管理装置20は、差分を算出する処理に代えて、他の予め定められたデータ処理を実行するようにしてもよいし、例えば他のサーバ装置等と連携した処理を実行するようにしてもよい。
上記したように本実施形態においては、親コードとしての複数のカラービットコード(第1光学式認識コード)及び子コードとしての複数のカラービットコード(第2光学式認識コード)を含む画像を取得し、当該取得された画像に含まれる複数のカラービットコードを読み取ることによって、当該画像中における複数の親コードの位置及び複数の子コードの位置を特定する。また、本実施形態においては、特定された複数の親コードの位置及び複数の子コードの位置に基づいて、当該複数の子コードの各々に対して1つの親コードが対応づけられた管理情報を生成し、当該生成された管理情報を出力する。
ここで、例えば2つの親コードの間に挟まれるように配置された子コードを読み取ることによって物品を管理するようなシステム(以下、本実施形態の比較例と表記)があるが、このような本実施形態の比較例においては、一方向(例えば、X軸方向)の認識であるため、各コードを面で捉えることができず、全てのコードを高速に認識することが困難である。更に、本実施形態の比較例においては、読み取り作業としてパノラマ撮影等が必要な場合があるが、このような該読み取り作業は非常に煩雑である。
これに対して、本実施形態においては、親コードと子コードとの関係をXY平面(つまり、二次元領域)で放射線状に紐づけることによって例えば子コードが付された物品が雑多かつランダムに配置されている場合であっても、画像に含まれる全ての子コードを瞬時に認識する(親コードと紐づけて管理する)ことができる。更に、本実施形態においては、ユーザは親コード及び子コードを含む画像を撮影するのみでよく、読み取り作業が非常に簡単であることも利点である。
また、本実施形態においては、上記した本実施形態の比較例と比較して、論理的に広範囲のコード(親コード及び子コード)の位置を正確かつ高精度で認識することができる。
更に、本実施形態においては、例えばAR技術等を利用して管理情報(子コードの数等)を光学式認識コード読取装置10に表示する構成により、ユーザの目視による管理が容易となり、ヒューマンエラーの低減にも寄与する。
また、本実施形態においては親コード認識判定処理が実行されることによって、親コードの認識(親コード及び子コードのの紐づけ)に対する信頼性及び正確性を向上させることが可能である。なお、この親コード認識判定処理においては親コードの向きを用いるため、例えば縦向きの画像が撮像された場合及び横向きの画像が撮像された場合(つまり、画面の向き)等に影響されることなく、適切な親コード及び子コードの紐づけを実現することができる。
一般的に、雑多に配置される物品の在庫管理や入出庫管理の自動化は非常に困難であり、ユーザ(例えば、管理者)による目視と手作業によって管理される場合が多いが、本実施形態によれば、これらの管理を自動化することによって当該管理における正確性及び速度を改善することができるため、結果としてユーザの利便性を向上させることが可能となる。
なお、本実施形態においては親コードと子コードとが紐づけられるが、例えば1つの子コードに対して複数種類の情報(定義)を埋め込み、当該情報毎に親コードを紐づけるような構成としてもよい。このような構成によれば、個々の子コードを複数の親コードに紐づけることが可能となる。
なお、本実施形態においては、親コードが物品棚に付され、子コードが物品に付されるものとして説明したが、親コード及び子コードは、例えばシール等として物品棚及び物品に貼り付けられていてもよいし、当該物品棚及び物品に直接印刷等されていてもよい。
また、本実施形態は物品管理に用いられるものとして説明したが、上記したように画像中における親コードの位置及び子コードの位置(親コード及び子コード間の距離)に基づいて親コード及び子コードを対応づけて(紐づけて)管理するものであれば、他の用途に用いられるものであってもよい。
具体的には、本実施形態は、例えば工具箱に親コードを付し、当該工具箱に収納される工具の各々に子コードを付すことによって、当該工具箱内の工具の管理(部品管理)に用いることも可能である。更に、本実施形態は、例えば人物の状況を表すホワイトボードの各領域に対応する位置に親コードを付し、ホワイトボードに張り付け可能な人物の名札に子コードを付すことによって、各人物の状況管理に用いることも可能である。なお、この人物の状況管理の例としては、例えば老人ホーム等における入居者の所在管理や工事現場等における現場作業員の作業状況の管理等が考えられる。
また、子コードは、静止物だけでなく、動体に付されても構わない。この場合には、動体に付された子コードを特定の親コードに紐づけて管理することができる。具体的には、例えば本実施形態に係る光学式認識コード読取装置10(に備えられるカメラ18)を固定し、当該固定されたカメラ18で部屋の画像を撮像する場合を想定する。これによれば、特定の部屋に親コードを割り当て、カメラ18で当該部屋にいる人物に付された子コードを認識する(つまり、親コードと子コードとを紐づける)ことによって、部屋(親コード)内の人物(子コード)の動きや性質等の情報を管理するようなことを実現することも可能である。
更に、本実施形態においては親コード及び子コードとしてカラービットコードが用いられるものとして説明したが、当該親コード及び子コードとしては、例えばバーコード等の他の光学式認識コード(自動認識技術)が用いられても構わない。
なお、上記した実施形態に記載した手法は、コンピュータに実行させることのできるプログラムとして、磁気ディスク(フロッピー(登録商標)ディスク、ハードディスクなど)、光ディスク(CD−ROM、DVDなど)光磁気ディスク(MO)、半導体メモリなどの記憶媒体に格納して頒布することもできる。
また、この記憶媒体としては、プログラムを記憶でき、かつコンピュータが読み取り可能な記憶媒体であれば、その記憶形式は何れの形態であってもよい。
また、記憶媒体からコンピュータにインストールされたプログラムの指示に基づきコンピュータ上で稼働しているOS(オペレーティングシステム)や、データベース管理ソフト、ネットワークソフト等のMW(ミドルウェア)等が本実施形態を実現するための各処理の一部を実行してもよい。
更に、本発明における記憶媒体は、コンピュータと独立した媒体に限らず、LANやインターネット等により伝送されたプログラムをダウンロードして記憶または一時記憶した記憶媒体も含まれる。
また、記憶媒体は1つに限らず、複数の媒体から本実施形態における処理が実行される場合も本発明における記憶媒体に含まれ、媒体構成は何れの構成であってもよい。
なお、本発明におけるコンピュータは、記憶媒体に記憶されたプログラムに基づき、本実施形態における各処理を実行するものであって、パソコン等の1つからなる装置、複数の装置がネットワーク接続されたシステム等の何れの構成であってもよい。
また、本発明におけるコンピュータとは、パソコンに限らず、情報処理機器に含まれる演算処理装置、マイコン等も含み、プログラムによって本発明の機能を実現することが可能な機器、装置を総称している。
なお、本願発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。更に、異なる実施形態に亘る構成要素を適宜組合せてもよい。