以下、本発明の実施形態について、図面を参照して説明する。本実施形態においては、例えば、デジタルスチルカメラなどの撮像装置に、本実施形態の画像生成装置を適用した場合の一例について説明する。図1は、本実施形態における画像生成装置を適用した撮像装置の概略構成を示したブロック図である。図1に示した撮像装置10は、制御部11と、撮像部12と、記憶部13と、位置ズレ検出部14と、画像処理部15と、表示部16と、記録部17と、動体除去部20と、を備えている。
制御部11は、撮像装置10内の各構成要素をそれぞれ制御することによって、撮像装置10全体の制御を行う。撮像部12は、レンズや撮像素子などから構成され、制御部11からの制御に応じて、レンズを介して撮像素子に結像された被写体の光学像を露光する。そして、撮像部12は、撮像素子が露光した光量に応じて画像信号に変換した画像データを、記憶部13に出力する。
記憶部13は、制御部11からの制御に応じて、撮像部12から入力された画像データを一時的に記憶する、例えば、DRAM(Dynamic Random Access Memory)などのメモリである。記憶部13は、動体除去部20が動体を除去する処理に使用する枚数分の画像データを記憶する。記憶部13に記憶されたそれぞれの画像データは、制御部11からの制御に応じて、動体除去部20に出力される。また、記憶部13に記憶された画像データは、制御部11からの制御に応じて位置ズレ検出部14に出力され、位置ズレ検出部14から入力された位置ズレ情報が記憶される。
位置ズレ検出部14は、制御部11からの制御に応じて、記憶部13に記憶された全ての画像データに対して、画角の位置が合うようにするためのズレ量を計算する。そして、位置ズレ検出部14は、計算したズレ量を、位置ズレ情報として記憶部13に出力する。制御部11は、記憶部13に記憶された画像データを動体除去部20が読み出す際、記憶部13に記憶された位置ズレ情報に基づいて、画像データにおけるそれぞれの画素の位置が、被写体の光学像の同じ場所を露光したときの位置になるように、記憶部13からの画像データの読み出しを制御する。これにより、動体除去部20に入力される全ての画像データ内で同一の位置に配置されているそれぞれの画素の画素値は、被写体の光学像の同じ場所を露光したときの値になる。
動体除去部20は、制御部11からの制御に応じて記憶部13から入力された位置ズレを検出した全ての画像データに対して動体除去処理を行って、画像データ内に含まれる動体を除去した画像データを生成する、本実施形態の画像生成装置である。動体除去部20は、動体除去処理によって、例えば、建物などの固定の被写体(以下、「固定物」という)の前を横切る通行人や車両などの不要な移動体の画素値を動体として除去した画像データを生成する。
動体除去部20によって生成される動体除去後の画像データは、背景のみが写された画像データと同等の画像データである。以下の説明においては、動体除去部20によって生成される動体除去後の出力画像の画像データを、「動体除去画像」という。動体除去部20は、生成した動体除去画像を、画像処理部15に出力する。なお、動体除去部20における動体除去処理に関する詳細な説明は、後述する。
画像処理部15は、制御部11からの制御に応じて、動体除去部20から入力された動体除去画像に対して、予め定められた種々の画像処理(現像)を行った画像データを生成する。そして、画像処理部15は、生成した画像処理後の画像データを、撮像装置10内の対応する構成要素に出力する。例えば、画像処理部15は、画像データを表示するための画像処理を行って生成した表示用の画像データを、表示部16に出力する。また、例えば、画像処理部15は、画像データを記録するための画像フォーマット(例えば、JPEG:Joint Photographic Experts Group)に変換する画像処理を行って生成した記録用の画像データを、記録部17に出力する。
表示部16は、画像データを表示する、例えば、LCD(Liquid Crystal Display)などの表示装置を備え、制御部11からの制御に応じて、画像処理部15から入力された表示用の画像データを表示する。記録部17は、制御部11からの制御に応じて、画像処理部15から入力された記録用の画像データを、例えば、メモリカードなどの画像記録媒体に記録する。
次に、撮像装置10に備えた本実施形態の画像生成装置である動体除去部20について説明する。図2は、本実施形態の画像生成装置である動体除去部20の概略構成を示したブロック図である。図2に示したように、動体除去部20は、参照値生成部21と動体除去画素生成部22とを備えている。なお、図2では、撮像装置10内における動体除去部20と、記憶部13および画像処理部15との接続も併せて示している。
動体除去部20は、制御部11からの制御に応じて、記憶部13に記憶された位置ズレ情報に基づいて位置ズレを補正するように画像データの読み出し位置を調整して、記憶部13に記憶された複数枚の画像データのそれぞれを、入力画像として読み出す。そして、動体除去部20は、動体除去処理を行って生成した1枚の画像データを、動体除去画像として画像処理部15に出力する。なお、動体除去部20による動体除去処理では、動体除去処理に用いるそれぞれの入力画像において、同一の座標位置に配置されている画素の画素値の中から、動体除去画像のそれぞれの画素の画素値を選択する。このとき、動体除去部20は、現在処理している画素の座標位置の周囲に配置されている画素の画素値を参照して算出した値に基づいて、現在処理している画素の画素値の中から動体除去画像の画素の画素値を選択する場合もある。そして、動体除去部20内の各構成要素は、それぞれの画素に対する動体除去処理を、入力画像の画素数と同じ回数繰り返す。
以下の説明においては、それぞれの入力画像において同一の座標位置に配置された、現在動体除去処理を行っている対象の画素を、「注目画素」といい、動体除去処理を行って生成した動体除去画像において注目画素と同一の座標位置に配置されている画素を、「動体除去画素」という。また、現在処理している注目画素の座標位置の周囲に配置されている画素を、「周囲画素」といい、周囲画素の画素値を参照して算出した値を、「参照値」という。
なお、注目画素の画素値は、撮像部12内の撮像素子が露光した光量に応じた画像信号に基づいた値(例えば、RAWデータの値)である。この注目画素の画素値は、上述した画像信号に基づいた値を画像処理することによって得られる、画像の輝度を表す輝度情報の値や、画像の色を表す色情報の値であってもよい。以下の説明においては、画像信号に基づいた値、あるいは輝度情報の値と色情報の値のいずれか一方または両方の値を区別せず、単に「画素値」として説明する。
参照値生成部21は、記憶部13から入力された複数の入力画像において同一の座標位置に配置されている各注目画素の画素値のヒストグラムを生成する。そして、参照値生成部21は、生成した注目画素の画素値のヒストグラムにおける最大度数の値を「信頼度」とし、最大度数の画素値を「最頻値」として動体除去画素生成部22に出力する。また、参照値生成部21は、現在処理している注目画素の周囲に配置されている周囲画素の信頼度と最頻値とに基づいて、動体除去画素を決定するための参照情報である参照値を算出し、算出した参照値を動体除去画素生成部22に出力する。参照値生成部21は、信頼度生成部211と、参照範囲設定部212と、参照値算出部213と、を備えている。
信頼度生成部211は、記憶部13から入力された複数の入力画像の各注目画素の画素値に基づいて、注目画素の画素値のヒストグラム(以下、「ヒストグラムHist1」という)を生成する。例えば、入力画像のある注目画素に対応したヒストグラムHist1を生成する場合、信頼度生成部211は、1枚目〜N枚目の入力画像において同一の座標位置に配置されているそれぞれの注目画素の画素値が同じ値である個数(度数)を、それぞれの画素値毎にカウントすることによってヒストグラムHist1を生成する。そして、信頼度生成部211は、生成したヒストグラムHist1から得られる注目画素の信頼度と最頻値とを、動体除去画素生成部22に出力する。また、信頼度生成部211は、ヒストグラムHist1から得られた信頼度を参照範囲設定部212に、信頼度と最頻値とを参照値算出部213に、それぞれ出力する。
なお、信頼度生成部211が信頼度および最頻値を生成する方法は、上述した一例のように、ヒストグラムHist1を生成して信頼度および最頻値を得る方法に限定されるものではなく、他の方法によって、記憶部13から入力された複数の入力画像の各注目画素の信頼度および最頻値を生成する構成にすることもできる。
参照範囲設定部212は、信頼度生成部211から入力された信頼度に基づいて、参照値を算出するために使用する、現在処理している注目画素の周囲に配置されている周囲画素の範囲(以下、「参照範囲」という)を決定する。なお、参照範囲は、注目画素の座標位置を中心とした矩形の領域である。参照範囲設定部212が参照範囲を決定する際には、注目画素の座標位置から、周囲に1画素分ずつ順次範囲を広げていく。そして、参照範囲設定部212は、参照範囲内の周囲画素のそれぞれを注目画素としたときに信頼度生成部211が生成したヒストグラムHist1から得られる信頼度を用いて、適切な参照範囲を決定する。
より具体的には、参照範囲設定部212は、注目画素の周囲(上下左右)に1画素分ずつの矩形領域(注目画素を含む9画素の領域)を、最初の参照範囲として設定する。そして、参照範囲設定部212は、参照範囲に含まれるそれぞれの周囲画素の信頼度と、予め定めた信頼度の第1の閾値(以下、「信頼度閾値thrT1」という)とを比較し、信頼度閾値thrT1以上の信頼度を持つ周囲画素の数を計数する。続いて、参照範囲設定部212は、信頼度閾値thrT1以上の信頼度を持つ周囲画素の数と、予め定めた画素数の閾値(以下、「画素数閾値thrC」という)とを比較し、信頼度閾値thrT1以上の信頼度を持つ周囲画素の数が画素数閾値thrC以上である場合には、現在の参照範囲を、参照値を算出するために使用する範囲に決定する。一方、信頼度閾値thrT1以上の信頼度を持つ周囲画素の数が画素数閾値thrCよりも少ない場合には、現在の参照範囲の周囲(上下左右)に1画素分ずつ広げた矩形領域(注目画素を含む25画素の領域)を、次の参照範囲として設定し、同様に参照値を算出するために使用する範囲に決定するか否かを判定する。このような参照範囲の設定と判定とを繰り返し、信頼度閾値thrT1以上の信頼度を持つ周囲画素の数が画素数閾値thrC以上になるまで、参照範囲を周囲に1画素分ずつ順次広げていく。
このようにして、注目画素を含む参照範囲を順次広げていき、参照値を算出するために使用する参照範囲を決定すると、参照範囲設定部212は、決定した参照範囲の大きさを表す情報を参照値算出部213に出力する。
参照値算出部213は、参照範囲設定部212から入力された参照範囲と、信頼度生成部211から入力された信頼度と最頻値とに基づいて、動体除去画素を選択するための参照値を算出する。そして、参照値算出部213は、算出した参照値を動体除去画素生成部22に出力する。
参照値算出部213による参照値の算出においては、参照範囲設定部212から入力された参照範囲内の周囲画素の内、信頼度閾値thrT1以上の信頼度を持つ周囲画素の個数(度数)をそれぞれの最頻値毎にカウントすることによって、最頻値のヒストグラム(以下、「ヒストグラムHist2」という)を生成する。このとき、参照値算出部213は、それぞれの周囲画素と注目画素との距離が近い、すなわち、当該周囲画素の座標位置と注目画素の座標位置とが近い最頻値ほど、より大きな度数となるように重みを付けてヒストグラムHist2を生成する。なお、それぞれの最頻値の度数に対する重み付けでは、信頼度閾値thrT1以上の信頼度を持つ周囲画素の最頻値の分散(ばらつき)を算出し、算出した分散値が大きいほどより大きな重み付けとなるように、最頻値の度数に対する重み付け係数の特性に傾斜をつける。そして、参照値算出部213は、生成したヒストグラムHist2における最大度数の最頻値を、参照値として動体除去画素生成部22に出力する。
動体除去画素生成部22は、参照値生成部21から入力された、注目画素の信頼度と、周囲画素から算出した参照値とに基づいて、記憶部13から入力された複数の入力画像において同一の座標位置に配置されている各注目画素の画素値、および参照値生成部21から入力された最頻値の中から1つの値(画素値)を選択する。そして、動体除去画素生成部22は、選択した1つの値(画素値)を、動体除去画像において注目画素と同一の座標位置に配置されている動体除去画素の画素値として、画像処理部15に出力する。動体除去画素生成部22は、注目画素値検出部221と動体除去画素選択部222と、を備えている。
注目画素値検出部221は、記憶部13から入力された複数の入力画像の各注目画素の内、参照値生成部21から入力された参照値に最も近い値の画素値を持つ注目画素を選択する。例えば、注目画素の画素値を選択する場合、注目画素値検出部221は、1枚目〜N枚目の入力画像の各注目画素の画素値と参照値との差分を入力画像の枚数分(N枚分)算出し、算出したN枚分の差分値が最も小さい注目画素を選択する。そして、注目画素値検出部221は、選択した注目画素の画素値を動体除去画素選択部222に出力する。
動体除去画素選択部222は、参照値生成部21から入力された信頼度に基づいて、注目画素値検出部221から入力された注目画素の画素値、または参照値生成部21から入力された最頻値のいずれか一方の値(画素値)を、動体除去画素の画素値として画像処理部15に出力する。より具体的には、参照値生成部21から入力された信頼度が、予め定めた信頼度の第2の閾値(以下、「信頼度閾値thrT2」という)以上である場合には、参照値生成部21から入力された最頻値を選択し、参照値生成部21から入力された信頼度が信頼度閾値thrT2よりも小さい場合には、注目画素値検出部221から入力された注目画素の画素値を選択する。そして、動体除去画素選択部222は、選択した値(画素値)を、動体除去部20が動体除去処理した最終的な動体除去画素の画素値として、画像処理部15に出力する。
このように、動体除去部20は、記憶部13から入力された全ての入力画像において、同一の座標位置に配置されているそれぞれの注目画素の画素値、および周囲画素の画素値に基づいて動体除去処理を順次行い、動体除去画像の画素の画素値を画像処理部15に出力する。
なお、信頼度閾値thrT1、画素数閾値thrC、および信頼度閾値thrT2は、入力画像の枚数に応じて決定する。このとき、信頼度閾値thrT1は、注目画素と異なる周囲の座標位置に配置されている周囲画素に対する閾値であるため、より信頼度を高くするために、注目画素に対する閾値である信頼度閾値thrT2よりも大きな値にすることが考えられる。これにより、ヒストグラムHist2を生成する参照範囲内の周囲画素の信頼度が高くなり、参照値生成部21から入力された信頼度がより高い周囲画素に基づいて、動体除去画像の画素の画素値を選択することができ、より精度よく背景である可能性が高い画素の画素値を選択することができる。また、入力画像の枚数が多い場合には、信頼度閾値thrT1と信頼度閾値thrT2との差を大きくし、より周囲画素に対する信頼度を高めた状態で動体除去処理を行うことが考えられる。
なお、例えば、入力画像の枚数が少ないことにより、注目画素の信頼度が低めの値であり、信頼度閾値thrT1と信頼度閾値thrT2とに差を設けると、信頼度の判定が正しく行えない可能性がある場合には、信頼度閾値thrT1と信頼度閾値thrT2とを、同じ値にすることもできる。この場合には、参照範囲設定部212および参照値算出部213において、信頼度閾値thrT1(=thrT2)よりも大きい信頼度を持つ周囲画素を、参照範囲の決定やヒストグラムHist2の生成における対象の周囲画素とすることによって、信頼度がより高い周囲画素に基づいて動体除去画像の画素の画素値を選択することができる。
次に、撮像装置10に備えた本実施形態の画像生成装置である動体除去部20における動体除去処理の手順について説明する。動体除去部20による動体除去処理では、参照値生成部21が、各注目画素の信頼度および最頻値を順次生成しながら、参照範囲の設定および参照値の算出を行い、動体除去画素生成部22が、各注目画素の信頼度と参照値とに基づいて、注目画素と同一の座標位置に配置されている動体除去画素の画素値を選択して出力する。以下の説明においては、説明を容易にするため、まず、参照値生成部21内の信頼度生成部211が、全ての注目画素の信頼度および最頻値を生成し、その後、参照値生成部21内の参照範囲設定部212および参照値算出部213が参照範囲の設定および参照値の算出を行って、動体除去画素生成部22が動体除去画素の画素値を選択して出力するものとして説明を行う。なお、このとき、信頼度生成部211は、生成した全ての注目画素の信頼度および最頻値を、一旦、不図示の一時記憶部に記憶し、参照範囲設定部212、参照値算出部213、および動体除去画素生成部22のそれぞれは、不図示の一時記憶部に記憶されている信頼度および最頻値を読み出して、それぞれの処理を実行するものとする。
図3は、本実施形態の画像生成装置である動体除去部20における動体除去処理の手順を示したフローチャートである。また、図4〜図7は、本実施形態の画像生成装置である動体除去部20による動体除去処理におけるそれぞれの処理の一例を説明する図である。図3に示した動体除去処理のフローチャートの説明においては、適宜、図4〜図7に示した動体除去処理におけるそれぞれの処理の一例を参照して、5枚(フレーム)の入力画像から、不要な移動体の画素値を動体として除去した1枚の動体除去画像を生成する場合の例を説明する。
動体除去部20は、制御部11からの制御に応じて動体除去処理を開始すると、参照値生成部21は、ステップS1から、1つ目の画素(注目画素)の信頼度および最頻値の生成処理を開始する。1つ目の注目画素の信頼度および最頻値の生成処理が開始されると、ステップS1において、参照値生成部21内の信頼度生成部211は、記憶部13から複数枚(本説明においては、5フレーム)の入力画像において同一の座標位置(x,y)に配置されている1つ目の注目画素の画素値In1(x,y)〜In5(x,y)を取得する。
続いて、ステップS2において、信頼度生成部211は、取得した1つ目の注目画素の5つの画素値In1(x,y)〜In5(x,y)のヒストグラムHist1を生成する。
続いて、ステップS3において、信頼度生成部211は、生成したヒストグラムHist1における度数の最大値である信頼度MaxFreq(x,y)を、不図示の一時記憶部に記憶する。
続いて、ステップS4において、信頼度生成部211は、生成したヒストグラムHist1における最大度数の画素値である最頻値MaxFreqValue(x,y)を、不図示の一時記憶部に記憶する。
ここまでの処理が、入力画像の1つ目の注目画素の信頼度および最頻値の生成処理である。以降、信頼度生成部211は、ステップS1〜ステップS4までの入力画像の1つの注目画素の信頼度および最頻値の生成処理を、入力画像の全ての画素に対する信頼度および最頻値の生成処理が完了するまで、繰り返す。その後、ステップS1〜ステップS4までの処理の繰り返しを、入力画像の画素数と同じ回数行うと、すなわち、入力画像の全ての画素に対する信頼度および最頻値の生成処理が完了すると、ステップS5において処理のループを抜け出す。
ここで、信頼度生成部211によって行われる、ステップS1〜ステップS4までの入力画像の1つの注目画素に対する信頼度および最頻値の生成処理の一例について説明する。図4は、本実施形態の画像生成装置による動体除去処理において信頼度と最頻値とを生成する処理の一例を説明する図である。
信頼度生成部211は、ステップS1において、図4(a)に示した5フレームの入力画像内で同一の座標位置(x,y)に配置されている注目画素の5つの画素値In1(x,y)〜In5(x,y)を取得したものとする。そして、信頼度生成部211は、ステップS2において、図4(b)に示したように、取得した注目画素の5つの画素値In1(x,y)〜In5(x,y)のヒストグラムHist1を生成する。そして、信頼度生成部211は、図4(c)に示したように、生成したヒストグラムHist1から信頼度MaxFreq(x,y)(図4(c)においては、信頼度MaxFreq(x,y)=3)を不図示の一時記憶部に記憶し(ステップS3)、信頼度MaxFreq(x,y)=3である注目画素の画素値を、最頻値MaxFreqValue(x,y)として不図示の一時記憶部に記憶する(ステップS4)。
そして、入力画像の全ての画素に対する信頼度および最頻値の生成処理が完了すると、参照値生成部21内の参照範囲設定部212および参照値算出部213と、動体除去画素生成部22とのそれぞれは、ステップS6から、動体除去画像において1つ目の画素(注目画素)と同一の座標位置(x,y)に配置される1つ目の動体除去画素の画素値の選択処理を開始する。1つ目の動体除去画素の画素値の選択処理が開始されると、ステップS6において、参照範囲設定部212および参照値算出部213と、動体除去画素生成部22とのそれぞれは、不図示の一時記憶部に記憶されている1つ目の注目画素の信頼度MaxFreq(x,y)および最頻値MaxFreqValue(x,y)を読み出す。また、動体除去画素生成部22は、記憶部13から複数枚(本説明においては、5フレーム)の入力画像の1つ目の注目画素の画素値In1(x,y)〜In5(x,y)を再度取得する。
続いて、ステップS7において、動体除去画素生成部22内の動体除去画素選択部222は、1つ目の注目画素の信頼度MaxFreq(x,y)と信頼度閾値thrT2とを比較し、1つ目の注目画素の信頼度MaxFreq(x,y)が、信頼度閾値thrT2(本説明においては、信頼度閾値thrT2=3)以上であるか否かを判定する。
ステップS7による判定の結果、1つ目の注目画素の信頼度MaxFreq(x,y)が、信頼度閾値thrT2以上である場合には、ステップS8において、動体除去画素選択部222は、1つ目の注目画素の最頻値MaxFreqValue(x,y)を、動体除去画像において1つ目の注目画素と同一の座標位置(x,y)に配置される1つ目の動体除去画素の画素値として、画像処理部15に出力する。つまり、1つ目の注目画素の5つの画素値In1(x,y)〜In5(x,y)のみから、背景である可能性が高い画素の画素値(最頻値)を選択することができる場合には、動体除去画素生成部22は、1つ目の注目画素の周囲の画素の信頼度と最頻値とに基づいて算出される参照値を用いずに、最終的な動体除去画素の画素値を選択する。
一方、ステップS7による判定の結果、1つ目の注目画素の信頼度MaxFreq(x,y)が、信頼度閾値thrT2よりも小さい場合には、ステップS9以降の、参照値を用いて最終的な動体除去画素の画素値を決定する処理に進む。つまり、1つ目の注目画素の5つの画素値In1(x,y)〜In5(x,y)のみでは、背景である可能性が高い画素の画素値を選択することができない場合には、1つ目の注目画素の周囲に配置されている周囲画素の信頼度と最頻値とに基づいて、最終的な動体除去画素の画素値を選択する。
参照値を用いて最終的な動体除去画素の画素値を決定する処理(以下、「画素値の決定処理」という)では、最初に、参照範囲設定部212による参照範囲の設定処理を行う。参照範囲の設定処理では、ステップS9において、参照範囲設定部212は、現在処理している1つ目の注目画素の周囲の参照範囲として設定する画素数である参照範囲サイズSizeRを初期化する。ここでは、参照範囲サイズSizeR=1に初期化する。これにより、1つ目の注目画素の座標位置(x,y)を中心とした参照範囲は、x方向(水平方向)にx−SizeR〜x+SizeR、y方向(垂直方向)にy−SizeR〜y+SizeRの範囲に設定される。すなわち、1つ目の注目画素の周囲(上下左右)に1画素(参照範囲サイズSizeR=1)分ずつの3画素×3画素の矩形領域の範囲である、注目画素を中心とした9画素の範囲に設定される。なお、以下の説明においては、参照範囲内のそれぞれの周囲画素におけるx方向(水平方向)の座標位置を「i」と表し、y方向(垂直方向)の座標位置を「j」と表すこととする。
続いて、ステップS10において、参照範囲設定部212は、不図示の一時記憶部に記憶されている、参照範囲内の9画素分の周囲画素の信頼度MaxFreq(i,j)を読み出す。そして、参照範囲設定部212は、読み出した9つの周囲画素の信頼度MaxFreq(i,j)と、信頼度閾値thrT1とを比較し、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の数を計数(カウント)する。本説明においては、信頼度閾値thrT1を信頼度閾値thrT2よりも大きな値(信頼度閾値thrT1=4)としているため、信頼度MaxFreq(i,j)≧4である周囲画素の数をカウントする。以下の説明においては、参照範囲設定部212がカウントした周囲画素の数を、画素数カウント値CntTとする。
続いて、ステップS11において、参照範囲設定部212は、画素数カウント値CntTと、画素数閾値thrCとを比較し、画素数カウント値CntT、すなわち、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の数が、画素数閾値thrC(本説明においては、画素数閾値thrC=5)以上であるか否かを判定する。
ステップS11による判定の結果、画素数カウント値CntTが、画素数閾値thrCよりも少ない場合には、ステップS12において、参照範囲設定部212は、参照範囲を周囲に1画素分ずつ広げる。すなわち、参照範囲サイズSizeRに「1」を加算して、参照範囲サイズSizeR=2にする。これにより、1つ目の注目画素の座標位置(x,y)を中心とした参照範囲は、1つ目の注目画素の周囲(上下左右)に2画素(参照範囲サイズSizeR=2)分ずつの5画素×5画素の矩形領域の範囲である、注目画素を中心とした25画素の範囲に再度設定される。そして、ステップS10に戻って、参照範囲内の25画素分の周囲画素の信頼度MaxFreq(i,j)の読み出しと、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の数のカウントとを再度行う。
一方、ステップS11による判定の結果、画素数カウント値CntTが、画素数閾値thrC以上である場合には、ステップS13において、参照範囲設定部212は、現在の参照範囲サイズSizeRによって設定された矩形領域の範囲を、参照値を算出するために使用する参照範囲に決定する。そして、参照範囲設定部212は、決定した参照範囲の大きさを表す情報(例えば、参照範囲に決定した矩形領域の大きさや、参照範囲サイズSizeR)を、参照値算出部213に出力する。
ここまでのステップS9〜ステップS13の処理が、画素値の決定処理において最初に行う、参照範囲設定部212による参照範囲の設定処理である。ここで、参照範囲設定部212によって行われる、ステップS9〜ステップS13までの参照範囲の設定処理の一例について説明する。図5は、本実施形態の画像生成装置による動体除去処理において参照範囲を設定する処理の一例を説明する図である。
参照範囲設定部212は、ステップS9において、図5(a)に示したように、参照範囲サイズSizeR=1に初期化する。これにより、図5(a)において「★」で示している注目画素を中心とした参照範囲は、注目画素の周囲(上下左右)に1画素分ずつの3画素×3画素の矩形領域の範囲(注目画素を中心とした9画素の範囲)に設定される。ここで、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素が、図5(a)において「網掛け」で示した2つの周囲画素であるものとする。このため、ステップS10において、参照範囲設定部212がカウントした画素数カウント値CntTは、画素数カウント値CntT=2となる。従って、参照範囲設定部212は、ステップS11において、参照範囲を周囲に1画素分ずつ広げる(ステップS11のNo)と判定する。
そして、参照範囲設定部212は、ステップS12において、図5(b)に示したように、参照範囲サイズSizeR=2にする。これにより、図5(b)において「★」で示している注目画素を中心とした参照範囲は、注目画素の周囲(上下左右)に2画素分ずつの5画素×5画素の矩形領域の範囲(注目画素を中心とした25画素の範囲)に設定される。この参照範囲では、ステップS10において、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ、図5(b)において「網掛け」で示した周囲画素をカウントした画素数カウント値CntTが、画素数カウント値CntT=6となる。この画素数カウント値CntT=6は、ステップS11の条件を満足するため(ステップS11のYes)、参照範囲設定部212は、ステップS13において、現在の参照範囲サイズSizeR=2によって設定された矩形領域の範囲を、参照値を算出するために使用する参照範囲に決定する。
そして、参照範囲設定部212による参照範囲の設定処理が完了すると、参照値を用いた最終的な動体除去画素の画素値の決定処理では、次に、参照値算出部213による参照値の算出処理を行う。参照値の算出処理では、ステップS14において、参照値算出部213は、参照範囲内の周囲画素の内、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の最頻値MaxFreqValue(i,j)の分散(ばらつき)を算出する。これにより、参照範囲内で背景である可能性が高いそれぞれの周囲画素の最頻値MaxFreqValue(i,j)同士の差がわかり、画素値の変化が多い背景(例えば、細かい模様の背景)であるか、画素値の変化が少ない背景(例えば、模様の少ない背景)であるかを判定することができる。以下の説明においては、参照範囲設定部212が算出した分散の値を、分散値Variとする。
続いて、ステップS15において、参照値算出部213は、ヒストグラムHist2を生成する参照範囲内のそれぞれの周囲画素の座標位置に対して、信頼度MaxFreq(i,j)に応じた重み付け係数K1(i,j)を設定する。このとき、参照値算出部213は、参照範囲内の周囲画素の座標位置(i,j)が中央、すなわち、注目画素の座標位置(x,y)に近いほど重み付け係数K1(i,j)を大きく、中央から遠いほど重み付け係数K1(i,j)を小さくする。また、参照値算出部213は、注目画素の座標位置(x,y)からの距離が同じである周囲画素の座標位置に対しては、参照範囲設定部212が算出した分散値Variが大きいほど重み付け係数K1(i,j)を大きく、分散値Variが小さいほど重み付け係数K1(i,j)を小さくする。すなわち、分散値Variが大きいほど注目画素の座標位置(x,y)からの距離に応じた重み付け係数K1(i,j)の差を大きく、分散値Variが小さいほど注目画素の座標位置(x,y)からの距離に応じた重み付け係数K1(i,j)の差を小さくする。
より具体的には、参照値算出部213は、参照範囲設定部212が算出した分散値Variに基づいて、下式(1)によって重み付け係数K1(i,j)を算出し、算出した重み付け係数K1(i,j)を、参照範囲内のそれぞれの周囲画素の座標位置に対して設定する。
上式(1)において、kVariは分散値Variに応じた定数(以下、「定数kVari」という)を表している。また、thrLは分散値Variの下方の閾値(以下、「下方閾値thrL」という)を表し、thrUは分散値Variの上方の閾値(以下、「上方閾値thrU」という)を表している。なお、下方閾値thrLと上方閾値thrUとの関係は、0<下方閾値thrL<上方閾値thrUである。
上式(1)では、参照範囲内のそれぞれの周囲画素において信頼度MaxFreq(i,j)が信頼度閾値thrT1よりも小さい周囲画素の座標位置に対する重み付け係数K1(i,j)を、重み付け係数K1(i,j)=0としている。これにより、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ参照範囲内のそれぞれの周囲画素の座標位置に対して、重み付け係数K1(i,j)が設定される。また、信頼度MaxFreq(i,j)が信頼度閾値thrT1以上の参照範囲内のそれぞれの周囲画素の座標位置に対しては、上述したような関係の重み付け係数K1(i,j)が設定される。
ここで、参照値算出部213が設定する、上式(1)で表される重み付け係数K1(i,j)について説明する。図6は、本実施形態の画像生成装置による動体除去処理において用いる係数の一例を説明する図である。図6には、分散値Variおよび注目画素からの距離と、重み付け係数K1との関係を示している。
図6を見てわかるように、上式(1)によって算出される重み付け係数K1は、注目画素からの距離が近い周囲画素の座標位置ほど大きく、注目画素からの距離が遠い周囲画素の座標位置ほど小さくなるように傾斜が付けられた関係になっている。さらに、図6を見てわかるように、重み付け係数K1は、分散値Variが大きいほど傾斜が大きく、分散値Variが小さいほど傾斜を小さくなっている。上式(1)では、下方閾値thrLと上方閾値thrUとによって分散値Variの範囲を分けることにより、図6に示したように、3種類の重み付け係数K1の特性を設定している。すなわち、上式(1)において定数kVariは、重み付け係数K1の特性の傾きの大きさを表している。
このように、参照値算出部213が重み付け係数K1(i,j)を設定することによって、参照範囲内の周囲画素の最頻値MaxFreqValue(i,j)の分散(ばらつき)と、参照範囲内のそれぞれの周囲画素の信頼度MaxFreq(i,j)とを考慮した、参照範囲内のそれぞれの周囲画素における最頻値MaxFreqValue(i,j)のヒストグラムHist2を生成することができる。
続いて、ステップS16において、参照値算出部213は、重み付け係数K1(i,j)で重み付けした参照範囲内の周囲画素の最頻値MaxFreqValue(i,j)のヒストグラムHist2を生成する。なお、上述したように、参照範囲内のそれぞれの周囲画素において、信頼度MaxFreq(i,j)が信頼度閾値thrT1よりも小さい周囲画素の重み付け係数K1(i,j)は、重み付け係数K1(i,j)=0である。従って、参照値算出部213が生成するヒストグラムHist2は、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の最頻値MaxFreqValue(i,j)を要素としたヒストグラムである。
続いて、ステップS17において、参照値算出部213は、生成したヒストグラムHist2における最大度数が1つであるか否かを判定する。ステップS17による判定の結果、生成したヒストグラムHist2における最大度数が1つではない場合には、ステップS12に戻って、参照範囲設定部212による参照範囲サイズSizeRの再設定、およびステップS10〜ステップS13までの参照範囲の設定処理と、参照値算出部213によるステップS14〜ステップS17までの参照値の算出処理とを再度行う。
一方、ステップS17による判定の結果、生成したヒストグラムHist2における最大度数が1つである場合には、ステップS18において、参照値算出部213は、生成したヒストグラムHist2における最大度数の最頻値MaxFreqValue(i,j)を、参照値として動体除去画素生成部22に出力する。
ここまでのステップS14〜ステップS18の処理が、画素値の決定処理において次に行う、参照値算出部213による参照値の算出処理である。ここで、参照値算出部213によって行われる、ステップS16〜ステップS18までの参照値の算出処理の一例について説明する。図7は、本実施形態の画像生成装置による動体除去処理において参照値を決定する処理の一例を説明する図である。図7には、図5(b)に示した参照範囲内の周囲画素の内、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の最頻値MaxFreqValue(i,j)のヒストグラムHist2を生成し、生成したヒストグラムHist2における最大度数の最頻値MaxFreqValue(i,j)を、参照値として決定する処理を示している。本説明においては、図7(a)に示した参照範囲内に、信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ6つの周囲画素(周囲画素A〜周囲画素F)が含まれ、周囲画素A〜周囲画素Cが同じ最頻値であり、周囲画素D〜周囲画素Fが同じ最頻値であるものとする。
参照値算出部213は、ステップS16において、図7(a)に示した参照範囲内のそれぞれの周囲画素A〜周囲画素Fの最頻値MaxFreqValue(i,j)を要素としたヒストグラムHist2を生成する。このとき、参照値算出部213は、周囲画素A〜周囲画素Fの最頻値MaxFreqValue(i,j)の度数を、ステップS15において設定した重み付け係数K1(i,j)で重み付けしてヒストグラムHist2を生成することにより、図7(b)に示したヒストグラムHist2を生成する。なお、図7(a)においては、「★」で示している注目画素に近い周囲画素Aおよび周囲画素Bの重み付け係数K1(i,j)の方が、注目画素から遠い周囲画素C〜周囲画素Fの重み付け係数K1(i,j)よりも大きい。
そして、参照値算出部213は、ステップS17において、生成したヒストグラムHist2における最大度数が1つであるか否かを判定する。なお、ステップS16において参照値算出部213が生成したヒストグラムHist2は、図7(b)に示したように、同じ最頻値である周囲画素が3つずつ(周囲画素A〜周囲画素Cおよび周囲画素D〜周囲画素F)であるが、重み付け係数K1(i,j)でそれぞれの周囲画素の度数に重み付けをしているため、最大度数は1つとなっている。
このため、参照値算出部213は、ステップS18において、生成したヒストグラムHist2における最大度数の最頻値、すなわち、図7(c)に示した周囲画素A〜周囲画素Cの最頻値MaxFreqValue(i,j)を、参照値として動体除去画素生成部22に出力する。
このように、参照範囲内のそれぞれの周囲画素の座標位置に対して重み付け係数K1(i,j)を設定することによって、参照範囲内に複数種類の背景の周囲画素が入っていた場合でも、注目画素の座標位置において背景である可能性が高い画素値により近い値を参照値とすることができる。さらに、例えば、背景の模様が細かく変化していることによって、注目画素の周囲に配置されている周囲画素の画素値がばらついている場合でも、注目画素の座標位置に近い周囲画素から参照値を決定することができるため、本来の背景の画素値と大きく異なる画素値を参照値としてしまうことを防ぐことができる。
なお、本説明においては、注目画素の周囲に配置されている周囲画素の画素値のばらつきを表す指標として、参照値算出部213が、参照範囲内の周囲画素の最頻値MaxFreqValue(i,j)の分散(ばらつき)を算出する場合について説明した。しかし、周囲画素の画素値のばらつきを判定する方法は、分散に限定されるものではない。例えば、参照範囲内の周囲画素において信頼度閾値thrT1以上の信頼度MaxFreq(i,j)を持つ周囲画素の最頻値MaxFreqValue(i,j)のヒストグラムを生成し、生成したヒストグラムにおいて度数が1以上である最頻値の個数から画素値のばらつきを判定する構成であってもよい。
そして、参照値を用いた最終的な動体除去画素の画素値の決定処理が完了すると、動体除去画素の画素値の選択処理では、続いて、動体除去画素生成部22が、最終的な動体除去画素の画素値を選択して、画像処理部15に出力する。
より具体的には、ステップS19において、動体除去画素生成部22内の注目画素値検出部221は、記憶部13から取得した複数枚(本説明においては、5フレーム)の入力画像の1つ目の注目画素の画素値In1(x,y)〜In5(x,y)の内、参照値生成部21内の参照値算出部213から入力された参照値に最も近い値の画素値を持つ注目画素を選択し、選択した注目画素の画素値を動体除去画素選択部222に出力する。そして、動体除去画素選択部222は、注目画素値検出部221から入力された注目画素の画素値を、動体除去画像において1つ目の注目画素と同一の座標位置(x,y)に配置される1つ目の動体除去画素の画素値として、画像処理部15に出力する。
このように、ステップS7による判定の結果、1つ目の注目画素の信頼度MaxFreq(x,y)が、信頼度閾値thrT2よりも小さい場合、つまり、1つ目の注目画素の5つの画素値In1(x,y)〜In5(x,y)のみでは、背景である可能性が高い画素の画素値を選択することができない場合には、参照値生成部21から入力された参照値に最も近い値の画素値を持つ注目画素の画素値を、最終的な動体除去画素の画素値として出力する。
ここまでの処理が、動体除去画像において1つ目の注目画素と同一の座標位置(x,y)に配置される1つ目の動体除去画素の画素値の選択処理である。以降、参照値生成部21内の参照範囲設定部212および参照値算出部213と、動体除去画素生成部22とのそれぞれは、ステップS7における注目画素の信頼度MaxFreq(x,y)と信頼度閾値thrT2との比較と、ステップS8またはステップS9〜ステップS19における比較結果に応じた最終的な動体除去画素の画素値の選択とを、全ての注目画素に対する処理が完了するまで、繰り返す。その後、ステップS7〜ステップS19までの処理の繰り返しを、注目画素の画素数と同じ回数行うと、すなわち、入力画像の全ての画素に対応した動体除去画素の画素値の選択処理が完了すると、ステップS20において処理のループを抜け出し、動体除去部20による動体除去処理を完了する。
このようにして、動体除去部20は、複数枚(フレーム)の入力画像の各画素に対して動体除去処理を行って、1枚の動体除去画像の各画素の画素値を、それぞれ画像処理部15に出力する。これにより、撮像装置10は、不要な移動体の画素値を動体として除去した1枚の動体除去画像を生成し、表示部16を介して表示装置に表示、または記録部17を介して画像記録媒体に記録することができる。
なお、動体除去部20に入力されるそれぞれの入力画像は、1回の撮影毎に、撮像条件や画像処理パラメータなどを変えてしまうと、同じ被写体を撮影した場合であっても、入力画像毎に画素値が大きく異なってしまう。このような場合には、動体除去部20による動体除去処理において、背景となる画素の画素値を正しく選択できなくなってしまう。そのため、動体除去画像を得るための撮影においては、合焦位置や露出などの撮像条件、階調変換やホワイトバンランスなどの画像処理パラメータは、全ての入力画像で同一であることが望ましい。
上記に述べたように、本発明を実施するための形態によれば、複数枚の入力画像において同一の座標位置に配置されている画素(本実施形態における「注目画素」)の画素値に基づいて生成した信頼度に基づいて、動体除去画像において注目画素と同一の座標位置に配置されている動体除去画素の画素値を選択する。このとき、本発明を実施するための形態では、信頼度が高い場合には、注目画素の最頻値を動体除去画素の画素値として選択し、信頼度が低い場合には、注目画素の周囲に配置された画素(本実施形態における「周囲画素」)の画素値から算出した参照値に基づいて、いずれか1枚の入力画像の注目画素の画素値を動体除去画素の画素値として選択する。これにより、本発明を実施するための形態では、入力画像に写っている同じ被写体を背景として選択する際に、注目画素の情報のみでは正しく背景の画素値を特定しにくい場合でも、注目画素の周囲に配置された周囲画素の情報を用いることによって正しく背景の画素値を選択できる確率を向上させ、動体除去処理を行って生成した動体除去画像の画素値として出力することができる。このことにより、本発明を実施するための形態では、入力画像の同一の位置に写っている移動体を除去し、入力画像の同一の位置に写っている建物などの固定の被写体や背景のみを抽出した所望の画像(動体除去画像)を生成することができる。
また、本発明を実施するための形態によれば、注目画素の周囲に配置されている周囲画素の内、注目画素の座標位置の近くに配置されている周囲画素の優先度を上げて、参照値を算出する。これにより、本発明を実施するための形態では、例えば、背景の模様が細かく変化していることによって、注目画素の周囲に配置されている周囲画素の画素値がばらついている場合でも、注目画素の座標位置の近くに配置されている周囲画素から、注目画素における背景の画素値を選択するための適切な参照値を算出することができる。このことにより、本発明を実施するための形態では、例えば、多くの不要な移動体がカメラの前を横切ったことにより、動体除去画像として抽出したい建物などの固定の被写体や背景が、入力画像に写っている回数が少ない領域においても、より精度よく固定の被写体や背景を抽出した動体除去画像を生成することができる。
また、本発明を実施するための形態によれば、常に周囲画素の画素値から算出した参照値に基づいて動体除去画素の画素値として選択するのではないため、動体除去処理の処理速度の低下を少なくすることができる。
なお、本実施形態においては、信頼度生成部211が、注目画素の画素値のヒストグラム(ヒストグラムHist1)を生成することによって、注目画素の信頼度と最頻値とを得る場合について説明した。しかし、注目画素の信頼度と最頻値とを得る方法は、本実施形態に限定されるものではなく、他の方法によって注目画素の信頼度と最頻値とを得る構成であってもよい。
また、本実施形態においては、撮像装置10に備えた撮像部12によって撮影された画像データ(撮影画像)を入力画像として、動体除去処理を行う画像生成装置について説明したが、本実施形態の画像生成装置が動体除去処理を行う入力画像は、本発明を実施するための形態に限定されるものではない。例えば、画像記録媒体に記録されている同一の被写体を撮影した複数の画像データを記録部17を介して読み出し、読み出した画像データを入力画像として動体除去処理を行うこともできる。
以上、本発明の実施形態について、図面を参照して説明してきたが、具体的な構成はこの実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲においての種々の変更も含まれる。