−第1の実施形態−
図1は、第1の実施形態における撮像装置であるデジタルスチルカメラの構成を示すブロック図である。図1に示すデジタルスチルカメラは、カメラ本体1と交換式レンズ2から構成される。
交換式レンズ2は、レンズ1010と、Flashメモリ1011と、マイクロコンピュータ1012と、ドライバ1013と、絞り1014と、を有している。交換式レンズ2は、I/F999を介して、カメラ本体1と通信可能に接続されている。
カメラ本体1は、メカシャッター101と、撮像素子102と、アナログ処理部103と、アナログ/デジタル変換部104(以下、A/D変換部104)と、バス105と、SDRAM106と、画像処理部107と、AE処理部108と、AF処理部109と、画像圧縮伸長部110と、メモリインターフェース111(以下、メモリI/F111)と、記録媒体112と、LCDドライバ113と、LCD114と、マイクロコンピュータ115と、操作部116と、Flashメモリ117と、振動検出センサ118と、動きベクトル算出部119と、合成処理部120とを有している。
レンズ1010は、被写体の光学像を撮像素子102に集光させる。レンズ1010は、単焦点レンズであってもよいし、ズームレンズであってもよい。
マイクロコンピュータ1012は、I/F999、Flashメモリ1011、および、ドライバ1013と接続されていて、Flashメモリ1011に記憶されている情報の読み込み・書き込みを行うとともに、ドライバ1013を制御する。マイクロコンピュータ1012は、さらに、I/F999を介して、マイクロコンピュータ115と通信することができ、レンズの焦点距離情報などをマイクロコンピュータ115へ送信し、また、マイクロコンピュータ115から絞り値等の情報を受信する。
ドライバ1013は、マイクロコンピュータ1012の指示を受けて、レンズ1010を駆動させて、焦点距離やフォーカス位置の変更を行うとともに、絞り1014を駆動する。絞り1014は、レンズ1010の近傍に設けられ、被写体の光量を調節する。
メカシャッター101は、マイクロコンピュータ115の指示を受けて駆動し、撮像素子102に被写体を露光する時間を制御する。
撮像素子102は、各画素を構成するフォトダイオードの前面に、ベイヤー配列のカラーフィルタが配置された撮像素子である。ベイヤー配列は、水平方向にR画素とG(Gr)画素が交互に配置されたラインと、G(Gb)画素とB画素が交互に配置されたラインとを有し、さらにその2つのラインを垂直方向にも交互に配置することで構成されている。この撮像素子102は、レンズ1010により集光された光を、画素を構成するフォトダイオードで受光して光電変換することで、光の量を電荷量としてアナログ処理部103へ出力する。なお、撮像素子102は、CMOS方式のものでもCCD方式のものでも良い。
アナログ処理部103は、撮像素子102から読み出された電気信号(アナログ画像信号)に対し、リセットノイズ等を低減した上で波形整形を行い、さらに目的の明るさとなるように、ゲインアップを行う。A/D変換部104は、アナログ処理部103から出力されたアナログ画像信号をデジタル画像信号(以後、画像データという)に変換する。
バス105は、デジタルカメラ内部で発生した各種データをデジタルカメラ内の各部に転送するための転送路である。バス105は、A/D変換部104と、SDRAM106と、画像処理部107と、AE処理部108と、AF処理部109と、画像圧縮伸長部110と、メモリI/F111と、LCDドライバ113と、マイクロコンピュータ115と、振動検出センサ118と、動きベクトル算出部119と、合成処理部120に接続されている。
A/D変換部104から出力される画像データは、バス105を介して一旦SDRAM106に記憶される。SDRAM106は、A/D変換部104において得られた画像データや、画像処理部107、画像圧縮伸長部110、合成処理部120において処理された画像データ等の各種データが一時的に記憶される記憶部である。
画像処理部107は、ホワイトバランス補正部1071(以下、WB補正部1071)、同時化処理部1072、色再現処理部1073、および、ノイズ低減処理部1074(以下、NR処理部1074)を含み、SDRAM106から読み出した画像データに対して様々な画像処理を施す。WB補正部1071は、画像データのホワイトバランスを補正する処理を行う。同時化処理部1072は、ベイヤー配列による画像データから、1画素あたりR、G、Bの情報からなる画像データへ同時化する処理を行う。色再現処理部1073は、画像の色味を変化させる色再現処理を行い、NR処理部1074は、ノイズを低減する処理を行う。ノイズ低減処理後の画像データは、SDRAM106に記憶される。
振動検出センサ118は、いわゆる手ブレを含むカメラ本体1の動きを検出する。動きベクトル算出部119は、連続的な撮影により得られた複数の画像間の動きベクトルを算出する。
合成処理部120は、連続的に撮影された複数の画像を合成する。特に、合成処理部120は、被写体輝度に応じた標準露光時間よりも短い露光時間で撮影された画像データ(以下、短露光画像データと呼ぶ)と、標準露光時間よりも長い露光時間で撮影された画像データ(以下、長露光画像データと呼ぶ)とを合成することによって、ダイナミックレンジの広い合成画像を生成する。また、合成処理部120は、合成処理を行う前に、必要に応じて複数の画像間の位置ずれを補正する。
本実施形態において、合成処理部120は、撮影時のフレームレートに応じて、短露光画像データと長露光画像データとを合成する際の合成方法、特に、合成する画像データの組み合わせを変更する。以下では、異なる3種類の合成方法(A)、(B)、(C)についてそれぞれ説明する。
(A)露光時間の異なる2つの画像データを互い違いに合成する方法
図2は、長露光画像データと短露光画像データとを互い違いに合成することによって、合成画像データを生成する方法を説明するための図である。長露光画像データと短露光画像データとを合成することによって合成画像を生成するモードでは、長露光時間での撮影と、短露光時間での撮影とが交互に行われる。図2において、画像データ21〜25は、連続的な撮像により得られる画像データであって、画像データ21、23、25は長露光画像データであり、画像データ22、24は、短露光画像データである。
長露光時間での撮影が先に行われる場合、長露光画像データ21と短露光画像データ22とを合成することによって、合成画像v26を生成する。続いて、短露光画像データ22と長露光画像データ23とを合成することによって、合成画像データ27を生成する。以後、長露光画像データ23と短露光画像データ24とを合成することによって、合成画像データ28を生成し、短露光画像データ24と長露光画像データ25とを合成することによって、合成画像データ29を生成する。
すなわち、長露光画像データと短露光画像データとの合成、および、短露光画像データと長露光画像データとの合成が交互におこなわれる。この合成方法によれば、合成画像出力時のフレームレートを、撮像画像入力時のフレームレートと同一にすることができる。しかし、長露光時間での撮影と短露光時間での撮影との間の間隔、および、短露光時間での撮影と長露光時間での撮影との間の間隔が異なるため、合成画像をLCD114に表示する際に、動画(記録用動画およびライブビュー画像を含む)の表示が不自然になる場合がある。このため、この合成方法(A)は、撮像画像の入力フレームレートが低い場合に用いることは好ましくなく、入力フレームレートが高い場合に用いることが好ましい。
(B)露光時間の異なる2つの画像データを同じ組み合わせで合成する方法
図3は、長露光画像データと短露光画像データとを同じ組み合わせで合成することによって、合成画像データを生成する方法を説明するための図である。図3において、画像データ31〜35は、連続的な撮像により得られる画像データであって、画像データ31、33、35は長露光画像データであり、画像データ32、34は短露光画像データである。
長露光時間での撮影が先に行われる場合、長露光画像データ31と短露光画像データ32とを合成することによって、合成画像データ36が生成される。続いて、長露光画像データ33と短露光画像データ34とを合成することによって、合成画像データ37が生成される。
すなわち、同じ組み合わせで、長露光画像データと短露光画像データとの合成が繰り返し行われる。図3に示す例では、長露光時間での撮影が先に行われているが、短露光時間での撮影を先に行って、短露光画像データと長露光画像データとの合成を繰り返し行うようにしてもよい。なお、長露光画像データと短露光画像データとの露光間隔が短い組合せで合成すると、時間差が小さくなり好ましい。この合成方法(B)によれば、上記合成方法(A)と異なり、露光間隔の違いはないものの、合成画像出力時のフレームレートが撮像画像入力時のフレームレートの半分となってしまうため、合成画像をLCD114に表示する際に、動画の表示が不自然になる場合がある。従って、この合成方法(B)は、撮像画像の入力フレームレートが低い場合に用いることは好ましくなく、入力フレームレートが高い場合に用いることが好ましい。
(C)中間画像データを内挿して合成する方法
図4は、1フレームおきに得られる長露光(および短露光)画像データの中間の画像データを生成し、生成した中間画像データも用いて、長露光画像データと短露光画像データとを同じ組み合わせで合成することによって、合成画像データを生成する方法を説明するための図である。図4において、画像データ41〜45は、連続的な撮像により得られる画像データであって、画像データ41、43、45は長露光画像データであり、画像データ42、44は短露光画像データである。
この方法では、まず始めに、長露光画像データ41および長露光画像データ43に基づいて、長露光画像データ41と長露光画像データ43の間に撮像されたと仮定した場合の長露光画像データ(中間画像データ)51を生成する。連続的に撮像された2枚の画像データに基づいて、時間的にそれら2枚の間に撮像されたと仮定した場合の中間画像データは、既知の方法により生成することができる。生成された中間画像データ51と短露光画像データ42とを合成することによって、合成画像データ55を生成する。
続いて、短露光画像データ42および短露光画像データ44に基づいて、短露光画像データ42と短露光画像データ44の間に撮像されたと仮定した場合の短露光画像データ(中間画像データ)53を生成する。長露光画像データ43と、生成された中間画像データ53とを合成することによって、合成画像データ56を生成する。
続いて、長露光画像データ43および長露光画像データ45に基づいて、長露光画像データ43と長露光画像データ45の間に撮像されたと仮定した場合の長露光画像データ(中間画像データ)52を生成する。生成された中間画像データ52と短露光画像データ44とを合成することによって、合成画像データ57を生成する。
この合成方法(C)によれば、上記合成方法(A)で生じるような露光間隔の違いはなく、また、合成画像出力時のフレームレートは、撮像画像入力時のフレームレートと同一となる。ただし、合成画像をLCD114に表示する際に、数フレーム(図4に示す例では、1フレーム)遅れることに加え、長露光画像データおよび短露光画像データのそれぞれに対して中間画像データを生成する処理が必要になるため、処理負荷が大きくなる。
従って、合成方法(C)は、撮像画像の入力フレームレートが低い場合に用いることが好ましく、入力フレームレートが高い場合に用いることは好ましくない。
上述した合成方法(A)、(B)、(C)のデメリットは、撮像画像入力時のフレームレートと関連しており、まとめると、図5のように表すことができる。図5において、入力フレームレートは、「低速」、「高速」、「超高速」の3段階に区分けされており、入力フレームレートに対する各合成方法の相性を◎、○、△、×の4段階で表している。◎が最も相性が良く、以下、○、△、×の順に相性が悪くなる。ここで、相性とは、合成処理により得られる動画をLCD114に表示した際に、自然に表示されるか否かを意味しており、◎が最も自然に表示されることを表している。
図5に示すように、合成方法(A)は、入力フレームレートが「高速」または「超高速」の場合に用いることが好ましい。また、合成方法(B)は、入力フレームレートが「超高速」の場合に用いることが好ましく、合成方法(C)は、入力フレームレートが「低速」の場合に用いることが好ましい。
図1に戻って説明を続ける。AE処理部108は、画像データから被写体輝度を算出する。被写体輝度を算出するためのデータは、専用の測光センサの出力であってもよい。AF処理部109は、画像データから高周波成分の信号を取り出し、AF(Auto Focus)積算処理により、合焦評価値を取得する。
画像圧縮伸長部110は、静止画像データの記録時には、SDRAM106から画像データを読み出し、読み出した画像データをJPEG圧縮方式に従って圧縮して、圧縮したJPEG画像データを、SDRAM106に一旦記憶する。マイクロコンピュータ115は、SDRAM106に記憶されたJPEG画像データに対して、JPEGファイルを構成するために必要なJPEGヘッダを付加してJPEGファイルを作成し、作成したJPEGファイルを、メモリI/F111を介して記録媒体112に記録する。
画像圧縮伸長部110は、また、動画データの記録時には、SDRAM106から動画データを読み出し、読み出した動画データを、例えば、H.264方式に従って圧縮して、圧縮した動画データをSDRAM106に一旦記憶する。画像圧縮伸長部110は、さらに、マイクロコンピュータ115からの指令に基づいて、圧縮データを展開(伸長)する処理を行う。
記録媒体112は、例えばカメラ本体1に着脱可能なメモリカードからなる記録媒体であるが、これに限定されるものではない。
LCDドライバ113は、LCD114に画像を表示させる。画像の表示には、撮影直後の画像データを短時間だけ表示するレックビュー表示、記録媒体112に記録されたJPEGファイルの再生表示、および、ライブビュー表示等の動画の表示が含まれる。記録媒体112に記録された圧縮データを再生する場合、画像圧縮伸長部110は、記録媒体112に記録されている圧縮データを読み出して展開(伸長)処理を施した上で、展開したデータを一旦SDRAM106に記憶させる。LCDドライバ113は、伸張されたデータをSDRAM106から読み出し、読み出したデータを映像信号へ変換した後でLCD114へ出力して表示を行う。
制御部としての機能を有するマイクロコンピュータ115は、デジタルカメラ本体1の各種シーケンスを統括的に制御する。マイクロコンピュータ115には、操作部116およびFlashメモリ117が接続されている。
操作部116は、電源ボタン、レリーズボタン、各種入力キー等の操作部材である。ユーザによって、操作部116の何れかの操作部材が操作されることにより、マイクロコンピュータ115は、ユーザの操作に応じた各種シーケンスを実行する。電源ボタンは、当該デジタルカメラの電源のオン/オフ指示を行うための操作部材である。電源ボタンが押されると、当該デジタルカメラの電源がオンとなる。再度、電源ボタンが押されると、当該デジタルカメラの電源はオフとなる。レリーズボタンは、ファーストレリーズスイッチとセカンドレリーズスイッチの2段スイッチを有して構成されている。レリーズボタンが半押しされて、ファーストレリーズスイッチがオンされた場合に、マイクロコンピュータ115は、AE処理やAF処理等の撮影準備シーケンスを行う。また、レリーズボタンが全押しされて、セカンドレリーズスイッチがオンされた場合に、マイクロコンピュータ115は、撮影シーケンスを実行して撮影を行う。
Flashメモリ117は、ホワイトバランス補正値やローパスフィルタ係数、デジタルカメラの動作に必要な各種パラメータ、フレームレートと比較するための閾値TH1およびTH2、デジタルスチルカメラを特定するための製造番号などを記憶している。また、Flashメモリ117は、マイクロコンピュータ115にて実行する各種プログラムも記憶している。マイクロコンピュータ115は、Flashメモリ117に記憶されているプログラムに従い、またFlashメモリ117から各種シーケンスに必要なパラメータを読み込み、各処理を実行する。
図6は、第1の実施形態における撮像装置であるデジタルスチルカメラによって行われる撮像処理の手順を示すフローチャートである。以下では、短露光画像データと、長露光画像データとを合成することによって、ダイナミックレンジの広い合成画像データを生成する撮像処理について説明する。
ステップS10において、マイクロコンピュータ115は、撮影モードの設定を読み込む。設定可能な撮影モードとしては、静止画の撮像を行うための静止画モード、動画の撮像を行うための動画モード、および、ライブビュー画像を表示するためのライブビューモードがある。
ステップS20では、AF処理およびAE処理を行う。具体的には、AF処理部109において、合焦評価値を算出する。マイクロコンピュータ115は、合焦評価値に基づいて、レンズ1010を駆動させる指令をドライバ1013に出す。ドライバ1013は、この指令に基づいて、レンズ1010を駆動させて、焦点距離やフォーカス位置の変更を行う。AE処理では、AE処理部108において、被写体輝度を算出し、算出した被写体輝度に基づいて、Flashメモリ117に記憶されている露出条件決定テーブルを参照することにより、撮影時のISO感度、絞り、および露光時間を決定する。
ステップS30において、マイクロコンピュータ115は、ステップS20で決定した露光時間に基づいて、撮影時のフレームレートFRを算出する。
ステップS40において、マイクロコンピュータ115は、フレームレートFRと比較するための閾値TH1およびTH2(TH1<TH2)をFlashメモリ117から読み出す。
ステップS50において、マイクロコンピュータ115は、ステップS30で算出したフレームレートFRが閾値TH1より低いか否かを判定する。フレームレートFRが閾値TH1より低いと判定するとステップS60に進む。
ステップS60において、合成処理部120は、上記合成方法(C)の合成処理、すなわち、中間画像データを生成し、生成した中間画像データを用いて、長露光画像データと短露光画像データとを同じ組み合わせで合成する処理を行う。合成方法(C)の合成処理の詳細な処理内容は、図7に示すフローチャートを用いて後述する。
一方、ステップS50において、ステップS30で算出したフレームレートFRが閾値TH1以上であると判定すると、ステップS70に進む。ステップS70において、マイクロコンピュータ115は、ステップS30で算出したフレームレートFRが閾値TH2より低いか否かを判定する。フレームレートFRが閾値TH2より低いと判定するとステップS80に進む。
ステップS80において、合成処理部120は、上記合成方法(A)の合成処理、すなわち、長露光画像データと短露光画像データとを互い違いに合成する処理を行う。合成方法(A)の合成処理の詳細な処理内容は、図8に示すフローチャートを用いて後述する。
一方、ステップS70において、ステップS30で算出したフレームレートFRが閾値TH2以上であると判定すると、ステップS90に進む。ステップS90において、合成処理部120は、上記合成方法(B)の合成処理、すなわち、長露光画像データと短露光画像データとを同じ組み合わせで合成する処理を行う。合成方法(B)の合成処理の詳細な処理内容は、図9に示すフローチャートを用いて後述する。
ステップS100において、画像処理部107は、ステップS60、ステップS80、および、ステップS90のうちのいずれかの処理で得られる合成画像データに対して、ホワイトバランス補正処理、同時化処理、色再現処理、ノイズ低減処理などの様々な画像処理を施す。
ステップS110において、マイクロコンピュータ115は、合成画像データが静止画データであるか、動画データであるか、または、ライブビュー画像データであるかを判定する。ここで、動画データとは、記録媒体112に記録するための動画データである。合成画像データが静止画データであると判定すると、ステップS120に進む。
ステップS120において、画像圧縮伸長部110は、合成画像データをJPEG圧縮方式に従って圧縮する。続くステップS130では、圧縮された画像データに対して、JPEGファイルを構成するために必要なJPEGヘッダを付加した後、メモリI/F111を介して記録媒体112に記録する。
ステップS110において、合成画像データが動画データであると判定すると、ステップS140に進む。ステップS140において、画像圧縮伸長部110は、合成画像データを所定の動画圧縮形式に従って圧縮する。続くステップS150では、圧縮されたデータに対して、動画ファイルを構成するために必要なヘッダを付加した後、メモリI/F111を介して記録媒体112に記録する。
ステップS110において、合成画像データがライブビュー画像データであると判定すると、ステップS160に進む。ステップS160では、合成画像データに対して、ライブビュー表示用の画像サイズに変更する処理など、ライブビュー表示用の画像処理を施す。続くステップS170では、ライブビュー表示用の画像処理が施された画像データを、LCD114に表示させる。
図7は、図6に示すフローチャートのステップS60の処理、すなわち、上記合成方法(C)の合成処理の詳細な処理内容を示すフローチャートである。
ステップS700では、変数a、b、cをそれぞれ、a=0、b=−1、c=−2に設定する。
ステップS705では、Flashメモリ117からフラグkを読み出す。フラグkは、長露光での撮影を行うか短露光での撮影を行うかを判断するためのフラグであり、k=0の場合に、長露光での撮影を行い、k=1の場合に、短露光での撮影を行う。Flashメモリ117には、予め設定された値のフラグkが格納されている。
ステップS710では、フラグkが1に設定されているか否かを判定する。k=1であると判定するとステップS715に進む。ステップS715では、短露光での撮影を行うためのAF処理およびAE処理を行う。具体的には、まず、AF処理部109において、合焦評価値を算出する。マイクロコンピュータ115は、合焦評価値に基づいて、レンズ1010を駆動させる指令をドライバ1013に出す。ドライバ1013は、この指令に基づいて、レンズ1010を駆動させて、焦点距離やフォーカス位置の変更を行う。AE処理では、AE処理部108において、被写体輝度を算出し、算出した被写体輝度に基づいて、Flashメモリ117に記憶されている露出条件決定テーブルを参照することにより、撮影時のISO感度、絞り、およびシャッター速を決定する。ただし、ステップS715の処理で用いる露出条件決定テーブルでは、被写体輝度に応じた標準のシャッター速よりも速いシャッター速が定められている。
ステップS720では、ステップS715で決定したISO感度、絞り、およびシャッター速で、設定されている撮影モード(静止画モード、動画モード、ライブビューモード)に応じた撮影を行う。ドライバ1013は、マイクロコンピュータ1012の指示に基づいて、決定された絞り値になるように絞り1014を駆動させる。そして、決定したシャッター速に基づいて撮影を行い、決定したISO感度に応じた画像データを得る。上述したように、ステップS715で求めたシャッター速は、被写体輝度に応じた標準のシャッター速よりも速いため、被写体輝度に応じた標準露光時間よりも短い露光時間での撮影が行われる。
ステップS725では、ステップS720の撮影により得られた画像データ(RAWデータ)をSDRAM106から読み込む。
ステップS730では、変数a、b、cにそれぞれ1を加算する。
ステップS735では、変数a,b,cのうち、いずれかの変数の値が3になったかを判定する。変数a,b,cのいずれも3ではないと判定するとステップS755に進み、いずれかの変数が3になったと判定すると、ステップS740に進む。
ステップS740では、値が3になった変数を0にセットする。例えば、変数a=3となった場合には、変数a=0とする。
ステップS745では、直近に得られた2つの短露光画像データを用いて、中間画像データ(短露光画像データ)を生成する。
ステップS750では、直近に得られた長露光画像データと、ステップS745で生成された中間画像データ(短露光画像データ)とを合成することによって、合成画像データを生成する。このとき、長露光画像データと中間画像データとの間の位置ずれを補正し、位置ずれ補正後の画像データを用いて合成画像データを生成することが好ましい。合成画像データを生成すると、ステップS795に進む。
一方、ステップS710において、フラグk=0であると判定するとステップS755に進む。ステップS755では、長露光での撮影を行うためのAF処理およびAE処理を行う。具体的には、まず、AF処理部109において、合焦評価値を算出する。マイクロコンピュータ115は、合焦評価値に基づいて、レンズ1010を駆動させる指令をドライバ1013に出す。ドライバ1013は、この指令に基づいて、レンズ1010を駆動させて、焦点距離やフォーカス位置の変更を行う。AE処理では、AE処理部108において、被写体輝度を算出し、算出した被写体輝度に基づいて、Flashメモリ117に記憶されている露出条件決定テーブルを参照することにより、撮影時のISO感度、絞り、およびシャッター速を決定する。ただし、ステップS755の処理で用いる露出条件決定テーブルでは、被写体輝度に応じた標準のシャッター速よりも遅いシャッター速が定められている。
ステップS760では、ステップS755で決定したISO感度、絞り、およびシャッター速で、設定されている撮影モード(静止画モード、動画モード、ライブビューモード)に応じた撮影を行う。ドライバ1013は、マイクロコンピュータ1012の指示に基づいて、決定された絞り値になるように絞り1014を駆動させる。そして、決定したシャッター速に基づいて撮影を行い、決定したISO感度に応じた画像データを得る。上述したように、ステップS755で求めたシャッター速は、被写体輝度に応じた標準のシャッター速よりも遅いため、被写体輝度に応じた標準露光時間よりも長い露光時間での撮影が行われる。
ステップS765では、ステップS760の撮影により得られた画像データ(RAWデータ)をSDRAM106から読み込む。
ステップS770では、変数a、b、cにそれぞれ1を加算する。
ステップS775では、変数a,b,cのうち、いずれかの変数の値が3になったかを判定する。変数a,b,cのいずれも3ではないと判定するとステップS715に進み、いずれかの変数が3になったと判定すると、ステップS780に進む。
ステップS780では、値が3になった変数を0にセットする。
ステップS785では、直近に得られた2つの長露光画像データを用いて、中間画像データ(長露光画像データ)を生成する。
ステップS790では、ステップS785で生成された中間画像データ(長露光画像データ)と、直近に得られた短露光画像データとを合成することによって、合成画像データを生成する。このとき、中間画像データと短露光画像データとの間の位置ずれを補正し、位置ずれ補正後の画像データを用いて合成画像データを生成することが好ましい。合成画像データを生成すると、ステップS795に進む。
ステップS795では、撮影が終了か否かを判定する。撮影が終了ではないと判定するとステップS797に進む。ステップS797では、フラグkを反転させる。すなわち、フラグkが1の場合には0とし、フラグkが0の場合には1とする。フラグkを反転させると、ステップS710に戻る。
一方、ステップS795において、撮影が終了であると判定すると、本フローチャートの処理を終了する。
図8は、図6に示すフローチャートのステップS80の処理、すなわち、上記合成方法(A)の合成処理の詳細な処理内容を示すフローチャートである。
ステップS800では、変数a、bをそれぞれ、a=0、b=−1に設定する。
ステップS805では、Flashメモリ117からフラグkを読み出す。フラグkは、長露光での撮影を行うか短露光での撮影を行うかを判断するためのフラグであり、k=0の場合に、長露光での撮影を行い、k=1の場合に、短露光での撮影を行う。Flashメモリ117には、予め設定された値のフラグkが格納されている。
ステップS810では、フラグkが1に設定されているか否かを判定する。k=1であると判定するとステップS815に進み、k=0であると判定するとステップS845に進む。ステップS815では、短露光での撮影を行うためのAF処理およびAE処理を行う。この処理は、図7に示すフローチャートのステップS715の処理と同じである。
ステップS820では、ステップS815で決定したISO感度、絞り、およびシャッター速で、設定されている撮影モード(静止画モード、動画モード、ライブビューモード)に応じた撮影を行う。この処理は、図7に示すフローチャートのステップS720の処理と同じであり、被写体輝度に応じた標準露光時間よりも短い露光時間での撮影が行われる。
ステップS825では、ステップS820の撮影により得られた画像データ(RAWデータ)をSDRAM106から読み込む。
ステップS830では、変数a、bにそれぞれ1を加算する。
ステップS835では、変数a,bのうち、いずれか一方の変数の値が2になったかを判定する。変数a,bのいずれも2ではないと判定するとステップS840に進み、いずれか一方の変数が2であると判定すると、ステップS875に進む。
ステップS840では、フラグkを反転させて、ステップS845に進む。
ステップS845では、長露光での撮影を行うためのAF処理およびAE処理を行う。この処理は、図7に示すフローチャートのステップS755の処理と同じである。
ステップS850では、ステップS845で決定したISO感度、絞り、およびシャッター速で、設定されている撮影モード(静止画モード、動画モード、ライブビューモード)に応じた撮影を行う。この処理は、図7に示すフローチャートのステップS760の処理と同じであり、被写体輝度に応じた標準露光時間よりも長い露光時間での撮影が行われる。
ステップS855では、ステップS850の撮影により得られた画像データ(RAWデータ)をSDRAM106から読み込む。
ステップS860では、変数a、bにそれぞれ1を加算する。
ステップS865では、変数a,bのうち、いずれか一方の変数の値が2になったかを判定する。変数a,bのいずれも2ではないと判定するとステップS870に進み、いずれか一方の変数が2であると判定すると、ステップS875に進む。
ステップS870では、フラグkを反転させて、ステップS815に進む。
ステップS875では、値が2になった変数を0にセットする。例えば、変数a=2となった場合には、変数a=0とする。
ステップS880では、直近に得られた長露光画像データと、直近に得られた短露光画像データとを互い違いに合成することによって、合成画像データを生成する(図2参照)。このとき、長露光画像データと短露光画像データとの間の位置ずれを補正し、位置ずれ補正後の画像データを用いて合成画像データを生成することが好ましい。合成画像データを生成すると、ステップS885に進む。
ステップS885では、撮影が終了か否かを判定する。撮影が終了ではないと判定するとステップS890に進む。ステップS890では、フラグkを反転させて、ステップS810に戻る。
一方、ステップS885において撮影が終了であると判定すると、本フローチャートの処理を終了する。
図9は、図6に示すフローチャートのステップS90の処理、すなわち、上記合成方法(B)の合成処理の詳細な処理内容を示すフローチャートである。
ステップS900では、変数aを0に設定する。
ステップS905では、Flashメモリ117からフラグkを読み出す。フラグkは、長露光での撮影を行うか短露光での撮影を行うかを判断するためのフラグであり、k=0の場合に、長露光での撮影を行い、k=1の場合に、短露光での撮影を行う。Flashメモリ117には、予め設定された値のフラグkが格納されている。
ステップS910では、フラグkが1に設定されているか否かを判定する。k=1であると判定するとステップS915に進み、k=0であると判定するとステップS945に進む。ステップS915では、短露光での撮影を行うためのAF処理およびAE処理を行う。この処理は、図7に示すフローチャートのステップS715の処理と同じである。
ステップS920では、ステップS915で決定したISO感度、絞り、およびシャッター速で、設定されている撮影モード(静止画モード、動画モード、ライブビューモード)に応じた撮影を行う。この処理は、図7に示すフローチャートのステップS720の処理と同じであり、被写体輝度に応じた標準露光時間よりも短い露光時間での撮影が行われる。
ステップS925では、ステップS920の撮影により得られた画像データ(RAWデータ)をSDRAM106から読み込む。
ステップS930では、変数aに1を加算する。
ステップS935では、変数a=2であるかを判定する。変数aが2ではないと判定するとステップS940に進み、変数a=2であると判定すると、ステップS975に進む。
ステップS940では、フラグkを反転させて、ステップS945に進む。
ステップS945では、長露光での撮影を行うためのAF処理およびAE処理を行う。この処理は、図7に示すフローチャートのステップS755の処理と同じである。
ステップS950では、ステップS945で決定したISO感度、絞り、およびシャッター速で、設定されている撮影モード(静止画モード、動画モード、ライブビューモード)に応じた撮影を行う。この処理は、図7に示すフローチャートのステップS760の処理と同じであり、被写体輝度に応じた標準露光時間よりも長い露光時間での撮影が行われる。
ステップS955では、ステップS950の撮影により得られた画像データ(RAWデータ)をSDRAM106から読み込む。
ステップS960では、変数aに1を加算する。
ステップS965では、変数a=2であるかを判定する。変数aが2ではないと判定するとステップS970に進み、変数a=2であると判定すると、ステップS975に進む。
ステップS970では、フラグkを反転させて、ステップS915に進む。
ステップS975では、変数aを0にセットする。
ステップS980では、直近に得られた長露光画像データと、直近に得られた短露光画像データとを同じ組み合わせで合成することによって、合成画像データを生成する(図3参照)。このとき、長露光画像データと短露光画像データとの間の位置ずれを補正し、位置ずれ補正後の画像データを用いて合成画像データを生成することが好ましい。合成画像データを生成すると、ステップS985に進む。
ステップS985では、撮影が終了か否かを判定する。撮影が終了ではないと判定するとステップS990に進む。ステップS990では、フラグkを反転させて、ステップS910に戻る。
一方、ステップS985において撮影が終了であると判定すると、本フローチャートの処理を終了する。
以上、第1の実施形態における撮像装置によれば、露光時間の異なる複数の画像を合成して合成画像を生成する撮像装置であって、複数の画像を撮像する際のフレームレートに応じて、合成する画像の組み合わせを設定し、設定した組み合わせにて、複数の画像を合成して、合成画像を生成する。これにより、フレームレートに応じた適切な組み合わせにて、複数の画像を合成して合成画像を生成することができるので、フレームレートに関わらず、合成画像を自然に(滑らかに)表示することができる。
特に、第1の実施形態における撮像装置によれば、フレームレートが第1の閾値TH2以上の場合には、露光時間の長い画像と露光時間の短い画像とが常に同じ順序で合成されるように組み合わせを設定し、フレームレートが第1の閾値TH2より低く、かつ、第2の閾値TH1(TH1<TH2)以上の場合には、露光時間の長い画像と露光時間の短い画像とを撮像により得られた順序で合成されるように組み合わせを設定する。また、露光時間の長い画像を対象として、第1の時間に得られた第1の画像、および、第1の時間よりも後の第2の時間に得られた第2の画像に基づいて、第1の時間および第2の時間の間である第3の時間に得られたと想定される第3の画像(中間画像)を生成するとともに、露光時間の短い画像を対象として、第4の時間に得られた第4の画像、および、第4の時間よりも後の第5の時間に得られた第5の画像に基づいて、第4の時間および第5の時間の間である第6の時間に得られたと想定される第6の画像(中間画像)を生成する。そして、フレームレートが第2の閾値TH1より低い場合には、生成された中間画像と、露光時間の長い画像および露光時間の短い画像のうちの一方の画像とが常に同じ順序で合成されるように組み合わせを設定する。これにより、フレームレートに応じた適切な組み合わせにて、露光時間の長い画像と露光時間の短い画像とを合成し、合成により得られた画像を自然に表示することができる。
−第2の実施形態−
第1の実施形態における撮像装置では、撮影時のフレームレートに応じて、複数の画像を合成する際の合成方法、特に、合成に用いる画像の組み合わせを変更した。第2の実施形態における撮像装置では、さらに、撮影時のフレームレートに応じて、複数の画像間の位置ずれを検出する方法および合成方法を変更する。
図10は、第2の実施形態における動きベクトル算出部119の詳細な構成を示すブロック図である。動きベクトル算出部119は、評価フレーム取得部150と、輝度信号抽出部151と、評価フレーム領域設定部152と、比較フレーム取得部153と、輝度信号抽出部154と、比較フレーム領域設定部155と、フレーム間相関処理部156と、信頼度判定部157と、領域別動きベクトル算出部158と、フレーム全体動きベクトル算出部159と、局所動きベクトル算出部160とを備える。
SDRAM106には、連続的に撮影された少なくとも2つの画像データが格納されている。この画像データは、上述したように、短露光画像データと、長露光画像データである。評価フレーム取得部150は、SDRAM106に格納されている2つの画像データから、動きベクトルを算出する際に基準とする画像データを読み出す。基準とする画像データは、2つの画像データのうち、いずれの画像データでもよい。ここでは、基準とする画像データを評価フレームと呼ぶ。
輝度信号抽出部151は、評価フレーム取得部150で取得された評価フレームの輝度信号を抽出する。
評価フレーム領域設定部152は、評価フレーム取得部150で取得された評価フレームを所定の大きさのブロックに分割し、分割した複数のブロック内において、所定の大きさの領域を、動きベクトル算出領域に設定する。
図11(a)は、評価フレーム領域設定部152によって複数のブロック162に分割された評価フレーム161の一例を示す図である。また、図11(c)は、評価フレーム領域設定部152によって、1つのブロック162内に設定された動きベクトル算出領域165の一例を示す図である。動きベクトル算出領域165は、評価フレーム内の全てのブロック162に対して設定する。
比較フレーム取得部153は、SDRAM106に格納されている複数の画像データから、評価フレームと比較する画像データを読み出す。この画像データは、評価フレームと合成するための画像データである。ここでは、評価フレームと比較する画像データを比較フレームと呼ぶ。
輝度信号抽出部154は、比較フレーム取得部153で取得された比較フレームの輝度信号を抽出する。
比較フレーム領域設定部155は、比較フレーム取得部153で取得された比較フレームを所定の大きさのブロックに分割するとともに、分割したブロックそのものを、動きベクトル算出領域と比較する比較領域に設定する。比較フレームを分割するブロックの大きさは、評価フレームを分割するブロックの大きさと同じとする。
図11(b)は、比較フレーム領域設定部155によって複数のブロック164に分割された比較フレーム163の一例を示す図であり、図11(d)は、比較領域164を示す図である。
フレーム間相関処理部156は、評価フレーム161の各ブロック162ごとに、比較フレーム163との間の相関を求める。ここでは、評価フレーム161のブロック162内に設定した動きベクトル算出領域165を、そのブロック162と対応する位置に存在する、比較フレーム163の比較領域164内で走査しながら相関係数値を演算する。図11(e)は、動きベクトル算出領域165を、比較フレーム163の比較領域164内で走査する様子を示す図である。相関係数値として、例えば、動きベクトル算出領域165内における各画素の画素値と、比較領域164内で動きベクトル算出領域165と比較する領域の各画素の画素値との差分の絶対値和である誤差絶対値和SAD(Sum of Absolute intensity Difference)を求める。SADが小さいほど、相関関係が高く、SADが大きいほど、相関関係が低い。
領域別動きベクトル算出部158は、フレーム間相関処理部156で演算された相関係数値のうち、最も値が小さい領域を、動きベクトル算出領域165の移動先の領域と判断して、その移動量を、動きベクトル算出領域165が含まれるブロック162の動きベクトルとする。図11(f)は、比較領域164内において、動きベクトル算出領域165に対応する領域166から、相関係数値が最も小さい領域167に向かう動きベクトル168の一例を示す図である。
上述した動きベクトルの算出は、評価フレーム領域設定部152で分割した全てのブロックに対して行う。図11(g)は、全てのブロックに対して算出された動きベクトルの一例を示す図である。
信頼度判定部157は、領域別動きベクトル算出部158で算出された各ブロックの動きベクトルの信頼度を判定する。例えば、動きベクトルを求める際に算出した相関係数値が所定のしきい値以上の場合には、その動きベクトルの信頼度は低いと判定し、相関係数値が所定のしきい値未満の場合には、その動きベクトルの信頼度は高いと判定する。なお、信頼度の判定方法は、上述した方法に限定されることはなく、また、信頼度を2段階ではなく、3段階以上で判定してもよい。
フレーム全体動きベクトル算出部159は、領域別動きベクトル算出部158で算出された各ブロックの動きベクトルと、信頼度判定部157で判定された信頼度に基づいて、フレーム全体の動きベクトルを算出する。ここでは、全てのブロック162の動きベクトルのうち、信頼度が低いと判定された動きベクトルを除外した他の動きベクトルの平均ベクトルを、フレーム全体の動きベクトルとする。図11(h)は、フレーム全体の動きベクトル168の一例を示す図である。
なお、信頼度が低いと判定された動きベクトルの重みを低く、信頼度が高いと判定された動きベクトルの重みを高くして、全ての動きベクトルの重み付き加算平均演算を行い、演算によって得られた動きベクトルを、フレーム全体の動きベクトルとしてもよい。
また、全てのブロック162の動きベクトルのうち、信頼度が低いと判定された動きベクトルを除外した他の動きベクトルを用いてヒストグラムを作成し、最も頻度の高い動きベクトルをフレーム全体の動きベクトルとしても構わない。
局所動きベクトル算出部160は、領域別動きベクトル算出部158で算出された各ブロックの動きベクトルに基づいて、例えば、Cubic補間などの方法を用いて、各画素の動きベクトルを算出する。同様に、各画素の相関係数Kについても動きベクトル同様に算出する。本実施形態におけるCubic補間では、処理対象である注目画素の近傍に位置する16個の動きベクトルを用いて、注目画素の動きベクトルを算出する。
図12は、注目画素170の近傍に位置する16個の動きベクトルB0〜B15の一例を示す図である。注目画素170の動きベクトルBoutは、次式(1)の補間演算によって求められる。ただし、式(1)において、Kx0、Kx1、Kx2、Kx3、Ky0、Ky1、Ky2、Ky3は、注目画素170の位置座標に応じて定まる補間係数である。
Bout=Kx0(Ky0×B0+Ky1×B4+Ky2×B8+Ky3×B12)+Kx1(Ky0×B1+Ky1×B5+Ky2×B9+Ky3×B13)+Kx2(Ky0×B2+Ky1×B6+Ky2×B10+Ky3×B14)+Kx3(Ky0×B3+Ky1×B7+Ky2×B11+Ky3×B15) (1)
局所動きベクトル算出部160は、評価フレーム161の全ての画素について、上述した方法により、動きベクトルと相関係数値Kを算出する。ここでは、各画素の動きベクトルを総称して、局所動きベクトルと呼ぶ。局所動きベクトルの算出では、評価フレーム161の全ての画素に対して動きベクトルを算出する必要があるため、フレーム全体の動きベクトルを算出する場合に比べて、処理時間が長くなる。ただし、局所動きベクトルの算出精度は、フレーム全体の動きベクトルの算出精度よりも高い。
第2の実施形態における撮像装置によって行われる撮像処理では、図6に示すフローチャートの処理のうち、ステップS60、ステップS80、ステップS90で行われる処理の内容が異なる。ここでは、第1の実施形態で行われる処理と区別するために、ステップS60A、ステップS80A、ステップS90Aと呼ぶ。
図13は、第2の実施形態における撮像装置において、図6に示すフローチャートのステップS50でフレームレートFRが閾値TH1より低いと判定した後に行う処理、すなわち、ステップS60Aの処理内容を示すフローチャートである。このフローチャートは、合成方法(C)の合成処理の詳細な処理内容を示しており、図7に示すフローチャートに対応するものである。図13に示すフローチャートにおいて、図7に示すフローチャートの処理と同一の処理を行うステップについては、同一の符号を付して詳しい説明は省略する。
図13に示すフローチャートが図7に示すフローチャートと異なるのは、ステップS1300およびS1320の処理が追加されていることと、ステップS1310およびステップS1330の合成処理の内容である。
ステップS745に続くステップS1300では、直近に得られた長露光画像データと、ステップS745で生成された中間画像データ(短露光画像データ)との間の局所動きベクトルを算出する。局所動きベクトルの算出は、動きベクトル算出部119の局所動きベクトル算出部160によって行われる。
ステップS1310では、ステップS1300で算出した局所動きベクトルに基づいて、直近に得られた長露光画像データとステップS745で生成された中間画像データとの間の位置ずれを補正した後、位置ずれ補正後の長露光画像データおよび中間画像データを、それぞれの重みに応じた合成比率で合成する重み付き合成を行う。局所動きベクトルに基づいて位置ずれを補正してから、画像データを合成する処理の詳細については、図14に示すフローチャートを用いて説明する。
なお、図14に示すフローチャートでは、説明の便宜上、合成対象の2つの画像データをそれぞれ、第1の画像データ、第2の画像データと呼ぶ。第1の画像データは、長露光画像データであり、第2の画像データは、中間画像データである。
図14に示すフローチャートのステップS1400では、処理対象画素の位置座標を示すパラメータi,jをそれぞれ0に初期化する。パラメータiは、画像データのx軸方向の位置座標を表し、パラメータjは、y軸方向の位置座標を表す。
ステップS1410では、画素(i,j)の動きベクトル(x,y)を取得する。例えば、動きベクトル算出部119の局所動きベクトル算出部160によって算出された各画素の動きベクトルをSDRAM106に記憶させておき、SDRAM106から、画素(i,j)の動きベクトル(x,y)を読み込む。
ステップS1420では、第1の画像データから、画素(i,j)の画素値を読み込む。
ステップS1430では、第2の画像データにおいて、画素(i,j)を動きベクトル(x、y)だけずらした画素(i+x,j+y)が第2の画像データ上に存在するか否かを判定する。画素(i+x,j+y)が第2の画像データ上に存在すると判定すると、ステップS1440に進み、存在しないと判定すると、ステップS1450に進む。
ステップS1440では、第2の画像データから、画素(i+x,j+y)の画素値を読み込む。
一方、ステップS1450では、第1の画像データの画素(i,j)の画素値を、第2の画像データの画素(i+x,j+y)の画素値として設定する。
ステップS1460では、第1の画像データの画素(i,j)と、第2の画像データの画素(i+x,j+y)とを合成する。上述したように、図13に示すフローチャートのステップS1310では、重み付き合成を行う。重み付き合成の詳細な処理を図15に示すフローチャートを用いて説明する。
図15に示すフローチャートのステップS1510では、処理対象画素(i,j)の相関係数値Kを取得する。
ステップS1520では、ステップS1510で取得した相関係数値Kに基づいて、合成比αを算出する。
図16は、相関係数値Kと合成比αとの関係を示す図である。図16において、THは所定のしきい値であり、K_maxは相関係数値Kとして取り得る最大値である。図16に示すように、相関係数値Kが所定のしきい値TH以下の場合には、合成比αは0.5であり、相関係数値Kが所定のしきい値THよりも大きくなると、合成比αも0.5より大きくなる。ただし、第2の画像データの画素値が(0,0)の場合には、相関係数値Kによらず合成比αを1.0とする。Flashメモリ117には、相関係数値Kと合成比αとの関係を定めたテーブルが格納されており、このテーブルを参照することによって、合成比αを算出する。
ステップS1530では、次式(2)によって、第1の画像データの画素(i,j)と、第2の画像データの画素(i+x,j+y)とを合成する。ただし、Aは、第1の画像データの画素(i,j)の画素値、Bは第2の画像データの画素(i+x,j+y)の画素値、Cは、合成後の画素の画素値である。
C=α×A+(1−α)×B (2)
図16および式(2)から分かるように、第1の画像データの画素(i,j)と、第2の画像データの画素(i+x,j+y)との間の相関が高く、相関係数値Kが所定のしきい値TH以下の場合には、同一の合成比(合成比α=0.5)で合成する単純合成処理が行われる。一方、相関係数値Kが所定のしきい値THより大きくなると、第1の画像データの画素(i,j)を合成する比重を大きくして、第2の画像データの画素(i+x,j+y)の影響を小さくする。
図17は、第1の画像データと第2の画像データとの間の位置ずれを補正した後でも、画像中の自動車の像の位置ずれが残っている状態で、合成処理を行った場合の合成画像の例を示す図である。図17(a)は、合成比α=0.5で単純合成を行った場合の結果、図17(b)は、0.5より大きい合成比αで重み付き合成を行った場合の結果、図17(c)は、合成比α=1で合成した場合の結果である。図17(a)と図17(b)とを比較して分かるように、0.5より大きい合成比αで重み付き合成を行った場合には、単純合成を行った場合に比べて、像ブレが軽減される。また、合成比αを1にした場合には、第1の画像データだけが用いられることになり、像ブレは無くなる。
図13に示すフローチャートに戻って説明を続ける。ステップS785に続くステップS1320では、ステップS785で生成された中間画像データ(長露光画像データ)と、直近に得られた短露光画像データとの間の局所動きベクトルを算出する。
ステップS1330では、ステップS1320で算出した局所動きベクトルに基づいて、ステップS785で生成された中間画像データ(長露光画像データ)と、直近に得られた短露光画像データとの間の位置ずれを補正した後、位置ずれ補正後の中間画像データおよび短露光画像データを、それぞれの重みに応じた合成比率で合成する重み付き合成を行う。この処理は、ステップS1310の処理と同じである。
図18は、第2の実施形態における撮像装置において、図6に示すフローチャートのステップS70でフレームレートFRが閾値TH2より低いと判定した後に行う処理、すなわち、ステップS80Aの処理内容を示すフローチャートである。このフローチャートは、合成方法(A)の合成処理の詳細な処理内容を示しており、図8に示すフローチャートに対応するものである。図18に示すフローチャートにおいて、図8に示すフローチャートの処理と同一の処理を行うステップについては、同一の符号を付して詳しい説明は省略する。
図18に示すフローチャートが図8に示すフローチャートと異なるのは、ステップS1800の処理が追加されていることと、ステップS1810の合成処理の内容である。
ステップS875に続くステップS1800では、長露光画像データと短露光画像データとの間のフレーム全体の動きベクトルを算出する。フレーム全体の動きベクトルの算出は、動きベクトル算出部119のフレーム全体動きベクトル算出部159によって行われる。
ステップS1810では、ステップS1800で算出したフレーム全体の動きベクトルに基づいて、長露光画像データと短露光画像データとの間の位置ずれを補正した後、位置ずれ補正後の長露光画像データおよび短露光画像データを、同一の合成比(合成比α=0.5)で合成する単純合成処理を行う。フレーム全体の動きベクトルに基づいて位置ずれを補正してから、画像データを合成する処理の詳細については、図19に示すフローチャートを用いて説明する。
なお、図19に示すフローチャートでも、説明の便宜上、合成対象の2つの画像データをそれぞれ、第1の画像データ、第2の画像データと呼ぶ。長露光画像データと短露光画像データとを合成する場合、第1の画像データは、長露光画像データであり、第2の画像データは、短露光画像データである。また、短露光画像データと長露光画像データとを合成する場合、第1の画像データは、短露光画像データであり、第2の画像データは、長露光画像データである。
図19に示すフローチャートにおいて、図14に示すフローチャートの処理と同一の処理を行うステップについては、同一の符号を付して詳しい説明は省略する。
ステップS1900では、フレーム全体の動きベクトル(x,y)を取得して、ステップS1400に進む。例えば、動きベクトル算出部119のフレーム全体動きベクトル算出部159によって算出されたフレーム全体の動きベクトルをSDRAM106に記憶させておき、SDRAM106から、フレーム全体の動きベクトル(x,y)を読み込む。
ステップS1400では、処理対象画素の位置座標を示すパラメータi,jをそれぞれ0に初期化して、ステップS1420に進む。ステップS1420以後の処理は、図14に示すフローチャートと同じである。ただし、ステップS1460では、合成比α=0.5で第1の画像データと第2の画像データとを合成する。
図20は、第2の実施形態における撮像装置において、図6に示すフローチャートのステップS70でフレームレートFRが閾値TH2以上であると判定した後に行う処理、すなわち、ステップS90Aの処理内容を示すフローチャートである。このフローチャートは、合成方法(B)の合成処理の詳細な処理内容を示しており、図9に示すフローチャートに対応するものである。図20に示すフローチャートにおいて、図9に示すフローチャートの処理と同一の処理を行うステップについては、同一の符号を付して詳しい説明は省略する。
図20に示すフローチャートが図8に示すフローチャートと異なるのは、ステップS2000の合成処理の内容である。すなわち、ステップS2000では、長露光画像データと短露光画像データとを同一の合成比(合成比α=0.5)で合成する単純合成処理を行う。
以上、第2の実施形態における撮像装置によれば、撮像時のフレームレートに応じて、合成する画像の組み合わせを設定するとともに、フレームレートに応じて、位置ずれ検出方法を決定する。これにより、フレームレートに応じた適切な位置ずれ検出方法にて、長露光画像および短露光画像の位置ずれを検出し、検出した位置ずれに基づいて、長露光画像および短露光画像間の位置ずれを補正することができる。
特に、第2の実施形態における撮像装置によれば、フレームレートが第2の閾値TH1より低い場合には、検出精度の高い第1の位置ずれ検出方法を選択し、フレームレートが第2の閾値TH1以上であって、かつ、第1の閾値TH2より低い場合には、第1の位置ずれ検出方法よりも検出精度の低い第2の位置ずれ検出方法を選択する。また、フレームレートが第1の閾値TH2以上の場合には、位置ずれ検出を行わない。これにより、フレームレートが第2の閾値TH1より低い場合には、画像間の位置ずれが大きいことが予想されるため、検出精度の高い位置ずれ検出方法にて位置ずれ検出を行って、合成画像の像ブレを抑制することができる。また、フレームレートが第2の閾値TH1以上であって、かつ、第1の閾値TH2より低い場合には、画像間の位置ずれがそれ程大きくないことが予想されるため、処理負荷の小さい位置ずれ検出方法にて位置ずれ検出を行って、処理負荷を軽減することができる。さらに、フレームレートが第1の閾値TH2以上の場合には、画像間の位置ずれが小さいことが予想されるため、位置ずれ検出を行わないで、処理負荷をさらに軽減することができる。
−第3の実施形態−
第2の実施形態における撮像装置では、撮影時のフレームレートに応じて、複数の画像間の位置ずれを検出する方法および合成方法を変更して、像ブレの少ない合成画像を生成するようにした。ここで、合成画像の像ブレ量は、撮影時のフレームレートだけでなく、焦点距離にも依存する。従って、第3の実施形態における撮像装置では、撮影時のレンズの焦点距離も考慮して、複数の画像間の位置ずれを検出する方法および合成方法を変更する。
図21は、第3の実施形態における撮像装置であるデジタルスチルカメラによって行われる撮像処理の手順を示すフローチャートである。図6に示すフローチャートの処理と同一の処理を行うステップについては、同一の符号を付して詳しい説明は省略する。
ステップS40に続くステップS2100では、撮影時の焦点距離fのデータを取得する。例えば、Flashメモリ1011に撮影時の焦点距離fのデータを格納しておき、Flashメモリ1011から焦点距離fのデータを読み出す。
ステップS2110では、ステップS2100で取得した焦点距離fに応じた閾値シフト量thf1,thf2を読み出す。Flashメモリ117には、焦点距離fと閾値シフト量thf1,thf2との関係を定めたテーブルが格納されており、このテーブルを参照することによって、ステップS2100で取得した焦点距離fに応じた閾値シフト量thf1,thf2を読み出す。
なお、焦点距離fが短いほど、閾値シフト量thf1,thf2は小さく、また、焦点距離fが長いほど、閾値シフト量thf1,thf2は大きくなるように、焦点距離fと閾値シフト量thf1,thf2との関係は定められている。
ステップS2120では、ステップS30で算出したフレームレートFRがステップS40で読み出した閾値TH1とステップS2110で読み出した閾値シフト量thf1とを加算した値より低いかを判定する。フレームレートFRが(TH1+thf1)よりも低いと判定するとステップS60Aに進み、フレームレートFRが(TH1+thf1)以上であると判定すると、ステップS2130に進む。
ステップS2130では、ステップS30で算出したフレームレートFRがステップS40で読み出した閾値TH2とステップS2110で読み出した閾値シフト量thf2とを加算した値より低いかを判定する。フレームレートFRが(TH2+thf2)よりも低いと判定するとステップS80Aに進み、フレームレートFRが(TH2+thf2)以上であると判定すると、ステップS90Aに進む。
ステップS60A、ステップS80A、および、ステップS90Aで行われる処理はそれぞれ、第2の実施形態で行われる処理と同じである。
以上、第3の実施形態における撮像装置によれば、撮像時の焦点距離を取得し、取得した焦点距離に基づいて、第1の閾値TH2および第2の閾値TH1を補正する。これにより、フレームレートだけでなく焦点距離も考慮して、最適な位置ずれ検出方法を決定することができる。例えば、焦点距離が長くなると、手ブレの影響が大きくなるため、検出精度の高い位置ずれ検出方法により位置ずれ検出を行って、合成画像の像ブレを抑制することができる。
−第4の実施形態−
第2の実施形態における撮像装置では、撮影時のフレームレートFRと閾値TH1、TH2との比較結果に応じて、複数の画像間の位置ずれを検出する方法および合成方法を変更して、像ブレの少ない合成画像を生成するようにした。第4の実施形態における撮像装置では、撮影モード(静止画、動画、ライブビュー)に応じた閾値TH1、TH2を設定して、撮影時のフレームレートFRと比較する。
第4の実施形態における撮像装置において、Flashメモリ117には、静止画撮影モードに応じた閾値TH_still1、TH_still2、動画撮影モードに応じた閾値TH_mov1、TH_mov2、ライブビュー撮影モードに応じた閾値TH_lv1、TH_lv2が格納されている。各閾値の間には、TH_still1>TH_mov1>TH_lv1、および、TH_still2>TH_mov2>TH_lv2の関係が成り立つ。各閾値は、撮影モードごとに適切な値を予め求めておく。
図22は、第4の実施形態における撮像装置であるデジタルスチルカメラによって行われる撮像処理の手順を示すフローチャートである。図6に示すフローチャートの処理と同一の処理を行うステップについては、同一の符号を付して詳しい説明は省略する。
ステップS30に続くステップS2200では、撮影モードが静止画撮影モード、動画撮影モード、ライブビュー撮影モードのうちのいずれであるかを判定する。撮影モードが静止画撮影モードであると判定すると、ステップS2210に進み、動画撮影モードであると判定すると、ステップS2220に進み、ライブビュー撮影モードであると判定すると、ステップS2230に進む。
ステップS2210では、静止画撮影モードに応じた閾値TH_still1、TH_still2をFlashメモリ117から読み出して、ステップS2240に進む。
ステップS2220では、動画撮影モードに応じた閾値TH_mov1、TH_mov2をFlashメモリ117から読み出して、ステップS2240に進む。
ステップS2230では、ライブビュー撮影モードに応じた閾値TH_lv1、TH_lv2をFlashメモリ117から読み出して、ステップS2240に進む。
ステップS2240では、ステップS2210、ステップS2220、または、ステップS2230で読み出した閾値に基づいて、フレームレートFRと比較する閾値TH1、TH2を設定する。具体的には、閾値の最後の数字がそれぞれ一致するように、閾値TH1、TH2を設定する。例えば、ステップS2230で閾値TH_lv1、TH_lv2を読み出した場合には、TH1=TH_lv1、TH2=TH_lv2とする。
ステップS50以後の処理は、第2の実施形態で行われる処理と同じである。
以上、第4の実施形態における撮像装置によれば、静止画撮影モード、動画撮影モード、ライブビュー撮影モードのそれぞれの撮像モードに応じて、フレームレートFRと比較する閾値を設定する。これにより、撮像モードごとに、フレームレートに応じた適切な位置ずれ検出方法および合成方法を決定することができる。
なお、上述した第1〜第3の実施形態の説明では、撮像装置が行う処理としてハードウェアによる処理を前提としていたが、このような構成に限定される必要はない。例えば、別途ソフトウェアにて処理する構成も可能である。この場合、撮像装置は、CPU、RAM等の主記憶装置、上記処理の全て或いは一部を実現させるためのプログラムが記憶されたコンピュータ読み取り可能な記憶媒体を備えている。ここでは、このプログラムを撮像プログラムと呼ぶ。そして、CPUが上記記憶媒体に記憶されている撮像プログラムを読み出して、情報の加工・演算処理を実行することにより、上述の撮像装置と同様の処理を実現させる。
ここで、コンピュータ読み取り可能な記録媒体とは、磁気ディスク、光磁気ディスク、CD−ROM、DVD−ROM、半導体メモリ等をいう。また、この撮像プログラムを通信回線によってコンピュータに配信し、この配信を受けたコンピュータが当該撮像プログラムを実行するようにしても良い。
本発明は、上述した第1〜第4の実施形態に限定されるものではなく、本発明の要旨を逸脱しない範囲内で様々な変形や応用が可能である。例えば、第1の実施形態における撮像装置では、フレームレートFRを2つの閾値TH1、TH2と比較したが、1つの閾値THと比較するようにしてもよい。この場合、フレームレートFRが閾値THより低い場合には、露光時間の長い画像と露光時間の短い画像とを撮像により得られた順序で互い違いに合成するようにし、フレームレートFRが閾値TH以上の場合には、露光時間の長い画像と露光時間の短い画像とを常に同じ順序で合成するようにすればよい。
第2の実施形態において、位置ずれの検出方法を決定するためにフレームレートFRと比較する閾値TH1、TH2を、合成する画像の組み合わせを決定するためにフレームレートFRと比較する閾値TH1、TH2と同じとしたが、異なる閾値を設定するようにしてもよい。同様に、第3および第4の実施形態において、位置ずれの検出方法を決定するためにフレームレートFRと比較する閾値を、合成する画像の組み合わせを決定するためにフレームレートFRと比較する閾値と異なる値に設定してもよい。
また、第3の実施形態では、撮像時の焦点距離fに応じて、閾値TH1、TH2を補正するための閾値シフト量thf1,thf2を求めたが、撮像時のフレームレートFRおよび焦点距離fと閾値との関係を定めたテーブルを予め用意しておいて、撮像時のフレームレートFRおよび焦点距離fに応じた閾値を求めるようにしてもよい。