JP5548087B2 - 演算装置および演算方法 - Google Patents

演算装置および演算方法 Download PDF

Info

Publication number
JP5548087B2
JP5548087B2 JP2010220156A JP2010220156A JP5548087B2 JP 5548087 B2 JP5548087 B2 JP 5548087B2 JP 2010220156 A JP2010220156 A JP 2010220156A JP 2010220156 A JP2010220156 A JP 2010220156A JP 5548087 B2 JP5548087 B2 JP 5548087B2
Authority
JP
Japan
Prior art keywords
unit
data
pixel
value
rectangular
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2010220156A
Other languages
English (en)
Other versions
JP2012073970A (ja
Inventor
崇志 梁田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Olympus Corp
Original Assignee
Olympus Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Olympus Corp filed Critical Olympus Corp
Priority to JP2010220156A priority Critical patent/JP5548087B2/ja
Priority to US13/236,720 priority patent/US8483491B2/en
Publication of JP2012073970A publication Critical patent/JP2012073970A/ja
Application granted granted Critical
Publication of JP5548087B2 publication Critical patent/JP5548087B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/94Hardware or software architectures specially adapted for image or video understanding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/44Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components
    • G06V10/443Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering
    • G06V10/446Local feature extraction by analysis of parts of the pattern, e.g. by detecting edges, contours, loops, corners, strokes or intersections; Connectivity analysis, e.g. of connected components by matching or filtering using Haar-like filters, e.g. using integral image techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Image Processing (AREA)

Description

本発明は、演算装置および演算方法に関する。
画素が2次元の行列状に配列された画像データに対して設定された所定の矩形領域を、水平方向および垂直方向に1画素ずつ移動させながら、矩形領域内の画素の値を積算することによって画像データにフィルタをかけるなどの画像処理が行われることがある。図10は、画素の値を積算する矩形領域を移動しながら行う画像処理において、矩形領域が移動する様子を模式的に示した図である。図10(a)は、画素の値を積算する矩形領域Rを水平方向に1画素ずつ移動させている様子を示している。また、図10(b)は、画素の値の積算が画像データの1行分完了した、すなわち、矩形領域Rが画像データの1行目の最後の画素の位置まで移動した後に、矩形領域Rを垂直方向に1行分移動させている様子を示している。また、図10(c)は、矩形領域Rが垂直方向に1行分移動した後に、再び矩形領域Rを水平方向に1画素ずつ移動させている様子を示している。このように、矩形領域を移動しながら行う画像処理においては、図10(a)〜図10(c)に示したように、所定の矩形領域Rを、水平方向および垂直方向に1画素ずつ移動させ、矩形領域Rの位置が、図10(d)に示したように、画像データの最後の行の、最後の画素の位置まで移動したときに、矩形領域R内の画素の値の積算を終了する。
このような画像処理において、予め定められた矩形領域内の各画素の値を積算する方法としては、例えば、矩形領域の高さ分の本数のラインメモリを予め準備しておき、ラインメモリに記憶している画素の値に対して積算処理を行うことが考えられる。この場合、ラインメモリは、積算処理に使用しなくなったラインメモリのデータを、次に積算処理する行のデータに書き換えながら、順次矩形領域を垂直方向に移動させることとなる。しかしながら、このような構成の場合には、積算処理を行うことができる矩形領域の高さが、予め準備したラインメモリの本数の高さまでという制限が存在してしまう。そして、この矩形領域の高さの制限を少なくするためには、より多くの本数のラインメモリを準備する必要があるため、回路規模が増大してしまう。
また、例えば、積算する矩形領域内の各画素の値を、都度、画像データを記憶しているメモリから読み出しながら積算処理を行うことも考えられる。この方法では、矩形領域の高さの制限をなくすことができる。しかしながら、この方法では、積算処理する矩形領域内の画素の値を取得するために、都度、画像データの読み出しを行うため、画像データを記憶しているメモリに対するメモリアクセスの量(回数)が多くなり、積算処理に多くの時間を要してしまう。
また、積算処理の手法として、例えば、特許文献1に開示された技術のような、インテグラルイメージを用いて画像データを積算処理する技術が開示されている。インテグラルイメージは、各画素の値が、原点からの矩形領域の累積値を示している、という特徴を持っている。特許文献1では、この特徴を生かして、矩形領域の積算処理にインテグラルイメージを用いる手法を開示している。
ここで、インテグラルイメージと、インテグラルイメージを用いた所定の矩形領域内の積算処理について説明する。図11は、画像データと、画像データに基づいたインテグラルイメージとの一例を模式的に示した図である。また、図12は、インテグラルイメージを用いた積算処理の処理方法を説明する図である。
インテグラルイメージは、画像データの予め定めた画素の位置を原点とし、その原点と対象となる画素の位置とを対角にした(各画素を両端の位置とする)矩形領域内の全ての画素の値の総和を、対象となる画素の値としたデータである。図11(a)には、6行6列の画像データを示し、図11(b)には、図11(a)に示した6行6列の画像データに対するインテグラルイメージを示している。図11(b)に示したインテグラルイメージは、図11(a)に示した画像データの1行1列目の画素を原点とした矩形領域内の全ての画素の値の総和を各画素の値としたインテグラルイメージである。例えば、2行2列目の画素においては、1行1列目の画素の値(=“1”)と、1行2列目の画素の値(=“2”)と、2行1列目の画素の値(=“7”)と、対象となる2行2列目の画素の値(=“8”)との総和を取った値(=“18”)を、2行2列目の画素の値としている。
このようなインテグラルイメージにおいては、積算値を求める所定の矩形領域を含む矩形領域内の画素の値と、所定の矩形領域に接する矩形領域内の画素の値とから、所定の矩形領域内の全ての画素の積算値を容易に求めることができる。より具体的には、例えば、図12(a)に示した画像データにおける矩形領域R内の全ての画素の積算値を求める場合を考える。この場合、図12(b)に示したように、矩形領域Rを含む矩形領域A内において原点の対角に位置する画素の値と、矩形領域Rに接する矩形領域B、矩形領域C、および矩形領域D内において原点の対角に位置するそれぞれの画素の値とから、矩形領域R内の全ての画素の積算値を、下式(1)によって求めることができる。
r=a−b−c+d ・・・・・(1)
上式(1)において、rは矩形領域R内の全ての画素の積算値、aは矩形領域Aにおいて原点の対角に位置する画素の値、bは矩形領域Bにおいて原点の対角に位置する画素の値、cは矩形領域Cにおいて原点の対角に位置する画素の値、dは矩形領域Dにおいて原点の対角に位置する画素の値、を示す。
実際に図12に示した画像データ内の画素の値と、インテグラルイメージ内の画素の値とに基づいて演算を行ってみる。図12(a)の画像データにおける矩形領域Rの積算値は、15+16+17+21+22+23+27+28+29=198となる。また、図12(b)のインテグラルイメージ内の各画素の値から、上式(1)によって矩形領域Rの積算値を求めると、375−135−60+18=198となる。このように、インテグラルイメージを用いることによって、特定の矩形領域内の全ての画素の積算値を容易に求めることができる。
特開2004−185611号公報
しかしながら、画像データに対応したインテグラルイメージをメモリに展開して記憶しておくためには、メモリの記憶容量が莫大な量となる。例えば、静止画用カメラ、動画用カメラ、医療用内視鏡カメラ、または産業用内視鏡カメラなどの撮像装置において、動画撮影によって得られた1つの画像データに対応したインテグラルイメージを、メモリに記憶する場合を考える。このとき、動画の画像データは、1画素が8ビット(1バイト)であり、行方向に640画素、列方向に480画素であるとする。この1つの画像データに対応したインテグラルイメージを単純にメモリに記憶する場合では、全ての画素の総和を記憶するために必要な、1画素あたりのメモリの記憶容量は、1(バイト)×640(画素)×480(画素)=307.2(キロバイト)となる。そして、動画の画像データの1面分のメモリの記憶容量は、307.2(キロバイト)×640(画素)×480(画素)=94.37(ギガバイト)となる。
このように、画像データに対応したインテグラルイメージを単純にメモリに記憶するためには、莫大な記憶容量のメモリが必要となる。このような莫大な記憶容量をもつメモリを事前に準備しておくことは非効率的であるため、積算処理を行うために予めインテグラルイメージをメモリに展開しておくことは困難であるという問題がある。
本発明は、上記の課題認識に基づいてなされたものであり、インテグラルイメージを展開するためのメモリを事前に準備しておくことなく、インテグラルイメージを用いて画像データの矩形領域の積算処理を行うことができる演算装置および演算方法を提供することを目的としている。
上記の課題を解決するため、本発明の演算装置は、2次元の第1の方向および第2の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第1の方向および第2の方向における基準画素の位置から、前記第2の方向に順次移動させながら、前記第1の方向に順次読み出すデータ読み出し部と、前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第2の方向における第1の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第1の積算値として出力する第1のデータ積算部と、前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第2の方向における第2の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第2の積算値として出力する第2のデータ積算部と、前記第1のデータ積算部から出力された前記第1の積算値と、前記第2のデータ積算部から出力された前記第2の積算値とに基づいて、前記第1の方向における第1の画素数と、前記第2の方向における第2の画素数と、によって表される第1の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算部と、を備え、前記第1の矩形データ領域を前記第1の方向に順次移動させながら、前記第2の方向に順次移動させたときの、前記第1の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、ことを特徴とする。
また、本発明の前記第1のデータ積算部および前記第2のデータ積算部は、それぞれ、前記第1の方向における前記基準画素の位置から、前記第1の方向において今回読み出された前記画素の位置までの前記画素の値の積算値を、第1の方向の積算値として順次出力する第1の積算部と、前記データ読み出し部が前記画素の値を読み出す画素の位置が前記第2の方向に移動した後に、前記第1の積算部によって前回積算された前記第1の方向の積算値と、前記第1の積算部によって今回積算された前記第1の方向の積算値と、を加算した第2の方向の積算値を順次算出する第2の積算部と、各画素の位置に対応する前記第2の方向の積算値を前回の積算値として記憶する積算値記憶部と、を備え、前記第2の方向の積算値を、該第1のデータ積算部が出力する前記第1の積算値および該第2のデータ積算部が出力する前記第2の積算値として、それぞれ出力する、ことを特徴とする。
また、本発明の前記データ累積演算部は、前記第1のデータ積算部が積算した前記第1の積算値を、前記第1の矩形データ領域における前記第1の画素数だけ遅延させる第1のデータ遅延部と、前記第2のデータ積算部が積算した前記第2の積算値を、前記第1の矩形データ領域における前記第1の画素数だけ遅延させる第2のデータ遅延部と、前記第1の積算値と、該前記第1の積算値を前記第1のデータ遅延部が遅延させた積算値と、前記第2の積算値と、該前記第2の積算値を前記第2のデータ遅延部が遅延させた積算値と、に基づいて、前記第1の矩形データ領域内に含まれる複数の前記画素の値を累積した累積値を算出する累積演算部と、を備える、ことを特徴とする。
また、本発明の前記第1の積算値は、前記矩形領域における下辺の積算値であり、前記第2の積算値は、前記矩形領域における上辺の積算値である、ことを特徴とする。
また、本発明の前記データ読み出し部は、前記基準画素の位置から前記画素の値の読み出しを開始し、該画素の値の読み出しが前記第1の方向に前記第1の画素数で示される分の読み出しが完了した後に、前記基準画素の位置から第2の方向に前記第1の位置を移動させたときの前記画素の値から再び前記第1の方向に読み出しを行うように制御して、該読み出した前記画素の値を前記第1のデータ積算部に入力し、前記第1の位置が前記第1の矩形データ領域における前記第2の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第2のデータ積算部に入力し、以降、前記第1のデータ積算部に入力する前記画素の値の読み出しと、前記第2のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御する、ことを特徴とする。
また、本発明の前記データ読み出し部は、前記第1の位置が、前記第1のデータ積算部に入力する前記画素の値の読み出しを開始してから、前記第1の矩形データ領域における第2の画素数だけ移動し、前記第1の位置の前記画素の値を含む前記第1の方向における前記画像データ群に含まれる全ての前記画素の値の読み出しが終了した後に、前記画像データ群における前記基準画素の位置の前記画素の値から前記第2の位置において前記第2のデータ積算部に入力する前記画素の値の読み出しを開始し、以降、前記画像データ群に含まれる前記第1の方向の全ての前記画素の値の読み出しが終了する毎に、前記第1のデータ積算部に入力する次の前記第1の位置における前記第1の方向の前記画素の値の読み出しと、前記第2のデータ積算部に入力する次の前記第2の位置における前記第1の方向の前記画素の値の読み出しとを交互に行う、ことを特徴とする。
また、本発明の演算装置は、前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第2の方向における第3の位置にある各画素とを頂点する矩形領域内に含まれる前記画素の値の総和を、第3の積算値として出力する第3のデータ積算部と、前記第1のデータ積算部から出力された前記第1の積算値と、前記第3のデータ積算部から出力された前記第3の積算値とに基づいて、前記第1の方向における第3の画素数と、前記第2の方向における第4の画素数と、によって表される第2の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した第2の累積値を求める第2のデータ累積演算部と、をさらに備え、前記データ読み出し部は、前記第3の位置が前記第2の矩形データ領域における前記第4の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第3のデータ積算部に入力し、以降、前記第1のデータ積算部に入力する前記画素の値の読み出しと、前記第2のデータ積算部に入力する前記画素の値の読み出しと、前記第3のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御し、前記第2のデータ累積演算部は、前記第1のデータ積算部が積算した前記第1の積算値を、前記第2の矩形データ領域における前記第3の画素数だけ遅延させる第3のデータ遅延部と、前記第3のデータ積算部が積算した前記第3の積算値を、前記第2の矩形データ領域における前記第4の画素数だけ遅延させる第4のデータ遅延部と、前記第1の積算値と、該前記第1の積算値を前記第3のデータ遅延部が遅延させた積算値と、前記第3の積算値と、該前記第3の積算値を前記第4のデータ遅延部が遅延させた積算値と、に基づいて、前記第2の矩形データ領域内に含まれる複数の前記画素の値を累積した第2の累積値を算出する第2の累積演算部と、を備え、該演算装置は、さらに、前記第1の矩形データ領域とともに前記第2の矩形データ領域を前記第1の方向に順次移動させながら、前記第2の方向に順次移動させたときの、前記第2の矩形データ領域内に含まれる複数の前記画素の値の前記第2の累積値を順次出力する、ことを特徴とする。
また、本発明の演算方法は、2次元の第1の方向および第2の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第1の方向および第2の方向における基準画素の位置から、前記第2の方向に順次移動させながら、前記第1の方向に順次読み出すデータ読み出しステップと、前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第2の方向における第1の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第1の積算値として出力する第1のデータ積算ステップと、前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第2の方向における第2の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第2の積算値として出力する第2のデータ積算ステップと、前記第1のデータ積算ステップによって出力された前記第1の積算値と、前記第2のデータ積算ステップによって出力された前記第2の積算値とに基づいて、前記第1の方向における第1の画素数と、前記第2の方向における第2の画素数と、によって表される第1の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算ステップと、を含み、前記第1の矩形データ領域を前記第1の方向に順次移動させながら、前記第2の方向に順次移動させたときの、前記第1の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、ことを特徴とする。
本発明によれば、インテグラルイメージを展開するためのメモリを事前に準備しておくことなく、インテグラルイメージを用いて画像データの矩形領域の積算処理を行うことができるという効果が得られる。
本発明の第1の実施形態における演算装置の概略構成を示したブロック図である。 本第1の実施形態の演算装置に備えたインテグラルイメージ生成部の概略構成を示したブロック図である。 本第1の実施形態の演算装置に備えた矩形累積積算部の概略構成を示したブロック図である。 本第1の実施形態の演算装置における矩形領域の積算処理の手順を説明する図である。 本第1の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。 本発明の第2の実施形態における演算装置の概略構成を示したブロック図である。 本第2の実施形態の演算装置において積算処理する画像データの矩形領域の一例を模式的に示した図である。 本第2の実施形態の演算装置における矩形領域の積算処理の手順を説明する図である。 本第2の実施形態の演算装置における矩形領域の積算処理のタイミングを説明する図である。 画素の値を積算する矩形領域を移動しながら行う画像処理において、矩形領域が移動する様子を模式的に示した図である。 画像データと、画像データに基づいたインテグラルイメージとの一例を模式的に示した図である。 インテグラルイメージを用いた積算処理の処理方法を説明する図である。
<第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に入力する画像データの読み出し、および累積演算のタイミングを制御する構成とすることもできる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。
1・・・演算処理部(演算装置)
2・・・メモリ部
10・・・インテグラルイメージ演算部
11・・・インテグラルイメージ生成部(第1のデータ積算部,第2のデータ積算部)
11−1・・・インテグラルイメージ生成部(第1のデータ積算部)
11−2・・・インテグラルイメージ生成部(第2のデータ積算部)
111・・・水平積算処理部(第1の積算部)
112・・・垂直積算処理部(第2の積算部)
113・・・ラインメモリ部(積算値記憶部)
12・・・矩形累積演算部(データ累積演算部)
121・・・データ遅延部(第1のデータ遅延部)
122・・・データ遅延部(第2のデータ遅延部)
123・・・累積演算部
20・・・演算制御部(データ読み出し部)
3・・・演算処理部(演算装置)
30・・・インテグラルイメージ演算部
11−3・・・インテグラルイメージ生成部(第3のデータ積算部)
12−1・・・矩形累積演算部(データ累積演算部)
12−2・・・矩形累積演算部(第2のデータ累積演算部)
40・・・演算制御部(データ読み出し部)

Claims (8)

  1. 2次元の第1の方向および第2の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第1の方向および第2の方向における基準画素の位置から、前記第2の方向に順次移動させながら、前記第1の方向に順次読み出すデータ読み出し部と、
    前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第2の方向における第1の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第1の積算値として出力する第1のデータ積算部と、
    前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第2の方向における第2の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第2の積算値として出力する第2のデータ積算部と、
    前記第1のデータ積算部から出力された前記第1の積算値と、前記第2のデータ積算部から出力された前記第2の積算値とに基づいて、前記第1の方向における第1の画素数と、前記第2の方向における第2の画素数と、によって表される第1の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算部と、
    を備え、
    前記第1の矩形データ領域を前記第1の方向に順次移動させながら、前記第2の方向に順次移動させたときの、前記第1の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、
    ことを特徴とする演算装置。
  2. 前記第1のデータ積算部および前記第2のデータ積算部は、それぞれ、
    前記第1の方向における前記基準画素の位置から、前記第1の方向において今回読み出された前記画素の位置までの前記画素の値の積算値を、第1の方向の積算値として順次出力する第1の積算部と、
    前記データ読み出し部が前記画素の値を読み出す画素の位置が前記第2の方向に移動した後に、前記第1の積算部によって前回積算された前記第1の方向の積算値と、前記第1の積算部によって今回積算された前記第1の方向の積算値と、を加算した第2の方向の積算値を順次算出する第2の積算部と、
    各画素の位置に対応する前記第2の方向の積算値を前回の積算値として記憶する積算値記憶部と、
    を備え、
    前記第2の方向の積算値を、
    該第1のデータ積算部が出力する前記第1の積算値および該第2のデータ積算部が出力する前記第2の積算値として、それぞれ出力する、
    ことを特徴とする請求項1に記載の演算装置。
  3. 前記データ累積演算部は、
    前記第1のデータ積算部が積算した前記第1の積算値を、前記第1の矩形データ領域における前記第1の画素数だけ遅延させる第1のデータ遅延部と、
    前記第2のデータ積算部が積算した前記第2の積算値を、前記第1の矩形データ領域における前記第1の画素数だけ遅延させる第2のデータ遅延部と、
    前記第1の積算値と、該前記第1の積算値を前記第1のデータ遅延部が遅延させた積算値と、前記第2の積算値と、該前記第2の積算値を前記第2のデータ遅延部が遅延させた積算値と、に基づいて、前記第1の矩形データ領域内に含まれる複数の前記画素の値を累積した累積値を算出する累積演算部と、
    を備える、
    ことを特徴とする請求項1または請求項2に記載の演算装置。
  4. 前記第1の積算値は、前記矩形領域における下辺の積算値であり、前記第2の積算値は、前記矩形領域における上辺の積算値である、
    ことを特徴とする請求項1から請求項3のいずれか1の項に記載の演算装置。
  5. 前記データ読み出し部は、
    前記基準画素の位置から前記画素の値の読み出しを開始し、該画素の値の読み出しが前記第1の方向に前記第1の画素数で示される分の読み出しが完了した後に、前記基準画素の位置から第2の方向に前記第1の位置を移動させたときの前記画素の値から再び前記第1の方向に読み出しを行うように制御して、該読み出した前記画素の値を前記第1のデータ積算部に入力し、
    前記第1の位置が前記第1の矩形データ領域における前記第2の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第2のデータ積算部に入力し、
    以降、前記第1のデータ積算部に入力する前記画素の値の読み出しと、前記第2のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御する、
    ことを特徴とする請求項4に記載の演算装置。
  6. 前記データ読み出し部は、
    前記第1の位置が、前記第1のデータ積算部に入力する前記画素の値の読み出しを開始してから、前記第1の矩形データ領域における第2の画素数だけ移動し、前記第1の位置の前記画素の値を含む前記第1の方向における前記画像データ群に含まれる全ての前記画素の値の読み出しが終了した後に、前記画像データ群における前記基準画素の位置の前記画素の値から前記第2の位置において前記第2のデータ積算部に入力する前記画素の値の読み出しを開始し、
    以降、前記画像データ群に含まれる前記第1の方向の全ての前記画素の値の読み出しが終了する毎に、前記第1のデータ積算部に入力する次の前記第1の位置における前記第1の方向の前記画素の値の読み出しと、前記第2のデータ積算部に入力する次の前記第2の位置における前記第1の方向の前記画素の値の読み出しとを交互に行う、
    ことを特徴とする請求項5に記載の演算装置。
  7. 前記基準画素の位置と、前記データ読み出し部によって順次読み出された前記第2の方向における第3の位置にある各画素とを頂点する矩形領域内に含まれる前記画素の値の総和を、第3の積算値として出力する第3のデータ積算部と、
    前記第1のデータ積算部から出力された前記第1の積算値と、前記第3のデータ積算部から出力された前記第3の積算値とに基づいて、前記第1の方向における第3の画素数と、前記第2の方向における第4の画素数と、によって表される第2の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した第2の累積値を求める第2のデータ累積演算部と、
    をさらに備え、
    前記データ読み出し部は、
    前記第3の位置が前記第2の矩形データ領域における前記第4の画素数だけ移動した後に、前記基準画素の位置から前記画素の値の読み出しを開始して、該読み出した前記画素の値を前記第3のデータ積算部に入力し、
    以降、前記第1のデータ積算部に入力する前記画素の値の読み出しと、前記第2のデータ積算部に入力する前記画素の値の読み出しと、前記第3のデータ積算部に入力する前記画素の値の読み出しとを交互に行うように、前記画像データ群の読み出しを制御し、
    前記第2のデータ累積演算部は、
    前記第1のデータ積算部が積算した前記第1の積算値を、前記第2の矩形データ領域における前記第3の画素数だけ遅延させる第3のデータ遅延部と、
    前記第3のデータ積算部が積算した前記第3の積算値を、前記第2の矩形データ領域における前記第4の画素数だけ遅延させる第4のデータ遅延部と、
    前記第1の積算値と、該前記第1の積算値を前記第3のデータ遅延部が遅延させた積算値と、前記第3の積算値と、該前記第3の積算値を前記第4のデータ遅延部が遅延させた積算値と、に基づいて、前記第2の矩形データ領域内に含まれる複数の前記画素の値を累積した第2の累積値を算出する第2の累積演算部と、
    を備え、
    該演算装置は、さらに、
    前記第1の矩形データ領域とともに前記第2の矩形データ領域を前記第1の方向に順次移動させながら、前記第2の方向に順次移動させたときの、前記第2の矩形データ領域内に含まれる複数の前記画素の値の前記第2の累積値を順次出力する、
    ことを特徴とする請求項6に記載の演算装置。
  8. 2次元の第1の方向および第2の方向に配列された複数の画素の値からなる画像データ群に含まれる前記画素の値のそれぞれを、第1の方向および第2の方向における基準画素の位置から、前記第2の方向に順次移動させながら、前記第1の方向に順次読み出すデータ読み出しステップと、
    前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第2の方向における第1の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第1の積算値として出力する第1のデータ積算ステップと、
    前記基準画素の位置と、前記データ読み出しステップによって順次読み出された前記第2の方向における第2の位置にある各画素とを頂点とする矩形領域内に含まれる前記画素の値の総和を、第2の積算値として出力する第2のデータ積算ステップと、
    前記第1のデータ積算ステップによって出力された前記第1の積算値と、前記第2のデータ積算ステップによって出力された前記第2の積算値とに基づいて、前記第1の方向における第1の画素数と、前記第2の方向における第2の画素数と、によって表される第1の矩形データ領域内に含まれるそれぞれの前記画素の値を累積した累積値を求めるデータ累積演算ステップと、
    を含み、
    前記第1の矩形データ領域を前記第1の方向に順次移動させながら、前記第2の方向に順次移動させたときの、前記第1の矩形データ領域内に含まれる複数の前記画素の値の前記累積値を順次出力する、
    ことを特徴とする演算方法。
JP2010220156A 2010-09-30 2010-09-30 演算装置および演算方法 Active JP5548087B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2010220156A JP5548087B2 (ja) 2010-09-30 2010-09-30 演算装置および演算方法
US13/236,720 US8483491B2 (en) 2010-09-30 2011-09-20 Calculation device and method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010220156A JP5548087B2 (ja) 2010-09-30 2010-09-30 演算装置および演算方法

Publications (2)

Publication Number Publication Date
JP2012073970A JP2012073970A (ja) 2012-04-12
JP5548087B2 true JP5548087B2 (ja) 2014-07-16

Family

ID=45889899

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010220156A Active JP5548087B2 (ja) 2010-09-30 2010-09-30 演算装置および演算方法

Country Status (2)

Country Link
US (1) US8483491B2 (ja)
JP (1) JP5548087B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20140013142A (ko) * 2012-07-18 2014-02-05 삼성전자주식회사 이미지에서 목표를 검출하는 목표 검출 방법 및 이미지 처리 장치
CN103236034B (zh) * 2013-04-16 2016-03-30 中国科学院重庆绿色智能技术研究院 基于lsi电路的积分图快速生成方法和装置
US9412036B2 (en) * 2014-03-07 2016-08-09 Samsung Electronics Co., Ltd. Methods and systems for object detection based on column-wise and row-wise sums of pixel values
AU2016264606B2 (en) * 2015-05-19 2020-09-03 Magic Leap, Inc. Semi-global shutter imager
JP6598660B2 (ja) * 2015-12-01 2019-10-30 キヤノン株式会社 画像処理装置および画像処理方法
WO2017186421A1 (en) * 2016-04-27 2017-11-02 Asml Holding N.V. Image processing convolution algorithm for defect detection
CN114257781A (zh) * 2020-09-23 2022-03-29 京东方科技集团股份有限公司 双倍速率动态随机存储器读写控制方法、装置和***

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0962653A (ja) * 1995-08-29 1997-03-07 Mitsubishi Electric Corp 積和演算装置、積和演算器集積回路装置及び累積加算器
JP3209420B2 (ja) * 1999-06-30 2001-09-17 Lg電子株式会社 畳み込み処理方法及び装置
US7580968B2 (en) * 2002-02-28 2009-08-25 Texas Instruments Incorporated Processor with scaled sum-of-product instructions
JP4166143B2 (ja) 2002-11-21 2008-10-15 株式会社国際電気通信基礎技術研究所 顔位置の抽出方法、およびコンピュータに当該顔位置の抽出方法を実行させるためのプログラムならびに顔位置抽出装置
US7739324B1 (en) * 2006-03-22 2010-06-15 Cadence Design Systems, Inc. Timing driven synthesis of sum-of-product functional blocks
US8184915B2 (en) * 2006-12-04 2012-05-22 Lockheed Martin Corporation Device and method for fast computation of region based image features
JP5388835B2 (ja) * 2009-12-24 2014-01-15 キヤノン株式会社 情報処理装置及び情報処理方法
US8982180B2 (en) * 2011-03-31 2015-03-17 Fotonation Limited Face and other object detection and tracking in off-center peripheral regions for nonlinear lens geometries

Also Published As

Publication number Publication date
JP2012073970A (ja) 2012-04-12
US8483491B2 (en) 2013-07-09
US20120082399A1 (en) 2012-04-05

Similar Documents

Publication Publication Date Title
JP5548087B2 (ja) 演算装置および演算方法
US11699067B2 (en) Arithmetic processing apparatus and control method therefor
JP4772281B2 (ja) 画像処理装置及び画像処理方法
US8904069B2 (en) Data processing apparatus and image processing apparatus
US8724923B2 (en) Image processing apparatus and image processing method for correcting distorted image data
CN112991142B (zh) 图像数据的矩阵运算方法、装置、设备及存储介质
JP6151930B2 (ja) 撮像装置およびその制御方法
JP2013062714A (ja) 撮像装置および信号転送装置
US10713757B2 (en) Image processing apparatus, control method thereof, and storage medium
JP6442867B2 (ja) 画像処理装置、撮像装置、及び画像処理方法
CN107038678B (zh) 用于执行傅里叶变换的装置和方法
JP6532334B2 (ja) 並列演算装置、画像処理装置及び並列演算方法
CN113971635A (zh) 一种图像阵列格式转换方法、装置及电子设备和存储介质
US11775809B2 (en) Image processing apparatus, imaging apparatus, image processing method, non-transitory computer-readable storage medium
TWI634436B (zh) 緩衝裝置及卷積運算裝置與方法
JP2018033100A (ja) 画像処理装置及び方法、及び撮像装置
JP5597175B2 (ja) 画像圧縮装置及び画像処理システム
JP5675278B2 (ja) データ処理装置および画像処理装置
WO2017154423A1 (ja) 画像処理装置、画像処理方法、およびプログラム
JP6295619B2 (ja) 画像処理装置及び方法、並びに電子機器
JP6730214B2 (ja) 視差演算装置
JP6467940B2 (ja) 画像処理装置、画像処理方法及びプログラム
JP2010033507A (ja) メモリコントローラおよび画像処理装置
KR101540300B1 (ko) 캐시 메모리를 이용한 이미지 워핑 시스템 및 그 방법
JP2017228849A (ja) 画像処理装置、撮像装置、制御方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130913

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140421

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140425

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140516

R151 Written notification of patent or utility model registration

Ref document number: 5548087

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250