(57)【特許請求の範囲】
【請求項１】
複数種類の検出対象を含む複数の学習画像の各々から抽出された前記検出対象の種類毎の特徴と前記検出対象の種類とを対応付けて学習した検出器と、入力画像から抽出された特徴とに基づいて、前記入力画像から前記検出対象の候補を種類毎に検出する検出手段と、
前記入力画像における前記検出対象の候補の各々の出現位置に対して、前記複数の学習画像の各々における前記検出対象の種類毎の出現位置を学習した事前分布、及び異なる種類の検出対象間の相対位置関係を学習した事前分布を反映させた結果に基づいて、前記検出対象の候補から検出対象を種類毎に特定する特定手段と、
を含む画像処理装置。
【請求項２】
複数種類の検出対象を含む複数の学習画像の各々における前記検出対象の種類毎の出現位置を学習した事前分布、及び異なる種類の検出対象間の相対位置関係を学習した事前分布に基づいて、入力画像から前記検出対象を種類毎に検出する範囲を特定する特定手段と、
前記複数の学習画像の各々から抽出された前記検出対象の種類毎の特徴と前記検出対象の種類とを対応付けて学習した検出器と、前記特定手段により特定された前記範囲から抽出された特徴とに基づいて、前記入力画像から前記検出対象を種類毎に検出する検出手段と、
を含む画像処理装置。
【請求項３】
前記事前分布を、前記学習画像の各位置における前記検出対象の種類毎の出現確率を値として有する行列、及び一の種類の検出対象から見た他の種類の検出対象の出現確率を値として有する行列に対して、ガウシアンフィルタを用いたぼかし処理を施した行列で表す請求項１また請求項２記載の画像処理装置。
【請求項４】
コンピュータを、請求項１〜請求項３のいずれか１項記載の画像処理装置を構成する各手段として機能させるための画像処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、及び画像処理プログラムに係り、特に、画像から検出対象を検出する画像処理装置、及び画像処理プログラムに関する。
【背景技術】
【０００２】
近年、画像や動画に写る物体を自動的に検出及び識別する技術によって、ＷＥＢ画像検索システムや、実世界の物体をクエリとして商品を検索するシステムなどが実現されている。これらのシステムは、画像に写る物体、例えば、服や動物などを自動的に検出し、対応する商品や物体の名称を提示することを目的としている。ユーザの多様な検索ニーズに答えるためには、物体そのものだけでなく、物体を構成するパーツや要素（例えば服における襟やその形）を自動的に検出する技術が必要となる。そのようなパーツや要素はアトリビュートと呼ばれ、近年、アトリビュート検出の研究開発が進められている。例えば、非特許文献１に記載の技術では、犬の尻尾・足・毛皮、飛行機の翼・窓・金属といった物体を構成するパーツや質感をアトリビュートとして扱っている。また、非特許文献２に記載の技術では、衣服の襟の形、袖の長さ、柄などをアトリビュートとして扱っている。
【０００３】
アトリビュートの検出を実現するためには、アトリビュートを検出すべき物体とみなし、従来の物体検出手法を適用することが簡便な方法である。物体検出の方法について従来いくつかの発明がなされ、開示されてきている。
【０００４】
例えば、特許文献１に記載の発明では、予め用意した物体のテンプレートと入力画像とをマッチングすることにより、入力画像中の検出対象である物体を検出している。さらに、特許文献１に記載の技術では、入力画像のシーン構成を推定し、前景に対してのみテンプレートを走査することで、精度の良い検出を行っている。
【０００５】
また、非特許文献３に記載の技術では、学習画像に含まれる検出対象を示す領域が矩形領域として与えられた学習画像から学習した検出器を用いて、画像全体を走査し検出対象を検出している。この方法では、各学習画像における矩形領域に含まれる画素の画素値から、ＨＯＧ（Histograms of Oriented Gradients）等の特徴量を抽出し（非特許文献４）、ＳＶＭ（Support vector machine）等の識別器を用いて検出対象の検出器を学習する。検出時には、画像に対して任意の大きさの矩形をずらしながら当てはめ、各矩形内の領域から抽出した特徴量を学習した検出器に入力し、その矩形内に検出対象が存在する確率（スコア）を得る。そして、閾値を超えたスコアを持つ矩形の位置を最終的な検出結果としている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１２−１２３５６７号公報
【非特許文献】
【０００７】
【非特許文献１】A. Farhadi, I. Endres, D. Hoiem, and D. Forsyth, "Describing objects by their Attributes", In CVPR, pp. 1778−1785, 2009.
【非特許文献２】H. Chen, A. Gallagher, B. Girod, "Describing Clothing by Semantic Attributes", In ECCV, pp.609-623, 2012.
【非特許文献３】T. Malisiewicz, A. Gupta, A. A. Efros, "Ensemble of Exemplar-SVMs for Object Detection and Beyond", In ICCV, 2011.
【非特許文献４】N. Dalal and B. Triggs, "Histograms of oriented gradients for human  detection", CVPR, 2005.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記非特許文献３に記載の技術では、検出対象を示す領域以外の領域であっても、学習した検出対象の特徴と類似した特徴を持つ領域の場合には、検出対象として誤検出されてしまう場合がある。一般に、アトリビュートは物体を構成するパーツであり、従来の物体検出手法が対象としている物体より小さな領域を検出する必要がある。小さな領域から得られる特徴は情報量が少なくなるため、画像からアトリビュートを検出する場合、物体全体を検出する場合と比較して誤検出が発生し易くなる。
【０００９】
本発明は、このような課題に鑑みてなされたものであり、検出対象が物体のパーツや要素のように画像上での領域が小さい場合でも、検出対象を精度良く検出することができる画像処理装置及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、第１の発明に係る画像処理装置は、複数種類の検出対象を含む複数の学習画像の各々から抽出された前記検出対象の種類毎の特徴と前記検出対象の種類とを対応付けて学習した検出器と、入力画像から抽出された特徴とに基づいて、前記入力画像から前記検出対象の候補を種類毎に検出する検出手段と、前記入力画像における前記検出対象の候補の各々の出現位置に対して、前記複数の学習画像の各々における前記検出対象の種類毎の出現位置を学習した事前分布、及び異なる種類の検出対象間の相対位置関係を学習した事前分布を反映させた結果に基づいて、前記検出対象の候補から検出対象を種類毎に特定する特定手段と、を含んで構成されている。
【００１１】
第１の発明に係る画像処理装置によれば、複数種類の検出対象を含む複数の学習画像の各々から抽出された検出対象の種類毎の特徴と検出対象の種類とを対応付けて学習した検出器と、複数の学習画像の各々における検出対象の種類毎の出現位置を学習した事前分布、及び異なる種類の検出対象間の相対位置関係を学習した事前分布とが予め用意されている。検出手段は、入力画像から抽出された特徴と検出器とに基づいて、入力画像から検出対象の候補を種類毎に検出する。そして、特定手段は、入力画像における検出対象の候補の各々の出現位置に対して、検出対象の種類毎の出現位置の事前分布、及び異なる種類の検出対象間の相対位置関係の事前分布を反映させた結果に基づいて、検出対象の候補から検出対象を特定する。
【００１２】
このように、検出器を用いて入力画像から検出対象を種類毎に検出する際、画像上での検出対象の種類毎の出現位置についての事前分布、及び異なる種類の検出対象間の相対位置関係の事前分布を反映させるため、検出対象が物体のパーツや要素のように画像上での領域が小さい場合でも、検出対象を精度良く検出することができる。
【００１４】
また、第２の発明に係る画像処理装置は、複数種類の検出対象を含む複数の学習画像の各々における前記検出対象の種類毎の出現位置を学習した事前分布、及び異なる種類の検出対象間の相対位置関係を学習した事前分布に基づいて、入力画像から前記検出対象を種類毎に検出する範囲を特定する特定手段と、前記複数の学習画像の各々から抽出された前記検出対象の種類毎の特徴と前記検出対象の種類とを対応付けて学習した検出器と、前記特定手段により特定された前記範囲から抽出された特徴とに基づいて、前記入力画像から前記検出対象を種類毎に検出する検出手段と、を含んで構成することができる。
【００１５】
第２の発明に係る画像処理装置によれば、複数種類の検出対象を含む複数の学習画像の各々から抽出された検出対象の種類毎の特徴と検出対象の種類とを対応付けて学習した検出器と、複数の学習画像の各々における検出対象の種類毎の出現位置を学習した事前分布、及び異なる種類の検出対象間の相対位置関係を学習した事前分布とが予め用意されている。特定手段は、検出対象の出現位置の事前分布、及び異なる種類の検出対象間の相対位置関係の事前分布に基づいて、入力画像から検出対象を種類毎に検出する範囲を特定する。そして、検出手段は、特定手段により特定された範囲から抽出された特徴と検出器とに基づいて、入力画像から検出対象を種類毎に検出する。
【００１６】
このように、画像上での検出対象の出現位置についての事前分布、及び異なる種類の検出対象間の相対位置関係の事前分布を反映させた範囲から検出対象を種類毎に検出するため、誤検出を低減することができると共に、検出処理の高速化を図ることができる。
【００１７】
また、第１または第２の発明に係る画像処理装置において、前記事前分布を、前記学習画像の各位置における前記検出対象の種類毎の出現確率を値として有する行列、及び一の種類の検出対象から見た他の種類の検出対象の出現確率を値として有する行列に対して、ガウシアンフィルタを用いたぼかし処理を施した行列で表すことができる。これにより、学習画像上での検出対象の出現位置の揺らぎを低減し、より検出精度を向上させることができる。
【００１８】
また、第１または第２の発明に係る画像処理装置は、前記複数の学習画像を用いて、前記検出器及び前記事前分布を学習する学習手段を含んで構成することができる。
【００１９】
また、第３の発明に係る画像処理プログラムは、コンピュータを、上記の画像処理装置を構成する各手段として機能させるためのプログラムである。
【発明の効果】
【００２０】
以上説明したように、本発明の画像処理装置及びプログラムによれば、検出器を用いて入力画像から検出対象を検出する際、画像上での検出対象の出現位置についての事前分布、及び異なる種類の検出対象間の相対位置関係の事前分布を反映させる。そのため、検出対象が物体のパーツや要素のように画像上での領域が小さい場合でも、検出対象を精度良く検出することができる、という効果が得られる。
【図面の簡単な説明】
【００２１】
【図１】第１の実施の形態に係る学習処理装置の機能ブロック図である。
【図２】学習処理の一例を示すフローチャートである。
【図３】第１の実施の形態における事前分布学習処理の一例を示すフローチャートである。
【図４】アトリビュート単体の出現位置についての事前分布の学習を説明するための図である。
【図５】アトリビュート間の相対位置関係についての事前分布の学習を説明するための図である。
【図６】アトリビュート単体の出現位置についての事前分布を表す行列の正規化の一例を示す図である。
【図７】アトリビュート間の相対位置関係についての事前分布を表す行列の正規化の一例を示す図である。
【図８】第１の実施の形態における検出処理の一例を示すフローチャートである。
【図９】第１の実施の形態における事前分布反映処理の一例を示すフローチャートである。
【図１０】第１の実施の形態における事前分布反映処理の一例を示すフローチャートである。
【図１１】アトリビュート単体の出現位置についての事前分布の反映を説明するための図である。
【図１２】アトリビュート単体の出現位置についての事前分布の反映を説明するための図である。
【図１３】アトリビュート間の相対位置関係についての事前分布の反映を説明するための図である。
【図１４】第２の実施の形態に係る学習処理装置の機能ブロック図である。
【図１５】第２の実施の形態における検出処理の一例を示すフローチャートである。
【図１６】第２の実施の形態における事前分布反映処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００２２】
以下、図面を参照して本発明の実施の形態を詳細に説明する。以下の各実施の形態では、物体のパーツや要素などのアトリビュートを検出対象として検出する画像処理装置について説明する。
【００２３】
＜第１の実施の形態＞
第１の実施の形態に係る画像処理装置１０は、ＣＰＵと、ＲＡＭと、後述する学習処理ルーチン及び検出処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成される。また、画像処理装置１０は、機能的には、図１に示すように、学習部２０と、検出部４０とを含んだ構成で表すことができる。また、学習部２０は、学習データ入力部２１と、特徴抽出部２２と、検出器学習部２３と、事前分布学習部２４とを含む。また、検出部４０は、画像入力部４１と、特徴抽出部４２と、検出処理部４３と、事前分布反映部４４と、検出結果出力部４５とを含む。なお、特徴抽出部４２及び検出処理部４３は、本発明の検出手段の一例であり、事前分布反映部４４は、本発明の特定手段の一例である。
【００２４】
まず、学習部２０の各部について詳述する。
【００２５】
学習データ入力部２１は、複数の学習データが格納された学習データ・データベース（ＤＢ）３１から学習データを取得し、特徴抽出部２２及び事前分布学習部２４の各々に出力する。
【００２６】
ここで、学習データは、検出対象である複数種類のアトリビュートを含む学習画像と、各学習画像中の検出対象の位置情報とのペアで構成される。検出対象の位置情報は、検出対象を示す領域を、例えば画素位置（座標）等で特定した情報である。例えば、検出対象を示す領域を、学習画像内の４点で記述される矩形で表した場合、検出対象の位置情報は、その４点の画素位置で表すことができる。また、検出対象を示す領域以外の領域をマスクしたマスク画像により、検出対象の位置情報を表してもよい。マスク画像は、例えば、マスクされた画素の画素値を０としたものとすることができる。また、学習画像のサイズは全て同一である。なお、サイズが異なる場合は、線形補間やニアレストネイバーなどの方法を用いて、同一サイズにリサイズした画像を学習画像として用いる。
【００２７】
特徴抽出部２２は、学習データ入力部２１から出力された学習データに含まれる検出対象の位置情報に基づいて、学習データに含まれる学習画像においてアトリビュートが存在する領域を特定する。そして、特徴抽出部２２は、特定した領域から特徴量を抽出する。抽出する特徴量は、例えば、非特許文献４に記載のＨＯＧ（Histograms of Oriented Gradients）特徴量などの特徴量を抽出することができる。特徴抽出部２２は、抽出した特徴量と、特徴量を抽出した領域に存在するアトリビュートの種類と対応付けて、検出器学習部２３へ出力する。
【００２８】
検出器学習部２３は、特徴抽出部２２から出力された特徴量を用いて、アトリビュートの種類毎に検出器を学習する。検出器の学習には、例えば、非特許文献３に記載のＥｘｅｍｐｌａｒ  ＳＶＭ（Support vector machine）などの手法を用いることができる。検出器学習部２３は、学習したアトリビュートの種類毎の検出器と、アトリビュートの種類の名称とを対応付けて、検出器ＤＢ３２に格納する。
【００２９】
事前分布学習部２４は、学習データ入力部２１から出力された学習データに含まれる検出対象の位置情報に基づいて、学習データに含まれる複数の学習画像の各々におけるアトリビュートの出現位置についての事前分布を、アトリビュートの種類毎に学習する。事前分布学習部２４は、学習画像におけるアトリビュート単体の出現位置についての事前分布と、アトリビュート間の相対位置関係についての事前分布、具体的には、他の種類のアトリビュートの出現位置に対する相対的な出現位置についての事前分布とを学習する。事前分布学習部２４は、学習したアトリビュートの種類毎の事前分布と、アトリビュートの種類の名称とを対応付けて、事前分布ＤＢ３３に格納する。
【００３０】
次に、検出部４０の各部について詳述する。
【００３１】
画像入力部４１は、任意の画像である入力画像３６の入力を受け付け、入力画像３６のサイズが、学習データの学習画像のサイズと異なる場合には、線形補間やニアレストネイバーなどの方法を用いて、学習画像と同一サイズにリサイズする。画像入力部４１は、入力画像３６を特徴抽出部４２へ出力する。
【００３２】
特徴抽出部４２は、画像入力部４１から出力された入力画像３６に対して、任意の大きさの矩形をずらしながら当てはめ、矩形内の領域から、学習部２０の特徴抽出部２２で抽出される特徴量と同様の特徴量を抽出する。特徴抽出部４２は、抽出した特徴量と、特徴量を抽出した領域の位置、すなわち入力画像３６に当てはめた矩形の位置とを対応付けて、検出処理部４３へ出力する。
【００３３】
検出処理部４３は、特徴抽出部４２から出力された特徴量及び矩形の位置を取得する。また、検出処理部４３は、検出器ＤＢ３２から、アトリビュートの種類毎の検出器を取得する。そして、検出処理部４３は、特徴抽出部４２で各矩形内の領域から抽出された特徴量を、アトリビュートの種類毎の検出器の各々に入力し、検出器の出力として、アトリビュートの各種類に対する検出スコアを得る。検出スコアは、矩形内の画像が検出対象であるアトリビュートであることの尤もらしさが高いほど、高い値となる。
【００３４】
検出処理部４３は、検出スコアに基づいて、アトリビュートの種類毎に所定個の検出候補を検出する。例えば、検出処理部４３は、検出スコアが予め定めた閾値以上となる矩形内の画像や、検出スコアの上位所定個に対応する矩形内の画像を検出候補とすることができる。検出処理部４３は、アトリビュートの種類毎の検出候補と、その検出候補の位置情報（矩形の位置情報）と、検出スコアとを対応付けて、事前分布反映部４４へ出力する。
【００３５】
事前分布反映部４４は、検出処理部４３から出力されたアトリビュートの種類毎の検出候補、検出候補の位置、及び検出スコアを取得する。また、事前分布反映部４４は、事前分布ＤＢ３３から、アトリビュートの種類毎の事前分布を取得する。そして、事前分布反映部４４は、検出候補の各々に、その検出候補のアトリビュートの種類に対応した事前分布を反映させ、検出スコアを更新する。事前分布反映部４４は、更新した検出スコアに基づいて、アトリビュートの種類毎の検出候補から検出対象を特定し、その検出対象の位置情報（矩形の位置情報）を、検出結果出力部４５へ出力する。
【００３６】
検出結果出力部４５は、事前分布反映部４４から出力されたアトリビュートの種類毎の検出対象の位置情報を入力画像３６に紐づけて、検出結果３７として出力する。
【００３７】
次に、第１の実施の形態に係る画像処理装置１０の作用について説明する。画像処理装置１０は、アトリビュートの種類毎の検出器及び事前分布を学習する学習処理と、入力画像３６から検出対象であるアトリビュートを検出する検出処理を実行する。以下、各処理について説明する。
【００３８】
まず、検出対象である複数種類のアトリビュートを含む学習画像と、各学習画像中の検出対象の位置情報とのペアで構成される複数の学習データが学習データＤＢ３１に格納された状態で、画像処理装置１０が、図２に示す学習処理を実行する。
【００３９】
図２に示す学習処理のステップＳ１０で、学習データ入力部２１が、学習データＤＢ３１から学習データを取得し、特徴抽出部２２及び事前分布学習部２４の各々に出力する。
【００４０】
次に、ステップＳ２０で、特徴抽出部２２が、学習データ入力部２１から出力された学習データを取得し、学習データに含まれる検出対象の位置情報に基づいて、学習データに含まれる学習画像においてアトリビュートが存在する領域を特定する。そして、特徴抽出部２２は、特定した領域から特徴量を抽出する。特徴抽出部２２は、抽出した特徴量と、特徴量を抽出した領域に存在するアトリビュートの種類と対応付けて、検出器学習部２３へ出力する。
【００４１】
次に、ステップＳ３０で、検出器学習部２３が、特徴抽出部２２から出力された特徴量を用いて、アトリビュートの種類毎に検出器を学習する。検出器学習部２３は、学習したアトリビュートの種類毎の検出器と、アトリビュートの種類の名称とを対応付けて、検出器ＤＢ３２に格納する。
【００４２】
次に、ステップＳ４０で、事前分布学習部２４が、詳細を図３に示す事前分布学習処理を実行し、アトリビュートの種類毎の事前分布を学習する。事前分布学習部２４は、学習したアトリビュートの種類毎の事前分布と、アトリビュートの種類の名称とを対応付けて、事前分布ＤＢ３３に格納し、学習処理は終了する。
【００４３】
なお、ステップＳ４０の事前分布学習処理は、ステップＳ２０の前に実行してもよいし、ステップＳ２０及びＳ３０の処理と、ステップＳ４０の処理とを、並行して実行してもよい。
【００４４】
ここで、図３を参照して、事前分布学習処理について詳述する。
【００４５】
ステップＳ４１で、事前分布学習部２４が、学習データ入力部２１から出力された学習データを取得する。ここでは、学習データには、Ｎ枚の学習画像、及び各学習画像に含まれるＭ種類のアトリビュートを示す領域の位置情報が含まれるものとする。また、ここでは、説明の簡易化のため、アトリビュートを示す領域を矩形（長方形）とし、その位置情報を、矩形の対角２点（左上角と右下角）の画素位置で表す場合について説明する。なお、画素位置は、行方向の位置をｘ、列方向の位置をｙ、学習画像の左上角の画素を原点（［１，１］）とし、学習画像の下方向をｘのプラス方向、右方向をｙのプラス方向とする画像座標系における座標［ｘ，ｙ］で表す。
【００４６】
以下、ｎ枚目の学習画像に含まれる種類ｍのアトリビュートを示す矩形領域を、「矩形Ｒ＿ｎｍ」と表記する。ここでは、ｎ＝［１，２，・・・，Ｎ］、及びｍ＝［１，２，・・・，Ｍ］である。また、ｎ枚目の学習画像を「学習画像ｎ」、種類ｍのアトリビュートを「アトリビュートｍ」と表記する。
【００４７】
次に、ステップＳ４２で、学習画像と同様のサイズの零行列Ｐ＿ｉ、及び学習画像の倍のサイズの零行列Ｐ＿ｉｊ（ｉ，ｊ＝［１，２，・・・，Ｍ］）を作成する。本実施の形態では、以下で詳述するように、アトリビュートｉ単体の出現位置についての事前分布を表す行列Ｐ＿ｉ（ｉ＝［１，２，・・・，Ｍ］）と、アトリビュート間の相対位置関係についての事前分布を表す行列Ｐ＿ｉｊ（ｉ，ｊ＝［１，２，…，Ｍ］，ｉ≠ｊ）とを学習する。零行列Ｐ＿ｉ及びＰ＿ｉｊは、これらの事前分布を表す行列Ｐ＿ｉ及びＰ＿ｉｊを初期化したものである。
【００４８】
なお、学習画像と同様のサイズの行列とは、学習画像の縦及び横の画素数と行数及び列数が同じ行列である。また、学習画像の倍のサイズの行列とは、ここでは、学習画像の重心画素から上、下、右、左の各方向の画素数を倍にしたサイズである。例えば、学習画像が縦５画素×横５画素のサイズの場合、倍のサイズは、上、下、右、左の各方向へ２画素ずつ拡張した９×９画素である。従って、学習画像の倍のサイズの零行列Ｐ＿ｉｊは、各要素が０の９行９列の行列となる。
【００４９】
次に、ステップＳ４３で、事前分布学習部２４が、学習画像ｎを特定するためのループ変数ｎを１に初期化する。次に、ステップＳ４４で、事前分布学習部２４が、学習画像ｎに含まれるアトリビュートのうち、処理対象のアトリビュートｉを特定するためのループ変数ｉを１に初期化する。次に、ステップＳ４４で、事前分布学習部２４が、学習画像ｎに含まれるアトリビュートのうち、他のアトリビュートｊを特定するためのループ変数ｊを１に初期化する。
【００５０】
次に、ステップＳ４６で、事前分布学習部２４が、ｉとｊとが同値か否かを判定する。同値の場合は、ステップＳ４７へ移行し、同値ではない場合には、ステップＳ４８へ移行する。
【００５１】
ステップＳ４７では、事前分布学習部２４が、アトリビュートｉ単体の出現位置についての事前分布を表す行列Ｐ＿ｉを更新する。具体的には、事前分布学習部２４は、矩形Ｒ＿ｎｉ内の画素に対応する行列Ｐ＿ｉの要素を１インクリメントする。
【００５２】
一方、ステップＳ４８では、事前分布学習部２４が、アトリビュート間の相対位置関係についての事前分布を表すＰ＿ｉｊを更新する。具体的には、事前分布学習部２４は、アトリビュートｉの出現位置を基準とした他の種類のアトリビュートｊの相対的な出現位置についての事前分布を表す行列Ｐ＿ｉｊを求めるために、矩形Ｒ＿ｎｉの重心画素Ｇ（［ｘ＿ｉＧ，ｙ＿ｉＧ］）から、学習画像ｎの中心画素Ｃ（［ｘ＿ｉＣ，ｙ＿ｉＣ］）までの移動量Ｄを算出する。移動量Ｄは、［（ｘ＿ｉＣ−ｘ＿ｉＧ），（ｙ＿ｉＣ−ｙ＿ｉＧ）］である。
【００５３】
次に、ステップＳ４９で、事前分布学習部２４が、矩形Ｒ＿ｎｊ内の各画素から移動量Ｄだけ移動した位置の画素に対応する行列Ｐ＿ｉｊの要素を１インクリメントする。
【００５４】
次に、ステップＳ５０で、事前分布学習部２４が、ループ変数ｊがＭと同値であるか否かを判定する。すなわち、学習画像ｎに含まれるアトリビュートｉについて、アトリビュートｉ単体の出現位置についての事前分布を表す行列Ｐ＿ｉ、及びアトリビュートｊとの相対位置関係についての事前分布を表す行列Ｐ＿ｉｊの更新が終了したか否かを判定する。ｊとＭとが同値ではない場合には、ステップＳ５１へ移行し、ループ変数ｊを１インクリメントして、ステップＳ４６に戻り、ステップＳ４６以降の処理を繰り返す。ｊとＭとが同値の場合には、ステップＳ５２へ移行する。
【００５５】
ステップＳ５２では、事前分布学習部２４が、ループ変数ｉがＭと同値であるか否かを判定する。すなわち、学習画像ｎに含まれる全てのアトリビュートについてＰ＿ｉ及びＰ＿ｉｊの更新を終了したか否かを判定する。ｉとＭとが同値ではない場合には、ステップＳ５３へ移行し、ループ変数ｉを１インクリメントして、ステップＳ４５に戻り、ステップＳ４５以降の処理を繰り返す。ｉとＭとが同値の場合には、ステップＳ５４へ移行する。
【００５６】
ステップＳ５４では、事前分布学習部２４が、ループ変数ｎがＮと同値であるか否かを判定する。すなわち、全ての学習画像に対してＰ＿ｉ及びＰ＿ｉｊの更新を終了したか否かを判定する。ｎとＮとが同値ではない場合には、ステップＳ５５へ移行し、ループ変数ｎを１インクリメントして、ステップＳ４４に戻り、ステップＳ４４以降の処理を繰り返す。ｎとＮとが同値の場合には、ステップＳ５６へ移行する。
【００５７】
上記ステップＳ４３〜Ｓ５５の処理の具体例を、図４及び図５を参照して説明する。ここでは、ｎ＝１，２，３、学習画像のサイズ５×５の場合を例に説明する。まず、アトリビュート単体の出現位置についての事前分布を表す行列Ｐ＿ｉの更新について説明する。
【００５８】
図４の左上の図に示すように、学習画像１（ｎ＝１）の画素［１，２］と画素［３，４］とを対角２点とする矩形領域が、矩形Ｒ＿１１として与えられたとする。なお、図４では、画像上の矩形内に含まれる画素を「１」、それ以外の画素を「０」として矩形を表している。以下、図５、図１１〜図１３についても同様である。この場合、ｎ＝１、ｉ＝１、ｊ＝１のループのステップＳ４７において、図４の左下の図に示すように、行列Ｐ＿１の要素［１，２］と要素［３，４］とを対角２点とする範囲に含まれる要素の各々を、１インクリメントする。
【００５９】
次に、図４の中央上の図に示すように、学習画像２（ｎ＝２）の画素［２，３］と画素［４，５］とを対角２点とする矩形領域が、矩形Ｒ＿２１として与えられたとする。この場合、ｎ＝２、ｉ＝１、ｊ＝１のループのステップＳ４７において、行列Ｐ＿１の要素［２，３］と要素［４，５］とを対角２点とする範囲に含まれる要素の各々を、１インクリメントする。従って、ｎ＝１の段階で値が１となっている要素の値は２になる。これにより、行列Ｐ＿１は、図４の中央下の図に示すように更新される。
【００６０】
次に、図４の右上の図に示すように、学習画像３（ｎ＝３）の画素［２，１］と画素［４，３］とを対角２点とする矩形領域が、矩形Ｒ＿３１として与えられたとする。この場合、ｎ＝３、ｉ＝１、ｊ＝１のループのステップＳ４７において、行列Ｐ＿１の要素［２，１］と要素［４，３］とを対角２点とする範囲に含まれる要素の各々を、１インクリメントする。従って、ｎ＝２の段階で値が１となっている要素の値は２、値が２となっている要素の値は３になる。これにより、行列Ｐ＿１は、図４の右下の図に示すように更新される。
【００６１】
このように、学習画像におけるアトリビュートの出現位置を示す矩形が重なる領域に対応する行列Ｐ＿１の要素は値が高くなる。
【００６２】
次に、アトリビュート間の相対位置関係についての事前分布を表す行列Ｐ＿ｉｊの更新について説明する。ここでは、他の種類のアトリビュートが、アトリビュート２（ｊ＝２）である場合について説明する。
【００６３】
図５の左上段の図に示すように、学習画像１（ｎ＝１）の画素［１，２］と画素［３，４］とを対角２点とする矩形領域が、矩形Ｒ＿１１として与えられ、図５の左中段の図に示すように、学習画像１の画素［３，１］と画素［５，１］とを対角２点とする矩形領域が、矩形Ｒ＿１２として与えられたとする。このとき、ｎ＝１、ｉ＝１、ｊ＝２のループのステップＳ４８において、矩形Ｒ＿１１の重心画素Ｇ（図５中に示す学習画像における太枠の画素）の画素位置は［（１＋３）／２，（２＋４）／２］＝［２，３］と求められる。５×５画素の学習画像の中心画素Ｃの画素位置は［３，３］であるので、移動量Ｄは、［（３−２），（３−３）］＝［＋１，０］と求められる。
【００６４】
ここで、Ｐ＿１２は学習画像の倍のサイズ、すなわち、５×５画素のサイズの上、下、右、左方向の各々に２画素ずつ拡張したサイズ（９×９）である。なお、図５に示す行列Ｐ＿１２における太枠の要素は、学習画像の中心画素Ｃに対応する要素である。従って、矩形Ｒ＿１２内の画素を移動量Ｄだけ移動させた画素に対応するＰ＿１２の要素は、［３，１］＋［２，２］＋［＋１，０］＝［６，３］と、［５，１］＋［２，２］＋［＋１，０］＝［８，３］とを対角２点とする範囲に含まれる要素となる。そこで、ｎ＝１、ｉ＝１、ｊ＝２のループのステップＳ４９において、これらの要素の値が１インクリメントされる。
【００６５】
同様に、ｎ＝２、ｉ＝１、ｊ＝２のループのステップＳ４８及びＳ４９において、図５の中央上段に示すような矩形Ｒ＿２１と、中央中段に示すような矩形Ｒ＿２２とに基づいて、中央下段に示すように、行列Ｐ＿１２が更新される。また同様に、ｎ＝３、ｉ＝１、ｊ＝２のループのステップＳ４８及びＳ４９において、図５の右上段に示すような矩形Ｒ＿３１と、右中段に示すような矩形Ｒ＿３２とに基づいて、右下段に示すように、行列Ｐ＿１２が更新される。
【００６６】
このように、一方のアトリビュートから見た他のアトリビュートの出現位置を示す矩形が重なる領域に対応する行列Ｐ＿ｉｊの要素は値が高くなる。
【００６７】
図３に示す事前分布学習処理の説明に戻る。次のステップＳ５６で、事前分布学習部２４が、図６に示すように、全てのｉについて、行列Ｐ＿ｉの全要素の合計値ｓ＿ｉを算出し、行列Ｐ＿ｉの各要素を合計値ｓ＿ｉで割ることにより、行列Ｐ＿ｉを正規化する。同様に、図７に示すように、全てのｉ及びｊについて、行列Ｐ＿ｉｊの全要素の合計値ｓ＿ｉｊを算出し、行列Ｐ＿ｉｊの各要素を合計値ｓ＿ｉｊで割ることにより、行列Ｐ＿ｉｊを正規化する。
【００６８】
次に、ステップＳ５７で、事前分布学習部２４は、全てのｉ及びｊについて、行列Ｐ＿ｉ及びＰ＿ｉｊに対してぼかし処理を行う。学習データとして与えられるＲ＿ｎｍは、それが矩形領域として与えられる場合であっても、マスク画像として与えられる場合であっても、実用上アトリビュートの位置を正確に捉えることは困難である。そのため、学習データにおいて特定されるアトリビュートの位置情報にはゆらぎが存在する。すなわち、Ｒ＿ｎｍが、本来のアトリビュートの位置に対応する画素を含まない場合や、逆にアトリビュート以外に対応する画素を含む場合がある。これらのゆらぎを低減するために、ぼかし処理を行うことで、最終的な検出精度の向上に効果がある。
【００６９】
具体的には、ぼかし処理にガウシアンフィルタ（例えばσ＝１０、フィルタサイズを１０×１０等とする）を用いることができる。例えば、フィルタサイズは、アトリビュート毎に学習データの矩形のうち、最小面積を持つ矩形の短辺の１／１０程度を基準にすると、経験的に良好な結果が得られる。
【００７０】
次に、ステップＳ５８で、事前分布学習部２４は、行列Ｐ＿ｉをアトリビュートｉ単体の出現位置についての事前分布として、行列Ｐ＿ｉｊをアトリビュート間の相対位置関係についての事前分布として、事前分布ＤＢ３３に格納して、事前分布学習処理を終了する。
【００７１】
次に、上記の学習処理が実行されて、アトリビュート毎の検出器が検出器ＤＢ３２に格納され、アトリビュート毎の事前分布が事前分布ＤＢ３３に格納された状態で、画像処理装置１０が、図８に示す検出処理を実行する。
【００７２】
図８に示す検出処理のステップＳ６０で、画像入力部４１が、入力画像３６の入力を受け付け、入力画像３６のサイズが、学習データの学習画像のサイズと異なる場合には、学習画像と同一サイズにリサイズする。そして、画像入力部４１は、入力画像３６を特徴抽出部４２へ出力する。
【００７３】
次に、ステップＳ７０で、特徴抽出部４２が、入力画像３６に対して、任意の大きさの矩形をずらしながら当てはめ、矩形内の領域から、学習部２０の特徴抽出部２２で抽出される特徴量と同様の特徴量を抽出する。そして、特徴抽出部４２は、抽出した特徴量と、特徴量を抽出した領域の位置、すなわち入力画像３６に当てはめた矩形の位置とを対応付けて、検出処理部４３へ出力する。
【００７４】
次に、ステップＳ８０で、検出処理部４３が、特徴抽出部４２から出力された特徴量及び矩形の位置を取得する。また、検出処理部４３は、検出器ＤＢ３２から、アトリビュートの種類毎の検出器を取得する。そして、検出処理部４３は、特徴抽出部４２で各矩形内の領域から抽出された特徴量を、アトリビュートの種類毎の検出器の各々に入力し、検出器の出力として、アトリビュートの種類毎の検出スコアを得る。
【００７５】
そして、検出処理部４３は、検出スコアに基づいて、アトリビュートの種類毎に所定個の検出候補を検出する。ここでは、検出スコアの上位Ｋ個に対応する矩形内の画像を検出候補とする場合について説明する。以下では、入力画像３６から検出されたアトリビュートｉの検出候補を「矩形Ｒ＿ｋｉ（ｋ＝［１，２，・・・，Ｋ］），ｉ＝［１，２，・・・，Ｍ］」と表記する。また、矩形Ｒ＿ｋｉについて得られた検出スコアを「検出スコアＳ＿ｋｉ」と表記する。
【００７６】
検出処理部４３は、アトリビュートの種類毎の検出候補である矩形Ｒ＿ｋｉと、その検出候補の位置情報（矩形の位置情報）と、検出スコアＳ＿ｋｉとを対応付けて、事前分布反映部４４へ出力する。
【００７７】
次に、ステップＳ９０で、事前分布反映部４４が、詳細を図９及び図１０に示す事前分布反映処理を実行し、検出候補の各々の検出スコアに事前分布を反映させる。
【００７８】
次に、ステップＳ１２０で、検出結果出力部４５が、事前分布反映部４４から出力されたアトリビュートの種類毎の最終検出結果Ｒｐ＿ｉの位置情報を入力画像３６に紐づけて、検出結果３７として出力し、検出処理は終了する。
【００７９】
ここで、図９及び図１０を参照して、事前分布反映処理について詳述する。
【００８０】
ステップＳ９１で、事前分布反映部４４が、事前分布ＤＢ３３から、Ｍ種類のアトリビュートの出現位置についての事前分布を表す行列Ｐ＿ｉ（ｉ＝［１，２，・・・，Ｍ］）、及び行列Ｐ＿ｉｊ（ｊ＝［１，２，・・・，Ｍ］，ｉ≠ｊ）を取得する。次に、ステップＳ９２で、事前分布反映部４４が、ループ変数ｉを１に初期化する。
【００８１】
次に、ステップＳ９３で、事前分布反映部４４が、検出処理部４３から出力されたアトリビュートｉの検出候補であるＫ個の矩形Ｒ＿ｋｉ、及びその検出スコアＳ＿ｋｉを取得する。次に、ステップＳ９４で、事前分布反映部４４が、ループ変数ｋを１に、最大値スコアＳＰを０に初期化する。
【００８２】
次に、ステップＳ９５で、事前分布反映部４４が、行列Ｐ＿ｉのＲ＿ｋｉに対応する要素の値を合計した値Ｐｓを算出し、Ｐｓに検出候補Ｒ＿ｋｉの検出スコアＳ＿ｋｉを掛けた値ＳＰ’を算出し、Ｓ＿ｋｉをＳＰ’に更新する。
【００８３】
次に、ステップＳ９６で、事前分布反映部４４が、上記ステップＳ９５で算出したＳＰ’と最大スコアＳＰとを比較し、ＳＰよりＳＰ’の方が大きいか否かを判定する。ＳＰ’の方が大きい場合には、ステップＳ９７へ移行し、最大スコアＳＰをＳＰ’に更新し、アトリビュートｉの最終検出結果Ｒｐ＿ｉをＲ＿ｋｉに更新し、ステップＳ９８へ移行する。一方、ＳＰ’の方が小さい場合には、ステップＳ２７をスキップして、ステップＳ９８へ移行する。
【００８４】
ステップＳ９８では、事前分布反映部４４が、ループ変数ｋがＫと同値であるか否かを判定する。すなわち、アトリビュートｉについての全ての検出候補に対応する検出スコアＳ＿ｋｉを更新したか否かを判定する。ｋとＫとが同値ではない場合には、ステップＳ９９で、ループ変数ｋを１インクリメントし、ステップＳ９５に戻り、ステップＳ９５以降の処理を繰り返す。ｋとＫとが同値の場合には、ステップＳ１００へ移行する。
【００８５】
ステップＳ１００では、事前分布反映部４４が、ループ変数ｉがＭと同値であるか否かを判定する。すなわち、全てのアトリビュートの種類について、最終検出結果Ｒｐが算出されたか否かを判定する。ｉとＭとが同値ではない場合には、ステップＳ１０１へ移行し、ループ変数ｉを１インクリメントして、ステップＳ９３に戻り、ステップＳ９３以降の処理を繰り返す。ｉとＭとが同値の場合には、ステップＳ１０２へ移行する。
【００８６】
上記ステップＳ９２〜Ｓ１００の処理の具体例を、図１１及び図１２を参照して説明する。ここでは、ｋ＝１，２の場合を例に説明する。
【００８７】
図１１の左図に示すように、アトリビュート１（ｉ＝１）の１番目（ｋ＝１）の検出候補として、入力画像の画素［２，２］と画素［３，４］とを対角２点とする矩形領域が、矩形Ｒ＿１１として与えられたとする。また、この矩形Ｒ＿１１の検出スコアＳ＿１１が０．７８で与えられているとする。この場合、図１１の右図に示すように、行列Ｐ＿１の要素［２，２］と要素［３，４］とを対角２点とする範囲（図１１中の破線内）に含まれる要素の各々の値の合計０．５２がＰｓとして求まる。そして、検出スコアＳ＿１１とＰｓとを掛け合わせた値ＳＰ’が０．４１と算出される。ｉ＝１、ｋ＝１のループにおけるステップＳ９５では、この値ＳＰ’＝０．４１が、矩形Ｒ＿１１の検出スコアＳ＿１１として更新される。
【００８８】
また、ｉ＝１、ｋ＝１のループにおけるステップＳ９６では、ＳＰ＝０、ＳＰ’＝０．４１であるため、肯定判定されて、ステップＳ９７で、ＳＰがＳＰ’＝０．４１に更新されると共に、アトリビュートｉについての最終検出結果Ｒｐ＿ｉがＲ＿１１に更新される。
【００８９】
次に、図１２の左図に示すように、アトリビュート１（ｉ＝１）の２番目（ｋ＝２）の検出候補として、入力画像の画素［３，３］と画素［４，５］とを対角２点とする矩形領域が、矩形Ｒ＿２１として与えられたとする。また、この矩形Ｒ＿２１の検出スコアＳ＿２１が０．８５で与えられているとする。この場合、図１２の右図に示すように、行列Ｐ＿１の要素［３，３］と要素［４，５］とを対角２点とする範囲（図１２中の破線内）に含まれる要素の各々の値の合計０．３７がＰｓとして求まる。そして、検出スコアＳ＿２１とＰｓとを掛け合わせた値ＳＰ’が０．３１と算出される。ｉ＝１、ｋ＝２のループにおけるステップＳ９５では、この値ＳＰ’＝０．３１が、矩形Ｒ＿２１の検出スコアＳ＿２１として更新される。
【００９０】
また、ｉ＝１、ｋ＝２のループにおけるステップＳ９６では、ＳＰ＝０．４１、ＳＰ’＝０．３１であるため、否定判定されて、ステップＳ９７がスキップされる。すなわち、ＳＰは、前のループにける０．４１のままであり、アトリビュートｉについての最終検出結果Ｒｐ＿ｉもＲ＿１１のままである。
【００９１】
図９に示す事前分布学習処理の説明に戻る。次のステップＳ１０２で、事前分布反映部４４が、アトリビュート間の相対位置関係についての事前分布も検出結果に反映するか否かを判定する。この判定は、例えば、予め定めた設定に基づいて判定してもよいし、Ｍ＞１の場合には反映させると判定するようにしてもよい。反映させる場合は、図１０のステップＳ１０３へ移行し、反映させない場合には、図１０のステップＳ１１６へ移行する。
【００９２】
図１０のステップＳ１０３では、事前分布反映部４４が、ループ変数ｉを１に初期化する。次に、ステップＳ１０４で、事前分布反映部４４が、ループ変数ｊを１に初期化する。次に、ステップＳ１０５で、事前分布反映部４４が、ループ変数ｊがｉと同値であるか否かを判定する。ｉとｊとが同値の場合には、ステップＳ１０６へ移行し、ループ変数ｊを１インクリメントして、ステップＳ１０５に戻る。ｉとｊとが同値ではない場合には、ステップＳ１０７へ移行し、事前分布反映部４４が、ループ変数ｋを１に初期化する。
【００９３】
次に、ステップＳ１０８で、事前分布反映部４４が、アトリビュートｊ単体の事前分布を反映させた結果得られた最終検出結果Ｒｐ＿ｊの重心画素Ｇから、入力画像３６の中心画素Ｃまでの移動量Ｄを算出する。
【００９４】
次に、ステップＳ１０９で、事前分布反映部４４が、矩形Ｒ＿ｋｉ内の各画素から移動量Ｄだけ移動した位置の画素に対応する行列Ｐ＿ｉｊの要素の値を合計した値Ｐｓを算出する。また、事前分布反映部４４は、Ｐｓに検出候補Ｒ＿ｋｉの検出スコアＳ＿ｋｉを掛けた値ＳＰ’を算出し、Ｓ＿ｋｉをＳＰ’で更新する。
【００９５】
上記ステップＳ１０８及びＳ１０９の処理の具体例を、図１３を参照して説明する。ここでは、ｋ＝１、ｉ＝１、ｊ＝２の場合を例に説明する。
【００９６】
図１３の左上の図に示すように、アトリビュート１（ｉ＝１）の１番目（ｋ＝１）の検出候補である矩形Ｒ＿１１の現段階での検出スコアＳ＿１１が０．４１であるとする。ここで、矩形Ｒ＿１１について、アトリビュート２の位置から見たアトリビュート１の検出位置としての妥当性を反映させることを考える。そこで、矩形Ｒ＿１１を、アトリビュート２の出現位置を基準としたアトリビュート１の相対的な出現位置についての事前分布を表す行列Ｐ＿２１へマッピングする。
【００９７】
ここで、Ｐ＿２１は入力画像と同サイズの学習画像の倍のサイズ、すなわち、５×５画素のサイズの上、下、右、左の各方向へ２画素ずつ拡張したサイズ（９×９）である。なお、図１３に示す行列Ｐ＿２１に対応する画素位置Ｒ’＿１１、及び行列Ｐ＿２１おける太枠の要素は、入力画像の中心画素Ｃに対応する要素である。従って、矩形Ｒ＿１１内の画素を移動量Ｄだけ移動させた画素に対応するＰ＿２１の要素は、［２，２］＋［２，２］＋［−２，＋１］＝［２，５］と、［３，４］＋［２，２］＋［−２，＋１］＝［３，７］とを対角２点とする範囲（図１３中の破線内）に含まれる要素となる。そこで、ｋ＝１、ｉ＝１、ｊ＝２のループのステップＳ１０９において、これらの要素の値の合計０．４２がＰｓとして求まる。そして、検出スコアＳ＿１１とＰｓとを掛け合わせた値ＳＰ’が０．１７と算出され、矩形Ｒ＿１１の検出スコアＳ＿１１が０．１７に更新される。
【００９８】
図１０に示す事前分布反映処理の説明に戻る。次のステップＳ１１０で、事前分布反映部４４が、ループ変数ｋがＫと同値であるか否かを判定する。すなわち、アトリビュートｉの全ての検出候補に対応する検出スコアＳ＿ｋｉに対して、アトリビュートｊとの相対位置関係についての事前分布を反映させたか否かを判定する。ｋとＫとが同値ではない場合には、ステップＳ１１１へ移行し、ループ変数ｋを１インクリメントして、ステップＳ１０８に戻り、ステップＳ１０８以降の処理を繰り返す。ｋとＫとが同値の場合には、ステップＳ１１２へ移行する。
【００９９】
ステップＳ１１２では、事前分布反映部４４が、ループ変数ｊがＭと同値であるか判定する。すなわち、アトリビュートｉに対して他の全てのアトリビュートとの相対位置関係についての事前分布を反映させたか否かを判定する。ｊとＭとが同値ではない場合には、ステップＳ１０６へ移行し、ループ変数ｊを１インクリメントして、ステップＳ１０５に戻り、ステップＳ１０５以降の処理を繰り返す。ｊとＭとが同値の場合には、ステップＳ１１３へ移行する。
【０１００】
ステップＳ１１３では、事前分布反映部４４が、検出候補である矩形Ｒ＿ｋｉのうち、検出スコアＳ＿ｋｉが最大となる矩形Ｒ＿ｋｉを、アトリビュート間の相対位置関係を反映させたアトリビュートｉについての最終検出結果Ｒｐ＿ｉとする。なお、検出スコアＳ＿ｋｉが最大となる矩形Ｒ＿ｋｉを最終検出結果Ｒｐ＿ｉとする場合に限らず、検出スコアＳ＿ｋｉが予め定めた閾値以上となる矩形Ｒ＿ｋｉを最終検出結果Ｒｐ＿ｉとしてもよい。
【０１０１】
次に、ステップＳ１１４で、事前分布反映部４４が、ループ変数ｉがＭと同値であるか否かを判定する。すなわち、全ての種類のアトリビュートについて、検出候補の検出スコアにアトリビュート間の相対位置関係を反映させたか否かを判定する。ｉとＭとが同値ではない場合には、ステップＳ１１５へ移行し、ループ変数ｉを１インクリメントして、ステップＳ１０４に戻り、ステップＳ１０４以降の処理を繰り返す。ｉとＭとが同値の場合には、ステップＳ１１６へ移行する。
【０１０２】
ステップＳ１１６では、事前分布反映部４４が、上記ステップＳ９７またはＳ１１３で算出した最終検出結果Ｒｐ＿ｉ（ｉ＝［１，２，・・・，Ｍ］）の位置情報を、検出結果出力部４５へ出力し、事前分布反映処理を終了する。
【０１０３】
以上説明したように、第１の実施の形態に係る画像処理装置によれば、画像から抽出される特徴量だけでなく、その特徴量が検出された位置に対して、画像上での検出対象の出現位置についての事前分布を反映させた検出結果を得る。これにより、検出対象が物体のパーツや要素のように画像上での領域が小さい場合でも、検出対象を精度良く検出することができる。
【０１０４】
また、検出結果に反映させる検出対象の出現位置についての事前分布として、異なる種類の検出対象間の画像上での相対位置関係についての事前分布も用いることで、より高精度に検出対象を検出することができる。
【０１０５】
＜第２の実施の形態＞
次に、第２の実施の形態について説明する。第１の実施の形態に係る画像処理装置１０では、入力画像３６全体を走査して、特徴量の抽出及び検出候補の検出を行い、検出候補に対して事前分布を反映させて最終的な検出結果を得る場合について説明した。第２の実施の形態では、特徴抽出部の前段の処理として、事前分布を反映させる場合について説明する。なお、第１の実施の形態に係る画像処理装置１０と同一の構成については、同一符号を付して、詳細な説明を省略する。
【０１０６】
第２の実施の形態に係る画像処理装置２１０は、ＣＰＵと、ＲＡＭと、後述する学習処理ルーチン及び検出処理ルーチンを実行するためのプログラムを記憶したＲＯＭとを備えたコンピュータで構成される。また、画像処理装置２１０は、機能的には、図１４に示すように、学習部２０と、検出部２４０とを含んだ構成で表すことができる。検出部２４０は、画像入力部４１と、事前分布反映部２４４と、特徴抽出部２４２と、検出処理部２４３と、検出結果出力部４５とを含む。なお、事前分布反映部２４４は、本発明の特定手段の一例であり、特徴抽出部２４２及び検出処理部２４３は、本発明の検出手段の一例である。
【０１０７】
学習部２０については、第１の実施の形態に係る画像処理装置１０の学習部２０と同様であるため、以下では、検出部２４０の各部について詳述する。
【０１０８】
事前分布反映部２４４は、事前分布ＤＢ３３に格納された事前分布を取得し、画像入力部４１から出力された入力画像３６に、取得した事前分布を反映させて、入力画像３６から検出対象を検出するための走査範囲を特定する。例えば、事前分布反映部４４は、事前分布を表す行列Ｐ＿ｉにおいて、値が０の要素に対応する入力画像３６の画素以外の画素を含む領域を走査範囲として特定することができる。また、行列Ｐ＿ｉの要素のうち、値が予め定めた閾値以上となる要素に対応する入力画像３６の画素を含む領域を走査範囲として特定することができる。閾値は、例えば、行列Ｐ＿ｉの要素の最大値の半分の値とすることができる。閾値を高く設定すれば走査範囲をより狭めることができ、閾値を設定しない場合には、第１の実施の形態と同様に、入力画像３６全体を走査することになる。
【０１０９】
特徴抽出部２４２は、事前分布反映部２４４で特定された走査範囲に対して、第１の実施の形態における特徴抽出部４２と同様に、任意の大きさの矩形をずらしながら当てはめ、矩形内の領域から特徴量を抽出する。特徴抽出部２４２は、抽出した特徴量と、特徴量を抽出した領域の位置、すなわち入力画像３６に当てはめた矩形の位置とを対応付けて、検出処理部２４３へ出力する。
【０１１０】
検出処理部２４３は、特徴抽出部２４２から出力された特徴量と、検出器ＤＢ３２から取得したアトリビュートの種類毎の検出器とに基づいて、各矩形について、アトリビュートの各種類に対する検出スコアを得る。そして、検出処理部２４３は、検出スコアが最大の矩形の位置情報を、検出結果出力部４５へ出力する。
【０１１１】
次に、第２の実施の形態に係る画像処理装置２１０の作用について説明する。画像処理装置２１０は、アトリビュートの種類毎の検出器及び事前分布を学習する学習処理と、入力画像から検出対象であるアトリビュートを検出する検出処理を実行する。学習処理については、第１の実施の形態における学習処理と同様であるため、以下では、検出処理について説明する。なお、第１の実施の形態における検出処理と同様の処理については、同一符号を付して、詳細な説明を省略する。
【０１１２】
図１５に示す検出処理のステップＳ６０で、画像入力部４１が、入力画像３６の入力を受け付け、事前分布反映部２４４へ出力する。
【０１１３】
次に、ステップＳ２９０で、事前分布反映部２４４が、詳細を図１６に示す事前分布反映処理を実行し、事前分布を反映させた走査範囲を特定する。
【０１１４】
ここで、図１６を参照して、事前分布反映処理について詳述する。
【０１１５】
ステップＳ２９１で、事前分布反映部２４４が、Ｎ枚の入力画像３６を取得する。次に、ステップＳ２９２で、事前分布反映部２４４が、事前分布ＤＢ３３から、Ｍ種類のアトリビュートそれぞれのアトリビュート単体の出現位置についての事前分布を表す行列Ｐ＿ｉ（ｉ＝［１，２，・・・，Ｍ］）を取得する。
【０１１６】
次に、ステップＳ２９３で、事前分布反映部２４４が、走査範囲を特定するための、行列Ｐ＿ｉの各要素に対する閾値Ｔを設定する。次に、ステップＳ２９４で、事前分布反映部２４４が、ループ変数ｍを１に初期化する。
【０１１７】
次に、ステップＳ２９５で、事前分布反映部２４４が、行列Ｐ＿ｍの各要素の値と閾値Ｔとを比較し、値が閾値Ｔ以下の要素の集合を、集合Ｒ＿ｍとして取得する。
【０１１８】
次に、ステップＳ２９６で、事前分布反映部２４４が、ループ変数ｎを１に初期化する。次に、ステップＳ２９７で、事前分布反映部２４４が、集合Ｒ＿ｍに含まれる要素に対応するｎ枚目の入力画像３６の画素をマスクしたマスク画像Ｉ＿ｎｍを生成する。マスク画像は、例えば、マスクされた画素の値を０、それ以外の画素の値を１にした画像である。
【０１１９】
次に、ステップＳ２９８で、事前分布反映部２４４が、ループ変数ｎがＮと同値であるか否かを判定する。ｎとＮとが同値ではない場合には、ステップＳ２９９へ移行し、ループ変数ｎを１インクリメントして、ステップＳ２９７に戻り、ステップＳ２９７移行の処理を繰り返す。ｎとＮとが同値の場合には、ステップＳ３００へ移行する。
【０１２０】
ステップＳ３００では、事前分布反映部２４４が、ループ変数ｍがＭと同値であるか否かを判定する。ｍとＭとが同値ではない場合には、ステップＳ３０１へ移行し、ループ変数ｍを１インクリメントして、ステップＳ２９５に戻り、ステップＳ２９５以降の処理を繰り返す。ｍとＭとが同値の場合には、ステップＳ３０２へ移行する。
【０１２１】
ステップＳ３０２では、事前分布反映部２４４が、上記の処理で得られたｎ×ｍ枚のマスク画像Ｉ＿ｎｍを出力し、事前分布反映処理を終了し、図１５に示す検出処理に戻る。
【０１２２】
次に、図１５のステップＳ２７０で、特徴抽出部２４２が、事前分布反映部２４４で特定された走査範囲に対して、任意の大きさの矩形をずらしながら当てはめ、矩形内の領域から特徴量を抽出する。具体的には、特徴抽出部２４２は、事前分布反映部２４４から出力されたマスク画像Ｉ＿ｎｍ（ｍ＝［１，２，・・・，Ｍ］）の各々を適用したｎ枚目の入力画像３６から、特徴量Ｆ＿ｎｍ（ｍ＝［１，２，・・・，Ｍ］）を抽出する。なお、入力画像３６にマスク画像Ｉ＿ｎｍを適用するとは、入力画像３６とマスク画像Ｉ＿ｎｍとを対応させたときに、マスク画像Ｉ＿ｎｍでマスクされない領域を走査範囲とすることである。
【０１２３】
特徴抽出部２４２は、Ｎ枚の入力画像３６の全てから、上記のように特徴量Ｆ＿ｎｍを抽出する。そして、特徴抽出部２４２は、抽出した特徴量Ｆ＿ｎｍと、特徴量Ｆ＿ｎｍを抽出した領域の位置、すなわち入力画像３６に当てはめた矩形の位置とを対応付けて、検出処理部２４３へ出力する。
【０１２４】
次に、ステップＳ２８０で、検出処理部２４３が、特徴抽出部２４２から出力された特徴量と、検出器ＤＢ３２から取得したアトリビュートの種類毎の検出器とに基づいて、各矩形について、アトリビュートの各種類に対する検出スコアを得る。すなわち、検出処理部２４３は、アトリビュートｍについての検出器に特徴量Ｆ＿ｎｍを入力し、ｎ枚目の入力画像３６に当てはめた各矩形内の領域が、アトリビュートｍであることの尤もらしさを示す検出スコアを得る。そして、検出処理部２４３は、入力画像毎、かつアトリビュートの種類毎に、検出スコアが最大の矩形の位置情報を、検出結果出力部４５へ出力する。なお、検出スコアが最大となる矩形に限らず、検出スコアが予め定めた閾値以上となる矩形の位置情報を出力するようにしてもよい。
【０１２５】
次に、ステップＳ１２０で、検出結果出力部４５が、検出処理部２４３から出力された検出結果が最大の矩形の位置情報を入力画像３６に紐づけて、検出結果３７として出力し、検出処理は終了する。
【０１２６】
以上説明したように、第２の実施の形態に係る画像処理装置によれば、検出対象の出現位置についての事前分布を反映させて、走査範囲を限定することで、誤検出を低減できる。また、検出器に特徴量を入力して検出スコアを得る回数を減らせることで、高速な処理を実現することができる。なお、第２の実施の形態では、元の入力画像に対してマスク画像Ｉ＿ｎｍの各々を適用したｍ倍の画像に対して特徴量の抽出処理を行うことになる。しかし、実用上事前分布を表す行列Ｐ＿ｉはゼロ要素が多いため、入力画像全体を走査する場合に比べ、走査範囲を少なくすることができるため、高速な検出を行うことができる。
【０１２７】
なお、第２の実施の形態では、アトリビュート単体の出現位置についての事前分布を反映して走査範囲を特定する場合につい説明したが、アトリビュート間の相対位置関係についての事前分布も合わせて反映させるようにしてもよい。この場合、他の種類のアトリビュートｊからみたアトリビュートｉの出現位置についての事前分布Ｐ＿ｊｉ（ｊ＝［１，２，・・・，Ｍ］，ｉ≠ｊ）の各要素に基づいて、アトリビュートｉの走査範囲を特定する。例えば、全てのＰ＿ｊｉで値が０になる要素や、全てのＰ＿ｊｉのうちの半数以上で値が０になる要素や、値の平均値が予め定めた閾値以下となる要素に対応する入力画像の画素を除外した範囲を、アトリビュートｉの走査範囲として特定することができる。
【０１２８】
また、第２の実施の形態においても、第１の実施の形態のように、検出結果に事前分布を反映させて最終的な検出結果を得るようにしてもよい。
【０１２９】
また、上記各実施の形態における、学習部２０と検出部４０とを別々の装置として構成してもよい。また、上記の実施の形態では、学習処理装置内に事前分布ＤＢ及び検出器ＤＢを保持する場合について説明したが、検出器ＤＢ及び事前分布ＤＢは、外部の記憶装置に記憶しておいてもよい。この場合、検出処理の際に、画像処理装置が、外部装置からアトリビュートの種類毎の検出器及び事前分布を表す行列を読み込めばよい。
【０１３０】
また、本願明細書中において、プログラムが予めインストールされている形態として説明したが、当該プログラムを、コンピュータ読み取り可能な記録媒体に格納して提供することも可能である。コンピュータ読み取り可能な記録媒体とは、フレキシブルディスク、光磁気ディスク、ＲＯＭ、ＣＤ−ＲＯＭ等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。さらに、インターネット等のネットワークや電話回線等の通信回線を介してプログラムを提供する形態としてもよい。
【０１３１】
また、上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよく、ＰＬＤ（Programmable Logic Device）やＦＰＧＡ（Field Programmable Gate Array）等のハードウェアを用いて実現されるものであってもよい。
【０１３２】
また、上述の画像処理装置は、内部にコンピュータシステムを有しているが、「コンピュータシステム」は、ＷＷＷシステムを利用している場合であれば、ホームページ提供環境（あるいは表示環境）も含むものとする。
【０１３３】
なお、本発明は、上述した各実施の形態に限定されるものではなく、この発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。本実施の形態の主要な特徴を満たす範囲内において、任意の用途と構成を取ることができる。
【符号の説明】
【０１３４】
１０、２１０  画像処理装置
２０   学習部
２１   学習データ入力部
２２   特徴抽出部
２３   検出器学習部
２４   事前分布学習部
３１   学習データ・データベース（ＤＢ）
３２   検出器ＤＢ
３３   事前分布ＤＢ
３６   入力画像
３７   検出結果
４０、２４０  検出部
４１   画像入力部
４２、２４２  特徴抽出部
４３、２４３  検出処理部
４４、２４４  事前分布反映部
４５   検出結果出力部
【図１】
0006383639.tif 000002
【図２】
0006383639.tif 000003
【図３】
0006383639.tif 000004
【図４】
0006383639.tif 000005
【図５】
0006383639.tif 000006
【図６】
0006383639.tif 000007
【図７】
0006383639.tif 000008
【図８】
0006383639.tif 000009
【図９】
0006383639.tif 000010
【図１０】
0006383639.tif 000011
【図１１】
0006383639.tif 000012
【図１２】
0006383639.tif 000013
【図１３】
0006383639.tif 000014
【図１４】
0006383639.tif 000015
【図１５】
0006383639.tif 000016
【図１６】
0006383639.tif 000017