JP2011180792A - 画像処理装置及び画像処理方法、並びにコンピューター・プログラム - Google Patents

画像処理装置及び画像処理方法、並びにコンピューター・プログラム Download PDF

Info

Publication number
JP2011180792A
JP2011180792A JP2010043657A JP2010043657A JP2011180792A JP 2011180792 A JP2011180792 A JP 2011180792A JP 2010043657 A JP2010043657 A JP 2010043657A JP 2010043657 A JP2010043657 A JP 2010043657A JP 2011180792 A JP2011180792 A JP 2011180792A
Authority
JP
Japan
Prior art keywords
image
search window
integral
memory buffer
pixel
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.)
Withdrawn
Application number
JP2010043657A
Other languages
English (en)
Inventor
Jun Yokono
順 横野
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.)
Sony Corp
Original Assignee
Sony 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 Sony Corp filed Critical Sony Corp
Priority to JP2010043657A priority Critical patent/JP2011180792A/ja
Priority to US13/022,933 priority patent/US20110211233A1/en
Priority to CN2011100406933A priority patent/CN102194119A/zh
Publication of JP2011180792A publication Critical patent/JP2011180792A/ja
Withdrawn legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/40Extraction of image or video features
    • G06V10/50Extraction of image or video features by performing operations within image blocks; by using histograms, e.g. histogram of oriented gradients [HoG]; by summing image-intensity values; Projection analysis
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Databases & Information Systems (AREA)
  • Medical Informatics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

【課題】矩形フィルターを用いた物体検出において、矩形特徴を計算する際に使用する積分画像を保持するためのメモリー・バッファー量を削減する。
【解決手段】入力画像全体の積分画像を生成するのではなく、スキャン位置毎に検索ウィンドウの大きさに相当する必要なサイズだけの部分的な積分画像を生成して矩形特徴を計算する。また、既に計算した検索ウィンドウ分の積分画像のうち、後続のスキャン位置でまだ必要な値はメモリー・バッファーに保持し続けながら、スキャンする度に新たに検索ウィンドウに加わる領域についてのみ、計算済みの注目画素点の値を利用して積分画像を計算する。
【選択図】 図15

Description

本発明は、矩形フィルターを用いて画像から所望の物体を検出する画像処理装置及び画像処理方法、並びにコンピューター・プログラムに係り、特に、積分画像を用いて矩形特徴を計算する際のメモリー・バッファー量を削減する画像処理装置及び画像処理方法、並びにコンピューター・プログラムに関する。
顔認識などの物体検出を行なう際、画像の特徴量を抽出する手段としてフィルターが用いられる。1つのフィルターは、画像から所望の物体(例えば、被写体の顔や笑顔など)を認識できたか否かを、例えば正負の符号で表わす、ランダムより少し良い程度の「弱判別器(若しくは弱学習器:weak learner)」に過ぎない。しかしながら、複数の弱判別器を線形結合することで、より強い判別器を構築することができる(例えば、特許文献1を参照のこと)。
個々の弱判別器として、例えば、Haar基底に基づいた矩形フィルター(Rectangle Filter、又は、Haar−like Filter)が用いられる。矩形フィルターは、黒矩形と白矩形の組み合わせからなる単純な構造である。弱判別器は、矩形フィルターを探索領域に重ね合わせて得られる矩形特徴(rectangle feature)、すなわち、黒矩形に対応する領域内の輝度値の和と白矩形に対応する領域内の輝度値の和との差が閾値よりも大きいかで、物体を検出したか否かを判定する。
矩形特徴を高速に計算するために、中間的な画像である積分画像(Integral Image)を用いる方法が提案されている(例えば、非特許文献1を参照のこと)。積分画像とは、入力画像における各画素点を画像特徴量の累積和すなわち積分画素値で表わした画像のことである。例えば、入力画像が輝度画像の場合、入力画像内の各画素点(x,y)の積分画素値を、入力画像の原点(0,0)及び当該画素点(x,y)を対角線上の頂点とする矩形内のすべての画素点の輝度値を積分した輝度積分値で表わしたものが積分画像である。積分画像を用いると、画像内の任意の矩形領域の輝度値の和を簡単に計算することができる。したがって、白黒1つずつの矩形からなる矩形フィルター(1次微分フィルター)の場合、白矩形の領域の輝度値の和と黒矩形の領域の輝度値の和を、それぞれ積分画像を用いて高速に計算すると、前者から後者を引き算すると、矩形特徴が得られる。
入力画像上で矩形フィルターをスキャンする際、積分画像を用いれば、矩形特徴を高速に計算することができる。しかしながら、生成した積分画像を保持するには、入力画像と同じサイズのメモリー・バッファーが必要となるため、例えばハードウェアで実装する際には問題となる。例えば、640×480画素からなるVGA(Video Graphic Array)画像を処理対象とする場合、入力画像用に307.2Kバイト(8ビットのとき)のバッファーと、積分画像用に1,228,800バイト(1.2Mバイト:但し、1画素を4バイトで表現した場合)のバッファーが必要になる。
本発明の目的は、矩形フィルターを用いて画像から所望の物体を好適に検出することができる、優れた画像処理装置及び画像処理方法、並びにコンピューター・プログラムを提供することにある。
本発明のさらなる目的は、積分画像を用いて矩形特徴を計算する際のメモリー・バッファー量を削減することができる、優れた画像処理装置及び画像処理方法、並びにコンピューター・プログラムを提供することにある。
本願は、上記課題を参酌してなされたものであり、請求項1に記載の発明は、
被検出画像上で検索ウィンドウをスキャンする走査部と、
各スキャン位置において、所望の物体を検出するための1以上の矩形フィルターを検索ウィンドウの画像に適用して矩形特徴を計算し、得られた1以上の前記矩形特徴に基づいて物体を検出したか否かを判別する判別部と、
を備え、
前記走査部は、スキャン位置毎に前記検索ウィンドウのサイズに相当する積分画像を生成して所定のメモリー・バッファーに保持し、
前記判別部は、前記メモリー・バッファーに保持されている積分画像を用いて各スキャン位置における前記検索ウィンドウの画像について矩形特徴を計算する、
画像処理装置である。
本願の請求項2に記載の発明によれば、請求項1に記載の画像処理装置の走査部は、スキャン位置を移動する際に、以降のスキャン位置において不要となる領域の積分画像を前記メモリー・バッファーから廃棄するとともに、前記検索ウィンドウに新たに加わる領域の積分画像を計算して前記メモリー・バッファーに追加して保持するように構成されている。
本願の請求項3に記載の発明によれば、請求項2に記載の画像処理装置の走査部は、スキャン位置を移動する際に、以降のスキャン位置において前記検索ウィンドウに新たに追加される領域に隣接する領域の積分画像を前記メモリー・バッファー内に保持し続けるとともに、前記検索ウィンドウに新たに追加される領域の積分画像を、前記メモリー・バッファーに保持された前記隣接する領域の積分画像を用いて再帰的に計算するように構成されている。
本願の請求項4に記載の発明によれば、請求項2に記載の画像処理装置の走査部は、現在のスキャンライン上でスキャン位置を移動する際に、次のスキャンラインの直前の1画素以上の画素幅の画素ラインの積分画像を前記メモリー・バッファーに保持し続け、次のスキャンライン上の各スキャン位置において前記の保持した画素ラインの積分画像を用いて前記検索ウィンドウの領域の積分画像を再帰的に計算するように構成されている。
本願の請求項5に記載の発明によれば、請求項2に記載の画像処理装置の走査部は、前記被検出画像上を縦方向に走査する際に、スキャンライン毎に前記検索ウィンドウの幅分の1列の領域の積分画像を生成するように構成されている。
また、本願の請求項6に記載の発明によれば、請求項2に記載の画像処理装置の走査部は、前記被検出画像上を横方向に走査する際に、スキャンライン毎に前記検索ウィンドウの高さ分の1行の領域の積分画像を生成するように構成されている。
本願の請求項7に記載の発明は、
被検出画像上で検索ウィンドウをスキャンするとともに、スキャン位置毎に前記検索ウィンドウのサイズに相当する積分画像を生成して所定のメモリー・バッファーに保持する走査ステップと、
各スキャン位置において、所望の物体を検出するための1以上の矩形フィルターを検索ウィンドウの画像に適用し、前記メモリー・バッファーに保持されている積分画像を用いて矩形特徴を計算し、得られた1以上の前記矩形特徴に基づいて物体を検出したか否かを判別する判別ステップと、
を有する画像処理方法である。
本願の請求項8に記載の発明は、被検出画像から所望の物体を検出するための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
被検出画像上で検索ウィンドウをスキャンするとともに、スキャン位置毎に前記検索ウィンドウのサイズに相当する積分画像を生成して所定のメモリー・バッファーに保持する走査手段、
各スキャン位置において、所望の物体を検出するための1以上の矩形フィルターを検索ウィンドウの画像に適用し、前記メモリー・バッファーに保持されている積分画像を用いて矩形特徴を計算し、得られた1以上の前記矩形特徴に基づいて物体を検出したか否かを判別する判別手段、
として機能させるためのコンピューター・プログラムである。
本願の請求項8に係るコンピューター・プログラムは、コンピューター上で所定の処理を実現するようにコンピューター可読形式で記述されたコンピューター・プログラムを定義したものである。換言すれば、本願の請求項8に係るコンピューター・プログラムをコンピューターにインストールすることによって、コンピューター上では協働的作用が発揮され、本願の請求項1に係る画像処理装置と同様の作用効果を得ることができる。
本発明によれば、矩形フィルターを用いた物体検出において、矩形特徴を計算する際に使用する積分画像を保持するためのメモリー・バッファー量を削減することができる、優れた画像処理装置及び画像処理方法、並びにコンピューター・プログラムを提供することができる。
本願の請求項1、7、8に係る発明によれば、矩形フィルターによる物体検出処理において、積分画像を用いて矩形特徴の計算を高速化するが、スキャン位置毎に検索ウィンドウのサイズに相当する部分的な積分画像を生成することから、メモリー・バッファーの容量はこの部分的な積分画像のサイズ分で済む。被検出画像全体のサイズに相当する積分画像を保持する場合に比べ、積分画像用のメモリー・バッファーの容量を大幅に削減することができる。
本願の請求項2に係る発明によれば、既に計算した検索ウィンドウ分の積分画像のうち、後続のスキャン位置でまだ必要な値はメモリー・バッファーに保持し続けながら、スキャンする度に新たに検索ウィンドウに加わる領域についてのみ積分画像を計算してメモリー・バッファーに追加して保持するので、積分画像の計算量を削減することができる。
本願の請求項3に係る発明によれば、メモリー・バッファーに追加する領域の積分画像を計算する際、注目画素点に隣接する画素点について計算済みの積分画素値を利用して再帰的に計算することで、注目画素点の積分画像の計算を簡素化することができる。
本願の請求項4に係る発明によれば、1つ前のスキャンライン上でスキャン位置を移動する際に保持した画素ラインの積分画像を利用して検索ウィンドウの領域の積分画像を再帰的に計算するので、積分画像の計算を簡素化することができる。また、メモリー・バッファーの容量は、検索ウィンドウと画素ラインの積分画像を保持できるサイズで済む。したがって、被検出画像全体のサイズに相当する積分画像を保持する場合に比べ、メモリー容量を大幅に削減することができる。
本願の請求項5に係る発明によれば、メモリー・バッファーの容量は、索ウィンドウの幅分の1列の領域の積分画像を保持できるサイズで済む。したがって、被検出画像全体のサイズに相当する積分画像を保持する場合に比べ、メモリー容量を大幅に削減することができる。
本願の請求項6に係る発明によれば、メモリー・バッファーの容量は、索ウィンドウの高さ分の1行の領域の積分画像を保持できるサイズで済む。したがって、被検出画像全体のサイズに相当する積分画像を保持する場合に比べ、メモリー容量を大幅に削減することができる。
本発明のさらに他の目的、特徴や利点は、後述する本発明の実施形態や添付する図面に基づくより詳細な説明によって明らかになるであろう。
図1Aは、矩形フィルターの構成例(但し、1次微分フィルター)を示した図である。 図1Bは、矩形フィルターの構成例(但し、2次微分フィルター)を示した図である。 図1Cは、矩形フィルターの構成例(但し、3次微分フィルター)を示した図である。 図1Dは、矩形フィルターの構成例(但し、ラプラシアン・フィルター)を示した図である。 図2Aは、矩形フィルターにかける前の入力画像を示した図である。 図2Bは、図2Aに示した入力画像に1次微分の垂直フィルターをかけた結果を示した図である。 図2Cは、図2Aに示した入力画像にかけた1次微分の垂直フィルターを示した図である。 図3は、複数の矩形フィルターを用いて入力画像から物体を検出する処理手順を模式的に示した図である。 図4は、垂直・水平方向用矩形フィルターに対して適用する積分画像の計算方法を説明するための図である。 図5は、注目画素点の積分画素値を、隣接する3画素点の積分画素値と注目画素点の輝度値から計算する方法を説明するための図である。 図6は、垂直・水平矩形フィルター用の積分画像を用いて画像内の任意の矩形領域における輝度値の和を高速に計算する方法を説明するための図である。 図7は、斜め方向用矩形フィルターに対して適用する積分画像の計算方法を説明するための図である。 図8は、注目画素点の積分画素値を、隣接する3画素点の積分画素値と注目画素点の輝度値から計算する方法を説明するための図である。 図9は、斜め方向矩形フィルター用の積分画像を用いて画像内の任意の矩形領域における輝度値の和を高速に計算する方法を説明するための図である。 図10は、本発明の一実施形態に係る物体検出装置10の機能的構成を模式的に示したブロック図である。 図11は、スケーリング部12が縮小画像を生成する様子を示した図である。 図12は、走査部13において入力画像上で所定のウィンドウ・サイズの検索ウィンドウSをスキャンする様子を示した図である。 図13は、判別器14の構成を示した図である。 図14Aは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図14はB、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図14Cは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図14Dは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図14Eは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図14Fは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図14Gは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図15は、入力画像の縦方向(Y方向)をスキャンラインとする場合に必要となるメモリー・バッファーの容量を説明するための図である。 図16は、入力画像の横方向(X方向)をスキャンラインとする場合に必要となるメモリー・バッファーの容量を説明するための図である。 図17は、垂直・水平方向用矩形フィルターによる矩形特徴を、積分画像を用いて計算するための処理手順を示したフローチャートである。 図18は、入力画像の縦方向をスキャン方向とする場合に、スキャンライン毎に検索ウィンドウの幅分の積分画像を生成し、メモリー・バッファーに保持する様子を示した図である。 図19は、入力画像の横方向をスキャン方向とする場合に、スキャンライン毎に検索ウィンドウの高さ分の積分画像を生成し、メモリー・バッファーに保持する様子を示した図である。 図20Aは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図20はB、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図20Cは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図20Dは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図20Eは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図20Fは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図20Gは、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域を示した図である。 図21は、斜め方向用矩形フィルターによる矩形特徴を、積分画像を用いて計算するための処理手順を示したフローチャートである。
以下、図面を参照しながら本発明の実施形態について詳細に説明する。
Haar基底に基づいた矩形フィルターは、黒矩形と白矩形の組み合わせからなる2次元フィルターであり、白黒の矩形の数により微分次数が異なる。また、矩形フィルターは、白矩形と黒矩形を垂直又は水平方向に並べた垂直・水平方向用矩形フィルターと、白矩形と黒矩形を斜め方向に並べた斜め方向用矩形フィルター(但し、本明細書中では、説明の簡素化のため、斜め方向に±45度に傾けた斜めフィルターのみを扱う)に大別される。
図1A〜Cには、矩形フィルターを例示している。1次微分フィルターは、白から黒、又は、黒から白へ変化する特徴を、入力画像から抽出することができる(図1Aを参照のこと)。2次微分フィルターは、白→黒→白、又は、黒→白→黒のように変化する特徴を、入力画像から抽出することができる(図1Bを参照のこと)。3次微分フィルターは、白→黒→白→黒のようにより複雑に変化する特徴を、入力画像から抽出することができる(図1Cを参照のこと)。さらに、図1Dに示すようなラプラシアン(Laplacian:擬微分)フィルターを利用することもできる。白黒の矩形を0度、45度、90度、135度のように幾つかの方向と、大きさを変化させて、物体の特徴を抽出する方法は、画像認識の分野で広く知られている。
図2Bには、図2Aに示した入力画像に対して、図2Cに示す1次微分の垂直フィルターをかけた結果を示している。同図から、縦方向に白黒の矩形の境界を持つ垂直フィルターを用いると、入力画像から縦方向のエッジを抽出できることが分かる。また、図示しないが、横方向に白黒の矩形の境界を持つ水平フィルターを用いると、入力画像から横方向のエッジを抽出することができる。
図1A〜図1Dに示した各矩形フィルターは、それぞれ1つの弱判別器となり得る。弱判別器は、矩形フィルターを探索領域に重ね合わせて得られる矩形特徴、すなわち、黒矩形に対応する領域内の輝度値の和と白矩形に対応する領域内の輝度値の和との差が閾値よりも大きいかで、物体を検出したか否かを判定する。例えば、頬の領域よりも眼の領域の輝度値が低いという学習結果を利用して、矩形特徴に基づいて入力画像から顔領域をある程度の確率で判別することができる。個々の弱判別器はランダムより少し良い程度に過ぎないが、複数の弱判別器を線形結合することで、より強い判別器を構築することができる。このような判別システムは、一般に、学習フェーズと認識フェーズが分かれており、大量の画像サンプルと矩形特徴から統計学習を行なう。学習の大枠として、例えばブースティング(Adaboost)を適用することができる。
上述したように、積分画像を用いれば、矩形特徴を高速に計算することができる。図3には、矩形特徴に基づく物体検出の処理手順を模式的に図解している。
まず、入力画像から積分画像を作成する。積分画像は、垂直・水平矩形フィルター用と斜め方向矩形フィルター用とで作成方法が異なるため(後述)、垂直・水平矩形フィルター用、及び、斜め方向矩形フィルター用の2種類の積分画像を作成することになる。
次いで、入力画像上で各矩形フィルターをスキャンして、各スキャン位置(x,y)における矩形特徴を合計(又は、重み付け合計)して、検出スコアーF(x,y)を計算する。積分画像を用いることで、スキャン位置毎の矩形特徴を高速に計算することができる(図6、図9、後述を参照のこと)。そして、検出スコアーがある閾値以上に到達したときに、そのスキャン位置(x,y)で所望の物体が検出されたと判定する。
ここで、検出スコアーF(x,y)の閾値は、例えばブースティングやサポート・ベクター、マシン(Support Vector Machine:SVM)などの統計学習器を用いて、事前に学習させておく。ブースティングを用いる場合、スキャン位置(x,y)におけるi番目の矩形フィルターから得られる矩形特徴をfi(x,y)とおくと、検出スコアーF(x,y)は下式(1)のように記述される。なお、下式(1)は通常の算術平均であるが、各矩形特徴fi(x,y)を重み付け加算して検出スコアーF(x,y)を求めるようにしてもよい(後述)。
入力画像をスキャンして得られた最大の検出スコアー次第で、検出結果が否定的(rejection)、すなわち、物体が検出されなかったという結果が返されることもある。また、スケール変換すなわち入力画像の大きさを変えながら、積分画像の生成と検出スコアーの計算を繰り返し行なう。
なお、最初に計算した積分画像をスケール変換すれば任意のサイズのウィンドウの探索が可能になるが、積分画像をスケール変換すると演算量が増大し、積分画像を使用して処理を高速化する効果を相殺することになる。そこで、図3に示した例では、入力画像をスケール変換する度に積分画像を再計算するようにしている。
垂直・水平方向用矩形フィルターに対して適用する積分画像の計算方法について、図4を参照しながら説明する。垂直又は水平方向矩形フィルターのための積分画像は、各画素点(x,y)を、入力画像の原点(0,0)及び当該画素点(x,y)を対角線上の頂点とする矩形領域内(言い換えれば、yよりも上でxよりも左側の矩形領域内)のすべての画素点の画素特徴量(輝度画像の場合は輝度値)を積分した積分画素値で表わしたものである。画素点(x,y)の積分画素値ii(x,y)は、yよりも上でxよりも左側の矩形領域内のすべての画素点(x´,y´)の輝度値i(x´,y´)の和であり、下式(2)のように記述される(例えば、非特許文献1を参照のこと)。
ここで、1行毎の輝度値の合計(cumulative row sum)を表す変数s(x,y)を導入すると、画像を一度スキャンするだけで、下式(3−1)、(3−2)に示すように、積分画素値ii(x,y)を再帰的に計算することができる(例えば、非特許文献1を参照のこと)。
上式(3−1)、(3−2)によれば、注目画素点の積分画素値を、隣接する3画素点の積分画素値と注目画素点の輝度値から計算することができる。図5には、注目画素点A4の積分画素値ii(A4)を、隣接する3つの画素点A1、A2、A3の積分画素値ii(A1)、ii(A2)、ii(A3)と注目画素点A4の輝度値i(A4)から計算する方法を図解している。計算式は以下の通りとなる。
注目画素点に隣接する3つの画素点について積分画素値を既に計算済みであれば、上式(4)を用いることで、yよりも上でxよりも左側の矩形領域内のすべての画素点について上式(2)に従って積分画素値を逐次計算する場合と比較して、積分画像をはるかに簡単に求めることができる。
図6には、垂直・水平矩形フィルター用の積分画像を用いて画像内の任意の矩形領域における輝度値の和を高速に計算する方法を図解している。同図中、A、A+B、A+C、A+B+C+Dの各矩形領域内における輝度値の合計はそれぞれ、各画素点a、b、c、dにおける積分画素値ii(a)、ii(b)、ii(c)、ii(d)である。したがって、矩形領域D内の輝度値の和は、4つの画素点a〜dにおける積分画素値ii(a)〜ii(d)の加算及び引き算、すなわちii(d)−ii(b)−ii(c)+ii(a)により高速に計算することができる。
垂直・水平方向用の矩形フィルターは、白矩形と黒矩形を横方向又は縦方向に並べて構成される。矩形フィルターを構成する黒矩形並びに白矩形に対応する各領域内の輝度値の和を、図6に示したように積分画像を用いて、それぞれ求めることができる。したがって、白矩形の領域の輝度値の和から黒矩形の領域の輝度値の和を引き算することで、各スキャン位置にて垂直・水平方向の矩形フィルターを重ねた領域の矩形特徴を高速に計算することができる。
続いて、斜め方向矩形フィルター用の積分画像の計算方法について、図7を参照しながら説明する。斜め方向矩形フィルターのための積分画像は、各画素点(x,y)を、画素点(x,y)を頂点とする矩形を頂点(x,y)回りに45度だけ回転させたときに入力画像の境界まで(スキャン方向の逆向きに)拡がる直角2等辺3角形の領域内のすべての画素点の画素特徴量(輝度画像の場合は輝度値)を積分した積分画素値で表わしたものである。画素点(x,y)の積分画素値RSAT(x,y)は、画素点(x,y)を頂点とする直角2等辺3角形の領域内のすべての画素点(x´,y´)の輝度値i(x´,y´)の和であり、下式(5)のように記述される(例えば、非特許文献2を参照のこと)。
垂直・水平矩形フィルター用の積分画素値ii(x,y)と同様に、画像を一度スキャンするだけで、下式(6)に示すように、積分画素値RSAT(x,y)を再帰的に計算することができる(例えば、非特許文献2を参照のこと)。
上式(6)によれば、注目画素点の積分画素値を、隣接する3画素点の積分画素値と注目画素点の輝度値から計算することができる。図8には、注目画素点A4の積分画素値RSAT(A4)を、隣接する3画素点A1、A2、A3の積分画素値RSAT(A1)、RSAT(A2)、RSAT(A3)と注目画素点A4の輝度値i(A4)から計算する方法を図解している。計算式は以下の通りとなる。
注目画素点に隣接する3つの画素点について積分画素値を既に計算済みであれば、上式(7)を用いることで、注目画素点を頂点とする直角2等辺3角形の領域内のすべての画素点について上式(5)に従って積分画素値を逐次計算する場合と比較して、積分画像をはるかに簡単に求めることができる(同上)。
図9には、斜め方向矩形フィルター用の積分画像を用いて画像内の任意の矩形領域における輝度値の和を高速に計算する方法を図解している。図中、A、A+B、A+C、A+B+C+Dの各矩形領域内における輝度値の合計は、各画素点a、b、c、dにおける積分画素値RSAT(a)、RSAT(b)、RSAT(c)、RSAT(d)の値である。したがって、矩形領域D内の輝度値の和は、4つの画素点a〜dにおける積分画素値RSAT(a)〜RSAT(d)の加算及び引き算、すなわちRSAT(d)−RSAT(b)−RSAT(c)+RSAT(a)により高速に計算することができる。
斜め方向用の矩形フィルターは、白矩形と黒矩形を45度又は−45度の方向に並べて構成される。黒矩形に対応する領域内の輝度値の和と白矩形に対応する領域内の輝度値の和の各々を、図9に示したように積分画像を用いて、それぞれ求めることできる。したがって、白矩形の領域の輝度値の和から黒矩形の領域の輝度値の和を引き算することで、各スキャン位置にて斜め方向用の矩形フィルターを重ねた領域の矩形特徴を高速に計算することができる。
従来、非特許文献1、2で開示されたような積分画像を用いて矩形特徴の計算を行なう場合、入力画像から上式(2)又は(5)で記述される計算式に従って入力画像と同じサイズの積分画像を1回生成しておき(図3を参照のこと)、この積分画像上で矩形フィルターをスキャンさせてスコアー計算するのが一般的である。しかしながら、入力画像と同じサイズの積分画像を生成することは、入力画像と同じサイズのメモリー・バッファーが必要であることを意味し、例えば入力画像がVGA画像であれば、積分画像用に1.2Mバイトのメモリー・バッファーが必要である。かかるメモリー容量は、ハードウェアで実装する際や、小メモリー容量のPCや組み込みデバイス上で処理する際に問題となる。
物体検出処理では、入力画像上で検索ウィンドウをスキャンしながら、スキャン位置毎に各矩形フィルターの矩形特徴を逐次的に計算する。各スキャン位置で矩形特徴を計算する際には、検出したい物体のサイズすなわち検索ウィンドウのサイズに相当する領域の積分画像があれば十分である。
そこで、本発明者は、入力画像全体の積分画像を生成するのではなく、スキャン位置毎に検索ウィンドウの大きさに相当する必要なサイズだけの部分的な積分画像を生成して矩形特徴を計算するという方法を提案する。かかる提案方法によれば、積分画像を用いることによる矩形特徴の計算の高速化と併せて、積分画像を保持するメモリー・バッファーの容量削減の効果を得ることができる。
例えば、検索ウィンドウのサイズが64×32画素であれば、検索ウィンドウのサイズ相当の積分画像を保持するために必要なメモリー容量は約11Kバイトであり(但し、1画素を4バイトで表現する場合)、入力画像全体の積分画像を保持する場合と比較すると、約1/100程度で済み、大幅なメモリー量削減になる。
図10には、本発明の一実施形態に係る物体検出装置10の機能的構成を模式的に示している。図示の物体検出装置10は、画像入力部11と、スケーリング部12と、走査部13と、判別器14と、集団学習機15で構成される。
画像入力部11は、例えばディジタルカメラで撮影された濃淡画像(輝度画像)を入力する。スケーリング部12は、入力画像を、指定されたすべてのスケールに拡大又は縮小したスケーリング画像を出力する。走査部13は、各スケーリング画像について、検出したい物体の大きさとなる検索ウィンドウを例えば最上ラインから下に向かって順次水平スキャンして、現在のスキャン位置におけるウィンドウ画像を切り出す。そして、判別器14は、走査部13にて順次スキャンされた各ウィンドウ画像に所望の物体(例えば、被写体の顔や、手などの特定の部位)が存在するか否かを判別し、対象物を検出したときには、その検出ウィンドウSの領域を示す位置及び大きさを検出結果として出力する。ここで、判別器14は、複数の弱判別器を含むが、個々の弱判別器には矩形フィルターが用いられ、且つ、矩形特徴の計算には積分画像を用いて高速化が図られている。また、走査部13は、スキャン位置毎にウィンドウ画像分のサイズの積分画像を逐次生成し、積分画像を保持するためのメモリー容量を節約するようなっている。
集団学習機15は、集団学習により判別器14を構成する複数の弱判別器の集団学習を実行する。判別器14は、集団学習機15の学習結果を参照して、スキャン位置毎にウィンドウ画像内に所望の物体が存在するか否かを判別する。なお、集団学習機15は、物体検出装置10内のコンポーネントであっても、あるいは外部の独立した装置であってもよい。
画像入力部11に入力された画像(輝度画像)は、まずスケーリング部12に供給される。スケーリング部12では、例えばバイリニア補間を用いた画像の縮小が行なわれる。最初に複数の縮小画像を生成するのではなく、必要とされる画像を走査部13に対して出力し、その画像の処理を終えた後で、次のさらに小さな縮小画像を生成するという処理を繰り返す。図11には、スケーリング部12が縮小画像12A、12B、12C、…を順次生成する様子を示している。同図に示すように、入力画像12Aをそのまま走査部13へ出力し、走査部13及び判別器14の処理が終了するのを待って、入力画像12Aのサイズを縮小した入力画像12Bを生成する。次いで、この入力画像12Bにおける走査部13及び判別器14の処理が終了してから、入力画像12Bのサイズをさらに縮小した入力画像12Cを走査部13に出力するというように、順次縮小画像12D、12Eなどを生成していく。そして、縮小画像の画像サイズが、走査部13にて走査するウィンドウ・サイズより小さくなった時点で処理を終了する。画像入力部11は、このような処理が終了してから、次の入力画像をスケーリング部12に出力する。
図12には、走査部13において入力画像上で所定のウィンドウ・サイズの検索ウィンドウSをスキャンする様子を示している。ウィンドウ・サイズは、後段の判別器5が受け付ける(すなわち対象物の判別に適した)サイズであり、例えば64×32画素である。走査部13は、スケーリング部12からの入力画像上の現在のスキャン位置に検索ウィンドウSを当て嵌めて、ウィンドウ画像を切り取る。また、本実施形態では、走査部13は、スキャン位置毎に検索ウィンドウ画像分のサイズの積分画像を逐次生成し、積分画像を保持するためのメモリー容量を節約するようなっている。そして、走査部13は、各スキャン位置におけるウィンドウ画像及びウィンドウ画像の積分画像を、メモリー・バッファー(図示しない)に保持する。検索ウィンドウSのウィンドウ・サイズは一定であるが、図11に示した通りスケーリング部12により入力画像を順次縮小してさまざまな画像サイズにスケール変換するので、任意の大きさの物体を検出することが可能となる。
判別器14は、走査部13から与えられたウィンドウ画像に所望の物体が含まれているか否かを判定する。図13には、判別器14の構成を示している。判別器14は、複数(K個)の弱判別器141〜14Kと、これらの出力にそれぞれ重みα1〜αKを乗算し、重み付き多数決を求める加算器17で構成される。
本実施形態では、個々の弱判別器141〜14Kには矩形フィルターが用いられ、且つ、矩形特徴の計算には積分画像を用いて高速化が図られている。各弱判別器141〜14Kは、現在のスキャン位置における検索ウィンドウの画像及びその積分画像を各々のメモリー・バッファー(前述)から読み出すと、スキャン位置(x,y)における矩形特徴fi(x,y)を高速に計算する(但し、iは1〜Kの整数)。各矩形特徴fi(x,y)は、検索ウィンドウに所望の物体が含まれるか否かをある程度の確率で示す推定値である。加算器17は、矩形特徴fi(x,y)を重み付き加算して検出スコアーF(x,y)を求める。各む矩形特徴fi(x,y)に付けられる重みα1〜αKは、各弱判別器141〜14Kに対する信頼度を表す係数である。そして、判別器14は、この加算結果をより強い判別結果として出力する。
集団学習機15は、あらかじめ弱判別器141〜14Kに割り当てる矩形フィルターと、それらの出力(矩形特徴)に乗算する重みα1〜αKを集団学習により学習する。集団学習としては、複数の弱判別器141〜14Kの結果を多数決にて求めることができる手法を適用することができる。例えば、データの重み付けを行なって重み付き多数決を行なうAdaBoostなどのブースティングを用いた集団学習を適用可能である。
学習の際には、所望の物体であるかの2クラスが分別すなわちラベリングされた濃淡画像からなる複数の学習サンプルを各弱判別器141〜14Kに投入して、それぞれの矩形特徴をあらかじめ学習しておく。そして、判別の際には、走査部13から順次供給されるウィンドウ画像について算出した矩形特徴を、あらかじめ学習しておいた矩形特量と比較して、ウィンドウ画像に所望の物体が含まれるか否かを推定するための推定値を確定的又は確率的に出力する。
AdaBoostでは、各弱判別器141〜14Kが順次推定値を算出し、これに伴い重み付き多数決の値が逐次更新されていく。各弱判別器141〜14Nでそれぞれ使用する矩形フィルター、集団学習機15が学習サンプルを使用した集団学習により逐次的に生成したものであり、例えばその生成順に矩形特徴を算出する。また、重み付き多数決の重みα1〜αK(信頼度)は、各弱判別器141〜14Kを生成する学習工程にて学習される。
なお、複数の弱判別器の集団学習の詳細については、例えば特許文献1(段落0072〜0141)を参照されたい。
スキャン位置毎に検索ウィンドウ・サイズの積分画像のみを生成して矩形特徴を計算する方法によれば、積分画像を用いることによる矩形特徴の計算の高速化と併せて、メモリー容量削減の効果を得ることができる。ここで、検索ウィンドウ相当の必要なサイズだけとはいえ、スキャン位置毎に必要なサイズ内のすべての画素点について積分画像を計算し直すと、その都度計算時間がかかってしまい、積分画像を用いて矩形特徴を高速に計算するという本来のメリットを活かせなくなってしまう。
このため、上記の提案方法を実現する際に、既に計算した検索ウィンドウ分の積分画像のうち、後続のスキャン位置でまだ必要な値はメモリー・バッファーに保持し続けながら、スキャンする度に新たに検索ウィンドウに加わる領域についてのみ積分画像を計算してメモリー・バッファーに追加して保持するので、積分画像の計算量を削減することができる。また、メモリー・バッファーに追加する領域の積分画像を計算する際、注目画素点に隣接する3つの画素点について計算済みの積分画素値を利用して再帰的に計算することで(図5、図8、上式(4)、(7)を参照のこと)、注目画素点の積分画像の計算を簡素化することができる。
垂直・水平方向用の矩形フィルターを用いる場合の、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域について、図14A〜図14Gを参照しながら説明する。但し、同図は、スキャン方向を縦方向(Y方向)とする例である。まず、原点(0,0)を開始位置として縦方向のスキャンラインに沿って検索ウィンドウを所定のスキップ幅(skip画素)ずつスキャンし、スキャン位置毎に積分画像の生成と検出スコアーの計算を行なう。そして、検索ウィンドウがスキャン方向の終端(Y座標の上限)に達すると、検索ウィンドウのスキャンラインを水平方向に所定のスキップ幅(skip画素)だけスキップさせてスキャンを繰り返していく。
まず、走査部13は、検索ウィンドウを原点位置(0,0)に設定して、図14A中の参照番号1401で示される検索ウィンドウ領域内のすべての画素点について、上式(2)、(3−1)、(3−2)に従って積分画素値を計算すると、その結果をメモリー・バッファーに保持する。
積分画素値を計算するとき、隣接する3画素点の既に算出した積分画素値を適宜利用して、図5並びに上式(4)に示したように、注目画素点の積分画素値を再帰的に計算する方法を適用する。
そして、判別部14では、各弱判別器141〜14Kがメモリー・バッファーに保持されている現在の検索ウィンドウ領域1401内の積分画像を用いて、当該スキャン位置での矩形特徴fi(0,0)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(0,0)を出力する。
次いで、図14Bに示すように、走査部13は、所定のスキップ幅(skip画素)だけ検索ウィンドウをスキャンライン(x=0)に沿って縦方向に移動させる(すなわち、y=y+skip)。移動した後のスキャン位置(0,skip)の検索ウィンドウ1402のうち、参照番号1402Aで示す、直前のスキャン位置の検索ウィンドウ1401と重なる領域内の各画素点については、計算済みの積分画素値がメモリー・バッファーに保持されている。そこで、走査部13は、参照番号1402Bで示す、スキャン位置の移動によって新たに検索ウィンドウ1402に加わるスキャン方向の先端の領域内の各画素についてのみ、積分画像の計算を行なうと、その結果をメモリー・バッファーにコピーし追加して保持する。
ここで、図14B中の参照番号1402Bで示す、追加部分についての積分画像を計算する際には、領域1402内の隣接する3画素点の既に算出した積分画素値を適宜利用して、図5並びに上式(4)に示したように、注目画素点の積分画素値を再帰的に計算する方法を適用することによって、計算コストを削減することができる。
また、検索ウィンドウの移動に伴って、図14B中の参照番号1403で示す領域の積分画像は以降の矩形特徴の計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号1404で示す、次のスキャンラインの直前の1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域は、メモリー・バッファーに保持しておく。当該1画素ライン分の領域1404は、次のスキャンライン(x=skip)に移動したときに、注目画素点に隣接する画素点の既に計算した積分画素値(図5を参照のこと)として利用すれば、注目画素の積分画素値を上式(4)に従って再帰的に計算できるからである。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ領域1402内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(0,skip)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(0,skip)を出力する。
さらに次いで、図14Cに示すように、走査部13は、所定のスキップ幅(skip画素)だけ検索ウィンドウをスキャンライン(x=0)に沿って縦方向に移動させる(すなわち、y=y+skip)。移動した後の検索ウィンドウ1405のうち、参照番号1405Aで示す領域内の積分画素値は、メモリー・バッファーに保持されている。そこで、走査部13は、参照番号1405Bで示す、スキャン位置の移動によって新たに検索ウィンドウ1405に加わる領域内の各画素についてのみ積分画素値の計算を行ない、その結果をメモリー・バッファーに追加して保持する。追加部分の領域1405Bについての積分画像を計算する際には、領域1405内の隣接する3画素点の既に算出した積分画素値を適宜利用して、図5並びに上式(4)に示したように、注目画素点の積分画素値を再帰的に計算する。
また、検索ウィンドウの移動に伴って、参照番号1406で示す領域の積分画像は以降の矩形特徴の計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号1407で示す、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域の積分画像は、次のスキャンライン(x=skip)で積分画素値を再帰的に計算する際に、隣接する画素点の既知の積分画素値として利用するため、走査部13は、メモリー・バッファーに保持しておく。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ領域1405内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(0,2skip)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(0,2skip)を出力する。
以降は、検索ウィンドウが現在のスキャンライン(x=0)の終端(y=height)に達するまで、図14B並びに図14Cに示した処理が、検索ウィンドウがスキャン位置を移動する度に繰り返し実行される。
図14Dには、検索ウィンドウがスキャンライン(x=0)の終端(y=height)に到達した際に、メモリー・バッファーに積分画像が保持されている領域を示している。参照番号1408で示す検索ウィンドウ領域内の積分画像を計算するが、当該スキャン位置での矩形特徴計算に用いた後、次のスキャンラインでの矩形特徴計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号1409で示す、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域の積分画像は、次のスキャンラインで積分画素値を再帰的に計算する際に、隣接する画素点の既知の積分画素値として利用するため、走査部13は、メモリー・バッファーに保持しておく。
検索ウィンドウがスキャンライン(x=0)の終端(y=height)に到達すると、走査部13は、スキャンラインを所定のスキップ幅(skip)だけスキャンラインに直交する水平方向に移動させるとともに(すなわち、x=skip)、検索ウィンドウをこのスキャンラインの先頭に設定して(すなわち、y=0)、スキャンを開始する。このスキャンライン(x=skip)上をスキャンし検出スコアーを算出する間、走査部13は、直前のスキャンライン(x=0)上での処理で保持した領域1409の積分画素値をメモリー・バッファーに保持し続ける。そして、現在のスキャンライン(x=skip)上の各スキャン位置で積分画素値を新たに計算する際には、領域1409内の積分画素値を隣接画素点の既に算出した積分画素値として適宜利用して、注目画素点の積分画素値を再帰的に計算する。
図14Eには、検索ウィンドウが次のスキャンライン(x=skip)上で先頭位置(y=0)に設定されたときの様子を示している。参照番号1410で示される検索ウィンドウ領域内の画素点について積分画像を計算する。その際、メモリー・バッファーに保持されている領域1409内の隣接する3画素点の既に算出した積分画素値を適宜利用して、図5並びに上式(4)に示したように、注目画素点の積分画素値を再帰的に計算する。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ1410領域内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(skip,0)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(skip,0)を出力する。
次いで、図14Fに示すように、走査部13は、所定のスキップ幅(skip画素)だけ検索ウィンドウをスキャンラインに沿って縦方向に移動させる(すなわち、y=y+skip)。移動した後の検索ウィンドウ1411のうち、参照番号1411Aで示される、直前のスキャン位置の検索ウィンドウ領域内の各画素については、計算済みの積分画像がメモリー・バッファーに保持されている。そこで、走査部13は、参照番号1411Bで示す、スキャン位置の移動によって新たに検索ウィンドウ1411に加わるスキャン方向の先端の領域内の各画素についてのみ、積分画素値の計算を行なうと、その結果をメモリー・バッファーに追加して保持する。追加部分についての積分画像を計算する際には、参照番号1409並びに1411で示される領域内の隣接する3画素点の既に算出した積分画素値を適宜利用して、図5並びに上式(4)に示したように、注目画素点の積分画素値を再帰的に計算する。
また、検索ウィンドウの移動に伴って、参照番号1412で示す領域の積分画像は以降の矩形特徴の計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号1413で示す、次のスキャンラインの直前1画素分(すなわち、x=2skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域は、次のスキャンライン(x=2skip)で積分画素値を再帰的に計算する際に、隣接する画素点の既知の積分画素値として利用するため、走査部13は、メモリー・バッファーに保持しておく。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ領域1411内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(skip,skip)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(skip,skip)を出力する。
以降は、検索ウィンドウが現在のスキャンライン(x=skip)の終端に達するまで、図14Fに示した処理が、検索ウィンドウがスキャン位置を移動する度に繰り返し実行される。
また、検索ウィンドウがスキャンライン(x=skip)の終端(y=height)に到達すると、走査部13は、スキャンラインを所定のスキップ幅(skip)だけスキャンラインに直交する水平方向に移動させるとともに(すなわち、x=x+skip=2skip)、検索ウィンドウをこのスキャンラインの先頭に設定して(すなわち、y=0)、スキャンを開始する。このスキャンライン(x=2skip)上でスキャンする間、走査部13は、直前のスキャンライン(x=skip)上での処理で保持した領域1414の積分画像をメモリー・バッファーに保持し続ける。そして、現在のスキャンライン(x=2skip)上の各スキャン位置で積分画素値を新たに計算する際には、領域1414内の積分画素値を隣接画素点の既に算出した積分画素値として適宜利用して、注目画素点の積分画素値を再帰的に計算する。また、2つ前のスキャンライン上でのスキャン時に保持した領域1409内の積分画像(前述)は、スキャンラインの移動に伴って不要となるので、走査部13は、メモリー・バッファーから廃棄する。
図14Gには、検索ウィンドウが次のスキャンライン(x=2skip)上で先頭位置(y=0)に設定されたときの様子を示している。当該スキャンライン上では、図14E、図14Fに示した処理と同様の処理が繰り返し実行される。そして、スキャン位置が当該スキャンライン(x=2skip)の終端(y=height)に到達すると、さらにスキャンラインを所定のスキップ幅(skip)だけスキャンラインに直交する水平方向に移動させる(x=x+skip)。そして、スキャンラインが入力画像の終端(x=width)に到達するまで、図14E〜図14Gに示した処理と同様の処理が繰り返し実行される。
入力画像全体ではなく、図14に示したように検索ウィンドウのサイズに相当する領域並びに積分画素値の再帰的計算に必要な領域の積分画像のみをメモリー・バッファーに保持する場合に必要となるメモリー・バッファーの容量について考察してみる。但し、入力画像の幅及び高さをそれぞれwidth、heightとし、検索ウィンドウのサイズをw×hとし、1画素をnバイトで表現するものとする。図14に示したように、入力画像の縦方向(Y方向)をスキャンラインとする場合、図15に示すように、積分画像の保持用に(height+w×h)×nバイトのメモリー容量が必要である。例えば、入力画像がVGA画面であり、検索ウィンドウのサイズを32×64画素、1画素を4バイトで表現する場合、(480+32×64)×4=10,336バイトすなわち約11Kバイトである。図3に示したようにVGA画像全体について積分画像を保存するには約1.2Mバイトのバッファーが必要であることから、メモリー容量節約の効果は極めた大きい。また、スキャン方向を縦方向にした場合、メモリー領域が連続になり、扱い易くなるというメリットもある。
一方、入力画像の横方向(X方向)をスキャンラインとする場合には、図16に示すように、積分画像の保持用に(width+w×h)×nバイトのメモリー容量が必要である。例えば、入力画像がVGA画面であり、検索ウィンドウのサイズを32×64画素、1画素を4バイトで表現する場合、(640+32×64)×4=10,752バイトすなわち約11Kバイトであり、メモリー容量節約の効果は大きい(同上)。
なお、図15並びに図16では、検索ウィンドウをスキャンする際のスキップ幅(skip)を1画素として、積分画像を保持するために必要なメモリー・バッファーの容量について試算したが、本発明の要旨は特定のスキップ幅に限定されるものではない。
図17には、垂直・水平方向用矩形フィルターによる矩形特徴を、積分画像を用いて計算するための処理手順をフローチャートの形式で示している。但し、図14に示したようにスキャン方向を縦方向(Y方向)とし、XY各方向の1回のスキャン当たりのスキャン位置の移動量をskip(画素数)とする。
まず、図14Aに示したように、走査部13は、スキャン位置(x,y)を原点位置(0,0)に設定して、x=0をスキャンラインとして検索ウィンドウのスキャンを開始する(ステップS1)。
走査部13は、現在のスキャン位置(x,y)に設定した検索ウィンドウのサイズ分の積分画像を生成して(ステップS2)、積分画像用のメモリー・バッファーに保持する。検索ウィンドウのうち計算済みの積分画素値がメモリー・バッファー内に保持されている領域については、これを利用する。また、積分画像を生成する際、既に計算済みの隣接画素点の積分画素値を適宜用いて、再帰的に積分画素値を計算する。
走査部13は、入力画像上の現在のスキャン位置(x,y)に検索ウィンドウを当て嵌めて、入力画像用のメモリー・バッファーからウィンドウ画像を切り取る。そして、判別部14では、積分画像用のメモリー・バッファーから積分画像を読み出すと、各弱判別器141〜14Kにおいて矩形フィルター(但し、垂直・水平方向用フィルター)の矩形特徴fi(x,y)を高速に算出する(図6を参照のこと)。そして、加算器17が各矩形特徴fi(x,y)を重み付き加算して、現在のスキャン位置(x,y)での検出スコアーを計算する(ステップS3)。
判別部14において現在のスキャン位置(x,y)での矩形特徴計算及び検出スコアーの計算を終了すると、走査部13は、スキャン位置を移動させる。すなわち、走査部13は、現在のスキャン位置のy座標に所定のスキップ幅skipを加算して(ステップS4)、スキャンラインすなわちY方向に沿って移動させてみる。
このとき、走査部13は、スキャン位置のy座標が入力画像の高さheight未満か、すなわち、スキャン位置が現在のスキャンラインの終端にまだ到達していないかをチェックする(ステップS5)。
ここで、スキャン位置が現在のスキャンラインの終端にまだ到達していないときには(ステップS5のYes)、走査部13は、積分画像用のメモリー・バッファーに積分画素値を保持しておくべき領域を更新するとともに、これに伴い積分画素値の計算を行なう。具体的には、積分画像を保持すべき検索ウィンドウの領域を、skip×widthだけ移動する(ステップS6)。
このとき、走査部13は、新たに検索ウィンドウに加わる、積分画素値をまだ計算していない領域(例えば、図14B中の参照番号1403で示す領域)内の各画素点についてのみ、積分画素値の計算を行なうと、その結果をメモリー・バッファーに追加して保持する(ステップS7)。その際、既に計算済みの隣接画素点の積分画素値を適宜用いて、再帰的に積分画素値を計算する。
また、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域(例えば、図14B中の参照番号1405で示す領域)は、次のスキャンラインでの積分画素値の再帰的計算に利用するため、走査部13は、当該領域内の各画素点の積分画素値をメモリー・バッファーに保持しておく(ステップS18)。検索ウィンドウの移動に伴って、検索ウィンドウから外れた領域(例えば、図14B中の参照番号1404で示す領域)の積分画素値は、メモリー・バッファーから廃棄される。
但し、スキャン幅skipが検索ウィンドウの幅wを超えるときには、ステップS8では、上記に代えて、skip×skip画素分の積分画素値を計算して、メモリー・バッファーにコピーする処理を行なう。
一方、スキャン位置(x,y)が現在のスキャンラインの終端に到達したときには(ステップS5のNo)、走査部13は、検索ウィンドウを次のスキャンラインに移動させる。すなわち、走査部13は、検索ウィンドウのy座標位置を0に戻すとともに、x座標位置に所定のスキップ幅skipを加算して(ステップS9)、ステップS2に戻り、次のスキャンラインで上述と同様の処理を繰り返し実行する。
なお、図14A〜図14G、図17には、スキャンライン上でスキャン位置を移動させる度に新たに追加された領域について逐次的に積分画像を生成する方法を図解したが、本発明の要旨は特定のスキップ幅に限定されるものではない。スキャンライン単位で必要な積分画像を一括して生成して、スキャンラインを移動させるまでの間はメモリー・バッファーに保持しておくようにしてもよい。後者の場合であっても、入力画像全体にわたって積分画像を保持するのと比較すれば、メモリー容量の節約の効果がある。また、同じスキャンライン上では1回だけ積分画像を生成する処理が発生し、スキャン位置を移動するときにはメモリー・バッファーから積分画像を読み出すアドレスを変更するだけでよい。
図18には、入力画像の縦方向(Y方向)をスキャン方向とする場合に、スキャンライン毎に検索ウィンドウの幅(width)分の1列の積分画像を一括して生成し、メモリー・バッファーに保持する様子を示している。この場合、入力画像の幅及び高さをそれぞれwidth、heightとし、検索ウィンドウのサイズをw×hとし、1画素をnバイトで表現するものとすると、積分画像の保持用にheight×w×nバイトのメモリー容量が必要である。入力画像がVGA画面であり、検索ウィンドウのサイズを32×64画素、1画素を4バイトで表現する場合、480×32×4=61,336バイトすなわち約62Kバイトである。図3に示したようにVGA画像全体について積分画像を保存するのと比較すると、メモリー容量節約の効果がある。
また、図19には、入力画像の横方向(X方向)をスキャン方向とする場合に、スキャンライン毎に検索ウィンドウの高さ(height)分の1行の積分画像を一括して生成し、メモリー・バッファーに保持する様子を示している。この場合、積分画像の保持用にheight×w×nバイトのメモリー容量が必要である(但し、1画素をnバイトで表現するものとする)。入力画像がVGA画面であり、検索ウィンドウのサイズを32×64画素、1画素を4バイトで表現する場合、640×32×4=163,840バイトすなわち約164Kバイトである。図3に示したようにVGA画像全体について積分画像を保存するのと比較すると、メモリー容量節約の効果がある。
図14A〜図14G、並びに図17には、垂直・水平方向用の矩形フィルターを用いる場合に、積分画像保持用のメモリー・バッファーの容量を節約する方法について示した。斜め方向用の矩形フィルターを用いる場合であっても、積分画像保持用のメモリー・バッファーの容量を節約することができるが、細部では異なる処理が必要となる。
斜め方向用の矩形フィルターを用いる場合の、入力画像の各スキャン位置において積分画素値を新たに計算する領域、並びに、メモリー・バッファーに積分画素値を保持しておくべき領域について、図20A〜図20Gを参照しながら説明する。但し、同図は、スキャン方向を縦方向(Y方向)とする例である。まず、原点(0,0)を開始位置として縦方向のスキャンラインに沿って検索ウィンドウを所定のスキップ幅(skip画素)ずつスキャンし、スキャン位置毎に積分画像の生成と検出スコアーの計算を行なう。そして、検索ウィンドウがスキャン方向の終端(Y座標の上限)に達すると、検索ウィンドウのスキャンラインを水平方向に所定のスキップ幅(skip画素)だけスキップさせてスキャンを繰り返していく。
まず、走査部13は、検索ウィンドウを原点位置(0,0)に設定して、図20A中の参照番号2001で示される検索ウィンドウ領域内のすべての画素点について、上式(5)、(6)に従って積分画素値を計算すると、その結果をメモリー・バッファーにコピーして保持する。
積分画素値を計算するとき、先に算出した隣接する3画素点の積分画素値を適宜利用して、図8並びに上式(7)に示したように、注目画素点の積分画素値を再帰的に計算する方法を適用する。
また、斜め方向矩形フィルターの積分画素値の計算には、図7、図8に示したように、注目画素点を頂点とする直角2等辺3角形の領域内の画素点について積分画素値を求める必要がある。このため、領域2001内のすべての画素点について積分画素値を再帰的に計算する過程で、検索ウィンドウに相当する領域2001以外に、領域2002内の各画素点についても積分画素値を計算することになる。領域2002の積分画像は、後続のスキャン位置で必要になることから、領域2001の積分画像と併せてメモリー・バッファーにコピーして保持しておく。
そして、判別部14では、各弱判別器141〜14Kがメモリー・バッファーに保持されている現在の検索ウィンドウ領域2001内の積分画像を用いて、当該スキャン位置での矩形特徴fi(0,0)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(0,0)を出力する。
次いで、図20Bに示すように、走査部13は、所定のスキップ幅(skip画素)だけ検索ウィンドウをスキャンライン(x=0)に沿って縦方向に移動させる(すなわち、y=y+skip)。移動した後のスキャン位置(0,skip)の検索ウィンドウ2003のうち、参照番号2003Aで示す、直前のスキャン位置の検索ウィンドウ2001と重なる領域内の各画素点、並びに、参照番号2003Bで示す、領域2002と重なる領域内の各画素点については、計算済みの積分画素値がメモリー・バッファーに保持されている。そこで、走査部13は、参照番号2003Cで示す、新たな検索ウィンドウ2003のうち未計算の領域内の各画素点についてのみ、積分画像の計算を行なうと、その結果をメモリー・バッファーにコピーし追加して保持する。
ここで、領域2003C内のすべての画素点について再帰的に積分画素値を計算する過程で、検索ウィンドウに相当する領域2003以外に、領域2004内の各画素点についても積分画素値を計算することになる。領域2004の積分画像は、後続のスキャン位置で必要になることから、併せてメモリー・バッファーにコピーして保持しておく。
また、検索ウィンドウの移動に伴って、図20B中の参照番号2005で示す領域の積分画像は以降の矩形特徴の計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号2006で示す、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域は、メモリー・バッファーに保持しておく。当該1画素ライン分の領域2006は、次のスキャンライン(x=skip)に移動したときに、注目画素点に隣接する画素点の積分画素値(図8を参照のこと)として利用すれば、上式(7)に従って積分画素値を再帰的に計算できるからである。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ領域1402内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(0,skip)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(0,skip)を出力する。
さらに次いで、図20Cに示すように、走査部13は、所定のスキップ幅(skip画素)だけ検索ウィンドウをスキャンライン(x=0)に沿って縦方向に移動させる(すなわち、y=y+skip)。移動した後のスキャン位置(0,skip)の検索ウィンドウ2007のうち、参照番号2007Aで示す、直前のスキャン位置の検索ウィンドウ2003と重なる領域内の各画素点、並びに、参照番号2007Bで示す、領域2002又は2004と重なる領域内の各画素点については、計算済みの積分画素値がメモリー・バッファーに保持されている。そこで、走査部13は、参照番号2007Cで示す、新たな検索ウィンドウ2007のうち未計算の領域内の各画素点についてのみ、積分画像の計算を行なうと、その結果をメモリー・バッファーにコピーし追加して保持する。
ここで、領域2007C内のすべての画素点について再帰的に積分画素値を計算する過程で、検索ウィンドウに相当する領域2007以外に、領域2008内の各画素点についても積分画素値を計算することになる。領域2008の積分画像は、後続のスキャン位置で必要になることから、併せてメモリー・バッファーにコピーして保持しておく。
また、検索ウィンドウの移動に伴って、図20B中の参照番号2009で示す領域の積分画像は以降の矩形特徴の計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号2010で示す、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域は、メモリー・バッファーに保持しておく。当該1画素ライン分の領域2010は、次のスキャンライン(x=skip)で積分画素値を再帰的に計算する際に、既知の積分画素値として利用するため、走査部13は、メモリー・バッファーに保持しておく。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ領域2007内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(0,2skip)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(0,2skip)を出力する。
以降は、検索ウィンドウが現在のスキャンライン(x=0)の終端(y=height)に達するまで、図20B並びに図20Cに示した処理が、検索ウィンドウがスキャン位置を移動する度に繰り返し実行される。
図20Dには、検索ウィンドウがスキャンライン(x=0)の終端(y=height)に到達した際に、メモリー・バッファーに積分画像が保持されている領域を示している。参照番号2011で示す領域検索ウィンドウ領域内の積分画像を計算するが、当該スキャン位置での矩形特徴計算に用いた後、次のスキャンラインでの矩形特徴計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号2012で示す、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域は、次のスキャンラインで積分画素値を再帰的に計算する際に、既知の積分画素値として利用するため、走査部13は、メモリー・バッファーに保持しておく。
検索ウィンドウがスキャンライン(x=0)の終端(y=height)に到達すると、走査部13は、スキャンラインを所定のスキップ幅(skip)だけスキャンラインに直交する水平方向に移動させるとともに(すなわち、x=skip)、検索ウィンドウをこのスキャンラインの先頭に設定して(すなわち、y=0)、スキャンを開始する。このスキャンライン(x=skip)上をスキャンし検出スコアーを算出する間、走査部13は、直前のスキャンライン(x=0)上での処理で保持した領域2012の積分画素値をメモリー・バッファーに保持し続ける。そして、現在のスキャンライン(x=skip)上の各スキャン位置で積分画素値を新たに計算する際には、領域2012内の積分画素値を隣接画素点の積分画素値として適宜利用して、注目画素点の積分画素値を再帰的に計算する。
図20Eには、検索ウィンドウが次のスキャンライン(x=skip)上で先頭位置(y=0)に設定されたときの様子を示している。参照番号2013で示される検索ウィンドウ領域内の画素点について積分画像を計算する。その際、メモリー・バッファーに保持されている領域2012内の既に算出した隣接する3画素点の積分画素値を適宜利用して、図8並びに上式(7)に示したように、注目画素点の積分画素値を再帰的に計算する。
また、領域2013内のすべての画素点について積分画素値を再帰的に計算する過程で、検索ウィンドウに相当する領域2013以外に、領域2014内の各画素点についても積分画素値を計算することになる。領域2014の積分画像は、後続のスキャン位置で必要になることから、領域2013の積分画像と併せてメモリー・バッファーにコピーして保持しておく。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ2013領域内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(skip,0)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(skip,0)を出力する。
次いで、図20Fに示すように、走査部13は、所定のスキップ幅(skip画素)だけ検索ウィンドウをスキャンラインに沿って縦方向に移動させる(すなわち、y=y+skip)。移動した後のスキャン位置(skip,skip)の検索ウィンドウ2015のうち、参照番号2015Aで示す、直前のスキャン位置の検索ウィンドウ2013と重なる領域内の各画素点、並びに、参照番号2015Bで示す、領域2014と重なる領域内の各画素点については、計算済みの積分画素値がメモリー・バッファーに保持されている。そこで、走査部13は、参照番号2015Cで示す、新たな検索ウィンドウ2015のうち未計算の領域内の各画素点についてのみ、積分画像の計算を行なうと、その結果をメモリー・バッファーにコピーし追加して保持する。
ここで、領域2015C内のすべての画素点について再帰的に積分画素値を計算する過程で、検索ウィンドウに相当する領域2015以外に、領域2016内の各画素点についても積分画素値を計算することになる。領域2016の積分画像は、後続のスキャン位置で必要になることから、併せてメモリー・バッファーにコピーして保持しておく。
また、検索ウィンドウの移動に伴って、図20F中の参照番号2017で示す領域の積分画像は以降の矩形特徴の計算には不要となるので、走査部13は、メモリー・バッファーから廃棄する。但し、参照番号2018で示す、次のスキャンラインの直前1画素分(すなわち、x=2skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域は、次のスキャンライン(x=2skip)で積分画素値を再帰的に計算する際に、既知の積分画素値として利用するため、走査部13は、メモリー・バッファーに保持しておく。
そして、判別部14では、メモリー・バッファーに保持されている現在の検索ウィンドウ領域2015内の積分画像を用いて、各弱判別器141〜14Kが当該スキャン位置での矩形特徴fi(skip,skip)をそれぞれ計算し、加算器17がこれらを重み付け加算して、当該スキャン位置での検出スコアーF(skip,skip)を出力する。
以降は、検索ウィンドウが現在のスキャンライン(x=skip)の終端に達するまで、図20Fに示した処理が、検索ウィンドウがスキャン位置を移動する度に繰り返し実行される。
また、検索ウィンドウがスキャンライン(x=skip)の終端(y=height)に到達すると、走査部13は、スキャンラインを所定のスキップ幅(skip)だけスキャンラインに直交する水平方向に移動させるとともに(すなわち、x=x+skip=2skip)、検索ウィンドウをこのスキャンラインの先頭に設定して(すなわち、y=0)、スキャンを開始する。このスキャンライン(x=2skip)上でスキャンする間、走査部13は、直前のスキャンライン(x=skip)上での処理で保持した領域2019の積分画像をメモリー・バッファーに保持し続ける。そして、現在のスキャンライン(x=2skip)上の各スキャン位置で積分画素値を新たに計算する際には、領域2019内の積分画素値を隣接画素点の積分画素値として適宜利用して、注目画素点の積分画素値を再帰的に計算する。また、2つ前のスキャンライン上でのスキャン時に保持した領域2012内の積分画像(前述)は、スキャンラインの移動に伴って不要となるので、走査部13は、メモリー・バッファーから廃棄する。
図20Gには、検索ウィンドウが次のスキャンライン(x=2skip)上で先頭位置(y=0)に設定されたときの様子を示している。当該スキャンライン上では、図20E、図20Fに示した処理と同様の処理が繰り返し実行される。そして、スキャン位置が当該スキャンライン(x=2skip)の終端(y=height)に到達すると、さらにスキャンラインを所定のスキップ幅(skip)だけスキャンラインに直交する水平方向に移動させ(x=x+skip)、スキャンラインが入力画像の終端(x=width)に到達するまで、図20E〜図20Gに示した処理と同様の処理が繰り返し実行される。
図21には、斜め方向用矩形フィルターによる矩形特徴を、積分画像を用いて計算するための処理手順をフローチャートの形式で示している。但し、図14に示したようにスキャン方向を縦方向(Y方向)とし、XY各方向の1回のスキャン当たりのスキャン位置の移動量をskip(画素数)とする。
まず、図20Aに示したように、走査部13は、スキャン位置(x,y)を原点位置(0,0)に設定して、x=0をスキャンラインとして検索ウィンドウのスキャンを開始する(ステップS11)。
走査部13は、現在のスキャン位置(x,y)に設定した検索ウィンドウのサイズ分の積分画像を生成して(ステップS12)、積分画像用のメモリー・バッファーに保持する。検索ウィンドウのうち計算済みの積分画素値がメモリー・バッファー内に保持されている領域については、これを利用する。また、積分画像を生成する際、既に計算済みの隣接画素点の積分画素値を適宜用いて、再帰的に積分画素値を計算する。
走査部13は、入力画像上の現在のスキャン位置(x,y)に検索ウィンドウを当て嵌めて、入力画像用のメモリー・バッファーからウィンドウ画像を切り取る。そして、判別部14では、積分画像用のメモリー・バッファーから積分画像を読み出すと、各弱判別器141〜14Kにおいて矩形フィルター(但し、斜め方向用フィルター)の矩形特徴fi(x,y)を高速に算出する(図6を参照のこと)。そして、加算器17が各矩形特徴fi(x,y)を重み付き加算して、現在のスキャン位置(x,y)での検出スコアーを計算する(ステップS13)。
判別部14において現在のスキャン位置(x,y)での矩形特徴計算及び検出スコアーの計算を終了すると、走査部13は、スキャン位置を移動させる。すなわち、走査部13は、現在のスキャン位置のy座標に所定のスキップ幅skipを加算して(ステップS14)、スキャンラインすなわちY方向に沿って移動させてみる。
このとき、走査部13は、スキャン位置のy座標が入力画像の高さheight未満か、すなわち、スキャン位置が現在のスキャンラインの終端にまだ到達していないかをチェックする(ステップS15)。
ここで、スキャン位置が現在のスキャンラインの終端にまだ到達していないときには(ステップS15のYes)、走査部13は、積分画像用のメモリー・バッファーに積分画素値を保持しておくべき領域を更新するとともに、これに伴い積分画素値の計算を行なう。具体的には、積分画像を保持すべき検索ウィンドウの領域を、skip×widthだけ移動する(ステップS16)。
このとき、走査部13は、新たに検索ウィンドウに加わる、積分画素値をまだ計算していない領域(例えば、図20B中の参照番号2003Cで示す領域)内の各画素点についてのみ、積分画素値の計算を行なうと、その結果をメモリー・バッファーに追加して保持する(ステップS17)。その際、既に計算済みの隣接画素点の積分画素値を適宜用いて、再帰的に積分画素値を計算する。また、追加した領域内のすべての画素点について再帰的に積分画素値を計算する過程で、検索ウィンドウ以外の必要な領域(例えば、図20B中の参照番号2004で示す平行四辺形の領域)内の各画素点についても積分画素値を計算することになる。
また、次のスキャンラインの直前1画素分(すなわち、x=skip−1の1画素ライン)(若しくは1画素以上の画素幅の画素ライン)の領域(例えば、図20B中の参照番号2006で示す領域)は、次のスキャンラインでの積分画素値の再帰的計算に利用するため、走査部13は、当該領域内の各画素点の積分画素値をメモリー・バッファーに保持しておく(ステップS18)。検索ウィンドウの移動に伴って、検索ウィンドウから外れた領域(例えば、図20B中の参照番号2005で示す領域)の積分画素値は、メモリー・バッファーから廃棄される。
但し、スキャン幅skipが検索ウィンドウの幅wを超えるときには、ステップS18では、上記に代えて、skip×skip画素分の積分画素値を計算して、メモリー・バッファーにコピーする処理を行なう。
一方、スキャン位置(x,y)が現在のスキャンラインの終端に到達したときには(ステップS15のNo)、走査部13は、検索ウィンドウを次のスキャンラインに移動させる。すなわち、走査部13は、検索ウィンドウのy座標位置を0に戻すとともに、x座標位置に所定のスキップ幅skipを加算して(ステップS19)、ステップS12に戻り、次のスキャンラインで上述と同様の処理を繰り返し実行する。
斜め方向用の矩形フィルターを用いる場合も、入力画像全体ではなく、図20に示したように検索ウィンドウのサイズに相当する領域並びに積分画素値の再帰的計算に必要な領域の積分画像のみをメモリー・バッファーに保持する場合、必要となるメモリー・バッファーの容量は、垂直・水平方向用の矩形フィルターを用いる場合(図15、図16を参照のこと)と同様に、大幅に削減することができる。
また、斜め方向用の矩形フィルターを用いる場合も、垂直・水平方向用の矩形フィルターを用いる場合(図18、図19を参照のこと)と同様に、スキャンライン毎に検索ウィンドウの幅または高さ分の積分画像を一括して生成し、メモリー・バッファーに保持するという変形例も考えられる。
特開2009−140369号公報
Paul Viola & Michael Jones"Robust Real−Time Face Detection"(International Journal of Computer Vision, 2004) Rainer Lienhart,Alexander Kuranov,Vadim Pisarevsky"Empirical Analysis of Detection Cascades of Boosted Classifier"(DAGM’03,25th Pattern Recognition Symposium,Madgeburg,Germany,pp.297−304,Sep.2003)
以上、特定の実施形態を参照しながら、本発明について詳細に説明してきた。しかしながら、本発明の要旨を逸脱しない範囲で当業者が該実施形態の修正や代用を成し得ることは自明である。
本明細書では、主に輝度画像を例にとって、白矩形と黒矩形の組み合わせからなる矩形フィルターを用いて特徴量を計算する実施形態を中心に説明してきたが、本発明の要旨はこれに限定されるものではない。例えば、RGBの色成分毎の矩形フィルターを組み合わせて用いることで、カラー画像からの物体検出を行なうことができる。
また、本発明は、画像をスキャンすることで、顔、あるいは手など顔以外の部位の「検出」技術として利用することができる。同様に、顔以外のパターンにも本発明が適用可能であり、例えばロゴマークの検出などが挙げられる。あるいは、本発明は、さまざまな画像の検出、判別、識別に用いることができるが、その例を以下に挙げる。
(1)ロゴマーク検出(会社のロゴや道路標識など)
(2)笑顔などの表情判別
(3)目や口の開閉状態の判別
(4)性別判別
(5)大人・子供判別
(6)人種判別
(7)個人識別(ある特定の個人か、そうでないかの判別)
(8)メガネの有無の判別
(9)顔パーツ(目・鼻・口といった顔器官など)の位置検出
(10)文字認識
(11)車検出・車種判別
要するに、例示という形態で本発明を開示してきたのであり、本明細書の記載内容を限定的に解釈するべきではない。本発明の要旨を判断するためには、特許請求の範囲を参酌すべきである。
10…物体検出装置
11…画像入力部
12…スケーリング部
13…走査部
14…判別部
15…集団学習機

Claims (8)

  1. 被検出画像上で検索ウィンドウをスキャンする走査部と、
    各スキャン位置において、所望の物体を検出するための1以上の矩形フィルターを検索ウィンドウの画像に適用して矩形特徴を計算し、得られた1以上の前記矩形特徴に基づいて物体を検出したか否かを判別する判別部と、
    を備え、
    前記走査部は、スキャン位置毎に前記検索ウィンドウのサイズに相当する積分画像を生成して所定のメモリー・バッファーに保持し、
    前記判別部は、前記メモリー・バッファーに保持されている積分画像を用いて各スキャン位置における前記検索ウィンドウの画像について矩形特徴を計算する、
    画像処理装置。
  2. 前記走査部は、スキャン位置を移動する際に、以降のスキャン位置において不要となる領域の積分画像を前記メモリー・バッファーから廃棄するとともに、前記検索ウィンドウに新たに加わる領域の積分画像を計算して前記メモリー・バッファーに追加して保持する、
    請求項1に記載の画像処理装置。
  3. 前記走査部は、スキャン位置を移動する際に、以降のスキャン位置において前記検索ウィンドウに新たに追加される領域に隣接する領域の積分画像を前記メモリー・バッファー内に保持し続けるとともに、前記検索ウィンドウに新たに追加される領域の積分画像を、前記メモリー・バッファーに保持された前記隣接する領域の積分画像を用いて再帰的に計算する、
    請求項2に記載の画像処理装置。
  4. 前記走査部は、現在のスキャンライン上でスキャン位置を移動する際に、次のスキャンラインの直前の1画素以上の画素幅の画素ラインの積分画像を前記メモリー・バッファーに保持し続け、次のスキャンライン上の各スキャン位置において前記の保持した画素ラインの積分画像を用いて前記検索ウィンドウの領域の積分画像を再帰的に計算する、
    請求項2に記載の画像処理装置。
  5. 前記走査部は、前記被検出画像上を縦方向に走査する際に、スキャンライン毎に前記検索ウィンドウの幅分の1列の領域の積分画像を生成する、
    請求項1に記載の画像処理装置。
  6. 前記走査部は、前記被検出画像上を横方向に走査する際に、スキャンライン毎に前記検索ウィンドウの高さ分の1行の領域の積分画像を生成する、
    請求項1に記載の画像処理装置。
  7. 被検出画像上で検索ウィンドウをスキャンするとともに、スキャン位置毎に前記検索ウィンドウのサイズに相当する積分画像を生成して所定のメモリー・バッファーに保持する走査ステップと、
    各スキャン位置において、所望の物体を検出するための1以上の矩形フィルターを検索ウィンドウの画像に適用し、前記メモリー・バッファーに保持されている積分画像を用いて矩形特徴を計算し、得られた1以上の前記矩形特徴に基づいて物体を検出したか否かを判別する判別ステップと、
    を有する画像処理方法。
  8. 被検出画像から所望の物体を検出するための処理をコンピューター上で実行するようにコンピューター可読形式で記述されたコンピューター・プログラムであって、前記コンピューターを、
    被検出画像上で検索ウィンドウをスキャンするとともに、スキャン位置毎に前記検索ウィンドウのサイズに相当する積分画像を生成して所定のメモリー・バッファーに保持する走査手段、
    各スキャン位置において、所望の物体を検出するための1以上の矩形フィルターを検索ウィンドウの画像に適用し、前記メモリー・バッファーに保持されている積分画像を用いて矩形特徴を計算し、得られた1以上の前記矩形特徴に基づいて物体を検出したか否かを判別する判別手段、
    として機能させるためのコンピューター・プログラム。
JP2010043657A 2010-03-01 2010-03-01 画像処理装置及び画像処理方法、並びにコンピューター・プログラム Withdrawn JP2011180792A (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2010043657A JP2011180792A (ja) 2010-03-01 2010-03-01 画像処理装置及び画像処理方法、並びにコンピューター・プログラム
US13/022,933 US20110211233A1 (en) 2010-03-01 2011-02-08 Image processing device, image processing method and computer program
CN2011100406933A CN102194119A (zh) 2010-03-01 2011-02-18 图像处理装置、图像处理方法和计算机程序

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010043657A JP2011180792A (ja) 2010-03-01 2010-03-01 画像処理装置及び画像処理方法、並びにコンピューター・プログラム

Publications (1)

Publication Number Publication Date
JP2011180792A true JP2011180792A (ja) 2011-09-15

Family

ID=44505138

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010043657A Withdrawn JP2011180792A (ja) 2010-03-01 2010-03-01 画像処理装置及び画像処理方法、並びにコンピューター・プログラム

Country Status (3)

Country Link
US (1) US20110211233A1 (ja)
JP (1) JP2011180792A (ja)
CN (1) CN102194119A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012018471A (ja) * 2010-07-06 2012-01-26 Denso Corp 画像処理装置
KR101503788B1 (ko) 2013-12-27 2015-03-19 숭실대학교산학협력단 적분영상을 기반으로 하는 특징 정보 예측을 통한 보행자 검출 방법, 이를 수행하기 위한 기록 매체 및 단말기
EP2887261A2 (en) 2013-12-19 2015-06-24 Sony Corporation Information processing device, information processing method, and program
KR101620928B1 (ko) 2014-04-29 2016-05-16 경희대학교 산학협력단 우선순위 주소 배분과 이동창 기법을 이용한 얼굴검출 시스템
JP2016149010A (ja) * 2015-02-12 2016-08-18 株式会社東芝 画像評価装置、画像評価方法およびプログラム

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5178797B2 (ja) * 2010-09-13 2013-04-10 キヤノン株式会社 表示制御装置及び表示制御方法
US20130004028A1 (en) * 2011-06-28 2013-01-03 Jones Michael J Method for Filtering Using Block-Gabor Filters for Determining Descriptors for Images
US20130156114A1 (en) * 2011-12-17 2013-06-20 Faramarz Azadegan Data Movement Reduction In Video Compression Systems
WO2013119082A1 (ko) * 2012-02-10 2013-08-15 엘지전자 주식회사 영상 표시 장치 및 그 동작 방법
CN102609960B (zh) * 2012-02-16 2014-01-08 四川大学 一种提取目标区域的方法
CN102663711A (zh) * 2012-05-16 2012-09-12 山东大学 基于广义积分图的快速滤波算法
KR20140013142A (ko) * 2012-07-18 2014-02-05 삼성전자주식회사 이미지에서 목표를 검출하는 목표 검출 방법 및 이미지 처리 장치
US8903193B2 (en) * 2012-09-28 2014-12-02 Intel Corporation Reducing memory bandwidth consumption when executing a program that uses integral images
US9442723B2 (en) 2012-12-28 2016-09-13 Intel Corporation Method and apparatus for integral image computation instructions
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
US9589175B1 (en) 2014-09-30 2017-03-07 Amazon Technologies, Inc. Analyzing integral images with respect to Haar features
KR102286874B1 (ko) * 2014-10-20 2021-08-09 한국전자통신연구원 다중 방향성 적분 이미지를 이용한 객체 검출 장치 및 방법
TWI536810B (zh) * 2015-02-25 2016-06-01 緯創資通股份有限公司 影像處理方法
CN106162032B (zh) * 2015-03-24 2019-04-05 瑞昱半导体股份有限公司 影像处理装置与方法
FR3035251A1 (fr) 2015-04-17 2016-10-21 Stmicroelectronics (Grenoble 2) Sas Procede et dispositif de generation d'une representation multi-resolutions d'une image et application a la detection d'objet
CN107368836A (zh) * 2016-05-12 2017-11-21 北京君正集成电路股份有限公司 一种获取积分图的方法及装置
US10248876B2 (en) * 2016-06-27 2019-04-02 Texas Instruments Incorporated Method and apparatus for avoiding non-aligned loads using multiple copies of input data
CN109241969A (zh) * 2018-09-26 2019-01-18 旺微科技(上海)有限公司 一种多目标检测方法及检测系统
CN111178371B (zh) * 2019-12-17 2023-12-01 深圳市优必选科技股份有限公司 目标检测方法、装置和计算机存储介质
CN111753847B (zh) * 2020-06-28 2023-04-18 浙江大华技术股份有限公司 图像预处理方法及装置、存储介质、电子装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2005081539A1 (ja) * 2004-02-23 2005-09-01 Nec Corporation 2次元信号の符号化/復号方法および装置
JP4556891B2 (ja) * 2006-03-17 2010-10-06 ソニー株式会社 情報処理装置および方法、記録媒体、並びにプログラム
JP4623199B2 (ja) * 2008-10-27 2011-02-02 ソニー株式会社 画像処理装置、画像処理方法およびプログラム

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012018471A (ja) * 2010-07-06 2012-01-26 Denso Corp 画像処理装置
EP2887261A2 (en) 2013-12-19 2015-06-24 Sony Corporation Information processing device, information processing method, and program
KR101503788B1 (ko) 2013-12-27 2015-03-19 숭실대학교산학협력단 적분영상을 기반으로 하는 특징 정보 예측을 통한 보행자 검출 방법, 이를 수행하기 위한 기록 매체 및 단말기
US9430708B2 (en) 2013-12-27 2016-08-30 Foundation Of Soongsil University-Industry Cooperation Method of detecting pedestrians using integral image of feature information, computer readable recording medium, and terminal device for the same
KR101620928B1 (ko) 2014-04-29 2016-05-16 경희대학교 산학협력단 우선순위 주소 배분과 이동창 기법을 이용한 얼굴검출 시스템
JP2016149010A (ja) * 2015-02-12 2016-08-18 株式会社東芝 画像評価装置、画像評価方法およびプログラム

Also Published As

Publication number Publication date
US20110211233A1 (en) 2011-09-01
CN102194119A (zh) 2011-09-21

Similar Documents

Publication Publication Date Title
JP2011180792A (ja) 画像処理装置及び画像処理方法、並びにコンピューター・プログラム
JP6688277B2 (ja) プログラム、学習処理方法、学習モデル、データ構造、学習装置、および物体認識装置
JP2940936B2 (ja) 表領域識別方法
JP4708909B2 (ja) デジタル画像の対象物検出方法および装置並びにプログラム
JP4738469B2 (ja) 画像処理装置、画像処理プログラムおよび画像処理方法
JP4479756B2 (ja) 画像処理装置及び画像処理方法、並びにコンピュータ・プログラム
JP4821869B2 (ja) 文字認識装置、画像読取装置、およびプログラム
US8718365B1 (en) Text recognition for textually sparse images
JP4694613B2 (ja) 原稿方向判定装置、原稿方向判定方法、プログラムおよびその記録媒体
JP2008234654A (ja) 目標画像検出方法及び画像検出装置
US20050271245A1 (en) Specified object detection apparatus
JP2007065844A (ja) 顔検出方法および装置並びにプログラム
JP2009140369A (ja) 集団学習装置及び集団学習方法、対象物検出装置及び対象物検出方法、並びにコンピュータ・プログラム
JP5294798B2 (ja) 画像処理装置及び画像処理方法
CN111507149B (zh) 基于表情识别的交互方法、装置和设备
KR101661211B1 (ko) 얼굴 인식률 개선 장치 및 방법
US8437515B2 (en) Face detection apparatus and face detection method
JP2006164133A (ja) 画像処理方法および装置並びにプログラム
US20230316697A1 (en) Association method, association system, and non-transitory computer-readable storage medium
JP2013011950A (ja) 画像処理装置、画像処理方法及びプログラム
KR20130098675A (ko) 얼굴 검출 처리 회로 및 이를 포함하는 촬상 장치
JP2002342710A (ja) 文字切出し装置及びそれに用いる文字切出し方法並びにそのプログラム
JP2014229092A (ja) 画像処理装置、画像処理方法、および、そのプログラム
JP4493448B2 (ja) 対象物識別装置および方法並びにプログラム
JP6294572B2 (ja) 画像処理装置、画像処理方法、及びプログラム

Legal Events

Date Code Title Description
A300 Application deemed to be withdrawn because no request for examination was validly filed

Free format text: JAPANESE INTERMEDIATE CODE: A300

Effective date: 20130507