(57)【要約】【課題】  特徴量を算出し、算出した特徴量に基づいて顔などの所定のパターンを識別するパターン識別装置において、大量の高速に読み出し処理を行うことを可能にする。【解決手段】  画像内に配置される処理ウィンドウの間隔と画像をインタリーブして格納するメモリの数を互いに素の関係とすることで、複数の処理ウィンドウにおいて各基準点より相対的に同じ位置のデータは読み出し先のメモリが常に排他関係にさせる。これによりデータを同時に読み出すことが可能となり、高速化を実現できる。【選択図】  図１
2014006585.tif 000002
【特許請求の範囲】
【請求項１】
複数の処理対象領域が所定の次元の入力データの各次元方向毎に定められた間隔で配置され、各処理対象領域から所定のパターンを識別するパターン識別装置において、
所定の次元のデータの入力手段と、
前記入力手段によって得られた入力データを保持するため次元毎に割り当てられた個数の積で構成される複数の記憶手段と、
前記入力データを前記複数の記憶手段に所定の規則に従って書き込む書き込み手段と、
前記処理対象領域に基準点を設け、複数の前記処理対象領域においてそれぞれの基準点に対して相対的に同じ位置のデータを並列に読み出す並列読み出し手段と、
前記並列読み出し手段によって読み出された複数のデータを用いて特徴量を算出する特徴量算出手段と、
前記特徴量算出手段によって算出された前記特徴量を用いて所定のパターンを識別する識別手段を備え
前記各次元方向について定められた間隔と対応する前記記憶手段の個数との組の内、少なくとも１組が互いに素の関係にあることを特徴とするパターン識別装置。
【請求項２】
前記入力データは累積情報であることを特徴とする請求項１に記載のパターン識別装置。
【請求項３】
前記書き込み手段は前記入力データを前記複数の記憶手段に書き込む順序が各次元方向の位置に応じて位相を変えることを特徴とする請求項１又は２に記載のパターン識別装置。
【請求項４】
前記所定の次元はＮ次元であり、前記処理対象領域は各次元方向に間隔S1、S2、…、SNで格子状に所定の間隔に配置されていることを特徴とする請求項１乃３のいずれか１項に記載のパターン識別装置。
【請求項５】
前記所定の次元はＮ次元であり、前記処理対象領域は各次元方向に間隔S1、S2、…、SNで千鳥状にずらして所定の間隔に配置されていることを特徴とする請求項１乃至３のいずれか１項に記載のパターン識別装置。
【請求項６】
ｎ番目の次元方向に対して、前記複数の記憶手段の個数はPnであり、前記並列読み出し手段によって読み出す前記処理対象領域は１以上Pn以下の連続する前記処理対象領域であることを特徴とする請求項１乃至５のいずれか１項に記載のパターン識別装置。
【請求項７】
前記所定の次元はＮ次元であって、
前記複数の記憶手段の個数は、ｎ番目の次元方向に対してPnであり、
１つの前記記憶手段から同時に読み出せるデータの数をqi（1≦i≦P1×P2×…×PN）、全ての前記記憶手段で同時に読み出せるデータの数をqiの総和Qとすると、前記並列読み出し手段によって並列に読み出す前記処理対象領域の数は２以上Q以下で、前記処理対象領域の位置関係は前記書き込み手段の前記書き込み規則から決定されることを特徴とする請求項１乃至６のいずれか１項に記載のパターン識別装置。
【請求項８】
複数の処理対象領域がN次元の入力データに配置され、各処理対象領域から所定のパターンを識別する装置において
Ｎ次元データの入力手段と、
前記入力手段によって得られた入力データを保持するため次元毎にP1、P2、…、PN個が割り当てられた計P1×P2×…×PN個で構成される複数の記憶手段と、
前記入力データを前記複数の記憶手段に所定の規則に従って書き込む書き込み手段と、
前記処理対象領域に基準点を設け、複数の前記処理対象領域においてそれぞれの基準点に対して相対的に同じ位置のデータを並列に読み出す並列読み出し手段と、
前記並列読み出し手段によって読み出された複数のデータを用いて特徴量を算出する特徴量算出手段と、
前記特徴量算出手段によって算出された前記特徴量を用いて所定のパターンを識別する識別手段を備え、
前記書き込み手段は前記入力データを前記複数の記憶手段に書き込む順序が各次元方向の位置に応じて位相を変えられ、
前記並列読み出し手段によって並列に読み出す対象となる前記処理対象領域の数は、２以上で、且つ、P1×P2×…×PN以下であって、前記複数の処理対象領域からデータを並列に読み出せるように前記位相が調整されていることを特徴とするパターン識別装置。
【請求項９】
前記入力データは累積情報であることを特徴とする請求項８に記載のパターン識別装置。
【請求項１０】
前記並列読み出し手段においてデータを並列に読み出す第一の読み出し処理モードと第二の読み出し処理モードを備え、第一の読み出し処理モードと第二の読み出しモードとを切り替える処理モード切り替え手段をさらに備えることを特徴とする請求項１乃至９のいずれか１項に記載のパターン識別装置。
【請求項１１】
前記第一の読み出し処理モードは前記複数の処理対象領域においてそれぞれの基準点に対して相対的に同じ位置のデータを並列に読み出す処理モードとし、前記第二の読み出し処理モードは１つの処理対象領域の中のデータを並列に読み出す処理モードであることを特徴とする請求項１０に記載のパターン識別装置。
【請求項１２】
前記処理モード切り替え手段はパターンを識別する処理が予め決められた条件で切り替えることを特徴とする請求項１０又は１１に記載のパターン識別装置。
【請求項１３】
前記並列読み出し手段が読み出す対象とする前記複数の処理対象領域の数をカウントするカウント手段をさらに備え、
前記処理モード切り替え手段は前記カウント手段がカウントする数値が予め決められた閾値に達した条件で切り替えることを特徴とする請求項１０又は１１に記載のパターン識別装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像認識、或いは情報分析などのパターン識別装置及び方法に関する。
【背景技術】
【０００２】
情報処理分野においては、多次元配列情報を頻繁に取り扱う。その中でも、画像処理、画像認識や画像合成等に関わる一部処理や統計処理等では、特定領域範囲内における要素の総和値を求めて使用することが多い。
【０００３】
コンピュータ・グラフィックスの分野では、F. C. Crowが矩形のsummed-area tableと呼ばれる、元の入力画像情報に対する累積情報の概念を提案している（非特許文献１）。この文献では、summed-area tableを入力画像と同じ２次元配列とし、入力画像の座標(x,y)の画素値をI(x,y)としたとき、summed-area tableの同位置(x,y)の成分C(x,y)を次式（１）として定義している。
【０００４】
【数１】
2014006585.tif 000003
【０００５】
すなわち図７（ａ）の元の入力画像において原点位置(0,0)と位置(x,y)の画素を対角とする矩形内の画素の総和値が、同図（ｂ）に示すsummed-area tableの位置(x,y)の値C(x,y)となる。尚、非特許文献１のオリジナルのsummed-area tableは、原点位置を画像左下として説明しているが、本明細書では後述の説明と整合させるため左上原点とする。
【０００６】
さて、この定義によれば、入力画像上で水平または垂直に置かれた任意の矩形領域内のI(x,y)の和を、次の式を使ってsummed-area table上の４点を参照するのみで、求めることができる。例えば図８に示すように(x0,y0)と(x1,y1)（X0＜X1,y0＜y1）を対角とする矩形領域内の画素値の総和C(x0,y0;x1,y1)を求めるには、次式（２）を演算すれば良い。
C(x0,y0;x1,y1)=C(x0-1,y0-1)-C(x0-1,y1)-C(x1,y0-1)+C(x1,y1)  ...(2)
これにより、画像上の任意の矩形領域内の値の総和を高速に求めることが可能となった。なお、式（２）ではCの第一引数が-1となる場合があるが、この場合C(-1,*)は0を返す。また、Cの第二引数も同様に-1となる場合があるが、この場合C(*,-1)は0を返す。「*」はdon't careでどのような数値であっても構わない。特許文献１に累積情報の実装方法の1つが記載されている。
【０００７】
非特許文献２では上記summed-area tableと同等の累積情報をIntegral Imageと呼んでいる。非特許文献２ではそのIntegral Imageを用いて複数の局所領域で特徴量を算出し、パターン識別を行っている。局所領域（local area）とは、入力画像から切り出された画像領域の部分領域を示す。パターン識別に使われる特徴量を算出するためには予め学習によって求められたパラメータが使われる。パラメータには特徴量を算出する局所領域の位置や大きさなどの情報が含まれる。通常、パターン識別で参照する局所領域の位置はランダムであり、累積情報をランダムに読み出す必要がある。
【０００８】
例えば、１回に１データの読み出しが行えるシングルポート型のメモリに累積情報を格納した場合、局所領域中の数値の総和を求めるための４頂点（図８のA,B,C,Dの点。以下４頂点は図８のA,B,C,Dの点を指す）の読み出しはシリアル化され４回のメモリアクセスで処理される。１回のメモリアクセスに１サイクルかかるとすると４頂点を読み出すためには４サイクルが必要となる。
【０００９】
この方法では要求される検出性能（フレームレート、画像サイズ、検出対象物の数などに依存する）が高い場合、メモリアクセスがボトルネックになる可能性がある。高速化するにはシリアル化された４回の読み出しを全部または一部、同時に処理できることが要求される。
【００１０】
この読み出し時間を削減する方法の1つとして、１回で２個のデータを同時に読み出せるデュアルポート型のメモリを使う方法がある。デュアルポート型のメモリを使うと４頂点の中から２頂点ずつ読み出せるので、読み出し時間を４サイクルから２サイクルに削減することができる。但し、デュアルポート型メモリはシングルポート型メモリに比べ回路規模が大きくなる問題がある。
【００１１】
また他の方法として、同一の累積情報を４個のシングルポート型のメモリに書き込んでおくことで、４頂点をそれぞれのメモリから並列に読み出すことも考えられる。但し、この方法では１個のメモリを使う方法と比べて４倍のメモリサイズが必要となる。
【００１２】
また他の方法として、特許文献２に開示されるものがある。特許文献２には画像を複数に分割し、分割された画像それぞれで累積情報を作っておくことで、分割された画像間の境界に接する矩形の総和を求める場合に読み出し回数を減らせる方法が示されている。
【００１３】
また他の方法として、特許文献３に開示されるものがある。特許文献３には積分画像を複数の記憶装置に所定の規則で書き込んでおくことで読み出す際に並列に読み出すことを可能にする方法が示されている。そして特許文献３では学習時に局所領域の形状に制約をかけておくことで、実行時に積分画像の４頂点を並列に読み出せるようにしている。これによりメモリアクセスのボトルネックを解消し、高速読み出し可能な装置を実現している。
【００１４】
また非特許文献３によると認識精度向上のため特徴量算出で参照する領域を図１５のような形状で読み出すことが提案されている。図１５に示す参照領域は幅と高さが同じブロック（1550から1558）をタイル状に並べたもので、各ブロックの頂点1501から1516の１６点を読み出して各ブロック内の画素の総和を算出する。以上の様に、積分画像を高速に読み出すために様々な工夫がなされている。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００８−２９９６２７号公報
【特許文献２】特開２００８−１０２７９２号公報
【特許文献３】特開２０１２−４８４０２号公報
【非特許文献】
【００１６】
【非特許文献１】F. C. Crow, “Summed-Area Tables For Texture Mapping”, Computer Graphics, 1984.
【非特許文献２】P. Viola, M. Jones, “Rapid Object Detection using a Boosted Cascade of Simple Features”, Proc. IEEE Conf. on Computer Vision and Pattern Recognition, Vol. 1, pp.511-518, December 2001.
【非特許文献３】S. Yan, S. Shan, X. Chen, and W. Gao. Locally assembled binary (lab) feature with feature-centric cascade for fast and accurate face detection. 26th IEEE Conference on Computer Vision and Pattern Recognition, CVPR, 2008.
【発明の概要】
【発明が解決しようとする課題】
【００１７】
しかしながら、認識処理で使われる特徴量は積分画像だけではなく他にも存在する。例えば画像内の任意の画素の差分を読み出して算出する差分特徴などがある。積分画像に限らず差分特徴なども含めた多様な特徴量に対応し、かつ高速処理可能な認識処理の装置を設計する場合、各特徴量に対応する様々なメモリ読み出しパターンを高速化できることが求められる。
【００１８】
しかしながら、これまでに説明した方法は特定の特徴量算出においての高速化であって多様な特徴量に対応するものではない。また、高速化のために局所領域の形状に制約を設けると認識精度に影響を与える場合があるため、制約を無くすことも重要である。
【００１９】
本発明は係る点に鑑みなされたものであり、特徴量を算出し、算出した特徴量に基づいて顔などの所定のパターンを識別するパターン識別装置における、大量のデータの高速読み出し処理を可能にする技術を提供しようとするものである。
【課題を解決するための手段】
【００２０】
この課題を解決するため、例えば本発明のパターン認識装置は以下の構成を備える。すなわち、
複数の処理対象領域が所定の次元の入力データの各次元方向毎に定められた間隔で配置され、各処理対象領域から所定のパターンを識別するパターン識別装置において、
所定の次元のデータの入力手段と、
前記入力手段によって得られた入力データを保持するため次元毎に割り当てられた個数の積で構成される複数の記憶手段と、
前記入力データを前記複数の記憶手段に所定の規則に従って書き込む書き込み手段と、
前記処理対象領域に基準点を設け、複数の前記処理対象領域においてそれぞれの基準点に対して相対的に同じ位置のデータを並列に読み出す並列読み出し手段と、
前記並列読み出し手段によって読み出された複数のデータを用いて特徴量を算出する特徴量算出手段と、
前記特徴量算出手段によって算出された前記特徴量を用いて所定のパターンを識別する識別手段を備え
前記各次元方向について定められた間隔と対応する前記記憶手段の個数との組の内、少なくとも１組が互いに素の関係にあることを特徴とする。
【発明の効果】
【００２１】
本発明によれば、特徴量を算出し、算出した特徴量に基づいて顔などの所定のパターンを識別するパターン識別装置における、大量のデータの高速読み出し処理が可能になる。また、形状や位置などの制約が無いため、認識精度に影響を与えることもない。
【図面の簡単な説明】
【００２２】
【図１】実施形態１に係るパターン識別装置の構成を示すブロック図。
【図２】実施形態１に係る全体処理のフローチャート。
【図３】実施形態１に係るパターン識別処理のフローチャート。
【図４】実施形態１に係るメモリの個数P1=5、P2=1に割り当てることを説明する図。
【図５】実施形態１に係る処理ウィンドウと局所領域、読み出しデータの関係を説明する図。
【図６】実施形態１に係るメモリの個数P1=5、P2=5に割り当てることを説明する図。
【図７】入力画像情報に対する累積画像情報の対応関係を説明する図。
【図８】総和算出のため累積画像情報から読み出す頂点座標を説明する図。
【図９】処理ウィンドウとその配置を説明する図。
【図１０】ウィンドウグループを説明する図。
【図１１】局所領域と読み出し画素の位置関係を説明する図。
【図１２】実施形態３に係る一次元配列のメモリへの割り当てを説明する図。
【図１３】実施形態４に係る三次元配列を説明する図。
【図１４】実施形態４に係る三次元配列における処理ウィンドウを説明する図。
【図１５】特徴量算出のための３×３ブロックの読み出しを説明する図。
【図１６】実施形態１、２に係るP1×P2個のメモリ群の構成を説明する図。
【図１７】実施形態１に係るメモリ割り当て数とストライドの関係を説明する図。
【図１８】実施形態２に係る処理ウィンドウを格子状、千鳥状に配置することを説明する図。
【図１９】実施形態２に係る特殊な配置での並列読み出しを説明する図。
【図２０】その他の実施形態に係る一次元配列のデュアルポートメモリへの割り当てを説明する図。
【図２１】実施形態５に係るウィドウグループ内の処理ウィンドウの状態を説明する図。
【図２２】実施形態５に係るパターン識別装置の構成を示すブロック図。
【図２３】実施形態５に係るパターン識別処理のフローチャート。
【図２４】実施形態５に係る処理モードを説明する図。
【図２５】実施形態５に係る処理モード切り替え前後のタイミングチャート。
【発明を実施するための形態】
【００２３】
以下、添付図面に従って本発明に係る実施形態を詳細に説明する。
【００２４】
尚、本実施形態においては、従来技術で説明したSummed-area tableあるいはIntegral Imageのような、二次元配列の情報を累積画像情報（または積分画像）と呼ぶ。特に次元数を限定しない場合は累積情報と呼ぶ。また、二次元配列の画像情報（RGB画像やGrayscale画像のような画像情報だけでなく一次微分フィルタをかけた画像など、加工された画像情報も含む）を入力画像情報と呼ぶ。
【００２５】
［実施形態１］
本実施形態ではまずパターン識別装置の構成について説明する。その後、累積画像情報をメモリへ分配する方法と並列読み出しについて説明する。
【００２６】
図１は実施形態１のパターン識別装置の構成を示すブロック図である。図中、101はCPUであって、バス105を介して接続される各部を制御する。102は入力画像情報を入力するデータ入力部であって、処理対象となる入力画像情報を装置内に取り込む。データ入力部102は、例えばCCDなどの画像センサによって構成されてもよいし、ネットワーク等所定の通信経路を持って外部装置から処理したいデータを受信するI/F装置であってもよく、その種類は問わない。104はバス105に接続される外部メモリであって、ROMやRAMあるいはHDD等のストレージ装置で構成されている。外部メモリ104は、CPU101が動作するためのプログラムコードを記憶したり、各種処理を行う上での作業領域として用いられたりする。また、必要に応じて入力画像情報やパターン識別に使用する各種情報を保持するための領域としても用いられる。103はDMAコントローラ（以下、DMAC）であって、CPU101が設定して動作指令することにより、データ入力部102、外部メモリ104、パターン識別部107に所定サイズのデータ転送を、自立的に連続に行うことが可能である。DMAC103は指令された転送動作が完了すると、バス105を介して割り込み信号をCPU101に通知する。107はパターン識別部であって、DMAC103からバス105を介して送られてくる入力画像情報をパターン識別処理する。パターン識別処理は入力画像情報に所定の検出パターン（例えば顔や人体の立像など）が検出されるか否かを判定し、検出位置、検出形状、尤度などの検出情報を出力する。検出情報はバス105を介して外部メモリ104に書き込まれる。
【００２７】
パターン識別部107はバスインタフェース111、累積画像情報生成部112、分配書き込み処理部113、メモリアクセス制御部114、P1×P2個のメモリM00〜M(P2-1)(P1-1)、識別処理制御部119、辞書記憶部120、特徴量算出部121、判定処理部122、処理ウィンドウ管理部123で構成される。
【００２８】
本実施形態のP1×P2個のメモリM00〜M(P2-1)(P1-1)にはシングルポート型のメモリを使用し、図１６のメモリ群1601に示すように二次元状の構成に割り合てられたP1×P2個のメモリとして使用する。P1は横（水平）方向に割り当てられたメモリの数で、P2は縦（垂直）方向に割り当てられたメモリの数を表す。1602はアドレス、データ等の一般的なシングルポート型のメモリインタフェース信号である。メモリの入出力制御はメモリアクセス制御部114によりこれらメモリインタフェース信号を介して制御される。
【００２９】
次に図１のパターン識別装置の詳細と全体の処理の流れを、図２のフローチャートを使って説明する。
【００３０】
実施形態１のパターン識別装置は、ユーザの操作や不図示の外部装置からの処理開始トリガによって、まずデータ入力処理(S201)を実行する。S201では最初にCPU101の指示によってデータ入力部102より入力画像情報を受信し、バス105を介して外部メモリ104に蓄積する。そしてDMAC103はCPU101の制御下において、外部メモリ104に蓄積された入力画像情報をパターン識別部107に転送する。
【００３１】
パターン識別部107はバス105を介して転送されてくる入力画像情報をバスインタフェース111で受け、累積画像情報生成部112に転送する。なお、本実施形態では入力画像情報は画像左上の画素から画素単位でラスタ順に入力されるとする。また、本実施形態では、処理対象の画像の発生源はＣＣＤ等の撮像素子として説明するが、画像を記憶している記憶装置でも良く、その入力源の種類は問わない。
【００３２】
次のS202では累積画像情報生成処理を行う。累積画像情報生成部112はラスタ順で送られる入力画像情報を累積処理し、累積画像情報を生成する。実施形態１における累積画像情報生成部112は、少なくとも処理対象の水平方向の１ライン分の画素数の第１の記憶領域（変数領域）と、１つのライン上の左端から着目画素位置までの画素値の累積結果を保持する第２の領域とを有し、以下のようにして累積画像情報を算出する。
【００３３】
今、水平方向の画素数をＷと表わすとする。従って、累積画像情報生成部112は、第１の記憶領域として、変数Ｃ(0),Ｃ(1)，…，Ｃ(W-1)が確保されることになる。この変数Ｃ()は画像認識に先立ち、ゼロクリアする。一方、第２の記憶領域は１ライン単位にゼロクリアされるものとする。或るラインの水平方向の画素位置をｉ（０≦ｉ≦ｗ−１）として表わし、その画素値をＸiとあらわしたとき、累積画像情報生成部112は、画素を入力する度に以下の演算により累積画像情報（Ｃ(i)）を算出し、出力する。
Ｃ（ｉ）←Ｃ（ｉ）＋ΣＸk
（ただし、Σはｋについての合算を示し、ｋ＝０，１，２，…、ｉである）
上式を簡単に説明すると、次の通りである。
【００３４】
最初のライン（第ゼロライン）上の水平方向のｉ番目の画素値を入力したとき、上式の右辺のＣ（ｉ）は０である（初期状態でゼロクリアされている）。従って、最初のラインのｉ番目の画素Ｘiを入力した際の、上式の左辺のＣ（ｉ）はΣＸk、すなわち、『Ｘ0＋Ｘ1…＋Ｘi』で表わされる累積画像情報を持つことになる。
【００３５】
そして、第ｊライン目（ｊ＞０）の水平方向のｉ番目の画素Ｘiを入力したとき、上式の右辺のＣ（ｉ）は、画像の左上隅の原点（０，０）と、１つ前のライン上の座標（ｉ，ｊ−１）を結ぶ線を対角線とする矩形内の累積画像情報を保持する。上式の右辺のΣＸkは、着目している第ｊライン上の左端から着目しているｉ番目までの画素の値の合算であるから、上式の左辺のＣ（ｉ）は、原点（０，０）と座標（ｉ，ｊ）を対角の頂点とする矩形内の累積画像情報を保持することとなる。
【００３６】
累積画像情報生成部112は、上記のようにして、入力画像情報の画像左上の画素を原点として画素値を累積し、累積結果を累積画像情報として順次、分配書き込み処理部113に転送する。
【００３７】
次のS203では累積画像情報の分配書き込み処理を行う。分配書き込み処理部113はまずメモリに対して書き込みを行ってよいかを処理ウィンドウ管理部123に問い合わせる。処理ウィンドウ管理部123は分配書き込み処理部113からのメモリの書き込みと識別処理制御部119からの読み出しの排他制御を管理している。
【００３８】
ここで、処理ウィンドウとはパターン識別処理が処理を行う画像上の処理対象領域の単位である。図９は処理ウィンドウとその配置を説明する図である。900は入力画像情報で、901は処理ウィンドウを示す。処理ウィンドウはパターン識別処理を行う１単位である。そして、処理ウィンドウ901に対してパターン識別処理を行い、この処理ウィンドウ901に所定の検出パターンが存在するかどうかを判定する。処理ウィンドウは入力画像情報900上に横方向にS1画素、縦方向にS2画素の間隔で配置される。例えば処理ウィンドウ902の右隣の処理ウィンドウは横方向にS1画素の間隔をあけた処理ウィンドウ903の位置となる。また、下の処理ウィンドウは縦方向にS2画素の間隔をあけた処理ウィンドウ904の位置となる。
【００３９】
処理ウィンドウ管理部123はこの処理ウィンドウの位置とメモリの管理を行っている。分配書き込み処理部113は処理対象となる処理ウィンドウを用意するために所定個数の書き込み許可を処理ウィンドウ管理部123から受ける。そして、分配書き込み処理部113は累積画像情報の画素単位で書き込み先のメモリ番号（メモリM00〜M(P2-1)(P1-1)）とアドレスを決定し、メモリアクセス制御部114に書き込みを指示する。メモリ番号とアドレスの決定方法の詳細は累積画像情報をメモリへ分配する方法として後述する。
【００４０】
メモリアクセス制御部114は指示されたメモリ番号とアドレスに従ってメモリM00〜M(P2-1)(P1-1)に累積画像情報を格納する。分配書き込み処理部113は所定個数の書き込みが終了すると処理ウィンドウ管理部123に書き込み終了を通知する。
【００４１】
次のS204では、パターン識別処理を行う。このS204におけるパターン識別処理の詳細を図３のフローチャートにて示す。
【００４２】
まずS301にて識別処理制御部119は、処理ウィンドウ管理部123に対して処理対象となるウィンドウグループを要求する。図１０に示すように入力画像情報900に水平方向の間隔S1画素で配置された複数の処理ウィンドウ1001から1005をまとめたものをウィンドウグループ1000と呼ぶ。その隣のウィンドウグループ1010は複数の処理ウィンドウ1011から1015で構成される。本実施形態ではこのウィンドウグループ内の複数の処理ウィンドウを並列にパターン識別処理する。ウィンドウグループの処理順序は入力画像情報900の左上に位置するウィンドウグループから順に図１０の矢印で示す通りである。
【００４３】
処理対象となるウィンドウグループ分のデータがメモリM00〜M(P2-1)(P1-1)に準備できたら次のS302に移る。S302では辞書データの読み込み処理を行う。識別処理制御部119は辞書記憶部120に格納されている辞書データをもとに識別処理を制御する。辞書データは予め学習によって得られたパラメータ群である。辞書記憶部120はデータを記憶させておく手段で、ROMでもよいし、RAMであってもよい。RAMの場合は不図示の装置によって辞書データが書き込まれるものとする。辞書データには累積画像情報から特徴量を算出する局所領域の位置や形状、判定処理の係数や閾値などのパラメータが格納されている。
【００４４】
次のS303では特徴量を計算し判定処理するためにメモリアクセス制御部114、特徴量算出部121、判定処理部122に辞書データのパラメータを元に設定を行い、処理の開始を指示する。識別処理制御部119は辞書データのパラメータから読み出すメモリ番号とアドレスを算出し、メモリアクセス制御部114に設定を行い、累積画像情報の読み出し処理の開始を指示する。また、特徴量算出部121、判定処理部122で使用するパラメータ（係数、閾値など）も辞書データから取り出して特徴量算出部121、判定処理部122に設定し、処理の開始を指示する。
【００４５】
次のS304では累積画像情報の読み出し処理を行う。読み出し処理では図１１に示すようにウィンドウグループ1000の中にある処理ウィンドウ1001から1005の中からデータを並列に読み出すことを行う。
【００４６】
はじめに、各処理ウィンドウで相対的に同じ場所に位置する局所領域1111から1115の中の読み出し画素1121から1125を並列に読み出す。次に、読み出し画素1131から1135を並列に読み出す。そして同様に、読み出し画素1141から1145、読み出し画素1151から1155を並列に読み出す。これらの画素が並列に読み出せる原理については後述する。そしてメモリアクセス制御部114はメモリから並列に読み出した上記画素データを、特徴量算出部121に送る。
【００４７】
次のS305では特徴量を算出する処理を行う。特徴量算出部121は処理ウィンドウの局所領域の4頂点の画素の値から総和値を算出し、S303で設定されたパラメータを使用して特徴量を算出する。これはウィンドウグループ内の処理ウィンドウごとに算出される。特徴量の算出は、例えば得られた総和値を使って正規化したり、総和値に係数を乗じたりする場合がある。また、総和値そのものを特徴量とする場合もある。その後、特徴量の算出結果は判定処理部122に送られる。
【００４８】
次のS306では結果判定の処理を行う。判定処理部122は特徴量の算出結果とS303で設定されたパラメータを使用して判定を行う。判定処理は例えば1つまたは複数の特徴量を使って積和演算して得られた値をLook Up Table（LUT）で非線形変換し、所定の閾値で比較し、結果を出力するような処理である。設定されるパラメータは係数値やLUTのデータ、閾値であって、特徴量の算出結果から判定処理され、例えば設定された閾値よりも高ければTrue、閾値よりも低ければFalseという判定がなされる。この判定処理はウィンドウグループ内の各処理ウィンドウに対して行われる。本実施形態ではこの判定でFalseの場合は処理ウィンドウ内に所定の検出パターンではないという判定が確定（以下、False確定）する。
【００４９】
次のS307ではウィンドウグループ内の各処理ウィンドウにおいて全局所領域の識別処理が終了したかチェックする。これはステップS306でTrueと判定された処理ウィンドウにおいて行われる。識別処理制御部119は次に処理する局所領域が残っていればステップS302に戻る。そしてステップS302からステップS306の処理を全局所領域数分繰り返す。この時、ステップS302からステップS306の処理ではTrue判定されている処理ウィンドウのみ処理すればよい。全局所領域にてTrue判定が得られたら、所定の検出パターンであることが確定（以下、True確定）する。ウィンドウグループ内の各処理ウィンドウでTrue確定もしくはFalse確定がなされたら識別終了となりステップS308に移る。
【００５０】
次にステップS308ではウィンドウグループの終了通知を行う。識別処理制御部119は処理ウィンドウ管理部123に対して処理が終了したことを通知する。通知を受けた処理ウィンドウ管理部123は次のウィンドウグループを準備する処理を開始する。True確定となった処理ウィンドウの情報は識別処理制御部119によってバスインタフェース111を介して外部メモリ104に書き出される。一方、False確定となった処理ウィンドウの情報は書き出さない。
【００５１】
次にステップS309では全ウィンドウグループの識別処理が終了したかどうか確認する。全ウィンドウグループの処理が終了していない場合はFalseに移り次のウィンドウグループの処理を行う。一方、全ウィンドウグループの処理が終了した場合はTrueに移る。
【００５２】
以上のパターン識別処理が入力画像情報の全ウィンドウグループに渡って処理が繰り返され、終了した後、ステップS205に移る。
【００５３】
次にステップS205では後処理を行う。識別処理制御部119は全ウィンドウグループのパターン識別処理が終了したことをCPU101に対して通知する。以上がパターン識別処理の全体の処理の流れである。
【００５４】
次に累積画像情報をメモリに分配する方法と並列読み出しの原理について説明する。まず累積画像情報を所定の規則に従ってメモリへ分配する方法について説明する。
【００５５】
図４の400に累積画像情報C(x,y)を示す。ここでは累積画像情報400の左上を原点、水平方向をｘ、垂直方向をｙとして各画素の座標を（x,y）で表す。原点座標は(0,0)とする。累積画像情報400の１つの箱が特定の座標に対応する累積画像情報値を示す。図４の410から413は各メモリ上のデータを２次元表現したもので、それらの右の図が物理的なメモリ上の格納イメージを示す。各メモリ上のデータの2次元表現と物理的なメモリ上の格納イメージに記載された(x,y)の数値は対応する累積画像情報400の座標を示している。メモリ上のデータ410から413は分配された画像データをそれぞれ原点座標を中心に詰めて再配置した２次元配列である。例えば累積画像情報400の(0,0),(5,0),(0,1),(5,1)の画素は間を詰めて再配置されて410に示す２次元配列となっている。
【００５６】
次に本実施形態１における所定の規則に従ってメモリへ分配する方法について一般化したものを説明する。
【００５７】
累積画像情報400の座標(x,y)の画素値をC(x,y)で表す。メモリM00〜M(P2-1)(P1-1)は図１６に示すように二次元的な構成に割り当てられている。P1はｘ方向のメモリの個数で、P2はy方向のメモリの個数である。また、各メモリはMp2p1で表す。p1、p2は0を起点とするメモリ番号でp1は水平方向のメモリ番号値、p2は垂直方向のメモリ番号値を示す。
【００５８】
そして、C(x, y)がメモリMp2p1のアドレス(address)に格納されることを以下のように表す。
Mp2p1[address] = C(x,y)            ...(3)
ここで、座標(x,y)の画素値を格納するメモリ番号p1、p2は次式で表される。
p1 = x % P1               ...(4)
p2 = y % P2               ...(5)
（注：算術記号「%」は剰余(modulo arithmetic)を表す。）
そして、メモリMp2p1上の座標（x’,y’）は次式で表わされる。
x’ = x / P1              ...(6)
y’ = y / P2              ...(7)
（注：x’,y’ は小数点以下切り捨て）
【００５９】
また、メモリMp2p1に格納する画像の幅をm_width として定義すると、m_widthは累積画像情報400の幅widthとP1の値から以下のような式で表すことができる。
m_width = width / P1         ...(8)
(注： m_widthは整数に切り上げ）
格納先のメモリMp2p1のaddressは次式で表される。
address = m_width * y’ + x’       ...(9)
【００６０】
以上が累積画像情報をメモリへ分配する方法を式で一般化したものである。
【００６１】
次に、具体的にｘ方向のメモリの割り当て数を５（P1=5）、ｙ方向のメモリの割り当て数を１（P2=１）とした場合について図４を用いて説明する。ここで、メモリM p2p1に格納する画像の幅は累積画像情報400の画像幅をwidth=20とすると、P1=5でm_width=4となる。以上を踏まえて各座標の累積画像情報400を各メモリに分配する。
【００６２】
例えばC(8,1)の格納先は式(4),(5)より、p1=3, p2=0、式(6),(7)より、x’=1, y’=1、式(9)より、address=5となる。この結果、式(3)はM03[5]=C(8,1)で表され、C(8,1)の値はメモリM03のaddress=5に格納することになる。
【００６３】
また、局所領域が累積画像情報の上端、左端の上に位置する場合、C(-1,*)、C(*,-1)となる。この場合、それぞれの値はC(-1,*)=0、C(*,-1)=0となる。「*」はdon’t careでどのような数値であっても構わないことを示す。以上が本実施形態における累積画像情報をメモリへ分配する方法である。
【００６４】
次に、本実施形態の並列読み出しの原理について説明する。複数のメモリから同時に並列読み出しを行うためには、読み出し先のメモリが重ならないよう排他関係にしなければならない。ここで重要となる条件は隣り合う処理ウィンドウの間隔（以下、ストライドと呼ぶ）と各次元に割り当てられたメモリの個数を互いに素の関係にすることである。
【００６５】
本実施形態ではｘ方向のメモリの個数を５にし、ストライドを４画素として互いに素の関係にしている。互いに素の関係にしている理由について図１７を用いて説明する。図１７では理解を簡単にするために１次元配列とする。まず１次元配列のデータを５個のメモリに割り当て、一定のストライドで連続する５個のデータを並列に読み出すケースを考える。図１７の各表は本実施形態のメモリへの分配方法で分配した場合に座標０から５個のデータを、ストライドが１から７の間隔で読み出した場合を示す。ストライドを１から７に変化させた時の読み出し先が黒塗りで示されている。表の見方は1行目のM00からM04がメモリ番号で、2行目以降の数値が一次元データのｘ座標値である。例えばx=6のデータはメモリ番号M01のアドレス=1に格納される。次にストライド=4の表1704を代表に説明する。最初の読み出しデータはメモリ番号M00のアドレス=0（x=0）とすると、次の読み出しデータは座標を＋4移動させた位置で、メモリ番号M04のアドレス=0である。そして次の読み出しデータは座標をさらに＋４移動させた位置で、メモリ番号M03のアドレス=1となる。これを繰り返した結果から分かることは0を開始点としてストライド=4で5点連続して読み出した場合、読み出し先のメモリがすべて排他関係になるということである。ここで注目する性質は先頭座標をどこにずらしても読み出し先のメモリが排他関係になることである。これはメモリの個数とストライドとが互いに素の関係にあると起こる性質である。図１７ではx方向のメモリの個数とストライドが互いに素の関係にないストライド=5を除いて同様に読み出し先のメモリがすべて排他関係になっていることが確認できる。これはストライドが8以上の場合でもメモリの個数とストライドの関係が互いに素であれば同様に成り立つ。この性質は２次元に拡張した場合も同様の効果が得られる。
【００６６】
次に実際の処理ウィンドウとの対応関係について図５を用いて説明する。図５(a)は処理ウィンドウと局所領域、読み出し画素の位置関係を示す図である。図５(a)のウィンドウグループ500は処理ウィンドウ501から505で構成される。581は処理ウィンドウ501の基準点であり、処理ウィンドウの左上を基準点としている。また、処理ウィンドウ502から505のそれぞれの基準点は582から585に示される。各処理ウィンドウの局所領域510から514はそれぞれ4頂点を持っている。局所領域510の４頂点は図示される520と540、不図示の矩形の右上の画素530、矩形の右下の画素550を持つ。また、局所領域511の４頂点は図示される521と541、不図示の矩形の右上の画素531、矩形の右下の画素551を持つ。また、局所領域512の４頂点は図示される522と542、不図示の矩形の右上の画素532、矩形の右下の画素552を持つ。また、局所領域513の４頂点は図示される523と543、不図示の矩形の右上の画素533、矩形の右下の画素553を持つ。また、局所領域514の４頂点は図示される524、534、544、554を持つ。
【００６７】
処理対象となる局所領域は各処理ウィンドウ内で同じであるため局所領域は510から514のように各処理ウィンドウの基準点581から585より相対的に同じ場所に位置する。処理ウィンドウはS1画素の距離で等間隔に並んでいるため局所領域もS1画素の距離で等間隔に並び、画素520から524もS1画素の距離で等間隔に並んでいる状態になる。このように画素が等間隔に並ぶ状態は図１７で説明したストライドと対応しており、一定のストライドで読み出す条件を満たしている。そのため例えばS1＝４の場合、累積画像情報をP1=5個のメモリにインタリーブして格納しておけば画素520から524を並列に読み出すことが可能になる。図５(b)に画素を並列に読み出す際のタイムチャートを示す。図５(b)中の520から554までの数値は図５(a)で示す局所領域の４頂点の画素の番号を示す。
【００６８】
図５(b)には時刻t0において画素520から524をメモリM00からM04から同時に読み出すことが示されている。同様にt1、t2、t3で残りの頂点の画素も同時に読み出される。
【００６９】
また、図５(b)からは各メモリで４回の読み出しを行うことで5個の局所領域の頂点の画素値を得ることができることがわかる。この時の速度性能は１回の読み出しに１サイクルを要するとすれば局所領域１個当たりのスループットは４／５=０．８サイクルとなる。
【００７０】
また、ここではストライドS1=4、メモリの個数P1=5で互いに素の関係になるようにしたが、ストライドS１=4と互いに素の関係になるメモリの個数は他にも存在する。例えばP1=7やP1=9、P1=13でもよい。これはさらに高速化したい場合に有効で、メモリの個数P1を増やすことでスループットを向上させることができる。例えばP1=13であれば13個の処理ウィンドウを並列に処理することができるようになる。この時の局所領域１個当たりのスループットは実に4/13=0.30サイクルとなる。
【００７１】
以上の様にメモリの個数とストライドを互いに素の関係にすることで並列読み出しが可能になり、高速化することができることを説明した。
【００７２】
また、本実施形態によれば処理ウィンドウを並列に処理する際、特定の処理ウィンドウに着目すると各局所領域の頂点を1点ずつ読み出すので局所領域の形状は自由である。これは本発明の適用が累積画像情報の中から矩形の4頂点を読み出して総和を計算し特徴量を算出する方法に限るものではないことを意味する。例えば画像内の2点の差分を計算して得られる差分特徴を使ってパターン識別する方法であっても読み出す画素が各処理ウィンドウの基準点から相対的に同じ位置であれば並列読み出しが可能である。
【００７３】
また、本実施形態では累積画像情報をP1=5、P2=1で横方向のみインタリーブする方法を説明したがP1=5、P2=5のように縦方向にもインタリーブしても構わない。図６にメモリM00からM44の構成に割り当て、累積画像情報600を各メモリに分配する例を示す。各メモリへ累積画像情報600を分配するための計算式は式(3)から(9)に示す通りである。図６はｘ方向のメモリの割り当て数を５（P1=5）、ｙ方向のメモリの割り当て数を５（P2=5）とした図である。また、メモリに格納する画像の幅は累積画像情報600の画像幅width=20とすると、P1=5でm_width=4となる。以上を踏まえて各座標の累積画像情報600を割り当てる。例えばC(5,6)の格納先は式(4),(5)より、p1=0, p2=1、式(6),(7)より、x’=1, y’=1、式(9)より、address=5となる。この結果、式(3)はM10[5]=C(5,6)であらわされ、C(5,6)の値はメモリM10のaddress=5に格納することになる。以上のように累積画像情報600を分配した場合、並列化できるのは25個の処理ウィンドウで、ウィンドウグループは横方向に5個、縦方向に5個が並ぶ構成となる。
【００７４】
本実施形態ではパターン識別部107への入力を画像情報とし、内部で累積画像情報を作成したが、予め作成しておいた累積画像情報を入力としてもよい。その場合、累積画像情報生成部112では入力をそのまま分配書き込み処理部113に出力してもよい。また、累積画像情報生成部112はパターン識別部107から外して、バスインタフェース111と分配書き込み処理部113を直接接続した構成であってもよい。
【００７５】
また、本実施形態では累積画像情報の読み出しについて説明したが、これは特徴量算出処理に使うデータが累積画像情報であっただけで、累積画像情報に限定するものではない。特徴量算出処理で使う情報が画像情報であれば、画像情報をメモリに保存して読み出す方法であっても構わない。
【００７６】
また、本実施形態では式(3)のp1,p2,addressを計算するために式（４）から（９）による計算方法を示したが本発明はこれに限定されるものではない。本発明は割り当てるメモリ数と処理ウィンドウの間隔を互いに素の関係にすることが重要である。
【００７７】
また、本実施形態では図16のように二次元的なメモリの並びで説明したが、これは論理的な配置であって、物理的配置を限定するものではない。また、物理的なメモリ数がP1×P2個より多い場合でも、その中からP1×P2個を論理的に割り当てて使ってもよい。
【００７８】
また、本実施形態では識別処理がFalse確定した場合、処理を打ち切る例で説明したが、本発明は識別処理が途中で打ち切られない処理であってもよい。
【００７９】
［実施形態２］
実施形態２では累積画像情報のｘ方向を複数個のメモリにインタリーブし、ｙ方向はその位置に応じてｘ方向のインタリーブ順序の位相を変化させる方法を説明する。そして、これによって特殊な処理ウィンドウの配置においても並列化できることを説明する。
【００８０】
特殊な処理ウィンドウの配置の例を図１８に示す。図１８は説明のため処理ウィンドウの左上の基準点だけ図示している。図１８(a)は格子状の処理ウィンドウの配置を図示している。処理ウィンドウを格子状に配置する例は実施形態１でも示している。
【００８１】
処理ウィンドウはその配置の開始点1801から水平、垂直方向にそれぞれストライドS1、S2の間隔で配置される。次に特殊な処理ウィンドウの配置として千鳥状に配置したものを図１８(b)に示す。千鳥状に配置された処理ウィンドウを並列化するための詳細は後述する。
【００８２】
実施形態２では実施形態１と説明が重なる部分があるため差分のみ説明する。実施形態２のパターン識別装置の構成は実施形態１と同じ図１である。異なるのは分配書き込み処理部113である。本実施形態２のメモリ構成のパラメータはP1=5、P2=1とし、分配書き込み処理部113はy方向に応じて分配計算の位相を変え、分配先のメモリを変える処理を行う。
【００８３】
図１９を使って位相を変えてメモリに分配する方法とその効果を説明する。図１９(a)は実施形態１の方法で分配した例で、図１９(b)はy方向の位置に応じて＋２だけ位相を変えたものである。
【００８４】
以下に図１９(b)の累積画像情報を分配するための一般化した計算式を示す。
計算式は実施形態１で示した式（３）から式（９）とほぼ同じで、違うのはメモリ番号を決める式（４）と式（５）である。ここでは差分のみ説明する。
【００８５】
x方向の位相はphase1（phase1は整数）、ｙ方向の位相をphase2（phase2は整数）で表し、座標(x,y)の画素値を格納するメモリ番号p1、p2は次式で表される。
p1 = ( x + y * phase1 ) % P1                      ...(10)
p2 = ( x * phase2 + y ) % P2                      ...(11)
（注： % は剰余(modulo arithmetic)を表す）
式(10)は式(4)に位相を加味した計算式で、式(11)は式(5)に位相を加味した計算式である。
【００８６】
図１９(b)のy方向の位置に応じて＋２だけ位相を変えることは、phase1=2、phase2=0と同じである。図１９(a)は実施形態１の方法でP1=5、P2=1の構成のメモリに割り当て、累積画像情報を各メモリに分配した図である。累積画像情報の画素1901はメモリM00に格納され、画素1902のM04 まで順に格納される。そして次の画素1903はM00に格納され、このような格納が右端まで繰り返される。そして下の行の先頭画素1904は1行目同様にM00に格納される。図１９(b)は累積画像情報をP1=5、P2=1でy方向の位置に応じて位相を変えてメモリに格納された図である。1行目は図１９(a)と同じであるが2行目の先頭画素1905はメモリM02に格納されており図１９(a)と違いy方向に1行進む毎に格納先のメモリが＋２ずつずれている。
【００８７】
次に、図１９(a)、(b)をそれぞれ千鳥状に読み出す場合を図１９(c)、(d)を使って説明する。図１９(c)に千鳥状に配置された５つの画素が太枠で示されている。太枠の画素位置のものは処理ウィンドウの左上の位置に相当する。ここで示される千鳥状の配置は画素1911が周囲4画素（1910、1912、1913、1914）の中央に位置するようしている。図１９(d)も同様に千鳥状の配置がされている。
【００８８】
図１９(c)では画素1910と画素1913、画素1912と画素1914の格納先のメモリが同じであるため並列に読めない。一方、図１９(d)は画素1920から画素1924は全て格納先のメモリが異なるため並列に読めることがわかる。これは位相をずらすことでｙ軸方向の重なりが解消されることを意味する。そして図１９(d)のように予め決めた画素の位置関係で重なりが無いことが確認できれば、どの場所でもその位置関係にある画素は並列に読み出すことができる。但し、どのような位相のずらし方であっても重なりが解消されるわけではない。例えば、位相を＋１ずらした場合、図１９(d)に示す千鳥状に配置された5点は画素1922、1921、1923で重なりが発生してしまう。つまり位相は読み出す位置関係を元に調整する必要がある。また、ここでは図１９(d)に示したような千鳥状の配置で位相の調整を行うことを説明したが、図１９(d)以外にも画素1921が1画素左にずれたり、上にずれたりしても構わない。重要なことは特殊な配置において、それらの配置から画素データを並列に読み出せるように位相を調整することである。
【００８９】
これは次に示すような処理ウィンドウを特殊な位置関係で配置した時の読み出しでもわかる。図１９(e),(f)は1930、1931に示すような特殊な位置関係にある画素を並列に読み出したい場合の位相のずらし方を示すものである。図１９(e)は位相を＋２ずらした場合の図である。特殊な位置関係にある画素群1930、1931は読み出し先のメモリが重なっていることがわかる。一方、図１９(f)は位相を＋３ずらした場合の図である。特殊な位置関係にある画素群1940、1941は読み出し先のメモリが全て異なることが分かる。このように位相の調整によって並列に読み出せるようになることがわかる。
【００９０】
以上のように、ｙ軸方向の位置に応じて位相をずらすことでｙ軸方向の重なりの問題が解消されることで、様々な位置関係の画素群を並列に読み出せるようになる。本実施形態２ではｙ軸方向の位置に応じて位相をずらしたが、本発明はｙ軸方向に限定されるものではなく、式(11)に示すようにｘ軸方向の位置に応じて位相をずらしても構わない。また、実施形態２では千鳥状の配置や特殊な位置関係の配置の 場合を説明したが、実施形態１で示した格子状のウィンドウの配置で位相を変えても構わない。また、実施形態２で割り当てたメモリ数P1=5で説明した。この値は素数であるがメモリ数P1は素数に限定されない。重要なことは割り当てた複数のメモリと処理ウィンドウの間隔が「互いに素の関係」とすることで並列に読み出せるように排他関係になるようにすることである。
【００９１】
本実施形態ではパターン識別部107への入力を画像情報とし、内部で累積画像情報を作成したが、予め作成しておいた累積画像情報を入力としてもよい。その場合、累積画像情報生成部112では入力をそのまま分配書き込み処理部113に出力してもよい。また、累積画像情報生成部112はパターン識別部107から外して、バスインタフェース111と分配書き込み処理部113を直接接続した構成であってもよい。
【００９２】
また、本実施形態では累積画像情報の読み出しについて説明したが、これは特徴量算出処理に使うデータが累積画像情報であっただけで、累積画像情報に限定するものではない。特徴量算出処理で使う情報が画像情報であれば、画像情報をメモリに保存して読み出す方法であっても構わない。
【００９３】
［実施形態３］
上記の実施形態１、２では累積画像情報と呼ぶ2次元配列の情報での例を説明したが、本実施形態３では１次元配列の情報に適用する方法を説明する。実施形態３では１次元配列のデータを入力とし、その入力データを一次元入力情報と呼ぶ。
【００９４】
実施形態３での１次元配列は図１２(a)に示すように分配される。図１２(a)では一次元入力情報1200の左端を開始点としている。データ中の括弧内の数値は開始点を0とした座標を示す。実施形態３のパターン識別装置の構成は実施形態１とほぼ同じで、差分は入力データの累積情報を作らないことと扱うデータが１次元配列に変わったことである。累積情報を作らないようにするには累積画像情報生成部112を外した構成にすればよい。また他の方法として累積画像情報生成部112がデータをスルーして出力する機能を持っている場合はスルーで動作させればよい。
【００９５】
ここでは実施形態１との差分となる１次元配列をメモリに割り当てる方法と並列読み出しについて詳細を説明する。
【００９６】
まず、一次元入力情報のメモリへの割り当て方法について説明する。一次元入力情報の座標(x)の値をf(x)で表す。そして、ｘ方向のメモリの割り当て数をP1とする。メモリはMp1で表す。p1はメモリ番号値を示す。
【００９７】
そして、f(x)の格納先は以下のように表す。
Mp1[address] = f(x)             ...(12)
座標(x)の値を格納するメモリ番号p1は次式で表される。
p1 = x % P1                     ...(13)
（注： % は剰余を表す。）
そして、格納先のメモリMp1上のaddressは次式で表される。
address = x / P1                ...(14)
（注： 除算は小数点以下切り捨て）
【００９８】
以上が１次元入力情報を所定の規則に従ってメモリへ割り当てるための式である。
【００９９】
次に具体的に図１２(a)、(b)を使って説明する。図１２(a)の一次元入力情報1200を図１２(b)に示す5個のメモリＭ0(1270)からＭ4(1274)に格納することを考える。例えばf(3)の格納先のメモリ番号は式(13)より、メモリＭ３となる。そして、格納先のアドレスは式(14)より、address=0となる。この結果、式(12)はメモリＭ１[0]=f(3)であらわされ、f(3)の値はメモリＭ３のaddress=0に格納することになる。これらの計算によって一次元入力情報1200は図１２のメモリＭ０(1270)からＭ４(1274)に格納される。
【０１００】
次に、並列読み出しについて図１２(a)を用いて説明する。実施形態１で説明した処理ウィンドウに相当するものは1210のデータである。処理ウィンドウ1210はf(4)からf(13)までの10個のデータからなる。処理ウィンドウは間隔S1=３で処理ウィンドウ1210から1214に示されるように５つ並んでいる。各処理ウィンドウの基準点はそれぞれf(4)、f(7)、f(10)、f(13)、f(16)の点とする。この時これら基準点に対して相対的に同じ場所に位置する1220から1224は並列に読み出しができる。理由はデータの間隔とメモリの個数が互いに素の関係になるためである。処理ウィンドウの間隔S1とデータの間隔は同じとなるためデータの間隔は３となる。この時、1次元入力情報は５つのメモリに分配されており互いに素の関係となっている。そのためこれらの位置のデータを読み出すと、図１２(b)のメモリM0からM4の中の斜線で示しているように各メモリに排他的に格納された状態が保証され並列に読み出すことができる。
【０１０１】
また、本実施形態では累積情報を使わない一次元配列について説明したが、一次元配列から累積情報を作成しても構わない。その場合は累積画像情報生成部112がある構成で処理すればよい。
【０１０２】
［実施形態４］
実施形態４では、３次元の情報に適用した例で説明する。実施形態４では３次元配列のデータを入力とし、その入力データを三次元入力情報と呼ぶ。三次元入力情報とは例えば動画情報であって、二次元画像に時間軸の一次元が加わり三次元入力情報となる。実施形態４での三次元配列を図１３に示す。三次元配列1300は原点Oを開始点として、画像の水平方向をｘ軸、垂直方向をｙ軸、時間をｔ軸で表される。
【０１０３】
実施形態４のパターン識別装置の構成は実施形態１とほぼ同じで、差分は入力データの累積情報を作らないことと扱うデータが３次元配列に変わったことである。累積情報を作らないようにするには累積画像情報生成部112を外した構成にすればよい。また他の方法として累積画像情報生成部112がデータをスルーして出力する機能を持っている場合はスルーで動作させればよい。ここでは実施形態１との差分となる３次元配列をメモリに割り当てる方法と並列読み出しについて詳細を説明する。
【０１０４】
まず、三次元配列のメモリへの割り当て方法について説明する。三次元配列の座標(x,y,t)の値をf(x,y,t)で表す。そして、ｘ方向のメモリの割り当て数をP1、y方向のメモリの割り当て数をP2、t方向のメモリの割り当て数をP3とする。割り当てるメモリの総数はP1×P2×P3個とし、メモリはMp3p2p1で表す。p1,p2,p3はメモリ番号で、p1はx方向のメモリ番号、p2はy方向のメモリ番号、p3はt方向のメモリ番号を示す。
そして、f(x,y,t)の格納先は以下のように表す。
Mp3p2p1[address] = f(x,y,t)                     ...(15)
座標(x,y,t)の画素値を格納するメモリ番号p1,p2,p3は次式で表される。
p1 = x % P1                                     ...(16)
p2 = y % P2                                     ...(17)
p3 = t % P3                                     ...(18)
（注： % は剰余を表す。）
【０１０５】
そして、格納先のメモリMp3p2p1へのaddressは三次元配列の幅width、高さheightとすると次式で表される。
address = ((width/P1)*(height/P2))*(t/P3)
+(width/P1)*(y/P2)
+(x/P1)                       ...(19)
（注：width/P1、height/P2の除算は整数に切り上げであり、t/P3、y/P2、x/P1の除算は小数点以下切り捨てである）
【０１０６】
以上が三次元配列を所定の規則に従ってメモリへ割り当てるための式である。
【０１０７】
次に、並列読み出しについて図１３、図１４を使って説明する。三次元配列1300を5個のメモリにP1=5,P2=1,P3=1で格納することを考える。図１３の1301は実施形態１で説明した処理ウィンドウ相当である。以降、1301を本実施形態４では処理ウィンドウと呼ぶ。処理ウィンドウ1301は３次元の形状を持つものとする。図１４の1401は実施形態１で説明したウィドウグループ相当である。以降、1401をウィンドウグループと呼ぶ。処理ウィンドウは間隔S1、S2、S3をあけて配置される。S1はｘ方向の処理ウィンドウの間隔、S2はy方向の処理ウィンドウの間隔、S3はt方向の処理ウィンドウの間隔である。図１４はｘ方向の間隔S1で配置した例を示す。
【０１０８】
また、ウィンドウグループ1401内の処理ウィンドウ1411から1415がｘ方向に間隔S１＝４で５個並ぶものを考える。ｘ方向にだけ並べたのは説明を簡単にするためである。処理ウィンドウをｘ、ｙ、ｔ方向に並べたウィンドウグループであっても構わない。
【０１０９】
これら処理ウィンドウ1411から1415の基準点はそれぞれ原点に最も近い頂点に位置する点とする。この時これら基準点に対して相対的に同じ場所に位置する点1421から1425は並列に読み出すことができる。理由はデータの間隔とメモリの個数が互いに素の関係であるためである。処理ウィンドウの間隔S1とデータの間隔は同じとなるためデータの間隔は４となる。この時、３次元入力情報は５つのメモリに分配されており互いに素の関係となっている。そのためこれらの位置のデータは各メモリに排他的に格納された状態が保証され並列に読み出すことができる。
【０１１０】
また、本実施形態では累積情報を使わない３次元配列について説明したが、３次元配列から累積情報を作成しても構わない。その場合は累積画像情報生成部112がある構成で処理すればよい。
【０１１１】
［実施形態５］
実施形態１で説明したパターン識別処理ではステップS306の結果判定で検出対象が写っていないことが確定（False確定）した場合、その処理ウィンドウでの識別処理を打ち切る動作をする。図２１(a)、(b)はウィンドウグループ内の処理ウィンドウが打ち切られた状態を示す図である。図２１(a)は初期のウィンドウグループの状態で、ウィンドウグループ2100は処理ウィンドウ2101から2105がS1画素の間隔で５個配置されている。図２１ (b)は処理が進み処理ウィンドウ2101、2105の中には検出対象が写っていないことが確定（False確定）し処理が打ち切られた状態を示す。
【０１１２】
次に図２１(a)、(b)の局所領域の4頂点について説明する。図２１ (a)の中の局所領域の4頂点は2120から2154で示され、それぞれ各処理ウィンドウの左上の基準点から相対的に同じ位置にある。図２１(a)の処理ウィンドウ2101の局所領域の4頂点は不図示の頂点も含め2120から時計周りに2130、2150、2140とする。図２１(a)の処理ウィンドウ2102の局所領域の4頂点は不図示の頂点も含め2121から時計周りに2131、2151、2141とする。図２１(a)の処理ウィンドウ2103の局所領域の4頂点は不図示の頂点も含め2122から時計周りに2132、2152、2142とする。図２１(a)の処理ウィンドウ2104の局所領域の4頂点は不図示の頂点も含め2123から時計周りに2133、2153、2143とする。図２１(a)の処理ウィンドウ2105の局所領域の4頂点は図に示す通りである。図２１(b)の中の局所領域の４頂点は2161から2193で示され、各処理ウィンドウの左上の基準点から相対的に同じ位置にある。図２１(b)の処理ウィンドウ2102の局所領域の4頂点は不図示の頂点も含め2161から時計周りに2171、2191、2181とする。図２１(b)の処理ウィンドウ2103の局所領域の4頂点は不図示の頂点も含め2162から時計周りに2172、2192、2182とする。図２１(b)の処理ウィンドウ2104の局所領域の4頂点は図に示す通りである。
【０１１３】
次に図２１(a)の状態から図２１(b)の状態に移行する際のメモリ読み出しの様子を図２１(c)のタイムチャートで示す。ここではP1＝５個のメモリが割り当てられて累積画像情報が実施形態１に示した分配の式(３)から式（９）によって各メモリに分配されているものとする。図21(c)では局所領域の2120から2154のデータが時刻t0からt3でM00からM04の全メモリから並列に読み出されている。次に時刻t3の後、処理ウィンドウ2101と2015の処理が打ち切られることによって時刻t4からは局所領域の2161から2193のデータが読みだされている。時刻t4からt7では処理ウィンドウ2102、2103、2104の局所領域のデータを読み出すだけなのでメモリM01、M02、M03からしかメモリ読み出しを行わない。ここでFalse確定の処理ウィンドウの数がさらに増えると読み出しの無いメモリが増えメモリアクセス効率が落ちてしまう。
【０１１４】
実施形態５では読み出しの無いメモリを最小限に抑えるための方法を説明する。図２２は本実施形態５のパターン識別の構成を示す図である。基本的には実施形態１の図１で説明した構成と同様である。本実施形態の構成は図１に対してFalse確定の処理ウィンドウ数カウント部2201と処理モード切り替え指示部2202が追加されている。次に図２３のフローチャートを使って動作を説明する。
【０１１５】
図２３のフローチャートは実施形態１の図３のフローチャートと基本的には同じであるがステップS2301からステップS2304 が追加されている点が異なる。これらステップについて以下に説明する。
【０１１６】
ステップS2301ではFalse確定の処理ウィンドウのカウンタの初期化を行う。初期化はFalse確定の処理ウィンドウ数カウント部2201のカウント値を0にすることである。次にステップS302からステップS306では実施形態１と同様の処理を行う。次にステップS2302ではステップS306でFalse確定された処理ウィンドウをカウントする処理を行う。False確定の処理ウィンドウ数カウント部2201はFalse確定した処理ウィンドウの数をカウントするもので識別処理制御部119よりFalse確定の通知を受けてカウントする。
【０１１７】
次にステップS2303ではFalse確定の処理ウィンドウの数が閾値を超えたかどうかチェックする。False確定の処理ウィンドウ数カウント部2201は処理モード切り替え指示部に対してカウント値を通知している。そして、処理モード切り替え指示部2202は受け取ったカウント値とレジスタ設定等で予め設定された閾値とを比較して閾値以上になった時に次のステップS2304に移り、処理モードの切り替えを識別処理制御部119に指示する。閾値未満の場合はステップS307に移る。上記処理モードの切り替えが発生していない場合は実施形態１と同様の動作をする。
【０１１８】
次に、処理モードの切り替えが発生した場合の説明をする。最初の処理モードでは第一の読み出し処理モードとして実施形態１に示すようにウィンドウグループ内の処理ウィンドウの局所領域のデータを並列に読み出す。そして、ステップS2304によって切り替えられるもう1つの処理モードでは第二の読み出し処理モードとして１つの処理ウィンドウ内の局所領域の４頂点を並列に読み出す。このモードでは、積分画像をインタリーブしたメモリの数とブロックの幅、高さの関係を互いに素の関係にすることで、局所領域の４頂点の読み出しを行う。これら処理モードと切り替えについて図２４を用いて説明する。
【０１１９】
図２４（a）はP1＝5個のメモリ（M00からM04）を割り当て、累積画像情報をｙ方向の座標に応じて位相を＋２画素ずつずらして分配した図である。これは実施形態２で説明した分配方法である。そして、ウィンドウグループ2400は処理ウィンドウ2401から2405で構成され、各処理ウィンドウの間隔S1は４画素としている。ここでの処理ウィンドウは縦１６画素、横１６画素のサイズとしている。また各画素の中に書かれているM00からM04はメモリ番号を指している。
【０１２０】
図２４(b)は実施形態１で示した最初の処理モードにおける局所領域の読み出し位置を示す図である。局所領域2406は処理ウィンドウ2401に属している。同様に局所領域2407は処理ウィンドウ2402に属し、局所領域2408は処理ウィンドウ2403に属し、局所領域2409は処理ウィンドウ2404に属し、局所領域2410は処理ウィンドウ2405に属している。これら局所領域2406から2410の４頂点を読み出すタイミングを示すタイミングチャートを図２５に示す。まず時刻t1では5個の局所領域2406から2410の左上の頂点に位置するデータを読み出す。具体的には2411、2413、2415、2417、2419に位置するデータである。図２５のタイミングチャートではこれらを読み出しがどのメモリから行われているかが時刻t1に図示されている。同様に時刻t2では局所領域の右上の頂点に位置するデータ、時刻t3では局所領域の左下の頂点に位置するデータ、時刻t4では局所領域の右下の頂点に位置するデータが並列に読まれていることがわかる。
【０１２１】
次に図２４(c)は処理モード切り替え後のもう1つの処理モードにおいて処理ウィンドウ内の局所領域の４頂点を並列に読み出す位置を示す図である。図２４(c)は処理ウィンドウ2401と2405の処理がFalse確定し、処理モード切り替えが発生した時の状態である。図２４(c)では処理ウィンドウ2402の局所領域2450、2460、2470が図示されている。処理ウィンドウ内の局所領域の４頂点を並列に読み出すとは局所領域2450の４頂点のデータである2451、2452、2453、2454に位置する画素データを並列に読み出すことに相当する。これは図25のタイミングチャート上では時刻t5に示される。その後、局所領域2460の4頂点が時刻t6、局所領域2470の４頂点が時刻t7で並列に読み出される。
【０１２２】
以上のように処理モードを切り替えてメモリから読み込むことで5個のメモリの内、4個のメモリを使うのでメモリアクセスの効率がよい。これは同様のケースで説明した図２１（ｃ）と比較すれば効率が向上していることがわかる。この処理モードの切り替えにより処理ウィンドウのFalse確定が増えても常に4個のメモリを使うのでメモリアクセスの効率が変わることがない。
【０１２３】
本実施形態では図２４(c)に示す局所領域は全て排他関係になっている。これは、局所領域の形状に制約をかける必要があるがこれは本発明を限定するものではない。実施形態１と同様の最初の処理モードでは局所領域の形状に制約をかけることは不要であったが、切り替え後の処理モードでは局所領域の形状に制約が必要である。この対処については様々な方法が考えられる。1つは最初の処理モードにおいても切り替え後の処理モードに合わせて局所領域の形状に制約をかけておく方法が挙げられる。また他の方法として、辞書記憶部120に制約無しの辞書と制約付きの辞書の2種類を用意しておき、最初の処理モードでは制約無しの辞書を使い、切り替え後の処理モードでは制約付きの辞書を使う方法がある。また他の方法として、最初の処理モードでは制約無しの辞書を使って処理をし、切り替え後の処理モードでは所定の制約に納まるように計算によって変える方法がある。いずれにしてもパターン識別の精度に対して影響があるものなので許容できる範囲かどうか調べておく必要がある。本発明は処理モードを切り替えることでメモリアクセスの効率の低下を最小化できるものである。
【０１２４】
また本実施形態ではFalse確定の処理ウィンドウ数のカウント値によって処理モードを切り替える方法を示したが、本発明はこれに限定するものではない。例えば予め定めた局所領域の特徴抽出までは実施形態１で示す処理モードで動作させ、以降の処理は切り替え後の処理モードで動作させてもよい。
【０１２５】
本実施形態ではパターン識別部107への入力を画像情報とし、内部で累積画像情報を作成したが、予め作成しておいた累積画像情報を入力としてもよい。その場合、累積画像情報生成部112では入力をそのまま分配書き込み処理部113に出力してもよい。また、累積画像情報生成部112はパターン識別部107から外して、バスインタフェース111と分配書き込み処理部113を直接接続した構成であってもよい。
【０１２６】
また、本実施形態では累積画像情報の読み出しについて説明したが、これは特徴量算出処理に使うデータが累積画像情報であっただけで、累積画像情報に限定するものではない。特徴量算出処理で使う情報が画像情報であれば、画像情報をメモリに保存して読み出す方法であっても構わない。
【０１２７】
また、本実施形態では累積画像情報のように２次元の情報を使って説明したが本発明はこれに限定するものではなく1次元や３次元であっても本発明を適用可能であるのは明らかである。
【０１２８】
以上の実施形態では１次元から３次元について説明した。さらに、３次元を超える多次元入力情報であっても、同様に超直方体で考えれば、本発明を適用可能であるのは明らかである。多次元、すなわち、Ｎ次元まで一般化させた場合のパターン認識装置は、これまでの説明から以下の構成なることは容易に理解できよう。すなわち、
複数の処理対象領域がN次元の入力データの各次元方向毎に間隔S1、S2、…、SNで所定の間隔に配置され、各処理対象領域から所定のパターンを識別する装置において
Ｎ次元データの入力部と、
前記入力部によって得られた入力データを保持するため次元毎にP1、P2、…、PN個が割り当てられた計P1×P2×…×PN個で構成さてる複数の記憶部と、
前記入力データを前記複数の記憶部に所定の規則に従って書き込む書き込み部と、
前記処理対象領域に基準点を設け、複数の前記処理対象領域においてそれぞれの基準点に対して相対的に同じ位置のデータを並列に読み出す並列読み出し部と、
前記並列読み出し部によって読み出された複数のデータを用いて特徴量を算出する特徴量算出部と、
前記特徴量算出部によって算出された前記特徴量を用いて所定のパターンを識別する識別部を備え
前記各次元方向の間隔S1、S2、…、SNと対応する前記P1、P2、…、PN個の記憶部の内、少なくとも１組が互いに素の関係にあることを特徴とする。
【０１２９】
ここで、並列読み出し部によって読み出す処理対象領域はｎ番目の次元方向に対して１以上Pn以下の連続する前記処理対象領域であることが望ましい。
【０１３０】
また、１つの前記記憶部から同時に読み出せるデータの数をqi（1≦i≦P1×P2×…×PN）、全ての前記記憶部で同時に読み出せるデータの数をqiの総和Qとすると、前記並列読み出し部によって並列に読み出す前記処理対象領域の数は２以上Q以下(P1×P2×…×PN以下)で、前記処理対象領域の位置関係は前記書き込み部の前記書き込み規則から決定されることが望ましい。
【０１３１】
また、実施形態２で説明した２次元の累積画像情報をｙ方向の位置に応じて位相を変えて割り当てる方法はその他の次元においても適用可能である。以上の実施形態では入力データを処理ウィンドウの間隔と割り当てるメモリの個数が互いに素の関係になるようにすることでウィンドウグループ内の処理ウィンドウの点を並列読み出し可能にした。また、実施形態で説明したメモリは一度に1データが読めるシングルポートメモリであった。しかし、本発明はこれに限るものではなく一度に複数のデータが読めるメモリを使っても構わない。例えば一度に2個のデータを読み出せるデュアルポートメモリを使って入力データをインタリーブする場合を考える。図２０に一次元配列2000を４個のデュアルポートメモリ2090から2093に分配した時の図を示す。図２０(a)は一次元配列の論理的なイメージである。処理ウィンドウ2010から2018は間隔S1＝３で配置されており、2020から2027のデータを読み出すことを考える。基準点は各処理ウィンドウの左端の点とする。図２０(b)に一次元配列のデータを物理的なメモリに格納した図を示す。図２０(b)では2020から2027の点が格納されている場所が斜線で描かれている。2020から2027のデータは各基準点から相対的に同じ位置にあるため間隔はS1と同じとなり等間隔に並ぶ。この間隔とメモリの個数は互いに素の関係にあるため2020から2023の点は各メモリに1つずつ割り当てられ、2024から2027の点も同様に各メモリに1つずつ割り当てられる。この結果、各メモリには2つずつ割り当てられることになる。この時割り当てられるメモリは1度に2個のデータを読めるデュアルポートメモリであるため2020から2027の8個のデータは並列に読み出すことが可能となる。これは二次元、三次元、それ以上の多次元でも同様に適用可能である。
【図１】
2014006585.tif 000004
【図２】
2014006585.tif 000005
【図３】
2014006585.tif 000006
【図４】
2014006585.tif 000007
【図５】
2014006585.tif 000008
【図６】
2014006585.tif 000009
【図８】
2014006585.tif 000010
【図９】
2014006585.tif 000011
【図１０】
2014006585.tif 000012
【図１１】
2014006585.tif 000013
【図１２】
2014006585.tif 000014
【図１３】
2014006585.tif 000015
【図１４】
2014006585.tif 000016
【図１５】
2014006585.tif 000017
【図１６】
2014006585.tif 000018
【図１７】
2014006585.tif 000019
【図１８】
2014006585.tif 000020
【図１９】
2014006585.tif 000021
【図２０】
2014006585.tif 000022
【図２１】
2014006585.tif 000023
【図２２】
2014006585.tif 000024
【図２３】
2014006585.tif 000025
【図２４】
2014006585.tif 000026
【図２５】
2014006585.tif 000027
【図７】
2014006585.tif 000028