以下、本発明の一実施の形態を図にしたがって説明する。
(実施形態1)
図1は、本発明の撮像装置の実施形態であるデジタルカメラの電気的構成を示したブロック図である。このデジタルカメラは、基本となる動作モードとして撮影を行うための記録モードと、撮影した画像を再生するための再生モードとを有し、記録モードの下位モードとして流し撮りモードが設けられたものである。なお、流し撮りモードは、メインの被写体の動きに合わせてカメラを追従させながら撮影を行うことによって、メインの被写体を静止させ、かつ背景を流したような流し撮り画像を得るための撮影モードである。
図1に示したように本実施形態のデジタルカメラは、撮影レンズ1と、撮影レンズ1により収束された撮影光をシャッタ2を介して受光するとともに、受光面に結像された被写体の光学像を光電変換し画像信号として出力する撮像素子であるCMOSセンサ3、CMOSセンサ3の出力信号をディジタルの画像データへ変換するA/D変換器4、変換後の画像データを逐次記憶するDRAM5を備えている。なお、DRAM5には、流し撮りモードでの撮影時においては複数枚分の画像データが格納される。
前記シャッタ2の動作はCPU9の命令に従いシャッタ制御部8により制御され、前記CMOSセンサ3、及びA/D変換器4の動作はCPU9の命令に従い受光制御部10により制御される。前記DRAM5に格納された1枚分の画像データ、すなわちRAWデータはデモザイク部11により画素毎に色情報を補間されてYUVデータに変換された後、液晶表示コントローラ6を介して液晶表示器7にスルー画像として表示される。
なお、前記デモザイク部11は、流し撮りモードでの撮影時においてはRAWデータをYUVデータ(撮影画像)のみならず、必要に応じて輝度情報のみからなる輝度画像データ(輝度画像)へ変換する。また、変換されたYUVデータ及び輝度画像データはDRAM5に一時的に記憶される。
記録モードでの撮影時にデモザイク部11によりYUVデータに変換された画像データは、CPU9によってJPEG等の所定の圧縮方式に従い圧縮された後、外部記憶メモリ12に静止画ファイルとして記録される。外部記憶メモリ12に静止画ファイルとして記憶された画像データは、再生モードにおいては、必要に応じCPU9に読み出されて伸張された後、液晶表示コントローラ6を介して液晶表示器7において表示される。なお、外部記憶メモリ12は、例えばカメラ本体に着脱自在なメモリカードや、カメラ本体に内蔵されたフラッシュメモリ等により構成される。
また、CPU9には、キー入力ブロック13、プログラムメモリ14、周波数特性演算部15、ブロックマッチング部16、画像変形合成加算部17が接続されている。キー入力ブロック13は、使用者によるデジタルカメラの操作に使用される、電源キーやシャッタキー、モード切替キー等を含む複数のスイッチ類から構成される。プログラムメモリ14は、CPU9の動作に必要に種々のプログラム、及びプログラムの実行に際して使用される各種のデータが記憶されたメモリである。
CPU9は、プログラムメモリ14に記憶されたプログラムに従い、キー入力ブロック13におけるいずれかのキーの操作に応じてデジタルカメラの各部の動作を制御するとともに、前述した画像データの圧縮・伸張処理を行う。また、流し撮りモードにおいては本発明の撮影手段、基準領域設定手段、処理対象領域設定手段として機能する。
周波数特性演算部15は、流し撮りモードでの撮影に際して、CMOSセンサ3により撮像された画像における特定の局所領域(ブロック)について周波数特性を演算してCPU9に出力する本発明の評価値取得手段である。
ブロックマッチング部16は、流し撮りモードでの撮影に際して、SRAM18を作業メモリとして使用し、CMOSセンサ3により撮像された基準画像と他の画像との間でブロックマッチングを行い、基準画像の特定の局所領域(ブロック)における被写体部分の相対的なずれ量及びずれ方向を示す動きベクトルを取得してCPU9に出力する本発明の動きベクトル取得手段である。
画像変形合成加算部17は、流し撮りモードでの撮影に際して、CPU9の指示に応じ、CMOSセンサ3により撮像された複数枚の画像を位置合わせして合成する本発明の画像処理手段である。
次に、以上の構成からなるデジタルカメラにおいて、記録モードの下位モードである流し撮りモードが設定されているときの動作について説明する。図2は、記録モードが設定されているときユーザーによって流し撮りモードが設定された場合におけるCPU9の処理手順を示すフローチャートである。
CPU9は、流し撮りモードの設定とともに、液晶表示器7にスルー画像に重ねて図3に示したようなグリッド100を、周知のOSD(On Screen Display)技術により表示させる(ステップSA1)。このグリッド100は、撮影者がカメラの向きをメインの被写体の動きに追従させるとき、メインの被写体をフレーム内の特定位置にガイドするものであり、本実施形態において上記特定位置はフレーム内の中央部分である。したがって、流し撮りに際して撮影者はメインの被写体を極力フレーム内の中央部分に位置させるようにして所望のシャッターチャンスでシャッターキーを押すこととなる。
その後、シャッターキーが押されたら(ステップSA2でYES)、その時点で12回の連写撮影を実施する(ステップSA3)。具体的には、各回の撮影条件を露光がシームレスになるように設定した状態で、シャッタ時間1/60秒、連写速度60fpsでCMOSセンサ3によって時間的に連続する12枚の画像のRAWデータを取得し、DRAM5に記憶する(ステップSA3)。この間(連写撮影中)、メインの被写体が撮影フレーム内の中央部分(特定位置)に位置するようにメインの被写体の動きに合わせてカメラを追従させるが、通常、カメラ(撮影フレーム)はメインの被写体に対してブレを生じ、各々の画像においてはメインの被写体に位置ずれが生じることとなる。
引き続き、DRAM5に記憶した各々のRAWデータをデモザイク部11によってYUVデータ及び、輝度成分のみからなる輝度画像データに変換し、変換後の画像データをDRAM5に記憶する(ステップSA4)。ここで、YUVデータは合成用の画像データであり、輝度画像データは後述する複数枚の画像(YUVデータ)の合成時における位置合わせ作業に十分なサイズの縮小画像データである。
次に、変換後の輝度画像データのうち1枚目の画像を基準画像とし、その基準画像に、予め決められている所定サイズのウインドウを撮影フレーム内の中央部分に設定するとともに、ウインドウ内を縦16画素×横16画素を単位とした複数ブロックに区分けして、ブロック毎の周波数特性を周波数特性演算部15によって演算する(ステップSA5)。
図4(a)は、基準画像101に設定したウインドウ102を示す図、同図(b)は、ウインドウ102とブロック103とを示した図である。ウインドウ102は本発明の処理対象領域であり、本実施形態においては図示したように縦方向及び横方向のサイズがそれぞれ基準画像101の1/2である矩形領域である。
また、周波数特性演算部15では、ブロック内の空間周波数が高いほど、つまりその部分の画像がピントずれや被写体の流れによるボケが少ないほど(画像が鮮明であるほど)高い値が得られる所定の評価値を周波数特性として演算する。なお、本実施形態においては、評価値としてハリスのコーナー検出評価値を演算する。
そして、CPU9はブロック毎に演算された上記評価値に基づいて高周波ブロックを選出する(ステップSA6)。かかる処理では、各ブロック103に評価値に応じ、評価値が高いものから順に順位付けを行い、その順位が予め決められている所定の順位までのブロック103のうちで評価値が所定値以上である1又は複数のブロック103を高周波成分が多い領域であると判断し、その各々のブロック103を高周波ブロックとして選出する。図4(b)は、ここで選出される高周波ブロック103a(斜線で示した各々のブロック)の一例を示したものであり、係る複数の高周波ブロックが本発明の基準領域である。
なお、高周波ブロックの選出基準は任意であり、例えば評価値が所定値(所定の閾値)以上である全てのブロック103や、評価値順が一定順位までの全てのブロック103を高周波ブロックとして選出するようにしてもよい。また、評価値に応じた各ブロック103の順位付けを、評価値が低いものから順に行い、その順位が予め決められている所定の順位までのブロック103を除く残りのブロック103のうちで評価値が所定値以上であるブロック103を高周波ブロックとして選出してもよい。さらに順位付けを評価値が低いものから順に行うとともに、所定の順位までのブロック103を除く残りの全てのブロック103を高周波ブロックとして選出してもよい。
次に、ブロックマッチング部16において、前述した変換後の輝度画像データのうち基準画像以外の他の画像を対象画像(当初は2枚目の画像)とし、基準画像と各々の対象画像との間で、高周波ブロック103aの被写体部分のみを追跡対象とするブロックマッチングを行い、双方の間における被写体部分の相対的なずれ量及びずれ方向を示す動きベクトルを取得する(ステップSA7)。より具体的には、本実施形態では、対象画像側の同一座標ブロックを中心とした所定の探索範囲で被写体部分の追跡を行い、座標毎に差分二乗和を求め、その差分二乗和の一番少ない位置から、高周波ブロック毎の動きベクトルを求める。
また、上記のブロックマッチングに際しては、対象画像において高周波ブロック103aの被写体部分を探索するときの探索範囲を、その被写体部分に許容する予め決められているずれ量、つまりメインの被写体に許容する予め決められているブレ量(画素数分)に応じた想定追跡範囲よりも広い範囲(例えば許容するずれ量の2倍のずれ量に応じた範囲)に設定して被写体部分を探索する。これにより背景の被写体部分の動きベクトルも拾えるようにし、またメインの被写体部分と背景の被写体部分との、原理的に正確な動きベクトルが求まらないブロックを排除し、より正確な動きベクトルを取得する。
これは、高周波ブロック103aの被写体部分の探索範囲を、メインの被写体に許容するブレ量に応じた想定追跡範囲と同等にしてしまうと、ブロックマッチングにおいて取得した動きベクトルにおいては、メインの被写体部分の動きベトクルと、背景の被写体部分の動きベクトルや、追跡を失敗した時の動きベクトルの区別ができないためである。なお、ブロックマッチングによる具体的な動きベクトルの算出方法については任意である。
次に、CPU9は、上述したブロックマッチングにより取得した各々の高周波ブロックの動きベクトルデータのうちで、所定の距離以下のずれ量を示す特定の動きベクトルを用いて、基準画像の被写体に対する対象画像の被写体の各部の位置関係を表す射影変換行列を求める(ステップSA8)。つまり本来は得られないような(明らかに誤って取得された)動きベクトルを排除した正しい動きベクトルのみに基づき射影変換行列を求める。なお、本実施形態において射影変換行列は、RANSAC法により、アウトライア(被写体移動などでイレギュラーに移動したブロックの動きベクトル)を排除して射影変換行列を求める。より具体的には、RANSAC法で求められる射影変換行列サポート率(全サンプル数に対するインライア(変換行列が有効となるサンプル)の割合)が一定値以上であれば、RANSAC法による射影変換行列の生成は成功とみなし、変換行列が有効であると判断する。
引き続き、対象画像(輝度画像データ)を順に変更しながら上述したステップSA7、ステップSA8の処理を返す(ステップSA9でNO)。その際、ステップSA7のブロックマッチングに際しては、前述した探索範囲の中心を1枚前の対象画像(対象画像が3枚目の画像であれば2枚目の画像)の平均動きベクトル分ずらして設定することによって、動きベクトルを効率的に取得する。
その後、全ての対象画像(輝度画像データ)について前述した射影変換行列が取得できたら、つまり全ての画像間におけるメインの被写体(メインの被写体と考えられる部分)の位置関係が把握できたら(ステップSA9でYES)、ステップSA8で取得した射影変換行列から、各々の隣接フレーム間における平行移動成分を算出し、算出した平行移動成分に基づく所定の選択基準に従って、メインの被写体のブレが少ないと判断できる連続8枚の画像を選択する(ステップSA10)。係る8枚の画像の選択に際しては、互いに隣接する8枚の画像を一組として各画像における平行移動成分ベクトルの絶対値を積算し、その積算値が最も少ない組の画像群を選択する。但し、積算値が同一(又は積算値の差が所定以内)の画像群が複数組ある場合にはシャッタ押下時間に近い組の画像群を選択する。
さらに、以上のように選択した隣接する1組の画像群のうち撮影順が中間(撮影順で4番目)の画像の輝度画像データを新たな基準画像として設定し、ステップSA5〜SA9と同様の処理によって他の各々の画像(輝度画像データ)について動きベクトルを取得して射影変換行列を再計算する(ステップSA11)。なお、係る射影変換行列の再計算に際しては、基準画像の変更後における他の各々の画像の動きベクトルを、ステップSA5〜SA7の処理を再度行わずに、既に取得されている各々の画像の動きベクトルから換算して取得することにより、新たな動きベクトルの取得に要する処理負担を軽減するようにしてもよい。但し、その場合は動きベクトルの精度は不可避的に低下することとなる。
しかる後、算出した射影変換行列により画像変形合成加算部17によって、基準画像以外のフレームの各画像(YUVデータ)を射影変換するとともに、各画像を基準画像(YUVデータ)に加算平均して合成した後(ステップSA12)、合成後の画像を撮影画像として外部記憶メモリ12に記憶する(ステップSA13)。これにより、流し撮り画像が得られることとなる。
以上のように本実施形態においては、流し撮りモードでの連続撮影により取得した複数の画像(YUVデータ)を位置合わせして合成する際、所定の基準画像101(輝度画像データ)のウインドウ102を区分けした複数のブロック103から、他のブロック103よりも空間周波数が高い高周波ブロック103aを選択し(図4参照)、選択した1又は複数の高周波ブロック103aの動きベクトルを取得した後、取得した高周波ブロック103aの動きベクトルのみに基づいて複数の画像を位置合わせする。
つまり基準画像101(ウインドウ102内)でメインの被写体に対応すると考えられる領域を各ブロックの周波数特性に基づき判断するようにした。したがって、従来に比べてメインの被写体に対応する領域の判断に要する処理が簡単であり、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
また、周波数特性に基づき高周波成分が多い高周波ブロック103aのみについて動きベクトルを取得し、複数の画像の合成時には、高周波ブロックの動きベクトルのみに基づいて複数の画像を位置合わせするようにした。したがって、連続撮影により取得した複数の画像(YUVデータ)の位置合わせに必要な動きベクトルを最小限に抑えることができ、流し撮り画像を生成する際における複数の画像の合成処理をより効率的に、かつ迅速に行うことができる。
なお、メインの被写体に対応する領域の判断に要する処理を簡素化するだけであれば、本実施形態とは異なり、複数の画像の位置合わせに必要な動きベクトルを、例えば高周波ブロック103aのみの動きベクトルとせず、1又は複数の高周波ブロック103aに外接する矩形領域内の全てのブロック103の動きベクトルとしても構わない。
また、基準画像101(輝度画像データ)にウインドウ102(処理対象領域)を設定し、ウインドウ102内で高周波ブロック103aを選出するようにした。したがって、高周波ブロック103aの選出、すなわちメインの被写体に対応する領域の判断に要する処理負担が軽減でき、流し撮り画像を生成する際における複数の画像の合成処理をより一層効率的に、かつ迅速に行うことができる。
なお、本実施形態では、基準画像101にウインドウ102を設けるものについて説明したが、これに限らず基準画像101の全域をブロック分けし、基準画像101の全域を対象として高周波ブロックを選出し、その動きベクトルに基づいて各画像の位置合わせを行うようにしてもよい。その場合であっても、従来に比べてメインの被写体に対応する領域の判断に要する処理が簡単であり、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
また、基準画像101に設定するウインドウ102については、本実施形態では、その設定位置を固定(中央部分)としたが、ウインドウ102の設定位置は必ずしも中央部分でなくともよく、例えば撮影者が設定位置を事前に選択できたり、自由に設定できたりする構成とし、選択または設定された任意の位置としてもよい。また、ウインドウ102のサイズについても固定としたが、これについても変更可能な構成としてもよい。
また、ウインドウ102をスルー画像(連写画像)上に表示させるようにしても表示させるよい。これにより撮影者はメインの被写体をウインドウ102内に収めやすくなる。
また、前述した効果に加え、本実施形態では、前述したようにステップSA7のブロックマッチングでは、高周波ブロック103aの被写体部分の探索範囲を、メインの被写体に許容するブレ量に応じた想定追跡範囲よりも広い範囲に設定して被写体部分を探索することにより、高周波ブロック103aの動きベクトルとして正確な動きベクトルを取得するようにした。したがって、高周波ブロック103aの動きベクトルに基づいた複数の画像(YUVデータ)の位置合わせをより正確に行うことができ、撮影画像として質の高い流し撮り画像を得ることができる。
また、本実施形態では、複数の画像を位置合わせして合成するとき、基準画像以外の画像(YUVデータ)を、高周波ブロック103aの動きベクトルに基づき演算した射影変換行列に従い変形して基準画像に合成することから、各々の画像においてメインの被写体に対する撮影角度や撮影距離が変化した場合であってもメインの被写体部分に高い同一性を確保することができる。したがって、撮影画像として質の高い流し撮り画像を得ることができる。
また、本実施形態においては、前述したようにステップSA8において射影変換行列を求める際には、本来は得られないような(明らかに誤って取得された)動きベクトルを排除し、正しい動きベクトルのみに基づき射影変換行列を求めるようにした。したがって、前述した射影変換による複数の画像(YUVデータ)の位置合わせをより正確に行うことができる、同時に前述した各画像の被写体部分における同一性の確保を確実に行うことができ、これによっても、撮影画像として質の高い流し撮り画像を得ることができる。
なお、本発明においては、複数の画像(YUVデータ)を位置合わせして合成する際、必ずしも基準画像以外の画像群を射影変換しなくともよく、例えば図2のフローチャートにおけるステップSA6で、基準画像101のウインドウ102における高周波ブロック103aを選出した後には、高周波ブロック103aについて基準画像101とそれ以外の各々の画像との間で動きベクトルを取得し、その動きベクトルに従い複数の画像(YUVデータ)を位置合わせして合成するようにしてもよい。
その場合においても、複数の画像(YUVデータ)を位置合わせに使用する動きベクトルを、所定の距離以下のずれ量を示す特定の動きベクトルのみとし、本来は得られないような(明らかに誤って取得された)動きベクトルを排除することにより正しい動きベクトルのみに基づき複数の画像(YUVデータ)を位置合わせすれば、撮影画像として質の高い流し撮り画像を得ることができる。
さらに、連続撮影により取得した12枚の画像の中で、主たる被写体のブレが少ない連続する8枚の画像を決められた選択基準に従い自動的に選択し、選択した画像のみを合成することから、連続撮影時におけるカメラのブレに起因する画像内における主たる被写体部分及び背景部分の画質低下を防止することができる。これによっても、撮影画像として質の高い流し撮り画像を得ることができる。
なお、本実施形態においては、流し撮りモードではシャッターキーによる撮影指示に応じて連続撮影を行い、そこで取得した複数枚(12枚)の画像から決められた枚数(8枚)の画像を選択して合成するものについて説明したが、以下のようにしてもよい。例えば連続撮影により取得した全ての画像を合成して流し撮り画像を得るようにしてもよい。すなわち、図2のフローチャートにおいて、ステップSA7〜SA9の処理で基準画像101以外の全ての対象画像(輝度画像データ)について射影変換行列が取得できたら(ステップSA9でYES)、直ちにステップSA12に進み、ステップSA7,SA8の処理で取得した射影変換行列に従い、基準画像以外の画像群のYUVデータを射影変換して基準画像のYUVデータに加算合成するようにしてもよい。
また、連続撮影により取得した全ての画像を合成する場合、或いは本実施形態のように取得した画像から決められた枚数を選択して合成する場合のいずれにおいても、合成時に基準とする画像(前述した動きベクトルを取得する際に、その輝度画像データを基準画像101とする画像)には、連写開始タイミングに最も近い画像に限らず、例えば合成する複数の画像のうちで撮影時間が中央に位置する画像等を使用しても構わない。
また、合成する画像の枚数を変更可能としてもよい。例えば流し撮り画像において表わす背景部分の流れ度合を段階的に設定できる構成とし、使用者に流し撮りモードでの撮影に先立ち背景部分の流れの強度を選択させるとともに、その強度に応じた枚数の画像を最終的に合成するようにしてもよい。さらに、合成する画像の枚数を撮影時における被写体の明るさに基づき自動的に変更するようにしてもよい。例えば被写体の明るさが撮影画像のSN値が悪くなると判断できる閾値以下であることを条件として、合成する画像の枚数を、被写体の明るさに応じて決められている枚数に自動的に増やしたり、被写体の明るさに応じて減らしたりしてもよい。これにより、暗い撮影環境下であっても画質の良い流し撮り画像を得ることができる。なお、その場合に基準とする被写体の明るさは、例えば画角内全域の被写体の明るさや、前述したウインドウ102(図4参照)のような一部の領域の被写体部分の明るさとすればよい。
また、流し撮りモードでは、撮影指示がある以前から連続撮影を開始し、そこで取得した画像のうち最新の画像を一定枚数分(例えば12枚分)だけをして記憶保持するものとし、撮影後には、撮影指示があった時点の前後において取得した全ての画像(例えば撮影指示前に取得した12枚と撮影指示後に取得した12枚との合計24枚)を対象として、前述したステップSA4以降の処理を行うようにしてもよい。その場合、ステップSA5の処理では撮影指示があった後(撮影指示の直後等)に取得した画像を基準画像として使用すれば、撮影者が意図とした撮影タイミングでのメインの被写体の状態を重視した流し撮り画像を得ることができる。
また、本実施形態においては、流し撮りモードで表示するスルー画像には、グリッド100(図3)を重ねて表示するようにしたが、連続撮影中に表示するスルー画像には、グリッド100の表示に代えて、以下の表示を行うようにしてもよい。すなわち、図2のフローチャートのステップSA5,SA6の処理を連続撮影中に新たな画像を取得する毎に取得した画像に対して行うものとし、スルー画像の表示に際しては、直前に取得した画像において選出した高周波ブロック103aからなる基準領域、あるいは直前に取得した画像において選出した1又は複数の高周波ブロック103aに外接する矩形領域内の全てのブロック103を含む特定領域の画像を画素間引き等を行い半透明の状態でスルー画像に重ねて表示したり、上記特定領域を表す矩形枠をスルー画像に重ねて表示したりしてもよい。つまりメインの被写体である可能性が高い領域を他の一般の領域と区別可能な状態でスルー画像を表示してもよい。なお、図2のフローチャートのステップSA5,SA6の処理を連続撮影中における1枚目の画像を取得した直後に1枚目の画像に対して行うものとし、スルー画像の表示に際しては、1枚目の画像において選出した高周波ブロック103aからなる基準領域、あるいは1枚目の画像において選出した1又は複数の高周波ブロック103aに外接する矩形領域内の全てのブロック103を含む特定領域の画像を画素間引き等を行い半透明の状態で2枚目以降の画像(スルー画像)に重ねて表示したり、上記特定領域を表す矩形枠を2枚目以降の画像に重ねて表示したりしてもよい。
その場合には、連続撮影中(流し撮り中)に撮影者に対して、メインの被写体の撮影位置(メインの被写体を捉えるべき画角内の位置)としてより適切な撮影位置を教えることができるため、撮影者においてはメインの被写体の動きに合わせてカメラを的確に追従させやすくなる。無論、かかる効果は流し撮り撮影時における撮影時間が長いほど顕著となる。
また、流し撮り撮影を行うときには、シャッターキーが押される以前の段階からメインの被写体の動きに合わせてカメラを追従させるため、流し撮り画像の生成(合成)に使用するか否かにかかわらず、撮影待機状態でも連続する撮像動作を行うようにし、撮影待機状態のスルー画像に、直前に撮像した画像における前述した基準領域や特定領域を半透明の状態で重ねて表示したり、上記特定領域を表す矩形枠を重ねて表示したりしてもよい。なお、撮影待機状態において取得したスルー画像に対して図2のフローチャートのステップSA5,SA6の処理を行うものとし、この撮影待機状態において取得したスルー画像における前述した基準領域や特定領域を、シャッターキー押下以降に取得される連写画像(スルー画像)に重ねて表示したり、上記特定領域を表す矩形枠を重ねて表示したりしてもよい。
一方、本発明を、画像内における人物の顔部分を検出する顔検出機能を備えたデジタルカメラ等に用いる場合においては、前述した基準画像に設定するウインドウ(処理対象領域)を、撮影タイミングの直前等に検出されていた顔部分に対応する領域としてもよい。さらに、本発明を、スルー画像を表示している間やシャッターキーが半押しされている間に、予め指定された任意の被写体部分を、逐次撮像される画像内で継続して検出する注目被写体の自動追尾機能を備えたものに用いる場合においては、前述した基準画像に設定するウインドウ(処理対象領域)を、撮影タイミングで検出されていた被写体部分に対応する領域としてもよい。
但し、上記のように顔検出機能や、注目被写体の自動追尾機能を備えたデジタルカメラ等においては、本実施形態とは異なり、例えば図2のフローチャートにおけるステップSA5,SA6の処理に代えて各々の連写画像について顔検出機能を用いて顔領域を取得する処理を実行すると共に、ステップSA7、SA11では、基準画像の顔領域と各々の対象画像の顔領域との間の動きベクトルを取得するようにしたり、あるいは、図2のフローチャートにおけるステップSA5,SA6の処理に代えて基準画像について顔検出機能を用いて顔領域を取得する処理を実行すると共に、ステップSA7、SA11では、基準画像の顔領域を追跡対象として他の各対象画像についてブロックマッチングを行い動きベクトルを取得する処理を行うようにしてもよい。
また、連写開始タイミングにおいて既に検出(追尾)されていた被写体部分に対応する領域や基準画像内の所定部分(例えば画角中央部分)に対応する領域を基準画像の基準領域(追跡対象)として他の各対象画像についてブロックマッチングを行い動きベクトルを取得する処理を行うようにしてもよい。
つまり、顔検出機能により検出された顔部分に対応する領域や、連写開始タイミングで検出(追尾)されていた被写体部分や、基準画像内の所定部分(例えば画角中央部分)に対応する領域を、そのままメインの被写体に対応する領域と判断するようにしてもよい。その場合においても、従来に比べてメインの被写体に対応する領域の判断に要する処理が簡単であり、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
(実施形態2)
次に、本発明の第2の実施の形態について説明する。本実施形態は、第1の実施の形態と同様に記録モードの下位モードとして流し撮りモードを有するデジタルカメラに関するものである。本実施形態のデジタルカメラにおいては、図1に示した周波数特性演算部15が廃止されると共に、前記プログラムメモリ14には、流し撮りモードでの撮影に際してCPU9に後述する処理を行わせるためのプログラムが記憶されている。
以下、本実施形態のデジタルカメラにおける本発明に係る動作について説明する。図5は、ユーザーによって流し撮りモードが設定された場合におけるCPU9の処理手順を示すフローチャートである。
ステップSB1〜SB4の処理は、前述したステップSA1〜SA4の処理と同一であり、本実施形態においてもCPU9は、流し撮りモードが設定されると、スルー画像に重ねてグリッド100を表示し、シャッターキーが押された時点で12回の連続撮影を実施し、取得した複数枚の画像毎にYUVデータと輝度画像データとを生成して記憶する。
引き続き、本実施形態においては、複数の輝度画像データのうち1枚目の画像を基準画像とし、基準画像の中央部分にウインドウ102を設定して、ウインドウ内を複数ブロック103に区分けするとともに、ブロックマッチング部16によって、基準画像と、それとは時間的に最も離れた12枚目の画像(輝度画像データ)との間でのブロックマッチングを行い、ブロック毎に動きベクトルを取得する(ステップSB5)。なお、上記ウインドウや各ブロックのサイズ(位置)、動きベクトルの具体的な取得方法については第1の実施の形態と同様である。
ここで、12枚目の画像をブロックマッチングの対象とするのは、以下の理由による。すなわち図6(a)〜(c)は、1枚目、2枚目、n(3以上)枚目の各画像のウインドウ102内におけるメインの被写体Aと背景の被写体Bの位置関係の違いを便宜的に示した図である。また、図6(b)、(c)に示した矢印は、基準画像に対する2枚目、n(3以上)枚目の画像を対象として動きベクトルを取得した場合における画像内の各部(ここでは一部分のみ)の動きベクトルであり、各々の長さが動きベクトルの大きさである。図示したように、基準画像と時間間隔が離れる画像ほどメインの被写体部分に比べて背景部分の動きベクトルの大きさが大きくなり、動きベクトルにおける両者間の分離性が高くなるためである。
そして、CPU9は、基準画像と12枚目の画像との間のブロックマッチングで取得したブロック毎の動きベクトルのうちで、その大きさが一定距離以下、つまりそのブロックに対応する被写体部分のずれ量が基準値以下である複数の特定ブロックを、メインの被写体に対応するブロックとして選出する(ステップSB6)。ここで選出される1又は複数の特定ブロック(以下、選出ブロックという)が本発明の基準領域であり、例えば図6(c)に楕円枠Cで示した領域内に位置する互いに隣接または離間するブロック群である。
以後、CPU9は、各々の選出ブロックの動きベクトルデータを用い、基準画像以外の全ての画像(輝度画像データ)を対象画像として、基準画像の被写体に対する対象画像の被写体の各部の位置関係を表す射影変換行列を取得する(ステップSB7〜SB9)。これ以後は、第1の実施の形態と同様であり、取得した射影変換行列に基づいて連続する8枚の画像(YUVデータ)を選択し、その中から新たな基準画像を決定して射影変換行列を再計算し、その射影変換行列に基づいて基準画像以外の画像(YUVデータ)を変形し、変形後の各画像を合成し、合成後の画像を撮影画像として記憶する(ステップSB10〜SB13)。
以上のように本実施形態においては、基準画像(ウインドウ内)でメインの被写体に対応すると考えられる領域を、基準画像と時間的に最も離れた画像との間で取得した動きベクトルの大きさに基づき判断するようにした。したがって、第1の実施の形態と同様、従来に比べてメインの被写体に対応する領域の判断に要する処理が簡単であり、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
さらに、複数の画像の合成時には、係る動きベクトルの大きさが一定距離以下である複数の特定ブロックの動きベクトルのみに基づいて複数の画像を位置合わせするようにした。したがって、複数の画像の位置合わせに必要な動きベクトルを最小限に抑えることができるため、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
なお、本実施形態においては、基準画像に設定したウインドウを複数のブロックに区分けし、その中から前記1又は複数の特定ブロックを特定するものについて説明したが、これに限らず、前記1又は複数の特定ブロックを、基準画像の全域を一定サイズ毎に区分けした複数のブロックの中から特定する構成としてもよい。その場合であっても、メインの被写体に対応する領域の判断に要する処理が簡単であり、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
さらに、基準画像に設定するウインドウ(処理対象領域)は、例えば顔検出機能を備えた構成であれば、撮影タイミングの直前等に検出されていた顔部分に対応する領域としてもよし、また、自動追尾機能を備えた構成であれば、撮影タイミングで検出されていた注目被写体に対応する領域としてもよい。
次に、上述した第2の実施の形態と同様、基準画像と時間的に最も離れた画像との間で取得した動きベクトルに基づいて、基準画像でメインの被写体に対応すると考えられる領域(特定ブロック)を判断する場合の変形例について説明する。
すなわち連続撮影を行っている間に背景の被写体が止まっていることを前提とすれば、背景の被写体に対応する領域(ブロック)の動きベクトルは、基準画像(1枚目の画像)の撮影時点から基準画像と時間的に最も離れた画像の撮影時点までの間におけるカメラの動きに伴う画角の移動量(フレーム内における被写体の全体的なずれ量)とほぼ一致することとなる。したがって、基準画像の撮影時点から基準画像と時間的に最も離れた画像の撮影時点までの間におけるカメラの動きに伴う画角の移動量と異なるずれ量を示す動きベクトルが得られた領域をメインの被写体に対応する領域であると判断するようにしてもよい。
具体的には、例えば基準画像におけるウインドウ102(基準画像の全域でもよい)に図7に示したような所定の幅の外周領域Dを設定しておき、図5のステップSB6の処理に代えて、まず、カメラの動きに伴う画角の移動量を示す画角移動情報として、基準画像における外周領域D内の全てのブロックの動きベクトルにより示される各々のブロックの被写体部分のずれ量(移動距離)の平均値(動きベクトル値)を算出する。そして、基準画像における外周領域D外の各々のブロックのうちで、そのずれ量(動きベクトル値)が、算出した平均値との差が所定の範囲内にあるブロックを背景の被写体Bに対応するブロックとし、係るブロックを除く他のブロックをメインの被写体Aに対応するブロックとして選出する処理を行うようにすればよい。その際、前述したずれ量(移動距離)は、例えば水平方向等の特定方向のみのずれ量としてもよい。なお、前述した平均値に基づいてブロックをメインの被写体Aに対応するブロックを選出する際には、そのブロックにおける被写体部分のずれ量が、前述した平均値との差が所定の範囲外にあるブロックを、メインの被写体Aに対応するブロックであると直接的に判断して選出するようにしてもよい。
また、上記とは別に、本体における上下及び/又は左右方向の移動量を検出するジャイロセンサ等の所定の移動量検出手段を備えたデジタルカメラ等においては、図5のステップSB3で連続撮影を実施する際に、撮影開始時点から撮影終了時点までの本体の移動量を取得しておき、ステップSB6の処理に代え、上記本体の移動量を撮影レンズ1の焦点距離に応じて画像内における被写体のずれ量に換算する。これがカメラの動きに伴う画角の移動量を示す画角移動情報である。そして、基準画像におけるウインドウ102(基準画像の全域でもよい)内の各々のブロックのうちで、そのずれ量(動きベクトル値)が、換算したずれ量との差が所定の範囲内にあるブロックを背景の被写体Bに対応するブロックとし、係るブロックを除く他のブロックをメインの被写体Aに対応するブロックとして選出する処理を行うようにすればよい。その際にも、前述したずれ量(移動距離)は水平方向等の特定方向のみのずれ量としてもよい。なお、前述したように本体の移動量から換算した被写体のずれ量(換算ずれ量)に基づいてブロックをメインの被写体Aに対応するブロックを選出する場合についても、そのブロックにおける被写体部分のずれ量が、上記換算ずれ量との差が所定の範囲外にあるブロックを、メインの被写体Aに対応するブロックであると直接的に判断して選出するようにしてもよい。
上述したようにカメラの動きに伴う画角の移動量と一定の範囲を超えて異なるずれ量を示す動きベクトルが得られた領域をメインの被写体に対応するブロックとして判断する場合においても、メインの被写体に対応する領域の判断に要する処理が簡単である。したがって、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
また、メインの被写体に対応するブロックを、カメラの動きに伴う画角の移動量を基準として判断するのではなく、それを基準画像(輝度画像データ)と時間的に最も離れた画像(輝度画像データ)との間で取得した動きベクトルに基づき、例えば以下のように判断してもよい。
すなわち基準画像(輝度画像データ)と時間的に最も離れた画像(輝度画像データ)との間で取得した全てのブロックの動きベクトルの値は、メインの被写体に対応するブロック群において近似し、また背景の被写体に対応するブロック群においても近似する。同時に、動きベクトルの値は一方のブロック群の側と、他方のブロック群の側とに2極化する。つまり全てのブロックの動きベクトルの値には常に偏りが生じることとなる。
図8は、その偏りの一例を示す図であって、X軸とY軸とからなる直交座標上に、各々のブロックの動きベクトルにより示されるX方向のずれ量とY方向のずれ量を示す点をプロットした分布図、例えばX方向のずれ量がnでY方向のずれ量がmであれば(n,m)の位置に点をプロットした分布図である。また、この図は連続撮影が行われている間、フレーム(画角)内でメインの被写体が斜め右下方向に僅かに移動し、かつ背景の被写体が左方向へ移動した時の例である。この場合、メインの被写体に対応する各ブロックの点によって、第4象限に位置するとともに原点0に近い(ずれ量が少ない)第1の分布域Paが形成され、また背景の被写体に対応する各ブロックの点によって第2象限と第3象限とにわたるとともに原点0から遠い(ずれ量が多い)第2の分布域Paが形成されることとなる。
したがって、各々のブロックの動きベクトルの値が第1の分布域Paと第2の分布域Paのいずれの側に含まれるのかを確認し、それが第1の分布域Paに含まれるブロックをメインの被写体に対応するブロックとして判断すればよい。また、係る判断は、動きベクトルにより示される被写体部分のずれ方向を無視し、そのずれ量のみの分布に基づき行っても構わない。係ることから具体的な処理に際しては、例えば図5のステップSB6においては、全てのブロックの動きベクトルから、ずれ量(X方向とY方向との双方のずれ量、又は一方のずれ量)別の度数を積算し、それにより表されるヒストグラムにおいてずれ量が小さい側の第1の分布域と、ずれ量が大きい側の第2の分布域とを統計演算等を含む所定の処理によって判定し、上記第1の分布域に含まれるブロックをメインの被写体に対応するブロックとして判断して選出する処理を行えばよい。
上述したように全てのブロックの動きベクトルの値(被写体部分のずれ量)の分布状態に基づいてメインの被写体に対応するブロックとして判断する場合においても、メインの被写体に対応する領域の判断に要する処理が簡単である。したがって、流し撮り画像を生成する際における複数の画像の合成処理を効率的に、かつ迅速に行うことができる。
ここで、以上の変形例の説明においては、メインの被写体に対応するブロックの判断基準とする動きベクトルを、1枚目の画像を基準画像として、この基準画像と、それと時間的に最も離れた画像との間で取得することを前提としたが、動きベクトルを求めるときの基準画像以外の対象画像は基準画像と所定時間(所定枚数)以上離れた画像であれば他の画像でもよい。無論、先に述べたように動きベクトルの分離性を上げる点においては基準画像と時間的に最も離れた画像とすることが望ましい。また、基準画像は1枚目の画像でなくとも構わない。
さらに、以上の各変形例では、メインの被写体に対応するブロックの判断基準を、基準画像と、それと時間的に最も離れた画像との2枚の画像間で取得した動きベトクル(ブロック毎の動きベトクル)のみに基づき行うものについて説明したが、これに限らず、メインの被写体に対応するブロックの判断基準を、連続撮影された複数枚の画像の各画像間においてそれぞれ取得した動きベクトル(ブロック毎の動きベトクル)に基づいて行うようにしてもよい。
例えば、連続撮影によって複数枚の画像についてYUVデータと輝度画像データを取得した後には、輝度画像データを用いて、処理対象の画像の組を変えながら隣接する画像間でのブロックマッチングを繰り返し行い、ブロック毎の動きベトクルを複数取得する。そして、そこで取得した複数の動きベトクルによって示される被写体部分のずれ量(移動距離)をブロック毎に積算し、その積算値をメインの被写体に対応するブロックの判断基準として使用し、前述した各々の変形例の処理においては、ブロック毎の動きベトクルにより示されるずれ量を上記の積算値に代えて行うようにしてもよい。
また、上記とは別に以下のようにしてもよい。すなわち、前述した各々の変形例のいずれについても、先に説明した処理を、動きベトクル(ブロック毎の動きベトクル)の取得対象を時間的に最も離れた2枚の画像間ではなく隣接する1組の画像に代えて行うことにより、メインの被写体に対応すると判断できるブロックを特定する。また、係る処理を1枚目と2枚目の画像、2枚目と3枚目の画像、3枚目と4枚目の画像、・・・といったように全ての組の画像を対象として複数回(全画像枚数−1回)繰り返して行うことにより、メインの被写体に対応すると判断できるブロックを複数回特定する。そして、複数回の処理で特定したそれぞれのブロックの情報に基づき、メインの被写体に対応すると判断できるブロックを最終的に選出するようにしてもよい。
例えば複数回の処理で特定したブロックのうちで、全ての処理に際して特定された位置のブロックのみを、メインの被写体に対応するブロックとして選出したり、所定回数以上特定された位置のブロックのみを、最終的にメインの被写体に対応するブロックとして選出したりしてもよい。但し、これを前述した各々の変形例のうち、メインの被写体に対応するブロックの判断に際して、動きベトクルと共にジャイロセンサ等により検出した本体の移動量を使用する変形例に適用する場合には、本体の移動量を全ての画像間で検出する必要がある。
ここで、第1及び第2の実施の形態では、撮像素子がCMOSセンサであるデジタルカメラに本発明を適用した場合について説明したが、CMOSセンサは、CCD等の他の撮像素子に代えることができる。また、前述したデモザイク部11、周波数特性演算部15、ブロックマッチング部16、画像変形合成加算部17の機能の一部乃至は全てを、CPU9を所定のプログラムに従い動作させることによって実現するようにしてもよい。また、本発明はデジタルカメラに限らず、例えばカメラ付きの携帯電話端末等の静止画撮影機能を有する他の撮像装置にも適用することができる。
さらに、本発明は撮像装置に限らず、時間的に連続する複数枚の画像から流し撮り画像を生成する機能を有する任意の画像処理装置にも適用することができる。また、係る画像処理装置には、所定のプログラムに基づき動作することにより前記機能が実現されるパーソナルコンピュータも含まれる。