(57)【特許請求の範囲】
【請求項１】
第１方向に沿って延びる読み出し単位ごとにメモリから読み出される画像に所定の処理を実行する画像処理装置であって、
前記画像のうち前記所定の処理の対象となる対象部分の、前記第１方向の長さと、該第１方向と交差する第２方向の長さとを算出する算出部と、
前記対象部分の前記第２方向の長さが前記第１方向の長さよりも長い場合、前記画像の少なくとも前記対象部分に対する変換処理を実行すると判定する判定部と、
前記判定部において前記変換処理を実行すると判定された場合、前記変換処理を実行する変換部と、
前記変換処理の結果得られた変換画像の、少なくとも前記対象部分に対応する変換後対象部分に対して、前記第１方向に沿って延び、前記所定の処理が並列に実行される並列処理領域を設定する設定部と、を備えることを特徴とする画像処理装置。
【請求項２】
前記算出部は、前記対象部分に対して前記第１方向に沿った辺を有する外接矩形を算出し、
前記第２方向は前記第１方向と直交し、
前記判定部は、前記外接矩形の前記第２方向に沿った辺の長さが前記第１方向に沿った辺の長さよりも長い場合、前記変換部における変換処理を実行すると判定することを特徴とする請求項１に記載の画像処理装置。
【請求項３】
前記算出部は、前記対象部分内に定義された参照位置を通る前記第１方向に沿った第１軸における前記対象部分の長さと、前記参照位置を通る前記第２方向に沿った第２軸における前記対象部分の長さと、を算出し、
前記判定部は、前記第２軸における前記対象部分の長さが前記第１軸における前記対象部分の長さよりも長い場合、前記変換部における変換処理を実行すると判定することを特徴とする請求項１に記載の画像処理装置。
【請求項４】
第１方向に沿って延びる読み出し単位ごとにメモリから読み出される画像に所定の処理を実行する画像処理装置であって、
前記画像のうち前記所定の処理の対象となる対象部分の、前記第１方向と交差する第２方向に関連するパラメータを算出する算出部と、
前記算出部によって算出された前記パラメータに基づいて、前記画像の少なくとも前記対象部分に対する変換処理を実行するか否かを判定する判定部と、
前記判定部において実行すると判定された場合、前記変換処理を実行する変換部と、
前記変換処理の結果得られた変換画像の、少なくとも前記対象部分に対応する変換後対象部分に対して、前記第１方向に沿って延び、前記所定の処理が並列に実行される並列処理領域を設定する設定部と、を備え、
前記算出部は、前記画像について前記対象部分を含む前記並列処理領域の数である第１の数を算出し、かつ、前記変換画像について前記変換後対象部分を含む前記並列処理領域の数である第２の数を算出し、
前記判定部は、前記第２の数が前記第１の数よりも小さい場合、前記変換部における変換処理を実行すると判定することを特徴とする画像処理装置。
【請求項５】
前記設定部は、前記判定部において前記変換処理を実行しないと判定された場合、前記画像の少なくとも前記対象部分に対して前記並列処理領域を設定することを特徴とする請求項１から４のいずれか１項に記載の画像処理装置。
【請求項６】
原画像を複数の分割画像に分割する分割部をさらに備え、
前記画像は前記複数の分割画像のそれぞれであることを特徴とする請求項１から５のいずれか１項に記載の画像処理装置。
【請求項７】
前記画像は時系列に連続して取得される複数の時系列画像のそれぞれであることを特徴とする請求項１から５のいずれか１項に記載の画像処理装置。
【請求項８】
前記原画像において被写体を構成する複数のパーツを認識する認識部をさらに備え、
前記分割部は、それぞれが前記複数のパーツのそれぞれを含む前記複数の分割画像を生成することを特徴とする請求項６に記載の画像処理装置。
【請求項９】
前記変換処理は、前記画像の少なくとも前記対象部分を回転させるための変換処理であることを特徴とする請求項１から８のいずれか１項に記載の画像処理装置。
【請求項１０】
前記変換処理は、前記画像の少なくとも前記対象部分を転置するための変換処理であることを特徴とする請求項１から８のいずれか１項に記載の画像処理装置。
【請求項１１】
前記設定部によって設定された前記並列処理領域に対して前記所定の処理を並列に実行する実行部をさらに備えることを特徴とする請求項１から１０のいずれか１項に記載の画像処理装置。
【請求項１２】
前記並列処理領域は画素列に対応し、
前記実行部は、それぞれが画素列の画素のそれぞれに対応する複数の演算器を含むことを特徴とする請求項１１に記載の画像処理装置。
【請求項１３】
前記所定の処理は画像中の被写体を認識する認識処理であることを特徴とする請求項１から１２のいずれか１項に記載の画像処理装置。
【請求項１４】
前記認識処理は、特徴量を算出する処理と、該特徴量に基づいて投票する処理とを含むことを特徴とする請求項１３に記載の画像処理装置。
【請求項１５】
第１方向に沿って延びる読み出し単位ごとにメモリから読み出される画像に所定の処理を実行する画像処理方法であって、
前記画像のうち前記所定の処理の対象となる対象部分の、前記第１方向の長さと、該第１方向と交差する第２方向の長さとを算出することと、
前記対象部分の前記第２方向の長さが前記第１方向の長さよりも長い場合、前記画像の少なくとも前記対象部分に対する変換処理を実行すると判定することと、
前記変換処理を実行すると判定された場合、前記変換処理を実行することと、
前記変換処理の結果得られた変換画像の、少なくとも前記対象部分に対応する変換後対象部分に対して、前記第１方向に沿って延び、前記所定の処理が並列に実行される並列処理領域を設定することと、を含むことを特徴とする画像処理方法。
【請求項１６】
第１方向に沿って延びる読み出し単位ごとにメモリから読み出される画像に所定の処理を実行する画像処理方法であって、
前記画像のうち前記所定の処理の対象となる対象部分の、前記第１方向と交差する第２方向に関連するパラメータを算出することと、
算出された前記パラメータに基づいて、前記画像の少なくとも前記対象部分に対する変換処理を実行するか否かを判定することと、
実行すると判定された場合、前記変換処理を実行することと、
前記変換処理の結果得られた変換画像の、少なくとも前記対象部分に対応する変換後対象部分に対して、前記第１方向に沿って延び、前記所定の処理が並列に実行される並列処理領域を設定することと、を含み、
前記算出することは、前記画像について前記対象部分を含む前記並列処理領域の数である第１の数を算出し、かつ、前記変換画像について前記変換後対象部分を含む前記並列処理領域の数である第２の数を算出することを含み、
前記判定することは、前記第２の数が前記第１の数よりも小さい場合、前記変換処理を実行すると判定することを含むことを特徴とする画像処理方法。
【請求項１７】
コンピュータを請求項１乃至１４のいずれか１項に記載の画像処理装置の各部として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置および画像処理方法に関する。
【背景技術】
【０００２】
従来、データに対する並列処理の効率化方法としては、特許文献１に示されるような、事前にデータに対して転置処理を実行する方法がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平０７−２７１７６２号公報
【非特許文献】
【０００４】
【非特許文献１】Ruetsch, G., and Micikevicius, P., "Optimizing Matrix Transpose in CUDA", nVIDIA Corporation,  January 2009
【非特許文献２】Y. Cheng, "Mean shift, mode seeking, and clustering," IEEE Trans. Pattern Anal. And Machine Intell., Vol. 17, No. 8, pp. 790-799 (1995)
【非特許文献３】Jamie Shotton, et al. "Real-Time Human Pose Recognition in Parts from Single Depth Images," CVPR (2011)
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１に記載されるような技術では、処理すべきデータに対応するメモリ配置が既知であることを想定しているため、メモリ配置状況が事前に定まっていない場合には並列処理を効率的に実行することはできない。
【０００６】
本発明はこうした課題に鑑みてなされたものであり、その目的は、処理すべきデータのメモリ配置が未知の場合でも、並列処理を効率的に実行することができる技術の提供にある。
【課題を解決するための手段】
【０００７】
本発明のある態様は、画像処理装置に関する。この画像処理装置は、第１方向に沿って延びる読み出し単位ごとにメモリから読み出される画像に所定の処理を実行する画像処理装置であって、画像のうち所定の処理の対象となる対象部分の、第１方向の長さと、該第１方向と交差する第２方向の長さとを算出する算出部と、対象部分の第２方向の長さが第１方向の長さよりも長い場合、画像の少なくとも対象部分に対する変換処理を実行するか否かを判定する判定部と、判定部において変換処理を実行すると判定された場合、変換処理を実行する変換部と、変換処理の結果得られた変換画像の、少なくとも対象部分に対応する変換後対象部分に対して、第１方向に沿って延び、所定の処理が並列に実行される並列処理領域を設定する設定部と、を備える。
【発明の効果】
【０００８】
本発明によれば、処理すべきデータのメモリ配置が未知の場合でも、並列処理を効率的に実行することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態に係る画像処理装置を含む認識システムの模式図。
【図２】距離画像を示す図。
【図３】図１の画像処理装置の機能および構成を示すブロック図。
【図４】図１の画像処理装置における一連の処理を示すフローチャート。
【図５】変換処理判定ステップにおける処理を示すフローチャート。
【図６】距離画像における人物の像に対する外接矩形を示す図、変換画像を示す図、距離画像を示す図。
【図７】演算器群の構成を示す模式図、処理対象画素列を示す図。
【図８】並列実行効率の異なる２つの処理対象画素列を示す図。
【図９】参照画素の相対位置を示す図。
【図１０】図９の各画素ごとに算出された特徴量の一例を示す図。
【図１１】辞書の一例を示すデータ構造図、投票空間を示す図。
【図１２】辞書の作成過程を示すフローチャート。
【図１３】画像を示す模式図。
【図１４】人物の像を含む距離画像を示す図。
【図１５】分割された距離画像を示す図、分割画像領域に設定される外接矩形を示す図、分割画像領域について判定および変換後の状態を示す図。
【図１６】距離画像を示す図、外接矩形を示す図、対象部分の重心位置と該重心位置から見た幅とを示す図、変換画像に対して設定された処理対象画素列を示す図、距離画像に対して設定された処理対象画素列を示す図。
【図１７】時系列に連続して取得される複数の時系列画像を示す図。
【図１８】左腕、右腕、胴体、左脚、右脚のそれぞれに対して算出された外接矩形を示す図。
【図１９】左腕、右腕、胴体、左脚、右脚のそれぞれに対する判定の結果を示す図。
【図２０】変換画像に対して設定された処理対象画素列を示す図、その一部の拡大図。
【図２１】人物の像を含む距離画像を示す図、変換画像を示す図、ダミーデータ領域を示す図。
【図２２】輝度画像を示す図。
【図２３】３×３のカーネルを示す図。
【発明を実施するための形態】
【００１０】
以下、各図面に示される同一または同等の構成要素、部材、処理には、同一の符号を付すものとし、適宜重複した説明は省略する。また、各図面において説明上重要ではない部材の一部は省略して表示する。
【００１１】
実施の形態に係る画像処理装置では、画像は画素がマトリクス状に配置されたラスタ画像としてメモリに保持されている。図１３は、画像１７０を示す模式図である。画像処理装置は、画像１７０をメモリから読み出して処理する際に、画像１７０上の水平方向のライン１７２ごとにまとめて読み出す。ラインは水平方向の画素列であり、水平方向（第１方向、左右方向）に沿って延びる読み出し単位である。画像１７０において、ライン１７２は鉛直方向（第２方向、上下方向）に沿って並んでいる。水平方向と鉛直方向とは交差し、特に直交する。
【００１２】
画像処理装置は、画素１７４に対する所定の処理を複数の画素１７４ごとにまとめて並列に実行する。この並列処理を効率化するため、画像処理装置は、水平方向に沿って連続して並ぶ複数の画素である処理対象画素列１７６、１７８、１８０を並列処理の対象として設定する。この処理対象画素列１７６、１７８、１８０はライン１７２そのものであってもよいし、図１３に示されるようにライン１７２より短くてもよい。これにより、基本的にはライン１７２の読み出しに合わせて該ライン１７２に含まれる処理対象画素列１７６、１７８、１８０の並列処理に必要な入力データが揃うので、並列処理が効率化される。
【００１３】
画素に対する所定の処理について、画素が有する距離や輝度などの値によっては該処理が実質的に行われない場合がある。なお、処理が実質的に行われないことは、処理がスキップされることであってもよいし、ある値での処理の量が他の値での処理の量よりも著しく少ないことであってもよい。画像１７０は、処理の対象となる画素により構成される対象部分１８２と、そうではない画素により構成される非対象部分１８４と、を有する。非対象部分１８４は、画像のうち対象部分１８２以外の部分である。図１３において、対象部分１８２の画素には斜線が付与され、非対象部分１８４の画素は白抜きで示されている。
【００１４】
このような状況で、画像処理装置により設定される処理対象画素列１７６、１７８、１８０は以下の３つに分類される。
（１）処理対象画素列が非対象部分１８４の画素のみを含む（例えば、図１３の処理対象画素列１７６）。
（２）処理対象画素列が対象部分１８２の画素のみを含む（例えば、図１３の処理対象画素列１８０）。
（３）処理対象画素列が対象部分１８２と非対象部分１８４との境界を跨ぎ、対象部分１８２の画素および非対象部分１８４の画素の両方を含む（例えば、図１３の処理対象画素列１７８）。
【００１５】
上記（３）に分類される処理対象画素列では画像処理装置の並列処理能力の一部しか使用されないので、そのような処理対象画素列の数を減らすことで並列処理の実行効率を高めることができる。そこで、画像処理装置は、処理対象画素列を設定する前に必要であれば画像に変換処理を実行することで上記（３）に分類される処理対象画素列の数を減らしている。
【００１６】
一般に、ディスプレイ等の表示装置に表示される画像と、その画像をその表示装置に表示させるためのデータである画像データと、は対応する。したがって、本明細書では「画像」は画像そのものおよび画像データのうち文脈により適切な方を指すものとする。
【００１７】
（第１の実施の形態）
図１は、第１の実施の形態に係る画像処理装置１０２を含む認識システム１００の模式図である。認識システム１００は、撮像装置１０１と、撮像装置１０１と有線または無線により接続された画像処理装置１０２と、を備える。撮像装置１０１は被写体である人物１０３を背景と共に撮像し、人物１０３の像２０３を含む距離画像を取得する。撮像装置１０１は取得された距離画像を画像処理装置１０２に出力する。画像処理装置１０２は、撮像装置１０１から入力された距離画像に対して、所定の処理を実行することにより、距離画像中に撮影されている人物１０３の関節位置を認識する。
【００１８】
画像処理装置１０２は、パーソナルコンピュータ、携帯電話、スマートフォン、ＰＤＡ（Ｐｅｒｓｏｎａｌ  Ｄｉｇｉｔａｌ  Ａｓｓｉｓｔａｎｔ）、タブレット端末などの電子機器であってもよく、画像処理装置１０２に以下に説明される各種機能を実現させるためのコンピュータプログラムを保持する。画像処理装置１０２には不図示のＧＰＧＰＵ（Ｇｅｎｅｒａｌ−Ｐｕｒｐｏｓｅ  ｃｏｍｐｕｔｉｎｇ  ｏｎ  Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔｓ）ボードが設置されており、画像処理装置１０２における認識処理は、主にＧＰＧＰＵ上の並列プログラムとして実装される。すなわち、画像処理装置１０２における並列処理は、並列プログラムにおける処理フローとして実現され、ＧＰＧＰＵ上で実行される。
【００１９】
図２は、距離画像２００を示す図である。距離画像２００は、各画素について、撮像装置１０１のカメラから人物１０３までの距離を表す距離情報が保持されている画像である。例えば図２では人物１０３の像２０３を含む距離画像２００が示されており、距離画像２００の各画素２０２は距離情報２０４を保持する。図２では、距離情報２０４は８ｂｉｔ階調の整数値で表わされている。
【００２０】
人物１０３の像２０３に対応する画素（例えば、図２の一点鎖線２０６で囲まれた領域の画素）は有意の距離情報２０４を保持し、それ以外の背景に対応する画素は有意の距離情報２０４を保持しない。特に背景に対応する画素が保持する距離情報２０８は「０」に設定される。撮像装置１０１または画像処理装置１０２が距離画像２００において人物１０３の像２０３を特定する方法としては、例えば撮影環境が限定される状況で、所定の閾値以上の距離を有する画素を全て背景とみなす手法が採用されてもよい。あるいはまた、撮像装置１０１または画像処理装置１０２は、事前に取得した背景画像との差分画像を算出し、距離の差分が所定の閾値以下の画素を全て背景とみなしてもよい。なお、距離画像２００において人物１０３の像２０３を特定する方法は上記に限定されない。
【００２１】
図３は、図１の画像処理装置１０２の機能および構成を示すブロック図である。画像処理装置１０２は、取得部３０２と、読出部３０４と、算出部３０６と、判定部３０８と、変換部３１０と、設定部３１２と、実行部３１４と、メモリ３１６と、辞書保持部３１８と、を備える。図３の画像処理装置１０２において、各ブロックは、専用のデバイスやロジック回路を用いてハードウエア的に構成されてもよい。或いは、プログラムをＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）、ＧＰＵ等のコンピュータまたは素子が実行することにより、ソフトウエア的に構成されてもよい。メモリ３１６は、ＧＰＵチップに搭載されるオンチップメモリであるレジスタやシェアードメモリ、ＧＰＧＰＵボード上に設けられＧＰＵチップと接続されるオフチップメモリであるグローバルメモリやローカルメモリであってもよい。
【００２２】
図４は、図１の画像処理装置１０２における一連の処理を示すフローチャートである。該フローチャートに対応する処理は、例えば、１以上のプロセッサがプログラムを実行することにより実現できる。Ｓ４０２では、撮像装置１０１から画像処理装置１０２に距離画像が入力される。取得部３０２は撮像装置１０１から距離画像を取得し、取得された距離画像をメモリ３１６に書き込む。Ｓ４０４では、判定部３０８は後段の変換処理を実行するか否かを判定する。Ｓ４０４で実行すると判定された場合、Ｓ４０６において変換部３１０は距離画像に対して変換処理を実行する。変換処理後の距離画像を変換画像と称す。Ｓ４０４で実行しないと判定された場合、Ｓ４０８において実行部３１４は距離画像に対して並列認識処理を実行する。Ｓ４０６で変換処理が実行された場合、Ｓ４０８において実行部３１４は変換画像に対して並列認識処理を実行する。Ｓ４０８の並列認識処理はＳ４１０の並列特徴量抽出とＳ４１２の並列投票処理とを含む。Ｓ４０８の並列認識処理の後、Ｓ４１４では画像処理装置１０２は並列認識処理の結果を出力する。
【００２３】
以下、各ステップの詳細を説明する。Ｓ４０４では、読出部３０４はメモリ３１６から距離画像を読み出す。算出部３０６は、読出部３０４によって読み出された距離画像の各画素の距離情報が「０」かそうでないかを識別する。算出部３０６は、識別結果に基づいて、距離画像のうち後段の認識処理の対象となる画素により構成される対象部分を特定する。距離情報が「０」の画素は背景に対応すると判定され、認識処理の対象とならない。「０」以外の距離情報を有する画素は人物１０３の像に対応すると判定され、認識処理の対象となる。算出部３０６は、特定された対象部分の水平方向および鉛直方向のそれぞれに関連するパラメータを算出する。特に算出部３０６は、特定された対象部分の水平方向の長さおよび鉛直方向の長さを算出する。本実施の形態では水平方向の長さとして外接矩形の水平方向に平行な辺の長さが採用されるが、他の実施の形態では水平方向に係る他の長さ、例えば重心位置から見た水平方向の長さが採用されてもよい。鉛直方向の長さについても同様である。判定部３０８は、算出部３０６によって算出された水平方向および鉛直方向のそれぞれの長さに基づいて変換部３１０における変換処理を実行するか否かを判定する。
【００２４】
図５（ａ）は、変換処理判定ステップＳ４０４における処理を示すフローチャートである。変換処理判定ステップＳ４０４は、外接矩形算出ステップＳ５０２と、辺の長さ算出ステップＳ５０４と、辺の長さ比較ステップＳ５０６と、を含む。
【００２５】
Ｓ５０２では、算出部３０６は距離画像中の人物１０３の像２０３すなわち対象部分に対して該対象部分を包含する外接矩形（長方形）を算出する。図６（ａ）は、距離画像２００における人物１０３の像２０３に対する外接矩形６０２を示す図である。外接矩形６０２は、水平方向に沿った（または平行な）辺６０４と、鉛直方向に沿った辺６０６と、を有する。算出部３０６は、像２０３に含まれる画素のｘ方向座標値（水平方向座標値）の最大値ｘ２および最小値ｘ１を算出し、同様にｙ方向座標値（鉛直方向座標値）の最大値ｙ２および最小値ｙ１を算出する。算出部３０６は、それぞれの最大値と最小値の組み合わせを頂点の座標値（（ｘ１、ｙ１）、（ｘ１、ｙ２）、（ｘ２、ｙ１）、（ｘ２、ｙ２））とすることにより、外接矩形６０２を定義する。なお、外接矩形６０２を算出する手法はこれに限定されず、他の手法が使用されてもよい。外接矩形６０２は最小外接矩形（Ｍｉｎｉｍｕｍ  Ｂｏｕｎｄｉｎｇ  Ｒｅｃｔａｎｇｌｅ、ＭＢＲ）であってもよい。
【００２６】
Ｓ５０４では、算出部３０６は、外接矩形６０２の水平方向の辺６０４の長さおよび鉛直方向の辺６０６の長さをそれぞれ算出する。特に算出部３０６は、ｘ方向座標値の最大値ｘ２から最小値ｘ１を減算した値を水平方向の辺６０４の長さとして算出する。算出部３０６は、ｙ方向座標値の最大値ｙ２から最小値ｙ１を減算した値を鉛直方向の辺６０６の長さとして算出する。
【００２７】
Ｓ５０６では、判定部３０８は、算出部３０６によって算出された水平方向の辺６０４の長さと鉛直方向の辺６０６の長さとを比較する。判定部３０８は、水平方向の辺６０４の長さが鉛直方向の辺６０６の長さ以上の場合、すなわち
（水平方向の辺の長さ）≧（鉛直方向の辺の長さ）  ・・・（１）
が成立する場合、変換部３１０における変換処理を実行しないと判定する。逆に、判定部３０８は、鉛直方向の辺６０６が水平方向の辺６０４よりも長い場合、すなわち
（水平方向の辺の長さ）＜（鉛直方向の辺の長さ）  ・・・（２）
が成立する場合、変換処理を実行すると判定する。
【００２８】
例えば、図６（ａ）に示される距離画像２００については、像２０３は鉛直方向に細長い形状を有しており外接矩形６０２について式（２）が成立するので、判定部３０８は変換処理を実行すると判定する。図６（ｃ）は、別の距離画像６２０における人物の像６２２に対する外接矩形６２４を示す図である。この別の距離画像６２０については、像６２２は水平方向に細長い形状を有しており、外接矩形６２４について式（１）が成立するので、判定部３０８は変換処理を実行しないと判定する。例えば、水平方向に寝転がった人物を撮影した場合などが、このケースに対応する。
【００２９】
Ｓ４０６では、変換部３１０は、算出部３０６によって算出されたパラメータに基づいて、距離画像２００の少なくとも対象部分に対して変換処理を実行する。特に、変換部３１０は、算出部３０６によって算出された外接矩形６０２に基づいて判定部３０８が実行すると判定した場合、変換処理を実行する。判定部３０８が実行しないと判定した場合、変換部３１０による変換処理はスキップされる。変換部３１０における変換処理は、距離画像２００の少なくとも対象部分を転置するための変換処理である。
【００３０】
変換部３１０は、距離画像２００の対象部分を含む全体を転置するための転置処理を実行する。図６（ｂ）は、図６（ａ）の距離画像２００を転置して得られる変換画像６１０を示す図である。変換画像６１０は、距離画像２００の水平軸と鉛直軸とを交換した画像に相当する。変換画像６１０は、距離画像２００の対象部分（人物１０３の像２０３）に対応する変換後対象部分６１２を有する。転置処理は、汎用的なＣＰＵ上で行われてもよいし、ＧＰＧＰＵ上で並列に行われてもよい。後者の場合、より高速に処理を実行可能なことが知られている（例えば、非特許文献１参照）。なお、転置処理の動作環境はこれらに限定されない。変換部３１０は、転置処理により得られた変換画像６１０をメモリ３１６に格納する。
【００３１】
また、転置処理の対象は距離画像２００の全体に限定されず、距離画像２００の少なくとも対象部分が転置されれば本実施の形態の作用効果が奏されることは、本明細書に触れた当業者には明らかである。例えば対象部分（すなわち、人物１０３の像２０３）のみが抽出され、転置されてもよいし、対象部分の外接矩形６０２が転置されてもよい。
【００３２】
Ｓ４０８では、実行部３１４は、人物１０３の姿勢を認識するために各画素に対して実行されるべき認識処理を、画素のグループごとに並列に実行する。認識処理の詳細は後述する。設定部３１２は、変換部３１０において転置処理が実行された場合、変換画像６１０の少なくとも変換後対象部分６１２に対して、認識処理が並列に実行される並列処理領域であって水平方向に沿って延びる並列処理領域を設定する。設定部３１２は、判定部３０８において実行しないと判定された場合、距離画像の少なくとも対象部分に対して並列処理領域を設定する。いずれの場合でも、実行部３１４は、設定部３１２によって設定された並列処理領域に対して認識処理を並列に実行する。並列処理領域は処理対象画素列に対応し、処理対象画素列であってもよい。
【００３３】
Ｓ４０８における認識処理は、ＧＰＧＰＵ上で変換画像６１０または距離画像の処理対象画素列に対して並列に実行される。実行部３１４は、それぞれが処理対象画素列の画素のそれぞれに対応する複数の演算器を含み、その複数の演算器により認識処理を並列に実行する。図７（ａ）は、演算器群７０２の構成を示す模式図である。演算器群７０２は、ＧＰＧＰＵにおける演算器群（ＯｐｅｎＣＬにおける用語でワークグループに相当）である。演算器群７０２は複数の演算器７０４（ＯｐｅｎＣＬにおける用語でワークアイテムに相当）を含む。複数の演算器７０４は所定の方向に沿って一次元的に並んでいる。図７（ａ）に示される演算器群７０２では一次元方向に６４個の演算器７０４が設定されている。各演算器７０４は１画素分の認識処理を担当する。
【００３４】
なお、並列処理の実装の態様はＧＰＧＰＵボード上で動作する並列プログラムに限られず、並列に演算処理を実行するものであれば、その他の汎用並列プロセッサまたは専用並列プロセッサ上で動作する並列プログラムであってもよい。
【００３５】
判定部３０８において転置処理を実行すると判定された場合を説明する。設定部３１２は、変換画像６１０に対して、演算器群７０２に含まれる演算器７０４の数に対応する数の画素により構成される処理対象画素列を設定する。処理対象画素列の各画素は演算器群７０２の対応する演算器７０４により処理されるので、変換画像に処理対象画素列を設定することは、変換画像に演算器群７０２を割り当てることと等価である。図７（ａ）に示される演算器群７０２の場合、６４個の演算器７０４が含まれるので、対応する処理対象画素列７０６は水平方向に連続的に並ぶ６４個の画素により構成される。設定部３１２は、変換画像６１０に対して処理対象画素列７０６を水平方向に繰り返し均等に設定していく。図７（ｂ）は、変換画像６１０に対して設定された処理対象画素列７０６を示す図である。図７（ｂ）では、小さい横長の長方形の１枠が１個の処理対象画素列７０６（または割り当てられた演算器群７０２）を表わしている。また、変換後対象部分６１２を白抜きの領域として示している。変換画像６１０のサイズが例えば水平方向：４８０画素、鉛直方向：６４０画素の場合、処理対象画素列７０６（水平方向に６４画素分の長さがある）は水平方向に８個、鉛直方向に６４０個設定される。なお図７（ｂ）において、鉛直方向に６４０個の処理対象画素列７０６を描くと図が煩雑となるので、処理対象画素列７０６は鉛直方向に拡大されて描かれている（処理対象画素列７０６の画素の鉛直方向の幅を広く描写している）。その結果、実際の画素に対する割り当てと描写とは一致しておらず、かつ一部の処理対象画素列７０６のみ表示されている。
【００３６】
設定部３１２は、変換画像６１０に処理対象画素列７０６を、変換画像６１０の左上から処理対象画素列７０６を隙間無く敷きつめるように割り当てる。ここで、水平方向の画素数（＝４８０）は処理対象画素列７０６の長さ（＝６４画素）で割り切れないため、図７（ｂ）に示されるように、水平方向において右端の処理対象画素列７０６は変換画像６１０からはみ出して設定されている。この場合、変換画像６１０からはみ出して設定されている画素に対応する演算器７０４は認識処理を実行しない。設定部３１２における処理対象画素列７０６の設定は、変換画像６１０の画素と演算器群７０２の演算器７０４との対応付け、関連付け、または画素の演算器７０４への割り当てと表現されてもよい。
【００３７】
変換画像６１０に設定された複数の（図７（ｂ）の場合、８×６４０＝５１２０個）処理対象画素列７０６のそれぞれに対して、ＧＰＧＰＵにおいて独立に演算処理が実行される。処理対象画素列７０６のそれぞれの演算処理において、演算器群７０２に含まれる６４個の演算器７０４は並列に演算処理を実行する。演算器群７０２は、演算器群７０２に含まれる６４個の演算器７０４に割り当てられた６４画素分の距離情報を、該６４個の演算器７０４により並列にメモリ３１６から読み出す。メモリ３１６に保持される変換画像６１０は、メモリ３１６から読み出される際、ラインごとにまとめて読み出される。処理対象画素列７０６はひとつのラインに含まれるので、処理対象画素列７０６が属するひとつのラインをメモリ３１６から読み出すだけで、演算器群７０２の各演算器７０４は必要な距離情報を並列に読み込むことができる。
【００３８】
演算器７０４は、読み込んだ距離情報が「０」であると判別すると（処理対象の画素が背景に含まれることを示す）、認識処理を行わずに処理を終了する。処理対象画素列７０６の画素の全てが変換画像６１０の背景に含まれる場合、演算器群７０２全体は基本的に距離情報を読み込んだ後すぐに処理を終了する。したがって、そのような処理対象画素列７０６の処理時間は全体的な処理時間にほとんど影響を及ぼさない。一方、処理対象画素列７０６の画素の全てが変換画像６１０の変換後対象部分６１２に含まれる場合、演算器群７０２の全ての演算器７０４が認識処理を並列に実行するため、並列処理を効率的に実行することができる。すなわち、演算器群７０２内の演算器７０４に関する並列実行効率（＝並列に認識処理を実行する演算器の数／演算器の総数（百分率））は１００％となる。
【００３９】
これに対して、処理対象画素列７０６が変換画像６１０の変換後対象部分６１２と背景との境界を含むまたは跨ぐ場合がある。この場合、演算器群７０２の６４個の演算器７０４のうち背景の画素に割り当てられた演算器７０４は読み込まれた距離情報が「０」であることを判別すると共に処理を終了する。一方、それ以外の変換後対象部分６１２の画素に割り当てられた演算器７０４は、認識処理を実行することになる。したがって、演算器群７０２内の演算器７０４に関する並列実行効率は低下する。
【００４０】
図８は、並列実行効率の異なる２つの処理対象画素列８０２、８０４を示す図である。図８は図７（ｂ）の一部の拡大図に相当する。図８の破線枠は並列実行効率が１００％となる処理対象画素列８０２を示す。この処理対象画素列８０２の画素の全ては変換後対象部分６１２に含まれている。一点鎖線枠は並列実行効率が１００％未満となる処理対象画素列８０４を示す。この処理対象画素列８０４は、背景の画素８０６と、変換後対象部分６１２の画素８０８と、背景と変換後対象部分６１２との境界８１０と、を含む。
【００４１】
したがって、並列認識処理の実行効率を上げるためには、図８に示される処理対象画素列８０４のような、変換後対象部分６１２と背景との境界８１０を跨ぐように割り当てられる処理対象画素列の数を低減すればよいことが分かる。
【００４２】
ここで、仮に、転置処理を行う前の距離画像２００に対して設定部３１２が処理対象画素列７０６を設定する場合を考える。図７（ｃ）は、距離画像２００に対して割り当てられた処理対象画素列７０６を示す図である。距離画像２００に対して処理対象画素列７０６は水平方向に１０個、鉛直方向に４８０個設定される。処理対象画素列７０６の鉛直方向の描写については図７（ｂ）と同様である。図７（ｃ）では、小さい横長の長方形の１枠が１個の処理対象画素列７０６を表わしている。また、対象部分（像２０３）を白抜きの領域として示している。
【００４３】
この場合、図７（ｃ）に示されるように、距離画像２００において人物１０３の像２０３は鉛直方向に細長い形状を有している。一方、上述の通り、処理対象画素列７０６はラインに沿って設定する必要がある。したがって、転置処理を実行した結果得られる変換画像６１０よりも距離画像２００のほうが、像２０３（変換後対象部分６１２）と背景との境界を跨ぐ処理対象画素列７０６の数が多くなる。像２０３の面積（または含まれる画素数）と変換後対象部分６１２の面積とは同じなので、境界を跨ぐ処理対象画素列７０６の数が多くなると並列認識処理が行われる処理対象画素列７０６の数も多くなり、画像の処理にかかる時間が増大する。
【００４４】
一例として、図７（ｂ）のケースと図７（ｃ）のケースとを比較すると、実質的に並列認識処理が行われる処理対象画素列７０６の数の比率は、およそ２：３となる。結果として、図７（ｂ）の転置処理を実行するケースと図７（ｃ）の転置処理を実行しないケースとで処理時間を比較した場合、転置処理を実行することにより３０％程度の処理時間の短縮を実現することができる。また、実質的に動作する演算器群７０２の数が減るので、消費電力も削減できる。
【００４５】
なお、転置処理に関してはＧＰＧＰＵを使用した効率的な処理方法（例えば、非特許文献１参照）が提案されており、転置処理を実行することによる処理時間の増加は、例えば並列認識処理等の他の処理にかかる時間に対してほとんど無視することができる。
【００４６】
判定部３０８において転置処理を実行しないと判定された場合、設定部３１２は、距離画像に対して処理対象画素列７０６を設定する。この場合、図６（ｃ）に示されるように距離画像６２０上の対象部分（人物の像６２２）が水平方向に細長い形状を有することから、転置処理をしない方が、対象部分と背景との境界を跨ぐ処理対象画素列７０６の数を低減できる。
【００４７】
演算器７０４が、対象部分／変換後対象部分に含まれる画素に対して実行する認識処理を説明する。認識処理は、ｋ（ｋは自然数）組の参照画素ペアの列をクエリとして定義し、入力された距離画像／変換画像の各画素ごとに前記クエリを適用して得られる特徴量データに基づいて、対象物の認識を行うものである。
【００４８】
図４のＳ４１０では、実行部３１４は、入力された距離画像／変換画像の各画素（基準画素）ごとに、事前に相対位置で規定された参照画素ペアの距離情報の大小比較を実行する。図９は、参照画素の相対位置の図である。図９は、画像の一部領域（７×７画素の領域）を拡大して表示する。参照画素の相対位置がそれぞれ参照画素ａ１：（３、２）、参照画素ａ２：（−１、−３）として設定されている場合、基準画素Ｎに対して、参照画素ａ１と参照画素ａ２が有する距離情報を比較する。（図９において、参照画素ａ１、ａ２を基準画素Ｎと破線で結びつけて示している。）ここで仮に、参照画素ａ１、参照画素ａ２のそれぞれの画素値が８ｂｉｔ階調で、ａ１：１４０、ａ２：３７の距離情報を有する場合、両者の大小関係は以下の式（３）で示される。
ａ１＞ａ２  ・・・（３）
【００４９】
ここで、前記比較結果を元にして特徴量を設定する方法として、一つ目の参照画素の距離情報が二つ目の参照画素の距離情報より大きい（ここではａ１＞ａ２の）場合、ビット符号列で表わされる特徴量のＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ）に対して「１」を割り当て、逆に一つ目の参照画素の距離値が二つ目の参照画素の距離値より小さい（ここではａ１＜ａ２の）場合には、「０」を割り当てるようにする。この場合、参照画素ａ１およびａ２により算出されるビット符号は式（３）より「１」となる。
【００５０】
さらに同一の基準画素Ｎに対して、図９に示す参照画素ｂ１：（２、−３）と参照画素ｂ２：（０、３）の距離情報の比較を実行する。（図９において、参照画素ｂ１、ｂ２を基準画素Ｎと一点鎖線で結びつけて示している。）ここで仮に、参照画素ｂ１と参照画素ｂ２の大小関係が以下の式（４）で示されるとすると、ビット符号列で表わされる特徴量の２ビット目に割り当てられるビット符号は「０」となる。
ｂ１＜ｂ２  ・・・（４）
【００５１】
以上のように、クエリとして設定された参照画素ペア間の大小関係に基づくビット列の算出を、例えば本実施の形態では６組の参照画素ペアに対して実行する。その結果、各画素ごとに、特徴量として６ビットのビット符号列を得ることができる。なお、参照画素ペア数（すなわちビット符号列長）は６組に限定されるものでは無く、認識対象物および求められる認識精度によって自由に設定することができる。本実施の形態の場合は、以降の説明を容易にするために参照画素ペア数を６組と設定している。また、クエリとしての参照画素ペアの選択方法としては、本実施の形態では基準画素周囲の画素からランダムに選択することを想定しているが、必要に応じてその他の手法を用いるものであってもよい。
【００５２】
このように、１つの画素に対してビット符号列で表わされる特徴量を抽出する処理を、距離画像／変換画像中の全ての画素に対して実行する。結果として、対象部分／変換後対象部分に属する画素それぞれに対して、６ビットの特徴量が算出される。図１０は、図９の各画素ごとに算出された特徴量の一例を示す図である。算出した特徴量を各画素に対応付けたデータを、特徴量画像と称す。なお、判定部３０８が転置処理を実行すると判定し、変換部３１０が距離画像に対して転置処理を実行した場合、実行部３１４はクエリとしてのｋ組の参照画素ペアのｘ座標値とｙ座標値を入れ変えて参照する。
【００５３】
Ｓ４１２では、実行部３１４は、算出された特徴量画像を入力として並列投票処理を実行する。投票処理は、事前に作成され辞書保持部３１８に保持される辞書を参照して実行される。図１１（ａ）は、辞書保持部３１８に保持される辞書の一例を示すデータ構造図である。辞書には、特徴量（６ビットの符号列）が取り得る全てのパターンに対して、認識対象の投票先の情報として、人体の関節位置の情報が記載されている。なお、実際は辞書には後述する１２種類の全ての想定関節に対する情報が記載されているが、図１１（ａ）では図の煩雑化を防ぐため、３種類の関節に関する情報のみを記載している。また、特徴量に関しても全てのパターンを記載すると煩雑になるため、一部の特徴量のみ記載している。本実施の形態では、認識対象は人体の関節位置であり、投票先の情報としては人体の関節ごとの頻度値と投票先（関節位置）への平均相対位置ベクトルとが保持されている。
【００５４】
ここで、投票先の情報に関する理解を助けるために、辞書の作成過程に関して説明を行う。図１２は、辞書の作成過程を示すフローチャートである。Ｓ２５０では、人体を含む距離画像を複数枚準備する。例えば１００枚程度の距離画像を用意する。なお、それぞれの距離画像においては、認識対象となる人体の関節の中心位置が所定の座標系上で既知である。認識対象となる人体の関節は、「首、左肩、右肩、左肘、右肘、左手首、右手首、腰、左膝、右膝、左足首、右足首」の１２種類である。
【００５５】
Ｓ２５２では、準備した距離画像を入力パターンとして、サンプル点特徴量を抽出する。サンプル点特徴量の抽出では、図４のＳ４１０の並列特徴量抽出とほぼ同様の処理を行うのであるが、画素に対する特徴量の抽出を人体領域に属する全ての画素に対して実行するのではなく、人体領域に属する画素からランダムに抽出した画素に対してのみ処理を実行する点が異なる。例えば、各距離画像中の人体領域に属する画素から１００点をランダムに抽出して基準画素とし、特徴量抽出処理を実行する。結果として、１００枚の距離画像から計１０，０００点の基準画素が抽出され、それぞれの画素に対する特徴量が決定される。
【００５６】
Ｓ２５４では、決定された特徴量のビット符号列を元にして、同一の特徴量（すなわち同一のビット符号列）が算出された基準画素を集計する。ここで、同一特徴量ごとに基準画素を集計する際には、基準画素位置から最も近い関節位置への相対位置ベクトルを算出する。すなわち、基準画素が含まれる各距離画像は人体の関節中心位置座標情報を有しているため、基準画素の位置座標から最も近い関節中心位置座標への相対位置ベクトルを算出することができる。また同時に、相対位置ベクトルの算出対象とした最も近い関節に関する頻度値（図１１（ａ）参照）に１を加える。
【００５７】
以上の処理を同一特徴量を有する基準画素全てに対して実行し、算出された頻度値と、算出された相対位置ベクトルをさらに同一関節ごとに平均した平均相対位置ベクトルと、を同一特徴量を有する基準画素の関節ごとに決定する。全ての特徴量（符号ビット列）に関して前記処理を実行することで、各特徴量ごとに、関節ごとの平均相対位置ベクトルと頻度値とを得ることができる。例えば図１１（ａ）に示したように、各特徴量（符号ビット列）ごとに、関節ごとの平均相対位置ベクトルと頻度値とが対応付けられた辞書が生成される。
【００５８】
すなわち、本辞書に保持された情報の意味するところは、それぞれの特徴量を有する距離画像中の画素に関して、各頻度値を有する関節の近傍である可能性が高く、かつその関節中心への相対位置が平均相対位置ベクトルで表わされるというものである。
【００５９】
Ｓ４１２の並列投票処理の説明に戻る。実行部３１４は、Ｓ４１０で算出された特徴量画像を元にして、人物領域上の画素位置ごとに辞書を参照して、対応する関節への投票処理を行う。
【００６０】
Ｓ４１２における処理フローを以下に説明する。例えば、画素位置Ａにおける特徴量が「０１１０１０」であり、特徴量に対応する関節ごとの頻度値と平均相対位置ベクトルが以下に示すように辞書から参照されたとする。なお、本特徴量に対応する投票先の関節は以下の４種類のみであるとする。
左肘： 頻度値ｈ１、平均相対位置ベクトル（ｘ１、ｙ１、ｚ１）
右肘： 頻度値ｈ２、平均相対位置ベクトル（ｘ２、ｙ２、ｚ２）
左膝： 頻度値ｈ３、平均相対位置ベクトル（ｘ３、ｙ３、ｚ３）
右膝： 頻度値ｈ４、平均相対位置ベクトル（ｘ４、ｙ４、ｚ４）
【００６１】
この時、画素位置Ａより上記４種類のそれぞれの関節に関して、画素位置Ａの所定の座標系における座標位置に対してそれぞれの平均相対位置ベクトルを加算して各関節中心の存在候補位置座標を算出する。なお、判定部３０８が転置処理を実行すると判定し、変換部３１０が距離画像に対して転置処理を実行した場合、画素位置Ａの所定の座標系における座標位置のｘ座標値とｙ座標値を入れ変えて演算を実行する。図１１（ｂ）は、左膝に関して算出された関節中心の３つの存在候補位置座標１５０がマッピングされた投票空間を示す図である。
【００６２】
以上の処理を特徴量画像中の人物領域に属する全ての画素に対して実行することにより、関節ごとに、関節中心位置の存在候補位置座標とそれに対応した頻度値の分布が得られる。Ｓ４１２では、さらに上記のように関節ごとに得られた頻度値分布から、例えばＭｅａｎＳｈｉｆｔ（非特許文献２参照）などのクラスタ中心選択手法を用いて、最終的な関節位置中心位置を算出する。なお、本実施の形態では入力パターンとして距離画像を想定したが、各画素が輝度値を有する輝度画像を用いるものであってもよい。この場合、特徴量抽出処理において、参照画素ペアの輝度値の大小関係を比較すること以外は、上述した処理と同様である。
【００６３】
第１の実施の形態に係る画像処理装置１０２によると、距離画像２００の対象部分の外接矩形が算出され、算出された外接矩形の寸法に基づく判定にしたがい対象部分に対する転置処理が実行される。転置処理の結果得られる変換画像６１０に対して、ラインと平行に定義される処理対象画素列７０６が設定される。演算器群７０２は設定された処理対象画素列７０６に含まれる画素について並列認識処理を実行する。これにより、対象部分が鉛直方向に細長い場合は転置処理により水平方向に細長くなるよう変換されるので、演算器群７０２により実質的な並列認識処理が実行される処理対象画素列７０６の数を低減することができる。
【００６４】
また、第１の実施の形態に係る画像処理装置１０２によると、算出された外接矩形の形状により、転置処理を実行するか否かが判定される。したがって、ラインの延在方向に対する対象部分の向きが既知でない場合でも適応的な対応が可能となる。特に、第１の実施の形態に係る画像処理装置１０２によると、対象部分／変換後対象部分と背景との境界を跨ぐ処理対象画素列７０６の数が少なくなるように、判定部３０８が変換処理の実施の要否を判定する。したがって、並列認識処理を実行する演算器群７０２の数を低減することができる。その結果、処理時間および消費電力を低減できる。
【００６５】
（第２の実施の形態）
第１の実施の形態では、算出部３０６が距離画像２００の対象部分の外接矩形６０２を算出し、判定部３０８は算出された外接矩形６０２の辺の長さを比較する場合について説明した。第２の実施の形態では、算出部は対象部分内に定義された重心位置などの参照位置を通る水平方向に沿った水平軸における対象部分の長さと、参照位置を通る鉛直方向に沿った鉛直軸における対象部分の長さと、を算出する。判定部は、鉛直軸における対象部分の長さが水平軸における対象部分の長さよりも大きい場合、転置処理を実行すると判定する。第２の実施の形態に係る画像処理装置のその余の構成は第１の実施の形態に係る画像処理装置１０２の対応する構成に準ずる。
【００６６】
図１４は、人物の像４５２を含む距離画像４５０を示す図である。人物の像４５２は認識処理の対象となる対象部分である。算出部は、メモリ３１６から読み出された距離画像４５０中の対象部分に対して重心位置４５４を算出する。重心位置４５４を算出する方法としては、対象部分に含まれる画素のｘ方向座標値（水平方向座標値）の総和を算出し、同様にｙ方向座標値（鉛直方向座標値）の総和を算出し、さらにそれぞれの総和を対象部分に含まれる総画素数で除した値の最近傍画素の座標を重心座標とすることができる。重心位置を算出する手法は上記手法に限定されず、その他の手法が用いられてもよい。
【００６７】
算出部は、重心位置４５４から見たときの対象部分の水平方向および鉛直方向それぞれの幅を算出する。算出部は、重心位置４５４を通り水平方向に平行な水平軸４５６と、重心位置４５４を通り鉛直方向に平行な鉛直軸４５８と、を定義する。算出部は、水平軸４５６上で対象部分が存在する領域を特定する。算出部は、特定された領域のｘ方向座標値の最大値から最小値を減算した値を水平方向の幅４６０として取得する。算出部は、鉛直軸４５８上で対象部分が存在する領域を特定する。算出部は、特定された領域のｙ方向座標値の最大値から最小値を減算した値を鉛直方向の幅４６２として取得する。
【００６８】
判定部は、算出部によって算出された水平方向の幅４６０と鉛直方向の幅４６２とを比較する。水平方向の幅４６０が鉛直方向の幅４６２以上の場合（（式（１）に対応する）は、判定部は転置処理を実行しないと判定する。また逆に鉛直方向の幅４６２が水平方向の幅４６０よりも大きい場合（式（２）に対応する）は、判定部は転置処理を実行すると判定する。
【００６９】
図５（ｂ）は、第２の実施の形態に係る変換処理判定ステップＳ５１０における処理を示すフローチャートである。変換処理判定ステップＳ５１０は、重心位置算出ステップＳ５１２と、領域幅算出ステップＳ５１４と、領域幅比較ステップＳ５１６と、を含む。
【００７０】
第２の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに、対象部分の重心位置を基準として対象部分の形状が判定されることにより、対象部分の部分形状に捉われない全体的な形状に基づく判定を行うことが可能となる。
【００７１】
（第３の実施の形態）
第１の実施の形態および第２の実施の形態では、距離画像における対象部分の形状の特徴を表すパラメータが算出され、算出されたパラメータを使用して転置処理を実行するか否かの判定が行われる場合について説明した。この判定では、対象部分と非対象部分との境界を跨ぐ処理対象画素列の数と対象部分の形状との関連性に基づき設定された条件が使用される。第３の実施の形態では、算出部は、距離画像について対象部分を含む処理対象画素列の数である第１の数を算出する。算出部は、距離画像に転置処理を実行することで得られる変換画像について変換後対象部分を含む処理対象画素列の数である第２の数を算出する。判定部は、第２の数が第１の数よりも小さい場合、転置処理を実行すると判定する。第３の実施の形態に係る画像処理装置のその余の構成は第１の実施の形態に係る画像処理装置１０２の対応する構成に準ずる。
【００７２】
算出部は、メモリ３１６から読み出された距離画像中の人物の像すなわち対象部分に対して、転置処理を実行する場合と、転置処理を実行しない場合のそれぞれにおいて、対象部分を少なくとも部分的に含む処理対象画素列の個数を算出する。そのような個数を算出する手法としては、例えば距離画像の水平ラインごとに、対象部分の境界に位置する画素のｘ座標値（水平方向座標値）と、演算器群に含まれる演算器の個数（本実施の形態の場合は６４個）の倍数値とを比較することにより算出することがある。
【００７３】
すなわち、算出部は、距離画像の各水平ラインにおいて、対象部分左端のｘ座標値以上でかつ最近傍値となる６４の倍数値（乗算係数値をａとする）と、対象部分右端のｘ座標値以上でかつ最近傍値となる６４の倍数値（乗算係数値をｂとする）を算出する。算出部は、以下の式（５）により、当該水平ライン上で対象部分を少なくとも部分的に含む処理対象画素列の個数ｎを算出する。
ｎ＝ａ−ｂ＋１  ・・・式（５）
さらに算出部は、距離画像の全ての水平ラインにおけるｎの値の総和を算出することにより、対象部分を少なくとも部分的に含む処理対象画素列の個数を算出する。
【００７４】
なお、距離画像に転置処理を実行することで得られる変換画像についての上記個数の算出について、実際に距離画像に対して転置処理を実行する必要は無い。転置していない距離画像においてｘ座標値とｙ座標値とを読み替えることにより、上述と同様に変換後対象部分を少なくとも部分的に含む処理対象画素列の個数を算出することができる。
【００７５】
例えば本実施の形態における距離画像を第１の実施の形態と同様に図２の画像とする。この場合、転置処理を実行した場合（図７（ｂ））と転置処理を実行しない場合（図７（ｃ））とで、対象部分を少なくとも部分的に含む処理対象画素列の個数は、それぞれ５００個と７５０個となる。なお、対象部分を少なくとも部分的に含む処理対象画素列の個数を算出する手法は上記に限定されず、その他の手法が用いられてもよい。
【００７６】
判定部は、転置処理を実行する場合の個数Ｎ１と転置処理を実行しない場合の個数Ｎ２とを比較する。判定部は、転置処理を実行しない場合の方が個数が少ない（Ｎ２＜Ｎ１）場合は転置処理を実行しないと判定する。また逆に転置処理を実行する場合の方が個数が少ない（Ｎ１＜Ｎ２）場合は、判定部は転置処理を実行すると判定する。
【００７７】
図５（ｃ）は、第３の実施の形態に係る変換処理判定ステップＳ５１８における処理を示すフローチャートである。変換処理判定ステップＳ５１８は、個数算出ステップＳ５２０と、個数比較ステップＳ５２２と、を含む。
【００７８】
第３の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに、対象部分を少なくとも部分的に含む処理対象画素列の数を直接算出し、算出された数に基づいて転置するか否かが判定されるので、より少ない演算器群によって並列演算処理を実行することが可能となる。
【００７９】
（第４の実施の形態）
第１〜第３の実施の形態では、距離画像の全体に対して算出、判定、変換、設定等の処理を実行する場合について説明した。第４の実施の形態では、これらの算出、判定、変換、設定等の処理を、事前に設定した分割画像領域ごとに実行する。第４の実施の形態に係る画像処理装置は、距離画像ではなく距離画像を分割して得られる各分割画像領域を処理対象とすることを除いて、第１の実施の形態に係る画像処理装置１０２と同様の構成を有する。
【００８０】
図１５（ａ）は、複数の分割画像領域に分割された距離画像２００を示す図である。第４の実施の形態に係る画像処理装置は、メモリ３１６に保持される原画像としての距離画像２００を複数の分割画像領域に分割する分割部を備える。図１５（ａ）の場合、距離画像２００に対してＡ〜Ｔの２０個の分割画像領域が設定される。それぞれの分割画像領域は横：１２８画素×縦：１２０画素の大きさに設定され、分割画像領域の境界線は破線で示される。
【００８１】
算出部は、分割部による分割の結果得られる分割画像領域のそれぞれに対して外接矩形を算出する。判定部は、分割画像領域ごとに、算出された外接矩形に基づいて転置処理を実行するか否かを判定する。変換部は、実行すると判定された分割画像領域に転置処理を実行する。変換部は、実行しないと判定された分割画像領域に対しては転置処理を実行しない。
【００８２】
図１５（ｂ）は、４つの分割画像領域のそれぞれに設定される外接矩形を示す図である。分割画像領域Ｃに対して外接矩形５５２が算出され、分割画像領域Ｈに対して外接矩形５５４が算出され、分割画像領域Ｍに対して外接矩形５５６が算出され、分割画像領域Ｒに対して外接矩形５５８が算出される。分割画像領域Ｈにおいては、外接矩形５５４が分割画像領域Ｈに一致している。
【００８３】
図１５（ｃ）は、４つの分割画像領域のそれぞれについて判定および変換後の状態を示す図である。外接矩形５５６、５５８の鉛直方向の辺の長さが水平方向の辺の長さより長い分割画像領域Ｍ、Ｒについては、転置処理を実行すると判定される。その結果、図１５（ｃ）に示されるように分割画像領域Ｍ、Ｒに対して転置処理が実行される。
【００８４】
なお、転置処理を実行した分割画像領域に対する処理において、各画素が保持する座標値に関して、ｘ座標値とｙ座標値を入れ替えて参照するのは第１〜第３の実施の形態と同様である。なお、実行部が実行する並列認識処理に関して、上記座標値の入れ替え参照を分割画像領域ごとに適切に行う限りにおいては、分割画像領域ごとに処理を実行しても、それぞれの分割画像領域を統合した上で処理を実行してもよい。
【００８５】
第４の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに、距離画像に対して事前に設定した分割画像領域ごとに処理を実行することにより、複雑な形状を有する対象部分に対しても、分割画像領域ごとに個別に並列実行効率を高くすることができる。
【００８６】
（第５の実施の形態）
第１〜第３の実施の形態では、距離画像２００中に対象部分がひとつ存在する場合について説明した。第５の実施の形態では、距離画像中に複数の対象部分が存在する場合、各対象部分を包含する分割画像領域を設定し、分割画像領域ごとに算出、判定、変換、設定等の処理を実行する。第５の実施の形態に係る画像処理装置は、分割部がひとつの分割画像領域にひとつの対象部分が入るように距離画像を分割することを除いて、第４の実施の形態に係る画像処理装置と同様の構成を有する。
【００８７】
図１６（ａ）は、複数の対象部分６３２、６３４、６３６を含む距離画像６３０を示す図である。距離画像６３０では、第１対象部分６３２、第２対象部分６３４、第３対象部分６３６の３つの対象部分が特定される。なお、対象部分（図１６（ａ）の場合、人物の像）を特定する手法は第１の実施の形態と同様であり、またその手法に限定されないこともまた第１の実施の形態と同様である。
【００８８】
分割部は、距離画像６３０で特定される対象部分ごとに分割画像領域を設定する。算出部は、分割画像領域ごとに外接矩形を算出する。図１６（ｂ）は、距離画像６３０の分割画像領域ごとに算出された外接矩形を示す図である。第１対象部分６３２に対して第１外接矩形６３８が算出され、第２対象部分６３４に対して第２外接矩形６４０が算出され、第３対象部分６３６に対して第３外接矩形６４２が算出される。判定部は、分割画像領域ごとに、算出された外接矩形に基づいて転置処理を実行するか否かを判定する。変換部は、実行すると判定された分割画像領域に転置処理を実行する。変換部は、実行しないと判定された分割画像領域に対しては転置処理を実行しない。
【００８９】
あるいはまた、第２の実施の形態と同様に、算出部は分割画像領域ごとに対応する対象部分の重心位置を算出し、算出された重心位置から見た対象部分の水平方向および鉛直方向それぞれの幅を算出してもよい。判定部は、分割画像領域ごとに、算出された幅を比較し、転置処理を実行するか否かを判定してもよい。図１６（ｃ）は、距離画像６３０の分割画像領域ごとに算出された対象部分の重心位置と該重心位置から見た幅とを示す図である。
【００９０】
あるいはまた、第３の実施の形態と同様に、算出部は、転置処理を実行した場合と転置処理を実行しない場合とで、３つの対象部分のいずれかを少なくとも部分的に含む処理対象画素列の個数を算出してもよい。図１６（ｄ）は、距離画像６３０に対する転置処理の結果得られる変換画像６４４に対して設定された処理対象画素列７０６を示す図である。図１６（ｅ）は、距離画像６３０に対して設定された処理対象画素列７０６を示す図である。判定部は、算出された個数を比較し、転置処理を実行するか否かを判定する。
【００９１】
なお、転置処理を実行した外接矩形に対する処理において、各画素が保持する座標値に関して、ｘ座標値とｙ座標値を入れ変えて参照するのは第１〜第３の実施の形態と同様である。
【００９２】
第５の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに、複数の対象部分のそれぞれについて個別に処理を実行することにより、対象部分ごとに並列実行効率を高くすることができる。
【００９３】
（第６の実施の形態）
第６の実施の形態では、画像処理装置が動画などの時系列に連続して取得される複数の時系列画像を処理する場合を説明する。時系列画像に含まれる各画像は、被写体である人物の像を有する。画像処理装置は、複数の時系列画像のそれぞれにおいて、人物を構成する複数のパーツを認識する認識部を備える。認識部は、処理対象の時系列画像の１フレーム前の時系列画像に対する人体の関節位置の認識処理の結果を基に、処理対象の時系列画像上での人体の身体パーツ領域を特定する。人体の身体パーツ領域を特定する手法としては、例えば非特許文献３に記載の手法が知られている。第６の実施の形態に係る画像処理装置は、分割部がそれぞれが認識された複数のパーツのそれぞれを含む複数の分割画像領域を生成することを除いて、第４の実施の形態に係る画像処理装置と同様の構成を有する。分割画像領域を身体パーツ領域と称する。
【００９４】
画像処理装置は、人体の身体パーツ領域ごとに第１〜第５の実施の形態で説明した処理を実行する。図１７は、時系列に連続して取得される複数の時系列画像７２０を示す図である。複数の時系列画像７２０のそれぞれにおいて、人体の各身体パーツ領域（胴体、左腕、右腕、左脚、右脚）が特定されている。特定されている各身体パーツ領域ごとに、第１、第４または第５の実施の形態で説明した処理が適用される。図１８（ａ）は、左腕に対して算出された外接矩形８２０を示す図である。図１８（ｂ）は、右腕に対して算出された外接矩形８２２を示す図である。図１８（ｃ）は、胴体に対して算出された外接矩形８２４を示す図である。図１８（ｄ）は、左脚に対して算出された外接矩形８２６を示す図である。図１８（ｅ）は、右脚に対して算出された外接矩形８２８を示す図である。算出部は、図１８（ａ）〜（ｅ）に示されるように、各身体パーツ領域ごとに外接矩形を算出する。判定部は、各外接矩形の水平方向および鉛直方向それぞれの辺の長さを比較し、転置処理を実行するか否かを判定する。
【００９５】
人体の形状のように、複数のパーツより構成されると同時にそれぞれのパーツが独立に動作し得る物体の場合、各パーツに対応する対象部分の画像上での方向（すなわちメモリ上での配置）が一致しない場合が有り得る。例えば図１７に示される人物領域の場合では、人体が両腕を伸ばした姿勢を取っているため、全身形状に合わせてひとつの外接矩形を算出した場合、水平方向の辺の長さが鉛直方向の辺の長さよりも大きくなり、転置処理は実行されない。両腕に相当する対象部分は水平方向に長い形状を有しているため、両腕に相当する対象部分については第１の実施の形態で説明した通り転置処理を実行しない方が並列実行効率が高くなる。一方で、胴体に相当する対象部分は鉛直方向に長い形状を有しているため、転置処理を実行した方が並列実行効率が高くなる。
【００９６】
そこで、本実施の形態では、身体パーツ領域ごとに外接矩形を算出し、第４または第５の実施の形態と同様に、身体パーツ領域ごとに独立して転置処理の実行を判定する。この場合、身体パーツ領域ごとに、その身体パーツ領域に含まれる対象部分の方向に基づく演算器群の割り当てが可能となる。例えば図１８（ａ）〜（ｅ）に示されるように、各パーツごとに外接矩形を算出し、判定を実行し、その結果に応じて転置処理を実行する。図１９（ａ）は、左腕に対する判定の結果を示す図である。図１９（ｂ）は、右腕に対する判定の結果を示す図である。図１９（ｃ）は、胴体に対する判定の結果を示す図である。図１９（ｄ）は、左脚に対する判定の結果を示す図である。図１９（ｅ）は、右脚に対する判定の結果を示す図である。図１９（ａ）〜（ｅ）に示されるように、胴体・左脚・右脚の各パーツに対してのみ転置処理が実行される。これにより、全てのパーツが水平方向に長い配置となるので、全体として並列実行効率が向上する。
【００９７】
なお本実施の形態では、転置処理は各パーツの外接矩形領域に対して実行されるものとしているが、各パーツごとに転置処理を実行する際の処理対象領域は、これに限定されず、パーツ領域を含む領域で有ればその他の領域設定であってもよい。また本実施の形態では、各パーツ領域ごとに外接矩形を算出する場合を説明したが、それ以外の例えば第２の実施の形態で説明されたような、重心位置から見た対象部分の幅を算出する手法が採用されてもよい。または、第３の実施の形態で説明されたような並列認識処理を実行する演算器群の数を算出する手法が用いられてもよい。
【００９８】
第６の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに画像に対してパーツ領域ごとに処理を実行することにより、パーツごとに形状が異なり、かつパーツが独立に動作し得る物体に対しても、パーツ領域ごとに個別に並列実行効率を高くすることができる。
【００９９】
（第７の実施の形態）
第１の実施の形態では、距離画像２００／変換画像６１０に対して距離画像２００／変換画像６１０の左上から処理対象画素列７０６を隙間無く敷きつめるように割り当てる場合について説明した。第７の実施の形態では、処理対象画素列が距離画像／変換画像上の対象部分と非対象部分との境界上の画素位置を始点として割り当てられる。本実施の形態に係る画像処理装置の算出、判定、変換機能は第１の実施の形態の対応する機能に準ずる。本実施の形態では、実行部はＨＷ−ＩＰとして実現される専用並列プロセッサを含む。なお、本実施の形態における並列演算処理の実装形態は専用並列プロセッサ上で動作するものに限られず、並列に演算処理を実行するものであれば、その他の汎用並列プロセッサまたはＧＰＧＰＵで動作するものであってもよい。
【０１００】
図２０（ａ）は、変換画像６１０に対して設定された処理対象画素列７０６を示す図である。図２０（ｂ）は、図２０（ａ）の一部の拡大図である。設定部は、処理対象画素列７０６の変換後対象部分６１２に対する割り当て始点を、変換後対象部分６１２の境界線上に位置する画素に設定する。
【０１０１】
実行部に含まれる専用並列プロセッサは、６４個の演算器から構成される演算器群を有する（演算器群は１セットのみ）、それぞれの演算器は画像上の同一水平方向ライン上の画素に対して連続して割り当てられる。設定部は、変換画像６１０の水平ライン上のデータをラスタスキャン方向（図２０（ａ）における左から右に向かう方向）にメモリ３１６から読み出し、水平ライン上で最初に距離情報が「０」でない値を有する画素位置より処理対象画素列７０６を割り当てる。実行部の演算器群は、処理対象画素列７０６の画素に対して並列認識処理を実行する。
【０１０２】
演算器群において、６４画素分の並列認識処理が完了したら、改めて変換画像６１０の水平ライン上のデータをラスタスキャン方向にメモリ３１６から読み出し、水平ライン上で最初に距離情報が「０」でない値を有する画素を探索し、該当する画素が見付かったら、前述と同様に処理対象画素列７０６を割り当てる。以上の処理を変換画像６１０中の水平ラインの右端の画素位置まで実行し、さらに本処理を変換画像６１０の全ての水平ラインに関して実行する。
【０１０３】
本実施の形態に係る画像処理装置によると、演算器群の左端に位置する演算器は、常に対象部分に含まれる画素に割り当てられることとなる。すなわち、ラスタスキャン方向にデータをメモリ３１６から読み出す場合に、対象部分の境界線上（非対象部分から対象部分に変化する画素位置）に位置する画素データに対して、演算器群の左端に位置する演算器を割り当てることを意味している。
【０１０４】
これにより、演算器群に含まれる演算器の中で、並列認識処理の動作中に左端の演算器が対象部分から外れて動作を停止することが無く、かつ対象部分は一般的に画像中の水平ライン上で連続していることが多いことから、左端の演算器に近い位置にある演算器が動作を停止するケースも少なくなる。なお、前述と逆の場合の対象部分の境界線（対象部分から非対象部分に変化する画素位置）を演算器群が跨ぐことは発生し得るが、対象部分の境界を跨ぐ領域に割り当てられる演算器群の、画像全体での総数は低減される。結果として、本実施の形態によれば、第１〜第６の実施の形態よりもさらに演算器群における並列実行効率が向上する。
【０１０５】
第７の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに並列認識処理において、演算器群を画像上の対象部分の境界上の画素位置を始点として割り当てることにより、演算器群の並列実行効率を向上することができる。
【０１０６】
（第８の実施の形態）
第８の実施の形態では、重心二次モーメントを使用して判定、変換を行う。変換部における変換処理は、画像の少なくとも対象部分を回転させるための変換処理である。図２１（ａ）は、人物の像２３２を含む距離画像２３０を示す図である。算出部は、メモリ３１６から読み出された距離画像２３０中の人物の像２３２すなわち対象部分に対して、第２の実施の形態と同様に重心位置２３４を算出する。算出部は、対象部分に対して重心二次モーメントを算出し、算出された重心二次モーメントに基づき対象部分の重心位置２３４を通る長軸方向（慣性主軸）２３６を算出する。
【０１０７】
重心二次モーメントは、例えば画像処理ライブラリとして広く用いられているＯｐｅｎＣＶライブラリの関数：ｃｖＧｅｔＮｏｒｍａｌｉｚｅｄＣｅｎｔｒａｌＭｏｍｅｎｔを用いて算出されうる。なお、重心二次モーメントの算出方法はこれに限定されず、その他の手法が用いられてもよい。また重心位置２３４を通る長軸方向２３６は、算出された重心二次モーメントより、以下の式（６）にしたがい算出されうる。
長軸方向＝１／２ｔａｎ−１（２Ｍ１，１／（Ｍ２，０−Ｍ０，２））  ・・・式（６）
（ここでＭ１，１、Ｍ２，０、Ｍ０，２は、重心二次モーメント）
【０１０８】
このように、本実施の形態では、距離画像２３０中の対象部分の長軸方向２３６が、距離画像２３０の水平方向に対してどれだけ傾いているかが算出される。算出部は、長軸方向２３６と水平方向とがなす角度Ｗを算出する。判定部は、算出された角度Ｗが０から所定値の範囲であれば後述の回転処理を実行しないと判定し、該範囲の外であれば回転処理を実行すると判定する。なお、この判定部による判定はスキップされてもよい。
【０１０９】
変換部は、判定部において実行すると判定された場合、算出された長軸方向２３６を参照し、長軸方向２３６が水平方向に一致するように距離画像２３０に対して回転処理を実行する。画像の回転処理には、ＯｐｅｎＣＶライブラリの関数：ｃｖＧｅｔＱｕａｄｒａｎｇｌｅＳｕｂＰｉｘが用いられてもよい。なお、画像の回転処理はこれに限定されず、その他の手法が用いられてもよい。
【０１１０】
このように、距離画像２３０に対して回転処理を実行することにより、変換後対象部分の長軸方向を水平方向に一致させることができる。図２１（ｂ）は、回転処理の結果得られた変換画像２３８を示す図である。変換後対象部分２４０の長軸方向２４２は水平方向に一致している。したがって、第２の実施の形態と同様に、変換後対象部分２４０の境界を跨ぐ処理対象画素列の発生を抑えることができる。
【０１１１】
図２１（ｃ）は、変換画像２３８に対して定義されるダミーデータ領域２４４を示す図である。図２１（ａ）に示される距離画像２３０に回転処理を実行した場合、回転処理の結果得られた変換画像２３８は図２１（ｂ）に示されるように回転処理前の長方形で示される領域とは異なったものになり得る。しかしながら、例えばＧＰＧＰＵ上で並列認識処理を実行する場合には、図２１（ｃ）の斜線で示したダミーデータ領域２４４にダミーデータ（例えば距離情報「０」の画素）を配置し、外枠の長方形のデータ領域２４６をメモリ３１６に配置する。これにより、第２の実施の形態の設定、実行処理と同様の設定、実行処理が可能となる。
【０１１２】
また、第７の実施の形態で示したように専用並列プロセッサ上で並列認識処理を実行する場合でも、同様にダミーデータを保持してもよい。この場合、メモリのデータをラスタスキャン方向に読み出し、距離情報が「０」でない値を有する画素位置より演算器群を割り当てることにより、第２および第７の実施の形態と同様に並列認識処理を実行することが可能である。
【０１１３】
また、本実施の形態では、対象部分全体における長軸方向を算出し、それに対応して距離画像全体に対して回転処理を実行したが、これに限られない。例えば、対象部分の長軸方向を算出する範囲および回転処理を実行する範囲は、第４の実施の形態と同様に複数に分割した分割画像領域ごとであってもよい。または第５の実施の形態と同様に画像中の複数の対象部分ごとであってもよい。または第６の実施の形態と同様にパーツ単位であってもよい。
【０１１４】
第８の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。さらに対象部分の長軸方向に基づいて画像を回転することにより、演算器群の並列実行効率を向上できる。
【０１１５】
（第９の実施の形態）
第１〜第８の実施の形態では、処理対象となる入力パターンが距離画像である場合を説明したが、これに限定されない。例えば、第９の実施の形態で説明するように、入力パターンとして輝度画像を処理対象としてもよい。この場合、距離画像用の撮像装置１０１の代わりに輝度画像用の撮影装置が使用される。また、並列認識処理の代わりに画像の並列フィルタ処理が実行される。
【０１１６】
図２２は、輝度画像２８０を示す図である。輝度画像２８０における各画素は輝度データとしてグレースケールの８ｂｉｔで表わされる値を保持している。また、第１〜第８の実施の形態と同様に、人物の像２８２すなわち対象部分にのみ輝度情報が保持されており、それ以外の背景に相当する画素は輝度情報を保持していない。背景に相当する画素の値として例えば「０」が設定されている。
【０１１７】
このような距離画像２３０に対して、実行部は、３×３のカーネルで表わされるフィルタ処理を並列に実行する。図２３は、３×３のカーネルを示す図である。図２３におけるそれぞれのカーネル要素の値は、フィルタ処理におけるフィルタ係数の値を示している。この場合、第１〜第８の実施の形態で説明したＧＰＧＰＵまたは専用並列プロセッサにおいては、各演算器群が有する演算器が、第１〜第８の実施の形態と同様に対象部分の水平ラインごとの画素に対して隣接して割り当てられる。
【０１１８】
第９の実施の形態に係る画像処理装置によると、第１の実施の形態に係る画像処理装置１０２により奏される作用効果と同様の作用効果が奏される。このように、並列実行効率の向上は距離画像に限られず輝度画像や他のフォーマットの情報を保持する画像について達成される。また、並列実行効率の向上は、並列認識処理に限られず並列のフィルタ処理や他の並列処理について達成される。
【０１１９】
以上、実施の形態に係る画像処理装置の構成と動作について説明した。これらの実施の形態は例示であり、各構成要素や各処理の組み合わせにいろいろな変形例が可能なこと、またそうした変形例も本発明の範囲にあることは当業者に理解される。例えば、第１〜第９の実施の形態を任意に組み合わせたものもまた、本発明の範囲に含まれる。
【０１２０】
第１の実施の形態では、並列認識処理として特徴量抽出および投票を行う場合について説明したが、これに限られず、他の任意の並列処理が実行されてもよい。
【０１２１】
第１〜第８の実施の形態では、変換処理が転置処理または回転処理である場合について説明したが、これに限られず、他の変換処理が採用されてもよい。
【０１２２】
（その他の実施例）
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。 
【符号の説明】
【０１２３】
１００  認識システム、  １０１  撮像装置、  １０２  画像処理装置、  １０３  人物、  ２００  距離画像。
【図１】
0006730804.tif 000002
【図２】
0006730804.tif 000003
【図３】
0006730804.tif 000004
【図４】
0006730804.tif 000005
【図５】
0006730804.tif 000006
【図６】
0006730804.tif 000007
【図７】
0006730804.tif 000008
【図８】
0006730804.tif 000009
【図９】
0006730804.tif 000010
【図１０】
0006730804.tif 000011
【図１１】
0006730804.tif 000012
【図１２】
0006730804.tif 000013
【図１３】
0006730804.tif 000014
【図１４】
0006730804.tif 000015
【図１５】
0006730804.tif 000016
【図１６】
0006730804.tif 000017
【図１７】
0006730804.tif 000018
【図１８】
0006730804.tif 000019
【図１９】
0006730804.tif 000020
【図２０】
0006730804.tif 000021
【図２１】
0006730804.tif 000022
【図２２】
0006730804.tif 000023
【図２３】
0006730804.tif 000024