(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2023058260
(43)【公開日】2023-04-25
(54)【発明の名称】撮像装置、画像処理装置、画像処理方法、及びプログラム
(51)【国際特許分類】
H04N 23/68 20230101AFI20230418BHJP
H04N 23/60 20230101ALI20230418BHJP
G03B 5/00 20210101ALI20230418BHJP
【FI】
H04N5/232 480
H04N5/232 290
G03B5/00 J
G03B5/00 K
【審査請求】未請求
【請求項の数】12
【出願形態】OL
(21)【出願番号】P 2021168168
(22)【出願日】2021-10-13
(71)【出願人】
【識別番号】000000376
【氏名又は名称】オリンパス株式会社
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(74)【代理人】
【識別番号】100182936
【弁理士】
【氏名又は名称】矢野 直樹
(72)【発明者】
【氏名】福田 崇徳
【テーマコード(参考)】
2K005
5C122
【Fターム(参考)】
2K005CA02
2K005CA14
2K005CA15
2K005CA23
2K005CA24
2K005CA28
2K005CA54
5C122EA41
5C122FA08
5C122FH12
5C122FH18
5C122HA78
5C122HA86
5C122HA88
5C122HB01
5C122HB06
5C122HB10
(57)【要約】
【課題】連続撮影等して得た複数の画像を合成することによって、低速シャッターで手ぶれを抑えて撮影した画像相当の画像を安定した精度で得ることができる技術を提供する。
【解決手段】連続撮像して生成した複数の画像を合成する撮像装置は、複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出する算出部と、算出部により算出された特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、特性の異なる複数種類の局所的な動きベクトルのうちから動きベクトルを選択する選択部と、選択部により選択された動きベクトルに基づいて複数の画像を合成する合成部と、を備える。
【選択図】
図5
【特許請求の範囲】
【請求項1】
連続撮像して生成した複数の画像を合成する撮像装置であって、
前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出する算出部と、
前記算出部により算出された前記特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、前記特性の異なる複数種類の局所的な動きベクトルのうちから動きベクトルを選択する選択部と、
前記選択部により選択された動きベクトルに基づいて前記複数の画像を合成する合成部と、
を備えることを特徴とする撮像装置。
【請求項2】
前記算出部は、前記複数の画像間の局所的な動きに基づく第1動きベクトルを算出し、前記第1動きベクトルに基づいて前記撮像装置の姿勢変化に関する第2動きベクトルを算出することを特徴とする請求項1に記載の撮像装置。
【請求項3】
装置ぶれ補正部を有し、
前記算出部は、前記装置ぶれ補正部が出力する装置ぶれ補正量に基づいて前記第2動きベクトルを算出することを特徴とする請求項2に記載の撮像装置。
【請求項4】
センサを有し、
前記算出部は、前記センサの出力を補助情報として用いて前記第2動きベクトルを算出することを特徴とする請求項2に記載の撮像装置。
【請求項5】
前記算出部は、前記撮像装置の姿勢変化を仮定し、前記仮定した姿勢変化と前記第1動きベクトルとの差が最小となる姿勢変化を求め、前記最小となる姿勢変化に基づいて前記第2動きベクトルを算出する請求項2に記載の撮像装置。
【請求項6】
前記選択部は、前記第1動きベクトルの信頼度が高い場合、且つ、前記第1動きベクトルと前記第2動きベクトルとの差分が第1閾値より大きい場合に、前記第2動きベクトルを選択することを特徴とする請求項2乃至5の何れか一項に記載の撮像装置。
【請求項7】
前記選択部は、前記第2動きベクトルの周辺に位置する複数の前記第1動きベクトルのばらつきが第2閾値より大きい場合に、前記第2動きベクトルを選択することを特徴とする請求項2乃至5の何れか一項に記載の撮像装置。
【請求項8】
前記算出部は、前記第1動きベクトルの周辺に位置する複数の前記第1動きベクトルに基づいて第3動きベクトルを算出することを特徴とする請求項2乃至7のいずれか一項に記載の撮像装置。
【請求項9】
前記選択部は、前記第1動きベクトルの信頼度が低い場合、且つ、前記第2動きベクトルと前記第3動きベクトルとの差分が第3閾値より小さい場合に、前記第2動きベクトルを選択することを特徴とする請求項8に記載の撮像装置。
【請求項10】
連続撮像されて生成された複数の画像を合成する画像処理方法であって、
前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出し、
算出した前記特性の異なる複数種類の動きベクトルの信頼度に基づいて、前記特性の異なる複数種類の動きベクトルのうちから動きベクトルを選択し、
選択した前記動きベクトルに基づいて前記複数の画像を合成する、
ことを特徴とする画像処理方法。
【請求項11】
連続撮像されて生成された複数の画像を合成する画像処理をプロセッサに実行させるプログラムであって、前記画像処理は、
前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出し、
算出した前記特性の異なる複数種類の動きベクトルの信頼度に基づいて、前記特性の異なる複数種類の動きベクトルのうちから動きベクトルを選択し、
選択した前記動きベクトルに基づいて前記複数の画像を合成する、
という処理を含むことを特徴とするプログラム。
【請求項12】
連続撮像されて生成された複数の画像から動き領域を検出する画像処理装置であって、
前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出する算出部と、
前記算出部により算出された前記特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、前記複数の画像の動き領域を検出する検出部と、
を備えることを特徴とする画像処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書の開示は、撮像装置、画像処理装置、画像処理方法、及びプログラムに関する。
【背景技術】
【0002】
従来、連続撮影等して得た複数の画像を合成することによって低速シャッターで手ぶれを抑えて撮影した画像相当の画像を生成する手法が提案されている。例えば、特許文献1には、基準画像と参照画像の画像間の大域的な動きを反映したグローバル動きベクトルと、基準画像と参照画像の画像間の局所的な動きを反映したローカル動きベクトルとを算出し、グローバル動きベクトルとローカル動きベクトルから動領域情報を算出し、グローバル動きベクトルに基づき参照画像を補正した補正参照画像とローカル動きベクトルに基づき参照画像を補正した補正参照画像とを動領域情報により決定される合成比率で基準画像と合成するようにした画像合成装置が提案されている。この画像合成装置によれば、例えば、動く被写体(車等)の軌跡が表現されるように低速シャッターで手ぶれを抑えて撮影した画像相当の画像を生成することができる。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
特許文献1の画像合成装置では、算出した動領域情報が動領域を示す場合に、動領域情報により決定される合成比率が、グローバル動きベクトルに基づき参照画像を補正した補正参照画像を1とし、ローカル動きベクトルに基づき参照画像を補正した補正参照画像を0として、基準画像との合成が行われる場合がある。これは、動領域をローカル動きベクトルに基づいて合成を行ってしまうと動く被写体の軌跡が表現されなくなってしまうことから、グローバル動きベクトルに基づいて合成を行う、という思想に基づくものと考えられる。
【0005】
しかしながら、このような場合の合成では、画像全体が一様に動いている場合にしか良好な合成画像が得られない虞がある。一般的なカメラの撮影では、カメラの光学的な歪みの影響や、手ぶれ(角度ぶれ)によるカメラの回転、あおりの影響や、手ぶれ(並進ぶれ)による視差の影響等があるため、動領域を一様にグローバル動きベクトルに基づいて合成してしまうと、動く被写体の背景領域のぶれを抑えることができず、局所的にぶれた画像が得られてしまう。
【0006】
また、画像全体において高信頼度で動きベクトルが算出されている場合にしか良好な合成画像が得られない虞もある。特許文献1の画像合成装置では、動領域情報をグローバル動きベクトルとローカル動きベクトルとの差分によって算出していることから、それぞれの動きベクトルが高信頼度で算出されていないと動領域情報を正しく算出することができない。そのため、特に低コントラストの被写体が撮影された画像を合成する場合には、ぶれた画像が得られ易くなってしまう。
【0007】
以上のような実情を踏まえ、本発明の一側面に係る目的は、連続撮影等して得た複数の画像を合成することによって、低速シャッターで手ぶれを抑えて撮影した画像相当の画像を安定した精度で得ることができる技術を提供することである。
【課題を解決するための手段】
【0008】
本発明の一態様に係る装置は、連続撮像して生成した複数の画像を合成する撮像装置であって、前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出する算出部と、前記算出部により算出された前記特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、前記特性の異なる複数種類の局所的な動きベクトルのうちから動きベクトルを選択する選択部と、前記選択部により選択された動きベクトルに基づいて前記複数の画像を合成する合成部と、を備える。
【0009】
本発明の一態様に係る方法は、連続撮像されて生成された複数の画像を合成する画像処理方法であって、前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出し、算出した前記特性の異なる複数種類の動きベクトルの信頼度に基づいて、前記特性の異なる複数種類の動きベクトルのうちから動きベクトルを選択し、選択した前記動きベクトルに基づいて前記複数の画像を合成する。
【0010】
本発明の一態様に係るプログラムは、連続撮像されて生成された複数の画像を合成する画像処理をプロセッサに実行させるプログラムであって、前記画像処理は、前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出し、算出した前記特性の異なる複数種類の動きベクトルの信頼度に基づいて、前記特性の異なる複数種類の動きベクトルのうちから動きベクトルを選択し、選択した前記動きベクトルに基づいて前記複数の画像を合成する、という処理を含む。
【0011】
本発明の他の一態様に係る装置は、連続撮像されて生成された複数の画像から動き領域を検出する画像処理装置であって、前記複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出する算出部と、前記算出部により算出された前記特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、前記複数の画像の動き領域を検出する検出部と、を備える。
【発明の効果】
【0012】
上記の態様によれば、連続撮影等して得た複数の画像を合成することによって、低速シャッターで手ぶれを抑えて撮影した画像相当の画像を安定した精度で得ることができる。
【図面の簡単な説明】
【0013】
【
図1】第1の実施形態に係る撮像装置であるカメラの構成を例示する図である。
【
図2】メイン処理の流れを例示するフローチャートである。
【
図3】第1の実施形態に係る静止画撮影動作処理(S105)の流れを例示するフローチャートである。
【
図4】第1の実施形態に係る画像合成処理(S210)の具体例を模式的に示す図である。
【
図5】第1の実施形態に係る画像合成処理(S210)の流れを例示するフローチャートである。
【
図6】第1の実施形態に係る第2動きベクトル算出処理(S302)の流れを例示するフローチャートである。
【
図7】第1の実施形態に係る動きベクトル選択処理(S304)の流れを例示するフローチャートである。
【
図8】第1の実施形態に係る別の動きベクトル選択処理(S304)の流れを例示するフローチャートである。
【
図9】第1の実施形態に係る画像合成処理(S305)の流れを例示するフローチャートである。
【
図10】局所領域、第1動きベクトル、第2動きベクトル、及び第3動きベクトルを例示する図である。
【
図11】第1動きベクトル、第2動きベクトル、及び第3動きベクトルのスコープを例示する図である。
【
図12】第2の実施形態に係る静止画撮影動作処理(S105)の流れを例示するフローチャートである。
【
図13】第3の実施形態に係る静止画撮影動作処理(S105)の流れを例示するフローチャートである。
【
図14】第3の実施形態に係る第2動きベクトル算出処理(S302)の流れを例示するフローチャートである。
【
図15】第4の実施形態に係る画像合成処理(S210)の具体例を模式的に示す図である。
【
図16】第4の実施形態に係る画像合成処理(S210)の流れを例示するフローチャートである。
【
図17】第4の実施形態に係る第2動きベクトル算出処理(S302)の流れを例示するフローチャートである。
【
図18】第4の実施形態に係る動きベクトル選択処理(S304)の流れを例示するフローチャートである。
【
図20】血管領域判定処理の流れを例示するフローチャートである。
【
図21】動領域/静領域判定処理(S1401)の流れを例示するフローチャートである。
【
図22】動きベクトルの時間変化の一例を模式的に示す図である。
【
図23】複数の動領域の一例を模式的に示す図である。
【発明を実施するための形態】
【0014】
<第1の実施形態>
図1は、第1の実施形態に係る撮像装置であるカメラの構成を例示する図である。
図1に例示したカメラ100は、レンズユニット200及びボディユニット300を含む。レンズユニット200は、ボディユニット300に対して着脱自在に構成されている。レンズユニット200のボディユニット300への装着は、レンズユニット200に設けられたレンズ側マウント部201とボディユニット300に設けられたボディ側マウント部301とが互いに勘合することにより行われる。これにより、レンズユニット200がボディユニット300に固定されると共に、レンズユニット200に設けられたレンズ側通信コネクタ202とボディユニット300に設けられたボディ側通信コネクタ302とが電気的に接続され、レンズユニット200とボディユニット300との間で通信が可能になる。
【0015】
レンズユニット200は、撮影レンズ203、レンズ駆動回路204、レンズ側姿勢変化検出部205、レンズ側防振制御回路206、絞り207、絞り駆動回路208、EEPROM(Electrically Erasable Programmable Read―Only Memory)209、及びレンズ制御用マイクロコンピュータ(以下「LCPU」と称す)210を含む。
【0016】
撮影レンズ203は、被写体の光学像である被写体像を撮像素子308の撮像面に結像する。
図1では、説明の便宜上、撮影レンズ203を1つのレンズとして示すが、実際には、フォーカスレンズ及び防振用レンズを含む複数のレンズから構成されている。撮影レンズ203は、更に、ズームレンズを含んでもよい。
【0017】
レンズ駆動回路204は、LCPU210の制御の下、撮影レンズ203(例えばフォーカスレンズ)を駆動する。また、レンズ駆動回路204は、LCPU210及びレンズ側防振制御回路206の制御の下、撮影レンズ203に含まれる防振用レンズを駆動する。レンズ駆動回路204は、例えば、ステッピングモータ及びモータドライバ(モータドライブ回路)を含んで構成される。
【0018】
レンズ側姿勢変化検出部205は、カメラ100(詳しくはレンズユニット200)の姿勢変化を検出する。レンズ側姿勢変化検出部205は、レンズ側Y方向Gセンサ2051、レンズ側X方向Gセンサ2052、レンズ側ピッチジャイロセンサ2053、レンズ側ヨージャイロセンサ2054、及びレンズ側ロールジャイロセンサ2055を含む。これらのセンサは、カメラ100(詳しくはレンズユニット200)の各方向の加速度や角速度を検出する。
【0019】
ここで、カメラの各方向を定義しておく。カメラ100のX方向、Y方向、及びZ方向を、カメラ100の左右方向、上下方向、及び前後方向とする。なお、カメラ100のZ方向は、撮影レンズ203の光軸方向でもあり、カメラ100のX方向及びY方向は、撮影レンズ203の光軸方向に直交し且つ互いに直交する2つの方向でもある。また、カメラ100のピッチ方向を、カメラ100のX方向の軸を回転軸とする回転方向とし、カメラ100のヨー方向を、カメラ100のY方向の軸を回転軸とする回転方向とし、カメラ100のロール方向を、カメラ100のZ方向の軸を回転軸とする回転方向とする。
【0020】
レンズ側Y方向Gセンサ2051は、カメラ100のY方向の加速度を検出する。レンズ側X方向Gセンサ2052は、カメラ100のX方向の加速度を検出する。レンズ側ピッチジャイロセンサ2053は、カメラ100のピッチ方向の回転角速度を検出する。レンズ側ヨージャイロセンサ2054は、カメラ100のヨー方向の回転角速度を検出する。レンズ側ロールジャイロセンサ2055は、カメラ100のロール方向の回転角速度を検出する。
【0021】
レンズ側防振制御回路206は、LCPU210の制御の下、レンズ側姿勢変化検出部205の検出結果である、レンズ側Y方向Gセンサ2051、レンズ側X方向Gセンサ2052、レンズ側ピッチジャイロセンサ2053、レンズ側ヨージャイロセンサ2054、及びレンズ側ロールジャイロセンサ2055の検出結果に基づいて、レンズ駆動回路204を制御することにより、撮像素子308の撮像面に結像されている被写体像の像ぶれを打ち消す方向に撮影レンズ203に含まれる防振用レンズを移動させる。なお、防振用レンズは、撮影レンズ203の光軸方向に直交する方向に移動可能である。
【0022】
絞り207は、開口面積を変化させることにより、撮像面に結像される被写体像の光量を調整する。これにより、露出の調整が行われる。絞り駆動回路208は、LCPU210の制御の下、絞り207を駆動する。絞り駆動回路208は、例えば、ステッピングモータ及びモータドライバを含んで構成される。
【0023】
EEPROM209は、レンズユニット200の動作を制御するプログラムや、そのプログラムの実行に必要なデータや、レンズユニット200に関する情報等を記憶する。LCPU210は、プロセッサを含み、EEPROM209に記憶されたプログラムを実行する。これにより、LCPU210は、レンズ側通信コネクタ202を経由してボディ制御用マイクロコンピュータ(以下「BCPU」と称す)329と通信を行い、BCPU329の制御の下、レンズユニット200の各部を制御してレンズユニット200の全体動作を制御する。LCPU210は、例えば、ASIC(Aplication Specific Integrated Circuit)又はFPGA(Field―Programmable Gate Array)等により構成されてもよい。
【0024】
ボディユニット300は、シャッター303、シャッターチャージ機構304、シャッター制御回路305、防塵機構306、防塵制御回路307、撮像素子308、撮像素子インターフェース回路(以下「撮像素子I/F回路」と称す)309、画像処理コントローラ310、記録メディア311、SDRAM(Synchronous Dynamic Random Access Memory)312、FLASH ROM(Read Only Memory)(以下「フラッシュROM」と称す)313、外部出力端子314、液晶モニター315、電子ビューファインダー316、撮像ステージ317、撮像ステージ駆動回路318、ボディ側姿勢変化検出部319、ボディ側防振制御回路320、ストロボ321、ストロボ駆動回路322、電源回路323、電池324、無線回路325、動作表示部326、カメラ操作SW(SWitch)327、EEPROM328、及びBCPU329を含む。
【0025】
シャッター303は、先幕3031及び後幕3032の開閉動作を行うことにより、撮像素子308の撮像面を露光状態又は遮光状態にする。シャッター303は、例えばフォーカルプレーンシャッターである。シャッターチャージ機構304は、BCPU329の制御の下、シャッター303の先幕3031と後幕3032を駆動するバネをチャージする。シャッター制御回路305は、BCPU329の制御の下、シャッター303の動作、詳しくは先幕3031と後幕3032の動作、を制御する。
【0026】
防塵機構306は、撮像素子308により撮像され得る塵埃を除去する。例えば、防塵機構306は、その除去を、超音波によりフィルタを振動させることにより行う。このようなフィルタは、超音波防塵フィルタとも称する。防塵制御回路307は、BCPU329の制御の下、防塵機構306の動作を制御する。
【0027】
撮像素子308は、撮像面に結像された被写体像を電気信号に変換する。すなわち、被写体像を撮像する。撮像素子308は、例えばCCD(Charge Coupled Device)又はCMOS(Ccomplementary Metal Oxide Semiconductor)等のイメージセンサである。
【0028】
撮像素子I/F回路309は、BCPU329の制御の下、撮像素子308の動作を制御すると共に、撮像素子308から出力される画像信号を画像処理コントローラ310へ出力する。なお、BCPU329による撮像素子I/F回路309の制御は、画像処理コントローラ310を経由して行われる。
【0029】
画像処理コントローラ310は、BCPU329の制御の下、撮像素子308から出力された画像信号に対してγ補正、色変換、デモザイキング等の各種の画像処理を施して画像データ(以下単に「画像」とも称す)を生成する。例えば、表示用(ライブビュー用も含む)に適した画像処理を施して表示用の画像を生成したり、記録用に適した画像処理を施して記録用の画像を生成したりする。なお、表示用に適した画像処理や記録用に適した画像処理を現像処理とも称す。また、画像処理コントローラ310は、BCPU329の制御の下、複数の画像データ(複数フレームの画像データ)を用いて合成画像データ(以下単に「合成画像」とも称す)を生成する。ここで、複数の画像データは、カメラ100で連続撮影(例えば連写)が行われたときに撮像素子308から出力された画像信号から生成されたものである。また、画像処理コントローラ310は、BCPU329の制御の下、生成した合成画像に対して現像処理を施し、表示用の画像を生成したり記録用の画像を生成したりする。また、画像処理コントローラ310は、BCPU329の制御の下、記録メディア311に記録された画像に対して伸張処理を含む画像処理を施して再生用の画像を生成する。
【0030】
なお、画像処理コントローラ310は、プロセッサを含んで構成されてもよい。この場合、プロセッサがプログラムを実行することで、画像処理コントローラ310の処理が行われてもよい。また、画像処理コントローラ310は、ASICやFPGA等により構成されてもよい。
【0031】
記録メディア311は、ボディユニット300に対して着脱自在なSDカード、コンパクトフラッシュ(登録商標)等の不揮発性の記録媒体である。なお、記録メディア311は、ボディユニット300に内蔵されたハードディスクや半導体メモリ等でもよい。記録メディア311は、例えば、画像処理コントローラ310により生成された画像を記録する。
【0032】
SDRAM312は、画像処理コントローラ310のワークエリアとして使用され、例えば、画像処理コントローラ310による処理中の画像が一時的に格納される。フラッシュROM313は、画像処理コントローラ310による画像処理に必要な各種パラメータ等を記憶する。また、フラッシュROM313は、画像処理コントローラ310のプロセッサが実行するプログラムや、そのプログラムの実行に必要なデータ等を記憶してもよい。
【0033】
外部出力端子314は、ケーブルを経由して外部装置と接続され、例えば、画像処理コントローラ310により生成された画像を外部装置へ出力する。液晶モニター315は、画像処理コントローラ310により生成された画像や各種情報等を表示する。電子ビューファインダー316は、液晶モニター315と同様に、画像処理コントローラ310により生成された画像や各種情報等を表示する。
【0034】
撮像ステージ317は、撮像素子308を撮像面に平行な方向へ移動させると共に、撮像素子308を、撮像面に直交する軸を回転軸として回転させる駆動機構である。撮像ステージ317は、撮像素子308を平行移動及び回転させるための複数のアクチュエータを含んで構成される。複数のアクチュエータは、例えばVCM(Voice Coil Motor)である。撮像ステージ駆動回路318は、BCPU329及びボディ側防振制御回路320の制御の下、撮像ステージ317を駆動する。
【0035】
ボディ側姿勢変化検出部319は、カメラ100(詳しくはボディユニット300)の姿勢変化を検出する。ボディ側姿勢変化検出部319は、ボディ側Y方向Gセンサ3191、ボディ側X方向Gセンサ3192、ボディ側ピッチジャイロセンサ3193、ボディ側ヨージャイロセンサ3194、及びボディ側ロールジャイロセンサ3195を含む。
【0036】
ボディ側Y方向Gセンサ3191は、カメラ100のY方向の加速度を検出する。ボディ側X方向Gセンサ3192は、カメラ100のX方向の加速度を検出する。ボディ側ピッチジャイロセンサ3193は、カメラ100のピッチ方向の回転角速度を検出する。ボディ側ヨージャイロセンサ3194は、カメラ100のヨー方向の回転角速度を検出する。ボディ側ロールジャイロセンサ3195は、カメラ100のロール方向の回転角速度を検出する。
【0037】
ボディ側防振制御回路320は、BCPU329の制御の下、ボディ側姿勢変化検出部319の検出結果である、ボディ側Y方向Gセンサ3191、ボディ側X方向Gセンサ3192、ボディ側ピッチジャイロセンサ3193、ボディ側ヨージャイロセンサ3194、及びボディ側ロールジャイロセンサ3195の検出結果に基づいて、撮像ステージ駆動回路318を制御することにより、撮像素子308の撮像面に結像されている被写体像の像ぶれを打ち消す方向に撮像素子308を移動させる。
【0038】
ストロボ321は、露光動作であるシャッター303の動作に同期して発光する。ストロボ321は、光源として、例えばキセノンランプ又はLED(Light Emitting Diode)を含む。ストロボ駆動回路322は、BCPU329の制御の下、ストロボ321を駆動して発光させる。
【0039】
電源回路323は、BCPU329の制御の下、電池324の電圧を、カメラ100の各部の回路が必要とする電圧に変換して供給する。無線回路325は、BCPU329の制御の下、図示しない外部装置と無線通信を行い、例えば、画像処理コントローラ310により生成された画像を外部装置へ出力する。動作表示部326は、カメラ100の動作状態をユーザに通知するためのLEDを備え、BCPU329の制御の下、カメラ100の動作状態に応じてLEDを点灯又は消灯させる。
【0040】
カメラ操作SW327は、カメラ100の電源をオン状態又はオフ状態へ切り換えるための指示入力を受け付ける電源スイッチ(以下「電源SW」と称す)、撮影指示入力を受け付けるレリーズスイッチ、動作モードを静止画撮影モード、動画撮影モード、又は再生モードへ切り換えるための指示入力を受け付けるモード切換スイッチ、メニュー画面を表示する指示入力を受け付けるメニュースイッチ、メニュー画面上の項目を選択する指示入力を受け付ける選択スイッチ、選択された項目を確定する指示入力を受け付ける確定スイッチ等の各種スイッチを備える。メニュー画面は、液晶モニター315又は電子ビューファインダー316に表示される。例えば、撮影時のシャッタースピードや露出等の撮影条件は、メニュースイッチ、選択スイッチ、及び確定スイッチの操作により、メニュー画面から入力、設定が可能である。また、複数の静止画を合成して記録するモードである静止画合成モードは、メニュースイッチ、選択スイッチ、及び確定スイッチの操作により、メニュー画面から設定が可能である。静止画合成モードの設定は、メニュー画面から行われることに限られず、例えば、専用のスイッチを用いて行われてもよい。この場合は、カメラ操作SW327が、静止画合成モードを設定するための指示入力を受け付けるスイッチを備えてもよい。
【0041】
EEPROM328は、カメラ100の動作を制御するプログラムや、そのプログラムの実行に必要なデータ等を記憶する。BCPU329は、プロセッサを含み、EEPROM328に記憶されたプログラムを実行する。これにより、BCPU329は、ボディ側通信コネクタ302を経由してLCPU210と通信を行うと共に、カメラ100の各部を制御してカメラ100の全体動作を制御する。BCPU329は、例えば、ASIC又はFPGA等により構成されてもよい。
【0042】
次に、カメラ100において実行される処理について説明する。カメラ100において実行される処理は、BCPU329の制御の下に行われる。
図2は、カメラ100において実行されるメイン処理の流れを例示するフローチャートである。
【0043】
図2に例示したメイン処理では、まず、ステップ(以下単に「S」という)101において、BCPU329は、カメラ操作SW327の電源SWがオンにされたか否かを判定する。S101の判定結果がNOの場合は、S101の判定を繰り返す。
【0044】
一方、S101の判定結果がYESの場合、S102において、BCPU329は、カメラ初期化処理を行う。この処理では、例えば、レンズユニット200に関する情報をLCPU210から取得する等の処理が行われる。
【0045】
次に、S103において、BCPU327は、設定されている動作モードが、静止画撮影モード、動画撮影モード、及び再生モードのいずれであるかを判定する。なお、動作モードの切り換えは、カメラ操作SW327のモード切換スイッチにより行われる。
【0046】
S103の判定結果が静止画撮影モードである場合、S104において、BCPU329は、静止画撮影待機動作処理を行う。この処理では、被写体像を撮像してライブビュー用に適した画像処理を施して得た画像を液晶モニター315又は電子ビューファインダー316に表示する、という動作を繰り返すための処理、すなわちライブビュー動作を行うための処理が行われる。そして、S104の処理中において静止画撮影指示が為されると、S105において、BCPU329は、静止画撮影動作処理を行う。この処理の詳細については、
図3を用いて後述する。
【0047】
次に、S106において、BCPU329は、静止画撮影動作が終了したか否かを判定する。S106の判定結果がNOの場合はS106の判定を繰り返し、S106の判定結果がYESの場合は処理がS112へ進む。
【0048】
一方、S103の判定結果が動画撮影モードである場合、S107において、BCPU329は、動画撮影待機動作処理を行う。この処理では、S104の処理と同様に、ライブビュー動作を行うための処理が行われる。そして、S107の処理中において動画撮影開始指示が為されると、S108において、BCPU329は、動画撮影動作処理を行う。この処理では、動画撮影終了指示が為されるまで、設定されているシャッタースピードや露出等の撮影条件に従って被写体の動画を撮影し、記録メディア311に記録する、という動画撮影動作を行うための処理が行われる。
【0049】
次に、S109において、BCPU329は、動画撮影動作が終了したか否かを判定する。S109の判定結果がNOの場合はS109の判定を繰り返し、S109の判定結果がYESの場合は処理がS112へ進む。
【0050】
一方、S103の判定結果が再生モードである場合は、S110において、BCPU329は、再生モード動作処理を行う。この処理では、例えば、記録メディア311に記録されている画像データを液晶モニター315に表示する、という再生モード動作を行うための処理が行われる。
【0051】
次に、S111において、BCPU329は、再生モード動作が終了したか否かを判定する。S111の判定結果がNOの場合はS111の判定を繰り返し、S111の判定結果がYESの場合は処理がS112へ進む。
【0052】
S112において、BCPU329は、カメラ操作SW327の電源SWがオフにされたか否かを判定する。S112の判定結果がNoの場合は、処理がS103へ戻る。一方、S112の判定結果がYESの場合、S113において、BCPU329は、終了処理を行う。この処理では、例えば、撮影レンズ3を初期位置に戻す等の動作を行うための処理が行われる。S113の処理が終了すると、
図2に例示したメイン処理が終了する。
【0053】
図3は、静止画撮影動作処理(S105)の流れを例示するフローチャートである。
図4は、画像合成処理(S210)の具体例を模式的に示す図である。これらの図を参照しながら、静止画撮影動作処理(S105)について詳細に説明する。なお、本実施形態に係る静止画撮影動作処理(S105)では、光学式手ぶれ補正(レンズ側防振制御回路206等による防振用レンズの移動及び又はボディ側防振制御回路320等による撮像素子308の移動)を行わないものとする。
【0054】
図3に例示した静止画撮影動作処理(S105)では、まず、S201において、BCPU327は、初期化処理を行う。この処理では、SDRAM312をクリアするバッファクリア処理等が行われる。
【0055】
次に、S202において、BCPU329は、静止画合成モードが設定されているか否かを判定する。S202の判定結果がYESの場合は処理がS203へ進み、静止画合成モードによる静止画撮影動作処理が行われる。一方、S202の判定結果がNOの場合は処理がS214へ進み、通常の静止画撮影動作処理が行われる。
【0056】
詳しくは、S202の判定結果がYESの場合、S203において、BCPU329は、合成枚数を算出する。合成枚数は、後述する画像合成処理(S210)において、合成画像の生成に用いられる画像の数である。合成枚数は、例えば、設定されている撮影時のシャッタースピードに基づいて算出される。この場合、合成枚数は、低速シャッター撮影時のシャッタースピードに相当する時間を、設定されている撮影時のシャッタースピードで除算することにより算出されてもよい。但し、この場合は、算出結果の値が小数点以下を含む場合があり、必ずしも整数値にはならない。そこで、算出結果の値が小数点以下を含む場合は、小数点以下を切り捨て、切り上げ、又は四捨五入する等して、算出結果の値が必ず整数値になるようにしてもよい。なお、低速シャッター撮影時のシャッタースピードに相当する時間は、予め決められた時間であってもよいし、メニュー画面から入力又は選択、設定されるものであってもよい。
【0057】
次に、S204において、BCPU329は、露出を設定する。詳しくは、静止画撮影待機動作処理(
図2のS104)の処理中に撮像素子308から読み出された画像信号に基づいて検出された被写体輝度に基づいて、絞り207の駆動及び撮像感度の設定を行う。絞り207の駆動は、LCPU210が絞り駆動回路208を制御することによって行われる。撮像感度の設定は、撮像素子I/F回路309が撮像素子308を制御することによって行われる。
【0058】
次に、S205において、BCPU329は、静止画撮像駆動を開始し、S206において、撮像素子I/F回路309は、BCPU329の制御の下、撮像素子308から1フレーム分の画像信号を読み出して画像処理コントローラ310へ出力する。次に、S207において、画像処理コントローラ310は、BCPU329の制御の下、S206で撮像素子308から読み出された1フレーム分の画像信号に応じた画像を、SDRAM312に格納する、という画像バッファリングを行う。このときにSDRAM312に格納された画像を、以下、「バッファリング画像」とも称す。
【0059】
次に、S208において、BCPU329は、撮影終了か否か、詳しくはS203で算出された合成枚数分のバッファリング画像がSDRAM312に格納されたか否かを判定する。S208の判定結果がNOの場合は、処理がS206に戻る。一方、S208の判定結果がYESの場合、S209において、BCPU329は、静止画撮像駆動を終了する。
【0060】
次に、S210において、画像処理コントローラ310は、BCPU329の制御の下、SDRAM312に格納されている合成枚数分のバッファリング画像を合成することによって、低速シャッターで手ぶれを抑えて撮影した画像相当の合成画像を生成する、という画像合成処理を行う。例えば、
図4に示したように、合成枚数分のバッファリング画像401を合成することにより、低速シャッターで手ぶれを抑えて撮影した画像相当の合成画像402を生成する。このような画像合成処理(S210)の詳細については、
図5を用いて後述する。
【0061】
S210の後のS211乃至S213では、次のような処理が行われる。まず、S211において、画像処理コントローラ310は、BCPU329の制御の下、S210で生成された合成画像に対し現像処理を施す。詳しくは、S210で生成された合成画像に対して、表示用に適した画像処理を施して表示用の合成画像を生成すると共に、記録用に適した画像処理を施して記録用の合成画像を生成する。次に、S212において、BCPU329は、S211で生成された表示用の合成画像を液晶モニター315又は電子ビューファインダー316に表示する、という画像表示を行う。次に、S213において、BCPU329は、S211で生成された記録用の合成画像を記録メディア311に記録する、という静止画記録を行う。そして、S213の処理が終了すると、
図3に例示した静止画撮影動作処理(S105)が終了する。
【0062】
一方、S202の判定結果がNOの場合、S214乃至S217では、S204乃至S206及びS209と同様の処理が行われる。S217の後のS211乃至S213では、次のような処理が行われる。まず、S211において、画像処理コントローラ310は、BCPU329の制御の下、S216で撮像素子308から読み出された1フレーム分の画像信号に応じた画像に対し現像処理を施す。詳しくは、その画像に対して、表示用に適した画像処理を施して表示用の画像を生成すると共に、記録用に適した画像処理を施して記録用の画像を生成する。次に、S212において、BCPU329は、S211で生成された表示用の画像を液晶モニター315又は電子ビューファインダー316に表示する、という画像表示を行う。次に、S213において、BCPU329は、S211で生成された記録用の画像を記録メディア311に記録する、という静止画記録を行う。そして、S213の処理が終了すると、
図3に例示した静止画撮影動作処理(S105)が終了する。
【0063】
図5は、画像合成処理(S210)の流れを例示するフローチャートである。
図6は、第2動きベクトル算出処理(S302)の流れを例示するフローチャートである。
図7は、動きベクトル選択処理(S304)の流れを例示するフローチャートである。
図8は、別の動きベクトル選択処理(S304)の流れを例示するフローチャートである。
図9は、画像合成処理(S305)の流れを例示するフローチャートである。
図10は、局所領域、第1動きベクトル、第2動きベクトル、及び第3動きベクトルを例示する図である。
図11は、第1動きベクトル、第2動きベクトル、及び第3動きベクトルのスコープを例示する図である。これらの図を参照しながら、画像合成処理(S210)について詳細に説明する。なお、ここでは、SDRAM312に格納されている合成枚数分のバッファリング画像をN個のバッファリング画像(1フレーム目からNフレーム目までのN個のバッファリング画像)とする。
【0064】
図5に例示した画像合成処理(S210)では、はじめに、1フレーム目のバッファリング画像を基準画像とし、2フレーム目のバッファリング画像を参照画像として、S301乃至S305の処理が行われて両画像の画像合成が行われ、1番目の合成画像が保存される。次に、1フレーム目のバッファリング画像を基準画像とし、3フレーム目のバッファリング画像を参照画像として、S301乃至S304の処理が行われて動きベクトルが算出、選択される。そして、選択された動きベクトルに基づいてS305の処理が行われて1番目の合成画像と3フレーム目のバッファリング画像である参照画像の画像合成が行われる。以降、Nフレーム目のバッファリング画像を参照画像として動きベクトルの算出、選択と(N-1)番目の合成画像とNフレーム目のバッファリング画像(参照画像)の画像合成が行われるまで、同様の処理が繰り返される。すなわち、
図5に例示した画像合成処理は、基準画像を固定し参照画像とする画像を変更しながら、Nフレーム目のバッファリング画像を参照画像として動きベクトルを算出、選択し画像合成するまで、S301乃至S305の処理(基準画像と参照画像に基づく動きベクトルの算出、選択と選択された動きベクトルに基づく画像合成)を繰り返す処理である。なお、この例では1フレーム目のバッファリング画像を基準画像としたが、1フレーム目のバッファリング画像に限らず、2フレーム目やNフレーム目のバッファリング画像を基準画像としてもよい。
【0065】
詳しくは、まず、S301において、画像処理コントローラ310は、基準画像と参照画像の画像間の動きベクトルを、テンプレートマッチング法等を用いて第1動きベクトルとして算出する。例えば、
図10に示したように、基準画像411に設定された複数(この例では20個)の局所領域411aの各々をテンプレートとして、各テンプレートに最も類似する参照画像412の局所領域412aを探索することにより、各局所領域411aの第1動きベクトル411bを算出する。
【0066】
このときの動きベクトルの算出には、例えば、SAD(Sum of Absolute Difference)、NCC(Normalized Cross Correlation)、又はPOC(Phase-Only Correlation)といった手法を用いることができる。SADは、2つの画像間の画素値差分の絶対値の和が最小となる位置を動きベクトルとする手法である。NCCは、2つの画像間の正規化相互相関(とり得る値は-1~1)が1に最も近くなる位置を動きベクトルとする手法である。POCは、2つの画像間の位相相関が最大となる位置を動きベクトルとする手法である。
【0067】
このような動きベクトルの算出では、2つの画像が全く同じであり位置的な変化が加わったのみであれば正確な動きベクトルの算出が可能であるが、一般には撮像ノイズや経時的な被写体の変化(例えば、羽ばたきながら飛んでいる鳥)等が存在し、2つの画像が全く同じにはならない。このように完全一致しない2つの画像を比較することになるため、動きベクトルを算出する際には、動きベクトルがどの程度正しく得られているかを示す指標として信頼度を取得する。信頼度は、動きベクトルの算出方法に応じた値である。例えば、SADを用いて動きベクトルを算出する場合は、2つの画像間の画素値差分の絶対値の和の最小値が信頼度を表し、その最小値が閾値よりも小さければ信頼度が高く、閾値よりも大きければ信頼度が低いとなる。NCCを用いて動きベクトルを算出する場合は、2つの画像間の正規化相互相関が信頼度を表し、その相関値が閾値よりも大きければ信頼度が高く、閾値よりも小さければ信頼度が低いとなる。POCを用いて動きベクトルを算出する場合は、2つの画像間の位相相関が信頼度を表し、その相関値が閾値よりも大きければ信頼度が高く、閾値よりも小さければ信頼度が低いとなる。
【0068】
第1動きベクトルの算出(
図5のS301)が終了すると、S302において、画像処理コントローラ310は、第2動きベクトルを算出する。ここで、第2動きベクトル算出処理(S302)の詳細を、
図6を用いて説明する。
【0069】
図6に例示した第2動きベクトル算出処理(S302)では、まず、S401において、画像処理コントローラ310は、後述の具体例に示すように、
図5のS301で算出した第1動きベクトルを解析し、最尤推定等によってカメラ100の姿勢変化を算出する。
【0070】
次に、S402及びS403において、画像処理コントローラ310は、基準画像の各局所領域の第2動きベクトルを算出する。詳しくは、S402において、画像処理コントローラ310は、基準画像において処理対象とされていない局所領域を処理対象として、後述の具体例に示すように、その処理対象局所領域の第2動きベクトルを算出する。次に、S403において、画像処理コントローラ310は、全ての局所領域の第2動きベクトルを算出したか否かを判定する。S403の判定結果がNOの場合は、処理がS402に戻る。一方、S403の判定結果がYESの場合は、
図6に例示した第2動きベクトル算出処理が終了する。これにより、例えば、
図10に示したように、基準画像411の各局所領域411aの第2動きベクトル411cが算出される。
【0071】
ここで、第2動きベクトル算出処理(S302)の具体例として、2つの具体例を説明する。1つは、カメラ100の姿勢変化としてシフトぶれ(X方向、Y方向)と回転ぶれ(ロール方向のぶれ)を考慮する場合の具体例であり、もう一つは、カメラ100の姿勢変化が大きく且つ角度ぶれ(ピッチ方向、ヨー方向のぶれ)や光学系の歪みを考慮する場合の具体例である。
【0072】
<カメラ100の姿勢変化としてシフトぶれと回転ぶれを考慮する場合>
この場合は、第1動きベクトルをA
xyとし、第1動きベクトルの基準座標を
【数1】
とすると、基準画像の
【数2】
における画像パターンと、参照画像の
【数3】
における画像パターンとが一致する。
【0073】
カメラ100の姿勢変化は、未知のパラメータ(t
x、t
y、θ)を用いて、次の演算子として表せる。
【数4】
なお、t
x、t
yは、シフトぶれに対応するパラメータであり、θは、回転に対応するパラメータである。
【0074】
この姿勢変化に従って画像全体が動いたと仮定すると、基準画像と参照画像の座標は、次の関係式で結ばれる。
【数5】
【0075】
しかしながら、様々な要因によって第1動きベクトルにばらつきがあるため、この関係式は完全には成り立たない。つまり、誤差をεとすると、この関係式は、次のように表せる。
【数6】
【0076】
そして、次の式に表す誤差の総和(二乗和χ
2)が最小となるように姿勢変化を求めることで、画像の大域的な動きを判断できる。
【数7】
【0077】
この場合、姿勢変化が充分に小さいと仮定すれば、解析的にRを決定可能である。よって、得られたRを用いることで、第2動きベクトルB
xyを次の式により算出できる。
【数8】
【0078】
<カメラ100の姿勢変化が大きく且つ角度ぶれや光学系の歪みを考慮する場合>
この場合、カメラ100の姿勢変化は、未知のパラメータ(ψ、φ、θ)を用いて、次の演算子として表せる。
【数9】
なお、ψ、φは、角度ぶれに対応するパラメータであり、θは、回転に対応するパラメータである。
また、光学的な歪みをD
xyとする。
【0079】
このとき、基準画像と参照画像の座標は次の関係式で結ばれる。
【数10】
なお、fは、焦点距離を表す。
【0080】
そして、上述の場合と同様に、次の式に表す誤差の総和(二乗和χ
2)が最小となるように姿勢変化を求めるとこで、画像の大域的な動きを判断できる。
【数11】
【0081】
但し、この場合は、非線形演算が含まれており、解析的には解けないため、数値計算によってRを求める。そして、求めた姿勢変化のパラメータを用いて、第2動きベクトルB
xyを次の式により算出する。
【数12】
この式は同次座標の表現となっているため、f=1として正規化することで2次元の動きベクトルの成分が得られる。
【0082】
このようにして得られた第2動きベクトルは、大域的な動きを表しているものの、一般のグローバル動きベクトルとは異なる。例えば、画像に歪みがある場合や回転ぶれが発生している場合、第2動きベクトルは、画像全体で一様な動きベクトルとはならず、領域毎又は一部の領域で異なる動きベクトルが得られる。なお、第2動きベクトルは、必ずしもあらゆる影響を考慮して算出したものではなく推定値であるため、適切にマッチングできている領域に関しては第1動きベクトルの方が高精度となり、適切にマッチングできていない領域に関しては第2動きベクトルの方が高精度となる。
【0083】
第2動きベクトルの算出(
図5のS302)が終了すると、S303において、画像処理コントローラ310は、第3動きベクトルを算出する。より詳しくは、各局所領域の第3動きベクトルを、周囲(又は周辺)の局所領域の第1動きベクトル(第1動きベクトルの周辺に位置する複数の第1動きベクトルでもある)に基づいて算出する。例えば、周囲8個(上、下、右、左、右斜め上、右斜め下、左斜め上、左斜め下)の局所領域の第1動きベクトルの統計値(平均値や最頻値等)を、第3動きベクトルとして算出してもよい。あるいは、撮影対象の物体の形状等を検出し、同じ物体の領域に含まれる局所領域の第1動きベクトルに限定して統計値を得るようにしてもよい。これにより、例えば、
図10に示したように、周囲の局所領域411aについての第1動きベクトル411bに基づいて、各局所領域411aの第3動きベクトル411dが算出される。
【0084】
なお、このような第3動きベクトルの算出は、撮影対象の物体がある程度の大きさを有し、被写体距離が急峻に変化しないことを仮定すると、周囲の動きベクトル(第1動きベクトル)から適切な動きベクトル(第3動きベクトル)を算出することが可能であるという前提に基づいている。
【0085】
奥行きのある被写体等では、カメラ100の姿勢変化に基づく第2動きベクトルの推定が適切な結果を得ない領域が生じる場合がある。例えば、同じ姿勢変化でも、被写体距離が異なると、視差によって第1動きベクトルが異なってしまう。そのような領域に対しては、第3動きベクトルが最も高精度となる。
【0086】
このようにして
図5のS301乃至S303で算出される第1動きベクトル、第2動きベクトル、及び第3動きベクトルは、そのスコープ(注目する画像領域の範囲)が異なると解釈できる。これらのスコープを
図11に例示する。
図11では、左側に第1動きベクトルのスコープ421bを例示し、中央に第2動きベクトルのスコープ421cを例示し、右側に第3動きベクトルのスコープ421dを例示する。なお、
図11では、基準画像421に88(=8×11)個の局所領域421aが設定されているものとする。各局所領域421aは、各動きベクトルの算出位置に対応する。
【0087】
図11に例示したように、第1動きベクトルは、最も狭い領域(例えばスコープ421b)に注目した動きを表していると解釈できる。第2動きベクトルは、最も広い領域(画像全体)(例えばスコープ421c)に注目した動きを表していると解釈できる。第3動きベクトルは、第1動きベクトルと第2動きベクトルの中間的な広さの領域(例えばスコープ421d)に注目した動きを表していると解釈できる。
【0088】
画像中には様々な要素によるぶれが混在しているため、領域によって適したスコープの大きさが異なる。そこで、スコープを適応的に選択すること(後述する動きベクトルの選択)で効果的にぶれを抑えることが可能となる。また、被写体によっても最適なスコープは異なるため、被写体に応じてスコープを変更することも考えられる。例えば、細かい(複雑な)構造の被写体が撮影される場合にはスコープを小さくし、逆に、細かくない(単純な)構造の被写体が撮影される場合にはスコープを広げるようにしてもよい。
【0089】
第3動きベクトルの算出(
図5のS303)が終了すると、S304において、画像処理コントローラ310は、局所領域毎に、S301乃至S303で算出した第1動きベクトル、第2動きベクトル、及び第3動きベクトルの何れか一つの動きベクトルを選択する。
【0090】
動きベクトルの選択は、例えば、次のような観点に基づいて行うことができる。
(1)第1動きベクトルの信頼度が高く、周囲の第1動きベクトルと比較して静止領域であると判断できれば、第1動きベクトルを選択する。このような部分は、静止被写体であってマッチングできている部分と考えることができる。
(2)第1動きベクトルの信頼度が高くても、周囲の第1動きベクトルと比較して動体領域の可能性があれば、第2動きベクトルを選択する。このような部分は、マッチングできている部分であるが動体被写体に影響されている部分と考えることができる。
(3)第1動きベクトルの信頼度が低くても、周囲の第1動きベクトルが第2動きベクトルに類似していれば、第2動きベクトルを選択する。このような部分は、マッチングできているか否か判断できない部分であるが、静止被写体の部分と考えることができる。
(4)第1動きベクトルの信頼度が低く、周囲の第1動きベクトルが第2動きベクトルと大きくずれていれば、第3動きベクトルを選択する。このような部分は、マッチングできているか否か判断できない部分であるが、並進ぶれ等の影響によって通常の静止被写体とは動きが異なる部分と考えることができる。
【0091】
なお、上記(1)、(2)に関し、静止被写体で正しくマッチングできていれば、第1動きベクトルと第2動きベクトルはおよそ一致する。一致していない場合は、動体被写体である可能性が高い。よって、第1動きベクトルと第2動きベクトルとの差分(|第1動きベクトル-第2動きベクトル|)Aが閾値A(第1閾値の一例)を超えている場合は、動体被写体と判断することができる。ここで、閾値Aは、マッチングの精度や推定の精度から実施環境に合わせて決めることができる。例えば、第2動きベクトルの推定精度が高いほど閾値Aを小さくする、といった具合に閾値Aを決めることができる。
【0092】
また、上記(3)、(4)に関し、第3動きベクトルは、周囲の第1動きベクトルの統計値(例えば平均値)として得られるので、上述の”周囲の第1動きベクトル”を表す指標の一つとみなせる。よって、第2動きベクトルと第3動きベクトルの差分(|第3動きベクトル-第2動きベクトル|)Bを判断条件とし、その差分Bが閾値B(第3閾値の一例)を超えている場合には、(4)に従って第3動きベクトルを選択する。
【0093】
このような観点に基づく動きベクトル選択処理(S304)の詳細を、
図7を用いて説明する。
図7に例示した動きベクトル選択処理(S304)では、各局所領域に対し、S501乃至S509の処理が行われる。
【0094】
まず、S501において、画像処理コントローラ310は、処理対象とされていない局所領域を処理対象として、その処理対象局所領域の第1動きベクトルが高信頼度であるか否かを判定する。この判定は、例えば、上述の第1動きベクトル算出処理(S301)の説明の際に述べた閾値を用いて行うことができる。
【0095】
S501の判定結果がYESの場合、S502において、画像処理コントローラ310は、処理対象局所領域における第1動きベクトルと第2動きベクトルとの差分(|第1動きベクトル-第2動きベクトル|)Aを算出する。
【0096】
次に、S503において、画像処理コントローラ310は、差分A>閾値Aであるか否かを判定する。S503の判定結果がNOの場合、S504において、画像処理コントローラ310は、第1動きベクトルを選択する。この場合は、上述の観点の(1)の場合でもある。一方、S503の判定結果がYESの場合、S505において、画像処理コントローラ310は、第2動きベクトルを選択する。この場合は、上述の観点の(2)の場合でもある。
【0097】
一方、S501の判定結果がNOの場合、S506において、画像処理コントローラ310は、処理対象局所領域における第2動きベクトルと第3動きベクトルとの差分(|第3動きベクトル-第2動きベクトル|)Bを算出する。
【0098】
次に、S507において、画像処理コントローラ310は、差分B>閾値Bであるか否かを判定する。S507の判定結果がNOの場合、S508において、画像処理コントローラ310は、第2動きベクトルを選択する。この場合は、上述の観点の(3)の場合でもある。一方、S507の判定結果がYESの場合、S509において、画像処理コントローラ310は、第3動きベクトルを選択する。この場合は、上述の観点の(4)の場合でもある。
【0099】
S504、S505、S508、又はS509が終了すると、S510において、画像処理コントローラ310は、全ての局所領域の動きベクトルの選択が終了したか否かを判定する。S510の判定結果がNOの場合は、処理がS501に戻る。一方、S510の判定結果がYESの場合は、
図7に例示した動きベクトル選択処理(S304)が終了する。
【0100】
なお、上述の観点に加えて、第1動きベクトルの信頼度が高くない場合の動きベクトルの選択に、第2動きベクトルとその周辺の第1動きベクトルとの偏差や分散等のばらつき(第2動きベクトルの周辺に位置する複数の第1動きベクトルのばらつきでもある)を表す量を指標とすることも有効である。この場合、ばらつきが閾値C(第2閾値の一例)よりも大きければ(例えば、分散≡Σ(周辺の第1動きベクトル-第2動きベクトル)2>閾値Cであれば)、周辺の第1動きベクトルが別々の方向を向いていると判断することができる。第3動きベクトルは、中程度の領域の動きを表しているものの、第1動きベクトルのばらつきが大きい場合には意味をなさないため、その場合は第2動きベクトルを選択する。なお、平面の静止被写体を撮影して、第3動きベクトルを算出する際の範囲で第1動きベクトルがどの程度ばらつくかを測定し、その測定値を閾値Cとしてもよい。例えば、歪の大きいレンズを用いて撮影した場合は、一部の範囲で第1動きベクトルの向き、大きさの違いが大きくなるので、閾値Cを大きくする等してもよい。
【0101】
このような観点に基づく動きベクトル選択処理(S304)の詳細を、
図8を用いて説明する。
図8に例示した動きベクトル選択処理(S304)は、
図7に例示した動きベクトル選択処理(S304)において、S501の判定結果がNOである場合の処理に、S601及びS602の処理が新たに追加されたものである。
【0102】
詳しくは、S501の判定結果がNOの場合に、S601において、画像処理コントローラ310は、処理対象局所領域の第2動きベクトルとその周辺の第1動きベクトルとの偏差や分散等のばらつきを算出する。例えば、分散のばらつきは、分散≡Σ(周辺の第1動きベクトル-第2動きベクトル)2である。
【0103】
次に、S602において、画像処理コントローラ310は、ばらつき>閾値Cであるか否かを判定する。S602の判定結果がYESの場合は、処理がS508へ進む。この場合は、第2動きベクトルが選択されることになる。一方、S602の判定結果がNOの場合は、処理がS506へ進む。その他の処理については、
図7に例示した動きベクトル選択処理(S304)と同様である。
【0104】
なお、
図5の301乃至S303で算出される第1動きベクトル、第2動きベクトル、及び第3動きベクトルは、特性の異なる複数種類の局所的な動きベクトルの一例である。また、動きベクトル選択処理(S304)は、特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、特性の異なる複数種類の局所的な動きベクトルのうちから動きベクトルを選択する処理の一例である。ここで、特性の異なる複数種類の局所的な動きベクトルの信頼度とは、第1動きベクトルの信頼度に限らず、例えば、第1動きベクトルと第2動きベクトルとの差分Aや、第2動きベクトルと第3動きベクトルとの差分Bや、第2動きベクトルとその周辺の第1動きベクトルとの偏差や分散等のばらつきを表す量も含まれる。
【0105】
動きベクトル選択処理(
図5のS304)が終了すると、S305において、画像処理コントローラ310は、BCPU329の制御の下、S304で選択された動きベクトルに基づいて、基準画像と参照画像を画像合成する。ここで、この画像合成処理(S305)の詳細を、
図9を用いて説明する。
【0106】
図9に例示した画像合成処理(S305)では、基準画像の各画素に対してS701乃至S704の処理が行われることで画像合成が行われる。詳しくは、まず、S701において、画像処理コントローラ310は、基準画像において処理対象とされていない画素を処理対象画素として、その処理対象画素の座標値(x,y)を取得する。
【0107】
S702において、画像処理コントローラ310は、処理対象画素の位置の動きベクトルを取得する。詳しくは、処理対象画素の位置の動きベクトルが、動きベクトル選択処理(
図5のS304)で選択された動きベクトルの中に含まれている場合には、その動きベクトルを取得する。すなわち、処理対象画素が局所領域の何れかに含まれている場合には、その局所領域において選択された動きベクトルを取得する。一方、処理対象画素の位置の動きベクトルが、動きベクトル選択処理で選択された動きベクトルの中に含まれていない場合には、動きベクトル選択処理で選択された動きベクトルのうちの、処理対象画素の位置の周辺の複数の動きベクトルを用いて補間演算を行うことで、処理対象画素の位置の動きベクトルを算出し、取得する。すなわち、処理対象画素が局所領域の何れにも含まれていない場合には、処理対象画素周辺の局所領域において選択された動きベクトルを用いて補間演算を行うことで、処理対象画素の位置の動きベクトルを算出し、取得する。
【0108】
なお、処理対象画素の位置の動きベクトルが、動きベクトル選択処理で選択された動きベクトルの中に含まれていたり、含まれていなかったりする理由は、動きベクトル選択処理で選択される動きベクトルが、例えば処理の軽減を目的として、
図10に示したように離散的に算出されているからである。仮に、全画素について動きベクトルが算出されるようにしておけば、処理対象画素の位置の動きベクトルを、単に、動きベクトル選択処理で選択された動きベクトルの中から取得すればよいことになる。
【0109】
このようにして処理対象画素の位置の動きベクトルが取得されると、S703において、画像処理コントローラ310は、S701で取得した処理対象画素の座標に対して、S702で取得した動きベクトルの分だけ移動した先の参照画像の画素値を取得する。
【0110】
次に、S704において、画像処理コントローラ310は、S703で取得した画素値を、処理対象画素の画素値に加算する。これにより、処理対象画素についての合成画像の画素値が得られる。
【0111】
次に、S705において、画像処理コントローラ310は、基準画像の全画素に対して処理が終了したか否かを判定する。S705の判定結果がNOの場合は、処理がS701に戻る。一方、S705の判定結果がYESの場合は、
図9に例示した画像合成処理(S305)が終了する。このような画像合成処理(S305)により、基準画像と参照画像の合成画像が生成される。
【0112】
なお、上述の画像合成処理(S305)では、画像の合成方法として加算合成を採用することで、低速シャッターで撮影した画像相当の画像(低速シャッターで露出を稼くような効果)が得られるようにしたが、実現したい効果等によって、他の合成方法を採用することも可能である。例えば、画像の合成方法として加算平均合成を採用することで、露出を抑えつつ露光期間を延ばすような効果が得られるようにしてもよい。また、画像の合成方法として比較明合成を採用することで、高輝度の動体の動きを残すような効果が得られるようにしてもよい。また、画像の合成方法として比較暗合成を採用することで、高輝度の動体の動きを消すような効果が得られるようにしてもよい。また、画像の合成方法としてストロボモーション合成を採用することで、コマ撮りした被写体の動きを1コマに表現するような効果が得られるようにしてもよい。また、画像の合成方法として、高解像化(例えばハイレゾ)、HDR(High Dynamic Range)、ノイズ低減、又は深度合成等の合成方法を採用することも可能である。
【0113】
画像合成処理(
図5のS305)が終了すると、S306において、画像処理コントローラ310は、合成が終了したか否か(Nフレーム目のバッファリング画像までの画像合成が終了したか否か)を判定する。S305の判定結果がNOの場合は、処理がS301に戻る。一方、S305の判定結果がYESの場合は、
図5に例示した画像合成処理(S210)が終了する。
【0114】
なお、画像処理コントローラ310は、このような
図5に例示した画像合成処理(S210)を行うことから、複数の画像に基づいて特性の異なる複数種類の局所的な動きベクトルを算出する算出部と、その算出部により算出された特性の異なる複数種類の局所的な動きベクトルの信頼度に基づいて、その特性の異なる複数種類の局所的な動きベクトルのうちから動きベクトルを選択する選択部と、選択部により選択された動きベクトルに基づいて複数の画像を合成する合成部とを備えたものでもある。
図5に例示した画像合成処理(S210)において、例えば、算出部はS301乃至S303の処理を行い、選択部はS304の処理を行い、合成部はS305の処理を行う。算出部、選択部、及び合成部は、例えば、画像処理コントローラ310のプロセッサがプログラムを実行することにより(所謂ソフトウェアにより)実現されてもよいし、回路等のハードウェアにより実現されてもよい。
【0115】
以上のように本実施形態によれば、スコープが異なる第1動きベクトル、第2動きベクトル、及び第3動きベクトルを算出し、適応的に動きベクトルを選択して画像合成を行うことで、低速シャッターで手ぶれを抑えて撮影した画像相当の画像を安定した精度で得ることができる。
【0116】
<第2の実施形態>
第2の実施形態は、
図2に例示した静止画撮影動作処理(S105)において、更に、光学式手ぶれ補正を行うようにしたものである。
【0117】
図12は、第2の実施形態に係る静止画撮影動作処理(S105)の流れを例示するフローチャートである。
図12に例示した静止画撮影動作処理(S105)は、
図3に例示した第1の実施形態に係る静止画撮影動作処理(S105)に対して、次の点が異なる。
【0118】
図12に例示した静止画撮影動作処理(S105)では、S204(露出設定)とS205(静止画撮像駆動開始)の間のS801において、BCPU329は、光学式手ぶれ補正駆動を開始する。そして、S209(静止画撮像駆動終了)とS210(画像合成処理)の間のS802において、BCPU329は、その光学式手ぶれ補正駆動を終了する。また、S214(露出設定)とS215(静止画撮像駆動開始)の間のS803において、BCPU329は、光学式手ぶれ補正駆動を開始する。そして、S217(静止画撮像駆動終了)とS211(現像処理)の間のS804において、BCPU329は、その光学式手ぶれ補正駆動を終了する。なお、光学式手ぶれ補正駆動とは、レンズ側防振制御回路206等による防振用レンズの移動及び又はボディ側防振制御回路320等による撮像素子308の移動のことである。
【0119】
また、
図12に例示した静止画撮影動作処理(S105)において、画像合成処理(S210)では、第2動きベクトルの算出方法が第1の実施形態と異なる。その理由は、第1動きベクトルが光学式手ぶれ補正により補正しなかった手ぶれに対応していることから、カメラ100の真の姿勢変化は、光学式手ぶれ補正による補正量を考慮して算出する必要があるからである。具体的には、補正量を動きベクトルに換算し、それを第1動きベクトルに加えた上で、カメラ100の姿勢変化を推定する。そして、カメラ100の姿勢変化から第2動きベクトルを算出する際は、補正量を動きベクトルに換算したものをカメラ100の姿勢変化から差し引いて第2動きベクトルを算出する。なお、補正量は、例えば、レンズ側防振制御回路206及び又はボディ側防振制御回路320の出力に対応し、装置ぶれ補正量の一例である。レンズ側防振制御回路206及び又はボディ側防振制御回路320は、装置ぶれ補正量を出力する装置ぶれ補正部又は装置ぶれ補正回路の一例である。
【0120】
第2の実施形態では、第2動きベクトルを算出する際に、例えば、カメラ100の姿勢変化としてシフトぶれと回転ぶれを考慮する場合は、次のようにして第2動きベクトルを算出することができる。
【0121】
手ぶれ補正によるカメラ100の姿勢変化は、未知のパラメータ(T
x、T
y、Θ)を用いて、次の演算子として表せる。
【数13】
なお、T
x、T
yは、手振れ補正によるシフトぶれに対応するパラメータであり、Θは、手振れ補正による回転に対応するパラメータである。
【0122】
基準画像と参照画像の座標は、次の関係式で結ばれる。
【数14】
【0123】
この関係式に基づいて、第1の実施形態と同様に、姿勢変化Rを算出することで、第2動きベクトルB
xyを次の式により算出できる。
【数15】
【0124】
以上のように第2の実施形態によれば、さらに光学式手ぶれ補正を行うようにしたことで、手ぶれ補正性能をより向上させることができる。また、光学式手ぶれ補正によりある程度の手ぶれを抑えることができるので、シャッタースピードの選択をより柔軟にすることができる。
【0125】
<第3の実施形態>
第3の実施形態は、第2動きベクトルを推定(算出)する際に、Gセンサ(加速度センサ)やジャイロセンサ等のセンサの出力を補助情報として用いるようにしたものである。第1の実施形態では、第1動きベクトルのみによる第2動きベクトルの推定が行われていたことから、例えば、動体被写体の領域で算出された第1動きベクトルが含まれるような場合に、第2動きベクトルの推定結果がずれる(即ち推定精度が下がる)可能性がある。そこで、第3の実施形態では、センサの出力を補助情報として用いて第2動きベクトルを推定することで、その推定精度を上げるようにした。
【0126】
図13は、第3の実施形態に係る静止画撮影動作処理(S105)の流れを例示するフローチャートである。
図13に例示した静止画撮影動作処理(S105)は、
図3に例示した第1の実施形態に係る静止画撮影動作処理(S105)に対して、次の点が異なる。
【0127】
図13に例示した静止画撮影動作処理(S105)では、S206(画像読み出し)とS207(画像バッファリング)の間のS901において、BCPU329は、カメラ姿勢取得を行う。詳しくは、BCPU329は、カメラ姿勢として、レンズ側姿勢変化検出部205及び又はボディ側姿勢変化検出部319の出力(検出結果)を取得する。レンズ側姿勢変化検出部205の出力は、レンズ側Y方向Gセンサ2051、レンズ側X方向Gセンサ2052、レンズ側ピッチジャイロセンサ2053、レンズ側ヨージャイロセンサ2054、及びレンズ側ロールジャイロセンサ2055の出力(検出結果)を含む。ボディ側姿勢変化検出部319の出力は、ボディ側Y方向Gセンサ3191、ボディ側X方向Gセンサ3192、ボディ側ピッチジャイロセンサ3193、ボディ側ヨージャイロセンサ3194、及びボディ側ロールジャイロセンサ3195の出力(検出結果)を含む。S901で取得されたカメラ姿勢は、例えば、S207でSDRAM312に格納されるバッファリング画像に関連付けられてSDRAM312に格納される。
【0128】
また、
図13に例示した静止画撮影動作処理(S105)において、画像合成処理(S210)では、当該処理に含まれる第2動きベクトル算出処理(S302)が第1の実施形態と異なる。
図14は、第3の実施形態に係る第2動きベクトル算出処理(S302)の流れを例示するフローチャートである。
【0129】
図14に例示した第2動きベクトル算出処理では、まず、各局所領域に対し、S1001乃至S1003の処理が行われる。詳しくは、S1001において、画像処理コントローラ310は、処理対象とされていない局所領域を処理対象として、処理対象局所領域の仮動きベクトルを算出する。この算出は、次のようにして行う。まず、補助情報を用いない場合(第1の実施形態の場合)と同様に、カメラ100の姿勢変化による座標移動を定式化する。カメラ100の姿勢変化としてシフトぶれと回転ぶれを考慮する場合は、第1の実施形態で説明したとおり、次の式となる。
【数16】
【0130】
第3の実施形態では、Gセンサ及びジャイロセンサの出力(例えばボディ側姿勢変化検出部319の出力)によりt
x、t
y、θが得られており、Rを決定できることから、次の式により仮動きベクトルB´
xyを算出できる。
【数17】
「仮」としている理由は、センサ出力が誤差を持ち得るため、この式で得られる動きベクトルは、真の第2動きベクトルに対してずれがあると考えられるからである。
【0131】
次に、S1002において、画像処理コントローラ310は、処理対象局所領域の第1動きベクトルと仮動きベクトルとの差分を算出する。次に、S1003において、画像処理コントローラ310は、後述のカメラ姿勢推定(S1005)で用いる第1動きベクトルを選別する。この選別では、S1002で算出された差分が閾値よりも大きい場合は、当該処理対象局所領域の第1動きベクトルを除外し、その差分が閾値以下の場合は、当該処理対象局所領域の第1動きベクトルを採用する。
【0132】
次に、S1004において、画像処理コントローラ310は、全ての局所領域に対する処理(選別)が終了したか否かを判定する。S1004の判定結果がNOの場合は、処理がS1001に戻る。
【0133】
一方、S1004の判定結果がYESの場合、S1005において、画像処理コントローラ310は、S1003での選別により採用された第1動きベクトルを用いて、カメラ100の姿勢変化を算出する。この算出は、第1動きベクトルとして、S1003での選別により採用された第1動きベクトルのみを用いる以外は、第1の実施形態と同様である。S1005の後は、第1の実施形態と同様の処理(S402、S403)が行われて、
図14に例示した第2動きベクトル算出処理が終了する。
【0134】
画像合成処理(S210)においては、第2動きベクトルを如何に高精度に算出できるかが性能に大きく影響することから、シフトぶれ、回転ぶれ、角度ぶれ、前後ぶれ、光学的な歪による影響、被写体の奥行きによる影響、といったできるだけ多くの要素を考慮して第2動きベクトルを算出することが望ましい。なお、シフトぶれ、回転ぶれは、解析的に算出できるので比較的容易に算出可能である。角度ぶれ、 前後ぶれは、数値的に算出可能である。光学的な歪による影響、被写体の奥行きによる影響は、数値的に算出可能であるものの、第1動きベクトルのみから高精度に算出することは難しい。
【0135】
第3の実施形態では、カメラ姿勢及び第2動きベクトルの算出精度を上げるために、Gセンサ及びジャイロセンサの出力を補助情報として用いた。Gセンサは、カメラ100の並進ぶれ、前後ぶれを検出可能である。ジャイロセンサは、カメラ100の角度ぶれ、回転ぶれを検出可能である。また、第3の実施形態では、カメラ100が例えば地磁気センサを備えて、地磁気センサの出力を補助情報として用いてもよい。地磁気センサは、カメラ100の大きな角度ぶれを検出可能である。また、第3の実施形態では、カメラ100が超音波センサやTOF(Time Of Flight)センサを備えて、そのセンサの出力を補助情報として用いてもよい。超音波センサやTOFセンサは、被写体距離を検出可能である。被写体距離を補助情報として用いれば、カメラ姿勢から第2動きベクトルを算出する際に、第1動きベクトルのみからでは推定が難しい奥行き情報も加味することができるため、より高い精度での第2動きベクトルの算出が可能となる。
【0136】
以上のように第3の実施形態によれば、Gセンサやジャイロセンサ等のセンサの出力を補助情報として用いて第2動きベクトルを推定することで、第2動きベクトルの推定精度を上げることができる。
【0137】
<第4の実施形態>
第4の実施形態は、画像合成処理(S210)の一部を変更することで、流し撮りにより撮影された画像相当の画像を生成するようにしたものである。具体的には、撮影者が低速シャッターでの撮影中に、意図的にカメラを移動させることにより、動体被写体が静止し、それ以外の被写体(背景被写体)が流れるような画像を生成するようにしたものである。この意図的な移動以外の手ぶれを抑えることができない場合に、局所的にぶれた画像が得られてしまう。
【0138】
図15は、第4の実施形態に係る画像合成処理(S210)の具体例を模式的に示す図である。
図15に示したように、第4の実施形態では、合成枚数分のバッファリング画像431を合成することにより、流し撮りにより撮影した画像相当の合成画像432を生成する。このような画像合成処理の詳細を、
図16乃至
図19を参照しながら説明する。
【0139】
図16は、第4の実施形態に係る画像合成処理(S210)の流れを例示するフローチャートである。
図17は、第4の実施形態に係る第2動きベクトル算出処理(S302)の流れを例示するフローチャートである。
図18は、第4の実施形態に係る動きベクトル選択処理(S304)の流れを例示するフローチャートである。
図19は、注目被写体を例示する図である。
【0140】
図16に例示した画像合成処理(S210)は、
図5に例示した第1の実施形態に係る画像合成処理(S210)に対して、次の点が異なる。まず、
図16に例示した画像合成処理(S210)では、はじめにS1101において、画像処理コントローラ310は、基準画像から注目被写体を検出する。この検出は、例えば、撮像時のフォーカスポイントに基づいて、或いは、ディープラーニングによる動体物(車等)の検出等により、行うことができる。
【0141】
また、
図16に例示した画像合成処理(S210)では、第2動きベクトル算出処理(S302)として、
図17に例示した第2動きベクトル算出処理(S302)が行われる。
図17に例示した第2動きベクトル算出処理(S302)は、
図6に例示した第1の実施形態に係る第2動きベクトル算出処理(S302)に対して、次の点が異なる。
【0142】
図17に例示した第2動きベクトル算出処理(S302)では、カメラ姿勢推定(S401)の代わりに、S1201において、画像処理コントローラ310は、注目被写体動き推定を行う。この注目被写体動き推定では、S1101で検出された注目被写体の領域にスコープを限定した上で、第1動きベクトルから注目被写体の動きを推定する。すなわち、注目被写体の領域の第1動きベクトルから注目被写体の動きを推定する。例えば、
図19に例示した基準画像441の注目被写体(この例では車)の領域441aの第1動きベクトルから注目被写体の動きを推定する。注目被写体動き推定の具体的な方法は、スコープを画像全体とする代わりに注目被写体の領域に限定すること以外は、カメラ姿勢推定(S401)と同様である。
【0143】
また、
図16に例示した画像合成処理(S210)では、動きベクトル選択処理(S304)として、
図18に例示した動きベクトル選択処理(S304)が行われる。
図18に例示した動きベクトル選択処理(S304)での動きベクトルの選択は、次のような観点に基づいて行われる。
【0144】
(1)第1動きベクトルの信頼度が高く、注目被写体の領域と判断できれば、第1動きベクトルを選択する。このような部分は、注目被写体であってマッチングできている部分と考えることができる。
(2)第1動きベクトルの信頼度が高くても、静止領域と判断できれば、第2動きベクトルを選択する。このような部分は、マッチングできている部分であるが静止被写体(注目被写体の背景)の部分と考えることができる。
(3)第1動きベクトルの信頼度が低くても、周囲の第1動きベクトルが第2動きベクトルと大きくずれていれば、第2動きベクトルを選択する。このような部分は、マッチングできているか否か判定できない部分であるが、静止被写体の部分と考えることができる。
(4)第1動きベクトルの信頼度が低く、周囲の第1動きベクトルが第2動きベクトルに類似していれば、第3動きベクトルを選択する。このような部分は、マッチングできているか否か判断できない部分であり、注目被写体と背景被写体との切り分けが難しい部分と考えることができる。
【0145】
このような観点に基づく
図18に例示した動きベクトル選択処理(S304)は、
図7に例示した第1の実施形態に係る動きベクトル選択処理(S304)に対して、次の点が異なる。まず、
図18に例示した動きベクトル選択処理(S304)では、S501の判定結果がYESの場合に、S502乃至S505に代えて、S1301乃至S1304の処理が行われる。詳しくは、S1301において、画像処理コントローラ310は、注目被写体の領域を分離する。次に、S1302において、画像処理コントローラ310は、処理対象局所領域が注目被写体の領域に含まれるか否かを判定する。S1302の判定結果がYESの場合、S1303において、画像処理コントローラ310は、第1動きベクトルを選択する。一方、S1302の判定結果がNOの場合、S1304において、画像処理コントローラ310は、第2動きベクトルを選択する。
【0146】
また、
図18に例示した動きベクトル選択処理(S304)では、S501の判定結果がNOであってS507の判定結果がYESの場合に第2動きベクトルが選択され、S501の判定結果がNOであってS507の判定結果がNOの場合に第3動きベクトルが選択される。
【0147】
以上のように第4の実施形態によれば、流し撮りにより撮影された画像相当の画像を生成することができる。つまり、流し撮りを意図した移動以外の手ぶれを抑えて低速シャッターで撮影した流し撮り画像相当の画像を安定した精度で得ることができる。なお、第4の実施形態では、更に動きベクトルの向きや大きさを制限することで、特定の方向のみ効果が現れないようにすることもできる。
【0148】
<第5の実施形態>
第5の実施形態は、第1乃至第4の実施形態で説明した技術の一部を、医療分野に応用したものである。医療分野では、撮像素子を先端に備えた内視鏡により生体内を観察し処置を施す場合に、血管の位置を知りたい状況がある。血管を避けて処置を行う場合や血管に処置を施す場合があるためである。このような場合に血管位置を検出する技術として、内視鏡により連続的に撮像される画像(内視鏡による撮像される動画像)において動きベクトルを検出することで血管領域を検出する技術が知られている。しかしながら、この技術では、内視鏡操作者の操作や生体の揺れによって内視鏡先端の撮像素子の姿勢が変化することで動きベクトルの検出精度が低下し、結果として血管領域の検出精度が低下する、という課題がある。そこで、第5の実施形態では、このような動きベクトルに基づく血管領域の検出に、第1乃至第4の実施形態で説明した技術の一部を適用することで、その課題を解決するようにした。
【0149】
第5の実施形態では、撮像素子を先端に備えた内視鏡とコンピュータ(例えば、メモリとメモリに記憶されたプログラムを実行するプロセッサとを含む)とを備える内視鏡システムが、動きベクトルに基づく血管領域の検出を行う。
【0150】
詳しくは、内視鏡システムは、内視鏡による生体内の動画像の撮像を開始すると、Nフレーム目(例えば1フレーム目)のフレーム画像を基準画像とし、それ以降のフレーム画像を参照画像として、参照画像が取得される度に、基準画像と参照画像との間で各局所領域の第1動きベクトル、第2動きベクトル、及び第3動きベクトルの算出を繰り返す。具体的には、基準画像とN+1フレーム目のフレーム画像である参照画像との間での各局所領域の第1動きベクトル、第2動きベクトル、及び第3動きベクトルを算出し、次に、基準画像とN+2フレーム目のフレーム画像である参照画像との間での各局所領域の第1動きベクトル、第2動きベクトル、及び第3動きベクトルを算出し、といった具合に、その算出を繰り返す。ここで、第1動きベクトル、第2動きベクトル、及び第3動きベクトルの算出方法は、第1の実施形態と同様である。
【0151】
また、内視鏡システムは、内視鏡による生体内の動画像の撮像を開始すると、血管領域判定処理を開始する。ここで、血管領域判定処理の詳細を、
図20乃至
図23を用いて説明する。
図20は、血管領域判定処理の流れを例示するフローチャートである。
図21は、動領域/静領域判定処理(S1401)の流れを例示するフローチャートである。
図22は、動きベクトルの時間変化の一例を模式的に示す図である。
図23は、複数の動領域の一例を模式的に示す図である。
【0152】
図20に例示した血管領域判定処理では、まず、S1401において、内視鏡システムは、基準画像と参照画像(例えばN+1フレーム目のフレーム画像)との間で算出された各局所領域の第1動きベクトル、第2動きベクトル、及び第3動きベクトルに基づいて、各局所領域が動領域(動き領域)であるか静領域であるかを判定する動領域/静領域判定処理を行う。ここで、動領域/静領域判定処理(S1401)の詳細を、
図21を用いて説明する。
【0153】
図21に例示した動領域/静領域判定処理(S1401)では、S1501乃至S1503において、内視鏡システムは、
図7に例示した第1の実施形態に係る動きベクトル選択処理(S304)のS501乃至S503と同様の処理を行う。そして、S1503の判定結果がNOの場合、S1504において、内視鏡システムは、処理対象局所領域を静領域として判定する。一方、S1503の判定結果がYESの場合、S1505において、内視鏡システムは、処理対象局所領域を動領域として判定すると共に、第1動きベクトル-第2動きベクトルを、当該動領域の動きベクトルとして採用する。
【0154】
一方、S1501の判定結果がNOの場合、S1506及びS1507において、内視鏡システムは、
図7に例示した第1の実施形態に係る動きベクトル選択処理(S304)のS506及びS507と同様の処理を行う。そして、S1507の判定結果がNOの場合、S1508において、内視鏡システムは、処理対象局所領域を静領域として判定する。一方、S1507の判定結果がYESの場合、S1509において、内視鏡システムは、処理対象局所領域を動領域として判定すると共に、第3動きベクトルを、当該動領域の動きベクトルとして採用する。
【0155】
そして、S1504、S1505、S1508、又はS1509の後、S1510において、内視鏡システムは、全ての局所領域の判定が終了したか否かを判定する。S1510の判定結果がNOの場合は、処理がS1501に戻る。一方、S1510の判定結果がYESの場合は、
図21に例示した動領域/静領域判定処理(S1401)が終了する。
【0156】
このようにして動領域/静領域判定処理(
図20のS1401)が終了すると、N+2フレーム目以降のフレーム画像である参照画像毎に算出された各局所領域の第1動きベクトル、第2動きベクトル、及び第3動きベクトルに基づいて、S1401で動領域として判定された局所領域(以下、「局所動領域」という)の各々に対し、S1402乃至S1404の処理が行われる。
【0157】
詳しくは、S1402において、内視鏡システムは、処理対象とされていない局所動領域を処理対象として、上述のN+2フレーム目以降のフレーム画像である参照画像毎に算出された各局所領域の第1動きベクトル、第2動きベクトル、及び第3動きベクトルに基づいて、処理対象局所動領域の動きベクトルとして採用された動きベクトル(
図21のS1505又はS1509で採用された動きベクトル)の変化周波数を検出する。例えば、処理対象局所動領域の動きベクトルとして採用された動きベクトルの時間変化が
図22に示したものであった場合には、その変化周波数が検出される。
【0158】
次に、S1403において、内視鏡システムは、S1402で検出された変化周波数が、心拍周波数に一致するか否かを判定する。この判定では、例えば、心拍周波数と判断可能な範囲(0.75~1.5Hz)に変化周波数が含まれている場合に一致、そうでない場合には不一致、と判定される。
【0159】
S1403の判定結果がYESの場合、S1404において、内視鏡システムは、処理対象局所動領域を血管領域として判定し、処理がS1405に進む。一方、S1403の判定結果がNOの場合は、S1404をスキップして処理がS1405に進む。なお、S1402で算出した変化周波数が、例えば、0.2~0.3Hzの範囲に含まれる場合は、呼吸器系の生体(臓器や神経等)の領域と判定することもできる。
【0160】
そして、S1405において、内視鏡システムは、全ての局所動領域に対する処理(血管領域判定)が終了したか否かを判定する。S1405の判定結果がNOの場合は、処理がS1402に戻る。一方、S1405の判定結果がYESの場合は、
図20に例示した血管領域判定処理が終了する。このような血管領域判定処理により、例えば、
図23に示したように、臓器領域501、血管領域502、神経領域503といった複数の動領域の中から、血管領域502の検出が可能となる。
【0161】
以上のように第5の実施形態によれば、内視鏡操作者の操作や生体の揺れ等によって撮像素子の姿勢変化が生じたとしても、動きベクトルの検出精度を向上させることで血管の領域(位置)をより正確に検出することができ、適切な処置が可能となる。
【0162】
以上に説明した実施形態は、発明の理解を容易にするために具体例を示したものであり、本発明はこれらの実施形態に限定されるものではない。本発明は、特許請求の範囲の記載を逸脱しない範囲において、さまざまな変形、変更が可能である。
【符号の説明】
【0163】
100 カメラ
200 レンズユニット
201 レンズ側マウント部
202 レンズ側通信コネクタ
203 撮影レンズ
204 レンズ駆動回路
205 レンズ側姿勢変化検出部
206 レンズ側防振制御回路
207 絞り
208 絞り駆動回路
209 EEPROM
210 レンズ制御用マイクロコンピュータ(LCPU)
300 ボディユニット
301 ボディ側マウント部
302 ボディ側通信コネクタ
303 シャッター
304 シャッターチャージ機構
305 シャッター制御回路
306 防塵機構
307 防塵制御回路
308 撮像素子
309 撮像素子インターフェース回路(撮像素子I/F回路)
310 画像処理コントローラ
311 記録メディア
312 SDRAM
313 FLASH ROM(フラッシュROM)
314 外部出力端子
315 液晶モニター
316 電子ビューファインダー
317 撮像ステージ
318 撮像ステージ駆動回路
319 ボディ側姿勢変化検出部
320 ボディ側防振制御回路
321 ストロボ
322 ストロボ駆動回路
323 電源回路
324 電池
325 無線回路
326 動作表示部
327 カメラ操作SW
328 EEPROM
329 ボディ制御用マイクロコンピュータ(BCPU)
401、431 バッファリング画像
402、432 合成画像
411、421、441 基準画像
411a、412a、421a 局所領域
411b 第1動きベクトル
411c 第2動きベクトル
411d 第3動きベクトル
412 参照画像
421b、421c、421d スコープ
441a 注目被写体領域
501 臓器領域
502 血管領域
503 神経領域
2051 レンズ側Y方向Gセンサ
2052 レンズ側X方向Gセンサ
2053 レンズ側ピッチジャイロセンサ
2054 レンズ側ヨージャイロセンサ
2055 レンズ側ロールジャイロセンサ
3031 先幕
3032 後幕
3191 ボディ側Y方向Gセンサ
3192 ボディ側X方向Gセンサ
3193 ボディ側ピッチジャイロセンサ
3194 ボディ側ヨージャイロセンサ
3195 ボディ側ロールジャイロセンサ