(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-01-05
(45)【発行日】2024-01-16
(54)【発明の名称】体重推定装置、体重推定方法及びプログラム
(51)【国際特許分類】
G01G 9/00 20060101AFI20240109BHJP
G01G 17/08 20060101ALI20240109BHJP
G01B 11/24 20060101ALI20240109BHJP
【FI】
G01G9/00
G01G17/08
G01B11/24 K
(21)【出願番号】P 2022509786
(86)(22)【出願日】2020-03-23
(86)【国際出願番号】 JP2020012750
(87)【国際公開番号】W WO2021191975
(87)【国際公開日】2021-09-30
【審査請求日】2022-09-14
(73)【特許権者】
【識別番号】000102717
【氏名又は名称】NTTテクノクロス株式会社
(74)【代理人】
【識別番号】100107766
【氏名又は名称】伊東 忠重
(74)【代理人】
【識別番号】100070150
【氏名又は名称】伊東 忠彦
(72)【発明者】
【氏名】畠中 将徳
(72)【発明者】
【氏名】神谷 英樹
(72)【発明者】
【氏名】只野 奈津生
【審査官】大森 努
(56)【参考文献】
【文献】米国特許出願公開第2013/0064432(US,A1)
【文献】特表2012-519277(JP,A)
【文献】特開2019-045478(JP,A)
【文献】特開2014-044078(JP,A)
【文献】特開2019-045304(JP,A)
【文献】国際公開第2011/093013(WO,A1)
【文献】特開2013-254314(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G01G 9/00,17/08
G01B 11/00-11/30
G06T
(57)【特許請求の範囲】
【請求項1】
体重の推定対象を撮影した撮影データを取得する取得手段と、
前記取得手段により取得された前記撮影データに基づいて、前記撮影データ中における前記推定対象の所定の部分領域を除去する加工手段と、
前記加工手段により前記部分領域が除去された撮影データを用いて、予め作成された推定モデルにより前記推定対象の体重を推定する推定手段と、
を有
し、
前記加工手段は、
前記撮影データ中における前記推定対象を表す領域に対して設定した複数の探索範囲の各々で前記領域の境界にフィットする円を特定し、特定した複数の円の中で所定の誤差が最も小さい円を用いて前記部分領域を除去する、ことを特徴とする体重推定装置。
【請求項2】
前記撮影データは、各点における前記推定対象の深度値を表す三次元点群データであり、
前記加工手段は、
前記撮影データを2次元平面上に投影した投影画像中における前記推定対象の前記部分領域を除去する、ことを特徴とする請求項1に記載の体重推定装置。
【請求項3】
前記加工手段は、
前記探索範囲内における前記境界上の各点と前記円の中心とをそれぞれ結ぶ直線を用いて、前記直線上かつ前記境界上の点と、前記直線上かつ前記円の円周上の点との距離の平均を前記誤差として算出する、請求項
1又は2に記載の体重推定装置。
【請求項4】
前記推定対象は豚であり、
前記加工手段は、
前記推定対象を表す領域のうち、前記豚の後部を表す領域と、前記豚の前部を表す領域との少なくとも一方に前記複数の探索範囲を設定する、ことを特徴とする請求項
1乃至3の何れか一項に記載の体重推定装置。
【請求項5】
体重の推定対象を撮影した撮影データを取得する取得手順と、
前記取得手順で取得された前記撮影データに基づいて、前記撮影データ中における前記推定対象の所定の部分領域を除去する加工手順と、
前記加工手順で前記部分領域が除去された撮影データを用いて、予め作成された推定モデルにより前記推定対象の体重を推定する推定手順と、
をコンピュータが実行
し、
前記加工手順は、
前記撮影データ中における前記推定対象を表す領域に対して設定した複数の探索範囲の各々で前記領域の境界にフィットする円を特定し、特定した複数の円の中で所定の誤差が最も小さい円を用いて前記部分領域を除去する、ことを特徴とする体重推定方法。
【請求項6】
コンピュータを、請求項1乃至
4の何れか一項に記載の体重推定装置における各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、体重推定装置、体重推定方法及びプログラムに関する。
【背景技術】
【0002】
畜産農家では、飼育している家畜の体重を把握することが従来から行われている。これは、例えば、豚等の家畜では、或る体重を超えると食肉としての価値が下がってしまうことがあるためである。
【0003】
ところで、畜産農家で飼育されている家畜は数百頭(又は数百匹、数百羽等)を超える場合がある。このため、体重計等を用いる場合、家畜の体重の把握には手間を要する。これに対して、家畜をビデオカメラで撮影し、撮影した画像中における家畜の面積から体重を推定する技術が知られている(例えば、特許文献1参照)。
【先行技術文献】
【特許文献】
【0004】
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、様々な原因(例えば、撮影時における家畜の姿勢、カメラと家畜との距離等)により、上記の従来技術では、推定された体重と真の体重との誤差が大きかった。
【0006】
本発明の一実施形態は、上記の点に鑑みてなされたもので、高い精度で体重を推定することを目的とする。
【課題を解決するための手段】
【0007】
上記目的を達成するため、一実施形態に係る体重推定装置は、体重の推定対象を撮影した撮影データを取得する取得手段と、前記取得手段により取得された前記撮影データに基づいて、前記撮影データ中における前記推定対象の所定の部分領域を除去する加工手段と、前記加工手段により前記部分領域が除去された撮影データを用いて、予め作成された推定モデルにより前記推定対象の体重を推定する推定手段と、を有することを特徴とする。
【発明の効果】
【0008】
高い精度で体重を推定することができる。
【図面の簡単な説明】
【0009】
【
図1】本実施形態に係る体重推定システムの全体構成の一例を示す図である。
【
図3】点群データの一例を説明するための図である。
【
図4】本実施形態に係る体重推定処理部の機能構成の一例を示す図である。
【
図5】本実施形態に係る学習処理の一例を示すフローチャートである。
【
図7】フィット円候補の探索の一例を説明するための図である。
【
図8】誤差の算出の一例を説明するための図である。
【
図10】補正投影面積の算出の一例を説明するための図である。
【
図11】体幅の算出の一例を説明するための図である。
【
図12】体長の算出の一例を説明するための図である。
【
図13】本実施形態に係る体重推定処理の一例を示すフローチャートである。
【発明を実施するための形態】
【0010】
以下、本発明の一実施形態について、図面を参照しながら説明する。本実施形態では、高い精度で豚の体重を推定することが可能な体重推定システム1について説明する。なお、本実施形態では、体重の推定対象となる家畜の一例として豚を想定して説明するが、家畜は豚に限られず、例えば、牛、馬、羊、鶏等の種々の家畜であってもよい。また、体重の推定対象は家畜だけでなく、例えば、愛玩動物(いわゆるペット)や野生動物等であってもよい。
【0011】
<全体構成>
まず、本実施形態に係る体重推定システム1の全体構成について、
図1を参照しながら説明する。
図1は、本実施形態に係る体重推定システム1の全体構成の一例を示す図である。
【0012】
図1に示すように、本実施形態に係る体重推定システム1には、体重の推定を行う体重推定装置10と、体重の推定対象である豚Pを撮影するカメラ装置20とが含まれる。体重推定装置10とカメラ装置20とは、例えば、無線若しくは有線又はその両方により通信可能に接続されている。
【0013】
カメラ装置20は、豚Pを撮影する撮影者が利用するデジタルカメラ、スマートフォン、タブレット端末等である。撮影者は、カメラ装置20を用いて、豚Pの上方から当該豚Pを撮影することで撮影データを得ることができる。なお、カメラ装置20は所定の位置に固定的に設置されたカメラであってもよい。
【0014】
ここで、カメラ装置20には深度センサが備えられており、撮影範囲内における各点の深度を測定し、これら各点の高さを表す撮影データを生成するものとする。したがって、カメラ装置20により生成される撮影データは、撮影範囲内の各位置を(x,y)、これらの各位置における深度値をzとして、(x,y,z)の点群で表される。以降では、(x,y,z)の点群で表される撮影データを「点群データ」と表す。
【0015】
体重推定装置10は、カメラ装置20が生成した点群データから豚Pの体重を推定するコンピュータ又はコンピュータシステムである。体重推定装置10は、予め準備した学習データを用いて算出した回帰式により、豚Pの体重を推定する。学習データは回帰式を算出するためのデータであり、例えば、体重が既知である豚Pを撮影することで生成された点群データと、この豚Pの体重を示す正解体重との組で表される。なお、回帰式は回帰モデル等と称されてもよく、推定対象の体重を推定するための推定モデルの一例である。
【0016】
ここで、体重推定装置10には、体重推定処理部100と、記憶部110とが含まれる。体重推定処理部100は、体重推定装置10にインストールされた1以上のプログラムが、CPU(Central Processing Unit)等のプロセッサに実行させる処理により実現される。また、記憶部110は、例えば、HDD(Hard Disk Drive)やSSD(Solid State Drive)等の補助記憶装置を用いて実現可能である。
【0017】
体重推定装置10は、体重推定処理部100により、予め準備した学習データを用いて豚Pの体重を推定するための回帰式を算出する「学習処理」と、この回帰式により豚Pの体重を推定する「体重推定処理」とを実行する。また、記憶部110には、学習処理及び体重推定処理の実行に必要な情報や各種処理結果(例えば、学習データや回帰式、体重の推定対象の豚Pの点群データ、体重の推定結果等)が記憶される。
【0018】
なお、
図1に示す体重推定システム1の全体構成は一例であって、他の構成であってもよい。例えば、体重推定システム1には複数のカメラ装置20が含まれていてもよい。また、体重推定処理部100の一部又は全部が、クラウドサービス等により提供される機能で実現されていてもよい。
【0019】
<撮影条件>
ここで、カメラ装置20を用いて撮影者が豚Pを撮影する際の撮影条件について説明する。豚Pを撮影する際、カメラ装置20のディスプレイ等には、例えば、
図2に示す撮影画面1000が表示される。撮影画面1000には豚Pの撮影位置を合わせるためのガイド1100が表示されている。また、ガイド1100には、撮影範囲の中心を示すガイド1110が含まれている。ここで、本実施形態では、点群データの原点(つまり、(x,y,z)=(0,0,0)となる位置)はカメラ装置20のカメラ位置であるものとする。したがって、ガイド1110が示す位置は点群データの任意のxy平面における原点(つまり、(x,y)=(0,0))である。なお、撮影方向をz軸の正の方向、撮影画面1000の下方向(つまり、豚Pの頭方向)をx軸の正の方向、撮影画面1000の右方向(つまり、豚Pの左側方向)をy軸の正の方向とする。
【0020】
撮影者は豚Pの上方にカメラ装置20を移動させて、ガイド1100が示す枠に豚Pの輪郭が合致するように調整した上で、撮影ボタン1200を押下することで当該豚Pを撮影する。これにより、複数の豚Pをそれぞれ撮影した場合であっても、xyz空間における原点と豚Pを表す点群との相対的な位置関係がほぼ同様の点群データを得ることが可能となる。
【0021】
<点群データ>
次に、或る豚Pをカメラ装置20で撮影することで生成された点群データ2000について説明する。
図3に示すように、点群データ2000は、xyz空間内の点(x,y,z)の集合である。なお、上述したように、カメラ装置20のカメラ位置を原点として、豚Pの頭方向がx軸の正の方向、豚Pの左側方向がy軸の正の方向、カメラ装置20の撮影方向がz軸の正の方向である。
【0022】
なお、1つの点群データがどの程度の数の点の集合で構成されるかは、例えば、カメラ装置20の解像度等によって異なる。
【0023】
<機能構成>
次に、本実施形態に係る体重推定処理部100の機能構成について、
図4を参照しながら説明する。
図4は、本実施形態に係る体重推定処理部100の機能構成の一例を示す図である。
【0024】
図4に示すように、本実施形態に係る体重推定処理部100には、取得部101と、前処理部102と、画像作成部103と、加工部104と、指標値算出部105と、回帰式算出部106と、体重推定部107とが含まれる。
【0025】
取得部101は、学習処理において、記憶部110に記憶されている学習データを取得する(読み込み)。上述したように、学習データとは、体重が既知である豚Pを撮影することで生成された点群データと、この豚Pの体重を示す正解体重との組で表されるデータのことである。
【0026】
また、取得部101は、体重推定処理において、体重の推定対象の豚Pを撮影することで生成された点群データを記憶部110(又はカメラ装置20)から取得する。
【0027】
前処理部102は、学習処理及び体重推定処理において、取得部101により取得された点群データに対して所定の前処理を行う。ここで、前処理としては、例えば、豚P部分以外の点が点群データに含まれる場合にこのような点を除去したり、豚P部分の点群をリサンプリングして所定の解像度に変換したり処理等が挙げられる。なお、前処理は豚の体重の推定精度を向上させるための処理であり、必ずしも行われなくてもよい。
【0028】
画像作成部103は、学習処理及び体重推定処理において、前処理後の点群データをxy平面に投影した投影画像を作成する。
【0029】
加工部104は、学習処理及び体重推定処理において、前処理後の点群データ及び投影画像に対して、豚Pの頭部分や尻尾部分を除去する加工を行う。これは、豚の頭部分や尻尾部分が撮影時に動くことで、頭部分や尻尾部分が点群データに含まれたり含まれなかったりするため、体重の推定精度に悪影響を与えるためである。
【0030】
指標値算出部105は、学習処理及び体重推定処理において、加工後の点群データと加工後の投影画像とを用いて、所定の指標値を算出する。ここで、本実施形態では、以下の4つの指標値を算出するものとする。
【0031】
・補正投影面積
・姿勢補正値
・撮影高さ補正値
・体長及び体幅
ここで、補正投影面積とは、豚Pの体表面の傾き(傾斜)を考慮して、投影画像の面積を補正した値のことである。姿勢補正値は、豚Pの姿勢(例えば、首を上げている又は下げている等)を表す値のことである。撮影高さ補正値は、カメラ装置20から豚Pまでの距離を表す値のことである。体長及び体幅は、豚Pの体長及び体幅をそれぞれ表す値である。
【0032】
回帰式算出部106は、学習処理において、指標値算出部105により算出された指標値と、正解体重とを用いて、回帰式を算出する。ここで、本実施形態では、回帰式は以下式(1)で表されるものとする。
【0033】
推定体重=a1×(補正投影面積)+a2×(姿勢補正値)+a3×(撮影高さ補正値)+a4×(体長)/(体幅)+b ・・・(1)
ここで、a1,a2,a3,a4,bは回帰式のパラメータである。回帰式算出部106は、これらのパラメータa1,a2,a3,a4,bを既知の手法(例えば、最小二乗法等)により推定することで、回帰式を算出する。
【0034】
なお、本実施形態では、上記の4つの指標値を用いる場合について説明するが、これら4つの指標値を全て用いる必要はなく、少なくとも1つの指標値が用いられればよい。このような場合、上記の式(1)のパラメータa1,a2,a3,a4のうち、用いられなかった指標値に対応するパラメータ(つまり、当該指標値に乗算されるパラメータ)を0とすればよい。例えば、補正投影面積を用いない場合は、a1=0として、上記の式(1)に示す回帰式を、推定体重=a2×(姿勢補正値)+a3×(撮影高さ補正値)+a4×(体長)/(体幅)+bとすればよい。同様に、例えば、姿勢補正値と撮影高さ補正値とを用いない場合は、a2=0,a3=0として、上記の式(1)に示す回帰式を、推定体重=a1×(補正投影面積)+a4×(体長)/(体幅)+bとすればよい。他の指標値を用いない場合についても同様である。
【0035】
体重推定部107は、体重推定処理において、指標値算出部105により算出された指標値を用いて、上記の式(1)に示す回帰式により豚Pの体重を推定する。ただし、体重推定処理では、学習処理で推定されたパラメータa1,a2,a3,a4,bを用いる。
【0036】
<学習処理>
以降では、本実施形態に係る学習処理について、
図5を参照しながら説明する。
図5は、本実施形態に係る学習処理の一例を示すフローチャートである。
図5のステップS101~ステップS105は、記憶部110に記憶されている学習データ毎に繰り返し実行される。例えば、N件の学習データが記憶部110に記憶されている場合、ステップS101~ステップS105はN回繰り返し実行される。
【0037】
まず、取得部101は、記憶部110に記憶されている学習データの中から1件の学習データを取得する(ステップS101)。
【0038】
次に、前処理部102は、上記のステップS101で取得された学習データに含まれる点群データに対して所定の前処理を行う(ステップS102)。ここで、以降では、当該点群データに対する前処理として、豚P部分以外の点の除去と、豚P部分の点群のリサンプリングによる所定の解像度への変換とが行なわれたものとする。なお、リサンプリングによる所定の解像度への変換とは、点群データに含まれる各点をリサンプリングして、予め決められた所定の間隔の3次元点群(例えば、隣接する点同士の間隔が1.0cmである点群等)を得ることをいう。
【0039】
次に、画像作成部103は、上記のステップS102で前処理が行なわれた点群データ(又は、前処理が行なわれない場合は上記のステップS101で取得された学習データに含まれる点群データ)をxy平面に投影した投影画像を作成する(ステップS103)。ここで、投影画像の一例を
図6に示す。
図6に示す投影画像3000は点群データ2000を或るxy平面に投影した画像であり、点群データ2000の豚P部分の点群が投影された豚領域3100が含まれる。ここで、点3110がxy平面の原点であり、
図2のガイド1110が示す位置の点がxy平面に投影されたものである。
【0040】
また、このとき、画像作成部103は、投影画像3000中における豚領域3100を左右(豚が歩行する際の進行方向に対して左右)に分割する分割線3120を算出してもよい。このような分割線3120は、豚領域3100に含まれるx座標値をx1,x2,・・・,xMとした場合に、x座標値がxi(1≦i≦M)のとき豚領域3100に含まれるy座標値がymin,i≦y≦ymax,iを取り得るとすれば、各i=1,・・・,M-1に対して(xi,(ymax,i-ymin,i)/2)と(xi+1,(ymax,i+1-ymin,i+1)/2)とをxy平面上の直線で接続することで算出される。又は、点群{(xi,(ymax,i-ymin,i)/2)|i=1,・・・,M}を近似する関数で表される曲線を分割線3120としてもよい。なお、このような関数は、例えば、polyfit等のライブラリにより求めることが可能である。
【0041】
次に、加工部104は、上記のステップS102で前処理が行なわれた点群データ(又は、前処理が行なわれない場合は上記のステップS101で取得された学習データに含まれる点群データ)と、上記のステップS103で作成された投影画像とに対して、豚Pの頭部分や尻尾部分を除去する加工を行う(ステップS104)。ここで、加工部104は、以下のStep1~Step7により当該加工を行う。なお、以降では、一例として、
図3に示す点群データ2000と
図6に示す投影画像3000とに対して加工を行う場合について説明する。
【0042】
Step1:まず、加工部104は、
図7に示すように、j=1,予め設定されたウインドウサイズをL>0として、投影画像3000に対して探索領域R
11={(x,y)|x
11≦x≦x
11+L}及びR
21={(x,y)|x
21-L≦x≦x
21}を設定する。なお、x
11≧0,x
21≦0は探索領域のx座標の開始点であり、予め設定される。
【0043】
Step2:次に、加工部104は、豚領域3100の境界上の点であり、かつ、探索領域R11に含まれる点にフィットする円(つまり、これらの点群を近似する円)S11を推定する。同様に、加工部104は、豚領域3100の境界上の点であり、かつ、探索領域R21に含まれる点にフィットする円S11を推定する。以降では、これらの円を「フィット円候補」と呼ぶ。なお、フィット円候補は最小二乗法により推定することが可能であり、例えば、「https://myenigma.hatenablog.com/entry/2015/09/07/214600」等を参照されたい。
【0044】
Step3:続いて、加工部104は、j←j+1,x1j=x1(j-1)+d1,x2j=x2(j-1)-d2として、投影画像3000に対して探索領域R1j={(x,y)|x1j≦x≦x1j+L}及びR2j={(x,y)|x2j-L≦x≦x2j}を設定する。ここで、d1,d2>0は予め設定された値である。すなわち、加工部104は、探索領域R1(j-1)をx軸方向にd1だけスライドさせて探索領域R1jとすると共に、探索領域R2(j-1)をx軸方向に-d2だけスライドさせて探索領域R2jとする。
【0045】
Step4:次に、加工部104は、豚領域3100の境界上の点であり、かつ、探索領域R1jに含まれる点にフィットする円S1jを推定する。同様に、加工部104は、豚領域3100の境界上の点であり、かつ、探索領域R2jに含まれる点にフィットする円S11を推定する。
【0046】
上記のStep3~Step4は、例えば、投影画像3000内でx座標が取り得る値の範囲をX1≦x≦X2として、x21-L≦X1かつX2≦x1j+Lを満たすまで繰り返し実行される。これにより、フィット円候補の集合{S1j}及び{S2j}が得られる。
【0047】
Step5:続いて、加工部104は、フィット円候補の集合{S1j}の中から頭部分を除去するためのフィット円S1を選択すると共に、フィット円候補の集合{S2j}の中から尻尾部分を除去するためのフィット円S2を選択する。ここで、フィット円S1を選択する方法について説明する。
【0048】
図8に示すように、フィット円候補S
1jの中心をO
jとして、豚領域3100の境界B上の各点Q
mに対してO
jとQ
mを通る直線を引き、当該直線とフィット円候補S
1jとの交点をP
mjとする。また、当該直線上におけるP
mjとQ
mとの距離をΔ
mjとする。この距離Δ
mjを境界B上の各点Q
m(m=1,・・・)に対して算出した上で、これらの距離Δ
mjの平均値をフィット円候補S
1jの誤差とする。そして、各フィット円候補S
1jの誤差に基づいて、フィット円候補の集合{S
1j}の中から1つのフィット円候補をフィット円S
1として選択する。フィット円S
1の選択方法としては、例えば、誤差が最も小さいフィット円候補をフィット円S
1として選択してもよいし、誤差の変化の度合いからフィット円S
1を選択してもよい。誤差の変化の度合いからフィット円を選択する方法としては、例えば、各フィット円候補の中心のx座標とそのフィット円候補の誤差とをプロットした場合に、誤差が極小値をとるフィット円候補の中でx座標が最も大きいフィット円候補(つまり、誤差が極小値をとり、かつ、最も右側にあるフィット円候補)をフィット円S
1として選択すればよい。ただし、誤差が極小値をとるフィット円候補が存在しない場合は、誤差が最も小さいフィット円候補をフィット円S
1として選択すればよい。なお、フィット円S
2を選択する方法についても同様であるが、誤差の変化の度合いからフィット円S
2を選択する場合は、誤差が極小値をとるフィット円候補の中でx座標が最も小さいフィット円候補(つまり、誤差が極小値をとり、かつ、最も左側にあるフィット円候補)をフィット円S
2として選択する。
【0049】
Step6:そして、加工部104は、上記のStep5で得られたフィット円S1及びS2をそれぞれ用いて、豚領域3100における頭部分及び尻尾部分を除去する。
【0050】
例えば、
図9に示すフィット円S
1が得られた場合、加工部104は、y軸に平行で、かつ、フィット円S
1に接する直線のうち、x座標値が大きい方の直線をT
1として、豚領域3100の中で直線T
1よりもx座標値が大きい領域を削除する。これにより、豚領域3100における頭部分が除去される。
【0051】
また、例えば、
図9に示すフィット円S
2が得られた場合、加工部104は、y軸に平行で、かつ、フィット円S
2に接する直線のうち、x座標値が小さい方の直線をT
2として、豚領域3100の中で直線T
2よりもx座標値が小さい領域を削除する。これにより、豚領域3100における尻尾部分が除去される。
【0052】
なお、上記では、y軸に平行で、かつ、フィット円S1に接する直線のうち、x座標値が大きい方の直線をT1としたが、これに限られず、例えば、y軸に平行で、かつ、フィット円S1の中心を通る直線をT1としてもよいし、分割線3120とフィット円S1との交点におけるフィット円S1の接線をT1としてもよい。同様に、例えば、y軸に平行で、かつ、フィット円S2の中心を通る直線をT2としてもよいし、分割線3120とフィット円S2との交点におけるフィット円S2の接線をT2としてもよい。
【0053】
また、直線T1を用いて領域を削除するのではなく、例えば、豚領域3100のうち、フィット円S1の中心よりもx座標値が大きく、かつ、フィット円S1の円周上の各点よりもx座標値が大きい範囲の領域を削除してもよい。同様に、例えば、豚領域3100のうち、フィット円S2の中心よりもx座標値が小さく、かつ、フィット円S2の円周上の各点よりもx座標値が小さい範囲の領域を削除してもよい。
【0054】
また、上記のステップS104では豚領域3100における頭部分と尻尾部分の両方を除去したが、例えば、両方を除去するのではなく、いずれか一方のみを除去してもよい。更に、除去(削除)対象となった領域の面積が所定の閾値以下である場合は、当該領域を除去しないようにしてもよい。
【0055】
Step7:最後に、加工部104は、上記のStep6で除去された部分(頭部分及び尻尾部分)に対応する点群(つまり、投影画像3000を作成する際に頭部分及び尻尾部分に投影される点群)を点群データ2000から除去する。
【0056】
図5に戻る。ステップS104に続いて、指標値算出部105は、補正投影面積と、姿勢補正値と、撮影高さ補正値と、体長及び体幅とを指標値として算出する(ステップS105)。以下それぞれの指標値の算出方法について説明する。
【0057】
≪補正投影面積≫
上記のステップS103で点群データ2000から投影画像3000を作成する際に、豚Pの体表面の傾きが失われてしまう。このため、豚領域3100の面積は、当該豚領域3100に対応する豚Pの体表面の面積よりも小さくなってしまう。そこで、豚領域3100の面積を、豚Pの体表面の傾きを考慮して補正した補正投影面積を算出する。
【0058】
上記のステップS103で隣接する点同士の間隔が1.0cmとなるようにリサンプリングされた場合、投影画像3000の画素間の間隔も1,0cmとなる。したがって、
図10に示すように、(x,y)=(4,6),(5,6),(4,5),(5,5)の位置にある4つの画素が豚領域3100に含まれている場合、これら4つの画素で囲まれる領域V
1(この領域を「単位領域」を表す。)の面積は1.0cm
2となる。同様に、単位領域V
2~V
5の面積も1.0cm
2となる。豚領域3100の面積は、当該豚領域3100に含まれる単位領域の面積の合計により算出される。
【0059】
このとき、例えば、点群データ2000に含まれる点のうち、(x,y)=(4,1),(4,2),(4,3),(4,4),(4,5),(4,6)にそれぞれ対応する点のz座標値がZ1=1.0であり、(x,y)=(5,1),(5,2),(5,3),(5,4),(5,5),(5,6)にそれぞれ対応する点のz座標値がZ2=1.5であったとする。この場合、単位領域V1~V5は豚Pの体表面の傾きが失われていることになる。
【0060】
そこで、
図10に示すように、1.0/sinθ≒1.12により単位領域V
1~V
5のx軸方向の辺を補正して(つまり、1.0/sinθを乗じて)、補正後単位領域W
1~W
5とする。そして、単位領域V
1~V
5の面積の代わりに、補正後単位領域W
1~W
5の面積を用いて、豚領域3100の面積を算出する。この面積が補正投影面積である。なお、
図10に示す例では、単位領域のx軸方向の辺を補正したが、y軸方向の辺が補正されてもよいし、x軸方向の辺とy軸方向の辺の両方が補正されてもよい。
【0061】
≪姿勢補正値≫
豚Pが首を上げている場合と逆に首を下げている場合とでは豚Pの姿勢が異なるため、体重の推定精度に影響を与えることがある。そこで、姿勢補正値を指標値として算出する。
【0062】
点群データ2000に含まれる点のうち、
図6で説明した分割線3120上の点(x,y)に対応する点(x,y,z)を近似する多項式関数をfとする。すなわち、z≒f(x,y),(ただし、(x,y)は分割線3120上の点)となる多項式関数をfとする。このような関数fは、例えば、polyfit等のライブラリにより求めることが可能である。
【0063】
そして、多項式関数fの所定の係数(例えば、xの2次の係数、yの2次係数、又はxyの係数等)を姿勢補正値とする。
【0064】
なお、上記では、(x,y)を分割線320上の点として、z=f(x,y)となる多項式関数fを求めたが、これに限られず、例えば、所定のxz平面(例えば、y=0であるxz平面)で、点群データ2000に含まれる点(x,z)を近似する多項式関数f(つまり、z≒f(x)となる多項式関数f)を求めてもよい。この場合も、多項式関数fの所定の係数(例えば、xの2次の係数等)を姿勢補正値とすればよい。
【0065】
≪撮影高さ補正値≫
撮影者の身長や手の長さ等によってカメラ装置20から豚Pまでの距離が異なり、体重の推定精度に影響を与えることがある。そこで、撮影高さ補正値を指標値として算出する。
【0066】
点群データ2000に含まれる点のうち、x=0かつy=0でz座標値が最も小さい点と、原点(つまり、カメラ装置20のカメラ位置)との間の直線距離を撮影高さ補正値とすればよい。
【0067】
≪体長及び体幅≫
豚Pによって体長及び体幅が異なるため、体重の推定精度に影響を与えることがある。そこで、体長及び体幅を指標値として算出する。
【0068】
図11に示すように、点3110(つまり、xy平面の原点)を通り、かつ、豚領域3100の境界上の点を端点し、分割線3120に直交する直線3130を算出する。そして、この直線3130の長さを体幅とすればよい。
【0069】
また、
図12に示すように、上記のStep7での除去後の点群データ2100に含まれる点うち、分割線3120上の点(x,y)に対応する点(x,y,z)を近似する関数をfとして、この関数fが表す曲線2110の長さを体長とすればよい。
【0070】
図5に戻る。上記のステップS101~ステップS105が学習データ毎に繰り返し実行された後、回帰式算出部106は、各学習データに対応する指標値及び正解体重を用いて、回帰式を算出する(ステップS106)。すなわち、回帰式算出部106は、パラメータa
1,a
2,a
3,a
4,bを適当な初期値に初期化した上で、学習データ毎に、当該学習データに対応する指標値を用いて上記の式(1)により推定体重を算出する。そして、回帰式算出部106は、この推定体重と、当該学習データに対応する正解体重との差を算出した上で、学習データ毎にそれぞれ算出された差の二乗の和が最小となるように、パラメータa
1,a
2,a
3,a
4,bを推定する。これにより、豚Pの体重を推定するための回帰式が算出される。
【0071】
<体重推定処理>
以降では、本実施形態に係る体重推定処理について、
図13を参照しながら説明する。
図13は、本実施形態に係る体重推定処理の一例を示すフローチャートである。なお、上記の式(1)に示す回帰式のパラメータa
1,a
2,a
3,a
4,bは、上記の学習処理で推定されたものを用いる。
【0072】
まず、取得部101は、体重の推定対象の豚Pを撮影することで生成された点群データを記憶部110(又はカメラ装置20)から取得する(ステップS201)。
【0073】
次に、前処理部102は、
図5のステップS102と同様に、上記のステップS201で取得された点群データに対して所定の前処理を行う(ステップS202)。
【0074】
次に、画像作成部103は、
図5のステップS103と同様に、上記のステップS202で前処理が行なわれた点群データ(又は、前処理が行なわれない場合は上記のステップS201で取得された点群データ)をxy平面に投影した投影画像を作成する(ステップS203)。
【0075】
次に、加工部104は、
図5のステップS104と同様に、上記のステップS202で前処理が行なわれた点群データ(又は、前処理が行なわれない場合は上記のステップS201で取得された点群データ)と、上記のステップS203で作成された投影画像とに対して、豚Pの頭部分や尻尾部分を除去する加工を行う(ステップS204)。
【0076】
次に、指標値算出部105は、補正投影面積と、姿勢補正値と、撮影高さ補正値と、体長及び体幅とを指標値として算出する(ステップS205)。
【0077】
そして、体重推定部107は、上記のステップS205で算出された指標値を用いて、上記の式(1)に示す回帰式により豚Pの体重を推定する(ステップS206)。これにより、豚Pの体重が推定される。
【0078】
以上のように、本実施形態に係る体重推定システム1は、体重推定に悪影響を与える可能性が高い部分(つまり、豚Pの頭部分及び首部分)の画像領域を除去した上で所定の指標値を算出し、これらの指標値を用いた回帰式により体重を推定する。これにより、高い精度で豚の体重を推定することが可能となる。
【0079】
本発明は、具体的に開示された上記の実施形態に限定されるものではなく、請求の範囲の記載から逸脱することなく、種々の変形や変更、既知の技術との組み合わせ等が可能である。
【符号の説明】
【0080】
1 体重推定システム
10 体重推定装置
20 カメラ装置
100 体重推定処理部
101 取得部
102 前処理部
103 画像作成部
104 加工部
105 指標値算出部
106 回帰式算出部
107 体重推定部
110 記憶部