JP5058681B2 - 情報処理方法及び装置、プログラム、記憶媒体 - Google Patents

情報処理方法及び装置、プログラム、記憶媒体 Download PDF

Info

Publication number
JP5058681B2
JP5058681B2 JP2007145448A JP2007145448A JP5058681B2 JP 5058681 B2 JP5058681 B2 JP 5058681B2 JP 2007145448 A JP2007145448 A JP 2007145448A JP 2007145448 A JP2007145448 A JP 2007145448A JP 5058681 B2 JP5058681 B2 JP 5058681B2
Authority
JP
Japan
Prior art keywords
information
value
accumulated
processing
input
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.)
Expired - Fee Related
Application number
JP2007145448A
Other languages
English (en)
Other versions
JP2008299627A (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.)
Canon Inc
Original Assignee
Canon Inc
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 Canon Inc filed Critical Canon Inc
Priority to JP2007145448A priority Critical patent/JP5058681B2/ja
Priority to PCT/JP2008/060106 priority patent/WO2008146934A1/en
Priority to CN2008800180100A priority patent/CN101681503B/zh
Priority to US12/602,091 priority patent/US9021347B2/en
Priority to EP08753124.0A priority patent/EP2165311A4/en
Publication of JP2008299627A publication Critical patent/JP2008299627A/ja
Application granted granted Critical
Publication of JP5058681B2 publication Critical patent/JP5058681B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T1/00General purpose image data processing
    • G06T1/60Memory management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06F18/2148Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the process organisation or structure, e.g. boosting cascade
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/143Segmentation; Edge detection involving probabilistic approaches, e.g. Markov random field [MRF] modelling
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/77Processing image or video features in feature spaces; using data integration or data reduction, e.g. principal component analysis [PCA] or independent component analysis [ICA] or self-organising maps [SOM]; Blind source separation
    • G06V10/774Generating sets of training patterns; Bootstrap methods, e.g. bagging or boosting
    • G06V10/7747Organisation of the process, e.g. bagging or boosting
    • 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
    • G06V10/955Hardware or software architectures specially adapted for image or video understanding using specific electronic processors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/161Detection; Localisation; Normalisation
    • G06V40/165Detection; Localisation; Normalisation using facial parts and geometric relationships
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/3059Digital compression and data reduction techniques where the original information is represented by a subset or similar information, e.g. lossy compression
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20021Dividing image into blocks, subimages or windows
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30196Human being; Person
    • G06T2207/30201Face

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Data Mining & Analysis (AREA)
  • Probability & Statistics with Applications (AREA)
  • Medical Informatics (AREA)
  • Human Computer Interaction (AREA)
  • Databases & Information Systems (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Image Processing (AREA)
  • Image Analysis (AREA)
  • Image Input (AREA)
  • Information Transfer Systems (AREA)

Description

本発明は、画像処理、画像認識や画像合成、或いは情報分析などの情報処理方法及び装置に関するものである。
情報処理分野においては、多次元配列情報を頻繁に取り扱う。その中でも、画像処理、画像認識や画像合成等に関わる一部処理や統計処理等では、特定領域の範囲内における要素の総和値を求めて使用することが多い。
このため、情報処理を行うアプリケーションの一例として、例えばMicrosoft社のExcel(商標)などの表計算アプリケーションでは、2次元の表において、指定された矩形内の要素の和を求める機能がある。また、MathWorks社のMATLAB(商標)などの計算用のプログラミング言語においても、行列の要素の和を求める関数がある。
コンピュータ・グラフィックスの分野では、F. C. Crowが長方形のsummed-area tableと呼ばれる、元の入力画像情報に対する累積画像情報の概念を提案している(非特許文献1参照)。この文献では、summed-area tableを入力画像と同サイズ(同要素数)の2次元配列とし、入力画像の座標位置(x, y)の画素値をI(x, y)としたとき、summed-area tableの同位置(x, y)の成分C(x, y)を
Figure 0005058681
として定義している。すなわち図4に示すように、元の入力画像(a)において原点位置(0, 0)と位置(x, y)とを対角とする長方形内の画素の総和値がsummed-area table(b)の位置(x, y)の値C(x, y)となる。(尚、非特許文献1のオリジナルのsummed-area tableは、原点位置を画像左下として説明しているが、ここでは後述の説明と整合させるため左上を原点とする。)
この定義によれば、入力画像上で水平または垂直に置かれた任意の矩形領域内の画素値I(x, y)の和を、次の式を使ってsummed-area table上の4点の値を参照するのみで、求めることができる。例えば図5に示すように(x0, y0)と(x1, y1)とを対角とする矩形領域内の画素値の総和C(x0, y0;x1, y1)を求めるには、
C(x0, y0;x1, y1)=C(x0-1,y0-1)−C(x0-1,y1)−C(x1,y0-1)+C(x1,y1) (2)
とすればよい。これにより、画像上の任意の矩形領域内の値の総和を高速に求めることが可能となった。
一方、画像認識の分野においては、上記summed-area tableと同等の累積画像情報をIntegral imageと呼んでいる。また、これを用いた複数の矩形フィルタからなる弱判別器をカスケード接続した顔検出装置が提案されている(例えば非特許文献2参照)。
更に、非特許文献2の考え方に基づいて、連続画面からの実時間での顔抽出(例えば特許文献1参照)、表情認識(例えば特許文献2参照)、顔のジェスチャーによる指示入力(例えば特許文献3参照)なども提案されている。
ここでは、後述する本発明の実施形態における後段処理としても適用可能な、非特許文献2に記載されているパターン識別法について詳細に説明する。
非特許文献2では、図8に示すように、ある特定の大きさの矩形領域801(以下「処理ウインドウ」と呼ぶ)を処理対象となる画像800内で移動させ、各移動先の処理ウインドウ801内に人物の顔が含まれるか否かを判定する。
図9は、各移動先の処理ウインドウ801において、非特許文献2で行われている顔検出処理の流れを示す図である。ある処理ウインドウ内における顔検出処理は、複数のステージによって実行される。各ステージには、異なる組み合わせの弱判別器が割り当てられている。各弱判別器は所謂Haar-like特徴を検出するもので、矩形フィルタの組み合わせで構成されている。
図9に示すように、各ステージに割り当てられる弱判別器の数も異なっている。各ステージは、自身に割り当てられたパターンの弱判別器を用いて、処理ウインドウ内に人物の顔が含まれるか否かをそれぞれ判定する。
また、各ステージには判定を実施する順番が割り当てられており、各ステージはその順番に従ってカスケードに処理を行う。即ち、例えば図9において、第1ステージ、第2ステージ、第3ステージの順に判定が実施される。
ここで、あるステージにおいて、ある位置の処理ウインドウ内に人物の顔が含まれないと判定された場合、この位置の処理ウインドウについては、処理が打ち切られ、それ以降のステージでの判定は実施されない。そして、最後のステージによる判定で、処理ウインドウ内に人物の顔が含まれると判定された場合に、その位置の処理ウインドウ内に人物の顔が含まれると判定される。
図10は、顔検出処理の流れを示すフローチャートである。次に、図10を用いて、顔検出処理の具体的な流れについて説明する。
顔検出処理では、まず処理の対象となる処理ウインドウ801が顔検出対象画像800上の最初の位置に配置される(ステップS1001)。基本的には、この処理ウインドウ801は、図8に示されるように、顔検出対象画像800の端から一定間隔で縦方向及び横方向へ順に移動する。これによって画像全体が網羅的に選択される。例えば、顔検出対象画像800をラスタスキャンすることによって処理ウインドウ801が選択される。
次に、選択された処理ウインドウ801に人物の顔が含まれるか否かの判定が実施される。この判定は、図9を用いて上述したように、複数のステージで実施される。このため、判定を実施するステージが第1のステージから順に選択される(ステップS1002)。
次に、選択されたステージによって判定が実施される(ステップS1003)。このステージの判定では、累積得点(説明は後述)が算出され、ステージごとに予め定められている閾値を超えたか否かが判定される(ステップS1004)。閾値を超えなかった場合(ステップS1004でNo)、処理ウインドウに人物の顔が含まれないと判定され(ステップS1008)、ステップS1007以降の処理が実行される。ステップS1007以降の処理については後述する。
一方、累積得点(説明は後述)が閾値を超えた場合(ステップS1004でYes)、その判定処理(ステップS1003)が最終ステージによる判定処理であったか否かが判断される(ステップS1005)。最終ステージでなかった場合(ステップS1005でNo)、ステップS1002に戻って、次のステージが選択され、新たに選択されたステージによって判定処理が実施される。一方、最終ステージであった場合(ステップS1005でYes)、現在の処理ウインドウに人物の顔が含まれるという最終的な判定がなされる(ステップS1006)。この時点で、この処理ウインドウに人物の顔が含まれると判断したことになる。
次に、判定の対象となっていた処理ウインドウが、顔検出対象画像の中で最後の位置の処理ウインドウであったか否かを判断する(ステップS1007)。最後の位置の処理ウインドウではなかった場合(ステップS1007でNo)、ステップS1001の処理に戻り、次の位置に処理ウインドウが移動され、ステップS1002以降の処理が実行される。一方、最後の位置の処理ウインドウであった場合、この顔検出対象の入力画像に対する顔検出処理は終了する。
次に、各ステージにおける判定の処理内容について説明する。各ステージには、1以上のパターンの弱判別器が割り当てられる。この割り当ては学習処理において、AdaBoostなどのブースティング学習アルゴリズムによって実施される。各ステージは、自身に割り当てられたパターンの弱判別器に基づいて、処理ウインドウ内に顔が含まれるか否かの判定を行う。
各ステージでは、そのステージに割り当てられた各パターンの弱判別器に基づいて、処理ウインドウ内の複数の矩形領域における特徴量が、それぞれ算出される。このとき用いられる特徴量は、各矩形領域内の画素値の合計や平均等、矩形領域内の画素値の総和を用いて算出される値である。この矩形領域内総和値は、非特許文献1について図5で説明したように、入力画像に対する累積画像情報(Summed-area tableあるいはIntegral Image)を用いることにより高速に計算可能である。
次に、算出された特徴量の相対値(例えば比や差分値。ここでは差分値とする)としての差分値が算出され、この差分値に基づいて処理ウインドウに人物の顔が含まれるか否かの判定が実施される。具体的には、算出された差分値が、判定に用いられているパターンの弱判別器に設定された閾値よりも大きいか否か又は小さいか否かが判定される。そして、この判定の結果に応じて処理ウインドウにおける人物の顔の存否が判定される。
ただし、この時点での判定は、各パターンの弱判別器それぞれに基づいた判定であり、ステージとしての判定ではない。このように、各ステージでは、割り当てられた全てのパターンの弱判別器それぞれに基づいて個別に判定が実施され、それぞれの判定結果が得られる。
次に、ステージにおける累積得点が算出される。各パターンの弱判別器には個別のスコアが割り当てられている。処理ウインドウに人物の顔が含まれると判定されると、そのとき使用されたパターンの弱判別器に割り当てられたスコアが参照され、当該ステージの累積スコアに加算される。このようにして、加算されたスコアの総計が、ステージにおける累積スコアとして算出される。そして、このステージにおける累積スコアが特定の閾値(累積スコア閾値)を越えた場合に、このステージでは処理ウインドウに人物の顔が含まれる可能性有りと判定し、次のステージでの処理に移る。一方、このステージにおける累積スコアが累積スコア閾値を越えない場合、このステージでは処理ウインドウに人物の顔が含まれないと判定し、カスケード処理を打ち切る。
非特許文献2では、このような手順により、顔検出に代表される高速なパターン識別を実現している。尚、図9、10の検出器は、予め適正な学習を行っておけば、顔以外のパターン識別器として用いることももちろん可能である。
F. C. Crow, "Summed-Area Tables For Texture Mapping", Computer Graphics, 1984. P. Viola, M. Jones, "Rapid Object Detection using a Boosted Cascade of Simple Features", Proc. IEEE Conf. on Computer Vision and Pattern Recognition, Vol. 1, pp.511-518, December 2001. 特開2004−185611号公報 特開2005−44330号公報 特開2005−293061号公報
入力画像情報から上述の累積画像情報(summed area tableあるいはintegral image)を生成するにあたり、通常は計算され得る最悪値に基づいて格納するバッファのビット精度とサイズ(一時に保持する領域の大きさ)を定める。すなわち、入力画像情報の幅(横方向画素数)をXimg、高さ(縦方向画素数)をYimgとし、各画素のビット精度をNimgビット(但し正の整数)とすると、当該最悪値Cmaxとは、全ての画素値が最大値
Figure 0005058681
をとる場合の全画素総和値
Figure 0005058681
となる。従って、累積画像情報を格納するバッファの1要素ビット精度Nbufは、Cmaxを格納可能なビット精度Nbuf_maxとする必要があり、画像サイズにも依存するがNimgよりかなり大きな値となる。例えば、VGAサイズの8ビットGrayscale画像を入力画像とする場合、Nimg=8, Ximg=640, Yimg=480である。よって、Cmax=78336000=4AB5000hつまりNbuf=Nbuf_max=27bit精度(サイズ)のバッファを用意する必要がある。入力画像情報に対する累積画像情報を全域分、同時に持つ必要がある場合には、Nbuf_max×Ximg×Yimg=8294400bitものRAM等のメモリ領域を準備する必要があり、処理リソースを圧迫する。
そこで、バッファのビット精度Nbufをなんらかの方法で低減する必要がある。特にこのような累積情報に基づく処理をハードウェアで行う場合、ワークメモリの容量は回路規模に直結するため切実な問題である。また、ソフトウェアによる処理であっても、Nbufを低減できれば、より小さい型を用いることが可能となって、リソース消費量を抑えることができる。
非特許文献1においては、バッファのビット精度Nbufを低減するための1つの方法について述べられている。すなわち、入力情報を例えば16×16画素のブロックに分割し、各々のブロックについて独立にSummed-area tableを計算する。入力情報のビット精度Nbuf=8bitであれば、このとき必要なバッファのビット精度は16bitとなる。そしてこれとは別に、各ブロック毎にその左上端コーナーの左上斜め方向に隣接する画素位置に対応する、元のSummed-area tableの32bit値を保持するようにする。所望の位置に対応する値を復元するには、当該位置の16bitの値に、当該位置が含まれるブロックが保持する32bit値を加算すれば良い、としている。(しかしながら、実際に元のSummed-area tableの値を復元するには、これだけの演算では不十分である。)
しかしながら、従来4点を参照して式(2)のような簡単な加減演算を行うのみで、所望の領域の総和値を求めることができたのに対し、各点の値を復元するための演算が加わることにより、演算負荷は大幅に増大する。ハードウェアによる処理では、演算のための回路規模が増大することになるし、ソフトウェアによる処理を行う場合であっても、処理速度を低下させる。
本発明は、このような課題を解決するためになされたものであり、演算のための回路規模や処理負荷を増大させることなく、むしろ低減させつつも、累積情報を保持するバッファ容量を大幅に低減させることを目的とする。
上記課題を解決するために、本発明によれば、情報処理方法に、複数次元配列の入力情報を入力する入力工程と、前記入力情報の各要素の位置に対応する累積情報値を計算する計算工程と、前記累積情報値を所定ビットのサイズを持つバッファに保持する保持工程と、前記保持工程で保持された複数の前記累積情報値の間で加減算を行うことで、当該複数の累積情報値の要素の位置で示される前記入力情報の特定領域における全ての要素の総和値を計算する加減算工程とを備え、前記所定ビットのサイズは、前記複数次元配列の入力情報の全ての要素が最大値を取るときに、当該入力情報の最終の要素位置に対応する累積情報値をオーバーフローせずに格納するのに必要なサイズよりも小さく、前記特定領域における全ての要素が当該所定ビットのサイズにおける最大値をとるときの総和値をオーバーフローせずに格納するのに必要なサイズ以上であり、前記保持工程では、前記計算工程において計算された累積情報値が前記サイズに対してオーバーフローを生じた場合、当該計算された累積情報値の前記所定ビット以下の部分を、前記累積情報値として保持し、前記加減算工程では、前記加減算の計算結果に前記所定ビットでアンダーフローまたはオーバーフローが生じた場合は、当該計算結果を前記所定ビットのサイズを乗数とする2のべき乗で除した余りを前記加減算の結果として出力することを特徴とする。
また、本発明の他の態様によれば、情報処理装置に、複数次元配列の入力情報を入力する入力手段と、前記入力情報の各要素の位置に対応する累積情報値を計算する計算手段と、前記累積情報値を所定ビットのサイズで保持する保持手段と、前記保持手段に保持された複数の前記累積情報値の間で加減算を行うことで、当該複数の累積情報値の要素の位置で示される前記入力情報の特定領域における全ての要素の総和値を計算する加減算手段とを備え、前記所定ビットのサイズは、前記複数次元配列の入力情報の全ての要素が最大値を取るときに、当該入力情報の最終の要素位置に対応する累積情報値をオーバーフローせずに格納するのに必要なサイズよりも小さく、前記特定領域における全ての要素が当該所定ビットのサイズにおける最大値をとるときの総和値をオーバーフローせずに格納するのに必要なサイズ以上であり、前記保持手段は、前記計算手段により計算された累積情報値が前記所定ビットに対してオーバーフローを生じた場合、当該計算された累積情報値の前記所定ビット以下の部分を、前記累積情報値として保持し、前記加減算手段は、前記加減算の計算結果に前記所定ビットでアンダーフローまたはオーバーフローが生じた場合は、当該計算結果を前記所定ビットのサイズを乗数とする2のべき乗で除した余りを前記加減算の結果として出力することを特徴とする。
本発明によれば、複数次元配列の入力情報の特定領域の要素の総和値を求めるための、処理負荷やバッファ容量を低減することができる。また、本発明に係る装置をハードウェアで構成する場合、小さな回路規模で高速な処理を実現することが可能となる。
以下、添付図面を参照しながら、本発明の実施形態を説明する。
尚、本実施形態においては、上述したSummed-area tableあるいはIntegral Imageのような、2次元以上の複数次元配列の入力情報に基づき累積加算演算により生成される同次元の配列情報を、単に累積情報と呼ぶことにする。特に入力情報が2次元配列の画像情報である場合には、累積画像情報と呼ぶ。尚、本実施形態において、入力情報の各要素は正の整数(または固定小数点の数)として表される。
(第1の実施の形態)
図1は本発明の一実施形態である情報処理装置の構成を示すブロック図である。
CPU101は、バス105を介して接続される各部を制御し、情報処理装置が目的とする所望の処理を実現する。情報入力部102は、複数次元の入力情報を入力するものであり、例えば処理対象となる入力画像データを装置内に取り込む。情報入力部102は、例えばCCDなどの画像センサによって構成されても良いし、ネットワーク等所定の通信経路を介して外部装置から処理したいデータを受信するI/F装置であってもよい。外部メモリ104はバス105に接続され、ROMやRAMあるいはHDD等のストレージ装置で構成されている。外部メモリ104は、CPU101が動作するためのプログラムコードを記憶したり、各種処理を行う上での作業領域として用いられる。また、必要に応じて、入力情報を保持するための領域としても用いられる。
DMAコントローラ103は、CPU101から設定されて動作が指令されることにより、情報入力部102、外部メモリ104、後述の累積情報処理部100間の所定サイズのデータ転送を、自立的に連続して行うことが可能である。指令された転送動作が完了すると、バス105を介して割り込み信号をCPU101に通知する。
累積情報処理部100は、バス105に接続するためのI/F110、累積情報生成部111、累積情報利用演算部112、累積情報保持部113により構成されている。累積情報保持部113は、累積情報を保持するためのビット精度Nbufの専用メモリと、専用バッファメモリへの入出力を制御するメモリコントローラにより構成される。ビット精度Nbufについては後述する。
累積情報生成部111は、情報入力部102より入力された画像データ等の処理対象情報の累積情報を生成し、累積情報保持部113へと格納する。累積情報利用演算部112は、CPU101からの要求に従って累積情報保持部113に保持されている累積情報を用いた演算処理を行い、結果をCPU101に返す。ここで累積情報とは、入力情報が二次元画像データである場合には、非特許文献1あるいは2のIntegral image(or Summed-area table)に相当する累積画像情報となる。同様の累積情報は、3次元以上の多次元であっても生成可能である(後述)。
(後段処理を含んだ処理の流れ)
次に図1の情報処理装置における、後段処理まで含んだ全体の処理の流れについて説明する。図11は全体処理フローを示すフローチャートである。
本実施形態の情報処理装置は、ユーザの操作や不図示の外部装置からの処理開始トリガによって、まず情報入力処理ステップS1101を実行する。この処理では、情報入力部102より入力情報を受信し、必要に応じて外部メモリ104に蓄積する。本実施形態では、入力情報を所定サイズの二次元配列として表される画像データであるものとして説明するが、本発明の本質によれば、三次元以上の多次元配列情報が入力情報であってもかまわない。
外部メモリ104に蓄積された入力情報を用い、ステップS1102おいて累積情報生成処理を行う。この処理は後に詳述するが、累積情報保持部113に入力情報に基づく累積情報を生成する処理を行うものである。CPU101はDMAC103を設定し、外部メモリ104から累積情報処理部100への、入力情報要素値の逐次転送を行わせる。
また、本装置における後段処理等で、入力情報がそのまま利用されない場合には、ステップS1101とS1102との処理を並列に実行するような構成とすることも可能である。すなわち、1ライン入力される毎にステップS1101とS1102を繰り返すようにするか、あるいは1要素入力単位でパイプライン的に連続処理させることもできる。このときCPU101はDMAC103に対し、情報入力部102から累積情報処理部100へ、入力情報の各要素を逐次自動転送するように設定するようにすることもできる。
累積情報保持部113に累積情報が生成されると、次にステップS1103としてメイン処理を行う。本実施形態の情報処理装置では、メイン処理として、図10で説明したパターン識別処理を行っているが、累積情報を用いる他の処理適用することももちろん可能である。図10のパターン識別処理においては、先に説明したとおりステップS1003の判定処理において、各弱判別器で所定のHaar-like特徴を検出するため、各矩形領域内要素の総和値を得る必要がある。CPU101は、累積情報利用演算部112を動作させて、この総和値を高速に得ることが可能である。累積情報利用演算部112の動作については、後ほど詳しく説明する。尚、本明細書で述べている後段処理とは、累積情報を用いるメイン処理S1103以降の処理を指している。
パターン識別処理等のメイン処理S1103が完了し後、所望の後処理としてステップS1104を行う。これは、例えば外部装置やユーザ等に処理結果等を通知する処理であったり、認識結果を利用して行う諸々の処理である。
(累積情報生成部の説明)
次に、累積情報生成部111の構成と動作について説明する。図2は累積情報生成部111の構成と、バスI/F110および累積情報保持部113との接続の様子を示すブロック図である。
入力情報サイズ記憶レジスタ201は、情報入力部102より入力される複数次元配列情報のサイズを記憶するレジスタであって、バスI/F110を介してCPU101により、処理開始前に値が設定される。入力値保持レジスタ203は、バスI/Fを介してCPU101もしくはDMAC103の制御により入力される入力配列情報の1要素値を、順に一時保持する。
アドレスカウンタ202は、入力情報サイズ記憶レジスタ201に記憶されている入力配列情報のサイズに基づき、入力値保持レジスタ203に要素値が入力される毎に、対応して生成する累積情報値を格納すべき累積情報保持部113のメモリアドレスを計算する。入力情報の最初の画素(原点位置)が入力されると、格納すべきアドレスは0または所定のオフセット値にリセットされ、以後画像の終端画素の入力まで、格納先アドレスを1ずつインクリメントする。
また、アドレスカウンタ202は、入力情報サイズ記憶レジスタ201に記憶されている入力配列情報のサイズを参照し、入力要素値が2ライン目以降のものになったとき、1ライン前の同列位置の累積情報が格納されている前ライン累積情報アドレスを計算する。これは先に算出した格納先アドレスから、1ラインの要素列中の要素個数を引くことにより得られる。本実施形態のように二次元である場合には、この減算結果が負(もしくはオフセットより小)であれば、まだ1ライン目の要素値を投入中であるということが判別できる。
アドレスカウンタ202が計算したアドレスは、メモリコントローラ113-2に与えられ、累積情報保持メモリ113-1の当該アドレスへの書き込みまたは読み出しが成される。
前ライン累積情報アドレスにより参照された前ライン累積値は、前ライン累積値参照レジスタ205に一時保持される。但し、現在の入力画素が1ライン目である場合には、このレジスタには0がセットされる。
現ライン累積値保持レジスタ204は、現在投入中の1ラインのみについて、先頭要素(原点)からの累積加算情報を保持するレジスタである。入力要素値保持レジスタ203に要素が投入された時点では、その前回までの要素の累積加算値が保持された状態となっている。この値は投入中の1ラインについてのみ保持するものであるので、投入ラインが変わった時点で0にリセットされる。
累積加算処理部206は、2つの加算器により構成されている。加算器206-1、206-2は、どちらも入出力共にビット精度Nbufの正の整数である。
累積情報の生成動作は、次のようになる。まず、バスI/F110を介して、CPU101から入力情報サイズ記憶レジスタ201に、これから入力する配列情報の各次元方向サイズがセットされる。そして、CPU101あるいはDMAC103の転送機能により、情報入力部102から入力された配列情報の、1番目の要素が入力要素値保持レジスタへと入力される。このとき同時に、アドレスカウンタが0または所定のオフセット値にリセットされる。同時に、1ライン目の要素投入であるので前ライン累積値参照レジスタ205も0にセットされ、1ラインの先頭要素であるから現ライン累積値保持レジスタ204も0にリセットされる。
次に累積加算処理部206の加算器206-1において、現ライン累積値と入力要素値の加算が行われる。加算された結果は、現ライン累積値保持レジスタ204へフィードバック格納されるので、次の要素値投入時に使用できる。そして、この加算値は加算器206-2に入力され、前ライン累積値参照レジスタ205に保持されている前ライン累積値に加算される。この加算結果が当該入力要素位置に対応する累積情報値となり、メモリコントローラ113-2を介して、累積情報保持メモリの先に述べたアドレスカウンタ202で計算された格納アドレスに格納される。以後、続く配列要素値投入毎に同様の処理を繰り返してゆくと、2ライン目以降の処理では、投入された入力配列要素値に現ライン累積値と前ラインの同じ位置の累積情報値が加算され、入力情報に対応する累積情報が生成できる。
(累積情報利用演算部の説明)
次に、ステップS1103のメイン処理で用いられる累積情報利用演算部112の構成と動作について説明する。本実施形態では、累積情報を利用した演算結果を用いる後段処理として、図8〜10で説明したパターン識別処理を行っている。従って必要とする演算結果は、処理ウィンドウ801内に相対的に配置される、Haar-like特徴を検出する弱判別器の各矩形内要素の総和値である。入力画像の任意の矩形領域内要素の総和値は、図5で説明したように累積画像情報の4点の要素値を参照することで計算することができる。
図3は、累積情報利用演算部112と、バスI/F110および累積情報保持部113との接続の構成を示すブロック図である。201は入力情報サイズ記憶レジスタであって、図2で説明したのと同一のものであり、先に説明したように、累積情報生成前にCPU101によりバスI/F110を介して予め入力情報のサイズが設定されている。
CPU101はまず処理ウィンドウ内における総和値を求める矩形領域を特定する。そしてこの矩形領域を表す処理ウィンドウ内の2点の対角座標(相対座標)を、入力情報の原点からの絶対座標、すなわち図5における(x0, y0),(x1, y1)に変換する。そして、バスI/F110を介して領域指定レジスタ301にこの絶対座標値を設定する。
バスI/F110を介してCPU101から演算開始のトリガが掛かると、参照アドレス計算部302は、領域指定レジスタ301に設定されている値を参照し、図5におけるA,B,C,Dの4点の位置の値を格納しているアドレスを計算する。そしてこのアドレス値を順にメモリコントローラ1113-2に渡す。
メモリコントローラ113-2は、送られてくるアドレスに基づき累積情報保持メモリ113-1にアクセスし、順次取得した4点の累積情報値を参照値一時保持レジスタ303に設定する。
参照値一時保持レジスタ303に4点の値が保持されると、加減算処理部304は4点の値を用いた所定の加減算処理を実行する。ここで所定の加減算処理とは、式(2)に示した演算を行うものである。この演算結果は、演算結果保持レジスタ305に保持される。CPU101は演算完了を、バスI/F110を介して割り込み通知や完了フラグの参照等によって知ることができる。そして演算結果保持レジスタ305の値を取得し、設定した矩形領域の総和値として使用する。
尚、加減算処理部304で用いられている加減算器は、全てNbufビットの正の値を入出力とするものである。
(非特許文献1の記述に基づくビット削減方法)
ここで、非特許文献1に述べられている、ブロック分割して生成した累積情報を保持することにより、バッファのビット精度を削減する方法について詳細に説明する。尚、先に述べたとおり非特許文献1に明記されている演算のみでは、元の分割されない累積情報値を復元するには不十分であるので、以下にはこの点に改良を加えた方法について図6を用いて説明する。
図6(a)は、このブロック分割による累積情報の保持方法の一例を説明する図である。画像600は、Ximg×Yimg画素の大きさの入力画像をXsub×Ysub画素のブロックに分割し、夫々のブロック毎に左上端の画素を原点として累積画像情報を生成した様子を示す。各ブロックの累積画像情報をサブ累積情報と呼んでCsub(j,k)と表し、夫々のブロックにおいて左上端の画素を原点(0, 0) としたときの位置(Xsub, Ysub)の値(サブ累積情報値)をCsub(j,k)(Xsub, Ysub)と表す。但し、jは横方向のブロック位置、kは縦方向のブロック位置(共に0スタートの整数値)を表す。また、0≦xsub<Xsub, 0≦ysub<Ysub である。このとき、各Csub(j,k)(Xsub, Ysub)の最悪値Cmax_subは、
max_sub=ImaxXsubYsub (4)
となって、これを格納可能なビット精度Nbuf_subがCsub(j,k)を格納するために必要なバッファに要求されるビット精度となる。(Imaxは、ビット精度Nimgの入力情報値として取り得る最大値すなわち
Figure 0005058681
である。)
そして別途、各ブロックCsub(j,k)毎に、夫々の右下端位置における従来の全域で演算した累積情報値Rsub(j,k)(代表累積情報値と呼ぶ)601を記憶するバッファRsub602を用意する。すなわち、式(1)と対応付けると、
sub(j,k)=C(Xsub(j+1)-1, Ysub(k+1)-1) (5)
である。Rsub(j,k)のビット精度は従来の累積情報であるのでNbuf_maxである。また、
Jmax=(Ximg-1)/Xsub, Kmax=(Yimg-1)/Ysub (6)
とすると、Rsubの要素数はブロック数に等しいので(Jmax+1)(Kmax+1)で表される。(但し、式中の/は整数除算であり、余りは切り捨てる。)
さて、全てのブロックのサブ累積情報Csub(j,k)一式と、代表累積情報Rsubが記憶されているとする。このとき、例えば図6(a)に示す点Xの位置に対応する従来の累積画像情報値C(x, y)を復元するには、位置610の代表累積情報値にサブ累積情報値611の値を加えるだけでは不十分で、位置612-1〜5に示すサブ累積情報値も加算する必要がある。従って、
xsub=mod(x,Xsub), ysub=mod(x,Ysub) (7)
j=x/Xsub, k=y/Ysub
として
Figure 0005058681
なる計算を行えば、所望の位置Xの従来の累積情報値を再現することができる。(但し、mod(a, b)は整数除算a/bを行った際の剰余である。またj=0もしくはk=0のとき、Rsub(j-1,k-1)=0とする。)
4点それぞれの値をこのようにして求めたら、通常の累積画像情報と同様に式(2)の計算を行うことで、矩形領域の総和値を求めることができる。
このような累積情報の保持方法にすると、例えば上述した条件すなわち、Nimg=8, Ximg=640, Yimg=480の入力画像に対し、Xsub=Ysub=16とすると、Cmax_sub=ImaxXsubYsub=65280=FF00hであるので、Nbuf_sub=16bitとなる。生成する累積情報を一時に全て保持するとしても、用意すべきバッファ容量トータルは、Nbuf_sub×Ximg×Yimg+Nbuf_sub×Jmax×kmax=4947600bitとなる。つまり、従来のC(x, y)の値全てを保持する場合に比べ、大幅にバッファ容量が削減できていることがわかる。
しかしながら、このようなブロック分割によるバッファ容量削減方法には、以下に述べる問題点がある。すなわち、従来は、4点の値を参照するだけで、後は式(2)による簡単な加減演算のみを行えば、所望の矩形領域の総和値を求めることができたのに対し、この方法では4点それぞれに対し、さらに値復元のための式(7),(8)の演算を行わなければならない。つまり、所望の結果を得るための演算負荷が大幅に増大する。
特に(7)のような演算に必要な除算器の実装は、ハードウェアによる処理を実現する際に、回路規模を大幅に増大させる。また、(2)の演算を行うための加減算器は従来の累積情報値を用いるので、バッファのビット精度が削減されているにもかかわらず、従来と同じビット精度Nbuf_maxの入力が必要である。これは通常、求める一部領域の総和値を格納するのに必要なビット精度より大きいので、やはり回路規模増大の要因と成り得る。
さらに、処理速度を上げるため並列演算処理を行う場合には、これら増大した回路が並列度倍で効いてくるため、より切実な問題となるし、動作クロックやパイプライン段数にも影響する。ソフトウェアにより処理を行う場合であっても、復元演算に相当する処理負荷が増えることになるため、実行速度が大幅に低下するのは言うまでも無い。
従って、本実施形態においては、ブロック分割しない以下に説明する方法を実施している。
(ビット精度と生成されるオーバーフロー累積情報)
ここで、ビット精度Nbufが、先に説明したような入力配列要素全てが最大値であるときの最悪累積値Cmaxを格納可能なビット精度Nbuf_maxであるとする。このとき、生成される累積情報は図4(b)に示す従来の累積情報となり、入力情報が二次元配列である場合には、右下方向に向かって値が単調増加してゆく。しかしながら、累積情報を保持するバッファをNbuf<Nbuf_maxなるビット精度(所定ビット)とすると、入力情報の値に依存して、図7に示すように右下に向かってある地点でオーバーフローを起こし小さい値に戻る。これを繰り返し、元の累積情報の所定ビット以下の部分に相当する累積情報が生成される。このような累積情報を、オーバーフロー累積情報と呼ぶことにする。
尚、図7ではこのオーバーフローの位置を等高線的に示しているが、一般的に右下位置に進むにつれ累積される値が蓄積するのでオーバーフローする頻度は多くなり、等高線が詰まった状態となる。つまり、同一の大きさのエリア内(例えば処理ウィンドウ内)であっても、オーバーフローの起こる頻度は右下の位置ほど多くなる。
本実施形態の情報処理装置では、このようなオーバーフロー累積情報を生成するビット精度Nbufの累積情報生成部111と累積情報保持部113を用いている。また、図3で説明したの加減算処理部304で用いられている加減算器も、先に説明したようにNbufビットの正の値を入出力とするものであるので、参照する4点の値によっては、オーバーフローやアンダーフローを起こす可能性がある。
累積情報保持部113は、先に説明したとおり累積情報保持メモリ113-1とメモリコントローラ113-2により構成されている。累積情報保持メモリ113-1は、各アドレスにNbufビットの値を保持可能なメモリであるが、メモリコントローラ113-2を工夫することにより、8bitや32bit単位の汎用的なRAMを用いることも可能である。この際、メモリコントローラ113-1においてアドレスとビットの対応付けを行い、Nbufとの差である端数ビットを別のアドレス値として割り当てれば、パッキングを行って必要最小限のRAM容量とすることができる。
図7のようなビット精度Nbufのオーバーフロー累積情報用い、Nbufビット加減算器を用いて加減算処理を行ったとしても、後段処理に演算結果値を用いる際に問題の無いこと、及び問題の無い最低限必要なビット精度の定め方については、次に説明する。
(オーバーフロー累積情報の原理とビット精度の決定要件)
本実施形態においては、以下に示すNbuf=Novとしてオーバーフロー累積情報を生成している。図5は、オーバーフロー累積情報であっても、正しく矩形領域内要素の総和値が求められる原理を説明するための図である。尚、図5は先の従来技術の説明(式(2))においては、通常の累積情報すなわち図4(b)に相当するものとしたが、ここではオーバーフロー累積情報すなわち図6に相当するものに置き換えて説明する。元の入力画像(図4(a))における特定領域の要素値の総和を得るという点では、利用目的は同等である。
図5において、点(x0-1, y0-1), (x1, y0-1), (x0-1, y1), (x1, y1)それぞれの位置の要素値(オーバーフロー累積値)を、A,B,C,Dとする。今、累積情報保持部の専用バッファメモリのビット精度をNovとし、X=2Novとする。ここで演算mod(S',T)はS'をTで割った余りと定義し、これをSと記す。但し、Tは正の整数であり、S'は正負共にあり得る整数である。また、S'が負である場合は、0以上の値になるまでTを足したものをmod(S',T)の演算結果Sとする。従ってSは非負整数である。
ここでS'を、複数の正の整数の加減算またはその組み合わせによる演算結果とする。そして、用いる加減算器を全てNovビット正整数入力・Novビット正整数出力のものにすれば、得られる出力はXを超えるものはオーバーフローし、0より小なるものはアンダーフローする。このため、結果はS=mod(S',X)に等しくなる。つまり真の加減算演算結果S'がX以上であれば、Xで割った余りとなり、S'が負値ならば正になるまでXが足された値となって、結果、常に0≦S<Xなる値Sが得られる。
図5における各オーバーフロー累積値A,B,C,Dは、バッファのビット精度をNovとすれば、
A=mod(A',X)
B=mod(B',X)
C=mod(C',X)
D=mod(D',X) (9)
と表すことができる。但し、A',B',C',D'は通常のオーバーフローの無い従来の累積情報の場合の同位置の値であって、正の整数であり、式(2)の記述によれば、
A'=C(x0-1, y0-1)
B'=C(x1, y0-1)
C'=C(x0-1, y1)
D'=C(x1, y1) (10)
である。本実施形態では、図2に示した累積加算処理部206で、バッファのビット精度に合わせたNovビット正整数入出力の加算器を用いる。従って、オーバーフロー累積情報を生成するに当って、別途式(9)に相当する演算を行う必要はなく、結果的に成されていることになる。
さて、(x0, y0)と(x1, y1)とを対角とする矩形領域内の総和値をC(x0, y0;x1, y1)=S'とすると、式(2),(10)より、
S'= C(x0-1, y0-1)−C(x0-1, y1)−C(x1, y0-1)+C(x1, y1)
=A'−B'−C'+D' (11)
が求めたい値である。ここで、A',B',C',D'を
A'=A”X+A
B'=B”X+B
C'=C”X+C
D'=D”X+D (12)
として表す。このときA”,B”,C”,D”はそれぞれ、A',B',C',D'をXで割った商である。
さて、式(11)と全く同様の加減算処理を、A',B',C',D'の代わりにA,B,C,Dをそのまま用いて行うことを考えてみる。但し、用いる加減算器はここでも全てNovビット正整数入出力のものとする。(つまり本実施形態では、加減算処理部304もNovビット正整数入出力の加減算器で構成される。)このとき演算結果Sは、加減算器のビット制限により(A−B−C+D)がXより大きければオーバーフローし、0より小さければアンダーフローするので0≦S<Xとなる。すなわち先に述べたmod演算の定義より、
S=mod{(A−C−B+D),X} (13)
となる。これに式(12)を代入してを変形すると、
S=mod{(A−C−B+D),X}
=mod[{(A'−C'−B'+D')−(A”−C”−B”+D”)X},X]
=mod{(A'−C'−B'+D'),X}
=mod(S',X) (14)
つまり、ここでもし0≦S'<Xが保証できるならば、S=S'となることが分かる。
S'はそもそもの定義より、正の整数(または固定小数点の数)の各要素値を持つ入力情報の特定矩形領域内の総和値であるので、0以上であることは保証されている。従って、0≦S<X=2Novを保証できるNovを選び、これをバッファのビット精度Nbufとすれば、S=S'が保証できることになる。
これはすなわち、後段の処理に必要とされる特定矩形領域の大きさに応じて、Novを定めれば良いことを示している。後段処理で使用する最大矩形領域のサイズをXrect_max,Yrect_maxとすると、矩形内総和値の最悪値は
rect_max=Irect_maxXrect_maxYrect_max (15)
となるので、Crect_maxをオーバーフローせず格納するために必要なサイズ以上にNovを定めれば良い。
一例として、課題の項において従来技術の説明で例示したのと同条件で考えてみる。すなわちNimg=8, Ximg=640, Yimg=480の入力画像とする。ここで後段処理に用いる最大矩形領域サイズを、例えばXrect_max=Yrect_max=16とすると、
rect_max=Irect_maxXrect_maxYrect_max=65280=FF00h(Cmax_subと同値)となるので、Nov=16bit(上述したブロック分割時のNbuf_subと同値)となる。入力画像全域に対し生成した累積情報を全て一時に保持するとしても、用意すべきバッファ容量は、Nov×Ximg×Yimg=4915200bitとなる。つまりこの条件では、上述したブロック分割+代表累積情報値を保持する方法よりも、さらに低減できることが分かる。
もちろん本実施形態の方法は、使用する最大矩形領域が大きくなるとNovのビット数が増加するため、条件によっては、常に上述のブロック分割による方法よりもバッファ容量が少なくなるとは限らない。しかし、ここまで説明してきたとおり、用いる演算器はビット精度Nbuf=Novの加減算器のみの極めてシンプルな構成である。
すでに述べたように、上述のブロック分割による方法では、復元演算のための除算器やビット精度Nbuf_max>Novの加減算器・レジスタ等、複雑な付加演算(回路)を必要とする。対して本実施形態の方法は、従来の非分割の累積情報と演算回数は全く同じであり、さらに演算器のビット精度を削減できる。回路の段数が減ることから、よりクロックアップできる可能性もある。つまり、バッファ容量削減だけでなく、処理速度高速化や回路規模削減に対しても大きな利点がある。
Novの上限は、回路規模やバッファ容量に余裕があるならばいくらでも良く、Nbuf_maxにすれば、従来のオーバーフロー無しの累積情報を生成することになる。しかし、それ以上にするのは、有効に使われないビットが増えるだけで意味が無い。Nbuf_maxよりも小さくすれば、入力画像の値に応じて上述したオーバーフロー累積情報になる可能性がある。しかし上述の通り、Novが後段の処理に必要とされる特定矩形領域の大きさに基づいて定めた下限Nov_min以上であれば、オーバーフロー累積情報となっても全く問題はない。
通常はNov=Nov_minとするのがもっとも有利であるが、同回路で将来的に別の処理を行わせる可能性がある場合等は、回路規模や処理時間の許す限りNovを大きくしておけば、より多くの処理に対応できる可能性が広がる。
(ビット精度の決定方法:矩形基準と処理ウィンドウ基準)
ここで、本発明の原理に基づくビット精度Novの下限Nov_minの定める方法の例を2通り説明する。後段処理の例として、従来技術の非特許文献2と同様のパターン認識処理を行うものとする。
第一の方法としては、図9において、学習の結果得られた各弱判別器は、複数の矩形領域を組み合わせたフィルタにより構成されている。これらを正負(白黒)の区別なく、全てチェックし、最大サイズ(含む要素数のもっとも多い)の領域のものを選ぶ。そしてこの最大矩形領域に基づき、Nov_minを定めるというものである。この方法は、当該パターン認識処理を行うに当って、最も効率の良いNov_minを決定することを可能とする。しかしながら、認識条件が変わるなどして学習し直す必要が生じた場合、学習後に生成されたフィルタがより大きな矩形領域を使用するものとなって条件に合わなくなる可能性がある。
これに対し、第二の方法として、図8で説明した処理ウィンドウ801の大きさを最大矩形領域と見なし、同様にNov_minを定める方法がある。このようにすれば、第一の方法より若干効率が悪くなる可能性が高いが、処理ウィンドウサイズが変わらない限り、学習し直しにもそのまま対応可能な回路が構成できる。
(第2の実施形態)
第1の実施形態では、累積情報保持部113に入力情報全領域に対応するオーバーフロー累積情報を保持する例について説明したが、本発明はこれに限るわけではない。
図12は、累積情報保持部113の累積情報保持メモリ113-1を、バンドバッファとして利用する際に一時に保持されるオーバーフロー累積情報の領域を示している。領域1200は、図7で説明したオーバーフロー累積情報の全域である。このオーバーフロー累積情報全域1200に対し、領域1202は一時に保持する所定高さのバンド領域を示している。
バンド領域1202の高さは、後段処理の処理ウィンドウ1201の高さと等しく定められており、幅は入力情報に等しい。尚、本実施形態における後段処理は、図10および図11のメイン処理以降として説明した、第1の実施形態のものと同等のものである。但し、ステップS1103として示したメイン処理に相当する処理は、バンド領域単位で行われる。1バンド位置におけるメイン処理が完了すると、保持するオーバーフロー累積情報が1ライン下方にスライドし、スライド後の領域を論理的に連続する領域として、当該バンド位置で左端の処理ウィンドウからメイン処理を行う。
領域1202は処理開始時最初に保持されるバンド領域を示し、領域1203は1ライン下方に保持されるバンド領域が移動した様子を示している。本実施形態におけるバンドバッファは、ライン単位のリングバッファとして構成しているので、新たな1ラインを生成する際には、最も古い1ラインを破棄してこの領域に新たなラインを保持する。従って、オーバーフロー累積情報の所望の位置が、現在のバッファ中のどのアドレスに相当するかを換算する必要はあるが、全域を一度に保持するときに比べて処理のオーバーヘッドはほとんど無い。
図13は、バンドバッファによるオーバーフロー累積情報を保持した際の、全体の処理の流れを示すフローチャートであり、実施形態1における図11に相当する。
ステップS1301はステップS1101と同等の情報入力処理である。尚、実施形態1と同様にステップS1301も、後述するステップS1302やS1305と並列に行うように実装してももちろん構わない。
ステップS1302は累積情報生成処理であるが、ステップS1101と異なりバンド領域1202の先頭バンド位置のみの累積情報を生成する処理である。尚、CPU101やDMAC103、累積情報処理部100の動作は、範囲が異なるだけで実施形態1と同様の動作である。
S1302により、累積情報保持部113におけるバンドバッファが、領域1202に示す位置(原点位置)の累積情報を保持すると、S1103に相当するメイン処理S1303を行う。本実施形態においても、この処理は図10で説明したパターン認識処理を実施している。
まず、処理ウィンドウ1201が図12のようにバンドの先頭位置にあるときに、図10のステップS1002〜S1008として説明した所定の処理を行う。そして次にS1001に相当する処理として、処理ウィンドウ1201の位置を先頭から右に1画素ずらした位置に移動させ、再び所定の処理を行う。以後、処理ウィンドウ1201がバンド領域1202の右端に達するまで、実施形態1と同様に所定の処理を繰り返す。つまり、本実施形態においては、ステップS1001はバンドの左端位置から1画素ずつ右に処理ウィンドウ1201を移動させる処理であって、S1007のスキャン終了とは1バンドの右端までの処理終了を検知する処理である。
1バンド分のメイン処理ステップS1303が完了すると、現在処理していたバンドが入力情報の最終ラインを含む位置であったかどうかを、ステップS1304として判別する。
最終ライン位置でなければステップS1305に進み、次の1ライン分の累積情報を生成して保持する。このとき前ライン分の累積情報はすでに累積情報保持メモリ113-1のバンドバッファ上に存在しているので、実施形態1で説明した生成方法と全く同様に1ライン分の累積情報を生成できる。すなわちこの演算において、バンドバッファにしたことによるオーバーヘッドは生じない。
次ライン生成・保持後は、累積情報のバンド位置が領域1203に移った状態となり、再びS1303のメイン処理を実行する。以後、S1304において最終ラインと判別されるまで、1ラインずつバンドを下方に移動させつつ、同様に処理を繰り返す。
ステップS1304で最終ラインに到達したことが判別されると、ステップS1104と同様の後処理S1306を行って処理完了となる。
本実施形態によると、実施形態1に比べ、ほとんどの演算オーバーヘッド無しに、累積情報保持メモリ113-1のメモリ容量を大幅に削減することが可能となる。尚、バンドバッファで保持する際であっても、ビット精度Nbufは、実施形態1で説明したNovで良いことは、後段の加減算演算処理が同等の処理であることから自明である。もちろんバンドバッファ内で何度オーバーフローしていてもかまわない。
実施形態1と同様にNimg=8, Ximg=640, Yimg=480で、処理ウィンドウサイズが16×16画素(つまりXrect_max=Yrect_max=16)である場合を考えてみる。一時に保持する必要のあるサイズは1バンド分であるので、最低限用意すべきバッファ容量は、Nov×Ximg×Yimg=16×640×16=163840bitとなって、実施形態1に比べ大幅に削減できることが分かる。
また、バンドの高さを実際に用いる矩形領域の最大サイズに基づいて定めることももちろん可能であり、さらにバッファ容量を削減できる可能性がある。但し、この場合は、処理ウィンドウ単位の処理ではなく、フィルタ種別単位の処理にするなど、後段処理を変更する必要がある。また、後段処理を変更したことによるオーバーヘッドが生ずる可能性もある。
(実施形態3)
更にバッファ容量を削減する方法として、ブロックバッファでオーバーフロー累積情報を保持するようにすることもできる。
図14は、累積情報全域に対し、一時に保持されるブロックバッファの様子を示す図である。1400は現在処理中のバンド位置を示す破線であって、図14では先頭バンド位置を示している。1401は現在ブロックバッファに保持している累積情報の領域を示し、図14では開始位置(原点位置)にあることを示している。これは現在の処理ウィンドウの位置と一致する。1402は処理ウィンドウが右に1画素分ずれた領域を示し、この領域を処理する際にはブロックバッファには同領域の累積情報が保持されることになる。
本実施形態において、ブロックバッファは縦方向線分単位のリングバッファとして構成される。ここで縦方向線分とは、処理ウィンドウ高さに一致する長さの線分である。ブロックバッファに保持される累積情報が、1401から1402の位置に移る際、縦方向線分1403の累積情報が記憶されている領域が破棄されて、同領域に新たに計算される縦方向線分1404の領域の累積情報が保持される。これを処理バンドの右端位置まで順次繰り返す。
図16は、ブロックバッファでオーバーフロー累積情報を保持する際の全体の処理の流れを示すフローチャートである。
ステップS1601は図11におけるS1101と同様の情報入力処理である。尚、ステップS1601は実施形態1と同様、後段の処理で入力情報を直接使うことが無ければ、後述するステップS1602、S1605、S1608と同時に行うようにすることも、もちろん可能である。
ステップS1602では、先頭バンド位置における先頭ブロックの累積情報を生成・記憶する。すなわち、まず図14における1401の位置の累積情報を生成する。ここで、本実施形態におけるブロックバッファは、処理ウィンドウサイズのバッファを2つ用意したダブルバッファ構造となっている。図17(a),(b)は2つのバッファを表している。生成された1401領域のブロック単位の累積情報は、図17の(a)の領域に保持される。そして同時に、(a)の上線分を1行分を除いた破点部1701の領域の累積情報と同じ値が、(b)の破点部1702に示す領域に記憶される。この理由については後述する。
また、図17のダブルバッファとは別に、図14の1405に相当する領域、すなわち現在の処理バンドにおける先頭1ライン分(先頭ブロック分を除く)の記憶領域を用意しておく必要がある。この領域を先頭列方向累積値バッファと呼ぶ。S1602の処理完了時点で、先頭列方向累積値バッファは全て0にセットされる。
次にステップS1603のメイン処理を行う。この処理は図10に示した処理とほぼ同等であるが、ここでは1箇所の処理ウィンドウ分の処理のみを行えばよいので、ステップS1001とS1007は除かれる。
一つの処理ウィンドウ分すなわち1ブロックに対するメイン処理が終わると、処理したブロックの位置が、現在の処理バンド(1400)の最終ブロックすなわち右端であったかどうかを判定する。
最終ブロックでなければ、次のステップS1605としてブロックの右端に隣接する線分領域1404の累積情報を生成し、線分領域1403の累積情報を保持していたバッファ領域に保持する。この線分1404の位置に対応する累積情報は、同領域の入力情報と、ブロックバッファ内に現在保持されている累積情報値、および先頭列方向累積値バッファに保持されている値から計算可能である。すなわち線分の各画素について、線分と同じ列の先頭列方向累積値バッファの値に、同線分内の上から当該画素までの和を加え、更にすでにブロックバッファに保持されている当該画素のすぐ左の累積情報値を加算すれば良い。
ここで、線分1404に対応する累積情報が一式、ブロックバッファに格納された後、先頭列方向累積値バッファの同列の位置に、すでに格納されている値に線分1404の一番上の画素を加えた値を格納し直す。つまり、先頭列方向累積値バッファとは、各列別に、入力情報の開始ラインの画素から累積情報を生成した線分の上端画素まで累積した縦方向累積値を保持するバッファとなっている。この値を保持することによって、処理バンド位置が下方に向かうのに同期して、各位置に対応する累積情報値が計算できる。これは、実施形態1や実施形態2のオーバーフロー累積情報で、ある位置の累積情報値を計算するのに、同列のすぐ上のラインの累積情報値に行方向のみの累積値を加算したのと同様である。つまり本実施形態では、行方向累積値の代わりに列方向累積値を用いるので、前ライン累積情報ちの代わりに前列累積情報値をそのまま用いることができるのである。例えば1407の位置から始まる縦線分を計算するためには、当該位置の画素値とすぐ左の前列累積情報値に、同じ列の1406の位置までの縦方向累積値を加算すれば良い。以後、1ライン毎の処理バンドの進行に合わせて、先頭列方向累積値バッファの値を更新していく。
次線分累積情報を生成し、処理ウィンドウを右へ1画素ずらしたら、当該領域に対しステップS1603に戻ってメイン処理を実行する。以後、ステップS1604にて、処理ウィンドウが現在の処理バンドの右端ブロックまで達したと判定されるまで、同様に繰り返す。
処理バンド位置において最終ブロック位置(右端)までの処理が完了したら、次にステップS1606にて全入力情報の最終ライン位置まで処理完了したかどうかを判定する。処理バンド位置が最終ライン位置に到達していなければ、ステップS1607として処理バンド位置を1ライン下方に設定し直す。
そして、ステップS1608において、新たに設定した処理バンド位置の左端先頭ブロックの累積情報の生成・記憶処理を行う。この処理においては、前処理バンド位置で用いたダブルバッファの一方とは別のブロックバッファを用いる。前処理バンドにおいて図17(a)のブロックバッファを用いていたとすると、今回の処理バンドにおいては(b)のブロックバッファを用いることになる。このとき領域1702には、(a)が前処理バンド位置の先頭にあったときの領域1701に相当する累積情報と、同じ値がすでに格納されている。(もちろん(a)はリングバッファとして使われた後であるので、現在の値は異なっている。)従って、新たに1703に相当する位置の横方向線分の累積情報を生成し(b)に格納すれば、現在の処理バンド位置における先頭ブロックの累積情報の生成が完了する。尚、生成した累積情報は次ラインの処理に備えるため、前回の(a)→(b)と同様の1線分上方にシフトした位置関係で(b)→(a)に同値をコピーしておく。
現在の処理バンドにおける先頭位置(左端)ブロックの累積情報の生成が完了したら、ステップS1603の処理に戻り、ブロック毎のメイン処理を行う。以後、ステップS1606において最終ラインに到達するまで、順に処理を繰り返して入力情報全域に対する処理を実行する。そして、ステップS1104と同等の後処理を行って全体の処理完了となる。
本実施形態でも、バッファのビット精度Nbufは実施形態1で説明したNovとして良い。もちろん入力情報と保持するブロックの位置に応じて、ブロック内で複数回のオーバーフローが生ずるが、このオーバーフロー累積情報を用いた計算結果は、実施形態1と同様に問題なく利用可能なものとなる。
本実施形態におけるバッファ容量を実施形態1や2で説明した例と同条件で計算すると、Nov×{Xrect_max×Yrect_max×2+(Ximg−Xrect_max)}=16×{16×16×2+(640−16)}=18176bitとなる。よって、極めて少ないバッファ容量にすることが可能となっていることが分かる。上記において、×2はダブルバッファ分、(Ximg−Xrect_max)は先頭累積値バッファ分である。
但し、本実施形態のブロックバッファによる実装では累積情報を計算する上でのオーバーヘッドが生ずる。図15を用いて、演算オーバーヘッドについて説明する。図15の(a)において、先頭の処理ウィンドウ1500と上下1ライン分を除いた1501の領域の累積情報は、同じ累積情報値が2回以上計算される領域である。例えば、図14の1407の位置の累積情報は、処理バンドが1400の位置にあるときに1度計算され、さらに処理バンドが次の1ライン下方位置へ移動した際も計算されるため、都合2回同じ値が計算されることになる。そのさらに1画素下の累積情報は3回計算されその下は4回、というように、ブロックサイズが16×16であれば最大15回計算される累積情報が存在することになる。図15(a)において、1500の幅で縦方向に最終ラインまでの間が再計算されないのは、図17に述べたダブルバッファの構造のためである。
また、ダブルバッファ構造にせず、シングルのブロックバッファを用いて構成する方法もある。この場合、処理バンドが1ライン下方に移動する度に、先頭ブロック領域の累積情報を全て計算し直す。このとき基準となる入力情報の要素の位置は、今まで説明してきた累積情報のように原点位置とする必要はなく、処理バンドの左上端位置の要素としてよい。つまり、生成されるオーバーフロー累積情報は、図7で説明したものとは異なった値となり、さらにバンドの移動に応じて再計算される度に、同じ位置に対応する累積値であっても異なった値が格納される。このようにした場合、ブロックサイズが16×16で最大15回再計算されるというのは変わらないが、再計算される領域は、図15(b)に示すものとなる。また、必要となるバッファ容量は、Nov×Xrect_max×Yrect_max=16×16×16=4096bitとなり、累積情報を計算するための負荷は増えるが、必要な容量は最小化できる。尚、累積情報利用演算部112で行われる加減算負荷は、ビット精度Nbuf=Novであるので今まで説明してきた実施形態と全く変わらないのは明らかである。
(他の実施形態)
上述した累積情報は、三次元以上の多次元配列情報に対しても生成することができる。図18は三次元の場合の累積情報の様子を例示する図である。三次元配列の入力情報とは、例えば動画情報であって、二次元画像に時間軸の一次元が加わり三次元情報となる。
図18の(a)において、三次元累積情報配列の点Xの位置の要素には、入力三次元情報における原点と点Xを対角とする直方体の中に含まれる要素の総和値となる。
この三次元累積情報を用いて、例えば図18(b)の直方体1801内の要素の総和値を求めることが可能である。ここで、直方体1801の対角を示す2点の座標を(x0, y0, t0),(x1, y1, t1)とする。A,B,C,D,E,F,G,Hをそれぞれ、
A:(x0-1, y0-1, t0-1)
B:(x1, y0-1, t0-1)
C:(x0-1, y1, t0-1)
D:(x1, y1, t0-1)
E:(x0-1, y0-1, t1)
F:(x1, y0-1, t1)
G:(x0-1, y1, t1)
H:(x1, y1, t1) (16)
なる位置の累積情報値であるとすると、入力情報の直方体1801内要素の総和値S3dは、
S3d=H−D−F+B−(G−C−E+A) (17)
として計算することができる。
この三次元累積情報に対し、本発明の考え方を適用しオーバーフロー累積情報で代替することももちろん可能である。図19において1901は三次元入力情報時の処理ウィンドウの一例を示す。この処理ウィンドウサイズが、(Xrect_max,Yrect_max,Trect_max)のとき、二次元の場合と同様に、この中の全ての要素が最大値を取る場合の総和値を、オーバーフローせずに格納可能なビット精度NOVを求める。そして、これをバッファのビット精度Nbufとすればよい。例えば入力情報が8ビットで、Xrect_max=16, Yrect_max=16, Trect_max=4であるとする。このとき、Crect_max=ImaxXrect_maxYrect_maxTrect_max=255×16×16×4=261120=3FC00hとなって、Nov=18bitとなる。もちろんこのビット精度Nbuf=Novのとき、原点位置より離れるに従って処理ウィンドウ内でオーバーフローが発生した状態の累積情報となるが、二次元の場合と同様に、式(14)で所望の直方体内の総和値を求められる。
また、図20に示すように、バンドもしくはブロックタイプのバッファとして保持するようにすることによって、さらにバッファ容量を削減できるのは二次元の場合と同様である。図20において、(a)のタイプのバッファであれば、累積情報を計算する上で余分なオーバーヘッドは生じない。(b),(c)タイプであれば、より容量を削減できる代わりに、再計算する累積情報が多数必要となることは二次元の場合と同様である。
三次元を超える多次元入力情報に対する累積情報であっても、同様に超直方体で考えれば、本発明を適用可能であるのは明らかであろう。
また、本発明はハードウェア回路のみでなく、ソフトウェアによる処理であっても適用可能である。例えば、先に述べた27bit精度必要な従来の累積情報であれば、32bitのlong型配列を用いる必要があったところを、上述の実施形態で述べたように16bitとすることができれば、16bitのshort型配列を使用することが可能となる。つまり使用するバッファ容量を半分に削減することができる。
さらに区切りの悪いビット精度が必要な場合であっても、メモリアクセス時間とのトレードオフで、例えばC言語のビットフィールド機能等を用いることにより、メモリの利用効率を上げることができることは明らかであろう。
また、実施形態では、バンドバッファやブロックバッファをリングバッファとして使用する例を説明したが、本発明はこのようなメモリの使用方法に限るわけではない。例えば、リングカウンタに対応するメモリアドレステーブルを有し、当該テーブルを参照する事で、不連続な領域を所定の処理単位で割り当てながら処理する等の方法でも良い。即ち、本発明で述べたリングバッファとは狭義のリングバッファ或いは循環バッファに限定するものではない。
また、上述の実施形態でメイン処理として説明した後段処理は、パターン認識処理に限定するものではない。本発明は、従来技術で述べたようなコンピュータグラフィクス等の他分野の処理であっても、累積情報を用い、かつ使用する可能性のある最大領域の大きさが限定できる処理であれば、適用可能であることは言うまでも無い。
なお本発明は、コンピュータ読み取り可能な記憶媒体から読出されたプログラムコードの指示に基づき、CPUの処理によって前述した実施形態の各機能が実現される場合も含まれる。
また、プログラムコードを供給するための記憶媒体としては、例えば、フロッピー(登録商標)ディスク,ハードディスク,光ディスク,光磁気ディスク,CD、DVD,磁気テープ,不揮発性のメモリカード,ROMなどを用いることができる。
さらに、画像入力装置、情報蓄積機器、またこれらが複合または接続された装置において、両方またはいずれかの装置に備わるCPUなどが実際の処理の一部または全部を行うことで前述した実施形態の機能が実現される場合も含まれる。
上記画像入力装置としては、ビデオカメラ、デジタルカメラ、監視カメラなど各種CCDを利用したカメラやスキャナ、アナログ画像入力装置からAD変換によりデジタル画像に変換された画像入力装置が利用できる。上記情報蓄積機器としては、外部ハードディスク、ビデオレコーダなどが利用できる。
第1の実施形態における情報処理装置の構成を示すブロック図である。 累積情報生成部の構成を示すブロック図である。 累積情報利用演算部の構成を示すブロック図である。 二次元入力情報に対する、従来の累積画像情報の生成方法を説明する図である。 累積画像情報を用いて、所望の矩形領域内要素の総和値を求める方法の説明図である。 累積情報を保持するバッファのビット精度を削減する従来技術の説明図である。 オーバーフロー累積情報の一例を示す図である。 パターン認識処理の一例である、顔検出処理を説明する図である。 複数の弱判別器で構成されるパターン識別器の構成例を示す図である。 複数の弱判別器で構成されるパターン識別器における検出処理のフローチャートである。 実施形態1の全体的な処理の流れを示すフローチャートである。 バンドバッファによる累積情報の保持を説明する図である。 累積情報をバンドバッファにより保持した場合の全体の処理の流れを示すフローチャートである。 ブロックバッファによる累積情報の保持を説明する図である。 累積情報をブロックバッファにより保持した場合の演算オーバーヘッドの起こる領域を示す図である。 累積情報をブロックバッファにより保持した場合の全体の処理の流れを示すフローチャートである。 ブロックバッファをダブルバッファとしたときの説明図である。 多次元累積情報の一例である三次元累積情報の説明図である。 三次元累積情報を用いる場合の処理ウィンドウを説明する図である。 三次元累積情報を保持するためのバッファの形態を示す図である。
符号の説明
100 累積情報演算処理部
101 CPU
102 情報入力部
103 DMAコントローラ
104 外部メモリ
105 バス
110 バス・インターフェース部
111 累積情報生成部
112 累積情報利用演算部
113 累積情報保持部
113-1 累積情報保持メモリ
113-2 メモリコントローラ
201 入力情報サイズ記憶レジスタ
202 アドレスカウンタ
203 入力要素値保持レジスタ
204 現ライン累積値保持レジスタ
205 前ライン累積値参照レジスタ
206 累積加算処理部
206-1、206-2 加算器
301 領域指定レジスタ
302 参照アドレス計算部
303 参照値一時保持レジスタ
304 加減算処理部
305 演算結果保持レジスタ

Claims (16)

  1. 複数次元配列の入力情報を入力する入力工程と、
    前記入力情報の各要素の位置に対応する累積情報値を計算する計算工程と、
    前記累積情報値を所定ビットのサイズを持つバッファに保持する保持工程と
    前記保持工程で保持された複数の前記累積情報値の間で加減算を行うことで、当該複数の累積情報値の要素の位置で示される前記入力情報の特定領域における全ての要素の総和値を計算する加減算工程とを備え、
    前記所定ビットのサイズは、前記複数次元配列の入力情報の全ての要素が最大値を取るときに、当該入力情報の最終の要素位置に対応する累積情報値をオーバーフローせずに格納するのに必要なサイズよりも小さく、前記特定領域における全ての要素が当該所定ビットのサイズにおける最大値をとるときの総和値をオーバーフローせずに格納するのに必要なサイズ以上であり、
    前記保持工程では、前記計算工程において計算された累積情報値が前記サイズに対してオーバーフローを生じた場合、当該計算された累積情報値の前記所定ビット以下の部分を、前記累積情報値として保持し、
    前記加減算工程では、前記加減算の計算結果に前記所定ビットでアンダーフローまたはオーバーフローが生じた場合は、当該計算結果を前記所定ビットのサイズを乗数とする2のべき乗で除した余りを前記加減算の結果として出力することを特徴とする情報処理方法。
  2. 複数の前記特定領域を含む領域を単位として、当該複数の前記特定領域のそれぞれの前記加減算の結果を用いる後段処理を行う後段処理工程を備え、
    前記所定ビットのサイズは、前記後段処理の単位となる領域において、前記入力情報の全ての要素が前記所定ビットのサイズにおける最大値をとるときの総和値をオーバーフローせずに格納するのに必要なサイズ以上であることを特徴とする請求項に記載の情報処理方法。
  3. 複数の前記特定領域のそれぞれの前記加減算の結果を用いる後段処理を行う後段処理工程を備え、
    前記所定ビットのサイズは、当該複数の前記特定領域の中で最大の要素数を持つ領域において、前記入力情報の全ての要素が前記所定ビットのサイズにおける最大値をとるときの総和値をオーバーフローせずに格納するのに必要なサイズ以上であることを特徴とする請求項に記載の情報処理方法。
  4. 前記入力情報は2次元配列であって、前記計算工程では、前記入力情報の原点位置と各要素の位置とを対角とする矩形領域内の全ての要素の総和値を、当該要素位置に対応する前記累積情報値として計算することを特徴とする請求項1に記載の情報処理方法。
  5. 前記入力情報は2次元配列であって、前記特定領域は、当該2次元配列において前記複数の前記累積情報値の対応する位置で示される矩形領域であることを特徴とする請求項に記載の情報処理装置。
  6. 前記入力情報は3次元以上の多次元配列であって、前記計算工程では、前記入力情報の原点位置と各要素の位置とを対角とする超直方体の領域内の全ての要素の総和値を、当該要素位置に対応する前記累積情報値とすることを特徴とする請求項1に記載の情報処理方法。
  7. 前記入力情報は3次元以上の多次元配列であって、前記特定領域は、3次元以上の多次元配列である前記入力情報における、前記複数の前記累積情報値に対応する位置で示される超直方体の領域であることを特徴とする請求項に記載の情報処理方法。
  8. 複数次元配列の入力情報を入力する入力手段と、
    前記入力情報の各要素の位置に対応する累積情報値を計算する計算手段と、
    前記累積情報値を所定ビットのサイズで保持する保持手段と
    前記保持手段に保持された複数の前記累積情報値の間で加減算を行うことで、当該複数の累積情報値の要素の位置で示される前記入力情報の特定領域における全ての要素の総和値を計算する加減算手段とを備え、
    前記所定ビットのサイズは、前記複数次元配列の入力情報の全ての要素が最大値を取るときに、当該入力情報の最終の要素位置に対応する累積情報値をオーバーフローせずに格納するのに必要なサイズよりも小さく、前記特定領域における全ての要素が当該所定ビットのサイズにおける最大値をとるときの総和値をオーバーフローせずに格納するのに必要なサイズ以上であり、
    前記保持手段は、前記計算手段により計算された累積情報値が前記所定ビットに対してオーバーフローを生じた場合、当該計算された累積情報値の前記所定ビット以下の部分を、前記累積情報値として保持し、
    前記加減算手段は、前記加減算の計算結果に前記所定ビットでアンダーフローまたはオーバーフローが生じた場合は、当該計算結果を前記所定ビットのサイズを乗数とする2のべき乗で除した余りを前記加減算の結果として出力することを特徴とする情報処理装置。
  9. 複数の前記特定領域を含む領域を単位として、前記複数の前記特定領域のそれぞれの前記加減算の結果を用いる後段処理を行う後段処理手段備えることを特徴とする請求項に記載の情報処理装置。
  10. 前記保持手段は、前記入力情報と論理的に同次元の構造を持ち、各次元方向のうち、少なくとも一次元の方向が、前記入力情報のある一次元の方向における要素数に基づく要素数で構成され、他の次元方向が、前記後段処理の単位となる領域の各次元方向における要素数に基づく要素数で構成されることを特徴とする請求項に記載の情報処理装置。
  11. 前記計算手段は、前記累積情報値として、前記入力情報の同一の次元方向の要素数に基づく要素数を持つ次元方向に要素が並んだ要素列を順に計算し、
    前記保持手段は、前記計算手段により前記累積情報の新たな要素列が計算されると、格納されている前記累積情報のうちで最も前に計算された要素列が格納されていた領域に、前記新たな要素列の演算結果を格納し、
    前記後段処理手段は、前記累積情報保持手段に新たに格納された要素列と前から格納されている残りの要素列とが論理的に連続するものとして前記後段処理を行うことを特徴とする請求項に記載の情報処理装置。
  12. 前記保持手段は、前記入力情報と論理的に同次元の構造を持ち、各次元方向が、前記後段処理の単位となる領域の各次元方向の要素数に基づく要素数で構成されることを特徴とする請求項に記載の情報処理装置。
  13. 前記計算手段は、最初に前記入力情報の全ての次元の原点に相当する位置の要素を含む領域の前記累積情報を計算し、以後、前記構造の内の所定の一次元の方向に1要素だけ、その方向の最終の位置に達するまで領域を順にシフトさせて加えられる領域の前記累積情報を新たに計算し、
    前記保持手段は、保持されている前記累積情報のうちで前記シフトさせた領域の範囲の外となる累積情報が保持されていた領域に、新たに計算した前記累積情報を格納し、
    前記後段処理手段は、前記保持手段に新たに格納された累積情報と前から格納されている残りの累積情報とが論理的に連続するものとして前記後段処理を行うことを特徴とする請求項12に記載の情報処理装置。
  14. さらに前記シフトさせた領域が前記所定の一次元の方向における最終の位置に達した後に、当該領域を前記所定の一次元の方向における原点位置にいったん戻し、別の一次元の方向に1要素だけシフトさせた位置を新たな開始位置として、前記計算手段による前記所定の一次元の方向における前記1要素のシフトと前記累積情報の計算、前記保持手段による保持および前記後段処理手段による後段処理を同様に繰り返し、
    前記入力情報の他の次元方向に対しても順に同様に繰り返すことによって、前記入力情報の全領域に対して処理を行うことを特徴とする請求項13に記載の情報処理装置。
  15. 請求項1乃至に記載の情報処理方法をコンピュータに実行させるコンピュータ読み取り可能なプログラム。
  16. 請求項15に記載のプログラムを記憶したコンピュータ読み取り可能な記憶媒体。
JP2007145448A 2007-05-31 2007-05-31 情報処理方法及び装置、プログラム、記憶媒体 Expired - Fee Related JP5058681B2 (ja)

Priority Applications (5)

Application Number Priority Date Filing Date Title
JP2007145448A JP5058681B2 (ja) 2007-05-31 2007-05-31 情報処理方法及び装置、プログラム、記憶媒体
PCT/JP2008/060106 WO2008146934A1 (en) 2007-05-31 2008-05-27 Information processing method and apparatus, program, and storage medium
CN2008800180100A CN101681503B (zh) 2007-05-31 2008-05-27 信息处理方法及装置
US12/602,091 US9021347B2 (en) 2007-05-31 2008-05-27 Information processing method and apparatus, program, and storage medium
EP08753124.0A EP2165311A4 (en) 2007-05-31 2008-05-27 INFORMATION PROCESSING AND DEVICE, PROGRAM AND STORAGE MEDIUM

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007145448A JP5058681B2 (ja) 2007-05-31 2007-05-31 情報処理方法及び装置、プログラム、記憶媒体

Publications (2)

Publication Number Publication Date
JP2008299627A JP2008299627A (ja) 2008-12-11
JP5058681B2 true JP5058681B2 (ja) 2012-10-24

Family

ID=40173091

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007145448A Expired - Fee Related JP5058681B2 (ja) 2007-05-31 2007-05-31 情報処理方法及び装置、プログラム、記憶媒体

Country Status (5)

Country Link
US (1) US9021347B2 (ja)
EP (1) EP2165311A4 (ja)
JP (1) JP5058681B2 (ja)
CN (1) CN101681503B (ja)
WO (1) WO2008146934A1 (ja)

Families Citing this family (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101522985B1 (ko) * 2008-10-31 2015-05-27 삼성전자주식회사 영상처리 장치 및 방법
JP5349931B2 (ja) * 2008-12-04 2013-11-20 キヤノン株式会社 情報処理装置、情報処理方法及びプログラム
TWI382351B (zh) * 2009-03-20 2013-01-11 Ind Tech Res Inst 具積分影像輸出之影像感測器
JP5340088B2 (ja) * 2009-09-07 2013-11-13 キヤノン株式会社 情報処理方法及び装置
JP5336995B2 (ja) * 2009-10-19 2013-11-06 キヤノン株式会社 特徴点位置決め装置、画像認識装置、その処理方法及びプログラム
JP5451302B2 (ja) * 2009-10-19 2014-03-26 キヤノン株式会社 画像処理装置及び方法、プログラム及び記憶媒体
JP5427577B2 (ja) * 2009-12-04 2014-02-26 パナソニック株式会社 表示制御装置及び表示画像形成方法
JP2011128990A (ja) * 2009-12-18 2011-06-30 Canon Inc 画像処理装置とその方法
JP5388835B2 (ja) * 2009-12-24 2014-01-15 キヤノン株式会社 情報処理装置及び情報処理方法
JP5406705B2 (ja) * 2009-12-28 2014-02-05 キヤノン株式会社 データ補正装置及び方法
JP5574816B2 (ja) * 2010-05-14 2014-08-20 キヤノン株式会社 データ処理装置及びデータ処理方法
JP5759126B2 (ja) 2010-08-25 2015-08-05 キヤノン株式会社 パターン識別装置及びその制御方法、プログラム
JP5848551B2 (ja) 2011-08-26 2016-01-27 キヤノン株式会社 学習装置、学習装置の制御方法、検出装置、検出装置の制御方法、およびプログラム
JP5799681B2 (ja) * 2011-09-05 2015-10-28 株式会社リコー 画像処理装置、積分画像作成方法及びプログラム
JP5777458B2 (ja) 2011-09-12 2015-09-09 キヤノン株式会社 パターン識別装置、パターン識別方法及びプログラム
US8873112B2 (en) 2011-10-21 2014-10-28 Canon Kabushiki Kaisha Image processing apparatus and determination method
JP5963566B2 (ja) 2012-06-21 2016-08-03 キヤノン株式会社 パターン識別装置
JP6116271B2 (ja) * 2013-02-08 2017-04-19 キヤノン株式会社 特徴量算出装置、方法及びプログラム
US9398297B2 (en) * 2013-11-04 2016-07-19 Intel Corporation Integral image coding
US20160357690A1 (en) * 2014-03-07 2016-12-08 Mitsubishi Electric Corporation Information processing device and information processing method
JP2016009387A (ja) * 2014-06-25 2016-01-18 本田技研工業株式会社 画像処理装置
KR102574449B1 (ko) * 2016-11-17 2023-09-04 삼성전자 주식회사 데이터 처리 방법 및 장치
CN106843813B (zh) * 2016-12-28 2018-08-14 华为技术有限公司 一种数据处理方法及装置
CN108827880B (zh) * 2018-04-23 2021-04-16 吉林大学 基于多光谱影像和ndvi时间序列的地表覆盖变化检测方法
JP7402623B2 (ja) 2019-06-17 2023-12-21 キヤノン株式会社 フィルタ処理装置及びその制御方法

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5038209A (en) * 1990-09-27 1991-08-06 At&T Bell Laboratories Adaptive buffer/quantizer control for transform video coders
US5508823A (en) 1991-08-28 1996-04-16 Canon Kabushiki Kaisha Image processing method and apparatus
JP3224465B2 (ja) * 1993-12-22 2001-10-29 シャープ株式会社 画像符号化装置
US5668599A (en) * 1996-03-19 1997-09-16 International Business Machines Corporation Memory management for an MPEG2 compliant decoder
JPH09261463A (ja) * 1996-03-26 1997-10-03 Casio Electron Mfg Co Ltd 画像データ補正装置
JPH1056565A (ja) * 1996-08-08 1998-02-24 Sharp Corp 画像処理装置
US6452603B1 (en) * 1998-12-23 2002-09-17 Nvidia Us Investment Company Circuit and method for trilinear filtering using texels from only one level of detail
US6778181B1 (en) * 2000-12-07 2004-08-17 Nvidia Corporation Graphics processing system having a virtual texturing array
US7369687B2 (en) 2002-11-21 2008-05-06 Advanced Telecommunications Research Institute International Method for extracting face position, program for causing computer to execute the method for extracting face position and apparatus for extracting face position
JP4166143B2 (ja) 2002-11-21 2008-10-15 株式会社国際電気通信基礎技術研究所 顔位置の抽出方法、およびコンピュータに当該顔位置の抽出方法を実行させるためのプログラムならびに顔位置抽出装置
CN1272631C (zh) * 2002-12-09 2006-08-30 北京中星微电子有限公司 运动图像检测方法
US7508961B2 (en) * 2003-03-12 2009-03-24 Eastman Kodak Company Method and system for face detection in digital images
JP2005044330A (ja) 2003-07-24 2005-02-17 Univ Of California San Diego 弱仮説生成装置及び方法、学習装置及び方法、検出装置及び方法、表情学習装置及び方法、表情認識装置及び方法、並びにロボット装置
JP4206053B2 (ja) * 2004-03-31 2009-01-07 株式会社国際電気通信基礎技術研究所 ユーザインタフェース装置およびユーザインタフェースプログラム
JP5008269B2 (ja) 2005-04-08 2012-08-22 キヤノン株式会社 情報処理装置、情報処理方法
CN100336070C (zh) * 2005-08-19 2007-09-05 清华大学 复杂背景图像中的鲁棒人脸检测方法
CN101491075B (zh) 2006-07-07 2013-01-30 佳能株式会社 图像处理设备和图像处理方法
JP4582079B2 (ja) * 2006-10-19 2010-11-17 トヨタ自動車株式会社 画像識別装置および画像識別方法
JP4948379B2 (ja) 2007-12-18 2012-06-06 キヤノン株式会社 パターン識別器生成方法、情報処理装置、プログラム及び記憶媒体
US8331655B2 (en) 2008-06-30 2012-12-11 Canon Kabushiki Kaisha Learning apparatus for pattern detector, learning method and computer-readable storage medium

Also Published As

Publication number Publication date
US9021347B2 (en) 2015-04-28
CN101681503A (zh) 2010-03-24
EP2165311A4 (en) 2014-06-11
EP2165311A1 (en) 2010-03-24
WO2008146934A1 (en) 2008-12-04
CN101681503B (zh) 2013-08-21
US20100180189A1 (en) 2010-07-15
JP2008299627A (ja) 2008-12-11

Similar Documents

Publication Publication Date Title
JP5058681B2 (ja) 情報処理方法及び装置、プログラム、記憶媒体
JP5340088B2 (ja) 情報処理方法及び装置
JP5388835B2 (ja) 情報処理装置及び情報処理方法
JP5183392B2 (ja) 画像処理装置、画像処理方法およびプログラム
WO2020199478A1 (zh) 图像生成模型训练方法、图像生成方法、装置、设备及存储介质
JP4545641B2 (ja) 類似画像検索方法,類似画像検索システム,類似画像検索プログラム及び記録媒体
JP6432162B2 (ja) 画像照合方法、画像照合装置、モデルテンプレート生成方法、モデルテンプレート生成装置、およびプログラム
JPH09282080A (ja) 情報入力方法とその装置
US9946645B2 (en) Information processing apparatus and memory control method
JP2020191057A (ja) レイアウト解析方法、読書補助装置、回路及び媒体
US9171227B2 (en) Apparatus and method extracting feature information of a source image
CN112419372B (zh) 图像处理方法、装置、电子设备及存储介质
AU2017279613A1 (en) Method, system and apparatus for processing a page of a document
JP2015026117A (ja) 画像処理方法、画像処理装置、プログラム及び記録媒体
CN111164645A (zh) 图像分割方法及装置
CN114356201B (zh) 一种书写美化方法、装置、设备和可读存储介质
KR101688435B1 (ko) 블록 구조를 이용한 적분 영상 생성 장치 및 그 방법
US11288534B2 (en) Apparatus and method for image processing for machine learning
KR20220068357A (ko) 딥러닝 객체 검출 처리 장치
Ding et al. Multi-scale FAST feature extraction heterogeneous design based on FPGA
US11514614B2 (en) Image processing apparatus, method of controlling image processing apparatus, and non-transitory computer-readable storage medium
WO2024013891A1 (ja) 畳み込みニューラルネットワーク推論処理装置、畳み込みニューラルネットワーク推論処理方法、及び畳み込みニューラルネットワーク推論処理プログラム
JP2010092159A (ja) 画像データ判定装置、画像データ判定システム、及びプログラム
JP2003281548A (ja) 映像編集方法及びプログラム
JP2022167328A (ja) データ処理装置及びデータ処理方法

Legal Events

Date Code Title Description
RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20100201

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20100531

RD01 Notification of change of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7421

Effective date: 20100630

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111108

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120110

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: 20120703

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20120801

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

R151 Written notification of patent or utility model registration

Ref document number: 5058681

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20150810

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees