<第1実施形態>
図1は、本発明のデジタルカメラ1の構成を示す概略ブロック図である。デジタルカメラ1は、撮影により取得した画像データを、Exif形式の画像ファイルに変換して、本体に着脱可能な外部記録メディアなどの記録部70へ記録するものである。
このデジタルカメラの操作系としては、動作モードスイッチ、メニュー/OKボタン、ズーム/上下矢印レバー、左右矢印ボタン、Back(戻る)ボタン、表示切替ボタン、レリーズボタン、電源スイッチなどを含む操作部11と、操作部11への操作内容を解釈して各部を制御する制御回路74とを有している。制御回路74は、情報処理を行うCPU75、情報処理を規定したプログラム、ファームウェア、プログラムでの各種判定に用いる閾値その他の定数などを記録したROM68、情報処理に必要な変数やデータなどを格納するRAM69を備えている。
レンズ20は、フォーカスレンズおよびズームレンズを有している。レンズ20は、レンズ駆動部51によって光軸方向に移動可能である。レンズ駆動部51はCPU75から出力されるフォーカス駆動量データ、あるいは、操作部11に含まれるズーム/上下矢印レバーの操作量データに基づいて、フォーカスレンズあるいはズームレンズの移動を制御する。
また、絞り54は、モータとモータドライバとからなる絞り駆動部55によって駆動される。この絞り駆動部55は、AE/AWB処理部63から出力される絞り値データに基づいて絞り径の調整を行う。
レンズ20・絞り54を含む撮像光学系の後方には、CCDやCMOSなどの撮像素子58が配置されている。撮像素子58は、多数の受光素子を2次元的に配列した光電面を有しており、光学系を通過した被写体光がこの光電面に結像し、光電変換される。光電面の前方には、各画素に光を集光するためのマイクロレンズアレイと、R,G,B各色のフィルタが規則的に配列されたカラーフィルタアレイとが配置されている。撮像素子58は、撮像素子制御部59から供給される垂直転送クロックおよび水平転送クロックに同期して、画素毎に蓄積された電荷を1ラインずつシリアルなアナログ撮影信号として出力する。各画素において電荷を蓄積する時間、すなわち、露出時間は、撮像素子制御部59から与えられる電子シャッタ駆動信号によって決定される。また、撮像素子58は撮像素子制御部59により、あらかじめ定められた大きさのアナログ撮像信号が得られるように、ゲインが調整されている。
撮像素子58から取り込まれたアナログ撮影信号は、アナログ信号処理部60に入力される。アナログ信号処理部60は、アナログ信号のノイズを除去する相関2重サンプリング回路(CDS)と、アナログ信号のゲインを調節するオートゲインコントローラ(AGC)とからなる。
A/D変換部61は、アナログ信号処理部60にて処理されたアナログ画像信号をデジタル画像データに変換する。このデジタル信号に変換された画像データは、画素毎にR,G,Bの濃度値を持つCCD−RAWデータである。
制御回路74は、タイミング信号を発生させ、このタイミング信号を撮像素子制御部59に入力し、操作部11に含まれるレリーズボタンの操作、撮像素子58の電荷の取込み、およびアナログ信号処理部60の処理の同期を取っている。
フラッシュ制御部73は、ストロボ放電管その他の回路で構成されたフラッシュ24を撮影時に(レリーズボタン全押し時に)発光させる。具体的には、フラッシュ発光モードがフラッシュオンとされている場合、フラッシュ24をオンとして、撮影時にフラッシュ24を発光させる。一方、フラッシュ発光モードがフラッシュオフとされている場合、撮影時にフラッシュ24の発光を禁止する。
制御回路74は、撮像素子58で生成された画像信号の輝度を検出することにより測光を行う。制御回路74は、被写界輝度が低いという測光の結果を受けて、補助光制御部25に指示してLEDなどから構成された補助光発光部26から補助光を照射させる。
A/D変換部61から出力されたR,G,Bの各画像データ(CCD−RAWデータ)は、デジタル信号処理部65にて、ホワイトバランス(WB)調整、γ補正、およびYC処理が施され、処理後の画像データは、メモリ66に書き込まれる。
デジタル信号処理部65には、測光部46が設けられている。測光部46は、A/D変換部61からから1画面分のY信号を受け、撮像素子58の撮像面内の所望領域、例えば中央近傍領域や顔検出領域、あるいは撮像面全体を縦横均等に所定個数、例えば8分割した64個のブロックの各ブロックについてY信号を積算する。ブロックのそれぞれに対する輝度積算値は、測光結果としてCPU75に送られる。AE制御時には、CPU75は、所定のアルゴリズムに基づいて、輝度積算値に対して周知の演算処理を行い、適正露出(絞り値、シャッタ速度)を決定する。
メモリ66は、画像データに対して後述の各種デジタル画像処理(信号処理)を行う際に使用する作業用メモリであり、例えば、一定周期のバスクロック信号に同期してデータ転送を行うSDRAM(Synchronous Dynamic Random Access Memory)が使用される。
表示部71は、撮影モード設定以後から本撮影指示がされるまでの間メモリ66に逐次格納された画像データをスルー画像として図示しない液晶モニタに表示させたり、再生モード時に記録部70に保存されている画像データを液晶モニタに表示させたりするためのものである。なお、スルー画像は、撮影モードが選択されている間、所定間隔で撮像素子58により撮影される。なお、スルー画像とは、ユーザがリアルタイムに撮影画角や状況などを確認することが出来るように、撮影モードが選択されている間、所定の時間間隔で撮像素子58により撮像された被写体を示す画像信号に基づいて表示部71に表示される画像をいう。
本撮像前AF処理部81は、レリーズボタン半押しまでに逐次供給されてくるスルー画像に基づいて撮影条件を決定する。すなわち、本撮像前AF処理部81は、スルー画像に基づいて焦点位置を検出し、フォーカス駆動量データを出力する。焦点位置の検出方式としては、例えば、ピントが合った状態では画像のコントラストが高くなるという特徴を利用して合焦位置を検出するパッシブ方式が考えられる。すなわち、本撮像前AF処理部81は、スルー画像から高周波数成分を抽出し、これを画像全体または画像の特定の一部分の領域(中央部や顔検出領域など)内において積算することによりAF(合焦)評価値を得る。得られたAF評価値の極大点を、レンズ駆動範囲に渡って探索し、その極大点が得られるレンズ位置を合焦位置と判断する。
AF処理部62およびAE/AWB処理部63は、プレ画像に基づいて撮影条件を決定する。プレ画像とは、操作部11のレリーズボタンが半押しされることによって発生する半押し信号を検出したCPU75が撮像素子58にプレ撮影を実行させた結果、メモリ66に格納された画像データにより表される画像である。
AF処理部62は、プレ画像に基づいて焦点位置を検出し、フォーカス駆動量データを出力する(AF処理)。焦点位置の検出方式としては、例えば、ピントが合った状態では画像のコントラストが高くなるという特徴を利用して合焦位置を検出するパッシブ方式が考えられる。すなわち、AF処理部62は、プレ画像から高周波数成分を抽出し、これを画像全体または画像の一部分の領域内において積算することによりAF(合焦)評価値を得る。得られたAF評価値の極大点を、レンズ駆動範囲に渡って探索し、その極大点が得られるレンズ位置を合焦位置と判断する。
AE/AWB処理部63は、プレ画像に基づいて被写体輝度を測定し、測定した被写体輝度に基づいて絞り値、シャッタスピード等を決定し、絞り値データおよびシャッタスピードデータを露出設定値として決定する(AE処理)。AE/AWB処理部63は、レリーズボタン全押しに応じて実施される本露光で得られた画像データに基づいて、当該画像データのホワイトバランスの補正量を決定する(AWB処理)。
なお、露出およびホワイトバランスについては、撮影モードがマニュアルモードに設定されている場合には、デジタルカメラ1のユーザがマニュアル操作により設定可能である。また、露出およびホワイトバランスが自動で設定された場合にも、ユーザがメニュー/OKボタン等の操作部11から指示を行うことにより、露出およびホワイトバランスをマニュアル調整することが可能である。
撮影条件は、後述するシーン認識結果SRに対応する。例えば、シーン認識結果SRが夜景であれば、ISO感度80、シャッタスピード1/1.6秒などとする。あるいは、シーン認識結果SRが接写であれば、絞り径を開き、フラッシュ24の発光を禁止する。合焦位置の検索は、近い位置(Near側)を開始点として遠い位置(INF側)に向かって行うとよい。あるいは、シーン認識結果SRが風景であれば、測光モードとして「平均測光」を行い、測光部46に分割測光を行わせる。あるいは、シーン認識結果SRが人物であれば、AF処理部62は、AF評価値の算出領域を、顔検出処理部80の検出した顔領域とする。シーン認識結果SRがAUTOであれば、シャッタスピード、絞り値等の撮像条件を自動で設定する。
デジタル信号処理部65は、本画像の画像データに対して、ガンマ補正、シャープネス補正、コントラスト補正等の画質補正処理、CCD−RAWデータを輝度信号であるYデータと、青色色差信号であるCbデータおよび赤色色差信号であるCrデータとからなるYCデータに変換するYC処理を行う。この本画像とは、レリーズボタンが全押しされることによって実行される本撮影において撮像素子58から取り込まれ、アナログ信号処理部60、A/D変換部61、デジタル信号処理部65経由でメモリ66に格納された画像データによる画像である。本画像の画素数の上限は、撮像素子58の画素数によって決定されるが、例えば、ファイン、ノーマル等の設定により、記録画素数を変更することができる。一方、スルー画像およびプレ画像の画像数は、本画像よりも少なく、例えば、本画像の1/16程度の画素数で取り込まれる。
また、デジタル信号処理部65は、フラッシュ24の発光量が通常の撮影時よりも小さくされた場合には、本画像における顔領域の輝度を求め、輝度が所定のしきい値Th1よりも小さい場合には顔領域の輝度をしきい値Th1に調整する処理を行う。
デジタル信号処理部65は、補正・変換処理が行われた本画像の画像データに対して、例えば、JPEG等の圧縮形式で圧縮処理を行い、画像ファイルを生成する。この画像ファイルには、Exifフォーマット等に基づいて、撮影日時等の付帯情報が格納されたタグが付加される。また、デジタル信号処理部65は、再生モードの場合には、記録部70から圧縮された画像ファイルを読み出し、伸張処理を行う。伸長後の画像データは表示部71によって外部の液晶モニタに出力される。
ROM68は、デジタルカメラ1において設定される各種定数、およびCPU75が実行するプログラム等を格納する。RAM69は、CPU75がプログラムの実行に必要なデータを一時的に格納する。
CPU75は、操作部11やAF処理部62等の各種処理部からの信号に応じてデジタルカメラ1の本体各部を制御する。
顔検出処理部80は、スルー画像、レリーズボタン半押し時に表示する画像(プレ画像)、あるいは本画像から人物の顔を検出する。具体的には、顔に含まれる顔の特徴を有する領域(例えば肌色を有する、目を有する、顔の形状を有する等)を顔領域として検出するが、これに限定されるものではない。
図2は、シーン認識メイン処理のフローチャートである。シーン認識とは、撮影時の被写体が所定の被写体状況(撮影シーン又は単にシーン)であると認識することである。言い換えると、ユーザーが撮影しようとしているフレーム画像のシーンがどのようなシーンであるのかを認識することである。認識する撮影シーンの例として、人物、風景、夜景、接写(後述)があげられる。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。この処理は、撮影モードが操作部11から設定され、かつ、そのときに「自動シーン認識ON」が操作部11から設定されていた場合に開始する。「自動シーン認識OFF」が操作部11から設定されている場合には開始しない。
S1では、この処理の実行が初回であるか否かを判断する。“Yes”の場合はS2、“No”の場合はS3に進む。
S2では、RAM69のフレーム変動基準情報を初期化する。フレーム変動基準情報とは、フレーム変動チェック処理の際に参照される情報である。フレーム変動基準情報は、初回のフレーム変動チェックを行う際に、撮影シーンに関する情報である撮影情報(フレーム画像に関する情報。後述)に基づいて作成され、S13のトータルシーン認識結果(後述)に基づいて更新される。フレーム変動基準情報には、分割測光値、フォーカスレンズの位置、合焦AFエリアのタイプ(合焦状態となったAFエリアが顔検出処理部80の検出した顔領域であるか否か、あるいは、デフォルトの画面中央近傍領域であるか否か)、合焦AFフィルタ(例えば特許公開2006−145964のローパスフィルタ、ハイパスフィルタ)、顔検出処理部80による顔検出の有無が含まれる。また、RAM69のstatusをサーチ状態に、チェックカウンタを0に、シーン認識履歴保持フラグをOFFに設定する。
S3では、RAM69のstatus=確定状態か否かを判断する。“Yes”の場合はS4
、“No”の場合はS7に進む。
S4では、フレーム変動チェックを行う。この処理は後述する。
S5では、フレーム変動チェックの結果、フレーム変動があったか否かを判断する。“Yes”の場合はS6、“No”の場合はS1に戻る。
S6では、シーン変動があったと判断し、RAM69のstatusをサーチ状態に設定する。
S7では、RAM69のシーン認識履歴保持フラグがONに設定されているか否かを判断する。“Yes”の場合はS9、“No”の場合はS8に進む。
S8では、RAM69のシーン認識カウンタを0に設定する。また、RAM69のシーン認識履歴をクリアする。
S9では、認識部による単独シーン認識動作を行う。この処理は後述する。この処理の結果、RAM69にシーン単独認識結果SRが記憶される。単独シーン認識結果SRは、風景、AUTO、人物、夜景、接写などを含む。これら各単独シーンの認識の処理の詳細は後述する。
S10では、RAM69のシーン認識カウンタを1だけインクリメントする。
S11では、RAM69のシーン認識カウンタおよびROM68の所定のシーン認識結果数の閾値(E_AUTOSR_SR_HISTORY_BEFORE_S1)を比較し、シーン認識カウンタ≧シーン認識結果数の閾値であるか否かを判断する。“Yes”の場合はS12、“No”の場合はS17に進む。
S12では、RAM69のシーン認識履歴をチェックする。シーン認識履歴は、statusが確定状態になるまで繰り返されたS9によりそれぞれ個別に記憶された、複数の単独シーン認識結果SRで構成される。
S13では、トータルシーン認識を行う。すなわち、RAM69のシーン認識結果SRを、S9で異なる時間に記憶された複数の単独シーン認識結果SRで構成されたシーン認識履歴の中で、最大の出現頻度を有するものに更新する。さらに、RAM69のフレーム変動基準情報を、当該最大の出現頻度を有する単独シーン認識結果SRと同じ時点で取得されたフレーム変動基準情報に更新する。
S14では、RAM69のシーン認識結果SR(トータルシーン認識結果)が「AUTO」と異なるか否かを判断する。“Yes”の場合はS16、“No”の場合はS15に進む。
S15では、RAM69のstatusをサーチ状態に設定し、S1に戻る。
S16では、RAM69のstatusを確定状態に設定し、S1に戻る。
図3は、フレーム変動チェック(S4)の詳細な処理の流れを示すフローチャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S21では、RAM69のパラメータであるchangeをOFFに、change_measureを0に設定する。
S22では、撮影情報に基づいてフレーム変動基準情報を作成する。撮影情報は、顔検出の結果、フォーカスレンズ位置、ズームレンズ位置、合焦状態及び測光値等を含む。フレーム変動基準情報に含まれるデータ項目は撮影情報に含まれるデータ項目と同じであっても良い。さらに、作成したフレーム変動基準情報に基づいて1回目のフレーム変動チェックを行う。なお、フレーム変動チェックとは、前回にシーン認識が行われた際のフレーム画像(フレーム)の状態と比べて現在のフレームの状態が変動しているか検知する処理をいう。フレーム変動があった場合、撮影シーンが変動していると判断され、シーン認識処理が行われる。ここでは、フレーム変動チェックは、測光値変動チェック、フォーカス位置変動チェック、顔有無変動チェックのうちのいずれか1つであるものとするがその他の種類を含んでいてもよい。これらの処理は後述する。1回目のフレーム変動チェックの結果は、RAM69のパラメータであるE_AUTOSP_FRAME_CHECK1として記憶される。
S23では、S22の1回目のフレーム変動チェックの結果、フレーム変動があったか否かを判断する。“Yes”の場合はS24、“No”の場合はS26に進む。
S24では、RAM69のchange_measureを1だけインクリメントする。
S25では、RAM69のchange_measureとROM68の所定閾値E_AUTOSP_FRAME_CHANGE_MEASUREとを比較し、change_measure≧E_AUTOSP_FRAME_CHANGE_MEASUREであるか否かを判断する。“No”の場合はS26、“Yes”の場合はS35に進む。
S26では、2回目のフレーム変動チェックを行う。ここでは、フレーム変動チェックは、測光値変動チェック、フォーカス位置変動チェック、顔有無変動チェックのうち、1回目と異なるいずれか1つである。2回目のフレーム変動チェックの結果は、RAM69のパラメータであるE_AUTOSP_FRAME_CHECK2として記憶される。
S27では、S26の2回目のフレーム変動チェックの結果、フレーム変動があったか否かを判断する。“Yes”の場合はS28、“No”の場合はS30に進む。
S28では、RAM69のchange_measureを1だけインクリメントする。
S29では、RAM69のchange_measureと、ROM68に記憶された閾値E_AUTOSP_FRAME_CHANGE_MEASUREとを比較し、change_measure≧E_AUTOSP_FRAME_CHANGE_MEASUREであるか否かを判断する。“No”の場合はS30、“Yes”の場合はS35に進む。
S30では、3回目のフレーム変動チェックを行う。ここでは、フレーム変動チェックは、測光値変動チェック、フォーカス位置変動チェック、顔有無変動チェックのうち、1回目および2回目と異なるものである。3回目のフレーム変動チェックの結果は、RAM69のパラメータであるE_AUTOSP_FRAME_CHECK3として記憶される。
S31では、S30の3回目のフレーム変動チェックの結果、フレーム変動があったか否かを判断する。“Yes”の場合はS32、“No”の場合はS34に進む。
S32では、RAM69のchange_measureを1だけインクリメントする。
S33では、RAM69のchange_measureと、ROM68に記憶された閾値E_AUTOSP_FRAME_CHANGE_MEASUREとを比較し、change_measure≧E_AUTOSP_FRAME_CHANGE_MEASUREであるか否かを判断する。“No”の場合はS34、“Yes”の場合はS35に進む。
S34では、フレーム変動なしと判断する。その判断を示すフラグをRAM69に記憶してもよい。そして、シーン認識メイン処理のS5に戻る。
S35では、フレーム変動ありと判断する。「フレーム変動あり」のフラグであるchange=ONに設定しRAM69に記憶する。そして、シーン認識メイン処理のS5に戻る。
図4は測光値変動チェックのフローチャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S41では、RAM69のパラメータchange_evをOFFに設定する。また、RAM69のパラメータev[i]を今回のフレーム画像について測光部46から得られた測光値とする。iは、所定の単位で画像を分割して得たN個の各ブロックに対応する添え字である。ここではi=0〜N−1とする。
また、RAM69のパラメータev_base[i]をフレーム変動基準情報の分割測光値とし、その値をRAM69に確保する。なお、ev_base[i]はメイン処理のS2で初期化され、S13で更新される。また、各ブロックに対応する重みw [i]をROM68から読み出す。
S42では、次式によりdelta_evをRAM69に設定する。総和はi=0〜N−1につ
いて行われる。delta_evは全画面の明るさ同士の差分でもよい。
delta_ev=ΣW[i]*|ev[i]-ev_base[i]|/ ΣW[i]
各領域ごとの差の絶対値を総和するのは次の理由による。絶対値をとらないと、実際には領域ごとに大きな変化が生じているにもかかわらず、総和により各領域ごとの変化が相殺され、全体として変化がなくなるのを防ぐためである。
S43では、RAM69のdelta_evと、ROM68に記憶された閾値E_AUTOSP_FRAME_DELTA_EV とを比較し、delta_ev≧E_AUTOSP_FRAME_DELTA_EVであるか否かを判断する。“
Yes”の場合はS44、“No”の場合はS45に進む。
S44では、測光値の変動があったと判断する。そして、測光値の変動があったことを示すフラグchange_evをONに設定しRAM69に記憶する。
S45では、測光値の変動がなかったと判断する。測光値の変動がなかったことを示すフラグをRAM69に記憶してもよい。
図5はフォーカス位置変動チェックのフローチャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S51では、RAM69のパラメータchange_focal_pointをOFFに、focal_pointを
今回のフレーム画像を取得したときにレンズ駆動部51が設定したフォーカスレンズの位置(駆動パルス数)に、focal_point_baseをフレーム変動基準情報のフォーカスレンズの位置(S2で初期化あるいはS13で更新されるもの)とし、その記憶領域をRAM69に確保する。
S52では、次式によりdelta_ focal_pointをRAM69に設定する。
delta_focal_point=| focal_point- focal_point_base|
S53では、RAM69のdelta_focal_pointと、ROM68に記憶された所定のフォ
ーカス位置変動閾値とを比較し、delta_focal_point>フォーカス位置変動閾値であるか
否かを判断する。“Yes”の場合はS54、“No”の場合はS55に進む。
S54では、フォーカス位置の変動があったと判断する。そして、フォーカス位置の変動があったことを示すフラグchange_ focal_pointをONに設定しRAM69に記憶する
。
S55では、フォーカス位置の変動がなかったと判断する。フォーカス位置の変動がなかったことを示すフラグをRAM69に記憶してもよい。
図6は顔有無変動チェックのフローチャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S61では、RAM69のパラメータchange_face_resultをOFFに設定する。
S62では、今回のフレーム画像を取得したときに顔検出処理部80が出力した顔検出の有無が、フレーム変動基準情報の顔検出の有無(S2で初期化あるいはS13で更新されるもの)と一致するか否かを判断する。“Yes”の場合はS64、“No”の場合はS63に進む。
S63では、顔検出の有無の変動があったと判断する。そして、顔検出の有無の変動があったことを示すフラグchange_face_resultをONに設定しRAM69に記憶する。
S64では、顔検出の有無の変動がなかったと判断する。顔検出の有無の変動がなかったことを示すフラグをRAM69に記憶してもよい。
図7は認識部の単独シーン認識動作(S9)の詳細を示すフローチャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S71では、RAM69に格納された、シーン依存サーチを実施するフラグ(E_AUTOSR_SEARCH_TYPE)が0であるか否かを判断する。“Yes”の場合はS80、“No”の場合はS72に進む。なお、E_AUTOSR_SEARCH_TYPEの値は操作部11から任意に設定できるものとする。
S72では、RAM69のシーン認識結果SRにAUTOを設定する。
S73では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE1を代入する。E_AUTOSR_MODULE1は0〜4のうちのいずれかの整数である。そして、module[i]に相当するシーン判定(認識)サブルーチンを実施する。module[0]は何もしない。module[1]は後述の人物判定を行う。module[2]は後述の風景判定を行う。module[3]は後述の夜景判定を行う。module[4]は後述の接写判定を行う。
S74では、S73でのmodule[i]の実施の結果、RAM69のシーン認識結果SRがAUTOであるか否かを判断する。“Yes”の場合はS75に進み、“No”の場合はメイン処理のS10に戻る。
S75では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE2を代入する。E_AUTOSR_MODULE2は0〜4のうちのいずれかの整数であり、かつE_AUTOSR_MODULE1と異なる。そして、module[i]に相当するシーン判定サブルーチンを実施する。
S76では、S75でのmodule[i]の実施の結果、RAM69のシーン認識結果SRがAUTOであるか否かを判断する。“Yes”の場合はS77に進み、“No”の場合はメイン処理のS10に戻る。
S77では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE3を代入する。E_AUTOSR_MODULE3は0〜4のうちのいずれかの整数であり、かつE_AUTOSR_MODULE1およびE_AUTOSR_MODULE2と異なる。そして、module[i]に相当するシーン判定サブルーチンを実施する。
S78では、S77でのmodule[i]の実施の結果、RAM69のシーン認識結果SRがAUTOであるか否かを判断する。“Yes”の場合はS79に進み、“No”の場合はメイン処理のS10に戻る。
S79では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE4を代入する。E_AUTOSR_MODULE34は0〜4のうちのいずれかの整数であり、かつE_AUTOSR_MODULE1およびE_AUTOSR_MODULE2およびE_AUTOSR_MODULE3と異なる。そして、module[i]に相当するシーン判定サブルーチンを実施する。E_AUTOSR_MODULE1、E_AUTOSR_MODULE2、E_AUTOSR_MODULE3、E_AUTOSR_MODULE4の値はどのように設定してもよいが、優先的にシーン判定を行いたい種類には若い番号を付するとよい。例えば、人物判定>風景判定>夜景判定>接写判定の順にシーン判定を行いたい場合は、E_AUTOSR_MODULE1=1、E_AUTOSR_MODULE2=2、E_AUTOSR_MODULE3=3、E_AUTOSR_MODULE4=4とする。これらの値を操作部11から任意に設定できてもよい。
S80では、現在のRAM69のシーン認識結果SRがAUTOであるか否かを判断する。“Yes”の場合はS72に進み、“No”の場合はS81に進む。
S81では、RAM69のパラメータSR_oldに、現在のRAM69のシーン認識結果SRを設定する。すなわち、現在のRAM69のシーン認識結果SRがAUTOであればSR_old=0、現在のRAM69のシーン認識結果SRが人物であればSR_old=1、現在のRAM69のシーン認識結果SRが風景であればSR_old=2、現在のRAM69のシーン認識結果SRが夜景であればSR_old=3、現在のRAM69のシーン認識結果SRが接写であればSR_old=4とする。
S82では、RAM69のパラメータiに、SR_oldを代入する。そして、module[i]に相当するシーン判定サブルーチンを実施する。
S83では、S82でのmodule[i]の実施の結果、RAM69のシーン認識結果SRが
AUTOであるか否かを判断する。“Yes”の場合はS84に進み、“No”の場合はメイン処理のS10に戻る。
S84では、SR_old=E_AUTOSR_MODULE1であるか否かを判断する。“Yes”の場合は
S87に進み、“No”の場合はS85に進む。
S85では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE1を代入する。そして、module[i]に相当するシーン判定サブルーチンを実施する。
S86では、S85でのmodule[i]の実施の結果、RAM69のシーン認識結果SRが
AUTOであるか否かを判断する。“Yes”の場合はS87に進み、“No”の場合はメイン処理のS10に戻る。
S87では、SR_old=E_AUTOSR_MODULE2であるか否かを判断する。“Yes”の場合は
S90に進み、“No”の場合はS88に進む。
S88では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE2を代入する。そして、module[i]に相当するシーン判定サブルーチンを実施する。
S89では、S88でのmodule[i]の実施の結果、RAM69のシーン認識結果SRが
AUTOであるか否かを判断する。“Yes”の場合はS90に進み、“No”の場合はメイン処理のS10に戻る。
S90では、SR_old=E_AUTOSR_MODULE3であるか否かを判断する。“Yes”の場合は
S93に進み、“No”の場合はS91に進む。
S91では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE3を代入する。そして、module[i]に相当するシーン判定サブルーチンを実施する。
S92では、S91でのmodule[i]の実施の結果、RAM69のシーン認識結果SRが
AUTOであるか否かを判断する。“Yes”の場合はS93に進み、“No”の場合はメイン処理のS10に戻る。
S93では、SR_old=E_AUTOSR_MODULE4であるか否かを判断する。“Yes”の場合は
メイン処理のS10に戻り、“No”の場合はS94に進む。
S94では、RAM69のパラメータiに、ROM68に予め記憶されたE_AUTOSR_MODULE4を代入する。そして、module[i]に相当するシーン判定サブルーチンを実施する。その後、メイン処理のS10に戻る。
図8は以上の処理(S9)とS13によって決まる単独シーン認識結果及びトータルシーン認識結果SRを概念的に示している。
図8に示すように、単独シーン認識結果SRは、古いものから新しいものにかけて連続的に5個格納される。各単独シーン認識結果SRには添え字j=0〜4が付され、番号が小さいほど新しい認識結果である。単独シーン認識結果の蓄積個数=5は一例であって、3以上の整数であれば何でもよい。
S73・S75・S77・S79あるいはS85・S88・S91・S94で、module[i]の単独シーン認識が実行されるごとに、新たなシーン認識結果SRが取得される。この結果、これまでに蓄積した過去のシーン認識結果SRの添え字には1がインクリメントされ、1世代古い履歴になる。新たなシーン認識結果SRには0(ゼロ)の添え字が付され、現在のシーン認識結果となる。
図8では、SR[0]=3, SR[1]=3, SR[2]=3, SR[3]=0, SR[4]=1であったのが、新たな単独シーン認識結果SR[0]=2が追加されることで、SR[1]=3, SR[2]=3, SR[3]=3, SR[4]=0となる。新たな単独シーン認識結果SR[0]の追加前に最も古い世代の単独シーン認識結果SR[4]=1は、新たな単独シーン認識結果の追加とともにRAM69から消去してもよいし保存してもよい。
S13では、新たな単独シーン認識結果の追加がされると、SR[0], SR[1], SR[2], SR[3], SR[4]のうち最も出現頻度の高い単独シーン認識結果を特定し、それを改めてシーン認識結果SR(トータルシーン認識結果)とする。図8では3の出現頻度が最大であるからSR=3となる。従って、CPU75は、トータルシーン認識結果をSR=3として、撮影モードを夜景モードに設定する。これにより、夜景モードの撮影条件及び画像処理の条件に従って画像の撮影、記録が実行可能になる。さらに、出現頻度が最大となる単独シーン認識結果のうち、最も新しい単独シーン認識結果を得る時点に用いられた撮影情報に基づいてフレーム変動基準情報を更新する。図8では、出現頻度が最大(3)である単独シーン認識結果はSR[1]、SR[2]及びSR[3]である。このうち最も新しい単独シーン認識結果はSR[3]であるため、SR[3]を得る時点で用いられた撮影情報に基づいてフレーム変動基準情報を更新する。
図示は省略するが、最大頻度の単独シーン認識結果が複数の場合は、最も新しい世代の単独シーン認識結果を含む方をトータルシーン認識結果SRとする。例えば、SR[0]=2, SR[1]=3, SR[2]=3, SR[3]=2, SR[4]=0の場合、SR[0]= SR[3]=2、SR[1]= SR[2]=3となり、2も3も出現頻度が同じである。この場合、最も新しい世代の単独シーン認識結果SR[0]を含む2がトータルシーン認識結果SRとなる。さらに、単独シーン認識結果SR[0]を得る時点で用いられた撮影情報に基づいてフレーム変動基準情報を更新する。
図9はシーン判定サブルーチン(人物判定、module[1])の詳細を示すフローチャート
である。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S101では、顔検出処理部80が顔検出したか否かを判断する。“Yes”の場合はS102、“No”の場合はS105に進む。
S102では、RAM69の顔制限フラグがオンであるか否かを判断する。“Yes”の場合はS103、“No”の場合はS104に進む。
S103では、AF評価値の算出領域に設定された顔領域について、顔の大きさが所定範囲内かつ顔の傾きが所定の範囲内かつ顔の向きが所定の範囲内かつ顔の確からしさのスコアが所定の範囲内かつ顔の位置が所定の範囲内であるか否かを判断する。“No”の場合はS105、“Yes”の場合はS104に進む。
S104では、シーン認識結果SR=人物に設定する。そして、module[1]の後に続く
処理、すなわち、S73・S75・S77・S79のうちいずれか1つの次の処理、あるいはS85・S88・S91・S94のうちいずれか1つの次の処理に進む。
S105では、シーン認識結果SR=AUTOに設定する。
図10は、シーン判定サブルーチン(風景判定、module[2])の詳細を示すフローチャ
ートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S111では、レリーズボタンの半押し(S1)がロックされているか否かを判断する。“Yes”の場合はS124、“No”の場合はS112に進む。
S112では、設定メニューや操作部11を介して予めコンティニュアスAF(以下「CAF」と表記)の実行が設定されているか否かを判断する。“Yes”の場合はS113、“No”の場合はS129に進む。
S113では、本撮像前AF処理部81の算出したAF評価値が、ROM68に記憶された所定の閾値よりも高いか否かを判断する。“Yes”の場合はS114、“No”の場合はS119に進む。なお、本ステップS113を省略してもよい。この場合、S112で“Yes”の場合はS114に進み、また、S113で“No”と判断された場合に続く諸処理(S119、S120、S121、S122、S123)も省略される。
S114では、ROM68に記憶されたE_AUTOSR_CHECK_CAFSTATUS_HIGH=0であるか否
かを判断する。“Yes”の場合はS115、“No”の場合はS116に進む。
S115では、CAFの結果定まった合焦位置が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち合焦被写体が所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S116では、E_AUTOSR_CHECK_CAFSTATUS_HIGH=1であるか否かを判断する。“Yes
”の場合はS117、“No”の場合はS118に進む。
S117では、CAFの結果、AF評価値の極大点が検出され、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S118では、CAFの結果、AF評価値の極大点が検出されるかまたはAF評価値がその極大点の近傍にあり(例えば本出願人による特開2003−348426号公報段落0041の「微動調整」の段階にある場合)、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S119では、ROM68に記憶されたE_AUTOSR_CHECK_CAFSTATUS_LOW=0であるか否かを判断する。“Yes”の場合はS120、“No”の場合はS121に進む。
S120では、CAFの結果定まった合焦位置が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S121では、E_AUTOSR_CHECK_CAFSTATUS_LOW=1であるか否かを判断する。“Yes”の場合はS122、“No”の場合はS123に進む。
S122では、CAFの結果、AF評価値の極大点が検出され、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S123では、CAFの結果、AF評価値の極大点が検出されるかまたはAF評価値がその極大点の近傍にあり(例えば本出願人による特開2003−348426号公報段落0041の「微動調整」の段階にある場合)、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S124では、AF処理部62のAF処理により合焦位置が決定され、かつその合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS125、“No”の場合はS129に進む。
S125では、制御回路74の測光した被写界輝度が、ROM68に記憶された所定の閾値よりも低いか否かを判断する。“Yes”の場合はS126、“No”の場合はS129に進む。
S126では、ROM68の設定パラメータとしてあるいは操作部11から、予め風景ズーム情報フラグがオンに設定されているか否かを判断する。“Yes”の場合はS127、“No”の場合はS128に進む。
S127では、ズームレンズ位置が所定範囲内例えば所定位置よりもワイド側にあるか否かを判断する。“Yes”の場合はS128、“No”の場合はS129に進む。なお、ズーム位置が所定範囲内にないとは、例えばズームレンズ位置がテレ端あるいはその近傍にある場合である。この場合、全景を画角に収めることができず、風景撮影に適していないから、撮影シーンはAUTOと判断する。
S128では、SR=風景に設定する。そして、module[2]の後に続く処理に進む。
S129では、SR=AUTOに設定する。そして、module[2]の後に続く処理に進む。
図11は、シーン判定サブルーチン(夜景判定、module[3])の詳細を示すフローチャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S131では、制御回路74の測光した被写界輝度が、ROM68に記憶された所定の閾値よりも低いか否かを判断する。“Yes”の場合はS132、“No”の場合はS152に進む。
S132では、レリーズボタンの半押し(S1)がロックされているか否かを判断する。“Yes”の場合はS147、“No”の場合はS133に進む。
S133では、RAM69に記憶されている半押し(S1)前の夜景判定フラグがオンに設定さているか否かを判断する。“Yes”の場合はS134、“No”の場合はS152に進む。
S134では、操作部11からの入力あるいはROM68に記憶されたパラメータにより夜景判定で距離情報を使うか否かのいずれが設定されているかを判断する。夜景判定で距離情報を使う設定がされている場合はS135、夜景判定で距離情報を使う設定がされていない場合はS149に進む。
S135では、設定メニューや操作部11を介して予めCAFの実行が設定されているか否かを判断する。“Yes”の場合はS136、“No”の場合はS152に進む。
S136では、本撮像前AF処理部81の算出したAF評価値が、ROM68に記憶された所定の閾値よりも高いか否かを判断する。“Yes”の場合はS137、“No”の場合はS142に進む。なお、本ステップS136を省略してもよい。この場合、S135で“Yes”の場合はS137に進み、また、S136で“No”と判断された場合に続く諸処理も省略される。
S137では、E_AUTOSR_CHECK_CAFSTATUS_HIGH=0であるか否かを判断する。“Yes
”の場合はS138、“No”の場合はS139に進む。
S138では、CAFの結果定まった合焦位置が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S139では、E_AUTOSR_CHECK_CAFSTATUS_HIGH=1であるか否かを判断する。“Yes
”の場合はS140、“No”の場合はS141に進む。
S140では、CAFの結果、AF評価値の極大点が検出され、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S141では、CAFの結果、AF評価値の極大点が検出されるかまたはAF評価値がその極大点の近傍にあり(例えば本出願人による特開2003−348426号公報段落0041の「微動調整」の段階にある場合)、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S142では、E_AUTOSR_CHECK_CAFSTATUS_LOW=0であるか否かを判断する。“Yes”の場合はS143、“No”の場合はS144に進む。
S143では、CAFの結果定まった合焦位置が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S144では、E_AUTOSR_CHECK_CAFSTATUS_LOW=1であるか否かを判断する。“Yes”の場合はS145、“No”の場合はS146に進む。
S145では、CAFの結果、AF評価値の極大点が検出され、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S146では、CAFの結果、AF評価値の極大点が検出されるかまたはAF評価値がその極大点の近傍にあり(例えば本出願人による特開2003−348426号公報段落0041の「微動調整」の段階にある場合)、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S147では、操作部11からの入力あるいはROM68に記憶されたパラメータにより夜景判定で距離情報を使うか否かのいずれが設定されているかを判断する。夜景判定で距離情報を使う設定がされている場合はS148、夜景判定で距離情報を使う設定がされていない場合はS149に進む。
S148では、AF処理部62のAF処理により合焦位置が決定され、かつその合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも無限遠(INF)側にあるか、すなわち所定距離よりも遠いか否かを判断する。“Yes”の場合はS149、“No”の場合はS152に進む。
S149では、ROM68の設定パラメータとしてあるいは操作部11から、予め夜景ズーム情報フラグがオンに設定されているか否かを判断する。“Yes”の場合はS150、“No”の場合はS151に進む。
S150では、ズームレンズ位置が所定範囲内、例えば所定位置よりもワイド側にあるか否かを判断する。“Yes”の場合はS151、“No”の場合はS152に進む。なお、ズーム位置が所定範囲内にないとは、例えばズームレンズ位置がテレ端あるいはその近傍にある場合である。この場合、入射光量の乏しいバック遠景を画角に収めることができず、夜景撮影に適していないから、AUTOと判定する。
S151では、SR=夜景に設定する。そして、module[3]の後に続く処理に進む。
S152では、SR=AUTOに設定する。そして、module[3]の後に続く処理に進む
。
図12は、シーン判定サブルーチン(夜景判定、module[3])の他の一例を示すフロー
チャートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。夜景判定は、図11または12のいずれかを採用すれば足りる。いずれか一方を選択的に実行できてもよい。
S161では、制御回路74の測光した被写界輝度が、ROM68に記憶された所定の閾値よりも低いか否かを判断する。“Yes”の場合はS162、“No”の場合はS168に進む。なお、この閾値は、補助光制御部25へ発光を指示するか否かを判別する閾値と同じであってもよいし異なっていてもよい。
S162では、レリーズボタンの半押し(S1)がロックされているか否かを判断する。“Yes”の場合はS163、“No”の場合はS168に進む。
S163では、補助光制御部25に補助光26の発光を指示したか否かを判断する。“Yes”の場合はS164、“No”の場合はS168に進む。
S164では、補助光制御部25が補助光発光部26を発光させる直前と直後にそれぞれ制御回路74の測光した被写界輝度の差が、ROM68に記憶された所定の閾値を超えているか否かを判断する。“Yes”の場合はS168、“No”の場合はS165に進む。なお、当該差が当該閾値を超えておらず、微小であれば、補助光照射による被写体輝度の増加の寄与がほとんどなく、被写体が近くないといえる。
S165では、ROM68の設定パラメータとしてあるいは操作部11から、予め夜景ズーム情報フラグがオンに設定されているか否かを判断する。“Yes”の場合はS166、“No”の場合はS167に進む。
S166では、ズームレンズ位置が所定範囲内、例えば所定位置よりもワイド側にあるか否かを判断する。“Yes”の場合はS167、“No”の場合はS168に進む。なお、ズーム位置が所定範囲内にないとは、例えばズームレンズ位置がテレ端あるいはその近傍にある場合である。この場合、バック遠景を画角に収めることができず、夜景撮影に適していない。
S167では、SR=夜景に設定する。そして、module[3]の後に続く処理に進む。
S168では、SR=AUTOに設定する。そして、module[3]の後に続く処理に進む
。
図13は、シーン判定サブルーチン(接写判定、module[4])の詳細を示すフローチャ
ートである。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S171では、レリーズボタンの半押し(S1)がロックされているか否かを判断する。“Yes”の場合はS184、“No”の場合はS172に進む。
S172では、設定メニューや操作部11を介して予めCAFの実行が設定されているか否かを判断する。“Yes”の場合はS173、“No”の場合はS188に進む。
S173では、本撮像前AF処理部81の算出したAF評価値が、ROM68に記憶された所定の閾値よりも高いか否かを判断する。“Yes”の場合はS174、“No”の場合はS179に進む。なお、本ステップS173を省略してもよい。この場合、S172で“Yes”の場合はS174に進み、また、S173で“No”と判断された場合に続く諸処理も省略される。
S174では、E_AUTOSR_CHECK_CAFSTATUS_HIGH=0であるか否かを判断する。“Yes
”の場合はS175、“No”の場合はS176に進む。
S175では、CAFの結果定まった合焦位置が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S176では、E_AUTOSR_CHECK_CAFSTATUS_HIGH=1であるか否かを判断する。“Yes
”の場合はS177、“No”の場合はS178に進む。
S177では、CAFの結果、AF評価値の極大点が検出され、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S178では、CAFの結果、AF評価値の極大点が検出されるかまたはAF評価値がその極大点の近傍にあり(例えば本出願人による特開2003−348426号公報段落0041の「微動調整」の段階にある場合)、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S179では、E_AUTOSR_CHECK_CAFSTATUS_LOW=0であるか否かを判断する。“Yes”の場合はS180、“No”の場合はS181に進む。
S180では、CAFの結果定まった合焦位置が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S181では、E_AUTOSR_CHECK_CAFSTATUS_LOW=1であるか否かを判断する。“Yes”の場合はS182、“No”の場合はS183に進む。
S182では、CAFの結果、AF評価値の極大点が検出され、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S183では、CAFの結果、AF評価値の極大点が検出されるかまたはAF評価値がその極大点の近傍にあり(例えば本出願人による特開2003−348426号公報段落0041の「微動調整」の段階にある場合)、かつその極大点で定まった合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S184では、AF処理部62のAF処理により合焦位置が決定され、かつその合焦位置に対応する焦点距離が、ROM68に記憶された所定の焦点距離閾値よりも至近(NEAR)側にあるか、すなわち所定距離よりも近いか否かを判断する。“Yes”の場合はS185、“No”の場合はS188に進む。
S185では、ROM68の設定パラメータとしてあるいは操作部11から、予め接写ズーム情報フラグがオンに設定されているか否かを判断する。“Yes”の場合はS186、“No”の場合はS187に進む。
S186では、ズームレンズ位置がROM68に記憶された所定範囲内、例えば所定位置よりもワイド側にあるか否かを判断する。“Yes”の場合はS187、“No”の場合はS188に進む。なお、ズーム位置が所定範囲内にないとは、例えばズームレンズ位置がワイド端あるいはその近傍にある場合以外である。この場合、近接被写体の合焦ができず、近接撮影に適していない。
S187では、SR=接写に設定する。そして、module[4]の後に続く処理に進む。
S188では、SR=AUTOに設定する。そして、module[4]の後に続く処理に進む。
図9〜図13のシーン判定の結果は、CPU75が表示部11に表示するよう制御する。
例えば、図14に示すように、シーン判定の結果である「風景」、「AUTO」、「人物」、「夜景」、「接写」といった文字を、スルー画像にあるいはレリーズボタン全押し後の記録用画像に重畳して、表示部11に表示する。シーン判定の結果を示す文字列、アイコン、記号その他の情報は、図示しないOSD回路によって生成される。カメラ1に音声処理回路やスピーカが備えられていれば、シーン判定の結果に対応する報知音を出力するようCPU75が制御してもよい。「自動シーン認識OFF」が設定されていれば、シーン判定結果は表示されない。
以上の処理により、ユーザが撮ろうとしている、もしくは撮ったシーンが、どのようなシーンであるのかを認識できる。認識した結果は、図14に示すように、テキストやアイコン表示でユーザに分かりやすい形で通知される。認識可能なシーンは、人物(図9)、風景(図10)、夜景(図11・12)、接写(図13)である。シーン判定結果がこれらのどのシーンにもあてはまらない場合は、AUTOとなる。
図2のメイン処理では、シーン変動時にシーン認識を行う。前回のシーン認識結果が確定されたときのフレームの状態と、現フレームの状態の変動を監視する(S4、図3)。変化があった場合にシーン変動ありと判断されると(S5)、status=サーチ状態となり
(S6)、シーン変動のタイミングで認識部が動作する(S9)。
図3のフレーム変動チェックでは、変動を検知する因子を複数持つことが可能で、順序の入れ換えなども、E_AUTOSR_FRAME_CHECK1〜3の設定により可能である。そして、変動を検知した場合には、フレーム変動の指標となるchange_measureの値をインクリメントする(S24、S28、S32)。change_measureの値がE_AUTOSR_FRAME_CHANGE_MEASURE以
上の場合には(S25、S29、S33で“Yes”)、フレーム変動ありと判断される(S35)。
ここでは、フレーム変動を検知する具体的な処理として、測光値変動チェック(図4)、フォーカス位置変動チェック(図5)、顔有無変動チェック(図6)を示している。なお図示は省略するが、本撮像前AF処理部81の合焦検出の有無に応じてフレーム変動を検知してもよい。
図4の測光値変動チェックでは、測光値の変動量の指標となるdelta_evは、N分割の分割エリアごとに測光値変動量を算出し、各エリアに対応した重みをかけて総和をとったものである。そして、delta_evの値がE_AUTOSP_FRAME_DELTA_EV以上の場合に、測光値変動
ありと判断する。
図5のフォーカス位置変動チェックでは、フォーカス位置の変動量の指標となるdelta_focal_pointは、基準情報のフォーカス位置と今回のフォーカス位置の差分によって算出
される。delta_focal_pointの値がフォーカス位置変動閾値以上の場合に、フォーカス位
置変動ありと判断する。なお、ここで使用される閾値は、ズーム位置ごとにROM68に設定されているものとする。
図6の顔有無変動チェックでは、基準情報の顔有無結果と今回の顔有無結果が異なる場合に、顔有無変動ありと判断する。
認識部動作の差異に使用するシーン認識履歴は、自動シーン認識の結果として採用するSRを求めた後にクリアする(S8)。これは、認識部は常時動作することを想定しておらず、離れた時刻の情報を参照することがないようにするためである。
ここで、シーン認識履歴がクリアされるために、サーチ状態となってから(S6)、トータルシーン認識の際に必要な数だけの単独シーン認識結果が得られるように、その数と同じ回数分だけ認識部が動作するまでは(S11で“Y”となるまでは)、SRが更新されない仕組みとなる。
また、SRを決定した際、フレーム変動をチェックするためのフレーム変動基準情報として、採用されたSRが最大頻度になった(最新側の)時点の撮影情報を記憶する(S13)。
なお、決定したSRがAUTO以外の場合は、statusは「確定状態」となり(S16)、シーンが変動するまでは認識部は動作しない。これに対し、決定したSRがAUTOの場合は「サーチ状態」となり(S15)、引き続き認識部を動作させる。これはシーン変動の途中で認識した結果に基づいてstatusを「確定状態」にすることで、シーン変動を正しく検知できなくなってしまう可能性があるためである。
仮に、シーン変動の途中の状態をフレーム変動基準情報として登録した後、フレーム変動をチェックしてしまうと、最終的にシーン変動が完了した状態で認識部に動作してほしいと思っても、基準情報との差分が小さい故に、認識部が動作しない現象が起こってしまう。そこで、これを回避するため、上記のように確定したシーンに対応する撮影情報に基づいてフレーム変動基準情報を更新する処理を行う(S13)。
シーン認識は結果が安定しないと、出力結果がユーザの混乱を招く。そこで、撮影シーンがどのようなシーンであるのかという判断をする処理(S7〜S16)と、認識したシーンから変動があったかという監視をする処理(S4〜S6)とを混合的に動作させることにより、正確で安定したシーン認識を行うことが可能となる。
<第2実施形態>
図15は第2実施形態に係るフレーム変動チェックサブルーチンのフローチャートである。この処理は、図3の処理に換えて実行させることができる。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S201〜S203は、S21〜23と同様である。
S204では、RAM69のパラメータchange_measureに、1回目のフレーム変動チェックに対応する重みE_AUTOSP_FRAME_CHECK1を加えた値を新たなchange_measureに設定する。E_AUTOSP_FRAME_CHECK1は予めROM68に記憶されている。
S205〜S207は、S25〜27と同様である。
S208では、RAM69のパラメータchange_measureに、2回目のフレーム変動チェックに対応する重みE_AUTOSP_FRAME_CHECK2を加えた値を新たなchange_measureに設定する。E_AUTOSP_FRAME_CHECK2は予めROM68に記憶されている。
S209〜S211は、S29〜27と同様である。
S212では、RAM69のパラメータchange_measureに、3回目のフレーム変動チェックに対応する重みE_AUTOSP_FRAME_CHECK3を加えた値を新たなchange_measureに設定する。E_AUTOSP_FRAME_CHECK3は予めROM68に記憶されている。
S213〜S215は、S33〜35と同様である。
図16は、ROM68に記憶された、1〜3回目のフレーム変動チェックに対応する重みE_AUTOSP_FRAME_CHECK1〜3の一例と、1〜3回目のフレーム変動チェックによる変化の有無に応じたchange_measureの値の一例との関係を示すテーブルである。
ここでは一例として、1回目のフレーム変動チェックは顔有無変動(図6)、2回目のフレーム変動チェックはフォーカス位置変動(図5)、3回目のフレーム変動チェックは測光値変動(図4)であり、E_AUTOSP_FRAME_CHECK1=2、E_AUTOSP_FRAME_CHECK2=1、E_AUTOSP_FRAME_CHECK3=1とされている。すなわち顔有無変動は、フォーカス位置変動や測光値変動に比べて重みが大きい。
テーブルでは1〜3回目のフレーム変動チェックで想定される変動結果の組み合わせの全てが網羅されているが、図示は省略している。例えば、E_AUTOSP_FRAME_CHANGE_MEASURE=2の場合、1回目のフレーム変動チェック(顔有無変動)で変化ありと判断されれば、change_measure=2=E_AUTOSP_FRAME_CHANGE_MEASUREとなるから、S205で“Yes”と判定され、S215に進み、フレーム変動ありと判断される。すなわち、顔有無変動に対応する重みが大きいため、顔有無変動があっただけで即座にフレーム変動ありとなる。
一方。1回目のフレーム変動チェック(顔有無変動)で変化なしと判断された場合、2回目のフレーム変動チェック(フォーカス位置変動)で変化ありと判断されても、change_measure=1<E_AUTOSP_FRAME_CHANGE_MEASUREとなる。よって、3回目のフレーム変動チェックで変化ありと判断されない限り、S213で“No”と判定され、S214に進み、フレーム変動なしと判断される。すなわち、フォーカス位置変動に対応する重みが小さいため、フォーカス位置変動があっただけで即座にフレーム変動ありとはならず、他の要因の変動があって初めて変化ありと判断される。
図16のテーブルの内容、すなわち各回のフレーム変動チェックに対応する重み、E_AUTOSP_FRAME_CHANGE_MEASUREの値は、表示部71に表示された「重要項目選択」画面から、操作部11を介してユーザが自由に設定できる。
こうすることで、シーンが変動しているのか判断する因子が複数存在する場合に、それぞれに対応する重みを自由に設定可能にすることで、シーン変動チェックの基準を多様な形で表現できる。ユーザがシーン変動ありと判断される条件を自由に設定できれば、シーン変動基準をカスタマイズでき、ユーザが重視する因子の変化をシーン変動の判断に強く反映できる。
<第3実施形態>
図17は第3実施形態に係るメイン処理のフローチャートである。この処理は、図2の処理に換えて実行させることができる。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。本実施形態では、フレーム変動基準情報に基づいてフレーム変動チェック(単独フレーム変動チェック)を複数回行い、さらに、フレーム変動チェック結果をフレーム変動履歴として蓄積し、そのフレーム変動履歴に基づいてフレーム変動チェック(トータルフレーム変動チェック)を行う。
S301〜303は、S1〜3と同様である。ただし、S302では、フレーム変動履歴も初期化する。
S304では、RAM69に記憶されたフレーム変動履歴を一世代古い方に繰り上げる。すなわち、フレーム変動履歴をスライドさせる。図18では一例として、新しいものから5個の履歴1、1、0、0、1がスライドされる。その結果、最新の履歴は「空き(null)」になり、それよりも古い履歴は1、1、0、0となる。なお、履歴の数は5個でなくてもよい。
S305は、取り込まれた最新フレームについて、フレーム変動チェック(単独フレーム変動チェック)を行い、その結果を最新の単独フレーム変動チェック結果としてフレーム変動履歴に加える。
S306では、S305の結果、フレーム変動があったか否かの判断を行う。“Yes”の場合はS307,“No”の場合はS301に戻る。
S307では、RAM69に記憶されたフレーム変動履歴のうち最新の単独フレーム変動チェック結果の変動フラグをONに設定する。図18では一例として、最新フレームについてフレーム変動ありと判断され、フレーム変動履歴は1、1、1、0、0となっている。
S308は、S4と同様である。
以下のS309及びS310において、フレーム変動履歴に基づくフレーム変動チェック(トータルフレーム変動チェック)を行う。S309では、RAM69に記憶されたフレーム変動履歴を参照し、変動のあった回数(E_AUTOSR_FRAME_CHECK_HISTORY)をカウントする。
S309では、フレーム変動履歴に含まれる過去のM(図18ではM=5)個の単独フレーム変動チェック結果のうち、S309でカウントされた変動のあった回数(E_AUTOSR_FRAME_CHECK_HISTORY)が、ROM68に記憶された所定のシーン変動判断閾値(E_AUTOSR_SCENE_CHANGE_JUDGE)以上であるか否かを判断する。“Yes”の場合はS310、“No”の場合はS301に戻る。
S310では、シーン変動ありと判断し、statusをサーチ状態とし、RAM69のフレーム変動履歴をクリアする。すなわち、図18のフレーム変動履歴1、1、1、0、0は全てクリアされ、新たにM個の単独フレーム変動チェック結果が蓄積されるまでシーン変動の有無(トータルフレーム変動チェック)は判断されない。
S311では、シーン認識履歴保持フラグがONであるか否かを判断する。“Yes”の場合はS313、“No”の場合はS312に進む。
S312では、RAM69のシーン認識カウンタを0に設定し、シーン認識履歴をクリアし、半押し(S1)後認識時参照用シーン認識履歴をクリアする。
S313〜S321は、それぞれS9〜S17と同様である。
本処理では、前回のシーン認識結果SRが確定されていたときのフレーム状態と比べて、現フレームの状態が変動しているかを監視する。このフレーム変動状態はフレーム変動履歴として古いものから新しいものまで順次所定個数格納されていく。E_AUTOSR_FRAME_CHECK_HISTORY回分の履歴の中で、「フレーム変動あり」と判断された回数が、E_AUTOSR_SCENE_CHANGE_JUDGE以上であれば(S309で“Yes”)、「シーン変動あり」と判断され(S310)、認識部が動作する(S313)。
このように、シーン変動を判断する際に、フレーム変動履歴を使うことで、ハンチングを防止し、確実なシーン変動判断を行うことができる。
<第4実施形態>
図19は第4実施形態に係るメイン処理(シーン変動認識・周期的認識併存型)のフローチャートである。この処理は、図2(または図17)の処理と選択的に実行させることができる。この処理はカメラ1のCPU75によって実行が制御される。この処理を規定するプログラムはROM68に記憶されている。
S401はS1と同様である。
S402は、RAM69のフレーム変動履歴を初期化し、フレーム変動基準情報を初期化し、status=サーチ状態とし、チェックカウンタ=0とし、シーン認識履歴保持フラグ=OFFとする。
S403では、status=確定状態か否かを判断する。“Yes”の場合はS404、“
No”の場合はS415に進む。
S404では、周期的に認識部を動作させる旨のフラグが設定されているか(E_AUTOSR_RECOGNIZE_CYCLE_TYPE=0)否かを判断する。“Yes”の場合はS405、“No”の場合はS412に進む。E_AUTOSR_RECOGNIZE_CYCLE_TYPEの値は、操作部11からユーザが任意に入力できてもよいし、予めメーカ側でROM68に記憶されていてもよい。周期の単位も任意であり、かつそれをユーザが操作部11から任意に入力できてもよい。例えば、5フレームごと、2秒間などの周期を設定できる。周期的に認識部を動作させることにより、認識結果は目まぐるしく変わることはなく、安定性が向上する。また、周期的にチェックをするため、一旦不適切な認識をしたとしても、その結果以後継続して出力されたままとはならない。
S405〜S411は、それぞれS304〜S310と同様である。
S412〜414では、シーン認識を行う固定周期の到来の有無に応じてstatus=サーチ状態にする。すなわち、S412では、チェックカウンタを1だけインクリメントし、S413では、チェックカウンタがROM68に記憶された所定のサーチ周期E_AUTOSR_CONST_SEARCH_CYCLEに到達したか否かを判断する。“Yes”の場合はS414に進む。“No”の場合はS401に戻る。S414では、status=サーチ状態にし、チェックカウンタを0にする。
S415〜S425は、それぞれS311〜S321と同様である。
認識部が動作するタイミング、つまりシーン認識を行うタイミングをシーン変動時にする場合と一定周期ごとにする場合とでは、それぞれ一長一短がある。シーン変動時にシーン認識を行う場合は、応答性が一定周期ごとに行う場合と比べると高い。これに対し、一定周期ごとシーン認識を行う場合は、安定性に優れ、一旦間違ったシーン判定(シーン認識)をした場合であっても、それが画面上に出力されることはない。そのため、どちらの方式を採用するかをユーザに選択可能にすることで、ユーザ独自の使いやすさの向上につなげることが可能となる。
また、認識部が動作するタイミングをユーザ選択によって決定することとせず、設計者が予め選択する場合であっても、共通のファームウェアをベースに、パラメータの違いにより両者の動作を実現させることが可能となる。そのため、ファームウェアの変更なしに、異なるカメラ製品(機種)のターゲットとするユーザ別に制御を変えることも可能である。