<第1の実施形態>
以下、本発明の実施形態について、図面を参照して説明する。図1は、本第1の実施形態における演算装置の概略構成を示したブロック図である。図1に示した演算装置は、演算処理部1と、メモリ部2と、を備える。また、演算処理部1は、インテグラルイメージ演算部10と、演算制御部20と、を備えている。また、インテグラルイメージ演算部10は、2つのインテグラルイメージ生成部11−1および11−2と、矩形累積演算部12と、を備えている。
なお、図1に示した演算装置は、例えば、静止画用カメラなどの撮像装置に備えられる。この場合、図1に示した演算装置の構成要素である演算処理部1は、例えば、撮像装置に備えた信号処理装置内に備えられてもよく、メモリ部2は、例えば、撮像装置に備えたメモリ装置であってもよい。従って、図1に示した演算装置の構成要素であるメモリ部2は、演算装置に固有の構成要素でなくてもよい。
以下の説明においては、図1に示した演算装置が、撮像装置に備えられている場合を例として説明する。そして、演算装置は、メモリ部2に記憶している画像データに対して、図示しない撮像装置の制御部によって設定された所定の矩形領域を、図10に示したように、水平方向および垂直方向に1画素ずつ移動させながら、矩形領域内の全ての画素の積算値を求める場合について説明する。
メモリ部2は、例えば、DRAM(Dynamic Random Access Memory)など、データを一時記憶する記憶デバイスであり、撮像装置が取得した、画素が2次元の行列状に配列された画像データを、インテグラルイメージを生成する元画像の画像データとして記憶している。また、メモリ部2は、演算処理部1から入力されたメモリ読み出しの制御信号に応じて、記憶している画像データの各画素の値を演算処理部1に出力する。
演算処理部1は、メモリ部2から入力された画像データのインテグラルイメージを生成し、生成したインテグラルイメージに基づいて、図示しない撮像装置の制御部によって設定された所定の矩形領域内の全ての画素の積算値を求める積算処理を行い、積算処理した結果のデータを、矩形累積データとして出力する。
演算制御部20は、図示しない撮像装置の制御部によって設定された積算処理を行う矩形領域の情報に基づいて、メモリ部2に記憶している画像データの読み出しと、インテグラルイメージ演算部10による積算処理とを制御するための制御信号を、メモリ部2およびインテグラルイメージ演算部10に出力する。演算制御部20には、例えば、画像データ内における矩形領域の大きさや形に関する情報が、画像データの画素の単位で設定される。そして、演算制御部20は、画素の単位で設定された矩形領域の情報に基づいて、メモリ部2から画像データを読み出してインテグラルイメージ演算部10に入力するタイミングと、インテグラルイメージ演算部10によるインテグラルイメージの生成および累積演算のタイミングとを制御する。なお、演算制御部20におけるタイミングの制御に関しては、後述する。
インテグラルイメージ演算部10は、演算制御部20から入力された積算処理の制御信号に応じて、メモリ部2から入力された画像データのインテグラルイメージを生成する。また、インテグラルイメージ演算部10は、演算制御部20から入力された積算処理の制御信号に応じて、生成したインテグラルイメージに基づいた矩形領域の累積演算を行う。インテグラルイメージ演算部10が累積演算した結果のデータは、演算処理部1が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に出力する。
インテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2は、それぞれ、入力された画像データに基づいて、インテグラルイメージを生成し、生成したそれぞれのインテグラルイメージのデータ(以下、「インテグラルイメージデータ」という)を、矩形累積演算部12に出力する。インテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2におけるインテグラルイメージの生成タイミングは、演算制御部20から入力された制御信号によって制御される。
なお、インテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2は、それぞれ同様の構成である。以下の説明においては、インテグラルイメージ生成部11−1またはインテグラルイメージ生成部11−2を区別しない場合には、「インテグラルイメージ生成部11」という。なお、インテグラルイメージ生成部11の構成、インテグラルイメージ生成部11におけるインテグラルイメージデータの生成方法およびインテグラルイメージデータの生成タイミングに関しては、後述する。
矩形累積演算部12は、インテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2から入力された、それぞれのインテグラルイメージデータに基づいて、図示しない撮像装置の制御部によって設定された矩形領域内の画像データの累積演算を行う。矩形累積演算部12における累積演算のタイミングは、演算制御部20から入力された制御信号によって制御される。なお、矩形累積演算部12の構成、矩形累積演算部12における累積演算の方法および累積演算のタイミングに関しては、後述する。
次に、本第1の実施形態の演算装置内の演算処理部1に備えたインテグラルイメージ生成部11について説明する。図2は、本第1の実施形態の演算装置に備えたインテグラルイメージ生成部11の概略構成を示したブロック図である。図2に示したインテグラルイメージ生成部11は、水平積算処理部111と、垂直積算処理部112と、ラインメモリ部113と、を備えている。
水平積算処理部111は、演算制御部20によってインテグラルイメージ演算部10の動作が開始されると、画像データの水平方向の行毎に、メモリ部2から入力された画像データの各画素の値を、順次加算して垂直積算処理部112に出力する。すなわち、水平積算処理部111は、画像データの水平方向の画素毎に各画素の値を順次加算して出力する。
より具体的には、例えば、1行目の最初の画素(1列目の画素)の値が入力されたときには、加算する画素の値がないため、水平積算処理部111は、入力された1列目の画素の値を垂直積算処理部112に出力する。続いて、1行目の2列目の画素の値が入力されたとき、水平積算処理部111は、1列目の画素の値と、入力された2列目の画素の値とを加算した値を、垂直積算処理部112に出力する。続いて、1行目の3列目の画素の値が入力されたとき、水平積算処理部111は、前回垂直積算処理部112に出力した1列目の画素の値と2列目の画素の値とを加算した値と、入力された3列目の画素の値とを加算して垂直積算処理部112に出力する。
このように、水平積算処理部111は、画像データの水平方向の行毎に、入力された画素の値と前回垂直積算処理部112に出力した値とを順次加算し、垂直積算処理部112に出力する。そして、水平積算処理部111は、画像データにおける水平方向の1行目の全ての画素を加算した値を垂直積算処理部112に出力した後、次の行の最初の画素(2行目の1列目の画素)の値が入力されたときには、加算する2行目の画素の値がないため、入力された2行目の1列目の画素の値を垂直積算処理部112に出力する。以降、同様に、画像データの行毎に、メモリ部2から入力された画素の値を順次加算して垂直積算処理部112に出力する。
ラインメモリ部113は、垂直積算処理部112によって加算される各画素の値を、画像データの水平方向の1行分記憶することができる記憶領域をもつメモリである。ラインメモリ部113は、演算制御部20によってインテグラルイメージ演算部10の動作が開始される前に記憶している画素の値が初期化され、その後、垂直積算処理部112が出力するインテグラルイメージデータを、画像データに対応した1行分記憶する。なお、以下の説明においては、初期化された画素の値は“0”であるものとする。
垂直積算処理部112は、演算制御部20によってインテグラルイメージ演算部10の動作が開始されると、水平積算処理部111から入力された水平方向に順次加算された画素の値と、ラインメモリ部113に記憶している入力された画素に対応する画素の値とを加算する。すなわち、垂直積算処理部112は、画像データの垂直方向に各画素の値を順次加算する。そして、垂直積算処理部112は、加算した画素の値をインテグラルイメージデータとして矩形累積演算部12に出力すると共に、出力したインテグラルイメージデータを、画素毎にラインメモリ部113の対応する画素の記憶領域にそれぞれ記憶する。これにより、ラインメモリ部113には、画像データの水平方向の1行分のインテグラルイメージデータが記憶される。
より具体的には、例えば、水平積算処理部111から1行目の画素の値が順次入力されたとき、垂直積算処理部112は、入力された1行目の画素の値と、ラインメモリ部113に記憶されている値(“0”)とを順次加算し、加算した画素の値を順次インテグラルイメージデータとして矩形累積演算部12に出力する。このとき、ラインメモリ部113に記憶されている値は“0”であるため、水平積算処理部111から入力された1行目の画素の値が、インテグラルイメージデータとして出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータを画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
続いて、水平積算処理部111から2行目の画素の値が順次入力されたとき、垂直積算処理部112は、入力された画素に対応するラインメモリ部113に記憶している1行目の画素の値と、入力された2行目の画素の値とを順次加算し、加算した画素の値を順次インテグラルイメージデータとして矩形累積演算部12に出力する。すなわち、垂直積算処理部112によって、水平積算処理部111から入力された1行目の各画素の値と、水平積算処理部111から入力された2行目の各画素の値とが、画素毎に加算された値が、インテグラルイメージデータとして出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータを画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。すなわち、ラインメモリ部113に記憶している水平積算処理部111から入力された1行目の各画素の値を、出力したインテグラルイメージデータの各画素の値に書き換える。
このように、垂直積算処理部112は、画像データの垂直方向の列毎に、入力された画素の値と前回出力したインテグラルイメージデータの対応する画素の値とを順次加算し、矩形累積演算部12に出力する。以降、水平積算処理部111から画素の値が順次入力される毎に、入力された画素の値と、ラインメモリ部113に記憶しているインテグラルイメージデータの対応する画素の値とを、順次加算して矩形累積演算部12に出力する。
次に、本第1の実施形態の演算装置内の演算処理部1に備えた矩形累積演算部12について説明する。図3は、本第1の実施形態の演算装置に備えた矩形累積積算部12の概略構成を示したブロック図である。図3に示した矩形累積演算部12は、データ遅延部121およびデータ遅延部122と、累積演算部123と、を備えている。
データ遅延部121は、インテグラルイメージ生成部11−1から入力されたインテグラルイメージデータ(以下、「インテグラルイメージデータD1」という)を、演算制御部20から入力された累積演算を行う矩形領域における水平方向の画素数分だけ遅延させて、累積演算部123に出力する。また、データ遅延部122は、インテグラルイメージ生成部11−2から入力されたインテグラルイメージデータ(以下、「インテグラルイメージデータD2」という)を、演算制御部20から入力された累積演算を行う矩形領域における水平方向の画素数分だけ遅延させて、累積演算部123に出力する。以下の説明においては、データ遅延部121によって遅延されたインテグラルイメージデータD1を、「インテグラルイメージデータD1D」という。また、データ遅延部122によって遅延されたインテグラルイメージデータD2を、「インテグラルイメージデータD2D」という。
より具体的には、例えば、累積演算を行う矩形領域における水平方向の画素数が、3画素である場合、データ遅延部121およびデータ遅延部122は、それぞれ、インテグラルイメージデータD1およびインテグラルイメージデータD2を3画素分遅延させたインテグラルイメージデータD1DおよびインテグラルイメージデータD2Dを累積演算部123に出力する。
このように、インテグラルイメージデータD1およびインテグラルイメージデータD2を、データ遅延部121およびデータ遅延部122によって矩形領域における水平方向の画素数分だけ遅延させることにより、例えば、図12(b)に示した矩形領域A、矩形領域B、矩形領域C、および矩形領域D内において、原点の対角に位置するそれぞれの画素の位置に対応する画素の値が、同じ列に揃うこととなる。
累積演算部123は、データ遅延部121およびデータ遅延部122によって同じ列に揃ったインテグラルイメージデータに基づいて、演算制御部20から入力された累積演算を行う矩形領域内の全ての画素の積算値を求める。
より具体的には、累積演算部123は、インテグラルイメージデータD1、インテグラルイメージデータD1D、インテグラルイメージデータD2、およびインテグラルイメージデータD2Dを、図12(b)に示した矩形領域A、矩形領域B、矩形領域C、および矩形領域Dにおける最後の行のインテグラルイメージデータとして扱う。そして、下式(2)によって矩形領域内の全ての画素の積算値を求める。このとき、累積演算部123は、インテグラルイメージデータD1の各列の画素の値を下式(2)のaとし、インテグラルイメージデータD1Dの各列の画素の値を下式(2)のbとし、インテグラルイメージデータD2の各列の画素の値を下式(2)のcとし、インテグラルイメージデータD2Dの各列の画素の値を下式(2)のdとする。
積算値=a−b−c+d ・・・・・(2)
累積演算部123は、上式(2)に基づいた積算値の算出を、インテグラルイメージデータが入力される毎に、順次行う。これにより、矩形領域内の全ての画素の積算値が、画像データから画素の値を読み出す毎に、図示しない撮像装置の処理部に出力される。
次に、本第1の実施形態の演算装置における矩形領域の積算処理の手順について説明する。まず、図4を用いて画像データにおける所定の矩形領域内の全ての画素の積算値を求める際の基本的な手順について説明する。図4は、本第1の実施形態の演算装置における矩形領域の積算処理の手順を説明する図である。なお、演算装置は、矩形領域が水平方向および垂直方向に1画素ずつ移動する毎に、矩形領域内の全ての画素の積算値を順次出力する。以下の説明においては、図4に示した矩形領域Rの位置における積算値を求める場合について説明する。
上記に述べたように、演算装置には、図示しない撮像装置の制御部によって積算処理する矩形領域の大きさや形に関する情報が、画像データの画素の単位で設定される。この矩形領域の情報には、積算処理する矩形領域の水平方向の画素数と垂直方向の行数とを含んでいる。演算制御部20は、設定された矩形領域の水平方向の画素数と垂直方向の行数とに基づいて、メモリ部2に記憶している画像データの読み出しを制御し、読み出した画素の値をインテグラルイメージ演算部10に入力させる。そして、演算制御部20は、インテグラルイメージ演算部10のインテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2が、インテグラルイメージデータの生成を開始するタイミングをそれぞれ制御する。
より具体的には、矩形領域の情報が設定されると、図4(a)の手順1に示したように、演算制御部20は、まず、メモリ部2に記憶している画像データの1行目の1列目の画素の値から順次読み出し、インテグラルイメージ生成部11−1に入力する。また、同時に、インテグラルイメージ生成部11−1の動作を開始させる。これにより、インテグラルイメージ生成部11−1から、画像データの1行目の画素に対応したインテグラルイメージデータD1が順次出力される。
その後、演算制御部20は、インテグラルイメージ生成部11−1に入力するための画像データの読み出しが、矩形領域における垂直方向の行数分だけ終了した後、図4(a)の手順2に示したように、メモリ部2に記憶している画像データの1行目の1列目の画素の値から順次読み出し、インテグラルイメージ生成部11−2に入力する。また、同時に、インテグラルイメージ生成部11−2の動作を開始させる。これにより、インテグラルイメージ生成部11−2から、画像データの1行目の画素に対応したインテグラルイメージデータD2が順次出力される。
以降、演算制御部20は、インテグラルイメージ生成部11−1に入力する画像データの行の読み出しと、インテグラルイメージ生成部11−2に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部11−1への画像データの入力タイミングと、インテグラルイメージ生成部11−2への画像データの入力タイミングとを制御する。また、演算制御部20は、インテグラルイメージ生成部11−1によるインテグラルイメージデータD1の生成と、インテグラルイメージ生成部11−2によるインテグラルイメージデータD2の生成とが交互に行われるように、インテグラルイメージ生成部11−1の動作の開始タイミングと、インテグラルイメージ生成部11−2の動作の開始タイミングとを制御する。
また、演算制御部20は、設定された矩形領域の水平方向の画素数と垂直方向の行数とに基づいて、矩形累積演算部12が累積演算を開始するタイミングを制御する。
より具体的には、演算制御部20は、インテグラルイメージ生成部11−1に入力するために読み出す画像データの行が、矩形領域における垂直方向の行数と同じ行となったとき、すなわち、図示しない撮像装置の制御部によって設定された矩形領域における全ての画素の値が揃う行の画像データの読み出しを開始するときに、矩形累積演算部12の動作を開始させる。これにより、矩形累積演算部12によって、図4(a)の手順3に示したように、インテグラルイメージ生成部11−1から出力されたインテグラルイメージデータD1と、インテグラルイメージ生成部11−2から出力されたインテグラルイメージデータD2とに基づいて求められた矩形領域R内の全ての画素の積算値が、矩形累積データとして順次出力される。図4(b)には、上記に述べた上式(2)における画素の値a,b,c,dをもつ画素の位置と、矩形領域Rとの位置関係を模式的に示している。
なお、矩形累積演算部12が動作を開始したときに、インテグラルイメージ生成部11−2の動作が開始されていない場合においては、矩形累積演算部12は、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2の各画素の値、すなわち、画素の値cおよび画素の値dが“0”であるものとして、矩形領域R内の全ての画素の積算値を求める。これは、演算制御部20が矩形累積演算部12の制御を開始したときには、インテグラルイメージ生成部11−2の動作は開始されていないが、この状態においても矩形領域における全ての画素の値が揃っているため、矩形累積演算部12によって矩形領域R内の全ての画素の積算値を求めることができるためである。このように、インテグラルイメージ生成部11−2の動作を開始する前の行の画像データの読み出しを開始したときから矩形累積演算部12の動作が開始される。
また、矩形領域Rが画像データの1列目の画素を含んだ領域である場合には、画素の値bおよび画素の値dに対応する位置に画素が存在しない。従って、矩形領域Rに画像データの1列目の画素の位置を含んでいる場合においては、矩形累積演算部12は、画素の値bおよび画素の値dが“0”であるものとして、矩形領域R内の全ての画素の積算値を求める。
このように、演算制御部20が、インテグラルイメージ生成部11−1によって、矩形領域における下側の行のインテグラルイメージデータD1を生成させ、インテグラルイメージ生成部11−2によって、矩形領域における上側の行のインテグラルイメージデータD2を生成させるように、2つのインテグラルイメージ生成部11の画像データの入力タイミングと、動作の開始タイミングとをそれぞれ制御する。そして、演算制御部20が、矩形累積演算部12が累積演算を開始するタイミングを制御することによって、設定された矩形領域内の全ての画素の積算値を矩形累積データとして出力させる。
ここで、図5を用いて本第1の実施形態の演算装置における矩形領域の積算処理の具体的なタイミングの例について説明する。図5は、本第1の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。図5の説明においては、メモリ部2に図12(a)に示したような画像データが記憶されており、演算装置に、図示しない撮像装置の制御部によって、図12(a)に示したような、水平方向の画素数が3画素、垂直方向の行数が3行の矩形領域Rが設定されたものとする。そして、演算装置が、矩形領域が水平方向および垂直方向に1画素ずつ移動する毎に、矩形領域R内の全ての画素の積算値を、矩形累積データとして、図示しない撮像装置の処理部に順次出力する場合について説明する。
演算装置に矩形領域の情報が設定されると、最初に、演算制御部20は、期間t1において、インテグラルイメージ生成部11−1の動作を開始させ、メモリ部2に記憶している画像データの1行目の1列目の画素の値(“1”)から順次読み出して、インテグラルイメージ生成部11−1に入力する。図5においては、“1”、“2”、“3”、“4”、“5”、“6”が、それぞれの画素の値としてインテグラルイメージ生成部11−1に順次入力される。
インテグラルイメージ生成部11−1では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“1”、“3”、“6”、“10”、“15”、“21”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値とをそれぞれ加算して、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1として矩形累積演算部12に順次出力する。なお、期間t1は、画像データの1行目の期間であるため、ラインメモリ部113に記憶されている各画素の値は、初期化された画素の値の“0”である。従って、この期間t1では、水平積算処理部111から入力された水平方向に順次加算された各画素の値(“1”、“3”、“6”、“10”、“15”、“21”)が、インテグラルイメージデータD1として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD1を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
続いて、演算制御部20は、期間t2において、メモリ部2に記憶している画像データの2行目の1列目の画素の値(“7”)から順次読み出して、インテグラルイメージ生成部11−1に入力する。図5においては、“7”、“8”、“9”、“10”、“11”、“12”が、それぞれの画素の値としてインテグラルイメージ生成部11−1に順次入力される。
インテグラルイメージ生成部11−1では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“7”、“15”、“24”、“34”、“45”、“57”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値(“1”、“3”、“6”、“10”、“15”、“21”)とをそれぞれ加算して、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1として矩形累積演算部12に順次出力する。図5においては、“8”、“18”、“30”、“44”、“60”、“78”が、インテグラルイメージデータD1として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD1を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
続いて、演算制御部20は、期間t3において、メモリ部2に記憶している画像データの3行目の1列目の画素の値(“13”)から順次読み出して、インテグラルイメージ生成部11−1に入力する。図5においては、“13”、“14”、“15”、“16”、“17”、“18”が、それぞれの画素の値としてインテグラルイメージ生成部11−1に順次入力される。
インテグラルイメージ生成部11−1では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“13”、“27”、“42”、“58”、“75”、“93”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値(“8”、“18”、“30”、“44”、“60”、“78”)とをそれぞれ加算して、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1として矩形累積演算部12に順次出力する。図5においては、“21”、“45”、“72”、“102”、“135”、“171”が、インテグラルイメージデータD1として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD1を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
また、演算制御部20は、期間t3において、矩形累積演算部12の動作を開始させる。そして、矩形累積演算部12では、データ遅延部121が、インテグラルイメージ生成部11−1から順次入力されたインテグラルイメージデータD1を、矩形領域Rの水平方向の画素数である3画素分遅延させたインテグラルイメージデータD1Dを累積演算部123に順次出力する。また、矩形累積演算部12では、累積演算部123が、入力されたインテグラルイメージデータD1およびインテグラルイメージデータD1Dの各画素の値と、インテグラルイメージデータD2およびインテグラルイメージデータD2Dとする画素の値(“0”)とを、それぞれ上式(2)に代入することによって、矩形領域R内の全ての画素の積算値を順次求め、演算処理部1、すなわち、演算装置が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に順次出力する。図5においては、インテグラルイメージデータD1(“21”、“45”、“72”、“102”、“135”、“171”)をそれぞれ画素の値aとし、インテグラルイメージデータD1D(“21”、“45”、“72”)をそれぞれ画素の値bとし、インテグラルイメージデータD2(全ての画素の値が“0”)をそれぞれ画素の値cとし、インテグラルイメージデータD2D(全ての画素の値が“0”)をそれぞれ画素の値dとして、上式(2)に代入する。そして、上式(2)によって求めた積算値“72”、“81”、“90”、“99”を、矩形累積データとして順次出力する。
続いて、演算制御部20は、期間t4において、インテグラルイメージ生成部11−2の動作を開始させ、メモリ部2に記憶している画像データの1行目の1列目の画素の値(“1”)から順次読み出して、インテグラルイメージ生成部11−2に入力する。図5においては、“1”、“2”、“3”、“4”、“5”、“6”が、それぞれの画素の値としてインテグラルイメージ生成部11−2に順次入力される。
インテグラルイメージ生成部11−2では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“1”、“3”、“6”、“10”、“15”、“21”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値とをそれぞれ加算して、インテグラルイメージ生成部11−2が生成したインテグラルイメージデータD2として矩形累積演算部12に順次出力する。なお、期間t4は、インテグラルイメージ生成部11−2における画像データの1行目の期間であるため、ラインメモリ部113に記憶されている各画素の値は、“0”である。従って、この期間t4では、期間t1と同様に、水平積算処理部111から入力された水平方向に順次加算された各画素の値(“1”、“3”、“6”、“10”、“15”、“21”)が、インテグラルイメージデータD2として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD2を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
続いて、演算制御部20は、期間t5において、メモリ部2に記憶している画像データの4行目の1列目の画素の値(“19”)から順次読み出して、インテグラルイメージ生成部11−1に入力する。図5においては、“19”、“20”、“21”、“22”、“23”、“24”が、それぞれの画素の値としてインテグラルイメージ生成部11−1に順次入力される。
インテグラルイメージ生成部11−1では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“19”、“39”、“60”、“82”、“105”、“129”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値(“21”、“45”、“72”、“102”、“135”、“171”)とをそれぞれ加算して、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1として矩形累積演算部12に順次出力する。図5においては、“40”、“84”、“132”、“184”、“240”、“300”が、インテグラルイメージデータD1として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD1を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
また、矩形累積演算部12では、データ遅延部121が、インテグラルイメージ生成部11−1から順次入力されたインテグラルイメージデータD1を、矩形領域Rの水平方向の画素数である3画素分遅延させたインテグラルイメージデータD1Dを累積演算部123に順次出力する。また、データ遅延部122が、インテグラルイメージ生成部11−2から順次入力されたインテグラルイメージデータD2を、矩形領域Rの水平方向の画素数である3画素分遅延させたインテグラルイメージデータD2Dを累積演算部123に順次出力する。なお、期間t5においては、インテグラルイメージ生成部11−1からのインテグラルイメージデータD1の出力と、インテグラルイメージ生成部11−2からのインテグラルイメージデータD2の出力とを同時に処理するため、演算制御部20は、期間t4においてインテグラルイメージ生成部11−2内のラインメモリ部113に記憶しているインテグラルイメージデータD2を読み出す制御を予め開始しておく。これにより、インテグラルイメージデータD2を、インテグラルイメージデータD1と同時に矩形累積演算部12に入力することができる。
また、矩形累積演算部12では、累積演算部123が、入力されたインテグラルイメージデータD1およびインテグラルイメージデータD1Dの各画素の値と、インテグラルイメージデータD2およびインテグラルイメージデータD2Dとする画素の値とを、それぞれ上式(2)に代入することによって、矩形領域R内の全ての画素の積算値を順次求め、演算処理部1、すなわち、演算装置が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に順次出力する。図5においては、インテグラルイメージデータD1(“40”、“84”、“132”、“184”、“240”、“300”)をそれぞれ画素の値aとし、インテグラルイメージデータD1D(“40”、“84”、“132”)をそれぞれ画素の値bとし、インテグラルイメージデータD2(“1”、“3”、“6”、“10”、“15”、“21”)をそれぞれ画素の値cとし、インテグラルイメージデータD2D(“1”、“3”、“6”)をそれぞれ画素の値dとして、上式(2)にする。そして、上式(2)によって求めた積算値“126”、“135”、“144”、“153”を、矩形累積データとして順次出力する。
続いて、演算制御部20は、期間t6において、メモリ部2に記憶している画像データの2行目の1列目の画素の値(“7”)から順次読み出して、インテグラルイメージ生成部11−2に入力する。図5においては、“7”、“8”、“9”、“10”、“11”、“12”が、それぞれの画素の値としてインテグラルイメージ生成部11−2に順次入力される。
インテグラルイメージ生成部11−2では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“7”、“15”、“24”、“34”、“45”、“57”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値(“1”、“3”、“6”、“10”、“15”、“21”)とをそれぞれ加算して、インテグラルイメージ生成部11−2が生成したインテグラルイメージデータD2として矩形累積演算部12に順次出力する。図5においては、“8”、“18”、“30”、“44”、“60”、“78”が、インテグラルイメージデータD2として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD2を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
続いて、演算制御部20は、期間t7において、メモリ部2に記憶している画像データの5行目の1列目の画素の値(“25”)から順次読み出して、インテグラルイメージ生成部11−1に入力する。図5においては、“25”、“26”、“27”、“28”、“29”、“30”が、それぞれの画素の値としてインテグラルイメージ生成部11−1に順次入力される。
インテグラルイメージ生成部11−1では、水平積算処理部111が、入力された各画素の値を順次加算して垂直積算処理部112に順次出力する。図5においては、“25”、“51”、“78”、“106”、“135”、“165”が、各画素の値を順次加算した値として、垂直積算処理部112に順次出力される。そして、垂直積算処理部112は、水平積算処理部111から入力された水平方向に順次加算された各画素の値と、ラインメモリ部113に記憶している入力された画素に対応する各画素の値(“40”、“84”、“132”、“184”、“240”、“300”)とをそれぞれ加算して、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1として矩形累積演算部12に順次出力する。図5においては、“65”、“135”、“210”、“290”、“375”、“465”が、インテグラルイメージデータD1として矩形累積演算部12に順次出力される。また、垂直積算処理部112は、出力したインテグラルイメージデータD1を画素毎にラインメモリ部113の対応する画素の記憶領域に記憶する。
また、矩形累積演算部12では、データ遅延部121が、インテグラルイメージ生成部11−1から順次入力されたインテグラルイメージデータD1を、矩形領域Rの水平方向の画素数である3画素分遅延させたインテグラルイメージデータD1Dを累積演算部123に順次出力する。また、データ遅延部122が、インテグラルイメージ生成部11−2から順次入力されたインテグラルイメージデータD2を、矩形領域Rの水平方向の画素数である3画素分遅延させたインテグラルイメージデータD2Dを累積演算部123に順次出力する。なお、期間t7においても、期間t5と同様に、演算制御部20が、インテグラルイメージデータD2を、インテグラルイメージデータD1と同時に矩形累積演算部12に入力するための制御を行う。
また、矩形累積演算部12では、累積演算部123が、入力されたインテグラルイメージデータD1およびインテグラルイメージデータD1Dの各画素の値と、インテグラルイメージデータD2およびインテグラルイメージデータD2Dとする画素の値とを、それぞれ上式(2)に代入することによって、矩形領域R内の全ての画素の積算値を順次求め、演算処理部1、すなわち、演算装置が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に順次出力する。図5においては、インテグラルイメージデータD1(“65”、“135”、“210”、“290”、“375”、“465”)をそれぞれ画素の値aとし、インテグラルイメージデータD1D(“65”、“135”、“210”)をそれぞれ画素の値bとし、インテグラルイメージデータD2(“8”、“18”、“30”、“44”、“60”、“78”)をそれぞれ画素の値cとし、インテグラルイメージデータD2D(“8”、“18”、“30”)をそれぞれ画素の値dとして、上式(2)にする。そして、上式(2)によって求めた積算値“180”、“189”、“198”、“207”を、矩形累積データとして順次出力する。
上記に述べたように、本第1の実施形態の演算装置では、演算処理部1によって積算処理する矩形領域の下側の行のインテグラルイメージと上側の行のインテグラルイメージとを、2つのインテグラルイメージ生成部11によって生成することができる。これにより、生成したインテグラルイメージに基づいて、矩形領域内の全ての画素の積算値を容易に求めることができる。
<第2の実施形態>
以下、本発明の演算装置の第2の実施形態について説明する。図6は、本第2の実施形態における演算装置の概略構成を示したブロック図である。図6に示した演算装置は、演算処理部3と、メモリ部2と、を備える。また、演算処理部3は、インテグラルイメージ演算部30と、演算制御部40と、を備えている。また、インテグラルイメージ演算部30は、3つのインテグラルイメージ生成部11−1〜11−3と、2つの矩形累積演算部12−1および12−2と、を備えている。
図6に示した本第2の実施形態における演算装置は、図1に示した第1の実施形態における演算装置内の演算処理部1に代わって、演算処理部3を備えている。また、演算処理部3は、図1に示した第1の実施形態の演算処理部1内のインテグラルイメージ演算部10および演算制御部20に代わって、インテグラルイメージ演算部30および演算制御部40を備えている。また、インテグラルイメージ演算部30は、図1に示した第1の実施形態のインテグラルイメージ演算部10に対して、インテグラルイメージ生成部11−3と矩形累積演算部12−2と、が追加されている。
なお、インテグラルイメージ演算部30内の矩形累積演算部12−1は、図1に示した第1の実施形態のインテグラルイメージ演算部10内の矩形累積演算部12における符号が変更されたのみである。また、矩形累積演算部12−1および矩形累積演算部12−2の動作は、図1に示した第1の実施形態における演算装置に備えた矩形累積演算部12と同様であるため、詳細な説明は省略する。また、インテグラルイメージ生成部11−3の動作は、図1に示した第1の実施形態における演算装置に備えたインテグラルイメージ生成部11−1と11−2と同様であるため、詳細な説明は省略する。また、本第2の実施形態における演算装置におけるその他の構成要素において、図1に示した第1の実施形態における演算装置の構成要素と同様の動作を行う構成要素には、同一の符号を付与して、詳細な説明は省略する。以下の説明においては、第1の実施形態における演算装置に対して異なる動作についてのみを説明する。
演算処理部3は、図1に示した演算処理部1と同様に、メモリ部2から入力された画像データのインテグラルイメージを生成し、生成したインテグラルイメージに基づいて、図示しない撮像装置の制御部によって設定された所定の矩形領域内の全ての画素の積算値を求める積算処理を行い、積算処理した結果のデータを、矩形累積データとして出力する。ただし、演算処理部3は、図示しない撮像装置の制御部によって設定された2つの矩形領域に対するそれぞれの矩形累積データ(矩形累積データ1および矩形累積データ2)を出力する。
まず、図示しない撮像装置の制御部によって設定される2つの矩形領域について説明する。図7は、本第2の実施形態の演算装置において積算処理する画像データの矩形領域の一例を模式的に示した図である。本第2の実施形態の演算装置には、1つめの矩形領域として、図7(a)および図7(b)に示すように、第1の実施形態の演算装置において設定された矩形領域Rと同様の矩形領域R1が設定される。また、2つめの矩形領域として、図7(a)に示すように矩形領域R1と下側の行が共通である矩形領域R2、または図7(b)に示すように矩形領域R1と上側の行が共通である矩形領域R3のいずれか1つの矩形領域が設定される。
なお、図7(b)に示したような矩形領域R1および矩形領域R3の形式の矩形領域が図示しない撮像装置の制御部によって設定された場合においても、矩形領域R3の領域は、図7(a)に示した矩形領域R2と同様であるため、図7(a)に示したような矩形領域R1および矩形領域R2の形式の矩形領域が図示しない撮像装置の制御部によって設定されたものとすることができる。従って、以下の説明においては、図7(a)に示したような矩形領域R1および矩形領域R2が設定された場合について説明する。
演算制御部40は、図示しない撮像装置の制御部によって設定された積算処理を行う2つの矩形領域の情報に基づいて、メモリ部2に記憶している画像データの読み出しと、インテグラルイメージ演算部30による積算処理とを制御するための制御信号を、メモリ部2およびインテグラルイメージ演算部30に出力する。演算制御部40には、例えば、画像データ内における2つの矩形領域の大きさや形に関する情報が、画像データの画素の単位で設定される。この矩形領域の情報には、積算処理する2つの矩形領域のそれぞれに関する水平方向の画素数と垂直方向の行数とを含んでいる。そして、演算制御部40は、画素の単位で設定されたそれぞれの矩形領域の情報に基づいて、メモリ部2から画像データを読み出してインテグラルイメージ演算部30に入力するタイミングと、インテグラルイメージ演算部30によるインテグラルイメージの生成および累積演算のタイミングとを制御する。なお、演算制御部40におけるタイミングの制御に関しては、後述する。
インテグラルイメージ演算部30は、演算制御部40から入力された積算処理の制御信号に応じて、メモリ部2から入力された画像データのインテグラルイメージを生成する。また、インテグラルイメージ演算部30は、演算制御部40から入力された積算処理の制御信号に応じて、生成したインテグラルイメージに基づいた矩形領域の累積演算を行う。インテグラルイメージ演算部30が累積演算した2つの矩形領域の累積演算結果のデータは、演算処理部3が積算処理した結果である矩形累積データ1および矩形累積データ2として、図示しない撮像装置の処理部にそれぞれ出力する。
なお、インテグラルイメージ演算部30においては、矩形累積演算部12−1が、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1と、インテグラルイメージ生成部11−2が生成したインテグラルイメージデータD2とに基づいて、画像データの累積演算を行い、累積演算した結果のデータを矩形累積データ1として出力する。また、矩形累積演算部12−2が、インテグラルイメージ生成部11−1が生成したインテグラルイメージデータD1と、インテグラルイメージ生成部11−3が生成したインテグラルイメージデータ(以下、「インテグラルイメージデータD3」という)とに基づいて、画像データの累積演算を行い、累積演算した結果のデータを矩形累積データ2として出力する。なお、矩形累積演算部12−1および矩形累積演算部12−2における累積演算は、図3に示した第1の実施形態の演算装置内の演算処理部1に備えた矩形累積演算部12と同様に、上式(2)にそれぞれのインテグラルイメージデータの画素の値を代入することによって行う。
次に、本第2の実施形態の演算装置におけるそれぞれの矩形領域の積算処理の手順について説明する。図8は、本第2の実施形態の演算装置における矩形領域R1および矩形領域R2の積算処理の手順を説明する図である。なお、演算装置は、矩形領域が水平方向および垂直方向に1画素ずつ移動する毎に、それぞれの矩形領域内の全ての画素の積算値を順次出力する。以下の説明においては、図7(a)に示した矩形領域R1および矩形領域R2の位置における積算値を求める場合について説明する。なお、矩形領域R1および矩形領域R2の位置における積算値を求める際に上式(2)に代入する画素の値a,b,c,dをもつ画素の位置と、矩形領域R1または矩形領域R2との位置関係は、図4(b)に示した関係と同様であるため、詳細な説明は省略する。
本第2の実施形態の演算装置においては、矩形領域R1の累積演算を矩形累積演算部12−2が行い、矩形領域R2の累積演算を矩形累積演算部12−1が行う。2つの矩形領域R1およびR2の情報が設定されると、図8の手順1に示したように、演算制御部40は、まず、メモリ部2に記憶している画像データの1行目の1列目の画素の値から順次読み出し、インテグラルイメージ生成部11−1に入力する。また、同時に、インテグラルイメージ生成部11−1の動作を開始させる。これにより、インテグラルイメージ生成部11−1から、画像データの1行目の画素に対応したインテグラルイメージデータD1が順次出力される。
そして、演算制御部40は、インテグラルイメージ生成部11−1に入力するために読み出す画像データの行が、矩形領域R2における垂直方向の行数と同じ行となったとき、すなわち、図示しない撮像装置の制御部によって設定された矩形領域R2における全ての画素の値が揃う行の画像データの読み出しを開始するときに、矩形累積演算部12−1の動作を開始させる。これにより、矩形累積演算部12−1によって、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2の各画素の値が“0”であるものとした矩形領域R2内の全ての画素の積算値が求められ、矩形累積データ1として出力される。
その後、演算制御部40は、インテグラルイメージ生成部11−1に入力するための画像データの読み出しが、矩形領域R2における垂直方向の行数分だけ終了した後、図8の手順2に示したように、メモリ部2に記憶している画像データの1行目の1列目の画素の値から順次読み出し、インテグラルイメージ生成部11−2に入力する。また、同時に、インテグラルイメージ生成部11−2の動作を開始させる。これにより、インテグラルイメージ生成部11−2から、画像データの1行目の画素に対応したインテグラルイメージデータD2が順次出力される。
そして、演算制御部40が矩形累積演算部12−1の動作を開始させることにより、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2とに基づいた矩形領域R2内の全ての画素の積算値が、矩形累積データ1として矩形累積演算部12−1から出力される。
以降、演算制御部40は、インテグラルイメージ生成部11−1に入力する画像データの行の読み出しと、インテグラルイメージ生成部11−2に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2への画像データの入力タイミングを制御する。また、演算制御部40は、インテグラルイメージ生成部11−1によるインテグラルイメージデータD1の生成と、インテグラルイメージ生成部11−2によるインテグラルイメージデータD2の生成とが交互に行われるように、インテグラルイメージ生成部11−1およびインテグラルイメージ生成部11−2の動作の開始タイミングを制御する。
そして、演算制御部40が矩形累積演算部12−1の動作を開始させることによって、図8の手順3に示したように、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2とに基づいて求められた矩形領域R2内の全ての画素の積算値が、矩形累積データ1として矩形累積演算部12−1から順次出力される。
その後、演算制御部40は、インテグラルイメージ生成部11−1に入力するために読み出す画像データの行が、矩形領域R1における垂直方向の行数と同じ行となったとき、すなわち、図示しない撮像装置の制御部によって設定された矩形領域R1における全ての画素の値が揃う行の画像データの読み出しを開始するときに、矩形累積演算部12−2の動作を開始させる。これにより、矩形累積演算部12−2によって、インテグラルイメージ生成部11−3から出力されるインテグラルイメージデータD3の各画素の値が“0”であるものとした矩形領域R1内の全ての画素の積算値が求められ、矩形累積データ2として出力される。なお、このとき演算制御部40は、矩形累積演算部12−1の動作をすでに開始させているため、矩形累積演算部12−1から矩形領域R2に対応する矩形累積データ1も出力される。
その後、演算制御部40は、インテグラルイメージ生成部11−1に入力するために読み出す画像データの行が、矩形領域R1における垂直方向の行数と同じ行となったとき、インテグラルイメージ生成部11−2に入力するための画像データの読み出しに続いて、図8の手順4に示したように、メモリ部2に記憶している画像データの1行目の1列目の画素の値から順次読み出して、インテグラルイメージ生成部11−3に入力する。また、同時に、インテグラルイメージ生成部11−3の動作を開始させる。これにより、インテグラルイメージ生成部11−3から、画像データの1行目の画素に対応したインテグラルイメージデータD3が順次出力される。
そして、演算制御部40が矩形累積演算部12−2の動作を開始させることにより、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−3から出力されるインテグラルイメージデータD3とに基づいた矩形領域R1内の全ての画素の積算値が、矩形累積データ1として矩形累積演算部12−2から出力される。なお、このとき演算制御部40は、矩形累積演算部12−1の動作も開始させているため、矩形累積演算部12−1からは、矩形領域R2に対応する矩形累積データ2も出力される。
以降、演算制御部40は、インテグラルイメージ生成部11−1に入力する画像データの行の読み出しと、インテグラルイメージ生成部11−2に入力する画像データの行の読み出しと、インテグラルイメージ生成部11−3に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部11−1〜11−3への画像データの入力タイミングを制御する。また、演算制御部40は、インテグラルイメージ生成部11−1によるインテグラルイメージデータD1の生成と、インテグラルイメージ生成部11−2によるインテグラルイメージデータD2の生成と、インテグラルイメージ生成部11−3によるインテグラルイメージデータD3の生成とが交互に行われるように、インテグラルイメージ生成部11−1〜11−3の動作の開始タイミングとを制御する。
そして、演算制御部40が矩形累積演算部12−2の動作を開始させることによって、図8の手順5に示したように、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−3から出力されるインテグラルイメージデータD3とに基づいて求められた矩形領域R1内の全ての画素の積算値が、矩形累積データ2として矩形累積演算部12−2から順次出力される。なお、このとき演算制御部40は、矩形累積演算部12−1の動作も開始させているため、矩形累積演算部12−1からは、矩形領域R2に対応する矩形累積データ1も順次出力される。
このように、演算制御部40が、インテグラルイメージ生成部11−1によって、矩形領域R1および矩形領域R2にける下側の行のインテグラルイメージデータD1を生成させる。また、演算制御部40が、インテグラルイメージ生成部11−2によって、矩形領域R2にける上側の行のインテグラルイメージデータD2を生成させ、インテグラルイメージ生成部11−3によって、矩形領域R1にける上側の行のインテグラルイメージデータD2を生成させる。このように、演算制御部40が、3つのインテグラルイメージ生成部11の画像データの入力タイミングと、動作の開始タイミングとをそれぞれ制御する。そして、演算制御部40が、矩形累積演算部12−1および矩形累積演算部12−2が累積演算を開始するタイミングを制御することによって、設定された矩形領域R2に対応した矩形累積データ1、および矩形領域R1に対応した矩形累積データ2をそれぞれ出力させる。
ここで、図9を用いて本第2の実施形態の演算装置における矩形領域の積算処理の具体的なタイミングの例について説明する。図9は、本第2の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。図9の説明においては、図7(a)に示したような6行6列の画像データがメモリ部2に記憶されており、図示しない撮像装置の制御部によって、図7(a)に示したような、2つの矩形領域R1およびR2が設定されたものとする。なお、図9においては、演算制御部40によって読み出しが制御される画像データの行番号のみを示す。そして、演算装置が、矩形領域R1およびR2が水平方向および垂直方向に1画素ずつ移動する毎に、矩形領域R1およびR2内の全ての画素の積算値を、矩形累積データ1および矩形累積データ2として、図示しない撮像装置の処理部に順次出力する場合について説明する。
演算装置に2つの矩形領域R1およびR2の情報が設定されると、最初に、演算制御部40は、期間t1において、インテグラルイメージ生成部11−1の動作を開始させ、メモリ部2に記憶している画像データの1行目の画素の値を順次読み出して、インテグラルイメージ生成部11−1に入力する。インテグラルイメージ生成部11−1は、入力された各画素の値に基づいて生成したインテグラルイメージデータD1を、矩形累積演算部12−1および矩形累積演算部12−2に順次出力する。
続いて、演算制御部40は、期間t2において、メモリ部2に記憶している画像データの2行目の画素の値を順次読み出して、インテグラルイメージ生成部11−1に入力する。 インテグラルイメージ生成部11−1は、入力された各画素の値基づいて生成したインテグラルイメージデータD1を、矩形累積演算部12−1および矩形累積演算部12−2に順次出力する。また、演算制御部40は、期間t2において、矩形累積演算部12−1の動作を開始させる。これにより、矩形累積演算部12−1が、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2の各画素の値が“0”であるものとして累積演算を行い、矩形領域R2に対応した矩形累積データ1を、順次出力する。
続いて、演算制御部40は、期間t3において、インテグラルイメージ生成部11−2の動作を開始させ、メモリ部2に記憶している画像データの1行目の画素の値を順次読み出して、インテグラルイメージ生成部11−2に入力する。インテグラルイメージ生成部11−2は、入力された各画素の値に基づいて生成したインテグラルイメージデータD2を、矩形累積演算部12−1に順次出力する。
続いて、演算制御部40は、期間t4において、メモリ部2に記憶している画像データの3行目の画素の値を順次読み出して、インテグラルイメージ生成部11−1に入力する。 インテグラルイメージ生成部11−1は、入力された各画素の値に基づいて生成したインテグラルイメージデータD1を、矩形累積演算部12−1および矩形累積演算部12−2に順次出力する。
また、演算制御部40は、期間t4において、矩形累積演算部12−1の動作を開始させる。これにより、矩形累積演算部12−1が、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2とに基づいた累積演算を行い、矩形領域R2に対応した矩形累積データ1を、順次出力する。なお、期間t4においては、インテグラルイメージ生成部11−1からのインテグラルイメージデータD1の出力と、インテグラルイメージ生成部11−2からのインテグラルイメージデータD2の出力とを同時に処理するため、演算制御部40は、インテグラルイメージデータD2を、インテグラルイメージデータD1と同時に矩形累積演算部12に入力するための制御を行う。
また、演算制御部40は、期間t4において、矩形累積演算部12−2の動作を開始させる。これにより、矩形累積演算部12−2が、インテグラルイメージ生成部11−3から出力されるインテグラルイメージデータD3の各画素の値が“0”であるものとして累積演算を行い、矩形領域R1に対応した矩形累積データ2を、順次出力する。
続いて、演算制御部40は、期間t5において、インテグラルイメージ生成部11−2の動作を開始させ、メモリ部2に記憶している画像データの2行目の画素の値を順次読み出して、インテグラルイメージ生成部11−2に入力する。インテグラルイメージ生成部11−2は、入力された各画素の値に基づいて生成したインテグラルイメージデータD2を、矩形累積演算部12−1に順次出力する。
続いて、演算制御部40は、期間t6において、インテグラルイメージ生成部11−3の動作を開始させ、メモリ部2に記憶している画像データの1行目の画素の値を順次読み出して、インテグラルイメージ生成部11−3に入力する。インテグラルイメージ生成部11−3は、入力された各画素の値に基づいて生成したインテグラルイメージデータD3を、矩形累積演算部12−2に順次出力する。
続いて、演算制御部40は、期間t7において、メモリ部2に記憶している画像データの4行目の画素の値を順次読み出して、インテグラルイメージ生成部11−1に入力する。 インテグラルイメージ生成部11−1は、入力された各画素の値基づいて生成したインテグラルイメージデータD1を、矩形累積演算部12−1および矩形累積演算部12−2に順次出力する。
また、演算制御部40は、期間t7において、矩形累積演算部12−1の動作を開始させる。これにより、矩形累積演算部12−1が、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−2から出力されるインテグラルイメージデータD2とに基づいた累積演算を行い、矩形領域R2に対応した矩形累積データ1を、順次出力する。なお、期間t7においても、期間t4と同様に、演算制御部40が、インテグラルイメージデータD2を、インテグラルイメージデータD1と同時に矩形累積演算部12−1に入力するための制御を行う。
また、演算制御部40は、期間t7において、矩形累積演算部12−2の動作を開始させる。これにより、矩形累積演算部12−2が、インテグラルイメージ生成部11−1から出力されるインテグラルイメージデータD1と、インテグラルイメージ生成部11−3から出力されるインテグラルイメージデータD3とに基づいた累積演算を行い、矩形領域R1に対応した矩形累積データ2を、順次出力する。なお、期間t7においては、インテグラルイメージ生成部11−1からのインテグラルイメージデータD1の出力と、インテグラルイメージ生成部11−3からのインテグラルイメージデータD3の出力とを同時に処理するため、演算制御部40は、インテグラルイメージデータD3を、インテグラルイメージデータD1と同時に矩形累積演算部12に入力するための制御を行う。
以降、同様に、演算制御部40は、インテグラルイメージ生成部11−1に入力する画像データの行の読み出しと、インテグラルイメージ生成部11−2に入力する画像データの行の読み出しと、インテグラルイメージ生成部11−3に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部11−1〜11−3への画像データの入力タイミングを制御する。また、演算制御部40は、インテグラルイメージ生成部11−1によるインテグラルイメージデータD1の生成と、インテグラルイメージ生成部11−2によるインテグラルイメージデータD2の生成と、インテグラルイメージ生成部11−3によるインテグラルイメージデータD3の生成とが交互に行われるように、インテグラルイメージ生成部11−1〜11−3の動作の開始タイミングとを制御する。
そして、演算制御部40は、インテグラルイメージ生成部11−1に画像データの画素の値を読み出す期間において、矩形累積演算部12−1および矩形累積演算部12−2の動作を開始させる。これにより、矩形累積演算部12−1が、矩形領域R2に対応した矩形累積データ1を順次出力し、矩形累積演算部12−2が、矩形領域R1に対応した矩形累積データ2を順次出力する。
上記に述べたように、本第2の実施形態の演算装置では、3つのインテグラルイメージ生成部11によって積算処理する2つの矩形領域に対応したインテグラルイメージを生成することができる。これにより、生成したインテグラルイメージに基づいて、2つの矩形領域内の全ての画素の積算値を容易に求めることができる。
なお、第2の実施形態の演算装置においては、3つのインテグラルイメージ生成部11を備え、2つの矩形領域の積算演算を行う場合について説明したが、積算演算を行う矩形領域の数が1つ増える毎に、1つのインテグラルイメージ生成部11を追加することによって、さらに多くの矩形領域の積算演算を行うことができる。
上記に述べたとおり、本発明を実施するための形態によれば、積算処理を行う1つの矩形領域に対して、演算制御部20が、2つのインテグラルイメージ生成部のそれぞれに画像データの各画素の値を1回ずつ読み出して入力する、すなわち、画像データ全体を2回だけ読み出して入力するのみで、インテグラルイメージを生成することができる。そして、積算処理を行う矩形領域が増えた場合においても画像データを読み出す回数が倍数とならずに、積算処理を行う矩形領域が1つ追加される毎に画像データ全体を1回だけ追加して読み出すのみで、複数の矩形領域に対応したインテグラルイメージを生成することができる。これにより、画像データを都度読み出して積算処理を行う場合に比べて、画像データを記憶しているメモリに対するメモリアクセスの量(回数)が少なくなる。
また、本発明を実施するための形態によれば、インテグラルイメージ生成部に画像データの各画素の値が入力される毎に、積算処理に必要な画素の値が含まれるインテグラルイメージを順次生成することができる。これにより、別途インテグラルイメージを記憶しておくために莫大な記憶容量のメモリを事前に準備しておく必要がなく、メモリの回路規模を削減することができる。
また、本発明を実施するための形態によれば、2回目に画像データを読み出すタイミング、すなわち、矩形領域の上側の行のインテグラルイメージを生成するための画像データの読み出しタイミングを制御することによって、積算処理を行う矩形領域の高さ、すなわち、垂直方向の行数を容易に変更することができる。また、矩形領域の幅、すなわち、水平方向の画素数もデータ遅延部によって容易に変更することができる。これにより、予め所定の高さ分の本数のラインメモリを準備しておく場合に比べて、積算処理を行う矩形領域の高さ制限をなくすことができ、容易に積算処理を行う矩形領域の大きさを変更することができる。
なお、本実施形態においては、積算処理を行う矩形領域を、図10に示したように、水平方向および垂直方向に1画素ずつ移動させながら、矩形領域内の全ての画素の積算値を求める場合について説明したが、矩形領域の移動方法は、本発明を実施するための形態に限定されるものではない。例えば、最初に矩形領域を垂直方向に1行ずつ移動させ、画素の値の積算が画像データの1列分完了した、すなわち、矩形領域が画像データの1列目の最後の画素の位置まで移動した後に、矩形領域を水平方向に1画素分移動させ、その後、再び矩形領域を垂直方向に1行ずつ移動させる場合においても本発明を適用することができる。この場合、例えば、図2に示した水平積算処理部111が、画像データの垂直方向の列毎に、画像データの各画素の値を順次加算し、垂直積算処理部112が、垂直方向に順次加算された画素の値と、ラインメモリ部113に記憶している対応する画素の値とを加算することによって、対応することができる。なお、この場合においても、例えば、演算制御部20による画像データの読み出しの制御が異なるのみであり、本発明の各構成要素を変更する必要はない。
また、本実施形態においては、例えば、演算制御部20が、インテグラルイメージ生成部11−1に入力する画像データと、インテグラルイメージ生成部11−2に入力する画像データとを、行毎に交互に切り替える場合について説明したが、インテグラルイメージ生成部11に画像データの画素の値を入力する方法は、本発明を実施するための形態に限定されるものではない。例えば、インテグラルイメージ生成部11−1と、インテグラルイメージ生成部11−2とに入力する画像データの画素の値を、画素毎に交互に切り替えて入力することもできる。
また、本実施形態においては、図示しない撮像装置の制御部によって設定された所定の矩形領域に基づいて、演算制御部20または演算制御部40が、インテグラルイメージ生成部11に入力する画像データの読み出し、および累積演算のタイミングを制御する場合について説明したが、本発明を実施するための形態に限定されるものではない。例えば、図示しない撮像装置の制御部が、ンテグラルイメージ生成部11に入力する画像データの読み出し、および累積演算のタイミングを制御する構成とすることもできる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。