【実施例】
【0015】
図1〜
図9に実施例とその変形とを示す。
図1は、配膳用のワゴン車12に2台の2.5Dカメラ4,4'を取り付けた例を示す。ワゴン車12は通路10に沿って移動し、配膳及び食器の回収などを行い、食事はトレー14上の食器17に盛られている。16はトレー14の上面となる平面で、平面16を高さの基準面として用い、また複数の距離画像を統合する際の基準面として用いる。なおこの明細書で、食事は人などが食べる食物を意味する。2台の2.5Dカメラ4,4'の一方は、トレー14を直上部付近から撮像するように配置し、他方はトレー14を斜めに撮像するように配置する。なお1台の2.5Dカメラ4のみを設け、視点を変えて2回以上食品を撮像しても良く、あるいは3台以上の2.5Dカメラを設けても良い。
【0016】
カメラ4,4'は、
図2に示すように、カラーカメラ5と、線分状のパターン光を線分と直角な方向にスキャンするように食品8へ照射するIRレーザ6と、パターン光の像を撮像するIRカメラ7とを備えている。IRレーザ6はパターン光を図の矢印のようにスキャンし、IRカメラ7は受光したパターン光の歪み(線分からの歪み)を検出して、食品表面までの距離画像を作成する。パターン光を撮像する代わりに、レーザ光で食品表面をスキャンし、反射光を受光するまでの時間から、距離画像を作成しても良い。
【0017】
情報処理装置2には、2.5Dカメラ4,4'から、視点が異なる複数の距離画像と複数のカラー画像とが入力され、食事を構成する食品の種類と、食品毎の量を識別する。情報処理装置2は2.5Dカメラ4,4'と一体でも良く、あるいはサーバとして別の位置に設けられていても良い。必要に応じて、カメラ4等によりトレー14のバーコードなどを読み取り、図示しないサーバに問い合わせて、トレー14の食事を食べる人を確認する。これは、病院などで個々の人に合わせて食事の内容が異なる場合の処理である。
【0018】
20はバスである。平面検出部21は、トレー14の距離画像からトレー14上部の平面16を検出する。そして後で食器に食品を盛付る面を求める際に、平面16を基準とする食器の形状が既知であることを利用する。
【0019】
2.5Dカメラ4,4'は複数あるが、それらの位置は既知であり、各カメラ毎の座標系に基づく距離画像を、共通の座標系に基づく距離画像に統合できるように、予め統合パラメータを求めて、記憶しておく。そして統合処理部22により、複数の距離画像を共通の座標系での距離画像に統合し、食品と食器の3次元形状をカメラから見える範囲で求める。なお1台のスマートフォンの2.5Dカメラを用いる場合、例えば距離画像を平面16からの高さの画像に変換し、例えば特徴的な点が互いに一致するように平行移動と鉛直軸回りの回転をすることにより、共通の座標系に統合する。
【0020】
切り分け部23は、視点の異なる複数の距離画像に基づき、複数の食品が重なっている場合でも、個々の食品に切り分けるように、個々の食品の輪郭を抽出する。揚げ物と付け合わせのキャベツなどのように、食品によりカラー画像の特徴が異なる場合、切り分け部23はカラー画像も使用する。
【0021】
体積計算部24は、複数の視点からの食品の距離画像を用い、食品の体積を求める。例えば
図1の2.5Dカメラ4では、食品の側面は見え難く、食品の正確な体積を求めることは難しい。しかし他方の2.5Dカメラ4'では食品の側面が見えるので、2台のカメラ4,4'の距離画像を統合すると、食品の立体的な形状を認識できる。このため、食品の体積をより正確に測定できる。なお2台のカメラ4,4'では、食品の4側面全てが見えるわけではない。しかし1つの側面の距離画像が得られれば、他の側面の形状も推測できる。
【0022】
特徴量抽出部25は、食品の距離画像とカラー画像での特徴量を抽出する。特徴量を抽出する目的は、食品の種類を識別することである。もう一つの目的は、食品表面が平坦であるか、それとも起伏に富んでいるかを識別することである。表面が平坦な場合、食品は中実で、見かけの体積当たりの重量が大きいと推定でき、表面の起伏に富んでいる場合、食品は中実ではなく、見かけの体積当たりの重量は小さいと推定できる。特徴量の抽出では、複数の視点からの距離画像とカラー画像を併用しても良く、あるいは1つの視点からの距離画像とカラー画像のみを用いても良い。
【0023】
中実かどうかを識別するために距離画像から抽出する特徴量は、食品の重心等、食品の中心を表す点から表面までの距離の分布、特にその平均値と標準偏差などである。これらの特徴量は、食品の見かけの面積の平方根など、食品の大きさを表す量との比として用いても良い。また食品表面での法線の向きが保たれる距離、例えば法線の向きの自己相関距離、食品表面での凹凸の程度、シワの程度なども特徴量となる。自己相関距離、凹凸の程度、シワの程度は、大きな食品であれば自然と大きくなるものではないので、食品の大きさで正規化する必要はない。これらの特徴量は、食品表面の形態が球、直方体などの中実で平坦な形状に近いか、凹凸や空隙が多い複雑な形状に近いかを表している。そして中実な形状では見かけの体積当たりの重量が大きく、凹凸や空隙の多い形状では見かけの体積当たりの重量が小さい。なお中実度の処理は省略しても良い。
【0024】
食品の種類を識別するために抽出する特徴量は、距離画像では、食品の縦、横、高さ等の比、表面の凹凸の周期等によるテクスチャーがある。カラー画像から抽出する特徴量には、食品の色相、彩度、これらのテクスチャー等があり、一般的な画像識別で用いる特徴量を用いればよい。
【0025】
中実度計算部26は、距離画像の特徴量に基づいて食品の中実度を求める。ここに中実度は、食品が見かけの体積の内部を中実に充たしていると大きく、空隙が多いと小さくなるパラメータである。見かけの体積に中実度と比重を乗算し、あるいは見かけの体積を第1主成分、中実度を第2主成分とする主成分分析を行い、比重を乗算すると、食品の重量が得られる。比重を乗算せずに、見かけの体積を中実度で補正し、真の体積を推定するだけにしても良い。また中実度の処理は省略しても良い。
【0026】
食品識別部27は、前処理として、食器の形状、あるいは形状と色彩により、食品の種類を絞り込み、特徴量抽出部25で抽出した特徴量により、種類を識別する。なお食器の形状等による前処理は省略しても良い。食品量計算部28は、体積計算部24で求めた食品の見かけの体積と、食品の種類で定まる比重の積を、中実度により補正し、食品の量、例えば重量を求める。重量の代わりに、食品の真の体積を求めても良い。
【0027】
メモリ30は食器のデータ、例えば食器毎の形状と色彩、及び盛付る食品の種類を記憶する。食器の形状は、円形、長方形、正方形などの輪郭形状の他に、食品を盛る面の形状(皿ではほぼ平面、丼ではほぼ半球面、など)を含んでいる。さらに食器の底部から食品を盛付る面までの、高さのデータを記憶する。食器から対応する食品の種類が制限され、これらを食品識別での食品の種類の候補として使用する。
【0028】
メモリ31は学習データを記憶し、複数の距離画像を統合するための統合パラメータ、既知の食品の統合済みの距離画像とカラー画像、食品の種類、量、距離画像とカラー画像の特徴量、中実度などのデータを記憶する。これらのデータを、2.5Dカメラからの距離画像とカラー画像と比較し、食品の種類を識別する。通信部32は、外部のサーバなどと通信し、例えば食事をする人の画像と、食品の種類と量などを送信する。図示しない外部のサーバは、食事をする人の画像から、食品の種類と量などを確認し、その人に合った食事であることを確認する。あるいは食品の種類と量などのデータを料金に変換し、また利用者毎の食事の内容と栄養価などを記憶する。メモリ34は食品の種類毎に、重量当たりの栄養価を記憶し、図示しないCPUにより食事に含まれる栄養価を求める。情報処理装置2は、これらの他に、図示しないCPUとプログラムメモリ、作業用データのメモリ、入出力、等を備えている。
【0029】
図1は病院、介護施設、ホテルなどでの配膳に適したシステムを示している。しかし例えば利用者が食品を取ってトレーに載せ、ワゴン車12とは独立した固定の2.5Dカメラ4、4'と、情報処理装置2により、食品の種類と量を求めると、料金の精算に利用できる。このようなシステムを、社員食堂、学生食堂など、利用者が固定の食堂に設けると、料金の精算に加えて、利用者毎の栄養の管理に利用できる。利用者が不定の食堂でも、情報処理装置2から利用者のスマートフォンなどに送信し、利用者のスマートフォンで栄養管理を行うことができる。さらに、バイキング形式などの食堂では、皿に取った食品の種類と量毎の課金ができる。
【0030】
図3は、スマートフォン40に2.5Dカメラ4を実装し、外部の情報処理装置2と通信する食事識別システムを示している。テーブル42上のトレー14を、視点を変えて2回以上、例えば2回、スマートフォン40の2.5Dカメラ4により撮像し、距離画像とカラー画像を情報処理装置2へ送信すると、
図1と同様の処理ができる。そして情報処理システム2から返信される食品の種類と量、及び栄養価を、スマートフォン40が記憶し表示する。このシステムでは、摂取した食品の種類と量と栄養価を例えば毎食計測し、健康の増進に役立てる。またスマートフォン40で撮像する場合は、食器データを事前に記憶することが困難なので、食器データによる食品の種類の制限は行わなくても良い。
【0031】
図4,
図5は食事の識別アルゴリズムを示し、
図4のステップ1で、トレーあるいはテーブル上の食器などを、2.5Dカメラで撮像する。ステップ2で、トレーの平面あるいはテーブルの平面などを検出し、カメラからの距離画像を、トレーの平面、テーブルの平面などからの高さを表す距離画像に変換する。ステップ1,2を2.5Dカメラの視点を変えて繰り返す。即ち、
図1の場合、2台の2.5Dカメラに対して各々ステップ1,2を行い、
図3の場合、1台の2.5Dカメラを用い、視点を変えてステップ1,2を各2回実行する。
【0032】
ステップ3で、複数の距離画像を統合し、食品の3D形状を推定する。カメラ毎の座標系の距離画像を共通の座標系での距離画像に変換するためのパラメータを、学習データのメモリ31等から読み出し、座標変換によって複数の距離画像を統合する。なおスマートフォン内蔵の2.5Dカメラの場合、特徴的な点が重なるように画像の平行移動と鉛直軸回りの回転を行うと、座標系を統合できる。このようにして、2枚の距離画像を共通の座標系へ変換し、食品の上面と少なくとも1側面の、トレーの平面を基準とする3D形状を表す距離画像とする。食品の形状の識別精度が低くても良い場合、距離画像を統合しないことも可能である。個々の食品の切り分けでは、1枚の距離画像を主に用い、切り分けで必要になる都度、他の距離画像を参照しても良い。食品の立体形状の識別でも、1枚の距離画像を主に用い、他の距離画像から見えない部分を推定するようにしても良い。
【0033】
ステップ4で食器の縁を距離画像から求め、食器の輪郭を高さを含めて抽出する。必要に応じて食器表面のカラー画像を参照し、食器データと比較して、食器の種類を識別する(ステップ5)。
【0034】
ステップ6で、統合済みの複数の距離画像を用いて、食品の輪郭を抽出する。この処理を
図6,
図7に示す。
図6の場合、カメラ4'からの距離画像のみでは、食品60,62の切り分けは難しい。ここで2台の2.5Dカメラ4,4'からの距離画像があると、食品60,62の境界とそれらの隙間を観察でき、食品が重なっている場合でも、個々の食品を正確に切り分けることができる。
【0035】
図7の場合、食品70の下にキャベツなどの付け合わせ72がある。カメラ4の距離画像では、付け合わせ72までの距離を得るのは難しい。しかし他のカメラ4'があると、付け合わせ72までの距離を容易に求めることができ、食品70の底部の高さを推測できるので、食品70の体積を正確に測定できる。
【0036】
ステップ7で統合済みの距離画像とカラー画像での食品の特徴量を求め、ステップ8で食品の種類を識別する。ここで統合済みの距離画像と複数のカラー画像があると、より多くの面で食品の特徴量を求めることができる。例えば
図8のケーキ80の場合、側面の生クリームやイチゴなどを識別に用いることができる。
【0037】
ステップ9で食品の体積を測定し、
図9にそのモデルを示す。2.5Dカメラ4のみでは、食品90の上部が球状であることが分かるが、側面形状は分からない。このため例えば食品90の側面は柱状であると仮定すると、食品の体積計算に誤差が生じる。これに対して他の2.5Dカメラ4'があると、食品90の側面も球状で、影92の部分に食品はないことが分かる。これから影93等の部分も食品ではないと推定でき、食品90の体積をより正確に測定できる。
【0038】
ステップ10で距離画像から食品の中実度を求める。発明者らは、距離画像から求めた食品(唐揚げ)の見かけの体積と重量との相関を求めた。
図9のように、複数の距離画像を用いることにより、見かけの体積と重量の相関が向上した。しかしこれ以外に、唐揚げが凹凸に富み起伏が激しい形状の場合、見かけの体積当たりの重量が小さく、平坦で起伏の少ない形状の場合、見かけの体積当たりの重量が大きいとの問題が残った。凹凸に富み起伏が激しいかどうかは、唐揚げ表面の各点に対し、唐揚げの重心からの距離を求め、距離の平均値、標準偏差などの統計量を求めることにより推定できる。凹凸が激しいほど、距離の平均値が大きく、距離の標準偏差も大きい。また唐揚げ表面の法線方向が保たれる距離、言い換えると法線の自己相関距離を求めても、唐揚げ表面の凹凸の程度を推定できる。そこでこれらのデータから、食品の中実度を求める。なお中実度による重量の補正は省略しても良い。
【0039】
ステップ11で、食品の見かけの体積を中実度で補正し、食品の比重を乗算して、食品の重量を求める。ステップ12で、食品の種類と重量を栄養価などに換算し、食事に含まれる食品の種類、食品毎の重量、合計の栄養価などを出力する。