説明

画像処理装置、積分画像作成方法及びプログラム

【課題】積分画像の格納に必要な記憶容量を削減できる画像処理装置、積分画像作成方法及びプログラムを提供することを課題とする。
【解決手段】画像処理装置であって、画像を分けたブロック単位で、ブロックに含まれる1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、ブロックに含まれる全ての座標の面積積分値を、記憶手段から読み出した1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段とを有することにより上記課題を解決する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像処理装置、積分画像作成方法及びプログラムに関する。
【背景技術】
【0002】
被写体の顔画像を撮像する撮像装置であって、被写体を含む画像データを取得する取得手段と、取得された画像データに、平均差分フィルタを実行するフィルタ手段と、平均差分フィルタが実行された画像データから、被写体の顔領域を検出する顔領域検出手段と、検出された被写体の顔領域に対して少なくとも焦点を合わせる制御を行って、被写体像を撮像する撮像手段とを有し、前記顔領域検出手段は、平均差分フィルタが実行された同被写体種の顔画像データから予め作成される特徴量を用いて、被写体の顔領域を検出すること、を特徴とする撮像装置は、従来から知られている。
【0003】
上記した撮像装置では画像データ内の画素について、平均差分フィルタ処理を平均輝度値と注目画素の輝度値との差の絶対値を算出することにより行っている。平均輝度値は注目画素(ある1画素)の近傍の画素の輝度の平均値をとったものである。平均輝度値を算出し易いよう、予め積分画像を作成しておくとよいことは従来から知られている。積分画像は各画素ブロックの輝度値の和を累積的に算出して作成されるものである(例えば特許文献1参照)。
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、積分画像をRAM(ランダムアクセスメモリ)などの記憶装置に格納する場合は、積分値が非常に大きくなるため、積分画像を格納する為に必要な記憶容量が膨大になるという問題があった。
【0005】
本発明は、上記の点に鑑みなされたもので、積分画像の格納に必要な記憶容量を削減できる画像処理装置、積分画像作成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
上記した課題を解決するために、請求項1に記載の画像処理装置は、画像を分けたブロック単位で、前記ブロックに含まれる1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段とを有することを特徴とする。
【0007】
なお、本発明の構成要素、表現または構成要素の任意の組合せを、方法、装置、システム、コンピュータプログラム、記録媒体、データ構造などに適用したものも本発明の態様として有効である。
【発明の効果】
【0008】
本発明によれば、積分画像の格納に必要な記憶容量を削減できる画像処理装置、積分画像作成方法及びプログラムを提供可能である。
【図面の簡単な説明】
【0009】
【図1】積分画像の一例の説明図である。
【図2】積分画像を利用した輝度の総和の計算の一例の説明図である。
【図3】PCの一例のハードウェア構成図である。
【図4】本実施の形態におけるブロック単位の積分画像の一例の説明図である。
【図5】ブロック単位の積分画像のデータから4つの面積積分値を読み出す処理の一例のイメージ図である。
【図6】本実施の形態におけるブロック単位の積分画像の他の例の説明図である。
【図7】本実施の形態におけるブロック単位の四方向積分画像の一例の説明図である。
【図8】四方向積分画像のデータから面積積分値を読み出す処理の一例のイメージ図である。
【図9】第一領域から第四領域のブロック単位の積分画像の一例の説明図である。
【図10】顔検知時におけるスキャンの仕方を表した一例の説明図である。
【図11】顔検知のアルゴリズムの一例のフローチャートである。
【図12】顔検知時のRAMの動きを表した一例の説明図である。
【図13】初期ライン数224ライン、更新ライン数64ラインのときの四方向積分画像の一例の説明図である。
【図14】走査窓で224ラインのスキャンを行う処理の一例の説明図である。
【図15】三次元積分画像の一例の説明図である。
【図16】本実施の形態におけるブロック単位の三次元積分画像の一例の説明図である。
【図17】画像処理装置の他の例のハードウェア構成図である。
【発明を実施するための形態】
【0010】
以下、本発明の実施の形態について、詳細に説明する。なお、本実施の形態における画像処理装置は、積分画像を作成する機器や装置、回路などであればよい。本実施の形態における画像処理装置は、例えばコンピュータ、複合機やコピー機、デジタルカメラ等の撮像装置、画像処理を行う回路である。本実施の形態における画像処理装置は複数の画素を1つのブロックとして扱い、ブロック単位で積分する積分画像作成方法において、従来と比較して積分画像の格納に必要な記憶容量を削減し、回路規模を削減する。
【0011】
(面積積分)
面積積分(積分画像)とは各画素ブロックの輝度値の和を累積的に算出して作成されるものである。図1は積分画像の一例の説明図である。
【0012】
図1(a)は入力画像の一例を示している。図1(a)の入力画像はVGA(縦480ピクセル、横640ピクセル)で輝度が8ビットであるとする。座標(i,j)の輝度値はY(i,j)とする。座標(i,j)の面積積分値はA(i,j)とする。なお、iは640以下の自然数とする。jは480以下の自然数とする。面積積分値A(i,j)は以下の式(1)のように定義される。
【0013】
A(i,j)=∫∫Y(i,j)=ΣΣY(i,j)…(1)
図1(c)は積分画像の一例を示している。図1(c)の積分画像の積分方向は左上から右下である。すなわちA(1,1)はY(1,1)と等しい。また、A(640、480)は全ての座標(i,j)の輝度値Y(i,j)の合計と等しい。
【0014】
図1(b)はRAMに格納された入力画像の一例を表している。図1(d)はRAMに格納された積分画像の一例を表している。例えば図1(b)のように入力画像を格納したあと、図1(d)のように計算する為には、図1(d)の記憶容量のRAMが1つあればよい。言い換えると、入力画像の確保と積分画像の計算とは物理的に同じRAMで兼用できる。
【0015】
輝度値Yの最大値は255(8ビット)である。したがって、面積積分値Aの最大値は78336000(=255×640×480)である。面積積分値AをRAMに格納する為には、27ビット(=132651000)必要である。したがって、面積積分値Aを格納する為に必要なRAMの記憶容量は、1012.5KB(=640×480×27ビット)となる。なお、本実施の形態においては、特に断りのない限り、8ビット=1バイト、1024バイト=1KB(キロバイト)で計算する。
【0016】
図2は積分画像を利用した輝度の総和の計算の一例の説明図である。図2(a)は積分画像内の任意の長方形に囲まれた輝度値Yの総和Sが任意の長方形の4座標の面積積分値Aから計算できることを表している。なお、図2(a)では積分画像内の任意の長方形の4座標をP0、P1、M0及びM1で表している。
【0017】
図2(b)は積分画像内の任意の長方形の4座標P0、P1、M0及びM1の面積積分値Aが示す輝度値Yの総和を視覚的に表している。図2(a)に示した積分画像内の任意の長方形に囲まれた輝度値Yの総和Sは以下の式(2)により計算できる。
【0018】
S=A(P0)+A(P1)−A(M0)−A(M1)…(2)
任意の長方形に囲まれた画素の数は4座標P0、P1、M0及びM1の座標から求めることができる。したがって、積分画像内の任意の長方形に囲まれた輝度値Yの総和Sを任意の長方形に囲まれた画素の数で割ることにより、任意の長方形に囲まれた画素の輝度の平均値を求めることができる。
【0019】
本実施の形態における画像処理装置は、積分画像内の任意の長方形に囲まれた輝度値Yの総和Sを、上記のようにRAMへの4回以下のアクセスで求めることができるという特性を失うことなく、積分画像の格納に必要なRAMの記憶容量を以下のように削減するものである。
【0020】
(ハードウェア構成図)
画像処理装置10は例えば図3に示すようなPC(パーソナルコンピュータ)により実現される。図3はPCの一例のハードウェア構成図である。PCはバス19で相互に接続された入力装置11、出力装置12、記録媒体読取装置13、補助記憶装置14、主記憶装置15、演算処理装置16及びインタフェース装置17を有する構成である。
【0021】
入力装置11はキーボードやマウス等である。入力装置11は各種信号を入力するために用いられる。出力装置12はディスプレイ装置等である。出力装置12は各種ウインドウやデータ等を表示するために用いられる。インタフェース装置17は、モデム、LANカード等である。インタフェース装置17はLANやインターネット等のネットワークに接続するために用いられる。
【0022】
画像処理装置10を実現するプログラムは、例えば記録媒体18の配布やネットワーク等からのダウンロードなどによって提供される。積分画像作成方法を実現するプログラムは画像処理装置10を実現するプログラムの少なくとも一部である。
【0023】
記録媒体18はCD−ROM、フレキシブルディスク、光磁気ディスク等の様に情報を光学的、電気的或いは磁気的に記録する記録媒体、ROM、フラッシュメモリ等の様に情報を電気的に記録する半導体メモリ等、様々なタイプの記録媒体を用いることができる。
【0024】
プログラムを記録した記録媒体18が記録媒体読取装置13にセットされると、プログラムは記録媒体18から記録媒体読取装置13を介して補助記憶装置14にインストールされる。ネットワーク等からダウンロードされたプログラムはインタフェース装置17を介して補助記憶装置14にインストールされる。
【0025】
補助記憶装置14はプログラム、必要なファイル、データ等を格納する。主記憶装置15はプログラムの起動時に補助記憶装置14からプログラムを読み出して格納する。演算処理装置16は主記憶装置15に格納されたプログラムに従って各種機能を実現する。
【0026】
また、画像処理装置10は、例えば図17に示すようなハードウェアにより実現してもよい。図17は画像処理装置の他の例のハードウェア構成図である。図17はカメラ等の撮像装置21から送られる映像データをRAM23に格納し、顔検知回路26に面積積分値を出力する例を表している。なお、図17の例では輝度格納回路22、積分回路24及び積分値計算回路25が画像処理装置10に相当する。
【0027】
撮像装置21はYUV422やYUV420の映像データ(色情報は不要)を輝度格納回路22に送信する。なお、映像データがRGBの場合はYUV422等に変換された後で送信される。輝度格納回路22はRAM23に輝度値Yを格納する。この際、ブロック内の輝度値Yは全て同じアドレスに格納される。
【0028】
RAM23への輝度値Yの格納が終わると、輝度格納回路22は検知結果が出力されるまで新しい映像データを取り込まない。積分回路24はRAM23に格納された輝度値Yを輝度値Y、水平積分値H、垂直積分値V、面積積分値Aの組み合わせに書き換える。
【0029】
積分値計算回路25は図4(c)に示す計算式の処理を実行する。積分値計算回路25は顔検知回路26から面積積分値を要求された座標が含まれるブロック内の輝度値Y、水平積分値H、垂直積分値V、面積積分値Aをまとめて読み、要求された座標の面積積分値Aを顔検出回路26に出力する。
【実施例1】
【0030】
(アーキテクチャ)
画像処理装置10は、縦2ピクセル及び横2ピクセルの四角形を1つのブロックとして入力画像を320×240のブロックに分ける。画像処理装置10はブロック単位で後述のような積分画像のデータをRAMに格納する。図4は本実施の形態におけるブロック単位の積分画像の一例の説明図である。図4(a)は本実施の形態におけるブロック単位の積分画像のデータの一例を示す。
【0031】
ブロック単位の積分画像のデータは、面積積分値A(i−1,j−1)と、垂直積分値V(i,j−1)と、水平積分値H(i−1,j)と、輝度値Y(i,j)とを含む構成である。座標(i,j)の水平積分値はH(i,j)とする。座標(i,j)の垂直積分値はV(i,j)とする。なお、i及びjは2の倍数である。
【0032】
垂直積分値Vは垂直方向に輝度値Yを累積的に足し合わせたものである。具体的に垂直積分値V(i,j)は輝度値Y(i,1)〜Y(i,j)を累積的に足し合わせたものである。水平積分値Hは水平方向に輝度値Yを累積的に足し合わせたものである。具体的に水平積分値H(i,j)は輝度値Y(1,j)〜Y(i,j)を累積的に足し合わせたものである。
【0033】
図4(b)はブロック単位でRAMの各アドレスに格納された積分画像のデータの一例である。RAMの各アドレスに格納された各ブロックの積分画像のデータには本来の面積積分値Aが1つしか含まれていない。
【0034】
しかし、図4(c)に回路で示す計算式により、RAMの1つのアドレスからブロック単位の積分画像のデータを読み出すことで、画像処理装置10は4つの面積積分値Aを読み出すことができる。図4(c)は以下の式(3)〜(5)を示している。
【0035】
A(i,j−1)=A(i−1,j−1)+V(i,j−1)…(3)
A(i−1,j)=A(i−1,j−1)+H(i−1,j)…(4)
A(i,j)=A(i−1,j−1)+V(i,j−1)
+H(i−1,j)+Y(i,j)…(5)
図5はブロック単位の積分画像のデータから4つの面積積分値を読み出す処理の一例のイメージ図である。図5(a)はブロック単位の積分画像のデータに1つ含まれる面積積分値A(i−1,j−1)が輝度値Yの和を累積的に算出する画素の範囲を斜線で示したものである。また、図5(b)はブロック単位の積分画像のデータに1つ含まれる垂直積分値V(i,j−1)が垂直方向に輝度値Yの和を累積的に算出する画素の範囲を斜線で示したものである。また、図5(c)はブロック単位の積分画像のデータに1つ含まれる水平積分値H(i−1,j)が水平方向に輝度値Yの和を累積的に算出する画素の範囲を斜線で示したものである。
【0036】
式(3)は図5(a)の斜線部分に示した輝度値Yの和と、図5(b)の斜線部分に示した輝度値Yの和とを加算することにより、面積積分値A(i,j−1)を求めるものである。式(4)は図5(a)の斜線部分に示した輝度値Yの和と、図5(c)の斜線部分に示した輝度値Yの和とを加算することにより、面積積分値A(i−1,j)を求めるものである。
【0037】
また、式(5)は図5(a)の斜線部分に示した輝度値Yの和と、図5(b)の斜線部分に示した輝度値Yの和と、図5(c)の斜線部分に示した輝度値Yの和と、ブロック単位の積分画像のデータに1つ含まれる輝度値Y(i,j)とを加算することにより、面積積分値A(i,j)を求めるものである。
【0038】
以上のように、画像処理装置10はブロック毎に4つの面積積分値Aを一度に読み出すことができる。画像処理装置10は、どの座標の面積積分値AもRAMへの1回のアクセスで求めることができる。
【0039】
ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量は次のように見積もることができる。水平積分値Hの最大値は、163200(=255×640)である。水平積分値HをRAMに格納する為には、18ビット必要である。垂直積分値Vの最大値は、122400(=255×480)である。垂直積分値VをRAMに格納する為には、17ビット必要である。よって、1ブロックの積分画像のデータをRAMに格納する為には70ビット(輝度値Yが8ビット、水平積分値Hが18ビット、垂直積分値Vが17ビット、面積積分値Aが27ビット)必要である。
【0040】
したがって、ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量は656.25KB(=320×240×70ビット)となる。このように、画像処理装置10は、図1(d)に示した面積積分値Aを格納する為に必要なRAMの記憶容量1012.5KBよりも、ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量を削減できている。
【0041】
上記では、縦2ピクセル及び横2ピクセルの四角形を1つのブロックとして説明しているが、1つのブロックに含まれるピクセル数を整数倍で増やすこともできる。画像処理装置10は、縦4ピクセル及び横4ピクセルの四角形を1つのブロックとして入力画像を160×120(=19200)のブロックに分けることもできる。
【0042】
図6は本実施の形態におけるブロック単位の積分画像の他の例の説明図である。画像処理装置10は、ブロック単位で図6(a)に示すような積分画像のデータを、RAMに格納する。図6(a)は本実施の形態におけるブロック単位の積分データとブロック単位でRAMの各アドレスに格納された積分画像のデータの一例である。
【0043】
図6(a)に示すブロック単位の積分画像のデータは、1つの面積積分値A、3つの水平積分値V、3つの垂直積分値H、9つの輝度値Yを含み、RAMの1つのアドレスに格納される。RAMの各アドレスに格納された各ブロックの積分画像のデータには本来の面積積分値Aが1つしか含まれていない。しかし、図6(b)に示す計算式により、RAMの1つのアドレスからブロック単位の積分画像のデータを読み出すことで、画像処理装置10は16の面積積分値Aを読み出すことができる。
【0044】
ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量は次のように見積もることができる。縦2ピクセル及び横2ピクセルの四角形を1つのブロックとした説明と同様、縦4ピクセル及び横4ピクセルの四角形を1つのブロックとした場合も水平積分値HをRAMに格納する為には、18ビット必要である。垂直積分値VをRAMに格納する為には、17ビット必要である。輝度値YをRAMに格納する為には8ビット必要である。面積積分値AをRAMに格納する為には27ビット必要である。
【0045】
したがって、1つの面積積分値A、3つの水平積分値V、3つの垂直積分値H、9つの輝度値Yを含むブロック単位の積分画像のデータをRAMに格納する為には、面積積分値Aが27ビット、3つの水平積分値Vが18×3ビット、3つの垂直積分値Hが17×3ビット、9つの輝度値Yが8×9ビットの204ビット必要である。また、ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量は478.125KB(=160×120×204ビット)となる。
【0046】
このように、画像処理装置10は、図1(d)に示した面積積分値Aを格納する為に必要なRAMの記憶容量1012.5KBよりも、ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量を削減できている。
【0047】
なお、1つのブロックに含まれるピクセル数を増やせば増やすほど、ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量は削減できるが、図4(c)に示すようなブロック単位の積分画像のデータから複数の面積積分値Aを読み出すための計算式を実現する制御回路が大きくなる。
【0048】
また、FAB(ファウンドリ)によっては巨大なビット幅のRAMが存在しないということもある。この場合はRAMの枚数が増え、遅延が起きてしまう等の問題がある。限界まで全体の回路規模を削減しようとすると、FABによってどこまでブロックサイズを大きくするかは異なるが、一定以上ブロックサイズを大きくしても、RAMの記憶容量の削減への影響が、ほとんどなくなる。そこで、以下の説明では縦4ピクセル及び横4ピクセルの四角形を1つのブロックとして扱う。
【実施例2】
【0049】
画像処理装置10は、図7に示すように、入力画像を4分割して入力画像の中央から角4方向に面積積分を行ってもよい。図7は本実施の形態におけるブロック単位の四方向積分画像の一例の説明図である。なお、図7では等分割しているが、厳密に等分割である必要はない。図7では分割して出来た4つの領域をそれぞれ第一領域から第四領域まで名前を付けている。
【0050】
図8は、四方向積分画像のデータから面積積分値を読み出す処理の一例のイメージ図である。四方向積分画像内の任意の長方形は、a)1つの領域内、b)2つの領域内、c)1つの境界に接する場合、d)全ての領域を含む、e)2つの境界に接する場合、の何れかである。図8では、a)からe)の場合における、それぞれの長方形内の輝度の総和をSa、Sb、Sc、Sd、Seとする。
【0051】
境界に接していないa)、b)、d)の場合における、それぞれの長方形内の輝度の総和Sa、Sb及びSdは4点の面積積分値Aが分かれば計算可能である。例えばa)の場合における長方形内の輝度の総和Saは、その長方形の4座標における面積積分値AをそれぞれM0a、M1a、P0a、P1aとすると、P0a+P1a−M0a−M1aにより算出できる。
【0052】
1つの境界に接しているc)の場合における、長方形内の輝度の総和Scは2点の面積積分値Aが分かれば計算可能である。例えばc)の場合における長方形内の輝度の総和Scは、その長方形の2座標における面積積分値AをそれぞれM0c、P0cとすると、P0c−M0cにより算出できる。
【0053】
2つの境界に接しているe)の場合における、長方形内の輝度の総和Seは、1点の面積積分値Aが分かれば求まる。例えばe)の場合における長方形内の輝度の総和Seは、その長方形の1座標における面積積分値AをP0eとすると、P0eである。
【0054】
よって、四方向積分画像内の任意の長方形内の輝度の総和Sは上記のようにRAMへの4回以下のアクセスで求めることができるという特性を失わない。
【0055】
図9は第一領域から第四領域のブロック単位の積分画像の一例の説明図である。画像処理装置10は、ブロック単位で図9(a−1)から図9(a−4)に示すような第一領域から第四領域の積分画像のデータを、RAMに格納する。図9(b)は本実施の形態におけるブロック単位の積分データとブロック単位でRAMの各アドレスに格納された積分画像のデータの他の例である。
【0056】
図9(a−1)から図9(a―4)に示すように、第一領域から第四領域の各領域によりブロック内のどこの座標の面積積分を行うかは異なるが、1つの面積積分値A、3つの水平積分値V、3つの垂直積分値H、9つの輝度値Yを含む点で同じである。
【0057】
しかし、4分割したため、第一領域から第四領域の各領域の角(面積積分値Aが最大となる点)で足し合わせる輝度値Yの数が減り、面積積分値Aの最大値をRAMに格納する為に必要となるビットは、2ビット減って25ビットとなる。また、水平積分値HをRAMに格納する為に必要となるビットは、1ビット減って17ビットとなる。垂直積分値VをRAMに格納する為に必要となるビットは、1ビット減って16ビット必要である。
【0058】
よって、1ブロックの積分画像のデータをRAMに格納する為には、面積積分値Aが25ビット、水平積分値Vが17×3ビット、垂直積分値Hが16×3ビット、9つの輝度値Yが8×9ビットの196ビット必要である。また、ブロック単位で積分画像のデータを格納するのに必要なRAMの記憶容量は459.375KB(=160×120×196ビット)となる。なお、用途によっては、制御を簡単にするため、入力画像を例えば左右に2分割してもよい。入力画像を2分割する場合、積分方向は第一領域及び第二領域が無くなって、第三領域及び第四領域の形となる。1ブロックの積分画像のデータをRAMに格納する為には、面積積分値Aが26ビット、水平積分値Vが17×3ビット、垂直積分値Hが17×3ビット、9つの輝度値Yが8×9ビットの200ビット必要である。
【実施例3】
【0059】
画像処理装置10は、顔検知のアルゴリズムに合わせて、面積積分を部分的に行うこともできる。ここでは、入力画像を左右2方向に2分割する例を説明する。顔検知時におけるスキャンは例えば特開2010−28370号公報に記載されているように行うことができる。
【0060】
顔検知時におけるスキャンは簡単に説明すると以下の通りである。図10は顔検知時におけるスキャンの仕方を表した一例の説明図である。図10(a)は大きさの異なる走査窓の一例を表している。走査窓は顔の大きさに応じて用意する。図10(b)は各走査窓でスキャンを行う様子を表している。図10(b)に示すように、全ての走査窓は入力画像上を全てスキャンできるように左上から右下まで動かされる。
【0061】
そして、顔検知のアルゴリズムでは、走査窓内の輝度値Yを部分的に読み、予め用意されたフィルタとマッチングを行うことにより、顔か非顔かを判定する。なお、顔検知のアルゴリズムでは、一画面中の全ての面積積分値を一度に求める必要はない。顔検知のアルゴリズムでは、図11に示すフローチャートのように、部分的に面積積分値を更新していくことが可能である。
【0062】
図11は顔検知のアルゴリズムの一例のフローチャートである。画像処理装置10はステップS1において、輝度値Yをブロック毎にRAMに格納する。画像処理装置10はステップS2において、一番大きな走査窓と同じライン数である120ライン(ブロックのライン数の整数倍)だけ面積積分を行う。
【0063】
ステップS3において、画像処理装置10は全ての走査窓で120ラインのスキャンを行う。ステップS4において、画像処理装置10は次のブロックのライン数である4ラインの面積積分を行う。ステップS5において、画像処理装置10は4ラインの最後まで全ての走査窓でスキャンを行う。
【0064】
ステップS6において、画像処理装置10は入力画像全体のスキャンが終了したか否かを判定する。画像処理装置10は入力画像全体のスキャンが終了していなければステップS4に戻り、ステップS4〜S6の処理を繰り返す。画像処理装置10は入力画像全体のスキャンが終了していれば、図11のフローチャートの処理を終了する。
【0065】
図11のフローチャートでは、走査窓の大きさが120×120ピクセルのとき、走査窓の1回の移動幅が4ライン以上という条件は付くが、一般には走査窓の大きさの1割程度の移動幅となるため問題がない。
【0066】
図12は顔検知時のRAMの動きを表した一例の説明図である。図12に示すように画像処理装置10は2枚のRAMを用いて輝度値Yの格納、120ラインの面積積分、4ラインの面積積分の更新を行う。
【0067】
図12(a)は2枚のRAMを用いて輝度値Yの格納を行う様子を表している。1つ目のRAM「RAM−A」はブロック(縦4ピクセル及び横4ピクセル)単位で8ビットの輝度値Yを格納する。RAM−Aは160×120(=19200)のブロックの輝度値Yを格納する。
【0068】
また、図12(b)は2枚のRAMを用いて120ラインの面積積分を行う様子を表している。入力画像を2分割した場合、上記したように1ブロックの積分画像のデータをRAMに格納する為には、200ビット必要である。そこで、画像処理装置10は1つ目のRAM「RAM−A」と2つ目のRAM「RAM−B」とを共通化した160×30×200ビットにブロック単位で面積積分値Aを格納する。なお、RAM−Aには160×90(=14400)のブロックの輝度値Yが格納されたままとなる。
【0069】
また、図12(c)は2枚のRAMを用いて4ラインの面積積分の更新を行う様子を表している。画像処理装置10は次のブロックの4ラインの面積積分を行う。更新を行う4ライン分の面積積分値Aはブロックの輝度値Yが格納されたままのRAM−Aの記憶領域に上書きされると共に、RAM−Bのアドレス0からアドレス3に121ラインから124ラインの面積積分値Aに上書きされる。
【0070】
図10において4方向に4分割しない理由は、垂直積分方向が第一及び第二領域と第三及び第四領域とで異なると、入力画像の中央から上に向かって始め、再度、入力画像の中央から重複してやり直さなければならないからである。RAMの容量は、342.1875KB(=160×120×128ビット+160×30×72ビット)となり、従来の積分画像作成方法で必要であった1012.5KBと比較して、約3分の1の記憶容量で積分画像を作成できる。
【0071】
ここでは補足の説明を行う。最初に面積積分するライン数は初期ライン数と呼ぶ。更新して面積積分するライン数は更新ライン数と呼ぶ。更新ライン数は、初期ライン数が十分に大きければ(必要なRAMの記憶容量は増える)大きくしても構わない。例えば初期ライン数が224ライン、更新ライン数が64ラインのとき、走査窓の大きさが160×160ピクセルまでなら、移動幅がいくらでも対応できる。
【0072】
図11に示すフローチャートのように、部分的に面積積分値を更新していく場合は一括して面積積分する場合に比べて更新回数が多いほど僅かに遅延するため、少ない更新で済む方がよい。図13は初期ライン数224ライン、更新ライン数64ラインのときの四方向積分画像の一例の説明図である。図13では、第一領域及び第二領域を上側224ラインとし、第三領域及び第四領域を下側256ラインとすることで、積分方向を4方向に分割している。
【0073】
第一領域及び第二領域のライン数をkとすると、面積積分値を格納する為のビット数がどの領域でも増えないようにする為には、k≦2^8かつ480−k≦2^8であればよいことが分かる。なお、x^yはxのy乗を表している。つまり224≦k≦256で初期ライン数がk以上であれば、積分方向は4方向に分割してもよい。
【0074】
図14は走査窓で224ラインのスキャンを行う処理の一例の説明図である。例えば図14(a)は224ラインの面積積分を行い、160×160ピクセルの大きさの走査窓で左上から右下にスキャンを行う様子を表している。図14(b)は走査窓の大きさが160×160ピクセルのため、以後、上の64ラインが走査窓に含まれることが無い不要領域であることを表している。
【0075】
図14(c)は不要領域の64ラインを破棄して、次の64ラインの面積積分を行い更新領域とすることを表している。図14(d)は不要領域が破棄され、更新領域が追加された新しい224ラインにおいて、160×160ピクセルの大きさの走査窓で左上から右下にスキャンを行う様子を表している。なお、スキャンは更新領域である下位64ラインを一部に含む位置と大きさの走査窓で行われる。
【0076】
顔検知のアルゴリズムによって検知した顔を顔認証用に登録する場合など、顔検知後に座標内の顔を輝度として取り出したいことがある。本実施の形態では全ての座標の面積積分値から上記のように全座標の輝度値を求めることができる。これは、本実施の形態が非可逆圧縮を利用することなくRAMの記憶容量の削減を行っていることによる。既存の非可逆圧縮技術を本実施の形態に適用することは応用として可能である。
【実施例4】
【0077】
医療用の画像診断では、例えば立体(人体)を輪切りにして細かくスキャンすることがある。この場合、特徴量は垂直方向にも出るため、体積積分を行う。モーション認識においては連続する画像を時間軸方向に積分することもある。この場合は時間積分を行う。
【0078】
図15は三次元積分画像の一例の説明図である。三次元積分の場合、直方体内の輝度の総和Iは図15(b)に示すように8点の三次元積分値P0〜P3、M0〜M3から以下の式(6)を利用して求められる。なお、図15(a)は積分方向を表している。
【0079】
I=P0+P1+P2+P3−M0−M1−M2−M3…(6)
三次元積分画像は例えば図16に示すブロック単位に分けることができる。図16は本実施の形態におけるブロック単位の三次元積分画像の一例の説明図である。ブロック単位の三次元積分画像のデータは、図16(b)に示すように、三次元積分値と、3つの二次元積分値と、3つの一次元積分値と、輝度値yとを含む構成である。なお、体積積分したものを更に時間積分した場合は、図16(a)に示すように四次元積分となる。
【0080】
ここでは、r及びnを整数とし、rを0以上n以下として説明する。0次元積分値は輝度値yとする。本実施の形態では、n次元積分画像の2^nピクセルを1ブロックにして扱い、輝度値yを格納してから軸ごとに積分して、最終的にnCr個のr次元積分値で表現することで、必要なRAMの記憶容量を削減している。1ブロックのピクセル数は増やしても構わない。
【0081】
本実施の形態の画像処理装置10は顔検知回路、顔認識回路に利用できる。また、本実施の形態の画像処理装置10は指紋認証などの画像のパターンマッチングを行う回路、又は、三次元医療画像診断、モーション認証などの画像から特徴を抽出する回路への応用も可能である。
【0082】
本発明は、具体的に開示された実施例に限定されるものではなく、特許請求の範囲から逸脱することなく、種々の変形や変更が可能である。例えば本発明は輝度値に限るものではなく、RGB値や輝度値の二乗なども含む。
【0083】
なお、特許請求の範囲に記載した記憶手段は補助記憶装置14又は主記憶装置15に相当する。制御手段は図4(c)に示した計算式の処理を行う例えば演算処理装置16に相当する。
【符号の説明】
【0084】
10 画像処理装置
11 入力装置
12 出力装置
13 記録媒体読取装置
14 補助記憶装置
15 主記憶装置
16 演算処理装置
17 インタフェース装置
18 記録媒体
19 バス
【先行技術文献】
【特許文献】
【0085】
【特許文献1】特開2011−19013号公報

【特許請求の範囲】
【請求項1】
画像を分けたブロック単位で、前記ブロックに含まれる1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
を有することを特徴とする画像処理装置。
【請求項2】
前記記憶手段は、前記ブロックに含まれる
座標(i,j)の輝度値(i,j)と、
座標(i,j−1)の垂直積分値(i,j−1)と、
座標(i−1,j)の水平積分値(i−1,j)と、
座標(i−1,j−1)の面積積分値(i−1,j−1)と
を格納し、
前記制御手段は、前記ブロックに含まれる
座標(i,j−1)の面積積分値(i,j−1)を面積積分値(i−1,j−1)+垂直積分値(i,j−1)により算出し、
座標(i−1,j)の面積積分値(i−1,j)を面積積分値(i−1,j−1)+水平積分値(i−1,j)により算出し、
座標(i,j)の面積積分値(i,j)を、面積積分値(i−1,j−1)+垂直積分値(i,j−1)+水平積分値(i−1,j)+輝度値(i,j)により算出する
ことを特徴とする請求項1記載の画像処理装置。
【請求項3】
前記記憶手段は、前記ブロックがn×nの大きさのとき、
(n−1)×(n−1)の輝度値と、
(n−1)の垂直積分値と、
(n−1)の水平積分値と、
1個の面積積分値と
を格納していること
を特徴とする請求項1記載の画像処理装置。
【請求項4】
n次元の画像に対して最大2の2乗の方向に面積積分の積分方向を持つことを特徴とする請求項1乃至3何れか一項記載の画像処理装置。
【請求項5】
前記記憶手段は、n次元の画像に対して、n次元積分値から0次元積分値(輝度値)までの値で表現することを特徴とする請求項1乃至4何れか一項記載の画像処理装置。
【請求項6】
コンピュータによって実行される積分画像作成方法であって、
画像を分けたブロック単位で、前記ブロックに含まれる1個の座標の面積積分値、複数の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段から読み出した、1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値により、前記ブロックに含まれる全ての座標の面積積分値を算出する
ことを特徴とする積分画像作成方法。
【請求項7】
コンピュータを、
画像を分けたブロック単位で、前記ブロックに含まれる1個の座標の面積積分値、複数の座標の垂直積分値、水平積分値及び輝度値を格納した記憶手段と、
前記ブロックに含まれる全ての座標の面積積分値を、前記記憶手段から読み出した1個の座標の面積積分値、1個以上の座標の垂直積分値、水平積分値及び輝度値により算出する制御手段と
として機能させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate


【公開番号】特開2013−54597(P2013−54597A)
【公開日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願番号】特願2011−193247(P2011−193247)
【出願日】平成23年9月5日(2011.9.5)
【出願人】(000006747)株式会社リコー (37,907)
【Fターム(参考)】