従来より、撮像装置を利用して暗所を撮影する手法として、逐次合成処理型の電子式手振れ補正方式が知られている。この方式では、手振れの影響が少ない露光時間で被写体を連続的に撮影し、1枚目の撮影画像を基準画像に設定し、2枚目以後の撮影画像に対しては、基準画像に対する撮影画像の動きを算出し、算出された動きに基づいて動き補正を行った後に基準画像(3枚目以後の撮影画像の場合は合成画像)に順次合成する処理を施すことにより、1枚の合成画像を生成する。
逐次合成処理型の電子式手振れ補正方式では、合成が完了した撮影画像を順次破棄又は上書きしながら合成画像を生成するために、全ての撮影画像を記憶するための大容量のメモリを撮像装置に設ける必要性がない。従って、この方式によれば、全ての撮影画像を記憶しておく必要がある一括合成処理型の電子式手振れ補正方式と比較して、撮像装置を安価に構成することができる。
ここで逐次合成処理型の電子式手振れ補正方式による合成画像の生成手順について詳しく説明する。なお本明細書中では、i番目の撮影画像を入力画像Pi,入力画像Piの座標(x,y)における画素値をPi(x,y)と表記する。また合成する撮影画像の総数はN枚、入力画像Piの大きさは(xmax,ymax)とする。また入力画像Piを合成することにより得られる合成画像を合成画像G(i),合成画像G(i)の座標(x,y)における画素値をG(i)(x,y)と表記する。
この方式では、始めに、入力画像P1の撮影が完了したタイミングで入力画像P1から複数個の特徴点Fk(1≦k≦M)を抽出する。2枚の画像間の動きは一方の画像中の点と他方の画像中の点の対応関係から予測できる。特徴点Fkとはこの対応関係が決定しやすい点のことを意味する。特徴点Fkを抽出する手法としては、SUSANコーナ検出法(S.M.Smith and J.M.Brady, "SUSAN a new approach to low level image processing", International Journal of Computer Vision 23(1):45-78 May(1997))やKLT法(C.Thomasi and K.Kaneda, "Detection and tracking of point features", CMU Tech.Rep. CMU-CS-91-132, April 1991)等の手法を例示できる。
次に、以下の数式1に示すように入力画像P
1を合成画像(基準画像)G
(1)に設定する。
その後、入力画像Pi(2≦i≦N)それぞれの撮影が完了したタイミングで各特徴点Fkの入力画像Pi中における位置を追跡する。特徴点Fkの追跡手法としては、勾配法やテンプレートマッチング法等の手法を例示できる。テンプレートマッチング法では、特徴点Fk近傍の入力画像P1の画像をテンプレートとして用意し、特徴点Fkと同じ座標値を中心点とする入力画像Pi中の探索範囲内の各点におけるテンプレートとの類似度を算出し、探索範囲内で類似度が最も高い点を入力画像Pi中における特徴点Fkの位置とする。
類似度としてはSSD(Sum of Squared Difference)を利用することが多い。特徴点Fkの位置を精密に探索する方法としては、小数点以下の位置検出が可能なサブピクセル位置推定手法等の手法(「類似度モデルに基づく画像の高精度2次元サブピクセルマッチング」電子情報通信学会,技術研究報告PRMU2003, vol103, No.151, pp31-38, June 2003)が提案されている。入力画像P1からM個の特徴点Fk(1≦k≦M)を抽出したとすると、この処理により各特徴点Fkの入力画像Pi中における座標(以下“追跡座標”と表記)Ti,kが得られる。
次に、特徴点F
kの座標と追跡座標T
i,kの対応関係を利用して合成画像G
(1)と入力画像P
i間の動きを表す座標変換パラメータH
iを算出する。座標変換の手法としてはアフィン変換や射影変換を利用できる。連写撮影時間が長時間で撮像装置の動きが大きくなる場合は射影変換により座標変換を行う必要があるが、短時間で連写撮影する場合にはアフィン変換で十分な場合が多い。そこで以下の説明では座標変換の手法としてアフィン変換を用いる。いま入力画像P
1の特徴点F
kの座標(x
1,y
1)が入力画像P
i中の座標(x
2,y
2)に対応する時、斉次座標表記のアフィン変換では座標(x
1,y
1)と座標(x
2,y
2)は以下の数式2,3に示す関係式を満たす。
特徴点Fkの座標(x1,y1)と入力画像Pi中の座標(x2,y2)の対応関係には誤ったものが含まれている可能性があるので、誤った対応関係を除外して精度の高い座標変換パラメータHiを算出するためにRANSAC法(M.A.Fischler, R.C.Bolles, "Random Sample Consensus: A Paradigm for Model Fitting with Applications to Image Analysis and Automated Cartography", Comm. of the ACM, vol24, pp381-395, 1981)を用いることが望ましい。
次に、算出された座標変換パラメータHiを用いて入力画像P1と同じ位置で重なるように入力画像Piを座標変換して変換画像Pi’を生成する。そして上記数式2に変換画像Pi’の座標値(x1,y1)(0≦x1≦xmax,0≦y1≦ymax)を順次代入することにより座標(x1,y1)に対応する入力画像Piの座標値(x2,y2)を算出し、算出された入力画像Piの座標(x2,y2)における画素値Pi(x2,y2)を変換画像Pi’の座標(x1,y1)における画素値Pi’(x1,y1)として算出する。なおこの処理においては座標(x2,y2)が必ずしも整数値になるとは限らない。座標(x2,y2)が整数値でない場合、座標(x2,y2)における画素値が定まらない。従ってこの場合には、最近傍法やバイリニア法による補間処理により座標(x2,y2)周辺の画素値から座標(x2,y2)における画素値を補間する。
次に、以下の数式4に示すように、上記の処理により得られた変換画像P
i’を今までの処理により得られた合成画像G
(i−1)に合成することにより合成画像G
(i)を生成する。このようにしてN枚の入力画像P
iが合成された合成画像G
(N)が生成される。このような処理によれば、合成画像G
(N)はN枚の入力画像P
iを加算したものであるので、1枚の撮影画像のS/N比と比較してノイズを1/√N改善できる。従って、この逐次合成処理型の電子式手振れ補正方式によれば、手振れの少ない高感度な画像を撮影できる。
特開2006−270523号公報
本発明は、以下に示す復元処理によって、逐次合成処理型の電子式手振れ補正方式により生成された合成画像から高精細な合成画像を生成する。以下、この復元処理の概念について詳しく説明する。
〔復元処理〕
一般に、レンズ等の光学系による点拡がり関数はガウシアン関数に近似されることが多い。そこで光学系の点拡がり関数を分散標準偏差σのガウシアン関数に近似すると、光学系の点拡がり関数h
g(k,l)は以下の数式5のように表される。
またCCD等のイメージセンサは画素毎に到達した光を正方領域内で積分するので、イメージセンサの開口部の大きさを1とすると、イメージセンサ部での点拡がり関数h
b(k,l)は以下の数式6のように表される。従って入力画像P
1の点拡がり関数g
1(k,l)は、光学系の点拡がり関数h
g(k,l)とイメージセンサ部での点拡がり関数h
b(k,l)の畳み込みとなるので、以下の数式7のように表される。
次に、変換画像P
i’の画素値は、数式2を利用して画像変換前の入力画像P
iの座標値を求め、その座標値の最近傍の画素値から求めるものとする。この時、座標変換パラメータH
iによって座標変換前の座標(x
2,y
2)が座標変換後の座標(x
1,y
1)に対応し、座標(x
2,y
2)が整数値(X
2,Y
2)にまるめられ、この時のまるめ誤差が(α,β)であるとすると以下の数式8,9に示す関係式が成り立つ。
この場合、N枚の入力画像Piが合成された合成画像G(N)の点拡がり関数を図9(a),(b)を用いて説明する。
(1)まず、変換画像Pi’における点拡がり関数を考える。図9(a),(b)に示すように変換画像Pi’中の座標(x1,y1)に対応する入力画像Piの座標値は(x2,y2)である。
(2)光学系の点拡がり関数は数式5で与えられるh
g(k,l)であるので、点光源が座標(x
2,y
2)にあるときの座標(X
2,Y
2)を中心とした光学系の点拡がり関数は数式8との関係から以下の数式10で与えられる。
(3)光学系の点拡がり関数hg(k,l)は、狭い領域に限られるので、座標変換によってはその特性は変化しないと近似する。
(4)この結果、変換画像P
i’中の座標(x
1,y
1)における点拡がり関数g
i(k,l|(x
1,y
1))は、イメージセンサ部での点拡がり関数h
b(k,l)と数式10に示す光学系の点拡がり関数との畳み込みとなるので、以下の数式11により表される。
従って、合成画像G
(N)は入力画像P
1に2枚目以後の変換画像P
i’を加算することにより求められるので、合成画像G
(N)の点拡がり関数h(k,l|(x
1,y
1))は以下の数12に示すように変換画像P
i’の点拡がり関数g
i(k,l|(x
1,y
1))の和によって表される。従って、合成画像の各点における点拡がり関数は劣化し、合成画像にぼけが生じる。
上述の通り、変換画像Pi’の点拡がり関数gi(k,l|(x1,y1))が規定されていれば、光学系の収差や合成時の補間処理による劣化を考慮して、合成画像G(N)の各座標(x1,y1)における点拡がり関数h(k,l|(x1,y1))を算出できる。そこで本発明では、座標変換パラメータHiの精度が高い場合、ウィーナフィルタ,一般逆フィルタ,射影フィルタ等の手法により、数式12に示す点拡がり関数h(k,l|(x1,y1))を用いて最終的な合成画像G(N)から高精細な合成画像を生成し、劣化した合成画像G(N)を復元する。
上述の復元処理では、座標変換パラメータHiの精度が高いことを前提していたが、逐次合成処理型の電子式手振れ補正方式では、入力画像Pi毎に座標変換パラメータHiを算出するために、一括合成処理型の電子式手振れ補正方式と比較して座標変換パラメータHiの精度が低くなる。そして座標変換パラメータHiの精度の精度が低い場合には、前述した画像復元を行っても最終的な合成画像G(N)にぼけが残ってしまう。そこで上述の復元処理を実行する際には、合成画像G(N)が得られた後であっても座標変換パラメータHiを再演算し、再演算された座標変換パラメータHiを利用して高精細な合成画像を復元することが望ましい。以下、再演算された座標変換パラメータHiを利用した合成画像の復元方法について説明する。
前述したように、座標変換パラメータHiはi番目の入力画像Piと1枚目の入力画像P1との複数の特徴点の対応付けから求めたものであった。全ての入力画像Piの合成が完了した時点においては、1枚目の入力画像P1から得られたM個の特徴点Fkの座標と、(N−1)枚の入力画像それぞれの特徴点の対応座標Ti,k((N−1)×M個)のデータが得られている。そこでこの方法では、これらのデータの全ての対応を利用して高精度な座標変換パラメータHi’を推定しなおす。なお座標変換パラメータHi’の推定方法は文献(“カメラパラメータ推定による紙面を対象とした超解像ビデオモザイキング”,池谷彰彦,佐藤智和,池田聖,神原誠之,中島昇,横矢直和,電子情報通信学会論文誌(D-II),vol.J88-D-II,No.8,pp.1490-1498,Aug.2005.)に開示されている。
いま座標変換パラメータH
i’によって変換画像P
i’の座標(x
1,y
1)が入力画像P
iの座標(x
3,y
3)に対応付けられるとすると、以下の数式13が成り立つ。
前述したように、画像合成では変換画像P
i’の座標(x
1,y
1)と入力画像P
iの座標(X
2,Y
2)とが重なるように画像合成を行った。この時、図9(b)に示すように、本来重ねるべき座標(x
3,y
3)と座標(X
2,Y
2)との差分を(α’,β’)とすると以下の数式14に示す関係が成り立つ。この場合、合成画像G
(N)の点拡がり関数は以下の(1)〜(4)に示す手順により求めることができる。
(1)光学系の点拡がり関数は数式5で与えられるh
g(k,l)であるので、点光源が座標(x
3,y
3)にあるときの座標(X
2,Y
2)を中心とした光学系の点拡がり関数は数式14との関係から以下の数式15で与えられる。
(2)光学系の点拡がり関数hg(k,l)は、狭い領域に限られるので、座標変換によってはその特性は変化しないと近似する。
(3)この結果、変換画像P
i’中の座標(x
1,y
1)における点拡がり関数g
i(k,l|(x
1,y
1))は、イメージセンサ部での点拡がり関数h
b(k,l)と数式15に示す光学系の点拡がり関数との畳み込みとなるので、以下の数式16により表される。
従って、座標変換パラメータH
i’を用いた場合、合成画像G
(N)の点拡がり関数h(k,l|(x
1,y
1))は以下の数17に示すように表される。
合成画像G(N)の各座標における点拡がり関数h(k,l|(x1,y1))を算出する際には、上述の数式12や数式16に示す積分計算を行わなければならないが、この積分処理を以下に示すテーブル参照方式により行うようにしてもよい。このような処理によれば、合成画像G(N)の各座標における点拡がり関数h(k,l|(x1,y1))の算出処理を高速に行うことができる。
いま数式12に対し下記の数式18に示すような座標変換を行うと、数式16は以下の数式19のように表される。
上記数式19は積分範囲を変数とする関数になる。またh
g(x,y)は偶関数であり、パラメータx,yの絶対値が共に2.5以上である場合には0に近似できるので、以下の数式20,21を考える。
パラメータA,Bを予め取り得る値の範囲内で量子化し、量子化されたパラメータA,Bに対応する関数HG(A,B)の値を算出し、パラメータA,Bを入力とする関数HG(A,B)のテーブルを予め作成しておく。このような処理によれば、合成画像G(N)の各座標における点拡がり関数h(k,l|(x1,y1))を算出する際、パラメータA,Bの値を算出し、パラメータA,Bに対応する関数HG(A,B)の値をテーブルから読み出すことにより、関数HG(A,B)の値を算出できるので、数式16に示す積分計算を実行する場合と比較して高速に点拡がり関数を算出できる。
以下、上記復元処理により合成画像G(N)から高精細な合成画像を復元する本発明の一実施形態となるデジタルスチルカメラの構成について詳しく説明する。
〔全体構成〕
始めに、図1(a),(b)を参照して、本発明の一実施形態となるデジタルスチルカメラ1の全体構成について説明する。
本発明の一実施形態となるデジタルスチルカメラ1は、図1(a)に示すように、略矩形形状の薄板状本体(以下、本体と略記)2の前面に撮影レンズ3,セルフタイマランプ4,ファインダ窓5,ストロボ発光部6,及びマイクロホン部7を備える。本体2上面の(使用者にとって)右端側には電源キー8及びシャッタキー9が設けられている。撮影レンズ3は、焦点距離を無段階に変化させるズーム機能及びAF(AutoFocus)機能を有し、電源オフ時及び再生モード時は本体2内部に沈胴する。電源キー8は電源のオン/オフ毎に操作するキーであり、シャッタキー9は撮影モード時に撮影タイミングを指示する。
本体2の背面には、図1(b)に示すように、撮影モード(R)キー10,再生モード(P)キー11,電子ビューファインダ(EVF)12,スピーカ部13,マクロキー14,ストロボキー15,メニュー(MENU)キー16,リングキー17,セット(SET)キー18,及び液晶表示部19が設けられている。撮影モードキー10は、電源オフの状態から操作することで自動的に電源オンとして静止画の撮影モードに移行する一方、電源オンの状態から繰返し操作することで静止画と動画の撮影モードを循環的に設定する。本実施形態では、静止画の撮影モードには、所定の露光時間で通常の撮影動作を行う一枚撮影モードと、一枚撮影モードよりも短い露光時間で被写体を連続的に撮影し、複数の画像フレームを合成して一枚の画像を生成する連写撮影モードとが含まれる。
再生モードキー11は、電源オフの状態から操作することで自動的に電源オンとして再生モードに移行する。EVF12は、液晶画面を使用した接眼型のファインダであり、撮影モード時にはスルー画像を液晶画面に表示する一方、再生モード時には選択された画像等を再生表示する。マクロキー14は、静止画の撮影モードで通常撮影とマクロ撮影とを切換える際に操作する。ストロボキー15は、ストロボ発光部6の発光モードを切り換える際に操作する。メニューキー16は、各種メニュー項目等を選択する際に操作する。リングキー17は、上下左右各方向への項目選択用のキーが一体に形成されたものであり、このリングキー17の中央に位置するセットキー18は、その時点で選択されている項目を設定する際に操作する。
液晶表示部19は、バックライト付きのカラー液晶パネルで構成されるもので、撮影モード時にはスルー画像のモニタ表示を行う一方、再生モード時には選択した画像等を再生表示する。図示しないが、デジタルスチルカメラ1の底面には、記録媒体として用いられるメモリカードを着脱するためのメモリカードスロットや、外部のパーソナルコンピュータ等と接続するためのシリアルインタフェースコネクタとしてUSB(Universal Serial Bus)コネクタ等が設けられている。
〔撮像系及び制御系の構成〕
次に、図2,図3を参照して、本発明の一実施形態となるデジタルスチルカメラ1の撮像系及び制御系の構成について説明する。
本発明の一実施形態となるデジタルスチルカメラ1では、撮影モードの際、モータ(M)31の駆動により合焦位置や絞り位置が移動される、撮影レンズ3を構成するレンズ光学系32の撮影光軸後方に配置された撮像素子であるCCD33が、タイミング発生器(TG)34と垂直ドライバ35によって走査駆動され、一定周期毎に結像した光像に対応する光電変換出力を1画面分出力する。この光電変換出力は、アナログ形態の信号の状態でRGBの各原色成分毎に適宜ゲイン調整された後にサンプルホールド回路(S/H)36でサンプルホールドされ、A/D変換器37でデジタルデータに変換され、カラープロセス回路38で画素補間処理及びγ補正処理を含むカラープロセス処理が行なわれてデジタル値の輝度信号Y及び色差信号Cb,Crが生成され、DMA(Direct Memory Access)コントローラ39に出力される。
DMAコントローラ39は、カラープロセス回路38が出力する輝度信号Y及び色差信号Cb,Crを、同じくカラープロセス回路38からの複合同期信号,メモリ書込みイネーブル信号,及びクロック信号を用いて一度DMAコントローラ39内部のバッファに書込み、DRAMインタフェース(I/F)40を介してバッファメモリとして使用されるDRAM41にDMA転送する。制御部42は、CPU,CPUで実行されるコンピュータプログラムを固定的に記憶したROM,及びワークメモリとして使用されるRAM等により構成され、デジタルスチルカメラ1全体の動作を制御する。
制御部42は、DRAM41への輝度及び色差信号のDMA転送終了後に、この輝度及び色差信号をDRAMインタフェース40を介してDRAM41より読出し、VRAMコントローラ43を介してVRAM44に書込む。デジタルビデオエンコーダ45は、上記輝度及び色差信号をVRAMコントローラ43を介してVRAM44より定期的に読出し、これらのデータを元にビデオ信号を発生してEVF12と液晶表示部19に出力する。EVF12と液晶表示部19は、デジタルビデオエンコーダ45からのビデオ信号に基づいた表示を行なうことで、その時点でVRAMコントローラ43から取込んでいる画像情報に基づく画像をリアルタイムに表示する。
このようにEVF12と液晶表示部19にはその時点での画像がモニタ画像としてリアルタイムに表示される、所謂スルー画像の表示状態で、静止画撮影を行ないたいタイミングでシャッタキー9を操作するとトリガ信号を発生する。制御部42は、このトリガ信号に応じてその時点でCCD33から取込んでいる1画面分の輝度及び色差信号のDRAM41へのDMA転送を取り止め、改めて適正な露出条件に従った絞り値及びシャッタ速度でCCD33を駆動して1画面分の輝度及び色差信号を得てDRAM41へ転送し、その後にこの経路を停止し、記録保存の状態に遷移する。
この記録保存の状態では、制御部42がDRAM41に書込まれている輝度及び色差信号をDRAMインタフェース40を介してY,Cb,Crの各コンポーネント毎に読出して画像処理部47に書込み、この画像処理部47でADCT(Adaptive Discrete Cosine Transform:適応離散コサイン変換),エントロピ符号化方式であるハフマン符号化等の処理によりデータ圧縮する。そして、得た符号データを画像処理部47から読出し、デジタルスチルカメラ1の記録媒体として着脱自在に装着されるメモリカード48又はデジタルスチルカメラ1に固定的に内蔵される内蔵メモリ(図示せず)のいずれか一方に書込む。そして、輝度及び色差信号の圧縮処理及びメモリカード48又は内蔵メモリへの全圧縮データの書込み終了に伴なって、制御部42はCCD33からDRAM41への経路を再び起動する。
制御部42には、キー入力部49,音声処理部50、及びストロボ駆動部51が接続される。キー入力部49は、上述した電源キー8,シャッタキー9,撮影モードキー10,再生モードキー11,マクロキー14,ストロボキー15,メニューキー16,リングキー17,セットキー18等から構成され、それらのキー操作に伴なう信号は直接制御部42へ送出される。音声処理部50は、PCM音源等の音源回路を備え、音声の録音時にはマイクロホン部7より入力された音声信号をデジタル化し、所定のデータファイル形式、例えばMP3(MPEG-1 audio layer 3)規格にしたがってデータ圧縮して音声データファイルを作成してメモリカード48又は内蔵メモリへ送出する一方、音声の再生時にはメモリカード48又は内蔵メモリから送られてきた音声データファイルの圧縮を解いてアナログ化し、スピーカ部(SP)13を駆動して、拡声放音させる。ストロボ駆動部51は、静止画像撮影時に図示しないストロボ用の大容量コンデンサを充電した上で、制御部42からの制御に基づいてストロボ発光部6を閃光駆動する。
内蔵メモリ60は、図3に示すように、後述する連写合成撮影処理の際に入力画像Piが順次記憶される入力画像用メモリ領域61と、連写合成撮影処理により合成された合成画像G(i)が記憶される合成画像用メモリ領域62と、連写合成撮影処理により抽出されたM個の特徴点Fkの位置情報,M個の特徴点Fk近傍の画像(テンプレート)情報,M×(N−1)個の特徴点の追跡座標Ti,k,及び入力画像Pi毎の(N−1)個の座標変換パラメータHiが記憶される情報記憶用メモリ領域63と、作業用メモリ領域64とを備える。
〔連写合成撮影処理〕
このような構成を有するデジタルスチルカメラ1は、以下に示す撮影処理を実行することにより合成画像を生成する。以下、図4に示すフローチャートを参照して、この撮影処理を実行する際の制御部42の動作について説明する。
図4に示すフローチャートは、デジタルスチルカメラ1の動作モードが静止画の撮影モードに切り替わったタイミングで開始となり、撮影処理はステップS1の処理に進む。なお以下に示すデジタルスチルカメラ1の動作は、制御部42内のCPUがROMに記憶されているコンピュータプログラムをRAMにロードし、RAMにロードされたコンピュータプログラムを実行することにより実現される。
ステップS1の処理では、制御部42が、撮像系及び制御系を初期状態に設定することにより、撮影処理に関係するシステムの初期化を行う。これにより、ステップS1の処理は完了し、撮影処理はステップS2の処理に進む。
ステップS2の処理では、制御部42が、撮影画像の撮影枚数を計数するためのカウンタiの値を“0”に初期化する。これにより、ステップS2の処理は完了し、撮影処理はステップS3の処理に進む。
ステップS3の処理では、制御部42が、シャッタキー9が押下されているか否かを判別する。シャッタキー9が押下されていると判別した場合、制御部42は撮影処理をステップS4の処理に進める。一方、シャッタキー9が押下されていないと判別した場合には、制御部42は撮影処理をステップS8の処理に進める。
ステップS4の処理では、制御部42が、撮影画像の撮影枚数を計数するためのカウンタiの値を1増数する。これにより、ステップS4の処理は完了し、撮影処理はステップS5の処理に進む。
ステップS5の処理では、制御部42が、撮影画像を撮像し、撮影画像のデータを入力画像用メモリ領域61内に記憶する。なお以下の説明では、入力画像用メモリ領域61内に記憶されたi枚目の撮影画像を入力画像Piと表記する。また入力画像Piを入力画像用メモリ領域61に記憶する際、制御部42は入力画像Piの記憶領域にその時のカウンタiの値をインデックス番号として付与する。これにより、ステップS5の処理は完了し、撮影処理はステップS6の処理に進む。
ステップS6の処理では、制御部42が、入力画像Piが記憶されている入力画像用メモリ領域61のアドレス値とそのインデックス番号iを引数とする画像合成命令を画像処理部47に出力し、画像処理部47は、画像合成命令を受けて画像合成処理を実行する。なお画像合成処理の詳細については図5に示すフローチャートを参照して後述する。これにより、ステップS6の処理は完了し、撮影処理はステップS7の処理に進む。
ステップS7の処理では、制御部42が、撮影画像の撮影枚数を計数するためのカウンタiの値が規定値(本実施形態では“16”)であるか否かを判別する。カウンタiの値が規定値でない場合、制御部42は、合成画像を生成するために必要な規定枚数の撮影画像が撮像されていないと判断し、撮影処理をステップS3の処理に戻す。一方、カウンタiの値が規定値である場合には、制御部42は、合成画像を生成するために必要な規定枚数の撮影画像が撮像されたと判断し、撮影処理をステップS9の処理に進める。
ステップS8の処理では、制御部42が、撮影画像の撮影枚数を計数するためのカウンタiの値が0であるか否かを判定する。カウンタiの値が0である場合、制御部42は撮影処理をステップS3の処理に戻す。カウンタiの値が0でない場合には、制御部42は撮影処理をステップS9の処理に進める。
ステップS9の処理では、画像処理部47が、情報記憶用メモリ領域63から入力画像P1の特徴点Fkの座標(x1,y1)に対応する追跡座標Ti,kのデータを読み出し、特徴点Fkの座標(x1,y1)と追跡座標Ti,kの対応関係を利用して高精度な座標変換パラメータHi’を推定する。なお座標変換パラメータHi’の推定方法は既述の通りであるので説明を省略する。画像復元性能よりも一連の合成処理時間を短縮したい場合には、この処理を省略し、ステップS6で求めた座標変換パラメータHiを高精度な座標変換パラメータHi’の代わりに用いてもよい。その場合でも以下の処理にて画像劣化の復元効果が得られる。これにより、ステップS9の処理は完了し、撮影処理はステップS10の処理に進む。
ステップS10の処理では、画像処理部47が、ステップS9の処理により算出された座標変換パラメータHi’(2≦i≦N)と情報記憶用メモリ領域63に記憶されている座標変換パラメータHiから合成画像G(N)の点拡がり関数h(k,l|(x1,y1))を算出する。なおPSFの算出方法については図10に示すフローチャートを参照して後述する。これにより、ステップS10の処理は完了し、撮影処理はステップS11の処理に進む。
ステップS11の処理では、画像処理部47が、ウィーナフィルタ,一般逆フィルタ,射影フィルタ等の手法を用いて、ステップS10の処理により算出された合成画像G(N)の点拡がり関数h(k,l|(x1,y1))を利用して合成画像G(N)から劣化のない高精細な復元画像を生成する。これにより、ステップS11の処理は完了し、撮影処理はステップS12の処理に進む。
ステップS12の処理では、画像処理部47が、ステップS11の処理により生成された合成画像に対しホワイトバランス調整や輝度γ補正等の現像処理を施す。これにより、ステップS12の処理は完了し、撮影処理はステップS13の処理に進む。
ステップS13の処理では、画像処理部47が、ステップS12の処理後の合成画像をJPEG形式に圧縮する。これにより、ステップS13の処理は完了し、撮影処理はステップS14の処理に進む。
ステップS14の処理では、画像処理部47が、ステップS13の処理後の合成画像のデータを合成画像用メモリ領域62に記憶する。これにより、ステップS14の処理は完了し、撮影処理はステップS15の処理に進む。
ステップS15の処理では、制御部42が、シャッタキー9が押下されているか否かを判別する。そして制御部42は、シャッタキー9が押下されなくなったタイミングで撮影処理をステップS3の処理に戻す。
〔合成処理〕
次に、図5に示すフローチャートを参照して、上記ステップS6の合成画像生成処理について詳しく説明する。
図5に示すフローチャートは、上記ステップS5の処理が完了したタイミングで開始となり、合成画像生成処理はステップS21の処理に進む。
ステップS21の処理では、画像処理部47が、画像合成命令の引数であるインデックス番号iの値が1であるか否かを判別する。インデックス番号iの値が1である場合、画像処理部47は合成処理をステップS22の処理に進める。一方、インデックス番号iの値が1でない場合には、画像処理部47は合成処理をステップS25の処理に進める。
ステップS22の処理では、画像処理部47が、画像合成命令の引数である入力画像用メモリ領域61のアドレス値を参照して、1枚目の撮影画像P1のデータを入力画像メモリ領域61から作業メモリ領域64内に読み出し、KLT法により1枚目の撮影画像P1からM個の特徴点Fk(1≦k≦M)を抽出する。そして画像処理部47は、抽出されたM個の特徴点Fkの位置座標を情報記憶用メモリ領域63内に記憶する。なお特徴点Fkの個数Mは50以上であることが望ましい。これにより、ステップS22の処理は完了し、合成処理はステップS23の処理に進む。
ステップS23の処理では、画像処理部47が、各特徴点Fkについて、特徴点Fkを中心点とするL×Lの大きさの画像を1枚目の撮影画像P1から切り出し、切り出された画像のデータをテンプレート(特徴点近傍画像Rk)として情報記憶用メモリ領域63内に記憶する。これにより、ステップS23の処理は完了し、合成処理はステップS24の処理に進む。
ステップS24の処理では、画像処理部47が、1枚目の撮影画像P1を1枚目の合成画像G(1)に設定し、合成画像G(1)のデータを合成画像用メモリ領域62に記憶する。なお入力画像Piの1画素あたりのビット数は、CCD33の解像度となり、一般には8〜12ビットである。一方、合成画像G(i)のビット数は、複数枚の撮影画像を合成することにより生成されるので、8〜12ビットより多くなる。従って、合成画像G(i)のデータを合成画像用メモリ領域62にコピーする際は、ビット数を減らしながらコピーすることが望ましい。これにより、ステップS24の処理は完了し、一連の合成処理は終了する。
ステップS25の処理では、画像処理部47が、各特徴点Fkの位置座標とテンプレートの情報を情報記憶用メモリ領域63から読み出し、各特徴点Fkについて、特徴点Fkを中心とした所定の探索範囲内の各点におけるテンプレートとの類似度を算出する。そして画像処理部47は、類似度が最も高い点の座標を撮影画像Piにおける特徴点Fkの座標(追跡座標)Ti,kとし、追跡座標Ti,kの情報を情報記憶用メモリ領域63に記憶する。これにより、ステップS25の処理は完了し、合成処理はステップS26の処理に進む。
ステップS26の処理では、画像処理部47が、M個の特徴点Fkの座標とそれぞれの追跡座標Ti,kの対応関係から座標変換パラメータHiを算出し、算出された座標変換パラメータHiを情報記憶用メモリ領域63に記憶する。なおこの対応関係には、誤ったものが含まれている可能性があるので、RANSACによって誤った対応関係を外しながら座標変換パラメータHiを算出する。これにより、ステップS26の処理は完了し、合成処理はステップS27の処理に進む。
ステップS27の処理では、画像処理部47が、ステップS26の処理により算出された座標変換パラメータHiを利用して撮影画像Piを1枚目の撮影画像P1に座標変換して変換画像(位置補正画像)Pi’を生成する。そして画像処理部47は、変換画像Pi’の座標値(x1,y1)を数式2に順番に代入し、入力画像Piの座標(x2,y2)における画素値Pi(x2,y2)を読み出すことにより、変換画像Pi’の各画素Pi’(x1,y1)の値を算出する。
なお座標(x2,y2)は整数値になるとは限らないので、整数値でない場合には、最近傍法による補間処理により座標(x2,y2)近傍の画素値から座標(x2,y2)における画素値Pi(x2,y2)を算出することが望ましい。また変換画像Pi’を生成する際は、1画素毎に変換画像Pi’を生成し、全画面の変換画像Pi’を一度に生成しないことが望ましい。この場合、具体的には、(1)座標(x1,y1)を(0,0)に初期化し、(2)数式2に座標(x1,y1)を代入して座標(x2,y2)を算出し、(3)座標(x2,y2)を四捨五入して整数値(X2,Y2)を算出し、(4)合成画像用メモリ領域62に記憶されている合成画像の座標(x1,y1)における画素値を更新し、(5)座標(x1,y1)を次の座標位置に移動させるという処理を全画素について実行するまで繰り返し実行する。これにより、変換画像Pi’を生成するために必要なメモリ容量を減らすことができる。これにより、ステップS27の処理は完了し、一連の合成処理は終了する。
〔PSFの算出処理〕
次に、図10に示すフローチャートを参照して、上記ステップS10のPSFの算出処理について詳しく説明する。
図10に示すフローチャートは、上記ステップS9の処理が完了したタイミングで開始となり、合成画像生成処理はステップS31の処理に進む。
ステップS31の処理では、画像処理部47が、点拡がり関数h’(k,l|(x1,y1))の全要素の値を0に初期化する。これにより、ステップS31の処理は完了し、算出処理はステップS32の処理に進む。
ステップS32の処理では、画像処理部47が、座標変換パラメータHiのインデックスを示すカウンタの値iを2に初期化する。これにより、ステップS32の処理は完了し、算出処理はステップS33の処理に進む。
ステップS33の処理では、画像処理部47が、全座標値における点拡がり関数を算出するために座標(x1,y1)の値を(0,0)に初期化する。これにより、ステップS33の処理は完了し、算出処理はステップS34の処理に進む。
ステップS34の処理では、画像処理部47が、座標変換パラメータHiと座標(x1,y1)を用いて数式2から座標(x2,y2)を算出すると共に、算出された座標(x2,y2)の小数点以下の値を四捨五入することにより座標(x2,y2)の整数部の座標(X2,Y2)を算出する。これにより、ステップS34の処理は完了し、算出処理はステップS35の処理に進む。
ステップS35の処理では、画像処理部47が、座標変換パラメータHi’と座標(x1,y1)を用いて数式13から座標(x3,y3)を算出すると共に数式14から残差(α’,β’)を算出する。これにより、ステップS35の処理は完了し、算出処理はステップS36の処理に進む。
ステップS36の処理では、画像処理部47が、全座標値における点拡がり関数を算出するために、パラメータ(k、l)の値を初期化する。通常、パラメータk,lの値は−3≦k,l≦3の範囲内にあるので、初期値は例えば(−3,3)が選ばれる。これにより、ステップS36の処理は完了し、算出処理はステップS37の処理に進む。
ステップS37の処理では、画像処理部47が、数式21を用いてパラメータA,Bを算出する。これにより、ステップS37の処理は完了し、算出処理はステップS38の処理に進む。
ステップS38の処理では、画像処理部47が、ステップS37の処理により算出されたパラメータA,Bに対応する関数HG(A,B)の値をテーブルから読み出し、変換画像Pi’の点拡がり関数gi(k,l|(x1,y1))を算出する。さらに画像処理部47は、算出された点拡がり関数の値を合成画像G(N)の点拡がり関数h’(k,l|(x1,y1))に加算して合成画像G(N)の点拡がり関数h’(k,l|(x1,y1))を更新する。これにより、ステップS38の処理は完了し、算出処理はステップS39の処理に進む。
ステップS39の処理では、画像処理部47が、パラメータ(k,l)の全ての組み合わせについて算出処理を行ったか否かを判別する。判別の結果、全ての組み合わせについて算出処理を行っていないと判定した場合、画像処理部47は、パラメータ(k,l)の値を次の組み合わせの値に更新した後、算出処理をステップS37の処理に戻す。一方、全ての組み合わせについて算出処理を行ったと判定した場合には、画像処理部47は算出処理をステップS40の処理に進める。
ステップS40の処理では、画像処理部47が、全ての座標(x1,y1)について算出処理を行ったか否かを判別する。判別の結果、全ての座標(x1,y1)について算出処理を行っていないと判定した場合、画像処理部47は、座標(x1,y1)の値を更新した後、算出処理をステップS34の処理に戻す。一方、全ての座標(x1,y1)について算出処理を行ったと判定した場合には、画像処理部47は算出処理をステップS41の処理に進める。
ステップS41の処理では、画像処理部47が、座標変換パラメータHiのインデックスを示すカウンタの値iがNであるか否かを判別する。判別の結果、カウンタの値iがNでない場合、画像処理部47はカウンタの値iを1増数した後、算出処理をステップS33の処理に戻す。一方、カウンタの値iがNである場合には、画像処理部47は一連の算出処理を終了する。
以上の算出処理によって最終的に算出される点拡がり関数h’(k,l|(x1,y1))は数式17を計算したことになるので、合成画像G(N)の点拡がり関数を求めたことになる。
以上の説明から明らかなように、本発明の実施形態となるデジタルスチルカメラ1では、制御部42が、各入力画像Piの座標変換パラメータHiを利用して合成画像G(N)の各座標における点拡がり関数h(k,l|(x1,y1))を演算し、演算された点拡がり関数h(k,l|(x1,y1))を利用して合成画像G(N)を復元するので、各入力画像Piの点拡がり関数の劣化によって合成画像G(N)が劣化することを抑制し、高精細な合成画像G(N)を生成することができる。
また本発明の実施形態となるデジタルスチルカメラ1では、制御部42が、全ての入力画像Piの合成完了後、特徴点Fkの座標(x1,y1)と追跡座標Ti,kの対応関係を利用して座標変換パラメータHiを補正し、補正された座標変換パラメータHiを利用して合成画像G(N)の各座標における点拡がり関数h(k,l|(x1,y1))を再演算し、再演算された点拡がり関数h(k,l|(x1,y1))を利用して合成画像を復元するので、座標変換パラメータHiを高精度化することにより、さらに高精細な合成画像G(N)を生成することができる。
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、この実施の形態による本発明の開示の一部をなす論述及び図面により本発明は限定されることはない。すなわち、上記実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれることは勿論であることを付け加えておく。