(57)【特許請求の範囲】
【請求項１】
２次元の第１の方向および第２の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第１の方向および第２の方向における基準画素の位置から、前記第２の方向に順次移動させながら、前記第１の方向に順次読み出すデータ読み出し部と、
前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第２の方向における第１の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第１の積算値として出力する第１のデータ積算部と、
前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第２の方向における第２の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第２の積算値として出力する第２のデータ積算部と、
前記第１のデータ積算部から出力された前記第１の積算値と、前記第２のデータ積算部から出力された前記第２の積算値とに基づいて、前記第１の方向における第１の画素数と、前記第２の方向における第２の画素数と、によって表される第１の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算部と、
を備え、
前記第１の矩形データ領域を前記第１の方向に順次移動させながら、前記第２の方向に順次移動させたときの、前記第１の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、
ことを特徴とする演算装置。
【請求項２】
前記第１のデータ積算部および前記第２のデータ積算部は、それぞれ、
前記第１の方向における前記基準画素の位置から、前記第１の方向において今回読み出された前記画素の位置までの前記画素の値の積算値を、第１の方向の積算値として順次出力する第１の積算部と、
前記データ読み出し部が前記画素の値を読み出す画素の位置が前記第２の方向に移動した後に、前記第１の積算部によって前回積算された前記第１の方向の積算値と、前記第１の積算部によって今回積算された前記第１の方向の積算値と、を加算した第２の方向の積算値を順次算出する第２の積算部と、
各画素の位置に対応する前記第２の方向の積算値を前回の積算値として記憶する積算値記憶部と、
を備え、
前記第２の方向の積算値を、
該第１のデータ積算部が出力する前記第１の積算値および該第２のデータ積算部が出力する前記第２の積算値として、それぞれ出力する、
ことを特徴とする請求項１に記載の演算装置。
【請求項３】
前記データ累積演算部は、
前記第１のデータ積算部が積算した前記第１の積算値を、前記第１の矩形データ領域における前記第１の画素数だけ遅延させる第１のデータ遅延部と、
前記第２のデータ積算部が積算した前記第２の積算値を、前記第１の矩形データ領域における前記第１の画素数だけ遅延させる第２のデータ遅延部と、
前記第１の積算値と、該前記第１の積算値を前記第１のデータ遅延部が遅延させた積算値と、前記第２の積算値と、該前記第２の積算値を前記第２のデータ遅延部が遅延させた積算値と、に基づいて、前記第１の矩形データ領域内に含まれる複数の前記画素の値を累積した累積値を算出する累積演算部と、
を備える、
ことを特徴とする請求項１または請求項２に記載の演算装置。
【請求項４】
前記第１の積算値は、前記矩形領域における下辺の積算値であり、前記第２の積算値は、前記矩形領域における上辺の積算値である、
ことを特徴とする請求項１から請求項３のいずれか１の項に記載の演算装置。
【請求項５】
前記データ読み出し部は、
前記基準画素の位置から前記画素の値の読み出しを開始し、該画素の値の読み出しが前記第１の方向に前記第１の画素数で示される分の読み出しが完了した後に、前記基準画素の位置から第２の方向に前記第１の位置を移動させたときの前記画素の値から再び前記第１の方向に読み出しを行うように制御して、該読み出した前記画素の値を前記第１のデータ積算部に入力し、
前記第１の位置が前記第１の矩形データ領域における前記第２の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第２のデータ積算部に入力し、
以降、前記第１のデータ積算部に入力する前記画素の値の読み出しと、前記第２のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御する、
ことを特徴とする請求項４に記載の演算装置。
【請求項６】
前記データ読み出し部は、
前記第１の位置が、前記第１のデータ積算部に入力する前記画素の値の読み出しを開始してから、前記第１の矩形データ領域における第２の画素数だけ移動し、前記第１の位置の前記画素の値を含む前記第１の方向における前記画像データ群に含まれる全ての前記画素の値の読み出しが終了した後に、前記画像データ群における前記基準画素の位置の前記画素の値から前記第２の位置において前記第２のデータ積算部に入力する前記画素の値の読み出しを開始し、
以降、前記画像データ群に含まれる前記第１の方向の全ての前記画素の値の読み出しが終了する毎に、前記第１のデータ積算部に入力する次の前記第１の位置における前記第１の方向の前記画素の値の読み出しと、前記第２のデータ積算部に入力する次の前記第２の位置における前記第１の方向の前記画素の値の読み出しとを交互に行う、
ことを特徴とする請求項５に記載の演算装置。
【請求項７】
前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第２の方向における第３の位置にある各画素とを頂点する矩形領域内に含まれる前記画素の値の総和を、第３の積算値として出力する第３のデータ積算部と、
前記第１のデータ積算部から出力された前記第１の積算値と、前記第３のデータ積算部から出力された前記第３の積算値とに基づいて、前記第１の方向における第３の画素数と、前記第２の方向における第４の画素数と、によって表される第２の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した第２の累積値を求める第２のデータ累積演算部と、
をさらに備え、
前記データ読み出し部は、
前記第３の位置が前記第２の矩形データ領域における前記第４の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第３のデータ積算部に入力し、
以降、前記第１のデータ積算部に入力する前記画素の値の読み出しと、前記第２のデータ積算部に入力する前記画素の値の読み出しと、前記第３のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御し、
前記第２のデータ累積演算部は、
前記第１のデータ積算部が積算した前記第１の積算値を、前記第２の矩形データ領域における前記第３の画素数だけ遅延させる第３のデータ遅延部と、
前記第３のデータ積算部が積算した前記第３の積算値を、前記第２の矩形データ領域における前記第４の画素数だけ遅延させる第４のデータ遅延部と、
前記第１の積算値と、該前記第１の積算値を前記第３のデータ遅延部が遅延させた積算値と、前記第３の積算値と、該前記第３の積算値を前記第４のデータ遅延部が遅延させた積算値と、に基づいて、前記第２の矩形データ領域内に含まれる複数の前記画素の値を累積した第２の累積値を算出する第２の累積演算部と、
を備え、
該演算装置は、さらに、
前記第１の矩形データ領域とともに前記第２の矩形データ領域を前記第１の方向に順次移動させながら、前記第２の方向に順次移動させたときの、前記第２の矩形データ領域内に含まれる複数の前記画素の値の前記第２の累積値を順次出力する、
ことを特徴とする請求項６に記載の演算装置。
【請求項８】
２次元の第１の方向および第２の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第１の方向および第２の方向における基準画素の位置から、前記第２の方向に順次移動させながら、前記第１の方向に順次読み出すデータ読み出しステップと、
前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第２の方向における第１の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第１の積算値として出力する第１のデータ積算ステップと、
前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第２の方向における第２の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第２の積算値として出力する第２のデータ積算ステップと、
前記第１のデータ積算ステップによって出力された前記第１の積算値と、前記第２のデータ積算ステップによって出力された前記第２の積算値とに基づいて、前記第１の方向における第１の画素数と、前記第２の方向における第２の画素数と、によって表される第１の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算ステップと、
を含み、
前記第１の矩形データ領域を前記第１の方向に順次移動させながら、前記第２の方向に順次移動させたときの、前記第１の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、
ことを特徴とする演算方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算装置および演算方法に関する。
【背景技術】
【０００２】
画素が２次元の行列状に配列された画像データに対して設定された所定の矩形領域を、水平方向および垂直方向に１画素ずつ移動させながら、矩形領域内の画素の値を積算することによって画像データにフィルタをかけるなどの画像処理が行われることがある。図１０は、画素の値を積算する矩形領域を移動しながら行う画像処理において、矩形領域が移動する様子を模式的に示した図である。図１０（ａ）は、画素の値を積算する矩形領域Ｒを水平方向に１画素ずつ移動させている様子を示している。また、図１０（ｂ）は、画素の値の積算が画像データの１行分完了した、すなわち、矩形領域Ｒが画像データの１行目の最後の画素の位置まで移動した後に、矩形領域Ｒを垂直方向に１行分移動させている様子を示している。また、図１０（ｃ）は、矩形領域Ｒが垂直方向に１行分移動した後に、再び矩形領域Ｒを水平方向に１画素ずつ移動させている様子を示している。このように、矩形領域を移動しながら行う画像処理においては、図１０（ａ）〜図１０（ｃ）に示したように、所定の矩形領域Ｒを、水平方向および垂直方向に１画素ずつ移動させ、矩形領域Ｒの位置が、図１０（ｄ）に示したように、画像データの最後の行の、最後の画素の位置まで移動したときに、矩形領域Ｒ内の画素の値の積算を終了する。
【０００３】
このような画像処理において、予め定められた矩形領域内の各画素の値を積算する方法としては、例えば、矩形領域の高さ分の本数のラインメモリを予め準備しておき、ラインメモリに記憶している画素の値に対して積算処理を行うことが考えられる。この場合、ラインメモリは、積算処理に使用しなくなったラインメモリのデータを、次に積算処理する行のデータに書き換えながら、順次矩形領域を垂直方向に移動させることとなる。しかしながら、このような構成の場合には、積算処理を行うことができる矩形領域の高さが、予め準備したラインメモリの本数の高さまでという制限が存在してしまう。そして、この矩形領域の高さの制限を少なくするためには、より多くの本数のラインメモリを準備する必要があるため、回路規模が増大してしまう。
【０００４】
また、例えば、積算する矩形領域内の各画素の値を、都度、画像データを記憶しているメモリから読み出しながら積算処理を行うことも考えられる。この方法では、矩形領域の高さの制限をなくすことができる。しかしながら、この方法では、積算処理する矩形領域内の画素の値を取得するために、都度、画像データの読み出しを行うため、画像データを記憶しているメモリに対するメモリアクセスの量（回数）が多くなり、積算処理に多くの時間を要してしまう。
【０００５】
また、積算処理の手法として、例えば、特許文献１に開示された技術のような、インテグラルイメージを用いて画像データを積算処理する技術が開示されている。インテグラルイメージは、各画素の値が、原点からの矩形領域の累積値を示している、という特徴を持っている。特許文献１では、この特徴を生かして、矩形領域の積算処理にインテグラルイメージを用いる手法を開示している。
【０００６】
ここで、インテグラルイメージと、インテグラルイメージを用いた所定の矩形領域内の積算処理について説明する。図１１は、画像データと、画像データに基づいたインテグラルイメージとの一例を模式的に示した図である。また、図１２は、インテグラルイメージを用いた積算処理の処理方法を説明する図である。
【０００７】
インテグラルイメージは、画像データの予め定めた画素の位置を原点とし、その原点と対象となる画素の位置とを対角にした（各画素を両端の位置とする）矩形領域内の全ての画素の値の総和を、対象となる画素の値としたデータである。図１１（ａ）には、６行６列の画像データを示し、図１１（ｂ）には、図１１（ａ）に示した６行６列の画像データに対するインテグラルイメージを示している。図１１（ｂ）に示したインテグラルイメージは、図１１（ａ）に示した画像データの１行１列目の画素を原点とした矩形領域内の全ての画素の値の総和を各画素の値としたインテグラルイメージである。例えば、２行２列目の画素においては、１行１列目の画素の値（＝“１”）と、１行２列目の画素の値（＝“２”）と、２行１列目の画素の値（＝“７”）と、対象となる２行２列目の画素の値（＝“８”）との総和を取った値（＝“１８”）を、２行２列目の画素の値としている。
【０００８】
このようなインテグラルイメージにおいては、積算値を求める所定の矩形領域を含む矩形領域内の画素の値と、所定の矩形領域に接する矩形領域内の画素の値とから、所定の矩形領域内の全ての画素の積算値を容易に求めることができる。より具体的には、例えば、図１２（ａ）に示した画像データにおける矩形領域Ｒ内の全ての画素の積算値を求める場合を考える。この場合、図１２（ｂ）に示したように、矩形領域Ｒを含む矩形領域Ａ内において原点の対角に位置する画素の値と、矩形領域Ｒに接する矩形領域Ｂ、矩形領域Ｃ、および矩形領域Ｄ内において原点の対角に位置するそれぞれの画素の値とから、矩形領域Ｒ内の全ての画素の積算値を、下式（１）によって求めることができる。
【０００９】
ｒ＝ａ−ｂ−ｃ＋ｄ  ・・・・・（１）
【００１０】
上式（１）において、ｒは矩形領域Ｒ内の全ての画素の積算値、ａは矩形領域Ａにおいて原点の対角に位置する画素の値、ｂは矩形領域Ｂにおいて原点の対角に位置する画素の値、ｃは矩形領域Ｃにおいて原点の対角に位置する画素の値、ｄは矩形領域Ｄにおいて原点の対角に位置する画素の値、を示す。
【００１１】
実際に図１２に示した画像データ内の画素の値と、インテグラルイメージ内の画素の値とに基づいて演算を行ってみる。図１２（ａ）の画像データにおける矩形領域Ｒの積算値は、１５＋１６＋１７＋２１＋２２＋２３＋２７＋２８＋２９＝１９８となる。また、図１２（ｂ）のインテグラルイメージ内の各画素の値から、上式（１）によって矩形領域Ｒの積算値を求めると、３７５−１３５−６０＋１８＝１９８となる。このように、インテグラルイメージを用いることによって、特定の矩形領域内の全ての画素の積算値を容易に求めることができる。
【先行技術文献】
【特許文献】
【００１２】
【特許文献１】特開２００４−１８５６１１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、画像データに対応したインテグラルイメージをメモリに展開して記憶しておくためには、メモリの記憶容量が莫大な量となる。例えば、静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの撮像装置において、動画撮影によって得られた１つの画像データに対応したインテグラルイメージを、メモリに記憶する場合を考える。このとき、動画の画像データは、１画素が８ビット（１バイト）であり、行方向に６４０画素、列方向に４８０画素であるとする。この１つの画像データに対応したインテグラルイメージを単純にメモリに記憶する場合では、全ての画素の総和を記憶するために必要な、１画素あたりのメモリの記憶容量は、１（バイト）×６４０（画素）×４８０（画素）＝３０７．２（キロバイト）となる。そして、動画の画像データの１面分のメモリの記憶容量は、３０７．２（キロバイト）×６４０（画素）×４８０（画素）＝９４．３７（ギガバイト）となる。
【００１４】
このように、画像データに対応したインテグラルイメージを単純にメモリに記憶するためには、莫大な記憶容量のメモリが必要となる。このような莫大な記憶容量をもつメモリを事前に準備しておくことは非効率的であるため、積算処理を行うために予めインテグラルイメージをメモリに展開しておくことは困難であるという問題がある。
【００１５】
本発明は、上記の課題認識に基づいてなされたものであり、インテグラルイメージを展開するためのメモリを事前に準備しておくことなく、インテグラルイメージを用いて画像データの矩形領域の積算処理を行うことができる演算装置および演算方法を提供することを目的としている。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため、本発明の演算装置は、２次元の第１の方向および第２の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第１の方向および第２の方向における基準画素の位置から、前記第２の方向に順次移動させながら、前記第１の方向に順次読み出すデータ読み出し部と、前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第２の方向における第１の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第１の積算値として出力する第１のデータ積算部と、前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第２の方向における第２の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第２の積算値として出力する第２のデータ積算部と、前記第１のデータ積算部から出力された前記第１の積算値と、前記第２のデータ積算部から出力された前記第２の積算値とに基づいて、前記第１の方向における第１の画素数と、前記第２の方向における第２の画素数と、によって表される第１の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算部と、を備え、前記第１の矩形データ領域を前記第１の方向に順次移動させながら、前記第２の方向に順次移動させたときの、前記第１の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、ことを特徴とする。
【００１７】
また、本発明の前記第１のデータ積算部および前記第２のデータ積算部は、それぞれ、前記第１の方向における前記基準画素の位置から、前記第１の方向において今回読み出された前記画素の位置までの前記画素の値の積算値を、第１の方向の積算値として順次出力する第１の積算部と、前記データ読み出し部が前記画素の値を読み出す画素の位置が前記第２の方向に移動した後に、前記第１の積算部によって前回積算された前記第１の方向の積算値と、前記第１の積算部によって今回積算された前記第１の方向の積算値と、を加算した第２の方向の積算値を順次算出する第２の積算部と、各画素の位置に対応する前記第２の方向の積算値を前回の積算値として記憶する積算値記憶部と、を備え、前記第２の方向の積算値を、該第１のデータ積算部が出力する前記第１の積算値および該第２のデータ積算部が出力する前記第２の積算値として、それぞれ出力する、ことを特徴とする。
【００１８】
また、本発明の前記データ累積演算部は、前記第１のデータ積算部が積算した前記第１の積算値を、前記第１の矩形データ領域における前記第１の画素数だけ遅延させる第１のデータ遅延部と、前記第２のデータ積算部が積算した前記第２の積算値を、前記第１の矩形データ領域における前記第１の画素数だけ遅延させる第２のデータ遅延部と、前記第１の積算値と、該前記第１の積算値を前記第１のデータ遅延部が遅延させた積算値と、前記第２の積算値と、該前記第２の積算値を前記第２のデータ遅延部が遅延させた積算値と、に基づいて、前記第１の矩形データ領域内に含まれる複数の前記画素の値を累積した累積値を算出する累積演算部と、を備える、ことを特徴とする。
【００１９】
また、本発明の前記第１の積算値は、前記矩形領域における下辺の積算値であり、前記第２の積算値は、前記矩形領域における上辺の積算値である、ことを特徴とする。
【００２０】
また、本発明の前記データ読み出し部は、前記基準画素の位置から前記画素の値の読み出しを開始し、該画素の値の読み出しが前記第１の方向に前記第１の画素数で示される分の読み出しが完了した後に、前記基準画素の位置から第２の方向に前記第１の位置を移動させたときの前記画素の値から再び前記第１の方向に読み出しを行うように制御して、該読み出した前記画素の値を前記第１のデータ積算部に入力し、前記第１の位置が前記第１の矩形データ領域における前記第２の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第２のデータ積算部に入力し、以降、前記第１のデータ積算部に入力する前記画素の値の読み出しと、前記第２のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御する、ことを特徴とする。
【００２１】
また、本発明の前記データ読み出し部は、前記第１の位置が、前記第１のデータ積算部に入力する前記画素の値の読み出しを開始してから、前記第１の矩形データ領域における第２の画素数だけ移動し、前記第１の位置の前記画素の値を含む前記第１の方向における前記画像データ群に含まれる全ての前記画素の値の読み出しが終了した後に、前記画像データ群における前記基準画素の位置の前記画素の値から前記第２の位置において前記第２のデータ積算部に入力する前記画素の値の読み出しを開始し、以降、前記画像データ群に含まれる前記第１の方向の全ての前記画素の値の読み出しが終了する毎に、前記第１のデータ積算部に入力する次の前記第１の位置における前記第１の方向の前記画素の値の読み出しと、前記第２のデータ積算部に入力する次の前記第２の位置における前記第１の方向の前記画素の値の読み出しとを交互に行う、ことを特徴とする。
【００２２】
また、本発明の演算装置は、前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第２の方向における第３の位置にある各画素とを頂点する矩形領域内に含まれる前記画素の値の総和を、第３の積算値として出力する第３のデータ積算部と、前記第１のデータ積算部から出力された前記第１の積算値と、前記第３のデータ積算部から出力された前記第３の積算値とに基づいて、前記第１の方向における第３の画素数と、前記第２の方向における第４の画素数と、によって表される第２の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した第２の累積値を求める第２のデータ累積演算部と、をさらに備え、前記データ読み出し部は、前記第３の位置が前記第２の矩形データ領域における前記第４の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第３のデータ積算部に入力し、以降、前記第１のデータ積算部に入力する前記画素の値の読み出しと、前記第２のデータ積算部に入力する前記画素の値の読み出しと、前記第３のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御し、前記第２のデータ累積演算部は、前記第１のデータ積算部が積算した前記第１の積算値を、前記第２の矩形データ領域における前記第３の画素数だけ遅延させる第３のデータ遅延部と、前記第３のデータ積算部が積算した前記第３の積算値を、前記第２の矩形データ領域における前記第４の画素数だけ遅延させる第４のデータ遅延部と、前記第１の積算値と、該前記第１の積算値を前記第３のデータ遅延部が遅延させた積算値と、前記第３の積算値と、該前記第３の積算値を前記第４のデータ遅延部が遅延させた積算値と、に基づいて、前記第２の矩形データ領域内に含まれる複数の前記画素の値を累積した第２の累積値を算出する第２の累積演算部と、を備え、該演算装置は、さらに、前記第１の矩形データ領域とともに前記第２の矩形データ領域を前記第１の方向に順次移動させながら、前記第２の方向に順次移動させたときの、前記第２の矩形データ領域内に含まれる複数の前記画素の値の前記第２の累積値を順次出力する、ことを特徴とする。
【００２３】
また、本発明の演算方法は、２次元の第１の方向および第２の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第１の方向および第２の方向における基準画素の位置から、前記第２の方向に順次移動させながら、前記第１の方向に順次読み出すデータ読み出しステップと、前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第２の方向における第１の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第１の積算値として出力する第１のデータ積算ステップと、前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第２の方向における第２の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第２の積算値として出力する第２のデータ積算ステップと、前記第１のデータ積算ステップによって出力された前記第１の積算値と、前記第２のデータ積算ステップによって出力された前記第２の積算値とに基づいて、前記第１の方向における第１の画素数と、前記第２の方向における第２の画素数と、によって表される第１の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算ステップと、を含み、前記第１の矩形データ領域を前記第１の方向に順次移動させながら、前記第２の方向に順次移動させたときの、前記第１の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、ことを特徴とする。
【発明の効果】
【００２４】
本発明によれば、インテグラルイメージを展開するためのメモリを事前に準備しておくことなく、インテグラルイメージを用いて画像データの矩形領域の積算処理を行うことができるという効果が得られる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１の実施形態における演算装置の概略構成を示したブロック図である。
【図２】本第１の実施形態の演算装置に備えたインテグラルイメージ生成部の概略構成を示したブロック図である。
【図３】本第１の実施形態の演算装置に備えた矩形累積積算部の概略構成を示したブロック図である。
【図４】本第１の実施形態の演算装置における矩形領域の積算処理の手順を説明する図である。
【図５】本第１の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。
【図６】本発明の第２の実施形態における演算装置の概略構成を示したブロック図である。
【図７】本第２の実施形態の演算装置において積算処理する画像データの矩形領域の一例を模式的に示した図である。
【図８】本第２の実施形態の演算装置における矩形領域の積算処理の手順を説明する図である。
【図９】本第２の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。
【図１０】画素の値を積算する矩形領域を移動しながら行う画像処理において、矩形領域が移動する様子を模式的に示した図である。
【図１１】画像データと、画像データに基づいたインテグラルイメージとの一例を模式的に示した図である。
【図１２】インテグラルイメージを用いた積算処理の処理方法を説明する図である。
【発明を実施するための形態】
【００２６】
＜第１の実施形態＞
以下、本発明の実施形態について、図面を参照して説明する。図１は、本第１の実施形態における演算装置の概略構成を示したブロック図である。図１に示した演算装置は、演算処理部１と、メモリ部２と、を備える。また、演算処理部１は、インテグラルイメージ演算部１０と、演算制御部２０と、を備えている。また、インテグラルイメージ演算部１０は、２つのインテグラルイメージ生成部１１−１および１１−２と、矩形累積演算部１２と、を備えている。
【００２７】
なお、図１に示した演算装置は、例えば、静止画用カメラなどの撮像装置に備えられる。この場合、図１に示した演算装置の構成要素である演算処理部１は、例えば、撮像装置に備えた信号処理装置内に備えられてもよく、メモリ部２は、例えば、撮像装置に備えたメモリ装置であってもよい。従って、図１に示した演算装置の構成要素であるメモリ部２は、演算装置に固有の構成要素でなくてもよい。
【００２８】
以下の説明においては、図１に示した演算装置が、撮像装置に備えられている場合を例として説明する。そして、演算装置は、メモリ部２に記憶している画像データに対して、図示しない撮像装置の制御部によって設定された所定の矩形領域を、図１０に示したように、水平方向および垂直方向に１画素ずつ移動させながら、矩形領域内の全ての画素の積算値を求める場合について説明する。
【００２９】
メモリ部２は、例えば、ＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）など、データを一時記憶する記憶デバイスであり、撮像装置が取得した、画素が２次元の行列状に配列された画像データを、インテグラルイメージを生成する元画像の画像データとして記憶している。また、メモリ部２は、演算処理部１から入力されたメモリ読み出しの制御信号に応じて、記憶している画像データの各画素の値を演算処理部１に出力する。
【００３０】
演算処理部１は、メモリ部２から入力された画像データのインテグラルイメージを生成し、生成したインテグラルイメージに基づいて、図示しない撮像装置の制御部によって設定された所定の矩形領域内の全ての画素の積算値を求める積算処理を行い、積算処理した結果のデータを、矩形累積データとして出力する。
【００３１】
演算制御部２０は、図示しない撮像装置の制御部によって設定された積算処理を行う矩形領域の情報に基づいて、メモリ部２に記憶している画像データの読み出しと、インテグラルイメージ演算部１０による積算処理とを制御するための制御信号を、メモリ部２およびインテグラルイメージ演算部１０に出力する。演算制御部２０には、例えば、画像データ内における矩形領域の大きさや形に関する情報が、画像データの画素の単位で設定される。そして、演算制御部２０は、画素の単位で設定された矩形領域の情報に基づいて、メモリ部２から画像データを読み出してインテグラルイメージ演算部１０に入力するタイミングと、インテグラルイメージ演算部１０によるインテグラルイメージの生成および累積演算のタイミングとを制御する。なお、演算制御部２０におけるタイミングの制御に関しては、後述する。
【００３２】
インテグラルイメージ演算部１０は、演算制御部２０から入力された積算処理の制御信号に応じて、メモリ部２から入力された画像データのインテグラルイメージを生成する。また、インテグラルイメージ演算部１０は、演算制御部２０から入力された積算処理の制御信号に応じて、生成したインテグラルイメージに基づいた矩形領域の累積演算を行う。インテグラルイメージ演算部１０が累積演算した結果のデータは、演算処理部１が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に出力する。
【００３３】
インテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２は、それぞれ、入力された画像データに基づいて、インテグラルイメージを生成し、生成したそれぞれのインテグラルイメージのデータ（以下、「インテグラルイメージデータ」という）を、矩形累積演算部１２に出力する。インテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２におけるインテグラルイメージの生成タイミングは、演算制御部２０から入力された制御信号によって制御される。
【００３４】
なお、インテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２は、それぞれ同様の構成である。以下の説明においては、インテグラルイメージ生成部１１−１またはインテグラルイメージ生成部１１−２を区別しない場合には、「インテグラルイメージ生成部１１」という。なお、インテグラルイメージ生成部１１の構成、インテグラルイメージ生成部１１におけるインテグラルイメージデータの生成方法およびインテグラルイメージデータの生成タイミングに関しては、後述する。
【００３５】
矩形累積演算部１２は、インテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２から入力された、それぞれのインテグラルイメージデータに基づいて、図示しない撮像装置の制御部によって設定された矩形領域内の画像データの累積演算を行う。矩形累積演算部１２における累積演算のタイミングは、演算制御部２０から入力された制御信号によって制御される。なお、矩形累積演算部１２の構成、矩形累積演算部１２における累積演算の方法および累積演算のタイミングに関しては、後述する。
【００３６】
次に、本第１の実施形態の演算装置内の演算処理部１に備えたインテグラルイメージ生成部１１について説明する。図２は、本第１の実施形態の演算装置に備えたインテグラルイメージ生成部１１の概略構成を示したブロック図である。図２に示したインテグラルイメージ生成部１１は、水平積算処理部１１１と、垂直積算処理部１１２と、ラインメモリ部１１３と、を備えている。
【００３７】
水平積算処理部１１１は、演算制御部２０によってインテグラルイメージ演算部１０の動作が開始されると、画像データの水平方向の行毎に、メモリ部２から入力された画像データの各画素の値を、順次加算して垂直積算処理部１１２に出力する。すなわち、水平積算処理部１１１は、画像データの水平方向の画素毎に各画素の値を順次加算して出力する。
【００３８】
より具体的には、例えば、１行目の最初の画素（１列目の画素）の値が入力されたときには、加算する画素の値がないため、水平積算処理部１１１は、入力された１列目の画素の値を垂直積算処理部１１２に出力する。続いて、１行目の２列目の画素の値が入力されたとき、水平積算処理部１１１は、１列目の画素の値と、入力された２列目の画素の値とを加算した値を、垂直積算処理部１１２に出力する。続いて、１行目の３列目の画素の値が入力されたとき、水平積算処理部１１１は、前回垂直積算処理部１１２に出力した１列目の画素の値と２列目の画素の値とを加算した値と、入力された３列目の画素の値とを加算して垂直積算処理部１１２に出力する。
【００３９】
このように、水平積算処理部１１１は、画像データの水平方向の行毎に、入力された画素の値と前回垂直積算処理部１１２に出力した値とを順次加算し、垂直積算処理部１１２に出力する。そして、水平積算処理部１１１は、画像データにおける水平方向の１行目の全ての画素を加算した値を垂直積算処理部１１２に出力した後、次の行の最初の画素（２行目の１列目の画素）の値が入力されたときには、加算する２行目の画素の値がないため、入力された２行目の１列目の画素の値を垂直積算処理部１１２に出力する。以降、同様に、画像データの行毎に、メモリ部２から入力された画素の値を順次加算して垂直積算処理部１１２に出力する。
【００４０】
ラインメモリ部１１３は、垂直積算処理部１１２によって加算される各画素の値を、画像データの水平方向の１行分記憶することができる記憶領域をもつメモリである。ラインメモリ部１１３は、演算制御部２０によってインテグラルイメージ演算部１０の動作が開始される前に記憶している画素の値が初期化され、その後、垂直積算処理部１１２が出力するインテグラルイメージデータを、画像データに対応した１行分記憶する。なお、以下の説明においては、初期化された画素の値は“０”であるものとする。
【００４１】
垂直積算処理部１１２は、演算制御部２０によってインテグラルイメージ演算部１０の動作が開始されると、水平積算処理部１１１から入力された水平方向に順次加算された画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する画素の値とを加算する。すなわち、垂直積算処理部１１２は、画像データの垂直方向に各画素の値を順次加算する。そして、垂直積算処理部１１２は、加算した画素の値をインテグラルイメージデータとして矩形累積演算部１２に出力すると共に、出力したインテグラルイメージデータを、画素毎にラインメモリ部１１３の対応する画素の記憶領域にそれぞれ記憶する。これにより、ラインメモリ部１１３には、画像データの水平方向の１行分のインテグラルイメージデータが記憶される。
【００４２】
より具体的には、例えば、水平積算処理部１１１から１行目の画素の値が順次入力されたとき、垂直積算処理部１１２は、入力された１行目の画素の値と、ラインメモリ部１１３に記憶されている値（“０”）とを順次加算し、加算した画素の値を順次インテグラルイメージデータとして矩形累積演算部１２に出力する。このとき、ラインメモリ部１１３に記憶されている値は“０”であるため、水平積算処理部１１１から入力された１行目の画素の値が、インテグラルイメージデータとして出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータを画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００４３】
続いて、水平積算処理部１１１から２行目の画素の値が順次入力されたとき、垂直積算処理部１１２は、入力された画素に対応するラインメモリ部１１３に記憶している１行目の画素の値と、入力された２行目の画素の値とを順次加算し、加算した画素の値を順次インテグラルイメージデータとして矩形累積演算部１２に出力する。すなわち、垂直積算処理部１１２によって、水平積算処理部１１１から入力された１行目の各画素の値と、水平積算処理部１１１から入力された２行目の各画素の値とが、画素毎に加算された値が、インテグラルイメージデータとして出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータを画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。すなわち、ラインメモリ部１１３に記憶している水平積算処理部１１１から入力された１行目の各画素の値を、出力したインテグラルイメージデータの各画素の値に書き換える。
【００４４】
このように、垂直積算処理部１１２は、画像データの垂直方向の列毎に、入力された画素の値と前回出力したインテグラルイメージデータの対応する画素の値とを順次加算し、矩形累積演算部１２に出力する。以降、水平積算処理部１１１から画素の値が順次入力される毎に、入力された画素の値と、ラインメモリ部１１３に記憶しているインテグラルイメージデータの対応する画素の値とを、順次加算して矩形累積演算部１２に出力する。
【００４５】
次に、本第１の実施形態の演算装置内の演算処理部１に備えた矩形累積演算部１２について説明する。図３は、本第１の実施形態の演算装置に備えた矩形累積積算部１２の概略構成を示したブロック図である。図３に示した矩形累積演算部１２は、データ遅延部１２１およびデータ遅延部１２２と、累積演算部１２３と、を備えている。
【００４６】
データ遅延部１２１は、インテグラルイメージ生成部１１−１から入力されたインテグラルイメージデータ（以下、「インテグラルイメージデータＤ１」という）を、演算制御部２０から入力された累積演算を行う矩形領域における水平方向の画素数分だけ遅延させて、累積演算部１２３に出力する。また、データ遅延部１２２は、インテグラルイメージ生成部１１−２から入力されたインテグラルイメージデータ（以下、「インテグラルイメージデータＤ２」という）を、演算制御部２０から入力された累積演算を行う矩形領域における水平方向の画素数分だけ遅延させて、累積演算部１２３に出力する。以下の説明においては、データ遅延部１２１によって遅延されたインテグラルイメージデータＤ１を、「インテグラルイメージデータＤ１Ｄ」という。また、データ遅延部１２２によって遅延されたインテグラルイメージデータＤ２を、「インテグラルイメージデータＤ２Ｄ」という。
【００４７】
より具体的には、例えば、累積演算を行う矩形領域における水平方向の画素数が、３画素である場合、データ遅延部１２１およびデータ遅延部１２２は、それぞれ、インテグラルイメージデータＤ１およびインテグラルイメージデータＤ２を３画素分遅延させたインテグラルイメージデータＤ１ＤおよびインテグラルイメージデータＤ２Ｄを累積演算部１２３に出力する。
【００４８】
このように、インテグラルイメージデータＤ１およびインテグラルイメージデータＤ２を、データ遅延部１２１およびデータ遅延部１２２によって矩形領域における水平方向の画素数分だけ遅延させることにより、例えば、図１２（ｂ）に示した矩形領域Ａ、矩形領域Ｂ、矩形領域Ｃ、および矩形領域Ｄ内において、原点の対角に位置するそれぞれの画素の位置に対応する画素の値が、同じ列に揃うこととなる。
【００４９】
累積演算部１２３は、データ遅延部１２１およびデータ遅延部１２２によって同じ列に揃ったインテグラルイメージデータに基づいて、演算制御部２０から入力された累積演算を行う矩形領域内の全ての画素の積算値を求める。
【００５０】
より具体的には、累積演算部１２３は、インテグラルイメージデータＤ１、インテグラルイメージデータＤ１Ｄ、インテグラルイメージデータＤ２、およびインテグラルイメージデータＤ２Ｄを、図１２（ｂ）に示した矩形領域Ａ、矩形領域Ｂ、矩形領域Ｃ、および矩形領域Ｄにおける最後の行のインテグラルイメージデータとして扱う。そして、下式（２）によって矩形領域内の全ての画素の積算値を求める。このとき、累積演算部１２３は、インテグラルイメージデータＤ１の各列の画素の値を下式（２）のａとし、インテグラルイメージデータＤ１Ｄの各列の画素の値を下式（２）のｂとし、インテグラルイメージデータＤ２の各列の画素の値を下式（２）のｃとし、インテグラルイメージデータＤ２Ｄの各列の画素の値を下式（２）のｄとする。
【００５１】
積算値＝ａ−ｂ−ｃ＋ｄ  ・・・・・（２）
【００５２】
累積演算部１２３は、上式（２）に基づいた積算値の算出を、インテグラルイメージデータが入力される毎に、順次行う。これにより、矩形領域内の全ての画素の積算値が、画像データから画素の値を読み出す毎に、図示しない撮像装置の処理部に出力される。
【００５３】
次に、本第１の実施形態の演算装置における矩形領域の積算処理の手順について説明する。まず、図４を用いて画像データにおける所定の矩形領域内の全ての画素の積算値を求める際の基本的な手順について説明する。図４は、本第１の実施形態の演算装置における矩形領域の積算処理の手順を説明する図である。なお、演算装置は、矩形領域が水平方向および垂直方向に１画素ずつ移動する毎に、矩形領域内の全ての画素の積算値を順次出力する。以下の説明においては、図４に示した矩形領域Ｒの位置における積算値を求める場合について説明する。
【００５４】
上記に述べたように、演算装置には、図示しない撮像装置の制御部によって積算処理する矩形領域の大きさや形に関する情報が、画像データの画素の単位で設定される。この矩形領域の情報には、積算処理する矩形領域の水平方向の画素数と垂直方向の行数とを含んでいる。演算制御部２０は、設定された矩形領域の水平方向の画素数と垂直方向の行数とに基づいて、メモリ部２に記憶している画像データの読み出しを制御し、読み出した画素の値をインテグラルイメージ演算部１０に入力させる。そして、演算制御部２０は、インテグラルイメージ演算部１０のインテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２が、インテグラルイメージデータの生成を開始するタイミングをそれぞれ制御する。
【００５５】
より具体的には、矩形領域の情報が設定されると、図４（ａ）の手順１に示したように、演算制御部２０は、まず、メモリ部２に記憶している画像データの１行目の１列目の画素の値から順次読み出し、インテグラルイメージ生成部１１−１に入力する。また、同時に、インテグラルイメージ生成部１１−１の動作を開始させる。これにより、インテグラルイメージ生成部１１−１から、画像データの１行目の画素に対応したインテグラルイメージデータＤ１が順次出力される。
【００５６】
その後、演算制御部２０は、インテグラルイメージ生成部１１−１に入力するための画像データの読み出しが、矩形領域における垂直方向の行数分だけ終了した後、図４（ａ）の手順２に示したように、メモリ部２に記憶している画像データの１行目の１列目の画素の値から順次読み出し、インテグラルイメージ生成部１１−２に入力する。また、同時に、インテグラルイメージ生成部１１−２の動作を開始させる。これにより、インテグラルイメージ生成部１１−２から、画像データの１行目の画素に対応したインテグラルイメージデータＤ２が順次出力される。
【００５７】
以降、演算制御部２０は、インテグラルイメージ生成部１１−１に入力する画像データの行の読み出しと、インテグラルイメージ生成部１１−２に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部１１−１への画像データの入力タイミングと、インテグラルイメージ生成部１１−２への画像データの入力タイミングとを制御する。また、演算制御部２０は、インテグラルイメージ生成部１１−１によるインテグラルイメージデータＤ１の生成と、インテグラルイメージ生成部１１−２によるインテグラルイメージデータＤ２の生成とが交互に行われるように、インテグラルイメージ生成部１１−１の動作の開始タイミングと、インテグラルイメージ生成部１１−２の動作の開始タイミングとを制御する。
【００５８】
また、演算制御部２０は、設定された矩形領域の水平方向の画素数と垂直方向の行数とに基づいて、矩形累積演算部１２が累積演算を開始するタイミングを制御する。
【００５９】
より具体的には、演算制御部２０は、インテグラルイメージ生成部１１−１に入力するために読み出す画像データの行が、矩形領域における垂直方向の行数と同じ行となったとき、すなわち、図示しない撮像装置の制御部によって設定された矩形領域における全ての画素の値が揃う行の画像データの読み出しを開始するときに、矩形累積演算部１２の動作を開始させる。これにより、矩形累積演算部１２によって、図４（ａ）の手順３に示したように、インテグラルイメージ生成部１１−１から出力されたインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−２から出力されたインテグラルイメージデータＤ２とに基づいて求められた矩形領域Ｒ内の全ての画素の積算値が、矩形累積データとして順次出力される。図４（ｂ）には、上記に述べた上式（２）における画素の値ａ，ｂ，ｃ，ｄをもつ画素の位置と、矩形領域Ｒとの位置関係を模式的に示している。
【００６０】
なお、矩形累積演算部１２が動作を開始したときに、インテグラルイメージ生成部１１−２の動作が開始されていない場合においては、矩形累積演算部１２は、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２の各画素の値、すなわち、画素の値ｃおよび画素の値ｄが“０”であるものとして、矩形領域Ｒ内の全ての画素の積算値を求める。これは、演算制御部２０が矩形累積演算部１２の制御を開始したときには、インテグラルイメージ生成部１１−２の動作は開始されていないが、この状態においても矩形領域における全ての画素の値が揃っているため、矩形累積演算部１２によって矩形領域Ｒ内の全ての画素の積算値を求めることができるためである。このように、インテグラルイメージ生成部１１−２の動作を開始する前の行の画像データの読み出しを開始したときから矩形累積演算部１２の動作が開始される。
【００６１】
また、矩形領域Ｒが画像データの１列目の画素を含んだ領域である場合には、画素の値ｂおよび画素の値ｄに対応する位置に画素が存在しない。従って、矩形領域Ｒに画像データの１列目の画素の位置を含んでいる場合においては、矩形累積演算部１２は、画素の値ｂおよび画素の値ｄが“０”であるものとして、矩形領域Ｒ内の全ての画素の積算値を求める。
【００６２】
このように、演算制御部２０が、インテグラルイメージ生成部１１−１によって、矩形領域における下側の行のインテグラルイメージデータＤ１を生成させ、インテグラルイメージ生成部１１−２によって、矩形領域における上側の行のインテグラルイメージデータＤ２を生成させるように、２つのインテグラルイメージ生成部１１の画像データの入力タイミングと、動作の開始タイミングとをそれぞれ制御する。そして、演算制御部２０が、矩形累積演算部１２が累積演算を開始するタイミングを制御することによって、設定された矩形領域内の全ての画素の積算値を矩形累積データとして出力させる。
【００６３】
ここで、図５を用いて本第１の実施形態の演算装置における矩形領域の積算処理の具体的なタイミングの例について説明する。図５は、本第１の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。図５の説明においては、メモリ部２に図１２（ａ）に示したような画像データが記憶されており、演算装置に、図示しない撮像装置の制御部によって、図１２（ａ）に示したような、水平方向の画素数が３画素、垂直方向の行数が３行の矩形領域Ｒが設定されたものとする。そして、演算装置が、矩形領域が水平方向および垂直方向に１画素ずつ移動する毎に、矩形領域Ｒ内の全ての画素の積算値を、矩形累積データとして、図示しない撮像装置の処理部に順次出力する場合について説明する。
【００６４】
演算装置に矩形領域の情報が設定されると、最初に、演算制御部２０は、期間ｔ１において、インテグラルイメージ生成部１１−１の動作を開始させ、メモリ部２に記憶している画像データの１行目の１列目の画素の値（“１”）から順次読み出して、インテグラルイメージ生成部１１−１に入力する。図５においては、“１”、“２”、“３”、“４”、“５”、“６”が、それぞれの画素の値としてインテグラルイメージ生成部１１−１に順次入力される。
【００６５】
インテグラルイメージ生成部１１−１では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“１”、“３”、“６”、“１０”、“１５”、“２１”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値とをそれぞれ加算して、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１として矩形累積演算部１２に順次出力する。なお、期間ｔ１は、画像データの１行目の期間であるため、ラインメモリ部１１３に記憶されている各画素の値は、初期化された画素の値の“０”である。従って、この期間ｔ１では、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値（“１”、“３”、“６”、“１０”、“１５”、“２１”）が、インテグラルイメージデータＤ１として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ１を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００６６】
続いて、演算制御部２０は、期間ｔ２において、メモリ部２に記憶している画像データの２行目の１列目の画素の値（“７”）から順次読み出して、インテグラルイメージ生成部１１−１に入力する。図５においては、“７”、“８”、“９”、“１０”、“１１”、“１２”が、それぞれの画素の値としてインテグラルイメージ生成部１１−１に順次入力される。
【００６７】
インテグラルイメージ生成部１１−１では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“７”、“１５”、“２４”、“３４”、“４５”、“５７”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値（“１”、“３”、“６”、“１０”、“１５”、“２１”）とをそれぞれ加算して、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１として矩形累積演算部１２に順次出力する。図５においては、“８”、“１８”、“３０”、“４４”、“６０”、“７８”が、インテグラルイメージデータＤ１として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ１を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００６８】
続いて、演算制御部２０は、期間ｔ３において、メモリ部２に記憶している画像データの３行目の１列目の画素の値（“１３”）から順次読み出して、インテグラルイメージ生成部１１−１に入力する。図５においては、“１３”、“１４”、“１５”、“１６”、“１７”、“１８”が、それぞれの画素の値としてインテグラルイメージ生成部１１−１に順次入力される。
【００６９】
インテグラルイメージ生成部１１−１では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“１３”、“２７”、“４２”、“５８”、“７５”、“９３”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値（“８”、“１８”、“３０”、“４４”、“６０”、“７８”）とをそれぞれ加算して、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１として矩形累積演算部１２に順次出力する。図５においては、“２１”、“４５”、“７２”、“１０２”、“１３５”、“１７１”が、インテグラルイメージデータＤ１として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ１を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００７０】
また、演算制御部２０は、期間ｔ３において、矩形累積演算部１２の動作を開始させる。そして、矩形累積演算部１２では、データ遅延部１２１が、インテグラルイメージ生成部１１−１から順次入力されたインテグラルイメージデータＤ１を、矩形領域Ｒの水平方向の画素数である３画素分遅延させたインテグラルイメージデータＤ１Ｄを累積演算部１２３に順次出力する。また、矩形累積演算部１２では、累積演算部１２３が、入力されたインテグラルイメージデータＤ１およびインテグラルイメージデータＤ１Ｄの各画素の値と、インテグラルイメージデータＤ２およびインテグラルイメージデータＤ２Ｄとする画素の値（“０”）とを、それぞれ上式（２）に代入することによって、矩形領域Ｒ内の全ての画素の積算値を順次求め、演算処理部１、すなわち、演算装置が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に順次出力する。図５においては、インテグラルイメージデータＤ１（“２１”、“４５”、“７２”、“１０２”、“１３５”、“１７１”）をそれぞれ画素の値ａとし、インテグラルイメージデータＤ１Ｄ（“２１”、“４５”、“７２”）をそれぞれ画素の値ｂとし、インテグラルイメージデータＤ２（全ての画素の値が“０”）をそれぞれ画素の値ｃとし、インテグラルイメージデータＤ２Ｄ（全ての画素の値が“０”）をそれぞれ画素の値ｄとして、上式（２）に代入する。そして、上式（２）によって求めた積算値“７２”、“８１”、“９０”、“９９”を、矩形累積データとして順次出力する。
【００７１】
続いて、演算制御部２０は、期間ｔ４において、インテグラルイメージ生成部１１−２の動作を開始させ、メモリ部２に記憶している画像データの１行目の１列目の画素の値（“１”）から順次読み出して、インテグラルイメージ生成部１１−２に入力する。図５においては、“１”、“２”、“３”、“４”、“５”、“６”が、それぞれの画素の値としてインテグラルイメージ生成部１１−２に順次入力される。
【００７２】
インテグラルイメージ生成部１１−２では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“１”、“３”、“６”、“１０”、“１５”、“２１”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値とをそれぞれ加算して、インテグラルイメージ生成部１１−２が生成したインテグラルイメージデータＤ２として矩形累積演算部１２に順次出力する。なお、期間ｔ４は、インテグラルイメージ生成部１１−２における画像データの１行目の期間であるため、ラインメモリ部１１３に記憶されている各画素の値は、“０”である。従って、この期間ｔ４では、期間ｔ１と同様に、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値（“１”、“３”、“６”、“１０”、“１５”、“２１”）が、インテグラルイメージデータＤ２として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ２を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００７３】
続いて、演算制御部２０は、期間ｔ５において、メモリ部２に記憶している画像データの４行目の１列目の画素の値（“１９”）から順次読み出して、インテグラルイメージ生成部１１−１に入力する。図５においては、“１９”、“２０”、“２１”、“２２”、“２３”、“２４”が、それぞれの画素の値としてインテグラルイメージ生成部１１−１に順次入力される。
【００７４】
インテグラルイメージ生成部１１−１では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“１９”、“３９”、“６０”、“８２”、“１０５”、“１２９”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値（“２１”、“４５”、“７２”、“１０２”、“１３５”、“１７１”）とをそれぞれ加算して、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１として矩形累積演算部１２に順次出力する。図５においては、“４０”、“８４”、“１３２”、“１８４”、“２４０”、“３００”が、インテグラルイメージデータＤ１として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ１を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００７５】
また、矩形累積演算部１２では、データ遅延部１２１が、インテグラルイメージ生成部１１−１から順次入力されたインテグラルイメージデータＤ１を、矩形領域Ｒの水平方向の画素数である３画素分遅延させたインテグラルイメージデータＤ１Ｄを累積演算部１２３に順次出力する。また、データ遅延部１２２が、インテグラルイメージ生成部１１−２から順次入力されたインテグラルイメージデータＤ２を、矩形領域Ｒの水平方向の画素数である３画素分遅延させたインテグラルイメージデータＤ２Ｄを累積演算部１２３に順次出力する。なお、期間ｔ５においては、インテグラルイメージ生成部１１−１からのインテグラルイメージデータＤ１の出力と、インテグラルイメージ生成部１１−２からのインテグラルイメージデータＤ２の出力とを同時に処理するため、演算制御部２０は、期間ｔ４においてインテグラルイメージ生成部１１−２内のラインメモリ部１１３に記憶しているインテグラルイメージデータＤ２を読み出す制御を予め開始しておく。これにより、インテグラルイメージデータＤ２を、インテグラルイメージデータＤ１と同時に矩形累積演算部１２に入力することができる。
【００７６】
また、矩形累積演算部１２では、累積演算部１２３が、入力されたインテグラルイメージデータＤ１およびインテグラルイメージデータＤ１Ｄの各画素の値と、インテグラルイメージデータＤ２およびインテグラルイメージデータＤ２Ｄとする画素の値とを、それぞれ上式（２）に代入することによって、矩形領域Ｒ内の全ての画素の積算値を順次求め、演算処理部１、すなわち、演算装置が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に順次出力する。図５においては、インテグラルイメージデータＤ１（“４０”、“８４”、“１３２”、“１８４”、“２４０”、“３００”）をそれぞれ画素の値ａとし、インテグラルイメージデータＤ１Ｄ（“４０”、“８４”、“１３２”）をそれぞれ画素の値ｂとし、インテグラルイメージデータＤ２（“１”、“３”、“６”、“１０”、“１５”、“２１”）をそれぞれ画素の値ｃとし、インテグラルイメージデータＤ２Ｄ（“１”、“３”、“６”）をそれぞれ画素の値ｄとして、上式（２）にする。そして、上式（２）によって求めた積算値“１２６”、“１３５”、“１４４”、“１５３”を、矩形累積データとして順次出力する。
【００７７】
続いて、演算制御部２０は、期間ｔ６において、メモリ部２に記憶している画像データの２行目の１列目の画素の値（“７”）から順次読み出して、インテグラルイメージ生成部１１−２に入力する。図５においては、“７”、“８”、“９”、“１０”、“１１”、“１２”が、それぞれの画素の値としてインテグラルイメージ生成部１１−２に順次入力される。
【００７８】
インテグラルイメージ生成部１１−２では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“７”、“１５”、“２４”、“３４”、“４５”、“５７”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値（“１”、“３”、“６”、“１０”、“１５”、“２１”）とをそれぞれ加算して、インテグラルイメージ生成部１１−２が生成したインテグラルイメージデータＤ２として矩形累積演算部１２に順次出力する。図５においては、“８”、“１８”、“３０”、“４４”、“６０”、“７８”が、インテグラルイメージデータＤ２として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ２を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００７９】
続いて、演算制御部２０は、期間ｔ７において、メモリ部２に記憶している画像データの５行目の１列目の画素の値（“２５”）から順次読み出して、インテグラルイメージ生成部１１−１に入力する。図５においては、“２５”、“２６”、“２７”、“２８”、“２９”、“３０”が、それぞれの画素の値としてインテグラルイメージ生成部１１−１に順次入力される。
【００８０】
インテグラルイメージ生成部１１−１では、水平積算処理部１１１が、入力された各画素の値を順次加算して垂直積算処理部１１２に順次出力する。図５においては、“２５”、“５１”、“７８”、“１０６”、“１３５”、“１６５”が、各画素の値を順次加算した値として、垂直積算処理部１１２に順次出力される。そして、垂直積算処理部１１２は、水平積算処理部１１１から入力された水平方向に順次加算された各画素の値と、ラインメモリ部１１３に記憶している入力された画素に対応する各画素の値（“４０”、“８４”、“１３２”、“１８４”、“２４０”、“３００”）とをそれぞれ加算して、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１として矩形累積演算部１２に順次出力する。図５においては、“６５”、“１３５”、“２１０”、“２９０”、“３７５”、“４６５”が、インテグラルイメージデータＤ１として矩形累積演算部１２に順次出力される。また、垂直積算処理部１１２は、出力したインテグラルイメージデータＤ１を画素毎にラインメモリ部１１３の対応する画素の記憶領域に記憶する。
【００８１】
また、矩形累積演算部１２では、データ遅延部１２１が、インテグラルイメージ生成部１１−１から順次入力されたインテグラルイメージデータＤ１を、矩形領域Ｒの水平方向の画素数である３画素分遅延させたインテグラルイメージデータＤ１Ｄを累積演算部１２３に順次出力する。また、データ遅延部１２２が、インテグラルイメージ生成部１１−２から順次入力されたインテグラルイメージデータＤ２を、矩形領域Ｒの水平方向の画素数である３画素分遅延させたインテグラルイメージデータＤ２Ｄを累積演算部１２３に順次出力する。なお、期間ｔ７においても、期間ｔ５と同様に、演算制御部２０が、インテグラルイメージデータＤ２を、インテグラルイメージデータＤ１と同時に矩形累積演算部１２に入力するための制御を行う。
【００８２】
また、矩形累積演算部１２では、累積演算部１２３が、入力されたインテグラルイメージデータＤ１およびインテグラルイメージデータＤ１Ｄの各画素の値と、インテグラルイメージデータＤ２およびインテグラルイメージデータＤ２Ｄとする画素の値とを、それぞれ上式（２）に代入することによって、矩形領域Ｒ内の全ての画素の積算値を順次求め、演算処理部１、すなわち、演算装置が積算処理した結果である矩形累積データとして、図示しない撮像装置の処理部に順次出力する。図５においては、インテグラルイメージデータＤ１（“６５”、“１３５”、“２１０”、“２９０”、“３７５”、“４６５”）をそれぞれ画素の値ａとし、インテグラルイメージデータＤ１Ｄ（“６５”、“１３５”、“２１０”）をそれぞれ画素の値ｂとし、インテグラルイメージデータＤ２（“８”、“１８”、“３０”、“４４”、“６０”、“７８”）をそれぞれ画素の値ｃとし、インテグラルイメージデータＤ２Ｄ（“８”、“１８”、“３０”）をそれぞれ画素の値ｄとして、上式（２）にする。そして、上式（２）によって求めた積算値“１８０”、“１８９”、“１９８”、“２０７”を、矩形累積データとして順次出力する。
【００８３】
上記に述べたように、本第１の実施形態の演算装置では、演算処理部１によって積算処理する矩形領域の下側の行のインテグラルイメージと上側の行のインテグラルイメージとを、２つのインテグラルイメージ生成部１１によって生成することができる。これにより、生成したインテグラルイメージに基づいて、矩形領域内の全ての画素の積算値を容易に求めることができる。
【００８４】
＜第２の実施形態＞
以下、本発明の演算装置の第２の実施形態について説明する。図６は、本第２の実施形態における演算装置の概略構成を示したブロック図である。図６に示した演算装置は、演算処理部３と、メモリ部２と、を備える。また、演算処理部３は、インテグラルイメージ演算部３０と、演算制御部４０と、を備えている。また、インテグラルイメージ演算部３０は、３つのインテグラルイメージ生成部１１−１〜１１−３と、２つの矩形累積演算部１２−１および１２−２と、を備えている。
【００８５】
図６に示した本第２の実施形態における演算装置は、図１に示した第１の実施形態における演算装置内の演算処理部１に代わって、演算処理部３を備えている。また、演算処理部３は、図１に示した第１の実施形態の演算処理部１内のインテグラルイメージ演算部１０および演算制御部２０に代わって、インテグラルイメージ演算部３０および演算制御部４０を備えている。また、インテグラルイメージ演算部３０は、図１に示した第１の実施形態のインテグラルイメージ演算部１０に対して、インテグラルイメージ生成部１１−３と矩形累積演算部１２−２と、が追加されている。
【００８６】
なお、インテグラルイメージ演算部３０内の矩形累積演算部１２−１は、図１に示した第１の実施形態のインテグラルイメージ演算部１０内の矩形累積演算部１２における符号が変更されたのみである。また、矩形累積演算部１２−１および矩形累積演算部１２−２の動作は、図１に示した第１の実施形態における演算装置に備えた矩形累積演算部１２と同様であるため、詳細な説明は省略する。また、インテグラルイメージ生成部１１−３の動作は、図１に示した第１の実施形態における演算装置に備えたインテグラルイメージ生成部１１−１と１１−２と同様であるため、詳細な説明は省略する。また、本第２の実施形態における演算装置におけるその他の構成要素において、図１に示した第１の実施形態における演算装置の構成要素と同様の動作を行う構成要素には、同一の符号を付与して、詳細な説明は省略する。以下の説明においては、第１の実施形態における演算装置に対して異なる動作についてのみを説明する。
【００８７】
演算処理部３は、図１に示した演算処理部１と同様に、メモリ部２から入力された画像データのインテグラルイメージを生成し、生成したインテグラルイメージに基づいて、図示しない撮像装置の制御部によって設定された所定の矩形領域内の全ての画素の積算値を求める積算処理を行い、積算処理した結果のデータを、矩形累積データとして出力する。ただし、演算処理部３は、図示しない撮像装置の制御部によって設定された２つの矩形領域に対するそれぞれの矩形累積データ（矩形累積データ１および矩形累積データ２）を出力する。
【００８８】
まず、図示しない撮像装置の制御部によって設定される２つの矩形領域について説明する。図７は、本第２の実施形態の演算装置において積算処理する画像データの矩形領域の一例を模式的に示した図である。本第２の実施形態の演算装置には、１つめの矩形領域として、図７（ａ）および図７（ｂ）に示すように、第１の実施形態の演算装置において設定された矩形領域Ｒと同様の矩形領域Ｒ１が設定される。また、２つめの矩形領域として、図７（ａ）に示すように矩形領域Ｒ１と下側の行が共通である矩形領域Ｒ２、または図７（ｂ）に示すように矩形領域Ｒ１と上側の行が共通である矩形領域Ｒ３のいずれか１つの矩形領域が設定される。
【００８９】
なお、図７（ｂ）に示したような矩形領域Ｒ１および矩形領域Ｒ３の形式の矩形領域が図示しない撮像装置の制御部によって設定された場合においても、矩形領域Ｒ３の領域は、図７（ａ）に示した矩形領域Ｒ２と同様であるため、図７（ａ）に示したような矩形領域Ｒ１および矩形領域Ｒ２の形式の矩形領域が図示しない撮像装置の制御部によって設定されたものとすることができる。従って、以下の説明においては、図７（ａ）に示したような矩形領域Ｒ１および矩形領域Ｒ２が設定された場合について説明する。
【００９０】
演算制御部４０は、図示しない撮像装置の制御部によって設定された積算処理を行う２つの矩形領域の情報に基づいて、メモリ部２に記憶している画像データの読み出しと、インテグラルイメージ演算部３０による積算処理とを制御するための制御信号を、メモリ部２およびインテグラルイメージ演算部３０に出力する。演算制御部４０には、例えば、画像データ内における２つの矩形領域の大きさや形に関する情報が、画像データの画素の単位で設定される。この矩形領域の情報には、積算処理する２つの矩形領域のそれぞれに関する水平方向の画素数と垂直方向の行数とを含んでいる。そして、演算制御部４０は、画素の単位で設定されたそれぞれの矩形領域の情報に基づいて、メモリ部２から画像データを読み出してインテグラルイメージ演算部３０に入力するタイミングと、インテグラルイメージ演算部３０によるインテグラルイメージの生成および累積演算のタイミングとを制御する。なお、演算制御部４０におけるタイミングの制御に関しては、後述する。
【００９１】
インテグラルイメージ演算部３０は、演算制御部４０から入力された積算処理の制御信号に応じて、メモリ部２から入力された画像データのインテグラルイメージを生成する。また、インテグラルイメージ演算部３０は、演算制御部４０から入力された積算処理の制御信号に応じて、生成したインテグラルイメージに基づいた矩形領域の累積演算を行う。インテグラルイメージ演算部３０が累積演算した２つの矩形領域の累積演算結果のデータは、演算処理部３が積算処理した結果である矩形累積データ１および矩形累積データ２として、図示しない撮像装置の処理部にそれぞれ出力する。
【００９２】
なお、インテグラルイメージ演算部３０においては、矩形累積演算部１２−１が、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−２が生成したインテグラルイメージデータＤ２とに基づいて、画像データの累積演算を行い、累積演算した結果のデータを矩形累積データ１として出力する。また、矩形累積演算部１２−２が、インテグラルイメージ生成部１１−１が生成したインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−３が生成したインテグラルイメージデータ（以下、「インテグラルイメージデータＤ３」という）とに基づいて、画像データの累積演算を行い、累積演算した結果のデータを矩形累積データ２として出力する。なお、矩形累積演算部１２−１および矩形累積演算部１２−２における累積演算は、図３に示した第１の実施形態の演算装置内の演算処理部１に備えた矩形累積演算部１２と同様に、上式（２）にそれぞれのインテグラルイメージデータの画素の値を代入することによって行う。
【００９３】
次に、本第２の実施形態の演算装置におけるそれぞれの矩形領域の積算処理の手順について説明する。図８は、本第２の実施形態の演算装置における矩形領域Ｒ１および矩形領域Ｒ２の積算処理の手順を説明する図である。なお、演算装置は、矩形領域が水平方向および垂直方向に１画素ずつ移動する毎に、それぞれの矩形領域内の全ての画素の積算値を順次出力する。以下の説明においては、図７（ａ）に示した矩形領域Ｒ１および矩形領域Ｒ２の位置における積算値を求める場合について説明する。なお、矩形領域Ｒ１および矩形領域Ｒ２の位置における積算値を求める際に上式（２）に代入する画素の値ａ，ｂ，ｃ，ｄをもつ画素の位置と、矩形領域Ｒ１または矩形領域Ｒ２との位置関係は、図４（ｂ）に示した関係と同様であるため、詳細な説明は省略する。
【００９４】
本第２の実施形態の演算装置においては、矩形領域Ｒ１の累積演算を矩形累積演算部１２−２が行い、矩形領域Ｒ２の累積演算を矩形累積演算部１２−１が行う。２つの矩形領域Ｒ１およびＲ２の情報が設定されると、図８の手順１に示したように、演算制御部４０は、まず、メモリ部２に記憶している画像データの１行目の１列目の画素の値から順次読み出し、インテグラルイメージ生成部１１−１に入力する。また、同時に、インテグラルイメージ生成部１１−１の動作を開始させる。これにより、インテグラルイメージ生成部１１−１から、画像データの１行目の画素に対応したインテグラルイメージデータＤ１が順次出力される。
【００９５】
そして、演算制御部４０は、インテグラルイメージ生成部１１−１に入力するために読み出す画像データの行が、矩形領域Ｒ２における垂直方向の行数と同じ行となったとき、すなわち、図示しない撮像装置の制御部によって設定された矩形領域Ｒ２における全ての画素の値が揃う行の画像データの読み出しを開始するときに、矩形累積演算部１２−１の動作を開始させる。これにより、矩形累積演算部１２−１によって、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２の各画素の値が“０”であるものとした矩形領域Ｒ２内の全ての画素の積算値が求められ、矩形累積データ１として出力される。
【００９６】
その後、演算制御部４０は、インテグラルイメージ生成部１１−１に入力するための画像データの読み出しが、矩形領域Ｒ２における垂直方向の行数分だけ終了した後、図８の手順２に示したように、メモリ部２に記憶している画像データの１行目の１列目の画素の値から順次読み出し、インテグラルイメージ生成部１１−２に入力する。また、同時に、インテグラルイメージ生成部１１−２の動作を開始させる。これにより、インテグラルイメージ生成部１１−２から、画像データの１行目の画素に対応したインテグラルイメージデータＤ２が順次出力される。
【００９７】
そして、演算制御部４０が矩形累積演算部１２−１の動作を開始させることにより、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２とに基づいた矩形領域Ｒ２内の全ての画素の積算値が、矩形累積データ１として矩形累積演算部１２−１から出力される。
【００９８】
以降、演算制御部４０は、インテグラルイメージ生成部１１−１に入力する画像データの行の読み出しと、インテグラルイメージ生成部１１−２に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２への画像データの入力タイミングを制御する。また、演算制御部４０は、インテグラルイメージ生成部１１−１によるインテグラルイメージデータＤ１の生成と、インテグラルイメージ生成部１１−２によるインテグラルイメージデータＤ２の生成とが交互に行われるように、インテグラルイメージ生成部１１−１およびインテグラルイメージ生成部１１−２の動作の開始タイミングを制御する。
【００９９】
そして、演算制御部４０が矩形累積演算部１２−１の動作を開始させることによって、図８の手順３に示したように、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２とに基づいて求められた矩形領域Ｒ２内の全ての画素の積算値が、矩形累積データ１として矩形累積演算部１２−１から順次出力される。
【０１００】
その後、演算制御部４０は、インテグラルイメージ生成部１１−１に入力するために読み出す画像データの行が、矩形領域Ｒ１における垂直方向の行数と同じ行となったとき、すなわち、図示しない撮像装置の制御部によって設定された矩形領域Ｒ１における全ての画素の値が揃う行の画像データの読み出しを開始するときに、矩形累積演算部１２−２の動作を開始させる。これにより、矩形累積演算部１２−２によって、インテグラルイメージ生成部１１−３から出力されるインテグラルイメージデータＤ３の各画素の値が“０”であるものとした矩形領域Ｒ１内の全ての画素の積算値が求められ、矩形累積データ２として出力される。なお、このとき演算制御部４０は、矩形累積演算部１２−１の動作をすでに開始させているため、矩形累積演算部１２−１から矩形領域Ｒ２に対応する矩形累積データ１も出力される。
【０１０１】
その後、演算制御部４０は、インテグラルイメージ生成部１１−１に入力するために読み出す画像データの行が、矩形領域Ｒ１における垂直方向の行数と同じ行となったとき、インテグラルイメージ生成部１１−２に入力するための画像データの読み出しに続いて、図８の手順４に示したように、メモリ部２に記憶している画像データの１行目の１列目の画素の値から順次読み出して、インテグラルイメージ生成部１１−３に入力する。また、同時に、インテグラルイメージ生成部１１−３の動作を開始させる。これにより、インテグラルイメージ生成部１１−３から、画像データの１行目の画素に対応したインテグラルイメージデータＤ３が順次出力される。
【０１０２】
そして、演算制御部４０が矩形累積演算部１２−２の動作を開始させることにより、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−３から出力されるインテグラルイメージデータＤ３とに基づいた矩形領域Ｒ１内の全ての画素の積算値が、矩形累積データ１として矩形累積演算部１２−２から出力される。なお、このとき演算制御部４０は、矩形累積演算部１２−１の動作も開始させているため、矩形累積演算部１２−１からは、矩形領域Ｒ２に対応する矩形累積データ２も出力される。
【０１０３】
以降、演算制御部４０は、インテグラルイメージ生成部１１−１に入力する画像データの行の読み出しと、インテグラルイメージ生成部１１−２に入力する画像データの行の読み出しと、インテグラルイメージ生成部１１−３に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部１１−１〜１１−３への画像データの入力タイミングを制御する。また、演算制御部４０は、インテグラルイメージ生成部１１−１によるインテグラルイメージデータＤ１の生成と、インテグラルイメージ生成部１１−２によるインテグラルイメージデータＤ２の生成と、インテグラルイメージ生成部１１−３によるインテグラルイメージデータＤ３の生成とが交互に行われるように、インテグラルイメージ生成部１１−１〜１１−３の動作の開始タイミングとを制御する。
【０１０４】
そして、演算制御部４０が矩形累積演算部１２−２の動作を開始させることによって、図８の手順５に示したように、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−３から出力されるインテグラルイメージデータＤ３とに基づいて求められた矩形領域Ｒ１内の全ての画素の積算値が、矩形累積データ２として矩形累積演算部１２−２から順次出力される。なお、このとき演算制御部４０は、矩形累積演算部１２−１の動作も開始させているため、矩形累積演算部１２−１からは、矩形領域Ｒ２に対応する矩形累積データ１も順次出力される。
【０１０５】
このように、演算制御部４０が、インテグラルイメージ生成部１１−１によって、矩形領域Ｒ１および矩形領域Ｒ２にける下側の行のインテグラルイメージデータＤ１を生成させる。また、演算制御部４０が、インテグラルイメージ生成部１１−２によって、矩形領域Ｒ２にける上側の行のインテグラルイメージデータＤ２を生成させ、インテグラルイメージ生成部１１−３によって、矩形領域Ｒ１にける上側の行のインテグラルイメージデータＤ２を生成させる。このように、演算制御部４０が、３つのインテグラルイメージ生成部１１の画像データの入力タイミングと、動作の開始タイミングとをそれぞれ制御する。そして、演算制御部４０が、矩形累積演算部１２−１および矩形累積演算部１２−２が累積演算を開始するタイミングを制御することによって、設定された矩形領域Ｒ２に対応した矩形累積データ１、および矩形領域Ｒ１に対応した矩形累積データ２をそれぞれ出力させる。
【０１０６】
ここで、図９を用いて本第２の実施形態の演算装置における矩形領域の積算処理の具体的なタイミングの例について説明する。図９は、本第２の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。図９の説明においては、図７（ａ）に示したような６行６列の画像データがメモリ部２に記憶されており、図示しない撮像装置の制御部によって、図７（ａ）に示したような、２つの矩形領域Ｒ１およびＲ２が設定されたものとする。なお、図９においては、演算制御部４０によって読み出しが制御される画像データの行番号のみを示す。そして、演算装置が、矩形領域Ｒ１およびＲ２が水平方向および垂直方向に１画素ずつ移動する毎に、矩形領域Ｒ１およびＲ２内の全ての画素の積算値を、矩形累積データ１および矩形累積データ２として、図示しない撮像装置の処理部に順次出力する場合について説明する。
【０１０７】
演算装置に２つの矩形領域Ｒ１およびＲ２の情報が設定されると、最初に、演算制御部４０は、期間ｔ１において、インテグラルイメージ生成部１１−１の動作を開始させ、メモリ部２に記憶している画像データの１行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−１に入力する。インテグラルイメージ生成部１１−１は、入力された各画素の値に基づいて生成したインテグラルイメージデータＤ１を、矩形累積演算部１２−１および矩形累積演算部１２−２に順次出力する。
【０１０８】
続いて、演算制御部４０は、期間ｔ２において、メモリ部２に記憶している画像データの２行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−１に入力する。  インテグラルイメージ生成部１１−１は、入力された各画素の値基づいて生成したインテグラルイメージデータＤ１を、矩形累積演算部１２−１および矩形累積演算部１２−２に順次出力する。また、演算制御部４０は、期間ｔ２において、矩形累積演算部１２−１の動作を開始させる。これにより、矩形累積演算部１２−１が、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２の各画素の値が“０”であるものとして累積演算を行い、矩形領域Ｒ２に対応した矩形累積データ１を、順次出力する。
【０１０９】
続いて、演算制御部４０は、期間ｔ３において、インテグラルイメージ生成部１１−２の動作を開始させ、メモリ部２に記憶している画像データの１行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−２に入力する。インテグラルイメージ生成部１１−２は、入力された各画素の値に基づいて生成したインテグラルイメージデータＤ２を、矩形累積演算部１２−１に順次出力する。
【０１１０】
続いて、演算制御部４０は、期間ｔ４において、メモリ部２に記憶している画像データの３行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−１に入力する。  インテグラルイメージ生成部１１−１は、入力された各画素の値に基づいて生成したインテグラルイメージデータＤ１を、矩形累積演算部１２−１および矩形累積演算部１２−２に順次出力する。
【０１１１】
また、演算制御部４０は、期間ｔ４において、矩形累積演算部１２−１の動作を開始させる。これにより、矩形累積演算部１２−１が、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２とに基づいた累積演算を行い、矩形領域Ｒ２に対応した矩形累積データ１を、順次出力する。なお、期間ｔ４においては、インテグラルイメージ生成部１１−１からのインテグラルイメージデータＤ１の出力と、インテグラルイメージ生成部１１−２からのインテグラルイメージデータＤ２の出力とを同時に処理するため、演算制御部４０は、インテグラルイメージデータＤ２を、インテグラルイメージデータＤ１と同時に矩形累積演算部１２に入力するための制御を行う。
【０１１２】
また、演算制御部４０は、期間ｔ４において、矩形累積演算部１２−２の動作を開始させる。これにより、矩形累積演算部１２−２が、インテグラルイメージ生成部１１−３から出力されるインテグラルイメージデータＤ３の各画素の値が“０”であるものとして累積演算を行い、矩形領域Ｒ１に対応した矩形累積データ２を、順次出力する。
【０１１３】
続いて、演算制御部４０は、期間ｔ５において、インテグラルイメージ生成部１１−２の動作を開始させ、メモリ部２に記憶している画像データの２行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−２に入力する。インテグラルイメージ生成部１１−２は、入力された各画素の値に基づいて生成したインテグラルイメージデータＤ２を、矩形累積演算部１２−１に順次出力する。
【０１１４】
続いて、演算制御部４０は、期間ｔ６において、インテグラルイメージ生成部１１−３の動作を開始させ、メモリ部２に記憶している画像データの１行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−３に入力する。インテグラルイメージ生成部１１−３は、入力された各画素の値に基づいて生成したインテグラルイメージデータＤ３を、矩形累積演算部１２−２に順次出力する。
【０１１５】
続いて、演算制御部４０は、期間ｔ７において、メモリ部２に記憶している画像データの４行目の画素の値を順次読み出して、インテグラルイメージ生成部１１−１に入力する。  インテグラルイメージ生成部１１−１は、入力された各画素の値基づいて生成したインテグラルイメージデータＤ１を、矩形累積演算部１２−１および矩形累積演算部１２−２に順次出力する。
【０１１６】
また、演算制御部４０は、期間ｔ７において、矩形累積演算部１２−１の動作を開始させる。これにより、矩形累積演算部１２−１が、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−２から出力されるインテグラルイメージデータＤ２とに基づいた累積演算を行い、矩形領域Ｒ２に対応した矩形累積データ１を、順次出力する。なお、期間ｔ７においても、期間ｔ４と同様に、演算制御部４０が、インテグラルイメージデータＤ２を、インテグラルイメージデータＤ１と同時に矩形累積演算部１２−１に入力するための制御を行う。
【０１１７】
また、演算制御部４０は、期間ｔ７において、矩形累積演算部１２−２の動作を開始させる。これにより、矩形累積演算部１２−２が、インテグラルイメージ生成部１１−１から出力されるインテグラルイメージデータＤ１と、インテグラルイメージ生成部１１−３から出力されるインテグラルイメージデータＤ３とに基づいた累積演算を行い、矩形領域Ｒ１に対応した矩形累積データ２を、順次出力する。なお、期間ｔ７においては、インテグラルイメージ生成部１１−１からのインテグラルイメージデータＤ１の出力と、インテグラルイメージ生成部１１−３からのインテグラルイメージデータＤ３の出力とを同時に処理するため、演算制御部４０は、インテグラルイメージデータＤ３を、インテグラルイメージデータＤ１と同時に矩形累積演算部１２に入力するための制御を行う。
【０１１８】
以降、同様に、演算制御部４０は、インテグラルイメージ生成部１１−１に入力する画像データの行の読み出しと、インテグラルイメージ生成部１１−２に入力する画像データの行の読み出しと、インテグラルイメージ生成部１１−３に入力する画像データの行の読み出しとを交互に行うように、インテグラルイメージ生成部１１−１〜１１−３への画像データの入力タイミングを制御する。また、演算制御部４０は、インテグラルイメージ生成部１１−１によるインテグラルイメージデータＤ１の生成と、インテグラルイメージ生成部１１−２によるインテグラルイメージデータＤ２の生成と、インテグラルイメージ生成部１１−３によるインテグラルイメージデータＤ３の生成とが交互に行われるように、インテグラルイメージ生成部１１−１〜１１−３の動作の開始タイミングとを制御する。
【０１１９】
そして、演算制御部４０は、インテグラルイメージ生成部１１−１に画像データの画素の値を読み出す期間において、矩形累積演算部１２−１および矩形累積演算部１２−２の動作を開始させる。これにより、矩形累積演算部１２−１が、矩形領域Ｒ２に対応した矩形累積データ１を順次出力し、矩形累積演算部１２−２が、矩形領域Ｒ１に対応した矩形累積データ２を順次出力する。
【０１２０】
上記に述べたように、本第２の実施形態の演算装置では、３つのインテグラルイメージ生成部１１によって積算処理する２つの矩形領域に対応したインテグラルイメージを生成することができる。これにより、生成したインテグラルイメージに基づいて、２つの矩形領域内の全ての画素の積算値を容易に求めることができる。
【０１２１】
なお、第２の実施形態の演算装置においては、３つのインテグラルイメージ生成部１１を備え、２つの矩形領域の積算演算を行う場合について説明したが、積算演算を行う矩形領域の数が１つ増える毎に、１つのインテグラルイメージ生成部１１を追加することによって、さらに多くの矩形領域の積算演算を行うことができる。
【０１２２】
上記に述べたとおり、本発明を実施するための形態によれば、積算処理を行う１つの矩形領域に対して、演算制御部２０が、２つのインテグラルイメージ生成部のそれぞれに画像データの各画素の値を１回ずつ読み出して入力する、すなわち、画像データ全体を２回だけ読み出して入力するのみで、インテグラルイメージを生成することができる。そして、積算処理を行う矩形領域が増えた場合においても画像データを読み出す回数が倍数とならずに、積算処理を行う矩形領域が１つ追加される毎に画像データ全体を１回だけ追加して読み出すのみで、複数の矩形領域に対応したインテグラルイメージを生成することができる。これにより、画像データを都度読み出して積算処理を行う場合に比べて、画像データを記憶しているメモリに対するメモリアクセスの量（回数）が少なくなる。
【０１２３】
また、本発明を実施するための形態によれば、インテグラルイメージ生成部に画像データの各画素の値が入力される毎に、積算処理に必要な画素の値が含まれるインテグラルイメージを順次生成することができる。これにより、別途インテグラルイメージを記憶しておくために莫大な記憶容量のメモリを事前に準備しておく必要がなく、メモリの回路規模を削減することができる。
【０１２４】
また、本発明を実施するための形態によれば、２回目に画像データを読み出すタイミング、すなわち、矩形領域の上側の行のインテグラルイメージを生成するための画像データの読み出しタイミングを制御することによって、積算処理を行う矩形領域の高さ、すなわち、垂直方向の行数を容易に変更することができる。また、矩形領域の幅、すなわち、水平方向の画素数もデータ遅延部によって容易に変更することができる。これにより、予め所定の高さ分の本数のラインメモリを準備しておく場合に比べて、積算処理を行う矩形領域の高さ制限をなくすことができ、容易に積算処理を行う矩形領域の大きさを変更することができる。
【０１２５】
なお、本実施形態においては、積算処理を行う矩形領域を、図１０に示したように、水平方向および垂直方向に１画素ずつ移動させながら、矩形領域内の全ての画素の積算値を求める場合について説明したが、矩形領域の移動方法は、本発明を実施するための形態に限定されるものではない。例えば、最初に矩形領域を垂直方向に１行ずつ移動させ、画素の値の積算が画像データの１列分完了した、すなわち、矩形領域が画像データの１列目の最後の画素の位置まで移動した後に、矩形領域を水平方向に１画素分移動させ、その後、再び矩形領域を垂直方向に１行ずつ移動させる場合においても本発明を適用することができる。この場合、例えば、図２に示した水平積算処理部１１１が、画像データの垂直方向の列毎に、画像データの各画素の値を順次加算し、垂直積算処理部１１２が、垂直方向に順次加算された画素の値と、ラインメモリ部１１３に記憶している対応する画素の値とを加算することによって、対応することができる。なお、この場合においても、例えば、演算制御部２０による画像データの読み出しの制御が異なるのみであり、本発明の各構成要素を変更する必要はない。
【０１２６】
また、本実施形態においては、例えば、演算制御部２０が、インテグラルイメージ生成部１１−１に入力する画像データと、インテグラルイメージ生成部１１−２に入力する画像データとを、行毎に交互に切り替える場合について説明したが、インテグラルイメージ生成部１１に画像データの画素の値を入力する方法は、本発明を実施するための形態に限定されるものではない。例えば、インテグラルイメージ生成部１１−１と、インテグラルイメージ生成部１１−２とに入力する画像データの画素の値を、画素毎に交互に切り替えて入力することもできる。
【０１２７】
また、本実施形態においては、図示しない撮像装置の制御部によって設定された所定の矩形領域に基づいて、演算制御部２０または演算制御部４０が、インテグラルイメージ生成部１１に入力する画像データの読み出し、および累積演算のタイミングを制御する場合について説明したが、本発明を実施するための形態に限定されるものではない。例えば、図示しない撮像装置の制御部が、ンテグラルイメージ生成部１１に入力する画像データの読み出し、および累積演算のタイミングを制御する構成とすることもできる。
【０１２８】
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
【符号の説明】
【０１２９】
１・・・演算処理部（演算装置）
２・・・メモリ部
１０・・・インテグラルイメージ演算部
１１・・・インテグラルイメージ生成部（第１のデータ積算部，第２のデータ積算部）
１１−１・・・インテグラルイメージ生成部（第１のデータ積算部）
１１−２・・・インテグラルイメージ生成部（第２のデータ積算部）
１１１・・・水平積算処理部（第１の積算部）
１１２・・・垂直積算処理部（第２の積算部）
１１３・・・ラインメモリ部（積算値記憶部）
１２・・・矩形累積演算部（データ累積演算部）
１２１・・・データ遅延部（第１のデータ遅延部）
１２２・・・データ遅延部（第２のデータ遅延部）
１２３・・・累積演算部
２０・・・演算制御部（データ読み出し部）
３・・・演算処理部（演算装置）
３０・・・インテグラルイメージ演算部
１１−３・・・インテグラルイメージ生成部（第３のデータ積算部）
１２−１・・・矩形累積演算部（データ累積演算部）
１２−２・・・矩形累積演算部（第２のデータ累積演算部）
４０・・・演算制御部（データ読み出し部）
【図１】
0005548087.tif 000002
【図２】
0005548087.tif 000003
【図３】
0005548087.tif 000004
【図４】
0005548087.tif 000005
【図５】
0005548087.tif 000006
【図６】
0005548087.tif 000007
【図７】
0005548087.tif 000008
【図８】
0005548087.tif 000009
【図９】
0005548087.tif 000010
【図１０】
0005548087.tif 000011
【図１１】
0005548087.tif 000012
【図１２】
0005548087.tif 000013