(57)【特許請求の範囲】
【請求項１】
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記動きの規則性が等速運動、等加速運動、および不定運動の１つ以上を含み、
前記算出手段が、
（ｉ）前記被写体が等加速運動していると判別された場合、最新の画像の撮影時に前記第１検出手段で検出された角速度と、前記最新の画像について前記判別手段で判別された被写体ベクトルを変換した角速度とに基づいて被写体速度を算出することと、
（ｉｉ）前記被写体が等速運動していると判別された場合、最新の画像を含む複数の画像について前記判別手段で判別された被写体ベクトルを変換した角速度に基づいて被写体速度を算出することと、の少なくとも一方を実行することを特徴とする撮像装置。
【請求項２】
前記算出手段は、前記被写体ベクトルの変化量と前記背景ベクトルの変化量との差が予め定められた第１閾値以下の場合、前記被写体が等速運動していると判別することを特徴とする請求項１に記載の撮像装置。
【請求項３】
前記算出手段は、前記背景ベクトルと前記被写体ベクトルとの差の変化量に基づいて検出される前記被写体の加速度の変化量が予め定められた第２閾値以下の場合、前記被写体が等加速運動していると判別することを特徴とする請求項１または２に記載の撮像装置。
【請求項４】
撮像装置であって、
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記動きの規則性が等速運動、等加速運動、および不定運動の１つ以上を含み、
前記算出手段はさらに、前記角速度の変化量と前記背景ベクトルの変化量とに基づいて、前記撮像装置の動きが回転成分以外の方向成分を含むか否かを判別し、
前記算出手段は、
（ｉ）前記角速度の変化量と前記背景ベクトルの変化量との差が予め定められた第３閾値以下の場合、前記撮像装置の動きが回転成分以外の方向成分を含まないと判別することと、
（ｉｉ）前記被写体が等速運動していると判別された場合、最新の画像を含む複数の画像について前記判別手段で判別された被写体ベクトルを変換した角速度に基づいて被写体速度を算出することと、
の少なくとも一方を実行し、前記複数の画像には、前記撮像装置の動きが回転成分以外の方向成分を含むと判別された画像が含まれないことを特徴とする撮像装置。
【請求項５】
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別手段は、前記角速度が予め定められた閾値範囲より大きく、かつ、前記角速度が動きベクトルの検出が可能な範囲の上限以上もしくは前記角速度が前記動きベクトルよりも大きい場合に、前記動きベクトルを被写体ベクトルと判別することを特徴とする撮像装置。
【請求項６】
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別手段は、前記角速度が予め定められた閾値範囲より大きく、前記角速度が動きベクトルの検出が可能な範囲の上限以上でなく、かつ前記角速度が前記動きベクトルよりも大きくない場合に、前記動きベクトルを背景ベクトルと判別することを特徴とする撮像装置。
【請求項７】
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別手段は、１番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きくなく、かつ２番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きい場合、前記１番目の画像と前記２番目の画像との間における、前記角速度の変化方向と前記動きベクトルの変化方向が等しくない場合と、前記角速度の変化方向と前記動きベクトルの変化方向が等しく、かつ前記角速度の変化量より前記動きベクトルの変化量が小さい場合に、前記動きベクトルを被写体ベクトルと判別することを特徴とする撮像装置。
【請求項８】
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別手段は、１番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きくなく、かつ２番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きい場合、前記１番目の画像と前記２番目の画像との間における、前記角速度の変化方向と前記動きベクトルの変化方向が等しく、かつ前記角速度の変化量より前記動きベクトルの変化量が小さくない場合に、前記動きベクトルを背景ベクトルと判別することを特徴とする撮像装置。
【請求項９】
角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、
露光期間中に前記被写体速度に基づいて光軸を変更する制御手段と、
前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、
前記算出手段は、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つであり、前記判別手段が該動きベクトルを背景ベクトルと判別している場合、
前記角速度の変化量と前記背景ベクトルの変化量との差が第４閾値以下であれば、前記第２検出手段で検出された動きベクトルを積分し、積分された動きベクトルのうち、前記背景ベクトル以外で最大の動きベクトルを被写体ベクトルとして用いることを特徴とする撮像装置。
【請求項１０】
前記算出手段は、前記被写体ベクトルが前記積分された動きベクトルである場合、最新の画像の撮影時に前記第１検出手段で検出された角速度と、前記被写体ベクトルを変換した角速度とに基づいて被写体速度を算出することを特徴とする請求項９に記載の撮像装置。
【請求項１１】
前記制御手段が、前記光軸の変更により流し撮り支援機能を実現することを特徴とする請求項１から１０のいずれか１項に記載の撮像装置。
【請求項１２】
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記動きの規則性が等速運動、等加速運動、および不定運動の１つ以上を含み、
前記算出工程が、
（ｉ）前記被写体が等加速運動していると判別された場合、最新の画像の撮影時に前記第１検出手段で検出された角速度と、前記最新の画像について前記判別手段で判別された被写体ベクトルを変換した角速度とに基づいて被写体速度を算出する工程と、
（ｉｉ）前記被写体が等速運動していると判別された場合、最新の画像を含む複数の画像について前記判別手段で判別された被写体ベクトルを変換した角速度に基づいて被写体速度を算出する工程と、の少なくとも一方を有することを特徴とする撮像装置の制御方法。
【請求項１３】
撮像装置の制御方法であって、
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記動きの規則性が等速運動、等加速運動、および不定運動の１つ以上を含み、
前記算出工程は、前記角速度の変化量と前記背景ベクトルの変化量とに基づいて、前記撮像装置の動きが回転成分以外の方向成分を含むか否かを判別する工程を有し、
前記算出工程はさらに、
（ｉ）前記角速度の変化量と前記背景ベクトルの変化量との差が予め定められた第３閾値以下の場合、前記撮像装置の動きが回転成分以外の方向成分を含まないと判別する工程と、
（ｉｉ）前記被写体が等速運動していると判別された場合、最新の画像を含む複数の画像について前記判別手段で判別された被写体ベクトルを変換した角速度に基づいて被写体速度を算出する工程と、
の少なくとも一方を有し、前記複数の画像には、前記撮像装置の動きが回転成分以外の方向成分を含むと判別された画像が含まれないことを特徴とする撮像装置の制御方法。
【請求項１４】
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別工程では、前記角速度が予め定められた閾値範囲より大きく、かつ、前記角速度が動きベクトルの検出が可能な範囲の上限以上もしくは前記角速度が前記動きベクトルよりも大きい場合に、前記動きベクトルを被写体ベクトルと判別することを特徴とする撮像装置の制御方法。
【請求項１５】
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別工程では、前記角速度が予め定められた閾値範囲より大きく、前記角速度が動きベクトルの検出が可能な範囲の上限以上でなく、かつ前記角速度が前記動きベクトルよりも大きくない場合に、前記動きベクトルを背景ベクトルと判別することを特徴とする撮像装置の制御方法。
【請求項１６】
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別工程では、１番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きくなく、かつ２番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きい場合、前記１番目の画像と前記２番目の画像との間における、前記角速度の変化方向と前記動きベクトルの変化方向が等しくない場合と、前記角速度の変化方向と前記動きベクトルの変化方向が等しく、かつ前記角速度の変化量より前記動きベクトルの変化量が小さい場合に、前記動きベクトルを被写体ベクトルと判別することを特徴とする撮像装置の制御方法。
【請求項１７】
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つである場合、
前記判別工程では、１番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きくなく、かつ２番目の画像の撮影時の前記角速度が予め定められた閾値範囲より大きい場合、前記１番目の画像と前記２番目の画像との間における、前記角速度の変化方向と前記動きベクトルの変化方向が等しく、かつ前記角速度の変化量より前記動きベクトルの変化量が小さくない場合に、前記動きベクトルを背景ベクトルと判別することを特徴とする撮像装置の制御方法。
【請求項１８】
算出手段が、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出工程と、
制御手段が、露光期間中に前記被写体速度に基づいて光軸を変更する制御工程と、
判別手段が、前記動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別工程とを有し、
前記算出工程では、前記角速度の変化量、前記被写体ベクトルの変化量、前記背景ベクトルの変化量、前記背景ベクトルと前記被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、該判別に基づく方法で前記被写体速度を算出し、
前記第２検出手段で検出された動きベクトルのうち、被写体ベクトルもしくは背景ベクトルに該当する動きベクトルが１つであり、前記判別工程で該動きベクトルを背景ベクトルと判別している場合、
前記角速度の変化量と前記背景ベクトルの変化量との差が第４閾値以下であれば、前記第２検出手段で検出された動きベクトルを積分し、積分された動きベクトルのうち、前記背景ベクトル以外で最大の動きベクトルを被写体ベクトルとして用いることを特徴とする撮像装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、撮像装置およびその制御方法に関し、特に流し撮りの支援技術に関する。
【背景技術】
【０００２】
移動する被写体のスピード感を表現する撮影技術の１つに流し撮りがある。流し撮りとは、被写体の動きに合わせてカメラをパンニングしながら撮影することで、被写体が静止し、背景が流れた（ぶれた）画像を得る技術である。背景を大きく流してスピード感を効果的に表現するため、流し撮りを行う場合には露光時間を長めに設定することが多い。
【０００３】
流し撮りを成功させるには、撮像面上における被写体が動かないようにカメラをパンニングすることが重要であるが、経験や技術を必要とする。そのため、パンニング速度と被写体速度との差をシフトレンズの移動によって吸収する、流し撮り撮影の支援機能が提案されている（特許文献１，２）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００６−３１７８４８号公報
【特許文献２】特開２００９−２６７８３４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１は、ジャイロセンサで検出したカメラの動きと、画像の動きベクトルとから移動被写体を検出し、移動被写体が撮像面の中央に位置するようにシフトレンズを駆動している。しかし、ジャイロセンサではカメラの回転方向の動きしか検出できないため、パンニングに並進方向の動きが含まれていると被写体のぶれが十分に除去できない場合がある。
【０００６】
特許文献２では、現フレームと先行フレームとから検出した動きベクトルの時間変化（加速度）から後行フレームにおける被写体の動きベクトルを予測し、後行フレームで現フレームから被写体が動かないように補正光学系をシフトしている。しかし、フレーム間の位置のずれ量の経時変化から被写体の加速度を求めているため、パンニング動作が一定でない場合には補正精度が低下する。
【０００７】
本発明はこのような従来技術の課題に鑑みなされたものであり、さまざまなパンニング動作に対応可能な流し撮り支援機能を提供可能な撮像装置およびその制御方法の提供を目的とする。
【課題を解決するための手段】
【０００８】
上述の目的は、角速度を検出する第１検出手段にて検出された角速度の変化量と、画像間の動きベクトルを画像の領域ごとに検出する第２検出手段にて検出された動きベクトルの変化量との比較に基づいた方法で被写体速度を算出する算出手段と、露光期間中に被写体速度に基づいて光軸を変更する制御手段と、動きベクトルから、被写体ベクトルと背景ベクトルを判別する判別手段とを有し、算出手段は、角速度の変化量、被写体ベクトルの変化量、背景ベクトルの変化量、背景ベクトルと被写体ベクトルとの差の変化量の１つ以上を用いて被写体の動きの規則性を判別し、判別に基づく方法で被写体速度を算出し、動きの規則性が等速運動、等加速運動、および不定運動の１つ以上を含み、算出手段が、（ｉ）被写体が等加速運動していると判別された場合、最新の画像の撮影時に第１検出手段で検出された角速度と、最新の画像について判別手段で判別された被写体ベクトルを変換した角速度とに基づいて被写体速度を算出することと、（ｉｉ）被写体が等速運動していると判別された場合、最新の画像を含む複数の画像について判別手段で判別された被写体ベクトルを変換した角速度に基づいて被写体速度を算出することと、の少なくとも一方を実行することを特徴とする撮像装置によって達成される。
【発明の効果】
【０００９】
このような構成により本発明によれば、さまざまなパンニング動作に対応可能な流し撮り支援機能を提供可能な撮像装置およびその制御方法の提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本発明の実施形態に係る撮像装置の一例としてのデジタルカメラの機能構成例を示すブロック図
【図２】実施形態に係る流し撮り支援機能の動作概要を示すフローチャート
【図３】パンニングによる、移動量のヒストグラムの変化を説明するための図
【図４】第１の実施形態における被写体速度の算出処理を示すフローチャート
【図５】実施形態における、ヒストグラムを用いた被写体の等速運動判定について説明するための図
【図６】実施形態における、ヒストグラムを用いたパンニングの動き成分の判定について説明するための図
【図７】第２の実施形態におけるベクトル判別処理を示すフローチャート
【図８】第２の実施形態におけるベクトル判別方法を説明するための図
【図９】第２の実施形態における被写体速度の算出処理を示すフローチャート
【図１０】第２の実施形態におけるベクトル積分を説明するための図
【図１１】第２の実施形態における、ヒストグラムを用いたパンニングの動き成分の判定について説明するための図
【発明を実施するための形態】
【００１１】
以下、添付図面を参照して、本発明の例示的な実施形態について詳細に説明する。なお、以下では本発明を撮像装置の一例としてのデジタルカメラに適用した実施形態について説明するが、本発明は撮像機能を有する任意の電子機器に対して適用することができる。このような電子機器には、携帯電話機、パーソナルコンピュータ、タブレット端末、ゲーム機などが含まれるが、これらに限定されない。また、以下の実施形態では光学式の手ぶれ補正機能を流用した構成を説明するが、電子式の手ぶれ補正機能を用いる構成であってもよい。
【００１２】
●（第１の実施形態）
（デジタルカメラの機能構成）
図１は、第１の実施形態に係るデジタルカメラ１００の基本的な機能構成例を示すブロック図である。光学系１０１は、レンズ、シャッター、絞りから構成されており、ＣＰＵ１０３の制御によって被写体からの光を撮像素子１０２に結像させる。なお、光学系１０１には防振制御（光軸の変更）に用いる光学部材であるシフトレンズとその駆動回路が含まれている。ＣＣＤイメージセンサ、ＣＭＯＳイメージセンサなどの撮像素子１０２は、光学系１０１が結像した光を画像信号に変換する。
【００１３】
ジャイロセンサなどの角速度センサ１０５（第１検出手段）は、デジタルカメラ１００の移動量を表す角速度を検出し、電気信号に変換してＣＰＵ１０３へ伝達する。一次記憶装置１０４は例えばＲＡＭのような揮発性の記憶装置であり、プログラムをロードしたり、データを一時的に記憶したり、ワークエリアとして用いられたりする。また、一次記憶装置１０４に記憶されているデータは、画像処理装置１０６で利用されたり、記録媒体１０７へ記録されたりもする。
【００１４】
二次記憶装置１０８は、例えばＥＥＰＲＯＭのような不揮発性記憶装置であり、デジタルカメラ１００を制御するためにＣＰＵ１０３が実行するプログラム（ファームウェア）や各種の設定情報を記憶するために用いられる。ＣＰＵ１０３はプログラマブルプロセッサの一例であり、プログラムを実行して各部を制御することにより、流し撮り支援機能や防振制御を始め、画像の撮影、記録、再生に係るデジタルカメラ１００の様々な機能を実現する。
【００１５】
記録媒体１０７は、一次記憶装置１０４に記憶されている、撮影により得られた画像のデータなどを記録する。なお、記録媒体１０７は、例えば半導体メモリカードのようにデジタルカメラ１００から取り外し可能であり、記録されたデータはパーソナルコンピュータなどに装着してデータを読み出すことが可能である。つまり、デジタルカメラ１００は、記録媒体１０７の着脱機構及び読み書き機能を有する。
【００１６】
表示部１０９は、撮影時のビューファインダー画像の表示、撮影した画像の表示、対話的な操作のためのＧＵＩ画像などの表示などに用いられる。操作部１１０は、ユーザの操作を受け付けてＣＰＵ１０３へ入力情報を伝達する入力デバイス群であり、例えばボタン、レバー、タッチパネル等はもちろん、音声や視線などを用いた入力デバイスが含まれてもよい。
【００１７】
なお、本実施形態のデジタルカメラ１００は、画像処理装置１０６が撮像画像に適用する画像処理のパターンを複数有し、操作部１１０から設定可能な撮像モードに応じたパターンを適用する。画像処理装置１０６は、いわゆる現像処理と呼ばれる画像処理をはじめ、撮影モードに応じた色調の調整処理なども行う。また、画像処理装置１０６は、一次記憶装置１０４に格納された画像間における動きベクトルの検出（第２検出手段）、画像内の背景領域と主被写体領域の判別、背景領域と主被写体領域の動きベクトル算出なども行う。なお、画像処理装置１０６の機能の少なくとも一部は、ＣＰＵ１０３がプログラムを実行することによってソフトウェア的に実現しても良い。
【００１８】
（流し撮り支援機能の動作概要）
図２は本実施形態のデジタルカメラ１００が実現する流し撮り支援機能を実現するための動作の概要をフローチャートの形式で示している。流し撮り支援機能は例えば、操作部１１０に含まれるシャッターボタンの半押し（撮影準備処理の開始指示）が検出されたことに応じて開始することが可能であるが、他の開始条件を用いてもよい。なお、流し撮り支援機能の実行時には、撮像素子１０２によって動画撮影（連続的な撮影）が実行されるものとする。この動画撮影は、例えば電子ビューファインダーに表示する画像を取得するために、流し撮り支援機能とは無関係に実行されているものであってもよい。また不図示の測光センサなど実際に撮影を行う撮像素子とは異なる撮像素子を用いることで、必要な動画撮影（連続的な撮影）機能を代替してもよい。
【００１９】
まずＳ２０１においてＣＰＵ１０３は、角速度センサ１０５で検出された、デジタルカメラ１００の角速度を取得する。
次にＳ２０２において画像処理装置１０６は、撮像素子１０２で異なる時刻に撮影された２フレームの画像間の動きベクトルを検出する。動きベクトルは、各フレーム画像を複数に分割したブロック領域ごとに検出する。画像間の動きベクトルの検出方法に特に制限は無く、パターンマッチングを用いる方法など、公知の方法を用いることができる。なお、動きベクトルの検出は、撮像素子１０２で撮影した動画の連続する２フレームに対して行ってもよいし、例えば所定フレーム数ごとに抽出した２フレームに対して行ってもよい。
【００２０】
Ｓ２０３において画像処理装置１０６は、Ｓ２０２で検出した動きベクトルを撮像面上の移動量に換算し、ヒストグラムを生成する。
【００２１】
Ｓ２０４においてＣＰＵ１０３は、Ｓ２０１で取得したデジタルカメラ１００の角速度ω［ｒａｄ／ｓｅｃ］を、撮像面上の移動量ｌ［ｍｍ］に変換する。具体的には、光学系１０１の焦点距離をｆ［ｍｍ］、動画像の撮影フレームレートをｆｐｓ［ｆｒａｍｅ／ｓｅｃ］とすると、ＣＰＵ１０３は、以下の式１を用いて角速度ω［ｒａｄ／ｓｅｃ］を撮像面上の移動量ｌ［ｍｍ］に変換する。
ｌ＝ｆ ｔａｎ（ω／ｆｐｓ）      式１
【００２２】
なお、動きベクトルの検出を行うフレームの１秒あたりの数が動画像の撮影フレームレートより少ない場合、式１のｆｐｓの値を動きベクトルの検出を行うフレームの１秒あたりの数に変更する。
【００２３】
Ｓ２０５において画像処理装置１０６（判別手段）は、Ｓ２０２で検出した動きベクトルを用いて、被写体の動きを表すベクトル（以降、被写体ベクトル）と、背景の動きを表すベクトル（以降、背景ベクトル）とを判別する。なお、ここでいう被写体ベクトルと背景ベクトルは撮像面上の移動量に換算された大きさを有し、ベクトルの変化量の算出やベクトル間の比較は、特段の記載が無い限り換算後の移動量を用いて行われるものとする。また、画像内における被写体と背景との判別は、例えば特許文献１に記載されているような動きベクトルを用いた方法など、公知の方法で行うことができる。
【００２４】
図３は、Ｓ２０３で画像処理装置１０６が生成したヒストグラムに、Ｓ２０４でＣＰＵ１０３が移動量に変換した角速度４０１を最大頻度で追加したものである。以下の説明において、特段の記載が無い限り、動きベクトルと同様、角速度についても撮像面上の移動量に換算された値を有するものとする。ヒストグラムは、横軸が移動量（μｍ）、縦軸が該当するブロックの数を示している。なお、移動量の符号は、時間的に前のフレーム画像におけるブロックの位置を原点とした移動方向に応じて付与されている。
【００２５】
ここで、図３を用いて、パンニング動作に応じたヒストグラムの変化について説明する。ここでは、Ｓ２０５によって背景ベクトル４０２と被写体ベクトル４０３とが判別されているものとする。また、説明及び理解を容易にするため、ここでは被写体の速度とパンニング速度が適切であるものとする（従って、被写体ベクトル４０３がほぼ０となっている）。
【００２６】
図３（Ａ）は、デジタルカメラ１００のパンニング動作が回転成分のみを有する場合の典型例を示し、フレーム間におけるデジタルカメラ１００の角速度４０１と背景ベクトル４０２とはほぼ等しくなる。
図３（Ｂ）は、デジタルカメラ１００のパンニング動作が回転成分以外（シフト成分など）を有する場合の典型例を示す。この場合、パンニング動作が回転成分を含まないため角速度４０１はほぼ０になる。
図３（Ｃ）は、デジタルカメラ１００のパンニング動作が回転成分とそれ以外の成分の両方を有する場合の典型例を示す。この場合、パンニング動作が回転成分を含むため角速度４０１は０ではないが、回転成分とそれ以外の成分を反映する背景ベクトル４０２よりも小さくなる。
【００２７】
Ｓ２０６においてＣＰＵ１０３は、Ｓ２０４で求めた移動量ｌと、Ｓ２０５で画像処理装置１０６が判別した被写体ベクトルと背景ベクトルそれぞれの変化量とに基づいて被写体速度を算出する。被写体速度の算出方法の詳細については後述する。
【００２８】
Ｓ２０７においてＣＰＵ１０３は、本撮影動作（記録のための撮影動作）を開始するかどうか判定する。なお、ここでは操作部１１０に含まれるシャッターボタンの全押し操作を、本撮影の開始指示と判定する。ＣＰＵ１０３は、本撮影の開始指示が検出されればＳ２０８へ進め、検出されなければ処理をＳ２０１に戻す。
【００２９】
Ｓ２０８においてＣＰＵ１０３は、本撮影動作を開始する。ＣＰＵ１０３は、撮像素子１０２の露光期間中、Ｓ２０６で算出した被写体速度と、角速度センサ１０５から得られるデジタルカメラ１００の角速度との差に基づいて光学系１０１のシフトレンズを駆動して光軸を変更し、流し撮り支援機能を実現する。具体的には被写体の移動速度が０となるようにシフトレンズを駆動すればよい。なお、シフトレンズを駆動する制御については公知であるため、その詳細についての説明は省略する。
【００３０】
（被写体速度算出処理）
次に、Ｓ２０６で行う被写体速度算出の詳細について、図４のフローチャートを用いて説明する。なお、以下の説明においては、Ｓ２０１〜Ｓ２０５で取得した過去ａフレーム分の角速度と動きベクトルに関する情報が一次記憶装置１０４に記憶されているものとする。
【００３１】
Ｓ３０１においてＣＰＵ１０３は、処理フレーム番号ｎを０に初期化する。なお、最新フレームの処理フレーム番号を０とし、処理フレーム番号が１増えるごとに１つ前のフレームを表すものとする。
【００３２】
Ｓ３０２においてＣＰＵ１０３は、デジタルカメラ１００のパンニング時に回転成分以外が変化したかどうかを表すＳｈｉｆｔＦｌａｇを０に初期化する。なお、ＳｈｉｆｔＦｌａｇが０の場合は、パンニングに変化がなかった場合や、回転成分のみが変化したことを意味し、１の場合はシフト（並進）成分など回転成分以外の要素が変化したことを意味するものとする。
【００３３】
Ｓ３０３においてＣＰＵ１０３は、被写体速度の変化を表すＳｐｅｅｄＦｌａｇを０に初期化する。ＳｐｅｅｄＦｌａｇが０の場合は被写体が等速運動していることを意味し、１の場合は被写体が等加速運動していることを意味し、２の場合はそれ以外の不規則な動きをしていることを意味するものとする。
【００３４】
Ｓ３０４においてＣＰＵ１０３は、被写体加速度を記憶する変数を０に初期化する。以上で、変数やフラグの初期化処理が終了する。Ｓ３０５以降は、一次記憶装置１０４に格納されている複数フレーム分の情報のうち、何フレーム前までの情報が信頼できるかの判定と、信頼できると判定された情報に基づいて被写体速度を算出とを行う処理である。
【００３５】
Ｓ３０５においてＣＰＵ１０３は、一次記憶装置１０４に格納されている複数フレーム分の情報のうち、所定の複数（ここでは上述したａとする）のフレームの情報について、Ｓ３０６以降の処理を実行したかどうかを判定する。ＣＰＵ１０３は、処理フレーム番号ｎの値がａ−１であれば処理をＳ３１９に、処理フレームｎの値がａ−１未満であれば処理をＳ３０６に進める。
【００３６】
Ｓ３０６においてＣＰＵ１０３は、ＳｈｉｆｔＦｌａｇが１かどうか、すなわち、シフト成分などの回転成分以外の要素が変化したかどうかを判定する。ＣＰＵ１０３は、回転成分以外の要素が加わったと判定された場合は、回転成分以外の要素が加わる前までのフレームの情報から被写体速度を算出するために処理をＳ３１９に進め、回転成分以外の要素が加わったと判定されない場合は処理をＳ３０７に進める。
【００３７】
Ｓ３０７においてＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが２かどうか、すなわち、被写体が不規則な動きをしているかどうかを判定する。被写体の動きに規則性を見いだせない場合、すなわち、等速運動でも等加速運動でもない場合、前フレーム以降の情報を参照する必要がない。そのため、ＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが２であれば被写体速度を算出するために処理をＳ３２２に進め、ＳｐｅｅｄＦｌａｇが２でなければ前フレームの情報を参照して被写体速度の算出精度を向上させるため、処理をＳ３０８に進める。
【００３８】
Ｓ３２２においてＣＰＵ１０３は処理フレーム番号ｎが１未満の場合、処理をＳ３２３に進め、被写体速度を０に設定する。これにより、本撮影の露光期間において流し撮りアシスト機能ではなく通常の手ぶれ補正が行われる。一方、ｎが１以上の場合、ＣＰＵ１０３は処理をＳ３１９に進める。
【００３９】
Ｓ３０７で被写体が等速、あるいは等加速運動していると判定された場合、Ｓ３０８においてＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが１かどうか、すなわち、被写体が等加速運動していると判定済みかどうかを判定する。ＣＰＵ１０３はＳｐｅｅｄＦｌａｇが１であれば処理をＳ３１３に進め、ＳｐｅｅｄＦｌａｇが０（等速運動の可能性あり）であれば処理をＳ３０９に進める。
【００４０】
Ｓ３０９においてＣＰＵ１０３は、前フレームと現フレームにおける被写体ベクトルの変化量と背景ベクトルの変化量との差が閾値以下か、式２を用いて比較する。
｜（被写体ベクトルn+1−被写体ベクトルn）−（背景ベクトルn+1−背景ベクトルn）｜≦閾値v          式２
【００４１】
ここで閾値vは、被写体ベクトルの変化量と背景ベクトルの変化量とが同等であると見なせる範囲（すなわち、被写体が等速運動をしていると判定する範囲）を規定する閾値であり、予め定めておくことができる。式２が成り立つ場合、ＣＰＵ１０３は処理をＳ３１０に、成り立たない場合は処理をＳ３１３に進める。
【００４２】
図５を用いて、ヒストグラムを用いた、被写体の等速運動判定について説明する。図５（Ａ）を現フレーム（処理フレーム番号ｎ）、図５（Ｂ）（または図５（Ｄ））を前フレーム（同ｎ＋１）としたとき、被写体が等速運動していれば、被写体ベクトル４０３と背景ベクトル４０２との差５０１，５０３はほとんど変化しない。したがって、デジタルカメラ１００のパンニングが含む方向成分にかかわらず、現フレームと前フレームとの間における被写体ベクトルの変化量５０５と背景ベクトル（移動量）の変化量５０６はほぼ等しくなる（図５（Ｃ）および（Ｅ）参照）。
【００４３】
Ｓ３１０においてＣＰＵ１０３は、前フレームと現フレームの間に生じた角速度の変化量と背景ベクトルの変化量との差が閾値以下か、式３を用いて比較する。なお、ここでの角速度とは、Ｓ２０４で撮像面上の移動量に換算された後の値を表すものとする。
【００４４】
｜（角速度n+1−角速度n）−（背景ベクトルn+1−背景ベクトルn）｜≦閾値g          式３
【００４５】
ここで閾値gは、角速度の変化量と背景ベクトルの変化量とが同等であると見なせる範囲を規定する閾値であり、予め定めておくことができる。式３が成り立つ場合には、フレーム間におけるデジタルカメラ１００のパンニングの状態が変化していない、あるいは、回転成分のみ変化していると判定し、ＣＰＵ１０３は処理をＳ３１１に進め、式３が成り立たない場合、ＣＰＵ１０３は処理をＳ３１２に進める。
【００４６】
図５を用いて、ヒストグラムを用いた、デジタルカメラ１００のパンニング動作判定について説明する。なお、図５（Ａ）、（Ｄ）、（Ｅ）において角速度４０１が変化していないのは説明および理解を容易にするためであり、実際には変化していてもよい。
【００４７】
図５（Ａ）を現フレーム（処理フレーム番号ｎ）、図５（Ｂ）を前フレーム（同ｎ＋１）としたとき、パンニングの状態が回転成分以外変化しなければ、角速度４０１と背景ベクトル４０２との差５０２，５０４はほとんど変化しない。したがって、現フレームと前フレームとの間における角速度（移動量）の変化量５０７と背景ベクトル（移動量）の変化量５０６とはほぼ等しくなる（図５（Ｃ））。
【００４８】
したがって、Ｓ３１０で式３が成り立った場合、被写体が等速運動しており、かつ、デジタルカメラ１００のパンニングが安定している（回転成分のみが変化している）と判定できる。そのため、ＣＰＵ１０３は、処理フレーム番号ｎを次のフレーム番号ｎ＋１に更新する。
【００４９】
一方、図５（Ａ）を現フレーム（処理フレーム番号ｎ）、図５（Ｄ）を前フレーム（同ｎ＋１）としたとき、パンニングの状態が回転成分以外も変化した場合は、角速度４０１と背景ベクトル４０２との差５０２，５０８が有意な大きさ（＞閾値g）を有する。
したがって、図４、Ｓ３１０で式３が成り立たない場合、被写体が等速運動しているが、デジタルカメラ１００のパンニングが安定していない（シフト成分など回転成分以外の要素が変化している）と判定できる。そのためＣＰＵ１０３は、Ｓ３１２でＳｈｉｆｔＦｌａｇを１に設定し、被写体速度の算出に移行するようにする。
【００５０】
Ｓ３１３の処理が行われるのは、被写体が等速運動していないと判定された場合、すなわち、被写体が等加速運動しているか、速度変化が一定でない運動をしていると判定された場合である。
【００５１】
Ｓ３１３においてＣＰＵ１０３は、Ｓ３１０と同様にして、前フレームと現フレームの間に生じた角速度の変化量と背景ベクトルの変化量との差が閾値以下か、式３を用いて比較する。そして、ＣＰＵ１０３は、式３が成り立った場合は処理をＳ３１４に進める。式３が成り立たないのは、図５（Ａ）と図６（Ｃ）に示すフレーム間の関係のように回転成分以外が変化している場合である。これは、図６（Ｄ）で角速度４０１の変化量より背景ベクトル４０２の変化量６０７の方が大きいことから判別できる。この場合、ＣＰＵ１０３は処理をＳ３１５に処理を進める。
【００５２】
Ｓ３１４においてＣＰＵ１０３は、被写体加速度の変化量が閾値以下であるかを、式４を用いて判定する。なお、処理フレーム番号ｎが０の場合は、被写体加速度の変化量を算出できないため、常に式４が成り立つと判定するものとする。
【００５３】
ｉｆ  ｎ≧１
｜被写体加速度n−（背景ベクトルn+1−被写体ベクトルn+1）−（背景ベクトルn−被写体ベクトルn）｜≦閾値a          式４
なお、被写体加速度nは、Ｓ３１７で算出される値を用いる。
閾値aは、被写体が等加速運動している可能性があると判定するための閾値であり、予め定めておくことができる。ＣＰＵ１０３は、式４が成り立つ場合は処理をＳ３１６に進め、式４が成り立たない場合は処理をＳ３１５に進める。
【００５４】
図５および図６を用いて、ヒストグラムを用いた、被写体の等加速運動の判定について説明する。図５（Ａ）を現フレーム（処理フレーム番号ｎ）、図６（Ａ）を前フレーム（同ｎ＋１）としたとき、被写体速度が変化していれば、被写体ベクトル４０３と背景ベクトル４０２との差５０１，６０１は異なる。速度の変化は、図６（Ｂ）において背景ベクトル４０２の差分値６０５で表される
【００５５】
なお、図６（Ｂ）では、説明及び理解を容易にするため、被写体の動きに対して適切なパンニングが行われている場合を示している。そのため、被写体ベクトル４０３がほぼ０であり、背景ベクトルの変化量６０３と差分値６０５（＝｜差６０１−差５０１｜）とが等しいように見えている。
【００５６】
前フレームと前々フレーム（処理フレーム番号ｎ＋２）との間でも、被写体ベクトル４０３と背景ベクトル４０２との差が、（差５０１−差６０１）と同程度であれば、被写体が等加速運動していると判定できる。
【００５７】
Ｓ３１４において、被写体が等加速運動している可能性があると判定された場合、Ｓ３１６においてＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇの値を、この判定結果を表す値である１に設定する。
Ｓ３１７においてＣＰＵ１０３は、以下の式５に従って被写体加速度を算出する。
被写体加速度n＝被写体加速度n-1＋差分値６０５／（１／ｆｐｓ）          式５
【００５８】
Ｓ３１８においてＣＰＵ１０３は、処理フレーム番号ｎに１加算して更新し、処理をＳ３０５に戻す。
【００５９】
Ｓ３１３においてパンニングで回転成分以外の要素が変化したと判定された場合と、Ｓ３１４において等加速運動と判定されなかった場合、現フレームより過去のフレームの情報を参照することで被写体速度の精度向上は期待できない。そのためＳ３１５においてＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇの値を不規則な運動を意味する２に設定し、処理をＳ３０５に戻す。これにより、現フレームまでの情報によって被写体速度が算出されるようになる。
【００６０】
以下、Ｓ３１９以降で行う、被写体速度の算出処理について説明する。
Ｓ３１９においてＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが１か判定する。これは、被写体が等加速運動と判定されているか、等速運動（あるいは不定運動）と判定されているかの判定に相当する。ＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが１の場合（被写体が等加速運動していると判定されている場合）はＳ３２０に、ＳｐｅｅｄＦｌａｇが０の場合（被写体が等速運動していると判定されている場合）はＳ３２１に、処理を進める。ＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが２で、処理フレーム番号ｎが１以上の場合も、処理をＳ３２１に進める。
【００６１】
ここで、像面上の移動量をｌ［ｍｍ］、光学系１０１の焦点距離をｆ［ｍｍ］、動画像の撮影フレームレートをｆｐｓ［ｆｒａｍｅ／ｓｅｃ］とすると、移動量ｌ［ｍｍ］は以下の式６で角速度ωx［ｒａｄ／ｓｅｃ］に変換することができる。
ωx＝ｆｐｓ×ｔａｎ-1（１／ｆ）        式６
【００６２】
Ｓ３２０でＣＰＵ１０３は、
最新フレーム撮影時の角速度をω0［ｒａｄ／ｓｅｃ］
最新フレームについて検出した被写体ベクトルの移動量を上述の式６で変換した角速度をω1［ｒａｄ／ｓｅｃ］
被写体の角加速度をａ［ｒａｄ／ｓｅｃ］
差分値６０５をｄ［ｍｍ］
露光開始までにかかる時間をｔ［ｓｅｃ］
としたとき、以下の式７を用いて被写体角速度ω2［ｒａｄ／ｓｅｃ］を算出する。なお、被写体の角加速度ａ［ｒａｄ／ｓｅｃ］を用いて、露光時間中の被写体角速度を更新しながら補正をするようにしてもよい。
ａ＝ｆｐｓ×ｔａｎ-1（ｄ／ｆ）
ω2＝（ω0＋ω1）＋（ａ×ｔ）        式７
【００６３】
一方、Ｓ３２１でＣＰＵ１０３は、
各フレーム取得時の角速度をω0［ｒａｄ／ｓｅｃ］
各フレームでの被写体ベクトルの移動量を式６で変換した角速度をω1［ｒａｄ／ｓｅｃ］としたとき、以下の式８を用いて被写体角速度ω3［ｒａｄ／ｓｅｃ］を算出する。
0006539091.tif 000002
ここで、「各フレーム」とは、処理フレーム番号０から、ＳｐｅｅｄＦｌａｇ＝２やＳｈｉｆｔＦｌａｇ＝１と判定される直前のフレームであり、最大でａフレームである。
【００６４】
このように、本実施形態によれば、撮像装置の角速度と、画像間で検出した動きベクトルとに基づいて、移動被写体の速度変化の傾向と、パンニング動作の方向成分とを判定する。そして、判定結果に応じた方法で算出した被写体速度に基づいて露光期間中に防振制御を行うことにより、流し撮りを適切に支援する機能を実現する。また、適切でない状況については流し撮り支援を行わないことで、流し撮り支援機能による画質低下を抑制することができる。
【００６５】
●（第２の実施形態）
次に本発明の第２の実施形態について説明する。本実施形態は、第１の実施形態におけるベクトル判別処理（図２、Ｓ２０５）と、被写体速度検出処理（Ｓ２０６）以外は第１の実施形態と共通であってよい。従って、以下では第１の実施形態との相異点を重点的に説明する。
【００６６】
（ベクトル判別処理）
図７は、本実施形態におけるベクトル判別処理の詳細を説明するためのフローチャートであり、より具体的には被写体ベクトルおよび背景ベクトルの一方しか検出できなかった場合の処理である。なお、以下の説明では第１の実施形態と同様、デジタルカメラ１００の角速度と、画像処理装置１０６が検出した動きベクトルは、それぞれ撮像面上の移動量に変換されているものとする。従って、以下の説明における「角速度」「ベクトル」の値は、撮像面の移動量に換算された値を意味する。
【００６７】
Ｓ１２０１においてＣＰＵ１０３は、１フレーム目（１番目の画像）（図８（Ａ））の角速度４０１が閾値範囲９０５内かどうかを判定する。閾値範囲９０５は０を中心として設定され、角速度４０１が閾値範囲９０５外であれば、角速度センサ１０５のオフセットなどを考慮しても、フレーム間の角速度の変化を検出するに足りる大きさの角速度が検出されているものと見なす。ＣＰＵ１０３は、１フレーム目の角速度４０１が閾値範囲９０５外であればＳ１２０８に、そうでなければＳ１２０２に処理を進める。
【００６８】
Ｓ１２０２においてＣＰＵ１０３は、２フレーム目（２番目の画像）（図８（Ｂ））の角速度４０１が閾値範囲９０５内かどうかを、Ｓ１２０１と同様にして判定する。２フレーム目でも角速度４０１が閾値範囲９０５内で、十分な角速度を検出できていない場合、フレーム間における、角速度の変化９０７（図８（Ｃ））や動きベクトルの変化９０６（図８（Ｃ））の検出が難しい。そのためＣＰＵ１０３は処理をＳ１２０３に進め、検出された動きベクトル８０１を不定ベクトル（図８（Ｃ））と判別する。なお、Ｓ１２０１とＳ１２０２で用いる閾値範囲９０５は同じ範囲でなくてもよく、Ｓ１２０１で用いる閾値範囲の方が広くなるように設定し、同じ閾値範囲を用いる場合よりも不定ベクトルと判別しづらくなるようにしてもよい。
【００６９】
一方、Ｓ１２０２において、２フレーム目では十分な角速度が検出されていると判定された場合（フレーム間での角速度と動きベクトルの変化が検出可能と判定された場合）、ＣＰＵ１０３は処理をＳ１２０４に進める。Ｓ１２０４でＣＰＵ１０３は、フレーム間における角速度の変化方向と動きベクトルの変化方向（増加方向か、減少方向か）を比較する。
【００７０】
角速度の変化方向と、動きベクトルの変化方向とが異なる場合、動きベクトルがデジタルカメラ１００のパンニングと関係のない動きも含んでいると判断できる。そのため、ＣＰＵ１０３は処理をＳ１２０５に進め、検出された動きベクトルを被写体ベクトルと判別する。
【００７１】
一方、角速度の変化方向と動きベクトルの変化方向が同じと判定された場合、ＣＰＵ１０３は処理をＳ１２０６に進め、角速度の変化量より動きベクトルの変化量が小さいか否かを判定する。角速度の変化量より動きベクトルの変化量が小さければ、動きベクトルがデジタルカメラ１００のパンニングと異なる動きも含んでいると判断できる。そのため、ＣＰＵ１０３は処理をＳ１２０５に進め、検出された動きベクトルを被写体ベクトルと判別する。
【００７２】
さらに、動きベクトルの変化量が角速度の変化量以上であれば、デジタルカメラ１００のパンニングにより背景が流れているためであると判断できる。そのため、ＣＰＵ１０３は処理をＳ１２０７に進め、検出された動きベクトルを背景ベクトルと判別する。
【００７３】
次に、Ｓ１２０８以降の処理について説明する。Ｓ１２０８が実行されるのは、例えば図８（Ｅ）に示すように、１フレーム目で十分な（閾値範囲７０２外の）角速度４０１が検出できている場合である。
【００７４】
Ｓ１２０８においてＣＰＵ１０３は、検出された角速度４０１が動きベクトルの検出が可能な範囲７０１（図８（Ｄ））の上限以上か否かを判定する。図８（Ｄ）に示すように角速度４０１が動きベクトルの検出が可能な範囲７０１の上限以上の大きさを有する場合、背景ベクトルは動きベクトルの検出が可能な範囲７０１外にあると判断できる。そのためＣＰＵ１０３は処理をＳ１２０９に進め、検出された動きベクトル４０３を被写体ベクトルと判別する。
【００７５】
一方、Ｓ１２０８で角速度４０１が動きベクトルの検出が可能な範囲７０１の上限以上でないと判定された場合、ＣＰＵ１０３は処理をＳ１２１０に進め、角速度が動きベクトルよりも大きいか否かを判定する。上述の通り、パンニングが回転成分のみを有する場合、角速度と背景ベクトルは同等の大きさを有する。一方、パンニングがシフト成分などの回転成分以外の要素を含む場合は、角速度による移動量と、回転成分以外の要素の影響による移動量との合計が背景ベクトルの移動量となる。従って、ＣＰＵ１０３は図８（Ｅ）に示すように角速度４０１が動きベクトル４０３よりも大きいと判定された場合には処理をＳ１２０９に進め、検出された動きベクトル４０３を被写体ベクトルと判別する。一方、図８（Ｆ）に示すように動きベクトル４０２の大きさが角速度４０１以上であれば、ＣＰＵ１０３は処理をＳ１２１１に進め、検出された動きベクトル４０２を背景ベクトルと判別する。
【００７６】
（被写体速度算出処理）
次に、本実施形態における被写体速度算出の詳細について、図９のフローチャートを用いて説明する。なお、第１の実施形態における被写体速度算出処理と共通する処理ステップについては、図４と同じ参照数字を付し、重複する説明を省略する。
【００７７】
Ｓ３０１は、図４と同様の処理であるため説明を省略する。
Ｓ１３０１においてＣＰＵ１０３は、ＩｎｔｅｇｒａｌＦｌａｇを０に初期化する。なお、ＩｎｔｅｇｒａｌＦｌａｇは０または１の値をとり、値０は未積分、値１は積分を意味する。
Ｓ３０３〜Ｓ３０５は、図４と同様の処理であるため説明を省略する。
Ｓ３０７でＳｐｅｅｄＦｌａｇが２でないと判定された場合、ＣＰＵ１０３は処理をＳ１３０２に進める。
【００７８】
Ｓ１３０２においてＣＰＵ１０３は、動きベクトルが上述したベクトル判別処理において不定ベクトルと判別されているかどうかを判定し、不定ベクトルと判別されていれば処理をＳ３２３に進め、不定ベクトルと判別されていなければ処理をＳ１３０３に進める。Ｓ３２３でＣＰＵ１０３は被写体速度を０に設定する。これにより、本撮影時の露光期間中には通常の手ぶれ補正が行われる。
【００７９】
Ｓ１３０３でＣＰＵ１０３は、動きベクトルが上述したベクトル判別処理において被写体ベクトルと判別されているかどうかを判定し、被写体ベクトルと判別されていれば処理をＳ３０８に進め、被写体ベクトルと判別されていなければ処理をＳ３１３に進める。
【００８０】
Ｓ３０８においてＣＰＵ１０３は、ＳｐｅｅｄＦｌａｇが１であれば処理をＳ３１４に進め、ＳｐｅｅｄＦｌａｇが１でなければ処理をＳ１３０４に進める。
Ｓ１３０４においてＣＰＵ１０３は、現フレームと前フレームとの間における角速度の変化量と被写体ベクトルの変化量との差が閾値以下かを、式９を用いて判定する。
｜（角速度n+1−角速度n）−（被写体ベクトルn+1−被写体ベクトルn）｜≦閾値w          式９
【００８１】
閾値wは、角速度の変化量と被写体ベクトルの変化量とが同等であると見なせる範囲（すなわち、被写体が等速運動しており、パンニングが安定しているか角速度成分のみが変化していると判定する範囲）を規定する閾値であり、予め定めておくことができる。式９が成り立つ場合、ＣＰＵ１０３は処理をＳ３１１に進めて処理フレーム番号ｎに１を加えて更新して処理をＳ３０５に戻し、成り立たない場合は処理をＳ３１４に進める。なお、式９が成り立たない場合、Ｓ３１４での等加速運動の判定をスキップして処理をＳ３１５に直接進めてもよい。
【００８２】
Ｓ３１４においてＣＰＵ１０３は、被写体加速度の変化量が閾値以下であるかを、式１０を用いて判定する。なお、処理フレーム番号ｎが０の場合は、被写体加速度の変化量を算出できないため、常に閾値以内であると判定するものとする。
【００８３】
ｉｆ  ｎ≧１
｜被写体加速度n−（角速度n+1−被写体ベクトルn+1）−（角速度n−被写体ベクトルn）｜≦閾値a          式１０
なお、被写体加速度nは、Ｓ３１７で算出される値を用いる。
閾値aは、被写体が等加速運動している可能性があると判定するための閾値であり、予め定めておくことができる。ＣＰＵ１０３は、式１０が成り立つ場合は処理をＳ３１６に進め、式１０が成り立たない場合は処理をＳ３１５に進める。
Ｓ３１５〜Ｓ３１８は、図４と同様の処理であるため説明を省略する。
【００８４】
Ｓ３１３が実行されるのは、検出された動きベクトルが背景ベクトルと判別された場合である。Ｓ３１３においてＣＰＵ１０３は、前フレームと現フレームの間に生じた角速度の変化量と背景ベクトルの変化量との差が閾値以下か、式３を用いて比較し、式３が成り立った場合は処理をＳ１３０５に進め、式３が成り立たない場合は処理をＳ３１５に進める。なお、Ｓ３１５は、図４と同様の処理であるため説明を省略する。
【００８５】
式３が成り立つのは、フレーム間におけるパンニングの状態が変化していない、あるいは、回転成分のみ変化していると判定できる場合である。この場合、Ｓ１３０５においてＣＰＵ１０３は、ＩｎｔｅｇｒａｌＦｌａｇの値を１に設定し、被写体ベクトルを検出するためのモード（積分モード）に入ったことを記憶する。
【００８６】
Ｓ１３０６においてＣＰＵ１０３は、各フレームの角速度をオフセットとして、被写体ベクトルの位置（移動量）を合わせた上で２フレーム分のヒストグラムを積分する。
【００８７】
図１０を用いてＳ１３０６で行う積分動作について説明する。積分する２フレームの動きベクトルおよび角速度のヒストグラムを図１０（Ａ）とした場合、積分結果のヒストグラムは図１０（Ｂ）のようになる（背景ベクトル４０２は最大頻度でクリッピングされている）。動きベクトル１１０１のように、頻度が閾値１１０３よりも少ない場合、被写体ベクトルや背景ベクトルを検出することができない。しかし、複数フレーム分のヒストグラムを積分することで、積分後の動きベクトル１１０２の頻度が閾値１１０３よりも多くなるため、被写体ベクトルとして扱えるようになり、被写体速度を算出できるようになる。
【００８８】
しかしながら、図１０（Ａ）に示すヒストグラムのフレームと、図１０（Ｃ）に示すヒストグラムのフレームを積分した場合、動きベクトル１１０１の位置が合わないため、積分結果は図１０（Ｄ）のようになる。この場合、積分後の動きベクトル１１０４の頻度は依然として閾値１１０３よりも少ないため、被写体ベクトルとして扱うことはできない。
【００８９】
Ｓ１３０７においてＣＰＵ１０３は、処理フレーム番号ｎに１加算して更新し、処理をＳ３０５に戻す。
【００９０】
以下、Ｓ１３０８以降で行う、被写体速度の算出処理について説明する。
Ｓ１３０８においてＣＰＵ１０３は、ＩｎｔｅｇｒａｌＦｌａｇが１か、すなわち、動きベクトルの頻度が積分されているかどうかを判定する。ＣＰＵ１０３は、ＩｎｔｅｇｒａｌＦｌａｇが１の場合はＳ１３０９に、ＩｎｔｅｇｒａｌＦｌａｇが０の場合はＳ３１９に、処理を進める。なお、Ｓ３１９〜Ｓ３２１は、図４と同様の処理であるため説明を省略する。
【００９１】
図１１は、背景ベクトルが検出されていない場合のヒストグラムの例を示し、１００１はベクトル検出範囲の上限である。図１１（Ａ）と図１１（Ｂ）において、移動量に換算した角速度４０１と被写体ベクトル４０３との差１００２，１００３が同等とする。この場合、図１１（Ｃ）に示すように、図１１（Ａ）と図１１（Ｂ）との間の角速度４０１の変化量１００４と、被写体ベクトル４０３の変化量１００５が同等となる。この場合、被写体が等速運動しており、かつ、パンニングに変化がなかったか、パンニングの回転成分のみが変化したと考えられる。
【００９２】
しかしながら、差１００２と比較する対象が、図１１（Ｄ）に示すような、移動量に換算した角速度４０１と被写体ベクトル４０３との差１００６のように、差１００２と異なる値を有する場合もある。この場合、図１１（Ｅ）に示すように、図１１（Ａ）と図１１（Ｄ）との間の角速度４０１の変化量と、被写体ベクトル４０３の変化量１００７は同等とならない。そして、角速度４０１の変化量と、被写体ベクトル４０３の変化量とが同等でない場合、被写体の速度が変化しているのか、パンニングにシフト成分などの回転成分以外の要素が加わったのかを正確に判別することは難しい。
【００９３】
Ｓ１３０９においてＣＰＵ１０３は、背景ベクトル以外で最大頻度を有する動きベクトルを積分ベクトルと設定する。
Ｓ１３１０においてＣＰＵ１０３は、Ｓ１３０９で設定した積分ベクトルの頻度が閾値以上を否かを判定し、積分ベクトルの頻度が閾値未満の場合、ＣＰＵ１０３は処理をＳ３２３に進め、被写体速度を０に設定する。これにより、本撮影時の露光期間中には通常の手ぶれ補正が行われる。
【００９４】
一方、積分ベクトルの頻度が閾値以上の場合、ＣＰＵ１０３は処理をＳ１３１１に処理を進め、積分ベクトルを被写体ベクトルとして扱うことを決定して、Ｓ１３１２で被写体の角速度を算出する。
現フレーム（最新フレーム）取得時の角速度をω0［ｒａｄ／ｓｅｃ］、積分ベクトルから算出した被写体ベクトルの角速度変換値をω1［ｒａｄ／ｓｅｃ］とすると、ＣＰＵ１０３は、以下の式１１を用いて被写体角速度ω3［ｒａｄ／ｓｅｃ］を算出する。
ω3＝ω0＋ω1        式１１
【００９５】
なお、Ｓ３２２においてＣＰＵ１０３は、ｎが１より小さい場合は処理をＳ１３１３に進め、ｎが１以上の場合は処理をＳ１３０８に進める。
Ｓ１３１３においてＣＰＵ１０３は、ＩｎｔｅｇｒａｌＦｌａｇが１かどうか、すなわち、動きベクトルの頻度が積分されているかどうかを判定する。ＣＰＵ１０３は、ＩｎｔｅｇｒａｌＦｌａｇが１の場合はＳ１３０９に、ＩｎｔｅｇｒａｌＦｌａｇが０の場合はＳ３２３に、処理を進める。なお、Ｓ３２３は、図４と同様の処理であるため説明を省略する。
【００９６】
以上説明したように本実施形態によれば、第１の実施形態の構成に加え、動きベクトルが１つしか検出されなかった場合に、動きベクトルが被写体ベクトルか背景ベクトルかを、撮像装置の角速度と、画像間で検出した動きベクトルとに基づいて判別する。そのため、動きベクトルが１つしか検出されなかった場合でも、第１の実施形態と同様の効果を実現することができる。
【００９７】
（その他の実施形態）
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【００９８】
なお、本実施形態においては露光期間中にシフトレンズを駆動して移動被写体の結像位置を補正（光軸を変更）することにより、流し撮りの支援や手振れ補正を実現する構成について説明した。しかし、本発明はシフトレンズ以外の部材、例えば撮像素子１０２を駆動する光学手振れ補正機構や、電子手振れ補正技術における切り出し位置を制御するといった他の形態で（実質的に）光軸を変更することによっても実現することが可能である。
【符号の説明】
【００９９】
１００…撮像装置、１０１…光学系、１０２…撮像素子、１０３…中央演算装置（ＣＰＵ）、１０４…一次記憶装置、１０５…角速度センサ、１０６…画像処理装置、１０７…記録媒体、１０８…二次記憶装置、１０９…表示部、１１０…操作部
【図１】
0006539091.tif 000003
【図２】
0006539091.tif 000004
【図３】
0006539091.tif 000005
【図４】
0006539091.tif 000006
【図５】
0006539091.tif 000007
【図６】
0006539091.tif 000008
【図７】
0006539091.tif 000009
【図８】
0006539091.tif 000010
【図９】
0006539091.tif 000011
【図１０】
0006539091.tif 000012
【図１１】
0006539091.tif 000013