以下、本発明を実施するための形態について説明する。なお、以下の実施例は開示の技術を限定するものではない。そして、各実施の形態は、処理内容を矛盾させない範囲で適宜組み合わせることが可能である。
[第1の実施の形態]
<情報処理システムの構成例>
図1は、情報処理システム10の構成例を表す図である。
情報処理システム10は、情報処理装置100と画像出力装置200、記憶装置300、及び表示装置400を備える。
情報処理装置100は、例えば、画像出力装置200から出力された画像(又は入力画像)の画像データから学習データを生成する。その際、情報処理装置100は、入力画像のうち特定の部位を表す部分領域の画像データを抽出し、部分領域の画像データに対して、拡大や縮小、回転などの部位変換処理を施す。そして、情報処理装置100は、部位変換処理後の画像データを、部分領域が抽出された元の入力画像の画像データに合成することで、学習データを生成する。このように、情報処理装置100では、1枚の入力画像に対して、複数のバリエーションの画像を生成し、複数の画像の画像データを学習データとして生成する。学習データは、例えば、他の装置において、監視カメラで撮像された画像に対して、機械学習により画像認識が行われる際の学習データとして用いられる。情報処理装置100は、例えば、学習データ拡張装置でもある。
情報処理装置100は、領域抽出部110と領域分割部120、部位抽出部130、部位変換部140、及び部位合成部150を備える。
領域抽出部110は、画像出力装置200から出力された画像(又は入力画像)の画像データに対して、認識対象の領域を推定(又は抽出)し、推定した認識対象の領域の画像データを抽出する。例えば、図2(A)が入力画像のとき、領域抽出部110は、認識対象の領域として、図2(B)に示す「人」の領域を推定し、推定した「人」の領域の画像データを、入力画像の画像データから抽出する。領域抽出処理の例は、動作例で説明する。図1に戻り、領域抽出部110は、推定した領域の画像の画像データを領域分割部120へ出力する。
領域分割部120は、領域抽出部110で抽出された認識対象領域の画像を、1又は複数の部分領域の画像に分割する。例えば、図2(B)が領域抽出部110で抽出された「人」の領域を表す画像の場合、領域分割部120は、図2(B)に示す「人」の画像を、図3(A)に示す、「頭部」、「胴体」、「右腕」、「左腕」、「右足」、「左足」の6つの部位を表す6つの部分領域に分割する。部分領域は、例えば、入力画像に写っている人物に対して、その人物の特定の部位を表す画像となっている。領域分割処理の例は、動作例で説明する。図1に戻り、領域分割部120は、部分領域の画像の画像データを部位抽出部130へ出力する。
部位抽出部130は、入力画像に対する認識対象の特定の部位に対応する部分領域の画像データを、入力画像から抽出する。例えば、部位抽出部130は、図3(A)に示す分割された部分領域に基づいて、図2(B)に示す認識対象の領域を示す画像から、図3(B)に示す特定の部位に対応する部分領域の画像を抽出する。部位抽出処理の例は、動作例で説明する。図1に戻り、部位抽出部130は、抽出した部分領域の画像の画像データを、部位変換部140へ出力する。
部位変換部140は、部位抽出部130で抽出された部分領域の画像の画像データに対して、部位変換処理(以下、「変換処理」と称する場合がある。)を施す。変換処理としては、例えば、拡大、縮小、平行移動、回転、色変化、コントラスト変化などがある。例えば、図3(B)に示す部分領域の画像に対して、部位変換部140は、回転処理を施すことで、図4(A)から図4(C)に示す3つの画像を生成する。変換処理の例は、動作例で説明する。図1に戻り、部位変換部140は、変換処理後の部分領域の画像の画像データを、部位合成部150へ出力する。
部位合成部150は、部位変換部140で変換処理された部分領域の画像の画像データと、部分領域以外の認識対象領域の画像データとを合成する。例えば、部位変換部140で変換処理された部分領域の画像を、図4(A)から図4(C)とする。また、部分領域以外の認識対象の画像を、図4(D)とする。この場合、部位合成部150は、図4(A)から図4(C)に示す画像の各々と、図4(D)に示す画像とを合成する。図5(A)から図5(C)は、合成画像の例を表す。部位合成処理の例は、動作例で説明する。部位合成部150は、合成後の画像データを学習データとして、記憶装置300に記憶したり、表示装置400へ表示したりする。
画像出力装置200は、例えば、学習データとして用いる画像の画像データを生成し、生成した画像の画像データを情報処理装置100へ出力する。
記憶装置300は、例えば、部位合成部150から出力された合成画像の画像データを記憶する。また、記憶装置300は、例えば、領域抽出部110から部位合成部150において、各処理を行う際に画像データなどを記憶したり、処理の際に読み出されたりすることができる。記憶装置300は、例えば、HDD(Hard Disk Drive)や半導体メモリなどの記憶装置であってよい。
表示装置400は、部位合成部150から合成画像の画像データを受け取り、合成画像を表示する。
なお、記憶装置300と表示装置400は、情報処理装置100内に含まれてもよい。
<動作例>
図6は、情報処理装置100における動作例を表すフローチャートである。
情報処理装置100は、処理を開始すると(S10)、画像出力装置200から画像(又は入力画像)を取得する(S11)。例えば、領域抽出部110は、画像出力装置200から出力された画像の画像データを入力する。
次に、情報処理装置100は、領域抽出処理を行う(S12)。以下、領域抽出処理の例について説明する。
<1.領域抽出処理>
図7は、領域抽出処理の例を表すフローチャートである。
領域抽出部110は、領域抽出処理を開始し(S120)、画像データを取得すると(S121)、取得した画像データに対してセグメンテーション(又は領域分割)技術を適用する(S122)。
セグメンテーション技術は、例えば、入力画像の各画素の画素値、具体的にはRGB(Red Green Blue)やCMYK(Cyan Magenta Yellow Key plate)の分布が一定範囲内にある領域を入力画像から抽出することで、入力画像から認識対象物を抽出する技術である。本処理(S122)では、公知のセグメンテーション技術が適用されてよい。そのような例として、Anna Khoreva,Rodrigo Beneson,Jan Hosang,Matthias Hein,Bernt Schiele,“Simple Does It:Weakly Supervised Instance and Semantic Segmentation”,CVPR,2017がある。
次に、領域抽出部110は、セグメンテーション技術で得られた認識対象の領域を記憶装置300へ保存する(S123)。例えば、領域抽出部110は、セグメンテーション技術により、図2(B)に示す画像の画像データを記憶装置300へ記憶する。
図7に戻り、そして、領域抽出部110は、領域抽出処理を終了する(S124)。
以上が領域抽出処理の例である。
図6に戻り、次に、情報処理装置100は、領域分割処理を行う(S13)。以下、領域分割処理の例について説明する。領域分割処理については3つの例がある。以下、順番に説明する。
<2.領域分割処理>
<2-1.1番目の領域分割処理の例>
図8は、領域分割処理の1番目の例を表すフローチャートである。1番目の例は、例えば、領域抽出処理(S12)で抽出された認識対象の領域の画像に対して、予め用意したモデル画像(以下では、「モデル」と称する場合がある。)との類似度に基づいて、部位を推定して領域を分割する例である。
図8に示すように、領域分割部120は、領域分割処理を開始すると(S130)、領域抽出部110で得られた認識対象の領域を、記憶装置300から読み出す(S131)。例えば、図9(A)は、記憶装置300から読み出された認識対象の領域を表す画像の例である。
図8に戻り、次に、領域分割部120は、あらかじめ定義した部分領域に関するモデル画像の画像データを記憶装置300から読み出す(S132)。例えば、図9(B)はモデル画像の例を表す。図9(B)の例は、「右腕」のモデル画像である。
図8に戻り、次に、領域分割部120は、部分領域に関するモデル画像の画像データを用いて、認識対象の領域を走査し、モデル画像に対する認識対象画像の類似度を算出する(S133)。
ここで、類似度の算出例を説明する。モデル画像の高さをh、幅をwとする。また、モデル画像の座標(又は画素。以下では、「座標」と称する場合がある。)(x’,y’)の画素値TをT(x’,y’)とする。また、認識対象画像の座標(x,y)の画素値IをI(x,y)とする。領域分割部120は、類似度R(x,y)を、以下の式により算出する。
式(1)で、R(x,y)は、例えば、正規化相互相関関数を表している。式(1)に示すように、類似度R(x,y)は、認識対象画像Iの画素値I(x,y)を、モデル画像の高さhと幅hまで順次加算したときの画素値I(x+x’,y+y’)と、モデル画像Tの画素値T(x’,y’)との乗算値を正規化した値を表す。
例えば、領域分割部120は、記憶装置300から認識対象の画像の画像データと、モデル画像の画像データ、及び式(1)とを読み出し、式(1)にこれらの画像データ(又は各画素の画素値)を代入することで、類似度R(x,y)を算出する。
なお、式(1)は、類似度の一例である。例えば、認識対象画像Iの画素値I(x,y)とモデル画像Tの画素値T(x’,y’)との差分絶対値和(SAD(Sum of Absolute Difference))や差の2乗和(SSD(Sum of Squared Difference))などを類似度としてもよい。或いは、マッチング処理における公知の手法により、類似度が算出されてもよい。
次に、領域分割部120は、認識対象の領域内で類似度が最も高い位置を記憶装置300に保存する(S134)。例えば、領域分割部120は、類似度R(x,y)が最も高いとき(又は最も「1」に近づいたとき)の画素の位置座標の(x,y)を算出する。
図9(C)は、例えば、「右腕」のモデル画像に対して、類似度R(x,y)が最も高いときの座標(x,y)の例を表している。位置座標(x,y)は、例えば、右腕の分割領域において、最も左上の座標を表す。領域分割部120は、この位置座標(x,y)と、モデル画像(又は領域)の高さh、及び幅w、更に、どの部位かを表す情報を、分割領域に関する情報として、記憶装置300に記憶する。
図8に戻り、次に、領域分割部120は、他に抽出する部分領域が存在するか否かを判定する(S135)。例えば、領域分割部120は、モデル画像として、「胴体」の画像や「頭部」の画像などがあり、これらのモデル画像と認識対象の画像とで類似度を算出したか否かを判定する。
領域分割部120は、他に抽出する部分領域があれば(S135でYes)、S132へ移行して、処理を繰り返す。例えば、領域分割部120は、他の部分領域のモデル画像があって、その部分領域の類似度を算出していないとき(S135でYes)、その部分領域のモデル画像を記憶装置300から読み出して、その部分領域の類似度を算出する(S132~S134)。
一方、領域分割部120は、他に抽出する部分領域がなければ(S135でNo)、領域分割処理を終了する(S136)。
以上が、1番目の領域分割処理の例である。
<2-2.2番目の領域分割処理の例>
図10は、2番目の領域分割処理の例を表すフローチャートである。2番目の例は、姿勢推定技術(又は姿勢推定処理)を利用して、領域抽出処理(S12)で得た画像を分割する例である。
領域分割部120は、領域分割処理を開始すると(S140)、記憶装置300から認識対象領域の画像を取得し(又は読み出し)(S141)、取得した画像に対して姿勢推定技術を適用する(S142)。
姿勢推定技術として、例えば、Bin Fan and Zeng-Fu Wang,“Pose Estimation Of Human Body Based On Silhouette Images”,International Conference on Information Acquisition,pages 296-300,2004がある。
図11(A)と図11(B)は、この姿勢推定技術を説明するための図である。最初に、領域分割部120は、取得した画像(ここでは、「シルエット画像」と称する場合がある。)の各画素(x,y)について、シルエット画像内に位置するか否かを確認する。具体的には、図11(A)の例では、領域分割部120は、各画素(x,y)の画素値に基づいて、閾値判定などを行うことで、各画素(x,y)が「人物」の枠内にあるか否かを判定する。例えば、枠内にあるときは、I(x,y)=0、枠外にあるときは、I(x,y)=1とする。
次に、領域分割部120は、この結果に基づいて、以下に示すエネルギー関数を利用して、エネルギー関数が最小となる点P(x,y)を算出する。
式(2)において、rは円の半径、αは半径rの影響度合い(infection degree)をそれぞれ表す。また、積分領域Dは、シルエット画像内の円(又は入力画像の人物内に含まれる円)を表す。
式(2)に示すエネルギー関数は、例えば、シルエット画像内に円を保ち、かつ、円の半径を最大にするような円の中心を算出する関数であり、その中心が点P(x,y)となる。本姿勢推定技術では、この中心P(x,y)を骨格点としている。
本姿勢推定技術は、例えば、骨格の形状はどのような姿勢でも直線である場合が多く、関節により骨格が接続される点に着目している。
そのため、領域分割部120は、式(2)で算出した骨格点P(x,y)からシルエット画像のエッジ部分までの直線の長さが一定以上の直線を探索し、その直線に沿って、式(2)に示すエネルギー関数が最小となる点Pを順次算出する。例えば、領域分割部120は、エネルギー関数を利用して、胴体部分における円の中心から、直線方向へ(又は骨格に沿って)、骨格点P(x,y)を探索する処理を行っている。
そして、領域分割部120は、探索した骨格点P(x,y)を接続して、例えば、図11(B)に示す骨格を推定する。この場合、領域分割部120は、例えば、モデル画像と比較して、骨格が「右腕」、「左腕」、「右足」など、認識対象画像の特定の部位を求める。
例えば、領域分割部120は、以下の処理を行う。すなわち、領域抽出部110で抽出された画像に対して、各画素の画素値に基づいて、I(x,y)を算出する。また、領域抽出部110は、記憶装置300から式(2)を読み出し、エネルギー関数が最小となる点P(x,y)を算出する。領域抽出部110は、領域抽出部110で抽出された画像について、各画素の画素値に基づいて、点P(x,y)からこの画像のエッジ点までの距離dを求める。そして、領域抽出部110は、点P(x,y)からその距離dが一定以上となっているエッジ点までの直線上において、式(1)を利用してエネルギー関数が最小となる点P(x’,y’)を順次算出する。領域分割部120は、点P(x,y)から各点P(x’,y’)を結合した線分を、骨格として、各点P(x,y),(x’,y’)を記憶装置300に記憶する。また、領域分割部120は、記憶装置300からモデル画像の骨格点を読み出し、算出した各骨格と比較して、各骨格と対応する部位の情報も記憶装置300に記憶する。
図10に戻り、次に、領域分割部120は、姿勢推定技術で得られた結果を記憶装置300へ保存する(S143)。例えば、領域分割部120は、各骨格点Pの座標(x,y),(x’,y’)を記憶装置300へ保存する。
そして、領域分割部120は、領域分割処理を終了する(S143)。
以上が、2番目の領域分割処理の例である。
<2-3.3番目の領域分割処理の例>
図12は、3番目の領域分割処理の例を表すフローチャートである。3番目の例は、領域抽出部110で抽出された認識対象の領域の画像をN×M(Nは縦方向(又は高さ方向、或いはy軸方向)の分割数、Mは横方向(又は幅方向、或いはx軸方向)の分割数であり、N,Mは1以上の整数)分割する例である。具体的には、情報処理装置100は、例えば、入力画像の各画素を、N×Mの各領域に分割する例である。
領域分割部120は、領域分割処理を開始すると(S150)、領域抽出部110で得られた認識対象の画像を記憶装置300から読み出す(S151)。
次に、領域分割部120は、予め設定した領域分割数を記憶装置300から読み出す(S152)。
図13(A)と図13(B)は、3番目の領域分割処理の例を表す図である。図13(A)から図13(B)は、画像を1×2(N=1,M=2)に分割する例である。NとMは、例えば、記憶装置300に記憶されており、領域分割部120は処理の際に記憶装置300から読み出して、分割数を設定する。
図12に戻り、次に、領域分割部120は、領域分割数を基に認識対象の画像を分割する(S153)。図13(B)の例では、領域分割部120は、画像を1×2に分割する。
図12に戻り、次に、領域分割部120は、分割した領域を記憶装置300に記憶する(S154)。例えば、領域分割部120は、分割した各領域の位置座標(又は画素)を記憶装置300に記憶する。図13(B)の例では、領域分割部120は、分割した左側の領域に属する各画素の位置座標と、右側の領域に属する各画素の位置座標とを、記憶装置300に記憶する。
図12に戻り、そして、領域分割部120は、領域分割処理を終了する(S155)。
以上が、3番目の領域分割処理の例である。
図6に戻り、次に、情報処理装置100は、部位抽出処理を行う(S16)。以下、部位抽出処理の例について説明する。
<3.部位抽出処理>
図14は、部位抽出処理の例を表すフローチャートである。
部位抽出部130は、部位抽出処理を開始すると(S160)、領域分割部120で得られた処理結果を記憶装置300から読み出す(S161)。
図15(A)は、領域分割部120において1番目の領域分割処理が行われた場合の部位抽出処理の例を表す図である。1番目の領域分割処理では、分割した各領域の左上の画素の位置座標(x,y)とその領域の高さhと幅w、及びどの部位かを表す情報が算出され、記憶装置300に処理結果として記憶された。従って、領域分割部120は、分割した各領域の左上の画素の位置座標(x,y)と、モデル画像の高さhと幅w、及び部位の情報を記憶装置300から読み出す。
また、図15(B)は、領域分割部120において2番目の領域分割処理が行われた場合の部位抽出処理の例を表す図である。2番目の領域分割処理では、各骨格の座標(x,y),(x’,y’)と部位の情報とが算出され、記憶装置300に処理結果として記憶された。従って、領域分割部120は、各骨格の座標(x,y),(x’,y’)と部位の情報とを記憶装置300から読み出す。
さらに、図15(C)は、領域分割部120において3番目の領域分割処理が行われた場合の部位抽出処理の例を表す図である。3番目の領域分割処理では、分割した各領域に含まれる画素の位置座標(x,y)が処理結果として記憶装置300に記憶された。従って、領域分割部120は、分割した各領域に含まれる各画素の位置座標(x,y)を記憶装置300から読み出す。
図14に戻り、次に、部位抽出部130は、読み出した処理結果から領域又は部位を1つ選択する(S162)。例えば、記憶装置300には、どの領域又は部位から順番に部位抽出処理を行うかを表す情報が記憶されており、部位抽出部130は、1番目の領域又は部位の情報を読み出す。例えば、部位抽出部130は、図15(A)と図15(B)の例では、「右腕」の部位を1つ選択し、図15(C)の例では、「左側」の領域を選択する。
例えば、部位抽出部130は、選択した領域又は部位に含まれる各画像の画素値を、記憶装置300から読み出して、S162の処理を行う。これにより、情報処理装置100は、図15(A)から図15(C)に示すように、「右腕」の部位や「左側」の領域の画像が、認識対象画像から抽出することができる。
図14に戻り、次に、部位抽出部130は、選択した領域又は部位に対して部位変換処理(以下、「変換処理」と称する場合がある。)を実施するか否かを判定する(S163)。例えば、記憶装置300には、変換処理を行う領域又は部位に関する情報が記憶され、部位抽出部130は、S162で選択した領域又は部位と、記憶装置300に記憶された領域又は部位とが一致するか否かにより判定してもよい。或いは、部位抽出部130は、例えば、選択した領域又は部位に関する情報を、表示装置400へ出力し、表示装置400でその情報を表示して、ユーザにより部位変換処理を実施するか否かを選択させるようにしてもよい。この場合、部位抽出部130は、ユーザの選択結果を入力し、その選択結果に応じて、変換処理を実施するか否かを判別してもよい。
部位抽出部130は、選択した領域又は部位に変換処理を実施すると判定したとき(S163でYes)、処理フラグを「1」に設定し、処理フラグを記憶装置300に記憶する(S164)。
そして、部位抽出部130は、部位抽出処理を実施していない領域又は部位が存在するか否かを判定する(S165)。例えば、部位抽出部130は、S163の処理を行った領域又は部位についてはフラグを「1」に設定することで、部位抽出処理を実施していない領域又は部位の存在を判定してもよい。
部位抽出部130は、部位抽出処理を実施していない領域又は部位が存在するとき(S165でYes)、S162へ移行して、そのような領域又は部位に対して上述した処理を繰り返す(S162~S165)。
一方、部位抽出部130は、部位抽出処理を実施していない領域又は部位が存在しないとき(又は認識対象画像のすべての領域又は部位について部位抽出処理を行ったとき)(S165でNo)、部位抽出処理を終了する(S166)。
一方、部位抽出部130は、選択した領域又は部位に変換処理を実施しないと判定したとき(S163でNo)、処理フラグを設定することなく、S165へ処理を移行する。
上述したように、部位抽出処理により、例えば、図15(A)から図15(C)に示す、「右腕」の画像や、「左側」の画像が、認識対象画像から抽出される。
図6に戻り、次に、情報処理装置100は、部位変換処理を行う(S17)。以下、部位変換処理の例について説明する。
<4.部位変換処理>
図16は、部位変換処理の例を表すフローチャートである。
部位変換部140は、部位変換処理を開始すると(S170)、領域分割部120で得られた処理結果を記憶装置300から読み出す(S171)。例えば、部位抽出部130におけるS161(図14)の処理と同様の処理を行う。すなわち、部位変換部140は、分割した各領域の左上の画素の位置座標(x,y)と、その領域の高さhと幅w、及び部位の情報を読み出したり、分割した各領域に含まれる各画素の位置座標(x,y)を読み出したりする。
次に、部位変換部140は、読み出した処理結果から領域又は部位を1つ選択する(S172)。この処理も、例えば、部位抽出部130におけるS162(図14)と同様の処理を行う。
次に、部位変換部140は、選択した領域又は部位について、処理フラグが「1」であるか否かを判定する(S173)。例えば、部位変換部140は、選択した領域又は部位に対応する処理フラグとして「1」が記憶装置300に記憶されているか否かを判定する。
部位変換部140は、選択した領域又は部位の処理フラグが「1」のとき(S173でYes)、選択した領域又は部位に対して部位変換処理を行う(S174)。
部位変換部140は、例えば、拡大又は縮小による部位変換処理を行う場合は、以下の式を用いて、部位変換処理を行う。
式(3)において、(x,y)は変換前の各画素の位置座標、(x’,y’)は変換後の各画素の位置座標をそれぞれ表す。また、式(3)において、Zxは画像の幅方向(又は横方向、或いはx軸方向)の拡大率又は縮小率を表し、Zyは画像の高さ方向(又は縦方向、或いはy軸方向)の拡大率又は縮小率を表す。
また、部位変換部140は、例えば、平行移動による部位変換処理を行う場合は、以下の式を用いて、部位変換処理を行う。
式(4)において、Txは画像の幅方向の平行移動量を表し、Tyは画像の高さ方向の平行移動量を表す。
さらに、部位変換部140は、例えば、回転による部位変換処理を行う場合は、以下の式を用いて、部位変換処理を行う。
式(5)において、θは半時計回り方向における回転角を表す。
さらに、部位変換部140は、例えば、カラー変換による部位変換処理を行う場合は、以下の式を用いて、部位変換処理を行う。
式(6)において、Rx,y、Gx,y、Bx,yは、部位変換処理前における画素の位置座標(x,y)におけるRGBの各値を表し、R’x、y、G’x,y、B’x,yは、部位変換処理後における画素の位置座標(x,y)におけるRGBの各値を表す。
コントラスト変換など、他の部位変換処理であってもよく、いずれの場合でも、部位変換部140では、公知の手法により、変換処理を行うようにしてもよい。
なお、部位変換部140は、記憶装置300から、部位変換処理に応じた式(例えば式(3)から式(6)など)を読み出して、部位抽出部130で抽出した領域又は部位内の各画素の画素値を式に代入し、変換後の位置座標や画素値を得ることで、変換処理(S174)を行う。
図17(A)は、「右腕」の部位に対して、回転による部位変換処理を行った場合の画像の例を表す図である。また、図17(B)は、「左側」の領域に対して、縮小、拡大、平行移動による各部位変換処理を行った場合の画像の例を表す図である。
図16に戻り、次に、部位変換部140は、部位変換処理結果を記憶装置300に保存する(S175)。例えば、部位変換部140は、式(3)から式(6)などを用いて変換処理を行った後の各座標位置(x’,y’)や、(R’x、y,G’x,y,B’x,y)を記憶装置300に記憶する。
次に、部位変換部140は、別の変換処理を実施するか否かを判定する(S176)。例えば、部位変換部140は、S174による変換処理を行った後、更に、他の変換処理を行うか否かを判定する。本部位変換部140は、拡大、縮小、平行移動、回転、カラー変化、コントラスト変化などを各々、或いはこれらの変換処理を組み合わせて、部位変換を行うことが可能である。
部位変換部140は、別の変換処理を実施すると判定したとき(S176でYes)、S174へ処理を移行させて、別の変換処理を行う(S174~S175)。
一方、部位変換部140は、別の変換処理を実施しないと判定したとき(S176でNo)、処理を実施していない領域があるか否かを判定する(S177)。例えば、部位変換部140は、変換処理を実施した領域の情報を記憶装置300に記憶し、この情報に基づいて、処理を実施していない領域の有無を判定してもよい。
部位変換部140は、部位変換処理を実施していない領域が存在するとき(S177でYes)、S172に処理を移行して、その領域に対して、上述した処理を繰り返す(S172からS176)。
一方、部位変換部140は、部位変換処理を実施していない領域が存在しないとき(S177でNo)、部位変換処理を終了する(S178)。
以上が、部位変換処理の例である。
図6に戻り、次に、情報処理装置100は、部位合成処理を行う(S19)。以下、部位合成処理の例を説明する。
<部位合成処理の例>
図18は、部位合成処理の例を表すフローチャートである。
部位合成部150は、部位合成処理を開始すると(S190)、領域分割部120で得られた処理結果を記憶装置300から読み出す(S191)。部位合成部150は、例えば、部位抽出部130におけるS161(図14)の処理と同様の処理を行う。
次に、部位合成部150は、読み出した処理結果から領域又は部位を1つ選択する(S192)。この処理も、例えば、部位合成部150は、部位抽出部130におけるS162(図14)と同様の処理を行う。
次に、選択した領域又は部位の処理フラグは「1」であるか否かを判定する(S193)。例えば、部位合成部150は、選択した領域又は部位に対応する処理フラグとして「1」が記憶装置300に記憶されているか否かを判定する。
部位合成部150は、選択した領域又は部位の処理フラグが「1」のとき(S193でYes)、選択した領域又は部位と、選択した領域又は部位に対して部位変換処理で得られた処理結果とを、記憶装置300から読み出す(S194)。例えば、部位合成部150は、選択した部位として、「右腕」、選択した部位に対する変換処理の結果として、変換処理後の座標位置(x’,y’)を、記憶装置300から読み出す。
一方、部位合成部150は、選択した領域又は部位について処理フラグが「1」ではないとき(S193でNo)、S194の処理を行うことなく、S195へ移行する。
部位合成部150は、S194の処理を行った後、又はS193でNoと判定した後、領域分割部120で得られた処理結果を記憶装置300から読み出したものの、選択していない領域又は部位が存在するか否かを判定する(S195)。例えば、部位合成部150は、領域分割処理を行った領域又は部位で、まだ選択していない領域又は部位があるか否かを判定する。
部位合成部150は、選択してない領域又は部位が存在するとき(S195でYes)、そのような領域又は部位を選択して、S193以降の処理を繰り返す(S194)。
一方、部位合成部150は、認識対象画像の中で選択していない領域又は部位が存在しないとき(S195でNo)、記憶装置300から読み出した、部位変換処理で得られた結果が存在する領域又は部位同士の全ての組み合わせを算出する(S196)。例えば、図17(A)に示すように、「右腕」の部位に対して3つの回転処理結果が記憶装置300に記憶された場合、部位合成部150は、組合せとして、3つの組合せがあることを算出する。部位合成部150は、1つの領域又は部位に対して、部位変換処理により、いくつの変換処理結果を得たかを確認することで、組合せを算出する。1つの領域又は部位に対する変換処理結果の個数は、例えば、部位変換部140により処理を行った後、記憶装置300に記憶され、部位合成部150は記憶装置300から個数を読み出すことで、組合せを算出してもよい。
図19に戻り、次に、部位合成部150は、領域抽出部110で得られた認識対象の画像を記憶装置300から読み出す(S197)。例えば、部位合成部150は、認識対象の画像として、図2(B)に示す画像の画像データを記憶装置300から読み出す。
図19に戻り、次に、部位合成部150は、S196で算出した組み合わせから1つを選択する(S198)。例えば、部位合成部150は、図17(A)に示す3つの部位変換処理結果のうち、左側の処理結果を選択する。
図19に戻り、次に、部位合成部150は、組み合わせから選択した処理結果に対応する領域又は部位を、S197で読み出した認識対象画像から取り除く処理を行う(S200)。
図20(A)は、組み合わせから選択した部位が「右腕」の場合、認識対象画像から「右腕」を取り除いた後の画像の例を表す図である。図20(A)に示すように、「右腕」がない人物の画像となっている。
例えば、部位変換処理を行った画像の座標位置(又は画素)は、部位変換部140により、記憶装置300に記憶されている。そのため、部位合成部150は、その座標位置を記憶装置300から読み出して、その座標位置にある、S197で読み出した認識対象画像の画素値を、所定値(例えば、「0」)に変換する。部位合成部150は、S197で記憶装置300から読み出した人物の画像の画素値に対して、「右腕」の部位を表す各画素の画素値を所定値にすることで、図20(A)に示す画像を得ることができる。このように、部位合成部150は、例えば、認識対象の領域において、部分領域の各画素に対応する画素の画素値を所定値に変換することで、部分領域以外の認識対象の領域の画像データを生成する。
図19に戻り、次に、該当する領域を取り除いた認識対象の画像に、部位変換処理で得られた結果を合成する(S201)。
図20(B)は、部位変換処理で得られた結果を表す画像の例を表し、図20(E)は、その画像を合成した後の画像の例を表す。
例えば、部位合成部150は、S200で取得した画像(例えば図20(A))の各画素の画素値に、部位変換処理で得られた画像(例えば図20(B))の各画素の画素値を加算することで、合成画像(例えば図20(E))の画像データを得ることができる。
図19に戻り、部位合成部150は、合成結果を記憶装置300に保存する(S202)。例えば、部位合成部150は、合成画像の各画素の画素値を記憶装置300に記憶する。
次に、部位合成部150は、処理を実施していない組み合わせが存在するか否かを判定する(S203)。図20(A)の例では、部位変換処理により、更に、2つの回転画像が得られ、その処理結果が記憶装置300に記憶されている。部位合成部150は、例えば、部位変換処理により得られた結果が、記憶装置300に記憶されたままで部位合成処理(S201)を行っていないか否かかにより判定する。
部位合成部150は、処理を実施していない組み合わせが存在するとき(S203でYes)、S198へ移行して、他の組み合わせに対して上述した処理を繰り返す(S198~S202)。例えば、図20(A)の例では、部位変換処理を行った画像(図20(C)と図20(D))と、S200で取得した画像(図20(A))との組み合わせが存在する。そのため、部位合成部150は、これらの組み合わせに対して、合成画像(図20(F)と図20(G))の画像データを取得する。
図19に戻り、一方、部位合成部150は、処理を実施していない組み合わせが存在しないとき(S203でNo)、別の認識対象の領域又は部位への合成を実施するか否かを判定する(S204)。
部位合成部150は、別の認識対の領域又は部位への合成を実施するとき(S204でYes)、S197へ移行して、上述した処理を繰り返す(S197~S203)。
一方、部位合成部150は、別の認識対の領域又は部位への合成を実施しないとき(S204でNo)、部位合成処理を終了する(S205)。
図20(A)~図20(G)の例では、「右腕」の部位を合成する例について説明した。例えば、別の認識対として、「左腕」や「頭部」などの部位に対する合成を行うときは、部位合成部150は、そのような部位に関する情報や位置座標を記憶装置300から読み出して、部位合成処理(S201)を行う。部位合成部150は、例えば、部位合成処理を行っていない部位に関する情報が記憶装置300に記憶されているか否かにより、S204を判別する。
図21(A)から図21(G)は、領域分割処理として、1×2により認識対象画像を分割した場合の部位合成処理の例を表している。この場合も、部位合成部150は、S197で記憶装置300から読み出した認識対象画像(人全体の画像)から、組み合わせで選択した領域(「左側」の領域)を取り除いた画像(図21(A))を生成する(S200)。そして、部位合成部150は、その画像に対して、部位変換処理で変換した画像(図21(B),図21(C),図21(D))を合成し、合成画像(図21(E),図21(F),図21(G))を得る。
以上、部位合成処理について説明した。
図6に戻り、情報処理装置100は、次に、部位合成処理の結果を表示装置400へ出力する(S20)。
次に、情報処理装置100は、処理を続行するか否かを判定し(S21)、続行するときは(S21でYes)、S11へ移行して、上述した処理を繰り返す(S11~S20)。
一方、情報処理装置100は、処理を続行しないときは(S21でNo)、一連の処理を終了する(S22)。
このように本第1の実施の形態では、情報処理装置100は、認識対象の画像から、特定の部位を表す部分領域の画像データを抽出し、抽出した部分領域の画像に対して変換処理を施す。そして、情報処理装置100は、変換処理された画像データと、部分領域以外の認識対象の画像の画像データとを合成し、合成画像の画像データを生成する。
情報処理装置100では、画像全体に対して変換処理を行うことなく、画像の一部を抽出して、変換処理を行うことで、一部だけ異なる複数の画像を得ることができる。従って、情報処理装置100では、1枚の画像から、画像の一部が変化した、複数枚のバリエーションの画像を収集することが可能となる。よって、画像全体に対して変換処理を施す場合と比較して、本情報処理装置100では、画像の一部が変化した複数枚のバリエーションの画像を、学習データとして収集できることから、学習データのバリエーションを効率的に収集することが可能となる。
この画像データのバリエーションを学習データとして、記憶装置300に記憶しておくことで、例えば、他の画像認識装置などで、多くのバリエーションが存在する、監視カメラから得られた画像の画像データを識別するための機械学習を行うことが可能となる。学習データとして、バリエーションの画像が非常に多く含まれるため、画像認識装置では、監視カメラで得られた画像がどのような画像であるかを精度良く、認識することが可能となる。
[その他の実施の形態]
図22は、情報処理装置100のハードウェア構成例を表す図である。
情報処理装置100は、IF(Interface)170、CPU(Central Processing Unit)171、ROM(Read Only Memory)172、RAM(Random Access Memory)173、及びメモリ174を備える。
IF170は、例えば、画像出力装置200から出力された画像データを入力し、入力した画像データをCPU171へ出力したり、メモリ174に記憶したりする。また、IF170は、CPU171やメモリ174から画像データなどを受け取り、これを、記憶装置300や表示装置400へ出力する。
CPU171は、例えば、ROM172に記憶されたプログラムを読み出して、読み出したプログラムをRAM173にロードし、ロードしたプログラムを実行する。これにより、CPU171は、領域抽出部110、領域分割部120、部位抽出部130、部位変換部140、及び部位合成部150の機能を実現する、CPU171は、例えば、領域抽出部110、領域分割部120、部位抽出部130、部位変換部140、及び部位合成部150に対応する。
なお、CPU171に代えて、MPU(Micro Processing Unit)やDSP(Digital Signal Processor)、FPGA(Field Programmable Gate Array)などのプロセッサやコントローラなどであってもよい。
また、メモリ174は、記憶装置300の代わりとして、情報処理装置100内に設けられてもよい。
以上まとめると、付記のようになる。
(付記1)
入力画像に対する認識対象の特定の部位に対応する部分領域の画像データを、前記入力画像から抽出する部位抽出部と、
抽出した前記部分領域の画像データに対して画像変換処理を施す部位変換部と、
画像変換処理された前記画像データを前記認識対象の画像データに部分合成して学習データを生成する部位合成部と
を備えることを特徴とする情報処理装置。
(付記2)
さらに、前記入力画像に対する認識対象の領域の画像データを前記入力画像から抽出する領域抽出部を備えることを特徴とする付記1記載の情報処理装置。
(付記3)
さらに、記憶装置から読み出した前記特定の部位に対応するモデル画像のモデルデータと前記認識対象の領域の画像データとに基づいて算出した類似度に基づいて、前記認識対象の領域を前記特定の部位に対応する部分領域に分割する領域分割部を備え、
前記部位抽出部は、分割された前記部分領域に基づいて、前記認識対象の領域の画像データから前記部分領域の画像データを抽出することを特徴とする付記2記載の情報処理装置。
(付記4)
前記領域分割部は、前記記憶装置から読み出した以下の式(7)に、前記認識対象の領域の画像の画素(x,y)における画素値I(x,y)、前記モデル画像の画素(x’,y’)における画素値T(x’,y’)を代入することで、前記類似度を算出し、前記類似度が最も高い前記画素(x,y)を探索することで、前記認識対象の領域を前記部分領域に分割することを特徴とする付記3記載の情報処理装置。
(ただし、wはモデル画像のx軸方向の長さ、hはモデル画像のy軸方向の長さをそれぞれ表す)
(付記5)
さらに、前記認識対象の領域の画像における各画素の画素値と閾値とを比較して、各画素が人物の枠内に含まれるか否かを判定し、判定結果をI(x,y)とすると、記憶装置から読み出した以下の式(8)に判定結果I(x,y)を代入することで、エネルギー関数を算出し、算出したエネルギー関数に基づいて、人物の骨格点P(x,y)を接続した前記認識対象の領域の画像に含まれる人物の骨格を推定することで、前記認識対象の領域を前記部分領域に分割する領域分割部を備え、
前記部位抽出部は、分割された前記部分領域に基づいて、前記認識対象の領域の画像データから前記部分領域の画像データを抽出することを特徴とする付記2記載の情報処理装置。
(ただし、rは円の半径、αは半径rの影響度合い(infection degree)、積分領域Dは、入力画像の人物内に含まれる円を表す。)
(付記6)
さらに、前記認識対象の領域の画像の各画素を、Nをy軸方向の分割数、Mをx軸方向の分割数とすると、N×Mの各領域に分割することで、前記認識対象の領域を前記部分領域に分割する領域分割部を備え、
前記部位抽出部は、分割された前記部分領域に基づいて、前記認識対象の領域の画像データから前記部分領域の画像データを抽出することを特徴とする付記2記載の情報処理装置。
(付記7)
前記部位変換部は、前記部分領域の画像データに対して、拡大、縮小、平行移動、回転、カラー変化、コントラスト変化、又はこれらの組み合わせにより、画像変換処理を行うことを特徴とする付記1記載の情報処理装置。
(付記8)
前記部位合成部は、前記認識対象の領域において、前記部分領域の各画素に対応する画素の画素値を所定値に変換して、前記部分領域以外の前記認識対象の領域の画像データを生成し、生成した前記部分領域以外の前記認識対象の領域の画像データと、前記部位変換部で変換処理された前記画像データとを合成することを特徴とする付記2記載の情報処理装置。
(付記9)
前記認識対象は人であって、前記特定の部位は姿勢推定処理により推定された人の何れかの部位であることを特徴とする付記1,2,3,6,及び7のいずれかに記載の情報処理装置。
(付記10)
部位抽出部、部位変換部、及び部位合成部を有する情報処理装置における情報処理方法であって、
前記部位抽出部により、入力画像に対する認識対象の特定の部位に対応する部分領域の画像データを、前記入力画像から抽出し、
前記部位変換部により、抽出した前記部分領域の画像データに対して画像変換処理を施し、
前記部位合成部により、画像変換処理された前記画像データを前記認識対象の画像データに部分合成して学習データを生成する
ことを特徴とする情報処理方法。
(付記11)
入力画像に対する認識対象の特定の部位に対応する部分領域の画像データを、前記入力画像から抽出し、
抽出した前記部分領域の画像データに対して画像変換処理を施し、
画像変換処理された前記画像データを前記認識対象の画像データに部分合成して学習データを生成する
処理をコンピュータに実行させることを特徴とするプログラム。