(57)【特許請求の範囲】
【請求項１】
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直方向に輝度値を累積的に足し合わせた垂直積分値、水平方向に輝度値を累積的に足し合わせた水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
を有することを特徴とする画像処理装置。
【請求項２】
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
を有し、
前記記憶手段は、前記ブロックに含まれる
座標（ｉ，ｊ）の輝度値（ｉ，ｊ）と、
座標（ｉ，ｊ−１）の垂直積分値（ｉ，ｊ−１）と、
座標（ｉ−１，ｊ）の水平積分値（ｉ−１，ｊ）と、
座標（ｉ−１，ｊ−１）の面積積分値（ｉ−１，ｊ−１）と
を格納し、
前記制御手段は、前記ブロックに含まれる
座標（ｉ，ｊ−１）の面積積分値（ｉ，ｊ−１）を面積積分値（ｉ−１，ｊ−１）＋垂直積分値（ｉ，ｊ−１）により算出し、
座標（ｉ−１，ｊ）の面積積分値（ｉ−１，ｊ）を面積積分値（ｉ−１，ｊ−１）＋水平積分値（ｉ−１，ｊ）により算出し、
座標（ｉ，ｊ）の面積積分値（ｉ，ｊ）を、面積積分値（ｉ−１，ｊ−１）＋垂直積分値（ｉ，ｊ−１）＋水平積分値（ｉ−１，ｊ）＋輝度値（ｉ，ｊ）により算出する
ことを特徴とする画像処理装置。
【請求項３】
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
を有し、
前記記憶手段は、前記ブロックがｎ×ｎの大きさのとき、
（ｎ−１）×（ｎ−１）の輝度値と、
（ｎ−１）の垂直積分値と、
（ｎ−１）の水平積分値と、
１個の面積積分値と
を格納していること
を特徴とする画像処理装置。
【請求項４】
３次元以上の多次元の画像に対して最大２のｎ乗の方向に面積積分の積分方向を持つことを特徴とする請求項１乃至３何れか一項記載の画像処理装置。
【請求項５】
前記記憶手段は、３次元以上の多次元の画像に対して、ｎ次元積分値から０次元積分値（輝度値）までの値で表現することを特徴とする請求項１乃至４何れか一項記載の画像処理装置。
【請求項６】
コンピュータによって実行される積分画像作成方法であって、
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直方向に輝度値を累積的に足し合わせた垂直積分値、水平方向に輝度値を累積的に足し合わせた水平積分値及び輝度値を格納した記憶手段から読み出した、１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により、前記ブロックに含まれる全ての座標の面積積分値を算出する
ことを特徴とする積分画像作成方法。
【請求項７】
コンピュータによって実行される積分画像作成方法であって、
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段から読み出した、１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により、前記ブロックに含まれる全ての座標の面積積分値を算出する
ことを特徴とし、
前記記憶手段は、前記ブロックに含まれる
座標（ｉ，ｊ）の輝度値（ｉ，ｊ）と、
座標（ｉ，ｊ−１）の垂直積分値（ｉ，ｊ−１）と、
座標（ｉ−１，ｊ）の水平積分値（ｉ−１，ｊ）と、
座標（ｉ−１，ｊ−１）の面積積分値（ｉ−１，ｊ−１）と
を格納し、
前記ブロックに含まれる全ての座標の面積積分値を算出は、
前記ブロックに含まれる
座標（ｉ，ｊ−１）の面積積分値（ｉ，ｊ−１）を面積積分値（ｉ−１，ｊ−１）＋垂直積分値（ｉ，ｊ−１）により算出し、
座標（ｉ−１，ｊ）の面積積分値（ｉ−１，ｊ）を面積積分値（ｉ−１，ｊ−１）＋水平積分値（ｉ−１，ｊ）により算出し、
座標（ｉ，ｊ）の面積積分値（ｉ，ｊ）を、面積積分値（ｉ−１，ｊ−１）＋垂直積分値（ｉ，ｊ−１）＋水平積分値（ｉ−１，ｊ）＋輝度値（ｉ，ｊ）により算出
する積分画像作成方法。
【請求項８】
コンピュータによって実行される積分画像作成方法であって、
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段から読み出した、１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により、前記ブロックに含まれる全ての座標の面積積分値を算出する
ことを特徴とし、
前記記憶手段は、前記ブロックがｎ×ｎの大きさのとき、
（ｎ−１）×（ｎ−１）の輝度値と、
（ｎ−１）の垂直積分値と、
（ｎ−１）の水平積分値と、
１個の面積積分値と
を格納していること
を特徴とする積分画像作成方法。
【請求項９】
コンピュータを、
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直方向に輝度値を累積的に足し合わせた垂直積分値、水平方向に輝度値を累積的に足し合わせた水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
として機能させるためのプログラム。
【請求項１０】
コンピュータを、
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
として機能させ、
前記記憶手段は、前記ブロックに含まれる
座標（ｉ，ｊ）の輝度値（ｉ，ｊ）と、
座標（ｉ，ｊ−１）の垂直積分値（ｉ，ｊ−１）と、
座標（ｉ−１，ｊ）の水平積分値（ｉ−１，ｊ）と、
座標（ｉ−１，ｊ−１）の面積積分値（ｉ−１，ｊ−１）と
を格納し、
前記制御手段は、前記ブロックに含まれる
座標（ｉ，ｊ−１）の面積積分値（ｉ，ｊ−１）を面積積分値（ｉ−１，ｊ−１）＋垂直積分値（ｉ，ｊ−１）により算出し、
座標（ｉ−１，ｊ）の面積積分値（ｉ−１，ｊ）を面積積分値（ｉ−１，ｊ−１）＋水平積分値（ｉ−１，ｊ）により算出し、
座標（ｉ，ｊ）の面積積分値（ｉ，ｊ）を、面積積分値（ｉ−１，ｊ−１）＋垂直積分値（ｉ，ｊ−１）＋水平積分値（ｉ−１，ｊ）＋輝度値（ｉ，ｊ）により算出する
ことを特徴とするプログラム。
【請求項１１】
コンピュータを、
画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
として機能させ、
前記記憶手段は、前記ブロックがｎ×ｎの大きさのとき、
（ｎ−１）×（ｎ−１）の輝度値と、
（ｎ−１）の垂直積分値と、
（ｎ−１）の水平積分値と、
１個の面積積分値と
を格納している
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、画像処理装置、積分画像作成方法及びプログラムに関する。
【背景技術】
【０００２】
被写体の顔画像を撮像する撮像装置であって、被写体を含む画像データを取得する取得手段と、取得された画像データに、平均差分フィルタを実行するフィルタ手段と、平均差分フィルタが実行された画像データから、被写体の顔領域を検出する顔領域検出手段と、検出された被写体の顔領域に対して少なくとも焦点を合わせる制御を行って、被写体像を撮像する撮像手段とを有し、前記顔領域検出手段は、平均差分フィルタが実行された同被写体種の顔画像データから予め作成される特徴量を用いて、被写体の顔領域を検出すること、を特徴とする撮像装置は、従来から知られている。
【０００３】
上記した撮像装置では画像データ内の画素について、平均差分フィルタ処理を平均輝度値と注目画素の輝度値との差の絶対値を算出することにより行っている。平均輝度値は注目画素（ある１画素）の近傍の画素の輝度の平均値をとったものである。平均輝度値を算出し易いよう、予め積分画像を作成しておくとよいことは従来から知られている。積分画像は各画素ブロックの輝度値の和を累積的に算出して作成されるものである（例えば特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、積分画像をＲＡＭ（ランダムアクセスメモリ）などの記憶装置に格納する場合は、積分値が非常に大きくなるため、積分画像を格納する為に必要な記憶容量が膨大になるという問題があった。
【０００５】
本発明は、上記の点に鑑みなされたもので、積分画像の格納に必要な記憶容量を削減できる画像処理装置、積分画像作成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記した課題を解決するために、請求項１に記載の画像処理装置は、画像を分けたブロック単位で、前記ブロックに含まれる１個の座標の面積積分値、１個以上の座標の垂直方向に輝度値を累積的に足し合わせた垂直積分値、水平方向に輝度値を累積的に足し合わせた水平積分値及び輝度値を格納した記憶手段と、前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した１個の座標の面積積分値、１個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段とを有することを特徴とする。
【０００７】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【０００８】
本発明によれば、積分画像の格納に必要な記憶容量を削減できる画像処理装置、積分画像作成方法及びプログラムを提供可能である。
【図面の簡単な説明】
【０００９】
【図１】積分画像の一例の説明図である。
【図２】積分画像を利用した輝度の総和の計算の一例の説明図である。
【図３】ＰＣの一例のハードウェア構成図である。
【図４】本実施の形態におけるブロック単位の積分画像の一例の説明図である。
【図５】ブロック単位の積分画像のデータから４つの面積積分値を読み出す処理の一例のイメージ図である。
【図６】本実施の形態におけるブロック単位の積分画像の他の例の説明図である。
【図７】本実施の形態におけるブロック単位の四方向積分画像の一例の説明図である。
【図８】四方向積分画像のデータから面積積分値を読み出す処理の一例のイメージ図である。
【図９】第一領域から第四領域のブロック単位の積分画像の一例の説明図である。
【図１０】顔検知時におけるスキャンの仕方を表した一例の説明図である。
【図１１】顔検知のアルゴリズムの一例のフローチャートである。
【図１２】顔検知時のＲＡＭの動きを表した一例の説明図である。
【図１３】初期ライン数２２４ライン、更新ライン数６４ラインのときの四方向積分画像の一例の説明図である。
【図１４】走査窓で２２４ラインのスキャンを行う処理の一例の説明図である。
【図１５】三次元積分画像の一例の説明図である。
【図１６】本実施の形態におけるブロック単位の三次元積分画像の一例の説明図である。
【図１７】画像処理装置の他の例のハードウェア構成図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について、詳細に説明する。なお、本実施の形態における画像処理装置は、積分画像を作成する機器や装置、回路などであればよい。本実施の形態における画像処理装置は、例えばコンピュータ、複合機やコピー機、デジタルカメラ等の撮像装置、画像処理を行う回路である。本実施の形態における画像処理装置は複数の画素を１つのブロックとして扱い、ブロック単位で積分する積分画像作成方法において、従来と比較して積分画像の格納に必要な記憶容量を削減し、回路規模を削減する。
【００１１】
（面積積分）
面積積分（積分画像）とは各画素ブロックの輝度値の和を累積的に算出して作成されるものである。図１は積分画像の一例の説明図である。
【００１２】
図１（ａ）は入力画像の一例を示している。図１（ａ）の入力画像はＶＧＡ（縦４８０ピクセル、横６４０ピクセル）で輝度が８ビットであるとする。座標（ｉ，ｊ）の輝度値はＹ（ｉ，ｊ）とする。座標（ｉ，ｊ）の面積積分値はＡ（ｉ，ｊ）とする。なお、ｉは６４０以下の自然数とする。ｊは４８０以下の自然数とする。面積積分値Ａ（ｉ，ｊ）は以下の式（１）のように定義される。
【００１３】
Ａ（ｉ，ｊ）＝∫∫Ｙ（ｉ，ｊ）＝ΣΣＹ（ｉ，ｊ）…(1)
図１（ｃ）は積分画像の一例を示している。図１（ｃ）の積分画像の積分方向は左上から右下である。すなわちＡ（１，１）はＹ（１，１）と等しい。また、Ａ（６４０、４８０）は全ての座標（ｉ，ｊ）の輝度値Ｙ（ｉ，ｊ）の合計と等しい。
【００１４】
図１（ｂ）はＲＡＭに格納された入力画像の一例を表している。図１（ｄ）はＲＡＭに格納された積分画像の一例を表している。例えば図１（ｂ）のように入力画像を格納したあと、図１（ｄ）のように計算する為には、図１（ｄ）の記憶容量のＲＡＭが１つあればよい。言い換えると、入力画像の確保と積分画像の計算とは物理的に同じＲＡＭで兼用できる。
【００１５】
輝度値Ｙの最大値は２５５（８ビット）である。したがって、面積積分値Ａの最大値は７８３３６０００（＝２５５×６４０×４８０）である。面積積分値ＡをＲＡＭに格納する為には、２７ビット（＝１３２６５１０００）必要である。したがって、面積積分値Ａを格納する為に必要なＲＡＭの記憶容量は、１０１２．５ＫＢ（＝６４０×４８０×２７ビット）となる。なお、本実施の形態においては、特に断りのない限り、８ビット＝１バイト、１０２４バイト＝１ＫＢ（キロバイト）で計算する。
【００１６】
図２は積分画像を利用した輝度の総和の計算の一例の説明図である。図２（ａ）は積分画像内の任意の長方形に囲まれた輝度値Ｙの総和Ｓが任意の長方形の４座標の面積積分値Ａから計算できることを表している。なお、図２（ａ）では積分画像内の任意の長方形の４座標をＰ０、Ｐ１、Ｍ０及びＭ１で表している。
【００１７】
図２（ｂ）は積分画像内の任意の長方形の４座標Ｐ０、Ｐ１、Ｍ０及びＭ１の面積積分値Ａが示す輝度値Ｙの総和を視覚的に表している。図２（ａ）に示した積分画像内の任意の長方形に囲まれた輝度値Ｙの総和Ｓは以下の式（２）により計算できる。
【００１８】
Ｓ＝Ａ（Ｐ０）＋Ａ（Ｐ１）−Ａ（Ｍ０）−Ａ（Ｍ１）…(2)
任意の長方形に囲まれた画素の数は４座標Ｐ０、Ｐ１、Ｍ０及びＭ１の座標から求めることができる。したがって、積分画像内の任意の長方形に囲まれた輝度値Ｙの総和Ｓを任意の長方形に囲まれた画素の数で割ることにより、任意の長方形に囲まれた画素の輝度の平均値を求めることができる。
【００１９】
本実施の形態における画像処理装置は、積分画像内の任意の長方形に囲まれた輝度値Ｙの総和Ｓを、上記のようにＲＡＭへの４回以下のアクセスで求めることができるという特性を失うことなく、積分画像の格納に必要なＲＡＭの記憶容量を以下のように削減するものである。
【００２０】
（ハードウェア構成図）
画像処理装置１０は例えば図３に示すようなＰＣ（パーソナルコンピュータ）により実現される。図３はＰＣの一例のハードウェア構成図である。ＰＣはバス１９で相互に接続された入力装置１１、出力装置１２、記録媒体読取装置１３、補助記憶装置１４、主記憶装置１５、演算処理装置１６及びインタフェース装置１７を有する構成である。
【００２１】
入力装置１１はキーボードやマウス等である。入力装置１１は各種信号を入力するために用いられる。出力装置１２はディスプレイ装置等である。出力装置１２は各種ウインドウやデータ等を表示するために用いられる。インタフェース装置１７は、モデム、ＬＡＮカード等である。インタフェース装置１７はＬＡＮやインターネット等のネットワークに接続するために用いられる。
【００２２】
画像処理装置１０を実現するプログラムは、例えば記録媒体１８の配布やネットワーク等からのダウンロードなどによって提供される。積分画像作成方法を実現するプログラムは画像処理装置１０を実現するプログラムの少なくとも一部である。
【００２３】
記録媒体１８はＣＤ−ＲＯＭ、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ＲＯＭ、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【００２４】
プログラムを記録した記録媒体１８が記録媒体読取装置１３にセットされると、プログラムは記録媒体１８から記録媒体読取装置１３を介して補助記憶装置１４にインストールされる。ネットワーク等からダウンロードされたプログラムはインタフェース装置１７を介して補助記憶装置１４にインストールされる。
【００２５】
補助記憶装置１４はプログラム、必要なファイル、データ等を格納する。主記憶装置１５はプログラムの起動時に補助記憶装置１４からプログラムを読み出して格納する。演算処理装置１６は主記憶装置１５に格納されたプログラムに従って各種機能を実現する。
【００２６】
また、画像処理装置１０は、例えば図１７に示すようなハードウェアにより実現してもよい。図１７は画像処理装置の他の例のハードウェア構成図である。図１７はカメラ等の撮像装置２１から送られる映像データをＲＡＭ２３に格納し、顔検知回路２６に面積積分値を出力する例を表している。なお、図１７の例では輝度格納回路２２、積分回路２４及び積分値計算回路２５が画像処理装置１０に相当する。
【００２７】
撮像装置２１はＹＵＶ４２２やＹＵＶ４２０の映像データ（色情報は不要）を輝度格納回路２２に送信する。なお、映像データがＲＧＢの場合はＹＵＶ４２２等に変換された後で送信される。輝度格納回路２２はＲＡＭ２３に輝度値Ｙを格納する。この際、ブロック内の輝度値Ｙは全て同じアドレスに格納される。
【００２８】
ＲＡＭ２３への輝度値Ｙの格納が終わると、輝度格納回路２２は検知結果が出力されるまで新しい映像データを取り込まない。積分回路２４はＲＡＭ２３に格納された輝度値Ｙを輝度値Ｙ、水平積分値Ｈ、垂直積分値Ｖ、面積積分値Ａの組み合わせに書き換える。
【００２９】
積分値計算回路２５は図４（ｃ）に示す計算式の処理を実行する。積分値計算回路２５は顔検知回路２６から面積積分値を要求された座標が含まれるブロック内の輝度値Ｙ、水平積分値Ｈ、垂直積分値Ｖ、面積積分値Ａをまとめて読み、要求された座標の面積積分値Ａを顔検出回路２６に出力する。
【実施例１】
【００３０】
（アーキテクチャ）
画像処理装置１０は、縦２ピクセル及び横２ピクセルの四角形を１つのブロックとして入力画像を３２０×２４０のブロックに分ける。画像処理装置１０はブロック単位で後述のような積分画像のデータをＲＡＭに格納する。図４は本実施の形態におけるブロック単位の積分画像の一例の説明図である。図４（ａ）は本実施の形態におけるブロック単位の積分画像のデータの一例を示す。
【００３１】
ブロック単位の積分画像のデータは、面積積分値Ａ（ｉ−１，ｊ−１）と、垂直積分値Ｖ（ｉ，ｊ−１）と、水平積分値Ｈ（ｉ−１，ｊ）と、輝度値Ｙ（ｉ，ｊ）とを含む構成である。座標（ｉ，ｊ）の水平積分値はＨ（ｉ，ｊ）とする。座標（ｉ，ｊ）の垂直積分値はＶ（ｉ，ｊ）とする。なお、ｉ及びｊは２の倍数である。
【００３２】
垂直積分値Ｖは垂直方向に輝度値Ｙを累積的に足し合わせたものである。具体的に垂直積分値Ｖ（ｉ，ｊ）は輝度値Ｙ（ｉ，１）〜Ｙ（ｉ，ｊ）を累積的に足し合わせたものである。水平積分値Ｈは水平方向に輝度値Ｙを累積的に足し合わせたものである。具体的に水平積分値Ｈ（ｉ，ｊ）は輝度値Ｙ（１，ｊ）〜Ｙ（ｉ，ｊ）を累積的に足し合わせたものである。
【００３３】
図４（ｂ）はブロック単位でＲＡＭの各アドレスに格納された積分画像のデータの一例である。ＲＡＭの各アドレスに格納された各ブロックの積分画像のデータには本来の面積積分値Ａが１つしか含まれていない。
【００３４】
しかし、図４（ｃ）に回路で示す計算式により、ＲＡＭの１つのアドレスからブロック単位の積分画像のデータを読み出すことで、画像処理装置１０は４つの面積積分値Ａを読み出すことができる。図４（ｃ）は以下の式（３）〜（５）を示している。
【００３５】
Ａ（ｉ，ｊ−１）＝Ａ（ｉ−１，ｊ−１）＋Ｖ（ｉ，ｊ−１）…(3)
Ａ（ｉ−１，ｊ）＝Ａ（ｉ−１，ｊ−１）＋Ｈ（ｉ−１，ｊ）…(4)
Ａ（ｉ，ｊ）＝Ａ（ｉ−１，ｊ−１）＋Ｖ（ｉ，ｊ−１）
＋Ｈ（ｉ−１，ｊ）＋Ｙ（ｉ，ｊ）…(5)
図５はブロック単位の積分画像のデータから４つの面積積分値を読み出す処理の一例のイメージ図である。図５（ａ）はブロック単位の積分画像のデータに１つ含まれる面積積分値Ａ（ｉ−１，ｊ−１）が輝度値Ｙの和を累積的に算出する画素の範囲を斜線で示したものである。また、図５（ｂ）はブロック単位の積分画像のデータに１つ含まれる垂直積分値Ｖ（ｉ，ｊ−１）が垂直方向に輝度値Ｙの和を累積的に算出する画素の範囲を斜線で示したものである。また、図５（ｃ）はブロック単位の積分画像のデータに１つ含まれる水平積分値Ｈ（ｉ−１，ｊ）が水平方向に輝度値Ｙの和を累積的に算出する画素の範囲を斜線で示したものである。
【００３６】
式（３）は図５（ａ）の斜線部分に示した輝度値Ｙの和と、図５（ｂ）の斜線部分に示した輝度値Ｙの和とを加算することにより、面積積分値Ａ（ｉ，ｊ−１）を求めるものである。式（４）は図５（ａ）の斜線部分に示した輝度値Ｙの和と、図５（ｃ）の斜線部分に示した輝度値Ｙの和とを加算することにより、面積積分値Ａ（ｉ−１，ｊ）を求めるものである。
【００３７】
また、式（５）は図５（ａ）の斜線部分に示した輝度値Ｙの和と、図５（ｂ）の斜線部分に示した輝度値Ｙの和と、図５（ｃ）の斜線部分に示した輝度値Ｙの和と、ブロック単位の積分画像のデータに１つ含まれる輝度値Ｙ（ｉ，ｊ）とを加算することにより、面積積分値Ａ（ｉ，ｊ）を求めるものである。
【００３８】
以上のように、画像処理装置１０はブロック毎に４つの面積積分値Ａを一度に読み出すことができる。画像処理装置１０は、どの座標の面積積分値ＡもＲＡＭへの１回のアクセスで求めることができる。
【００３９】
ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量は次のように見積もることができる。水平積分値Ｈの最大値は、１６３２００（＝２５５×６４０）である。水平積分値ＨをＲＡＭに格納する為には、１８ビット必要である。垂直積分値Ｖの最大値は、１２２４００（＝２５５×４８０）である。垂直積分値ＶをＲＡＭに格納する為には、１７ビット必要である。よって、１ブロックの積分画像のデータをＲＡＭに格納する為には７０ビット（輝度値Ｙが８ビット、水平積分値Ｈが１８ビット、垂直積分値Ｖが１７ビット、面積積分値Ａが２７ビット）必要である。
【００４０】
したがって、ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量は６５６．２５ＫＢ（＝３２０×２４０×７０ビット）となる。このように、画像処理装置１０は、図１（ｄ）に示した面積積分値Ａを格納する為に必要なＲＡＭの記憶容量１０１２．５ＫＢよりも、ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量を削減できている。
【００４１】
上記では、縦２ピクセル及び横２ピクセルの四角形を１つのブロックとして説明しているが、１つのブロックに含まれるピクセル数を整数倍で増やすこともできる。画像処理装置１０は、縦４ピクセル及び横４ピクセルの四角形を１つのブロックとして入力画像を１６０×１２０（＝１９２００）のブロックに分けることもできる。
【００４２】
図６は本実施の形態におけるブロック単位の積分画像の他の例の説明図である。画像処理装置１０は、ブロック単位で図６（ａ）に示すような積分画像のデータを、ＲＡＭに格納する。図６（ａ）は本実施の形態におけるブロック単位の積分データとブロック単位でＲＡＭの各アドレスに格納された積分画像のデータの一例である。
【００４３】
図６（ａ）に示すブロック単位の積分画像のデータは、１つの面積積分値Ａ、３つの水平積分値Ｖ、３つの垂直積分値Ｈ、９つの輝度値Ｙを含み、ＲＡＭの１つのアドレスに格納される。ＲＡＭの各アドレスに格納された各ブロックの積分画像のデータには本来の面積積分値Ａが１つしか含まれていない。しかし、図６（ｂ）に示す計算式により、ＲＡＭの１つのアドレスからブロック単位の積分画像のデータを読み出すことで、画像処理装置１０は１６の面積積分値Ａを読み出すことができる。
【００４４】
ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量は次のように見積もることができる。縦２ピクセル及び横２ピクセルの四角形を１つのブロックとした説明と同様、縦４ピクセル及び横４ピクセルの四角形を１つのブロックとした場合も水平積分値ＨをＲＡＭに格納する為には、１８ビット必要である。垂直積分値ＶをＲＡＭに格納する為には、１７ビット必要である。輝度値ＹをＲＡＭに格納する為には８ビット必要である。面積積分値ＡをＲＡＭに格納する為には２７ビット必要である。
【００４５】
したがって、１つの面積積分値Ａ、３つの水平積分値Ｖ、３つの垂直積分値Ｈ、９つの輝度値Ｙを含むブロック単位の積分画像のデータをＲＡＭに格納する為には、面積積分値Ａが２７ビット、３つの水平積分値Ｖが１８×３ビット、３つの垂直積分値Ｈが１７×３ビット、９つの輝度値Ｙが８×９ビットの２０４ビット必要である。また、ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量は４７８．１２５ＫＢ（＝１６０×１２０×２０４ビット）となる。
【００４６】
このように、画像処理装置１０は、図１（ｄ）に示した面積積分値Ａを格納する為に必要なＲＡＭの記憶容量１０１２．５ＫＢよりも、ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量を削減できている。
【００４７】
なお、１つのブロックに含まれるピクセル数を増やせば増やすほど、ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量は削減できるが、図４（ｃ）に示すようなブロック単位の積分画像のデータから複数の面積積分値Ａを読み出すための計算式を実現する制御回路が大きくなる。
【００４８】
また、ＦＡＢ（ファウンドリ）によっては巨大なビット幅のＲＡＭが存在しないということもある。この場合はＲＡＭの枚数が増え、遅延が起きてしまう等の問題がある。限界まで全体の回路規模を削減しようとすると、ＦＡＢによってどこまでブロックサイズを大きくするかは異なるが、一定以上ブロックサイズを大きくしても、ＲＡＭの記憶容量の削減への影響が、ほとんどなくなる。そこで、以下の説明では縦４ピクセル及び横４ピクセルの四角形を１つのブロックとして扱う。
【実施例２】
【００４９】
画像処理装置１０は、図７に示すように、入力画像を４分割して入力画像の中央から角４方向に面積積分を行ってもよい。図７は本実施の形態におけるブロック単位の四方向積分画像の一例の説明図である。なお、図７では等分割しているが、厳密に等分割である必要はない。図７では分割して出来た４つの領域をそれぞれ第一領域から第四領域まで名前を付けている。
【００５０】
図８は、四方向積分画像のデータから面積積分値を読み出す処理の一例のイメージ図である。四方向積分画像内の任意の長方形は、ａ）１つの領域内、ｂ）２つの領域内、ｃ）１つの境界に接する場合、ｄ）全ての領域を含む、ｅ）２つの境界に接する場合、の何れかである。図８では、ａ）からｅ）の場合における、それぞれの長方形内の輝度の総和をＳａ、Ｓｂ、Ｓｃ、Ｓｄ、Ｓｅとする。
【００５１】
境界に接していないａ）、ｂ）、ｄ）の場合における、それぞれの長方形内の輝度の総和Ｓａ、Ｓｂ及びＳｄは４点の面積積分値Ａが分かれば計算可能である。例えばａ）の場合における長方形内の輝度の総和Ｓａは、その長方形の４座標における面積積分値ＡをそれぞれＭ０ａ、Ｍ１ａ、Ｐ０ａ、Ｐ１ａとすると、Ｐ０ａ＋Ｐ１ａ−Ｍ０ａ−Ｍ１ａにより算出できる。
【００５２】
１つの境界に接しているｃ）の場合における、長方形内の輝度の総和Ｓｃは２点の面積積分値Ａが分かれば計算可能である。例えばｃ）の場合における長方形内の輝度の総和Ｓｃは、その長方形の２座標における面積積分値ＡをそれぞれＭ０ｃ、Ｐ０ｃとすると、Ｐ０ｃ−Ｍ０ｃにより算出できる。
【００５３】
２つの境界に接しているｅ）の場合における、長方形内の輝度の総和Ｓｅは、１点の面積積分値Ａが分かれば求まる。例えばｅ）の場合における長方形内の輝度の総和Ｓｅは、その長方形の１座標における面積積分値ＡをＰ０ｅとすると、Ｐ０ｅである。
【００５４】
よって、四方向積分画像内の任意の長方形内の輝度の総和Ｓは上記のようにＲＡＭへの４回以下のアクセスで求めることができるという特性を失わない。
【００５５】
図９は第一領域から第四領域のブロック単位の積分画像の一例の説明図である。画像処理装置１０は、ブロック単位で図９（ａ−１）から図９（ａ−４）に示すような第一領域から第四領域の積分画像のデータを、ＲＡＭに格納する。図９（ｂ）は本実施の形態におけるブロック単位の積分データとブロック単位でＲＡＭの各アドレスに格納された積分画像のデータの他の例である。
【００５６】
図９（ａ−１）から図９（ａ―４）に示すように、第一領域から第四領域の各領域によりブロック内のどこの座標の面積積分を行うかは異なるが、１つの面積積分値Ａ、３つの水平積分値Ｖ、３つの垂直積分値Ｈ、９つの輝度値Ｙを含む点で同じである。
【００５７】
しかし、４分割したため、第一領域から第四領域の各領域の角（面積積分値Ａが最大となる点）で足し合わせる輝度値Ｙの数が減り、面積積分値Ａの最大値をＲＡＭに格納する為に必要となるビットは、２ビット減って２５ビットとなる。また、水平積分値ＨをＲＡＭに格納する為に必要となるビットは、１ビット減って１７ビットとなる。垂直積分値ＶをＲＡＭに格納する為に必要となるビットは、１ビット減って１６ビット必要である。
【００５８】
よって、１ブロックの積分画像のデータをＲＡＭに格納する為には、面積積分値Ａが２５ビット、水平積分値Ｖが１７×３ビット、垂直積分値Ｈが１６×３ビット、９つの輝度値Ｙが８×９ビットの１９６ビット必要である。また、ブロック単位で積分画像のデータを格納するのに必要なＲＡＭの記憶容量は４５９．３７５ＫＢ（＝１６０×１２０×１９６ビット）となる。なお、用途によっては、制御を簡単にするため、入力画像を例えば左右に２分割してもよい。入力画像を２分割する場合、積分方向は第一領域及び第二領域が無くなって、第三領域及び第四領域の形となる。１ブロックの積分画像のデータをＲＡＭに格納する為には、面積積分値Ａが２６ビット、水平積分値Ｖが１７×３ビット、垂直積分値Ｈが１７×３ビット、９つの輝度値Ｙが８×９ビットの２００ビット必要である。
【実施例３】
【００５９】
画像処理装置１０は、顔検知のアルゴリズムに合わせて、面積積分を部分的に行うこともできる。ここでは、入力画像を左右２方向に２分割する例を説明する。顔検知時におけるスキャンは例えば特開２０１０−２８３７０号公報に記載されているように行うことができる。
【００６０】
顔検知時におけるスキャンは簡単に説明すると以下の通りである。図１０は顔検知時におけるスキャンの仕方を表した一例の説明図である。図１０（ａ）は大きさの異なる走査窓の一例を表している。走査窓は顔の大きさに応じて用意する。図１０（ｂ）は各走査窓でスキャンを行う様子を表している。図１０（ｂ）に示すように、全ての走査窓は入力画像上を全てスキャンできるように左上から右下まで動かされる。
【００６１】
そして、顔検知のアルゴリズムでは、走査窓内の輝度値Ｙを部分的に読み、予め用意されたフィルタとマッチングを行うことにより、顔か非顔かを判定する。なお、顔検知のアルゴリズムでは、一画面中の全ての面積積分値を一度に求める必要はない。顔検知のアルゴリズムでは、図１１に示すフローチャートのように、部分的に面積積分値を更新していくことが可能である。
【００６２】
図１１は顔検知のアルゴリズムの一例のフローチャートである。画像処理装置１０はステップＳ１において、輝度値Ｙをブロック毎にＲＡＭに格納する。画像処理装置１０はステップＳ２において、一番大きな走査窓と同じライン数である１２０ライン（ブロックのライン数の整数倍）だけ面積積分を行う。
【００６３】
ステップＳ３において、画像処理装置１０は全ての走査窓で１２０ラインのスキャンを行う。ステップＳ４において、画像処理装置１０は次のブロックのライン数である４ラインの面積積分を行う。ステップＳ５において、画像処理装置１０は４ラインの最後まで全ての走査窓でスキャンを行う。
【００６４】
ステップＳ６において、画像処理装置１０は入力画像全体のスキャンが終了したか否かを判定する。画像処理装置１０は入力画像全体のスキャンが終了していなければステップＳ４に戻り、ステップＳ４〜Ｓ６の処理を繰り返す。画像処理装置１０は入力画像全体のスキャンが終了していれば、図１１のフローチャートの処理を終了する。
【００６５】
図１１のフローチャートでは、走査窓の大きさが１２０×１２０ピクセルのとき、走査窓の１回の移動幅が４ライン以上という条件は付くが、一般には走査窓の大きさの１割程度の移動幅となるため問題がない。
【００６６】
図１２は顔検知時のＲＡＭの動きを表した一例の説明図である。図１２に示すように画像処理装置１０は２枚のＲＡＭを用いて輝度値Ｙの格納、１２０ラインの面積積分、４ラインの面積積分の更新を行う。
【００６７】
図１２（ａ）は２枚のＲＡＭを用いて輝度値Ｙの格納を行う様子を表している。１つ目のＲＡＭ「ＲＡＭ−Ａ」はブロック（縦４ピクセル及び横４ピクセル）単位で８ビットの輝度値Ｙを格納する。ＲＡＭ−Ａは１６０×１２０（＝１９２００）のブロックの輝度値Ｙを格納する。
【００６８】
また、図１２（ｂ）は２枚のＲＡＭを用いて１２０ラインの面積積分を行う様子を表している。入力画像を２分割した場合、上記したように１ブロックの積分画像のデータをＲＡＭに格納する為には、２００ビット必要である。そこで、画像処理装置１０は１つ目のＲＡＭ「ＲＡＭ−Ａ」と２つ目のＲＡＭ「ＲＡＭ−Ｂ」とを共通化した１６０×３０×２００ビットにブロック単位で面積積分値Ａを格納する。なお、ＲＡＭ−Ａには１６０×９０（＝１４４００）のブロックの輝度値Ｙが格納されたままとなる。
【００６９】
また、図１２（ｃ）は２枚のＲＡＭを用いて４ラインの面積積分の更新を行う様子を表している。画像処理装置１０は次のブロックの４ラインの面積積分を行う。更新を行う４ライン分の面積積分値Ａはブロックの輝度値Ｙが格納されたままのＲＡＭ−Ａの記憶領域に上書きされると共に、ＲＡＭ−Ｂのアドレス０からアドレス３に１２１ラインから１２４ラインの面積積分値Ａに上書きされる。
【００７０】
図１０において４方向に４分割しない理由は、垂直積分方向が第一及び第二領域と第三及び第四領域とで異なると、入力画像の中央から上に向かって始め、再度、入力画像の中央から重複してやり直さなければならないからである。ＲＡＭの容量は、３４２．１８７５ＫＢ（＝１６０×１２０×１２８ビット＋１６０×３０×７２ビット）となり、従来の積分画像作成方法で必要であった１０１２．５ＫＢと比較して、約３分の１の記憶容量で積分画像を作成できる。
【００７１】
ここでは補足の説明を行う。最初に面積積分するライン数は初期ライン数と呼ぶ。更新して面積積分するライン数は更新ライン数と呼ぶ。更新ライン数は、初期ライン数が十分に大きければ（必要なＲＡＭの記憶容量は増える）大きくしても構わない。例えば初期ライン数が２２４ライン、更新ライン数が６４ラインのとき、走査窓の大きさが１６０×１６０ピクセルまでなら、移動幅がいくらでも対応できる。
【００７２】
図１１に示すフローチャートのように、部分的に面積積分値を更新していく場合は一括して面積積分する場合に比べて更新回数が多いほど僅かに遅延するため、少ない更新で済む方がよい。図１３は初期ライン数２２４ライン、更新ライン数６４ラインのときの四方向積分画像の一例の説明図である。図１３では、第一領域及び第二領域を上側２２４ラインとし、第三領域及び第四領域を下側２５６ラインとすることで、積分方向を４方向に分割している。
【００７３】
第一領域及び第二領域のライン数をｋとすると、面積積分値を格納する為のビット数がどの領域でも増えないようにする為には、ｋ≦２＾８かつ４８０−ｋ≦２＾８であればよいことが分かる。なお、ｘ＾ｙはｘのｙ乗を表している。つまり２２４≦ｋ≦２５６で初期ライン数がｋ以上であれば、積分方向は４方向に分割してもよい。
【００７４】
図１４は走査窓で２２４ラインのスキャンを行う処理の一例の説明図である。例えば図１４（ａ）は２２４ラインの面積積分を行い、１６０×１６０ピクセルの大きさの走査窓で左上から右下にスキャンを行う様子を表している。図１４（ｂ）は走査窓の大きさが１６０×１６０ピクセルのため、以後、上の６４ラインが走査窓に含まれることが無い不要領域であることを表している。
【００７５】
図１４（ｃ）は不要領域の６４ラインを破棄して、次の６４ラインの面積積分を行い更新領域とすることを表している。図１４（ｄ）は不要領域が破棄され、更新領域が追加された新しい２２４ラインにおいて、１６０×１６０ピクセルの大きさの走査窓で左上から右下にスキャンを行う様子を表している。なお、スキャンは更新領域である下位６４ラインを一部に含む位置と大きさの走査窓で行われる。
【００７６】
顔検知のアルゴリズムによって検知した顔を顔認証用に登録する場合など、顔検知後に座標内の顔を輝度として取り出したいことがある。本実施の形態では全ての座標の面積積分値から上記のように全座標の輝度値を求めることができる。これは、本実施の形態が非可逆圧縮を利用することなくＲＡＭの記憶容量の削減を行っていることによる。既存の非可逆圧縮技術を本実施の形態に適用することは応用として可能である。
【実施例４】
【００７７】
医療用の画像診断では、例えば立体（人体）を輪切りにして細かくスキャンすることがある。この場合、特徴量は垂直方向にも出るため、体積積分を行う。モーション認識においては連続する画像を時間軸方向に積分することもある。この場合は時間積分を行う。
【００７８】
図１５は三次元積分画像の一例の説明図である。三次元積分の場合、直方体内の輝度の総和Ｉは図１５（ｂ）に示すように８点の三次元積分値Ｐ０〜Ｐ３、Ｍ０〜Ｍ３から以下の式（６）を利用して求められる。なお、図１５（ａ）は積分方向を表している。
【００７９】
Ｉ＝Ｐ０＋Ｐ１＋Ｐ２＋Ｐ３−Ｍ０−Ｍ１−Ｍ２−Ｍ３…（６）
三次元積分画像は例えば図１６に示すブロック単位に分けることができる。図１６は本実施の形態におけるブロック単位の三次元積分画像の一例の説明図である。ブロック単位の三次元積分画像のデータは、図１６（ｂ）に示すように、三次元積分値と、３つの二次元積分値と、３つの一次元積分値と、輝度値ｙとを含む構成である。なお、体積積分したものを更に時間積分した場合は、図１６（ａ）に示すように四次元積分となる。
【００８０】
ここでは、ｒ及びｎを整数とし、ｒを０以上ｎ以下として説明する。０次元積分値は輝度値ｙとする。本実施の形態では、ｎ次元積分画像の２＾ｎピクセルを１ブロックにして扱い、輝度値ｙを格納してから軸ごとに積分して、最終的にｎＣｒ個のｒ次元積分値で表現することで、必要なＲＡＭの記憶容量を削減している。１ブロックのピクセル数は増やしても構わない。
【００８１】
本実施の形態の画像処理装置１０は顔検知回路、顔認識回路に利用できる。また、本実施の形態の画像処理装置１０は指紋認証などの画像のパターンマッチングを行う回路、又は、三次元医療画像診断、モーション認証などの画像から特徴を抽出する回路への応用も可能である。
【００８２】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば本発明は輝度値に限るものではなく、ＲＧＢ値や輝度値の二乗なども含む。
【００８３】
なお、特許請求の範囲に記載した記憶手段は補助記憶装置１４又は主記憶装置１５に相当する。制御手段は図４（ｃ）に示した計算式の処理を行う例えば演算処理装置１６に相当する。
【符号の説明】
【００８４】
１０    画像処理装置
１１    入力装置
１２    出力装置
１３    記録媒体読取装置
１４    補助記憶装置
１５    主記憶装置
１６    演算処理装置
１７    インタフェース装置
１８    記録媒体
１９    バス
【先行技術文献】
【特許文献】
【００８５】
【特許文献１】特開２０１１−１９０１３号公報
【図１】
0005799681.tif 000002
【図２】
0005799681.tif 000003
【図３】
0005799681.tif 000004
【図４】
0005799681.tif 000005
【図５】
0005799681.tif 000006
【図６】
0005799681.tif 000007
【図７】
0005799681.tif 000008
【図８】
0005799681.tif 000009
【図９】
0005799681.tif 000010
【図１０】
0005799681.tif 000011
【図１１】
0005799681.tif 000012
【図１２】
0005799681.tif 000013
【図１３】
0005799681.tif 000014
【図１４】
0005799681.tif 000015
【図１５】
0005799681.tif 000016
【図１６】
0005799681.tif 000017
【図１７】
0005799681.tif 000018