【実施例】
【0015】
図1〜
図14に実施例とその変形とを示す。
図1は、配膳用のワゴン車12に2.5Dカメラ4を取り付けた例を示す。カメラ4は
図1の左上に示すように、カラーカメラ5と、線分状のパターン光を線分と直角な方向にスキャンするように照射するIRレーザ6と、パターン光の像を撮像するIRカメラ7とを備えている。IRレーザ6はパターン光を図の矢印のようにスキャンし、IRカメラ7は受光したパターン光の歪み(線分からの歪み)を検出して、物品表面までの距離画像を作成する。パターン光を撮像する代わりに、レーザ光で物品表面をスキャンし、反射光を受光するまでの時間から、距離画像を作成しても良い。ワゴン車12は通路10に沿って移動し、配膳及び食器の回収などを行い、食事はトレー14上の食器17に盛られ、16はトレー14の上面となる平面である。なおこの明細書で、食事は人などが食べる食物を意味する。
【0016】
情報処理装置2は、2.5Dカメラからの距離画像とカラー画像とにより、食事を構成する食品の種類と、食品毎の量を識別する。情報処理装置2は、2.5Dカメラ4と一体でも良く、あるいはサーバとして別の位置に設けられていても良い。20はバスで、必要に応じてバーコードリーダ21などのIDリーダを接続し、トレー14のID,食事の届け先の人のIDなどを読み取る。平面検出部22は、トレー14の距離画像から、トレー14上部の平面16までの距離を検出する。輪郭抽出部23は、距離画像に基づき食品の輪郭を抽出し、特に食品が重なっている場合に、これらを切り分けるように輪郭を抽出する。揚げ物と付け合わせのキャベツなどのように、食品によりカラー画像の特徴が異なる場合、輪郭抽出部23はカラー画像も使用する。
【0017】
特徴量抽出部24は、食品の距離画像から特徴量を抽出する。抽出する特徴量は、食品の重心等、食品の中心を表す点から表面までの距離の分布、特にその平均値と標準偏差などで有る。これらの特徴量は、食品の見かけの面積の平方根など、食品の大きさを表す量との比として用いても良い。また食品表面での法線の向きが保たれる距離、例えば法線の向きの自己相関距離、食品表面での凹凸の程度、シワの程度なども特徴量となる。自己相関距離、凹凸の程度、シワの程度は、大きな食品であれば自然と大きくなるものではないので、食品の大きさで正規化する必要はない。これらの特徴量は、物品表面の形態が球、直方体などの中実で平滑な形状に近いか、凹凸や空隙が多い複雑な形状に近いかを表している。そして中実な形状では体積の測定値当たりの重量が大きく、凹凸や空隙の多い形状では体積の測定値当たりの重量が小さい。
【0018】
体積計算部25は食品の距離画像から、食品の体積の測定値を求める。カメラ4では食品の底面などは見えないので、平皿の上の食品に対しては、距離画像での食品の縁から鉛直下向きに皿の表面まで食品がある、丼内の食品では、食品の底面は丼の表面と同じである、などを仮定して、体積の測定値を求める。
【0019】
中実度計算部26は、食品の特徴量に基づいてその中実度を求める。ここに中実度は、食品が体積の測定値内を中実に充たしていると大きく、空隙が多いと小さくなるパラメータで有る。体積の測定値に中実度と比重を乗算し、あるいは体積の測定値を第1主成分、中実度を第2主成分とする主成分分析を行い、比重を乗算すると、食品の重量が得られる。なお中実度計算部26は必ずしも設けなくても良い。
【0020】
食品識別部27は、前処理として、食器の形状、あるいは形状と色彩により、食品の種類を絞り込み、距離画像及びカラー画像により食品の種類を識別する。食器の形状等による前処理は省略しても良い。食品量計算部28は、体積計算部25で求めた食品の体積の測定値と、食品の種類で定まる比重の積を、中実度により補正し、食品の量、例えば重量を求める。重量の代わりに、食品の真の体積を求めても良い。
【0021】
情報処理装置2は、これらの他に、図示しないCPUとプログラムメモリ、食器データのメモリ、学習データのメモリ、画像データのメモリ、及び作業用データのメモリ、入出力、通信機能、等を備えている。メモリ30は食器のデータ、例えば食器毎の形状と色彩、及び盛付る食品の種類を記憶する。食器の形状は、円形、長方形、正方形などの輪郭形状の他に、食品を盛る面の形状(皿ではほぼ平面でその高さをデータに含む、丼ではほぼ半球面でその高さをデータに含む)を含んでいる。さらに食器を距離画像で見たときの、食器が占める体積の測定値を記憶する。食器から対応する食品の種類が制限され、これらを食品識別での食品の種類の候補として使用する。
【0022】
メモリ31は学習データを記憶し、既知の食品の2.5Dデータ(距離画像とカラー画像)、食品の種類、量、距離画像とカラー画像の特徴量、中実度などのデータを記憶する。これらのデータは、2.5Dカメラからの距離画像とカラー画像と比較し、食品の種類と量へ換算するためのものである。通信部32は、外部のサーバなどと通信し、例えばバーコードリーダ21により読み取った、食事をする人のIDと、食品の種類と量などを送信する。図示しない外部のサーバは、食事をする人のIDと、食品の種類と量などを照合し、その人に合った食事であることを確認する。あるいは食品の種類と量などのデータを料金に変換し、また利用者毎の食事の内容と栄養価などを記憶する。
【0023】
メモリ34は食品の種類毎に、重量当たりの栄養価を記憶し、図示しないCPUにより食事に含まれる栄養価を求める。
【0024】
図1は病院、介護施設、ホテルなどでの配膳に適したシステムを示している。しかし例えば利用者が食品を取ってトレーに載せ、ワゴン車12とは独立したスタンドアローンの2.5Dカメラ4と、情報処理装置2により、食品の種類と量を求めると、料金の精算に利用できる。このようなシステムを、社員食堂、学生食堂など、利用者が固定の食堂に設けると、利用者毎の栄養の管理に利用できる。利用者が不定の食堂でも、情報処理装置2から利用者のスマートフォンなどに送信し、利用者のスマートフォンで栄養管理を行うことができる。さらに、バイキング形式などの食堂では、皿に取った食品の種類と量毎の課金ができる。
【0025】
図2は、スマートフォン40に2.5Dカメラ4を実装し、外部の情報処理装置2と通信する食事識別システムを示している。情報処理システム2から返信される食品の種類と量、及び栄養価を、スマートフォン40が記憶し表示する。このシステムでは、摂取した食品の種類と量と栄養価を例えば毎食計測し、健康の増進に役立てる。またスマートフォンで撮像する場合は、食器データを事前に記憶することが困難なので、食器データによる食品の種類の制限は行わなくても良い。
【0026】
図3は食事の識別アルゴリズムの概要を示し、準備では、食器の種類を識別し、食品の体積の測定値を求める。食品の切り分けでは、1つの食器に複数の食品が盛られている場合に、個々の食品の輪郭を抽出し、抽出した食品の種類を識別すると共に、食品毎の体積を測定する。食品の重量推定では、好ましくは食品の体積の測定値を中実度で補正し、食品の種類毎の重量と栄養価を求める。
【0027】
図4は準備のアルゴリズムを示し、ステップ1でトレーあるいは食器を載せたテーブルなどを2.5Dカメラで撮像する。ステップ2で、トレーの平面あるいはテーブルの平面などを検出し、カメラからの距離画像を、トレーの平面、テーブルの平面などからの高さを表す距離画像に変換する。ステップ3で食器の縁を距離画像から求め、食器の輪郭を高さを含めて抽出する。必要に応じて食器表面のカラー画像を参照し、食器データと比較して、食器の種類を識別する。トレー上の食事の例を
図12に示す。
【0028】
ステップ4では、距離画像を用いて、食器を含む体積を求め、食器データとして記憶している食器の体積の測定値を引いて、食品の体積の測定値を求める。またステップ5で、食器の種類から食品の候補を抽出する。例えば食器が長皿であれば魚料理などが候補となり、小鉢、丸い大皿、小皿、碗、丼などの食器の種類、及び、必要な場合、食器の種類と色彩の模様により、食品の種類の候補を制限できる。
【0029】
図5は、食品の切り分けと重量推定アルゴリズムを示す。ステップ6で、距離画像から食品の境界を抽出する。ここで問題になるのは、同種の食品が接触している場合で、この状況を
図6に示す。食品60,61は唐揚げなどで、互いに接触している。食品が互いに接触していない部分の輪郭P1,P2は、食器との間で高さが不連続に変化するため、容易に抽出できる。食品60の輪郭P3が食品61上に重なっている場合、輪郭P3の内外での高さの変化はシワP5の両側での高さの変化よりも通常は大きい。
【0030】
ここで、
・ 輪郭P3の内外での高さの変化は、シワP5での高さの変化よりも大きい場合が多いこと、
・ 輪郭P3は輪郭P1,P2につながり、食品60,61を1個の物体と見たときに、物体を横断しているが、シワP5は食品60,61を横断することは少ないこと、及び
・ 輪郭P3との境目で、輪郭P1,P2は一般に鋭角で交わり、
・ 輪郭P3は輪郭P1,P2のいずれか一方と向きが連続するように繋がること、を加味すると、シワP5と区別して、輪郭P3を抽出できる。そして輪郭P3の両側での高さから、輪郭P3は食品60の輪郭であることも識別できる。必要であれば、輪郭P2の上下の端部を接続するように、食品61の輪郭P4を推定できる。なお唐揚げと付け合わせのキャベツが重なっているような場合、唐揚げとキャベツでは色彩の特徴が異質なので、より簡単に輪郭を抽出できる。
【0031】
図6で、個々の食品60,61への切り分けが完了すると、食品60,61の大きさ、高さ、距離画像でのテクスチャー(凹凸の程度)、色彩と色彩上のテクスチャーなどから、食品の種類を決定する。
【0032】
ステップ7で距離画像から食品の中実度を求め、ステップ9で中実度による補正を行う。なおステップ7,9は省略しても良い。中実度のモデルを
図7に示す。70は食器の面で、71,72は唐揚げなどの同種の食品とする。発明者の経験によると、食品の体積の測定値が同じでも、凹凸あるいはシワが多い食品71は、凹凸あるいはシワが少ない食品72よりも軽い。食品71で凹凸あるいはシワが多いことは、その表面Sが変化に富むことを意味する。そして凹凸あるいはシワが多いことは、距離画像で食品の表面までの距離が不連続に変化すること、即ち高さの段差があること、食品の重心から表面までの距離の分布が広いこと、あるいは図に矢印で示す表面の法線方向が不規則に変化すること、などから検出できる。凹凸あるいはシワの少ない食品72では、表面S'は平滑で、重心から表面までの距離の分布は狭く、表面からの法線方向は連続的にゆっくりと変化する。
【0033】
距離画像から食品71の重心G、食品72の重心G'を推定できる。食品71について、表面Sの各点に対し、重心Gからの距離を求め、距離の平均値、標準偏差などの統計量を求める。同様に、食品72の表面S'の各点に対し、重心G'からの距離の平均値、標準偏差などの統計量を求める。距離の標準偏差は食品71では、食品72によりも大きくなる。
【0034】
重心G,G'からの距離に代えて、表面での法線方向の自己相関距離などを求めても、表面S,S'の変化の程度を求めることができる。食品71では法線方向の相関が保たれる距離は短く、食品72では長い。そこで表面S'の変化が小さい食品72では中実度が高く、表面Sの変化が激しい食品71では中実度が低くなるように、中実度を定める。
【0035】
ステップ8では、
図8〜
図10のようにして、食品毎の体積の測定値を求める。
図8では、カメラ4により食品73の距離画像を取得する。ここで食品73の底面などは撮像できないので、食品73の縁(輪郭)から鉛直下向きに面70まで食品73が存在するなどのことを仮定し、体積の測定値を求める。
【0036】
図9では、キャベツなどの付け合わせから成る食品74の上に、唐揚げなどの食品73が乗っている。距離画像とカラー画像とから、キャベツと唐揚げの境界は簡単に抽出できる。そこでキャベツから成る食品74の露出部から図の破線のように、その上面を推定できる。唐揚げからなる食品73は互いに接触しているが、例えば
図6のアルゴリズムにより、個別の唐揚げの境界を抽出する。そしてキャベツから成る食品74の上面からの見かけの総体積を求め、比重を乗算する。
【0037】
なお多数の唐揚げが積み重なり、個々の唐揚げに切り分けることが難しい場合、唐揚げの見かけの総体積を求めて、個々の唐揚げに切り分けることを省略しても良い。この場合、例えば唐揚げが積み重なっている場合の学習データを参照し、体積の測定値と、
図7と同様に求めた中実度と、比重から、唐揚げの真の重量を推定する。
【0038】
図10では、丼76に盛られた食品77の体積を推定する。丼77の形状を食器データから読み出し、食品77の体積を推定する。
図11にトレー上の食事の例を示す。
【0039】
ステップ9で、食品毎の体積の測定値を中実度で補正し、比重を乗算して、食品毎の重量を求める。ステップ10では、食品の種類と重量から栄養価を求める、あるいは食事の料金を求める、などの処理を行う。またアレルギーなどの問題のため、人ごとに異なる食事を提供する場合、食品の種類、外観、量などから、どの人の食事であるか区別できるようにするのが普通である。そこで食品の種類と量から、その人に合った食事であることを確認できる。食事の識別システムの利用者が限られている場合、利用者毎に食品の種類と量、栄養価などを記憶し、健康の増進に役立てる。
【0040】
図11にトレー上の食事の例を示す。
図12に3個の唐揚げのカラー画像(a)と距離画像(b)を示し、中実度の補正なしでの体積の測定値と、真の重量の関係とを
図13に示す。重量誤差の平均値は約5%、誤差の最大値は16%であった。測定した体積を中実度により補正すると、誤差の平均値は約4%、誤差の最大値は11%に減少した。
【0041】
図14は、白飯での体積の測定値(中実度の補正なし)と真の重量との関係を示す。中実度の補正なしで、極めて正確に白飯の重量を推定できた。
【0042】
実施例では、食品の種類と体積を求めることができ、RFID付きの食器などを要しない。また距離画像から食品の輪郭を抽出すると、食品が互いに重なっている場合でも、個々の食品へ切り分けることができる。さらに不規則な形状の食品でも、中実度により補正すると、より正確に食品の体積を求めることができる。