説明

データ処理装置、データ処理方法及びプログラム

【課題】全体の転送負荷を軽減できるようにする。
【解決手段】データの連続性を判定する第1の判定手段と、係数パラメタのサイズを判定する第2の判定手段と、前記第1及び第2の判定手段の結果に基づいて転送負荷が軽い方のデータを転送するように制御する制御手段とを備えるようにして、同じデータもしくは係数パラメタを複数回転送する頻度を減らすことができ、外部メモリへのアクセスを減らすことができ、転送負荷を軽減することができるようにする。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算器にデータおよび係数パラメタを転送して多段データ処理をする際に、データおよび係数パラメタの転送負荷を軽減するためのデータ処理装置、データ処理方法及びプログラムに関する。
【背景技術】
【0002】
従来、デジタルカメラやプリンタにおいて、入力画像中の人物や顔といった特定の被写体を検出し、検出された被写体に適した処理をおこなう技術が提案されている。この特定の被写体を検出する一例として、顔に対して肌色補正処理を行うための、顔検出処理がある。
【0003】
顔検出処理にはさまざまな手法が提案されている。例えば非特許文献1に記載あの方法(以下、Viola&Jones手法と呼ぶ)や、人間の顔の対称的特徴、テンプレート・マッチング、ニューラル・ネットワークなどを利用することによって、人間の顔を検出する方式が示されている。
【0004】
以下、図12〜図15を用いてViola&Jones手法の概略を説明する。顔認識では、多くの顔データを入力し、顔の認識率や誤認識率がある一定の水準になるように学習することによって、識別処理を行うための係数パラメタを求める。ここでいう識別処理とはパタン照合処理のことであり、顔検出処理は、この係数パラメタを用いたパタン照合処理群のことである。係数パラメタには、パタン照合処理に必要な特徴量やしきい値が含まれる。
【0005】
学習結果の一例を図12に示す。係数パラメタの一部である特徴量1(1210)は、両目部分の小矩形と両目下部分の小矩形を比べ、両目部分の小矩形は両目下部分の小矩形よりも黒っぽいことを示す特徴量である。また特徴量2(1220)は、両目部分の小矩形において、眉間部分よりも目の部分が黒っぽいことを示す特徴量である。このような係数パラメタの一部である特徴量1(1210)〜特徴量N(12N0)を用いて、実際に照合したい入力データ1200に対してパタン照合処理をおこなう。
【0006】
Viola&Jones手法では、Adaboostによる学習結果をもとに識別処理を実行する。この識別処理は、図13に示す処理1300〜処理13N0のように、ある識別処理の結果、次の識別処理に進むときはPASS、次の識別処理に進まない場合はFAILを出力する。そして、FAILであった場合は、識別処理を終了するという、多段データ処理になっている。
【0007】
また、Viola&Jones手法では、図14に示すように、ある区切り(以下、ステージと呼ぶ)で識別処理を区切り、ステージごとにしきい値を用いてPASS/FAILの識別を行う。これにより、顔と顔でないものを識別する。また、最初の方の前段ステージ1400では、顔を顔ではないと判定する、未検出を最小化し、誤検出の確率が比較的高めになるような単純な特徴を用いる。単純な特徴であると、係数パラメタのサイズが小さいため、少ない演算回数で識別処理が可能となる。そのため、ソフトウェア処理においても高速処理が可能となる。さらに、前段ステージ1400では、比較的多くの矩形領域を効率よく顔ではないと識別することができるため、画像全体に対する顔検出処理を短時間で完了することが可能になる。
【0008】
逆に、後ろの方の後段ステージ1420では、より複雑で、確実に顔であることを判定する特徴を用いる。そのため、係数パラメタのサイズが大きくなる。つまり前段ステージ1400から中段ステージ1410、後段ステージ1420へと進むにつれ、係数パラメタサイズが大きくなり、演算回数も多くなる。
【0009】
図15は、Viola&Jones手法をハード実装する際の概念的な構成を示す図である。識別器1500は、ステージ1用の係数パラメタである特徴量1(1210)及びしきい値1を保持している。しきい値1によるしきい値処理によって、ステージ1をPASSするかFAILするかを判定する。以下、特徴量1及びしきい値1のことを係数パラメタ1と呼ぶ。また、ステージ1の処理のことをステージ1処理と呼ぶ。
【0010】
識別器1500は入力データ1200を入力すると、係数パラメタ1を用いてステージ1処理を行う。そして、その結果(PASS/FAIL)は識別器1510の入力となる。ここでPASSであった場合、識別器1510は入力データ1200に対するステージ2処理を行う。ステージ2処理では、特徴量2(1220)によるパタン照合処理としきい値2によるしきい値処理とを行う。なお、ステージ1及びステージ2は、ステージごとに係数パラメタが異なるだけであり、その他は同様である。同様に識別器1520、15N0でも処理が行われる。
【0011】
図16は、図15で示したハード実装の概念的な構成図を、より具体的に実装した一例を示すブロック図である。
照合処理部1640は、サブウィンドウ画像を保持するサブウィンドウ画像保持部1641、係数パラメタ保持部1642、演算部1643、及び結果管理部1644から構成される。サブウィンドウ画像保持部1641は、外部メモリから転送された、入力データ1200の照合すべき画素位置のサブウィンドウ画像を保持するための内部メモリである。また、係数パラメタ保持部1642は、外部メモリから転送された、ステージNの処理に必要な係数パラメタNを保持するための内部メモリである。
【0012】
例えば、図15のステージ1を処理する識別器1500の場合、演算部1643は係数パラメタ保持部1642が保持する係数パラメタ1に含まれる特徴量1(1210)を用いる。そして、サブウィンドウ画像である入力データ1200のパタン照合を行う。まず、入力データ1200において、特徴量1(1210)の矩形1_1及び矩形1_2内の画素値の総和を計算する。矩形1_1および矩形1_2の輝度差を計算し、輝度差がしきい値1を越えている場合は、入力データ1200の特徴量1に対する場所は特徴に合致するとする。そして結果(PASS(顔である))を出力する。
【0013】
PASSしたサブウィンドウ画像に関する情報は、結果管理部1644が管理する。転送部1650は、転送制御部1600、サブウィンドウ画像転送部1654、及び係数パラメタ転送部1655から構成される。転送制御部1600は、照合処理結果がPASSであるとき、係数パラメタ転送部1655に係数パラメタの転送を指示する。このとき、係数パラメタ転送部1655は、外部メモリから係数パラメタ2を読み出し、係数パラメタ保持部1642に書き込んで、係数パラメタを書き換える。
【0014】
また、転送制御部1600は、照合処理結果がFAILであるときや、あるサブウィンドウ画像に対して全てのステージ処理が終了したとき、サブウィンドウ画像転送部1654にサブウィンドウ画像の転送を指示する。このとき、サブウィンドウ画像転送部1654は、外部メモリから次のサブウィンドウ画像を読み出し、サブウィンドウ画像保持部1641に書き込み、次のサブウィンドウ画像に対する照合処理に進む。
【0015】
演算部1643には、サブウィンドウ画像や係数パラメタが外から入力されるため、演算部1643の実装は、ステージ非依存にすることができる。サブウィンドウ画像保持部1641は1面以上のサブウィンドウ画像を保持し、係数パラメタ保持部1642は、処理に必要なステージ分もしくは全ステージ分の係数パラメタを保持する。このように処理ステージに応じて係数パラメタを入れ替えることにより、サブウィンドウ画像に対する全ステージの識別処理を実現できる。
【0016】
近年、Viola&Jones手法に代表される認識処理をデジタルカメラ等に搭載し、例えば顔を検出して自動的に顔に焦点を合わせる、といった機能に対するニーズが高まっている。つまり、リアルタイム認識処理の実装が求められている。また、デジタルカメラ等のデジタル電化製品は非常にコストセンシティブであるため、認識処理機能をできるだけ安価に実装、つまり回路規模を最小限に押さえることも求められている。
【0017】
図16に示すように、演算部1643を全ステージ処理で共有することにより、回路規模の抑制が実現できる。サブウィンドウ画像保持部1641に保持できるサブウィンドウ画像数及び係数パラメタ保持部1642に保持できる係数パラメタのサイズ(保持できる係数パラメタのステージ数)により、回路規模および処理速度が決定する。
【0018】
また、非常に高速に処理することが求められる場合は、サブウィンドウ画像保持部1641や係数パラメタ保持部1642を高速アクセス可能なメモリで構成する。そして、メモリ容量を大きくし、より多くのサブウィンドウ画像、係数パラメタを保持することにより、処理途中にウィンドウ画像および係数パラメタを入れ替える頻度を減らして照合処理を行う。これにより、外部メモリへのアクセス回数が大幅に減ることから、処理を高速化することができる。しかし、サブウィンドウ画像保持部1641や係数パラメタ保持部1642の大容量化は、回路規模の増大につながり、コストが高くなるという問題があった。そこで、サブウィンドウ画像保持部1641や係数パラメタ保持部1642には、必要なときに必要なデータを外部メモリからロードする構成を用いることが多い。
【0019】
必要最低限の容量でできるだけ処理を高速化するためには、係数パラメタのロード回数を減らすことやサブウィンドウ画像のロード回数を減らすことが考えられる。係数パラメタのロード回数を減らすためには、係数パラメタ保持部142にステージNの係数パラメタNを転送したあと、サブウィンドウ画像のみを切換えて処理すればよい(以下、パタンA)。一方、サブウィンドウ画像のロード回数を減らすためには、サブウィンドウ画像保持部141にサブウィンドウ画像を転送したあと、係数パラメタのみを切換えて処理すればよい(以下、パタンB)。
【0020】
しかし、どちらの手法がより高速化できるかは、サブウィンドウ画像データの連続性や、後段ステージへ進むサブウィンドウの割合(打ち切り率)に依存するため、一概に決めることはできない。
【0021】
図17は、ステージ1(S1)の打ち切り率を3分の1とし、ステージ2(S2)の打ち切り率を2分の1としたとき、入力した画像データの画素が連続するように打ち切られる場合の一例を示す図である。図17に示す例では、上からS1の入力6つ(D1〜D6)、S2の入力4つ(D2〜D5の4つ、S1の入力の3分の2)、S3の入力2つ(D3、D4、S2の入力の2分の1)となっている。S2の係数パラメタ転送負荷はS1の2倍とし、S3の係数パラメタ転送負荷はS1の5倍とする。また、サブウィンドウ画像は4カラム分のデータからなり、サブウィンドウ画像1カラム分の転送負荷とS1の係数パラメタ転送負荷は同等とする。画像データは、ラスタースキャン順で転送し、例えばD1を転送したあとにD2を転送する場合のようにラスタースキャン順になっている場合は、両者の差分の1カラム分のみを転送するとする。また、D4を転送したあとにD3を転送する場合のようにラスタースキャンと逆順になっている場合は、両者の差分ではなく、D3を4カラム分転送するとする。
【0022】
図18は、係数パラメタおよびサブウィンドウ画像の転送順序ならびに転送量を、1カラム分のデータ転送量を1単位として模式的に示す図である。白色の部分はデータ、灰色の部分は係数パラメタの転送を意味する。矩形列が右に伸びれば伸びるほど、データ転送量が多くなる。
【0023】
ここで、パタンAの係数パラメタ転送回数は、各パラメタにつき1回である。また、パタンBの係数パラメタ転送回数は、各パラメタにつき最低1回、最高処理するサブウィンドウ数回である。係数パラメタS3のようにサブウィンドウ画像サイズよりも大きなサイズの係数パラメタが存在する場合、パタンBはパタンAよりも転送負荷が高くなることが多い。
【0024】
図19は、S1の打ち切り率3分の1、S2の打ち切り率2分の1のとき、入力した画像データの画素が非連続になるように打ち切られる場合の一例を示す図である。図19に示す例では、上からS1の入力6つ、S2の入力4つ(S1の入力の3分の2)、S3の入力2つ(S2の入力の2分の1)となっている。また、図20は、図17と同じ条件で係数パラメタ及びサブウィンドウ画像の転送順序ならびに転送量を、パタンA及びパタンBの場合について模式的に示す図である。
【0025】
パタンBで処理した際のデータ転送量は、図17を処理したときと変わらない。しかし、パタンAにおけるデータ転送量は、図17に示す例と比べ、図19に示す例のほうが増える。これは例えば係数パラメタS2についての処理において、サブウィンドウ画像D2を転送したあとに、D2とは画素が非連続なD5を転送することになる。両者の差分は3カラム分あるため、画素が連続しているときに比べてデータの転送量が増えるためである。そのため図18のパタンAの結果と図20のパタンAの結果とでは、図20に示す例の方が、転送負荷が高い。
【先行技術文献】
【非特許文献】
【0026】
【非特許文献1】P.Viola and M.Jones, "Robust Real−time Object Detection", SECOND INTERNATIONAL WORKSHOP ON STATISTICAL AND COMPUTATIONAL THEORIES OF VISION, July 13 1201
【発明の概要】
【発明が解決しようとする課題】
【0027】
データが連続である場合、前段ステージの係数パラメタを後段ステージの係数パラメタへ何回も切換える状況は、データを切換える場合に比べて転送負荷が高くなる場合がある。また、データが離散的である場合、データを切換えなければならない状況は、係数パラメタを切換える場合に比べて転送負荷が高くなる場合がある。
【0028】
本発明は前述の問題点に鑑み、全体の転送負荷を軽減できるようにすることを目的としている。
【課題を解決するための手段】
【0029】
本発明のデータ処理装置は、データの連続性を判定する第1の判定手段と、係数パラメタのサイズを判定する第2の判定手段と、前記第1及び第2の判定手段の結果に基づいて転送負荷が軽い方のデータを転送するように制御する制御手段とを備えたことを特徴とする。
【発明の効果】
【0030】
本発明によれば、データの連続性と係数パラメタのサイズとを考慮して転送順序を決めることで、同じデータもしくは係数パラメタを複数回転送する頻度を減らすことができる。これにより、外部メモリへのアクセスを減らすことができ、転送負荷を軽減することができる。
【図面の簡単な説明】
【0031】
【図1】実施形態に係る多段データ処理装置の構成例を示すブロック図である。
【図2】照合処理部及び転送制御部の詳細な構成例を示すブロック図である。
【図3】多段データ処理装置による処理手順の一例を示すフローチャートである。
【図4】ステージと係数パラメタサイズとの関係の一例を示す図である。
【図5】ステージ番号と、サブウィンドウ画像間の距離との関係を示す図である。
【図6】3人の人物が写っている画像の一例を示す図である。
【図7】図6に示す画像に対してステージ1の処理をした結果を示す図である。
【図8】図7に示す結果の一部分を切り出した画像を示す図である。
【図9】図8に示すD1〜D9のステージ2〜4の処理結果を示す図である。
【図10】図8に示す結果に対し、ステージ2(S2)〜ステージ4(S4)の処理をする場合の概要を示すタイミングチャートである。
【図11】係数パラメタを固定してデータを切換えて多段データ処理をする場合の概要を示すタイミングチャートである。
【図12】学習結果の一例を示す図である。
【図13】識別処理の手順の概要を示す図である。
【図14】ステージごとにPASS/FAILの識別を行う概要を示す図である。
【図15】Viola&Jones手法をハード構成した場合を示す図である。
【図16】図15で示したハード構成を具体化した一例を示すブロック図である。
【図17】画素が連続するように打ち切られる場合の一例を示す図である。
【図18】転送順序ならびに転送量を1単位として模式的に示す図である。
【図19】画素が非連続になるように打ち切られる場合の一例を示す図である。
【図20】転送順序ならびに転送量を1単位として模式的に示す図である。
【図21】データを固定して係数パラメタを切換えて多段データ処理をする場合の概要を示すタイミングチャートである。
【図22】実施形態における結果管理部の詳細な構成例を示すブロック図である。
【発明を実施するための形態】
【0032】
本実施形態の多段データ処理装置を構成するシステムの構成について、認識処理システムを例に、図1、図2及び図22を参照して説明する。
図1は、本実施形態に係る多段データ処理装置の構成例を示すブロック図である。
図1において、100はシステムバスである。120はシステム全体を制御するCPUである。130は画像データや係数パラメタを格納するシステムメモリである。140は照合処理をおこなう照合処理部である。150はシステムバス100経由でシステムメモリ130から照合処理部140へ画像データや係数パラメタを転送する転送制御部である。
【0033】
図2は、照合処理部140及び転送制御部150の詳細な構成例を示すブロック図である。
図2において、141は転送制御部150が転送したサブウィンドウ画像を保持するためのサブウィンドウ画像保持部である。142は転送制御部150が転送した係数パラメタを保持するための係数パラメタ保持部である。143はサブウィンドウ画像保持部141が保持するサブウィンドウ画像及び係数パラメタ保持部142が保持する係数パラメタを読み込み、認識処理演算をする演算部である。
【0034】
144は演算部143の演算結果を読み込み、照合処理がFAILしていないサブウィンドウ画像の位置情報及びそのサブウィンドウが処理済みの係数パラメタを管理する結果管理部である。また、結果管理部144は、複数のサブウィンドウ画像間のデータ間(画素数)の距離(データの連続性)をあらわす領域距離情報、及び処理済みの係数パラメタをあらわす処理済み係数パラメタ情報(サイズ)を出力する。
【0035】
152は結果管理部144から得られる領域距離情報及び処理済みパラメタ情報に基づいて、システムメモリ130から転送すべき画像データ情報を求める領域画像転送制御部である。153は結果管理部144から得られる領域距離情報および処理済みパラメタ情報に基づいて、システムメモリ130から転送すべき係数パラメタ情報を求める係数パラメタ転送制御部である。154はシステムメモリ130からサブウィンドウ画像保持部141にサブウィンドウ画像を転送するサブウィンドウ画像転送部である。155はシステムメモリ130から係数パラメタ保持部142に係数パラメタを転送する係数パラメタ転送部である。
【0036】
図22は、結果管理部144の詳細な構成例を示すブロック図である。
図22において、1441は、演算部143からの照合結果を格納するのを制御するデータ照合結果格納制御部である。1442は、データ照合結果格納制御部1441の制御に従い、サブウィンドウ画像毎に処理済み係数パラメタ情報と照合結果とを保持するデータ毎処理済み係数パラメタ保持部である。1443は、第1の判定としてデータ毎処理済み係数パラメタ情報保持部1442が保持するサブウィンドウ画像毎の照合結果を読み込み、サブウィンドウ画像間の距離(画素数)を求める領域距離情報算出部である。1444は、第2の判定としてデータ毎処理済み係数パラメタ情報保持部1442が保持するサブウィンドウ画像毎の処理済み係数パラメタ情報を読み込み、処理済み係数パラメタ情報を求める処理済み係数パラメタ情報算出部である。
【0037】
演算部143は、サブウィンドウ画像保持部141が保持するサブウィンドウ画像と係数パラメタ保持部142が保持する係数パラメタとを読み込み、照合処理を実施する。照合結果は、処理済みの係数パラメタの情報とともに、結果管理部144内のデータ照合結果格納制御部1441によりデータ毎処理済み係数パラメタ情報保持部1442にサブウィンドウ毎に保持される。結果管理部144は、サブウィンドウ画像からそのサブウィンドウ画像からラスタースキャン順にスキャンした結果、次に見つかったサブウィンドウ画像までの間の画素値(領域距離情報)を求める。
【0038】
また、処理済み係数パラメタ情報算出部1444は、サブウィンドウ画像保持部141が保持するサブウィンドウ画像に対して処理済みの係数パラメタ情報(係数パラメタのサイズ等)を求める。そして、転送切換え部151、領域画像転送制御部152、及び係数パラメタ転送制御部153に、領域距離情報及び処理済み係数パラメタ情報を送る。
【0039】
転送切換え部151は、サブウィンドウ画像保持部141が保持するサブウィンドウ画像に対して次の係数パラメタを転送して処理する。また、係数パラメタ保持部142が保持する係数パラメタに対して次のサブウィンドウ画像を転送して処理する。また、データ転送量が軽い方を調べるため、次のサブウィンドウ画像を転送する転送負荷と、次の係数パラメタを転送する転送負荷とを比較する。
【0040】
この比較の結果、次のサブウィンドウ画像を転送する転送負荷の方が軽い場合は、サブウィンドウ画像転送部154の有効/無効をあらわす画像データイネーブル信号をアサートし、サブウィンドウ画像転送部154を有効にする。このとき、係数パラメタ転送部155の有効/無効をあらわす係数パラメタイネーブル信号をデアサートし、係数パラメタ転送部155を無効にする。
【0041】
逆に、次の係数パラメタを転送する転送負荷の方が軽い場合、画像データイネーブル信号をデアサートして、サブウィンドウ画像転送部154を無効にする。そして、係数パラメタイネーブル信号をアサートして、係数パラメタ転送部155を有効にする。
【0042】
領域画像転送制御部152は、結果管理部144からの領域距離情報に基づいて、サブウィンドウ画像保持部141が次のサブウィンドウ画像を保持するために必要な画像データ転送量(データ量)を計算する。そして、画像データ転送量及び転送する画像データが格納されているシステムメモリ130における位置(転送画像データ情報)をサブウィンドウ画像転送部154に送る。係数パラメタ転送制御部153は、結果管理部144からの処理済み係数パラメタ情報に基づいて、未処理係数パラメタのうち次に転送する係数パラメタの情報を求める。そして、係数パラメタ転送量及び転送する係数パラメタが格納されているシステムメモリ130における位置(転送係数パラメタ情報)を係数パラメタ転送部155に送る。
【0043】
サブウィンドウ画像転送部154は、転送切換え部151が出力する画像データイネーブル信号がアサートしている転送画像データ情報に基づいてサブウィンドウ画像を転送する。係数パラメタ転送部155は、転送切換え部151が出力する係数パラメタイネーブル信号がアサートしている転送係数パラメタ情報に基づいて係数パラメタを転送する。
【0044】
次に、本システムの動きを図3のフローチャートに沿って説明する。図3は、本実施形態に係る多段データ処理装置による処理手順の一例を示すフローチャートである。
まず、ST101において、領域画像転送制御部152及び係数パラメタ転送制御部153は、処理するデータの有無を判定する。この判定の結果、処理するデータが存在する場合は、ST102に進み、処理するデータが存在しない場合は、処理を終了する。次に、ST102において、転送切換え部151は係数パラメタイネーブル信号をアサートし、画像データイネーブル信号をデアサートする。そして、係数パラメタ転送部155は係数パラメタ転送制御部153から得た転送係数パラメタ情報に基づいて係数パラメタをシステムメモリ130から係数パラメタ保持部142に転送する。
【0045】
次に、ST103において、転送切換え部151は係数パラメタイネーブル信号をデアサートし、画像データイネーブル信号をアサートする。そして、サブウィンドウ画像転送部154は領域画像転送制御部152から得た転送画像データ情報に基づいてサブウィンドウ画像をシステムメモリ130からサブウィンドウ画像保持部141に転送する。次に、ST104において、演算部143はサブウィンドウ画像保持部141が保持するサブウィンドウ画像と係数パラメタ保持部142が保持する係数パラメタを読み込み、演算処理を行う。そして、演算結果を結果管理部144に送る。
【0046】
次に、ST105において、演算結果の判定を行う。この判定の結果、演算結果がPASSだった場合は、ST106に進み、FAILだった場合は、ST116に進む。そして、ST106においては、結果管理部144が管理する処理結果から、現在の画像データに対する未処理ステージの有無を判定する。この判定の結果、未処理ステージが存在する場合は、ST107に進み、未処理ステージが存在しない場合は、S116に進む。
【0047】
次に、ST107においては、結果管理部144が管理する処理結果から、現在の係数パラメタに対する未処理データの有無を判定する。この判定の結果、未処理データが存在する場合は、ST108に進み、未処理データが存在しない場合は、S111に進む。
【0048】
そして、ST108においては、転送切換え部151は結果管理部144からの領域距離情報(連続性)及び処理済み係数パラメタ情報(データサイズ)に基づいて、次に処理する係数パラメタの転送負荷と画像データの転送負荷とを比較する。この比較の結果、データ転送負荷の方が、転送負荷が軽い場合は、転送切換え部151は画像データイネーブル信号をアサートし、ST109に進む。一方、データ転送負荷の方が、転送負荷が重い場合は、転送切換え部151は係数パラメタイネーブル信号をアサートし、ST111に進む。
【0049】
次に、ST109においては、領域画像転送制御部152は、サブウィンドウ画像保持部141が次に処理する画像データを保持しているか否かを判定する。この判定の結果、データを保持していない場合は、ST110において、領域画像転送制御部152は、次の処理のために必要な画像データ量およびシステムメモリ130における位置を計算する。これをサブウィンドウ画像転送部154に送る。そして、サブウィンドウ画像転送部154は、転送画像データ情報に基づいてシステムメモリ130からサブウィンドウ画像保持部141に画像データを転送する。そして、ST104に戻る。
【0050】
一方、ST111においては、係数パラメタ転送制御部153は、係数パラメタ保持部142が次に処理する係数パラメタを保持しているか否かを判定する。この判定の結果、係数パラメタを保持していない場合は、ST112において、係数パラメタ転送制御部153は、次の処理に必要な係数パラメタ情報およびシステムメモリ130における位置を係数パラメタ転送部155に送る。そして、係数パラメタ転送部155は、転送係数パラメタ情報に基づいて、次の処理に必要な係数パラメタを転送する。
【0051】
次に、ST113においては、処理済みの係数パラメタ情報から、サブウィンドウ画像の近傍の画像データで新しく転送した係数パラメタでは未処理の画像データがあるかどうかを判定する。これは、サブウィンドウ画像保持部141が保持するサブウィンドウ画像だけでなく、その近傍の画像データについても新しく転送した係数パラメタで処理するためである。この判定の結果、サブウィンドウ画像の近傍の画像データに未処理データが存在しない場合は、ST104に戻る。
【0052】
一方、サブウィンドウ画像の近傍の画像データに未処理データが存在する場合はST114に進み、サブウィンドウ画像保持部141が該当する画像データを保持しているかどうかを判定する。そして、この判定の結果、該当する画像データを保持している場合は、ST104に戻る。
【0053】
一方、該当する画像データを保持していない場合は、ST115において、転送切換え部151は、サブウィンドウ画像転送部を有効にするために画像データイネーブル信号をアサートする。また、領域画像転送制御部152は、必要な画像データ量及びシステムメモリ130における位置(転送画像データ情報)を計算し、サブウィンドウ画像転送部154に送る。さらに、サブウィンドウ画像転送部154は、領域画像転送制御部152から得た転送画像データ情報に基づき、画像データをシステムメモリ130からサブウィンドウ画像保持部141に転送する。
【0054】
一方、ST116においては、領域画像転送制御部152は、結果管理部144が管理するサブウィンドウ画像の位置情報と係数パラメタに関する情報とから現在の係数パラメタに対する未処理データの有無を判定する。この判定の結果、未処理データが存在する場合は、ST117に進み、未処理データが存在しない場合は、ST101に戻る。
【0055】
次に、ST117において、領域画像転送制御部152は、未処理データをサブウィンドウ画像保持部141が保持しているかどうかを判定する。この判定の結果、未処理データをサブウィンドウ画像保持部141が保持している場合は、ST104に戻る。一方、未処理データをサブウィンドウ画像保持部141が保持していない場合は、ST118に進み、領域画像転送制御部152は、転送画像データ量を計算し、サブウィンドウ画像転送部154に送る。そして、サブウィンドウ画像転送部154は、領域画像転送制御部152から得た転送画像データ情報に基づき、画像データをシステムメモリ130からサブウィンドウ画像保持部141に転送する。そして、ST104に戻る。
【0056】
次に、多段データ処理による顔認識を例に、本システムの動作を説明する。例えば、ステージと係数パラメタサイズとが、図4に示すようになっていて、かつ、サブウィンドウサイズは4×4とする。このとき、ステージ番号を横軸に、サブウィンドウ画像間の距離(画素数)を縦軸に取り、各ステージの係数パラメタの転送量とデータ転送量を比較すると、図5に示すような関係を求めることができる。
【0057】
サブウィンドウ画像保持部141のサイズをサブウィンドウ2面分とし、係数パラメタ保持部142のサイズをステージ5(S5)の係数パラメタサイズと同じとしたときの顔認識処理は以下の通りである。図7は、図6に示す画像に対してステージ1(S1)の処理をした結果を示す図である。灰色の部分は、その画素が左上端になるように4×4のサブウィンドウ画像を切り出し、そのサブウィンドウ画像に対してS1を処理した結果がPASSした画素をあらわす。白色の部分は、S1の処理がFAILした画素をあらわす。
【0058】
図8は、図7の一部分を取り出し、S1をPASSした画素が左上端になるように切り出したサブウィンドウ画像を示す図である。なお、図6〜図8において、1マスは1画素を意味する。また、図9は、図8に示すD1〜D9のステージ2〜4(S2〜S4)の処理結果を示す図である。なお、演算部143の演算性能は充分で、どんなデータならびにどんな係数パラメタであっても、処理時間は同じとする。つまり、全体の処理性能は、データならびに係数パラメタの転送負荷で決まるとする。
【0059】
図10は、図8に示す結果に対し、ステージ2(S2)〜ステージ4(S4)の処理をする場合の概要を示すタイミングチャートである。以下、図3に示した手順に従って説明する。
まず、時刻T0において、処理するデータが存在するため、ST102に進み、係数パラメタ転送部155は係数パラメタS2を係数パラメタ保持部142に転送する(ST102)。続いて、時刻T1〜T4においてサブウィンドウ画像転送部154がデータD1をサブウィンドウ画像保持部141に転送する(ST103)。そして、時刻T5において、演算部143は、サブウィンドウ画像保持部141からデータD1及び係数パラメタ保持部142から係数パラメタS2を読み込み、演算処理を行う(ST104)。図9より、未処理係数パラメタが存在しているのでST107に進み、さらに未処理データが存在しているので、ST108に進む。
【0060】
次に、ST108では、次の画像データD2との距離は9画素であり、図5より、係数パラメタ転送の方が有利であるため、ST111に進む。係数パラメタ転送制御部153は係数パラメタ保持部142が係数パラメタS3を保持しているかどうかを確認する。ここでは、保持していないため、ST112に進み、時刻T6〜T7において係数パラメタ転送部155が係数パラメタ保持部142に係数パラメタS3を転送する。ここでは、ST113には該当しないので、ST104に戻る。
【0061】
時刻T8において演算部143は、サブウィンドウ画像保持部141から画像データD1及び係数パラメタ保持部142から係数パラメタS3を読み込み、演算処理を行う(ST104)。図9より、画像データD1は係数パラメタS3の処理はFAILするので、ST105からST116に進み、未処理データが存在しているので、ST117に進む。ここでは、サブウィンドウ画像保持部141はD2を保持していないので、ST118に進み、時刻T9〜T12において画像データD2を転送する。
【0062】
時刻T13において演算部143は、サブウィンドウ画像保持部141から画像データD2、係数パラメタ保持部142から係数パラメタS2を読み込み、演算処理を行う(ST104)。図9より、画像データD2は係数パラメタS2の処理はFAILするので、ST105からST116に進み、未処理データが存在しているので、ST117に進む。ここでは、サブウィンドウ画像保持部141は、D3を保持していないので、ST118に進み、時刻T14においてサブウィンドウ画像転送部154がサブウィンドウ画像保持部141に画像データD3を転送する。
【0063】
時刻T15において演算部143は、サブウィンドウ画像保持部141から画像データD3、係数パラメタ保持部142から係数パラメタS2を読み込み、演算処理を行う(ST104)。図9より、画像データD3は係数パラメタS2の処理はPASSするので、ST106に進む。そして、未処理係数パラメタが存在するので、ST107に進み、さらに未処理データが存在するので、ST108に進む。ST108では、次の画像データD4との距離は1画素であるので、図5より、画像データ転送の方が有利である。よってST109に進む。ST109において、領域画像転送制御部152はサブウィンドウ画像保持部141が画像データD4を保持しているかどうかを確認する。ここでは、保持していないため、ST110に進み、時刻T16においてサブウィンドウ画像転送部154がサブウィンドウ画像保持部141に画像データD4を転送する。以下、時刻T17〜T21まで、画像データD4〜D6の演算および画像データD5〜D6の転送を繰り返す。
【0064】
時刻T21において、画像データD6に対する係数パラメタS2の処理がPASSするので、ST106に進み、未処理係数パラメタおよび未処理データが存在するので、ST108に進む。ST108では、次のデータD7との距離は3画素であるので、図5より、係数パラメタ転送の方が有利である。よってST111に進む。ST111において、係数パラメタ転送制御部153は、係数パラメタ保持部142が係数パラメタS3を保持しているかどうかを確認する。ここでは、係数パラメタ保持部142に係数パラメタS3を保持しているため、ST113に進む。そして、ST113において、係数パラメタS3について、画像データD3〜D6が未処理であるため、ST114に進む。領域画像転送制御部152は、サブウィンドウ画像保持部141が画像データD3を保持しているかを確認し、画像データが保持されているためST104に進む。
【0065】
時刻T22において、演算部143は、サブウィンドウ画像保持部141から画像データD3、係数パラメタ保持部142から係数パラメタS3を読み込み、演算処理を行う(ST104)。図9より、データD3は係数パラメタS3の処理ではPASSするので、ST106に進む。そして、未処理係数パラメタが存在するので、ST107に進む。また、未処理データが存在するので、ST108に進む。ST108では、次のデータD4との距離は1画素であるので、図5より、画像データ転送の方が有利である。よってST109に進む。そして、ST109において、領域画像転送制御部152はサブウィンドウ画像保持部141が画像データD4を保持しているかどうかを確認する。ここでは、画像データを保持しているため、ST104に進む。以下、時刻T23〜T25まで、画像データD4〜D6に対する係数パラメタ3の処理を繰り返す。
【0066】
時刻T25において、図9より、画像データD6は係数パラメタS3の処理ではFAILするので、ST116に進む。そして、ST116において未処理データが存在するので、ST117に進み、領域画像転送制御部152はサブウィンドウ画像保持部141が画像データD7を保持しているかどうかを確認する。ここでは、画像データを保持していないため、ST118に進む。そして、時刻T26〜T28においてサブウィンドウ画像転送部154はサブウィンドウ画像保持部141に画像データD7を転送し、ST104に進む。
【0067】
時刻T29において、演算部143は、サブウィンドウ画像保持部141から画像データD7、係数パラメタ保持部142から係数パラメタS2を読み込み、演算処理を行う(ST104)。図9より、画像データD7は係数パラメタS2の処理はFAILするので、ST116に進む。未処理データが存在するので、ST117に進む。領域画像転送制御部152は、サブウィンドウ画像保持部141が画像データD8を保持しているかどうかを確認する。ここでは、画像データを保持していないため、ST118に進む。以下、時刻T30〜T35において、画像データD8〜D9の転送および演算を同様に繰り返す。
【0068】
時刻T36において、処理するデータがあるかどうかを判定する(ST101)。ここでは、画像データD3およびD4について係数パラメタS4の処理があるので、ST102に進む。時刻T36〜T38において、係数パラメタ転送部155が係数パラメタ保持部142に係数パラメタS4を転送する(ST102)。時刻T39〜T42において、サブウィンドウ画像転送部154がサブウィンドウ画像保持部141に画像データD3を転送する(ST103)。
【0069】
時刻T43において、演算部143はサブウィンドウ画像保持部141から画像データD3、係数パラメタ保持部142から係数パラメタS4を読み出し、演算処理を行う(T104)。図9より、画像データD3は係数パラメタS4の処理はPASSするので、ST106に進む。そして、画像データD3には未処理係数パラメタは存在しないので、ST106からST116に進み、係数パラメタS4に対して未処理データが存在するので、ST116からST117に進む。そして、ST117において、未処理データD4がサブウィンドウ画像保持部141に保持されているかどうかを判定する。ここでは、画像データD4は、サブウィンドウ画像保持部に保持されているため、ST104に進む。
【0070】
時刻T44において、演算部143はサブウィンドウ画像保持部141から画像データD4、係数パラメタ保持部142から係数パラメタS4を読み出し、演算処理を行う(ST104)。図9より、画像データD4は係数パラメタS4の処理はPASSするので、ST106に進む。そして、画像データD4には未処理係数パラメタは存在しないので、ST106からST116に進み、係数パラメタS4に対して未処理データが存在するので、ST116からST117に進む。また、ST117において、D5はサブウィンドウ画像保持部141に保持されていない。このため、時刻T45においてサブウィンドウ画像転送部154がサブウィンドウ画像保持部のアドレス2に画像データD5を転送する。
【0071】
時刻T46において、演算部143はサブウィンドウ画像保持部141から画像データD5、係数パラメタ保持部142から係数パラメタS4を読み出し、演算処理を行う(ST104)。図9より、画像データD5は係数パラメタS5の処理はFAILするので、ST116に進む。そして、係数パラメタS4に対して未処理データは存在しないので、ST116からST101に進む。また、ST101において、処理するデータは存在しないので、処理を終了する。
【0072】
図11は、係数パラメタを固定してデータを切換えて多段データ処理をする場合の概要を示すタイミングチャートである。また、図21は、データを固定して係数パラメタを切換えて多段データ処理をする場合の概要を示すタイミングチャートである。図11より、パタンAで処理した場合は時刻T63まで、図21より、パタンBで処理した場合は時刻T59まで処理がかかる。ところが本実施形態では、時刻T46で処理を終了することができる。入力画像や係数パラメタ、前段ステージにおける打ち切りの割合により変動は生じるが、本実施形態では従来の方法に比べてデータおよび係数パラメタの転送負荷を軽減できる。これにより、システム全体の処理を高速化することができる。
【0073】
なお、サブウィンドウ画像保持部141のメモリサイズがサブウィンドウ画像1面分の場合、サブウィンドウ画像の再ロード回数は増えるが、従来の方法に比べてシステム全体の処理を高速化できる。
【0074】
(その他の実施形態)
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア(プログラム)を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ(またはCPUやMPU等)がプログラムを読み出して実行する処理である。
【符号の説明】
【0075】
120 CPU
130 システムメモリ
140 照合処理部
150 転送制御部

【特許請求の範囲】
【請求項1】
データの連続性を判定する第1の判定手段と、
係数パラメタのサイズを判定する第2の判定手段と、
前記第1及び第2の判定手段の結果に基づいて転送負荷が軽い方のデータを転送するように制御する制御手段とを備えたことを特徴とするデータ処理装置。
【請求項2】
前記第1の判定手段は、データ間の距離に基づいてデータの連続性を判定することを特徴とする請求項1記載のデータ処理装置。
【請求項3】
データの連続性を判定する第1の判定工程と、
係数パラメタのサイズを判定する第2の判定工程と、
前記第1及び第2の判定工程における結果に基づいて転送負荷が軽い方のデータを転送するように制御する制御工程とを備えたことを特徴とするデータ処理方法。
【請求項4】
請求項3記載のデータ処理方法の各工程をコンピュータに実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate


【公開番号】特開2012−108803(P2012−108803A)
【公開日】平成24年6月7日(2012.6.7)
【国際特許分類】
【出願番号】特願2010−258240(P2010−258240)
【出願日】平成22年11月18日(2010.11.18)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】