(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】2019144827
(43)【公開日】20190829
(54)【発明の名称】画像処理装置およびその制御方法ならびにプログラム
(51)【国際特許分類】
   G06T 7/207 20170101AFI20190802BHJP
   H04N 5/232 20060101ALI20190802BHJP
【FI】
   !G06T7/207
   !H04N5/232 290
【審査請求】未請求
【請求項の数】14
【出願形態】OL
【全頁数】17
(21)【出願番号】2018028209
(22)【出願日】20180220
(71)【出願人】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
【住所又は居所】東京都大田区下丸子3丁目30番2号
(74)【代理人】
【識別番号】100076428
【弁理士】
【氏名又は名称】大塚 康徳
(74)【代理人】
【識別番号】100115071
【弁理士】
【氏名又は名称】大塚 康弘
(74)【代理人】
【識別番号】100112508
【弁理士】
【氏名又は名称】高柳 司郎
(74)【代理人】
【識別番号】100116894
【弁理士】
【氏名又は名称】木村 秀二
(74)【代理人】
【識別番号】100130409
【弁理士】
【氏名又は名称】下山 治
(74)【代理人】
【識別番号】100134175
【弁理士】
【氏名又は名称】永川 行光
(72)【発明者】
【氏名】齊藤 光洋
【住所又は居所】東京都大田区下丸子3丁目30番2号 キヤノン株式会社内
【テーマコード(参考)】
5C122
5L096
【Fターム(参考)】
5C122FH12
5C122HB01
5L096AA06
5L096CA04
5L096DA01
5L096EA03
5L096EA06
5L096EA39
5L096EA43
5L096FA32
5L096FA33
5L096GA19
5L096GA51
5L096GA55
5L096HA04
5L096JA06
5L096JA09
(57)【要約】
【課題】動きベクトルの信頼度を精度よく求めることが可能な画像処理装置を提供する。
【解決手段】実施形態に係る画像処理装置は、入力画像に対し、解像度の異なる複数の階層画像を取得する画像取得手段と、入力画像を撮影するための撮影パラメータに応じて、複数の階層画像の階層ごとの重みを決定する決定手段と、フレームの異なる入力画像からそれぞれ取得される複数の階層画像の同一階層の画像間で求められる複数の動きベクトルに対し、当該複数の動きベクトルのそれぞれに対する信頼度を算出する信頼度算出手段と、階層ごとの重みを用いて、信頼度算出手段によって算出された、階層ごとの複数の動きベクトルのそれぞれに対する信頼度を合成する信頼度合成手段と、を有する。
【選択図】図5
【特許請求の範囲】
【請求項1】
入力画像に対し、解像度の異なる複数の階層画像を取得する画像取得手段と、
前記入力画像を撮影するための撮影パラメータに応じて、前記複数の階層画像の階層ごとの重みを決定する決定手段と、
フレームの異なる入力画像からそれぞれ取得される前記複数の階層画像の同一階層の画像間で求められる複数の動きベクトルに対し、当該複数の動きベクトルのそれぞれに対する信頼度を算出する信頼度算出手段と、
前記階層ごとの重みを用いて、前記信頼度算出手段によって算出された、階層ごとの前記複数の動きベクトルのそれぞれに対する信頼度を合成する信頼度合成手段と、を有することを特徴とする画像処理装置。
【請求項2】
前記信頼度算出手段は、前記階層ごとの重みのうち所定の閾値より低い重みの階層については、前記複数の動きベクトルのそれぞれに対する信頼度を算出しない、ことを特徴とする請求項1に記載の画像処理装置。
【請求項3】
前記決定手段は、前記撮影パラメータの種別に応じて重み付けの態様を異ならせる、ことを特徴とする請求項1又は2に記載の画像処理装置。
【請求項4】
前記決定手段は、前記撮影パラメータが前記入力画像のボケの大小に関わる撮影パラメータである場合、前記撮影パラメータの値がボケを大きくする値であるほど、前記複数の階層画像のうちの高解像度画像の重みを低解像度画像の重みより大きくする、ことを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
【請求項5】
前記入力画像のボケの大小に関わる撮影パラメータは、露光時間及びF値の少なくともいずれかを含む、ことを特徴とする請求項4に記載の画像処理装置。
【請求項6】
前記決定手段は、前記撮影パラメータが前記入力画像のノイズの増減に関する撮影パラメータである場合、前記撮影パラメータの値がノイズを増加させる値であるほど、前記複数の階層画像のうちの低解像度画像の重みを高解像度画像の重みより大きくする、ことを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
【請求項7】
前記入力画像のノイズの増減に関する撮影パラメータは、撮像素子の感度を含む、ことを特徴とする請求項6に記載の画像処理装置。
【請求項8】
前記決定手段は、前記撮影パラメータが前記入力画像における被写体の変形量に関する撮影パラメータである場合、前記撮影パラメータが前記被写体の変形量が大きくなることを示すほど、前記複数の階層画像のうちの低解像画像の重みを高解像度画像の重みよりも大きくする、ことを特徴とする請求項1から3のいずれか1項に記載の画像処理装置。
【請求項9】
前記入力画像における被写体の変形量に関する撮影パラメータは、前記画像処理装置の動きに関する撮影パラメータである、ことを特徴とする請求項8に記載の画像処理装置。
【請求項10】
前記信頼度算出手段は、所定の大きさの領域内の輝度変動が小さいほど、前記複数の動きベクトルのそれぞれに対する信頼度を低く算出する、ことを特徴とする請求項1から9のいずれか1項に記載の画像処理装置。
【請求項11】
所定の解像度の階層画像に対する前記複数の動きベクトルと、前記所定の解像度の階層画像に対応する、前記信頼度合成手段によって合成された前記複数の動きベクトルのそれぞれに対する信頼度とを出力する出力手段を更に有する、ことを特徴とする請求項1から10のいずれか1項に記載の画像処理装置。
【請求項12】
前記信頼度合成手段によって合成された前記複数の動きベクトルのそれぞれに対する信頼度を用いて、所定の解像度の階層画像に対する前記複数の動きベクトルのうちの一部を選択する選択手段と、
選択された前記複数の動きベクトルの一部を用いて、所定の画像処理を行う画像処理手段と、を更に有する、ことを特徴とする請求項1から11のいずれか1項に記載の画像処理装置。
【請求項13】
画像取得手段が、入力画像に対し、解像度の異なる複数の階層画像を取得する画像取得工程と、
決定手段が、前記入力画像を撮影するための撮影パラメータに応じて、前記複数の階層画像の階層ごとの重みを決定する決定工程と、
信頼度算出手段が、フレームの異なる入力画像からそれぞれ取得される前記複数の階層画像の同一階層の画像間で求められる複数の動きベクトルに対し、当該複数の動きベクトルのそれぞれに対する信頼度を算出する信頼度算出工程と、
信頼度合成手段が、前記階層ごとの重みを用いて、前記信頼度算出工程において算出された、階層ごとの前記複数の動きベクトルのそれぞれに対する信頼度を合成する信頼度合成工程と、を有することを特徴とする画像処理装置の制御方法。
【請求項14】
コンピュータを、請求項1から12のいずれか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、動きベクトルの信頼度を算出する画像処理装置およびその制御方法ならびにプログラムに関する。
【背景技術】
【0002】
複数枚の入力画像間における着目画素の移動量を動きベクトルとして検出するために、入力画像から解像度の異なる複数の階層画像を生成し、生成した階層画像を用いて動きベクトルを検出する技術が知られている。複数の階層画像のうちの低解像度の画像で検出した動きベクトルの値を次の階層での初期値として用いることで動きベクトルを検出する演算量を低減することができる。
【0003】
また、複数の階層画像を用いる技術として、複数の階層画像においてエッジを検出し、撮像装置の制御情報や画像から得られる動きベクトルに応じて、階層ごとのエッジ検出結果を重み付けして合成した評価値を生成する技術が知られている(特許文献1)。このように階層ごとのエッジ検出結果を重み付けして合成することにより、手ぶれや動きぶれなどのカメラの撮影状態によらず、エッジ検出の精度を向上させることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2013−165352号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ところで、検出される動きベクトルは、一般に撮影条件等によってその検出精度が低下する場合があり、後に、検出された動きベクトルを用いて処理を行う場合には、当該処理の精度は動きベクトルの精度に依存してしまう。これに対し、動きベクトルを検出する際に、検出した動きベクトルの正しさを判定するための信頼度を生成しておけば、後の処理において当該信頼度を考慮した動きベクトルの処理が可能になる。また、上述の特許文献1では、カメラの撮影状態によらずにエッジ検出の精度を向上させる技術を開示するものの、動きベクトルの検出に対する信頼度を精度よく得る技術については考慮していなかった。
【0006】
本発明は、上記課題に鑑みてなされ、その目的は、動きベクトルの信頼度を精度よく求めることが可能な技術を実現することである。
【課題を解決するための手段】
【0007】
この課題を解決するため、例えば本発明の画像処理装置は以下の構成を備える。すなわち、入力画像に対し、解像度の異なる複数の階層画像を取得する画像取得手段と、前記入力画像を撮影するための撮影パラメータに応じて、前記複数の階層画像の階層ごとの重みを決定する決定手段と、フレームの異なる入力画像からそれぞれ取得される前記複数の階層画像の同一階層の画像間で求められる複数の動きベクトルに対し、当該複数の動きベクトルのそれぞれに対する信頼度を算出する信頼度算出手段と、前記階層ごとの重みを用いて、前記信頼度算出手段によって算出された、階層ごとの前記複数の動きベクトルのそれぞれに対する信頼度を合成する信頼度合成手段と、を有することを特徴とする。
【発明の効果】
【0008】
本発明によれば、動きベクトルの信頼度を精度よく求めることが可能になる。
【図面の簡単な説明】
【0009】
【図1】実施形態1に係る画像処理装置の一例としてのデジタルカメラの機能構成例を示すブロック図
【図2】実施形態1に係る信頼度情報の生成処理の一連の動作を示すフローチャート
【図3】実施形態1に係るテンプレートマッチングを説明する図
【図4】実施形態1に係る信頼度マップを模式的に示す図
【図5】実施形態1に係る信頼度判定処理の一連の動作を示すフローチャート
【図6】実施形態1に係る重み付け情報の構成例を説明する図
【図7】実施形態2に係るデジタルカメラの機能構成例を示すブロック図
【図8】実施形態2に係る信頼度情報の生成処理の一連の動作を示すフローチャート
【図9】実施形態2に係る信頼度判定処理の一連の動作を示すフローチャート
【図10】実施形態2に係る信頼度合成処理の一連の動作を示すフローチャート
【発明を実施するための形態】
【0010】
(実施形態1)
以下、本発明の例示的な実施形態について、図面を参照して詳細に説明する。なお、以下では画像処理装置の一例として、撮像した画像信号の動きベクトルを算出可能なデジタルカメラを用いる例を説明する。しかし、本実施形態は、デジタルカメラに限らず、動きベクトルを算出可能な他の機器にも適用可能である。これらの機器には、例えばスマートフォンを含む携帯電話機、ゲーム機、タブレット端末、時計型や眼鏡型の情報端末、医療機器、監視システム、車載用システム、画像を取得して処理を行うロボットなどが含まれてよい。
【0011】
(デジタルカメラの構成)
図1は、本実施形態の画像処理装置の一例としてデジタルカメラ100の機能構成例を示すブロック図である。なお、図1に示す機能ブロックの1つ以上は、ASICやプログラマブルロジックアレイ(PLA)などのハードウェアによって実現されてもよいし、CPUやMPU等のプログラマブルプロセッサがソフトウェアを実行することによって実現されてもよい。また、ソフトウェアとハードウェアの組み合わせによって実現されてもよい。従って、以下の説明において、異なる機能ブロックが動作主体として記載されている場合であっても、同じハードウェアが主体として実現されうる。
【0012】
撮影光学系101は、例えばズームレンズ、フォーカスレンズ等を含むレンズ群を含み、被写体像を撮像素子102に結像させる。撮像素子102は、光電変換素子を有する画素が複数、2次元的に配列された構成を有する。撮像素子102は、撮影光学系101により結像された被写体光学像を各画素で光電変換し、アナログ画像信号を出力する。撮像素子102は、CCD(Charge-Coupled Device)イメージセンサやCMOS(Complementary Metal Oxide Semiconductor)イメージセンサなどの撮像素子であってよい。
【0013】
現像処理部103は、撮像素子102から出力されるアナログ信号から画像信号を形成する。現像処理部103は、不図示のA/D変換部、オートゲイン制御部(AGC)、オートホワイトバランス部を含む。A/D変換部は、アナログ画像信号をアナログ・デジタル変換して、画素単位のデジタル信号を出力する。オートゲイン制御部とオートホワイトバランス部は、デジタル画像信号に更にゲイン補正やホワイトバランス処理を行って、現像済みの画像データ(単に画像ともいう)を出力する。撮像素子102及び現像処理部103により、画像の取得を行う撮像系が構成される。
【0014】
メモリ104は、例えばSDRAMなどの揮発メモリを含む。メモリ104は、動画データや静止画データ、音声データ等の各種のデータ、或いは、デジタルカメラ100の撮影パラメータ等を一時的に記憶する。
【0015】
多重解像度画像生成部105は、現像処理部103から入力される画像に対してリサイズ処理を施す。動きベクトル検出部106は、メモリ104から入力される画像と多重解像度画像生成部104から入力される画像間での動きベクトルを検出する。信頼度算出部107は、動きベクトルの検出に使用した画像を用いて、検出された動きベクトルに対する信頼度を算出する。撮影パラメータ取得部108は、デジタルカメラ100が画像取得時に使用した撮影パラメータを取得する。信頼度判定部109は、撮影パラメータ取得部108において取得される撮影パラメータの値に基づいて、信頼度算出部107で算出される信頼度に対する重み付けを行なう。信頼度合成部110は、信頼度判定部109で判定された重み付けに基づいて複数の解像度で算出された信頼度の合成を行なう。
【0016】
制御部111は、例えばCPU(或いはMPU)を含み、記録部112に記憶されたプログラムをメモリ104に展開、実行して、デジタルカメラ100の各ブロックを制御したり、各ブロック間でのデータ転送を制御したりする。また、制御部111は、ユーザからの操作を受け付ける操作部113からの操作信号に応じて、デジタルカメラ100の各ブロックを制御する。また、制御部111は、上述の多重解像度画像生成部105、動きベクトル検出部106、信頼度算出部107、信頼度判定部109、信頼度合成部110のいずれか又は全てに代わって後述する処理を行ってもよい。
【0017】
記録部112は、撮影された映像を記録するための記録媒体を含み、例えば半導体メモリや磁気ディスク等から構成される。記録部112は、制御部111におけるCPUのためのプログラムや、動作用の設定値などを記憶する。
【0018】
操作部113は、例えば、電源ボタン、静止画記録ボタン、動画記録開始、停止を指示するボタンなどの撮影に関連する各種操作を入力するスイッチ類を含む。また、操作部113は、メニュー表示ボタン、決定ボタン、その他カーソルキー、ポインティングデバイス、タッチパネル等を有し、ユーザによりこれらのキーやボタンが操作されると制御部111に操作信号を送信する。タッチパネルは例えば接触又は近接或いは圧力を検知してユーザからの入力操作を受け付ける。
【0019】
表示部114は、例えば、液晶ディスプレイ、有機ELディスプレイ、電子ペーパー等の表示デバイスを含み、撮影された画像や記録部112から読み出した画像を表示する。また、ユーザがデジタルカメラ100を操作するためのメニュー画面を表示する。
【0020】
(信頼度情報の生成処理に係る一連の動作)
次に、図2を参照して、本実施形態に係る信頼度情報の生成処理に係る一連の動作について説明する。なお、本処理は、例えば、操作部113に含まれるボタン等において動画撮影の開始指示が検出された場合に開始される。また、本処理は、制御部111が記録部112に記録されたプログラムをメモリ104の作業用領域に展開、実行すると共に、多重解像度画像生成部105等の各部を制御することにより実現される。
【0021】
ステップS201では、現像処理部103は、制御部111の指示に応じて、動画において順次入力される入力画像を取得する。具体的に、まず、撮像素子102は、撮影光学系101によって形成された被写体像を撮像し、被写体輝度に応じたアナログ信号を順次出力する。すなわちそれぞれの入力画像は、所定のフレームレートで順次出力される。その後、現像処理部103は、上述のA/D変換部によってアナログ信号をデジタル信号に変換して、現像処理部103内にあるAGC及びAWBによって当該デジタル信号にレベル補正や白レベル補正を施す。現像処理部103は、レベル補正等を施した画像を出力する。
【0022】
ステップS202では、多重解像度画像生成部105は、制御部111の指示に応じて現像処理部103から入力された画像にリサイズ処理を施し、段階的に解像度が異なる複数の階層画像(多重解像度画像)を生成する。多重解像度画像の例として、例えば、入力画像を「1/2のn乗」の縮小率でリサイズする。ここでnは1以上の整数であり、入力画像の解像度を基準として、1/2倍、1/4倍、1/8倍・・・というように段階的に縮小率の異なる縮小画像を生成していく。なお、ここで挙げた縮小率は一例であり、段階的に解像度の異なる縮小画像を生成することができる限り他の方法であってもよい。但し、縮小率が小さい(例えば入力画像との差が小さいサイズに縮小する)場合、後段の処理において動きベクトルや信頼度の性質に差が無くなる点に留意が必要である。また、生成する枚数についても、あまりに多く生成すると後段の処理の処理時間が増大し、さらに最小解像度の画像が小さくなりすぎてテクスチャ情報が失われてしまう可能性がある。このため、縮小率や枚数については、予め実験等によって得られる効果的な値を用いるとよい。また、例えば階層探索を行なう場合には、どの程度の大きさの動きまでを検出したいかによって解像度と階層数を決定してもよい。
【0023】
また、多重解像度画像の生成に用いるリサイズ方法については特に制限はなく、単純な間引き処理やバイリニア、バイキュービックのような補間によるリサイズ方法を用いても良い。なお、リサイズ処理を施すことでリサイズ結果の画像に折り返し歪みが発生する可能性があるため、リサイズ処理の前にローパスフィルタをかける等の事前処理を施しておくと良い。なお、多重解像度画像の生成例として入力画像に縮小処理を施す場合を例に説明しているが、拡大処理を施す場合についても同様である。
【0024】
多重解像度画像生成部105は、生成した多重解像度画像をメモリ104に記憶させる。多重解像度画像生成部105は、メモリ104に記憶される画像を、新たなフレームの処理が行われるたびに順次更新する。
【0025】
ステップS203では、動きベクトル検出部106は、制御部111の指示に応じて、現在のフレームに対する多重解像度画像のうちの処理対象の階層の画像と、異なるフレームの多重解像度画像の同一階層の画像との間で動きベクトルを検出する。本実施形態では、動きベクトルを検出する処理として、例えばテンプレートマッチングを用いた方法を例に説明する。
【0026】
図3には、本実施形態に係るテンプレートマッチングの処理の概要を示している。図3(a)は原画像を表し、図3(b)は参照画像を表しており、これらの画像はメモリ104に記憶されている多重解像度画像である。ここで、原画像と参照画像の解像度は同一である。動きベクトル検出部106は、原画像中の任意の位置にテンプレートブロック301を配置し、テンプレートブロック301と参照画像の各領域との相関値を算出する。このとき、参照画像の全領域に対して相関値を算出するのでは演算量が膨大なものとなるため、実際には、参照画像上の相関値を算出する矩形領域であるサーチ範囲302を設定する。このとき、サーチ範囲302の位置や大きさについては特に制限は無いが、サーチ範囲302の内部にテンプレートブロック301の移動先に相当する領域が含まれていない場合には正しい動きベクトルを検出することが出来ない。
【0027】
本実施形態では、相関値の算出方法の一例として差分絶対値和(Sum of Absolute Difference、以下SADと略す)を使用する。動きベクトル検出部106は、例えば、式1に従ってSADを算出する。
【0028】
【数1】
【0029】
なお、式1において、f(i,j)はテンプレートブロック301内の座標(i,j)における輝度値を表しており、g(i,j)はサーチ範囲302において相関値算出の対象となるブロック303内の各輝度値を表す。そしてSADでは、両ブロック内の各輝度値f(i,j)及びg(i,j)について差の絶対値を計算し、その総和を求めることで相関値S_SADを得ることが出来る。相関値S_SADの値が小さいほど両ブロック間の輝度値の差分が小さい、つまりテンプレートブロック301と相関値対象ブロック303内のテクスチャが類似していることを表している。
【0030】
本実施形態では、相関値の一例としてSADを使用する場合を例に説明するが、差分二乗和(SSD)や正規化相互相関(NCC)等の他の相関値を用いても良い。SAD以外の相関値を使用する場合には、その特性に応じて、相関値が小さいほど類似度が高い場合と、大きいほど類似度が高い場合の2通りがあるため、それに応じて以降の処理も変更する必要がある。
【0031】
動きベクトル検出部106は、更に、サーチ範囲302の全領域について相関値対象ブロック303を移動させて相関値を算出する。そして、テンプレートブロック301とサーチ範囲302との間で相関値を算出し、その値が最も小さくなる位置を判定する。これにより、原画像上のテンプレートブロックが参照画像においてどの位置に移動したか、つまり画像間の動きベクトルを検出することができる。
【0032】
動きベクトル検出部106は、このような動きベクトル検出処理を、異なるフレームの入力画像間の複数の領域で行う。本実施形態では、ベクトル検出の例として、テンプレートマッチングを用いる例について説明したが、他にも勾配法を用いた方法や、特徴点抽出による対応点探索等の方法を用いても良い。
【0033】
ステップS204では、信頼度算出部107は、制御部111の指示に応じて、多重解像度画像のうちの処理対象の階層の画像について、動きベクトルに対する信頼度を算出する。具体期には、信頼度算出部107は、メモリ104及び動きベクトル検出部106から得られる入力画像と動きベクトル検出結果とを用いて、各動きベクトルに対する信頼度を算出する。
【0034】
一般に、撮影されたシーンには、例えば低コントラスト領域やオクルージョン領域等の、ベクトル検出を失敗する可能性の高い苦手領域が含まれる場合がある。低コントラスト領域では、テンプレートブロックやサーチ範囲内に意味のあるテクスチャが存在しないため、相関の高い領域を見つけ出すことが困難になる。また、オクルージョン領域とは、視差や移動物体の影響によりある画像で見えていたものが次の画像で隠れてしまったり、隠れていたものが出現したりする領域のことである。このようなオクルージョン領域でのテンプレートブロック内のテクスチャは、参照画像中では見え隠れによって異なるテクスチャとなってしまうため、相関の高い領域を見つけ出すことが困難になる。このような苦手領域に対しては、入力画像や検出された動きベクトルを解析することによって苦手の種類や程度を算出し、各動きベクトルに対する信頼度マップとして出力する。
【0035】
本実施形態では、信頼度の算出方法の一例として、低コントラスト領域に基づく信頼度を算出する方法を例に説明する。画像中のコントラストは、輝度値の分散値Vとして、式2に従って求めることが出来る。
【0036】
【数2】
【0037】
ここで、M及びNは分散値の算出対象領域のウィンドウサイズ、x(i,j)はウインドウ内の座標(i、j)の画素の輝度値である。xaveは、ウインドウ内の輝度値の平均を示している。分散値Vは、ウインドウ内の各画素の輝度値が平均値に近い値の場合に小さい値となる。このため、信頼度算出部107は、分散値Vが小さいほど領域内の輝度変動が小さい(すなわちコントラストが低い)ほど、信頼度を低く算出する。また、ウィンドウサイズN×Mの大きさには特に制限は無いが、例えば3×3では狭い範囲内でのコントラストを判定することになり、31×31のように大きくするほど広い範囲におけるコントラストを判定することになる。信頼度算出部107は、動きベクトルの検出を行なった全ての画素において分散値Vを算出して、動きベクトルと対応付けることで、検出した各動きベクトルに対するコントラスト信頼度マップを生成する。
【0038】
本実施形態では、信頼度の一例として分散値によるコントラスト信頼度の算出方法について説明したが、信頼度の種類はこれに限るものではない。その他の信頼度の例としては、前述のオクルージョン領域やエッジ強度、コーナー特徴量等、入力画像中のベクトル検出の苦手領域の判定を行なえるものであれば、どのようなものでも信頼度として使用が可能である。また、別途、元画像と参照画像を入れ替えて動きベクトルの検出を行い、入れ替える前の検出結果との整合性を信頼度とするような、検出された動きベクトルそのものを解析する方法等を用いてもよく、出力する信頼度の種類も1つでなくてもよい。
【0039】
なお、ステップS204及びステップS203の処理は、多重解像度画像生成部105で生成した多重解像度画像の全ての階層に対して実行する。このとき、各解像度の画像に対して個別に動きベクトル及び信頼度マップの生成を行なっても良いし、低解像画像での動きベクトル検出結果を高解像画像での検出の初期値とするような階層構造を活用した検出を行なっても良い。
【0040】
ステップS205では、制御部111は、多重解像度画像の全階層についてステップS203及びステップS204の処理を行ったかを判定する。制御部111は、多重解像度画像の全階層についてこれらの処理を行っていると判定した場合にはステップS206に処理を進める。一方、多重解像度画像の全階層についての処理を終了していない場合、多重解像度画像の全ての階層に対してステップS203及びステップS204の処理を行うために処理をS203に戻す。
【0041】
ステップS206では、信頼度判定部109は、制御部111の指示に応じて、出力解像度の画像の動きベクトルに対する信頼度判定を行う。具体的には、信頼度判定部109は、信頼度算出部107から得られる各解像度の信頼度マップと、撮影パラメータ取得部108から得られる撮影パラメータとを用いて、出力解像度の画像の動きベクトルに対する信頼度マップを生成する。なお、本実施形態では、出力解像度の画像の動きベクトルに対する信頼度マップを信頼度情報ともいう。出力解像度とは、多重解像度画像生成部105が生成した多重解像度画像のうち、処理結果として動きベクトルを出力する解像度を表す。この出力解像度は、必ずしも入力画像の解像度と同じでなくてよい。どの解像度で動きベクトルの検出結果を出力するかは、例えば動きベクトルの用途に応じて自動で変更したり、撮影者が任意に設定したりしても良い。例えば、低解像画像を出力解像度とすると処理時間は速いが動きベクトルの精度は低くなり、逆に高解像画像にすると処理に時間はかかるが精度の高い動きベクトルを出力することが出来る。
【0042】
上述したように、動きベクトル情報と併せて、同一解像度の信頼度マップが出力されている。このため、後段の処理において信頼度マップを使用することにより、画像内の動きベクトルの中から必要な動きベクトルを取捨選択することが可能となる。すなわち、出力解像度と同一の解像度に対する信頼度マップのみを生成する場合や、特定の階層の信頼度マップをリサイズして出力する場合よりも良好な信頼度マップを出力することができる。
【0043】
コントラストに基づく信頼度を解像度ごとに用いる場合について、図4を参照して説明する。図4(a)は原画像を示しており、401に示す背景の領域が、青空等の低コントラスト領域となっているものとする。そして、図4(b)には、同4(a)を原画像とした場合に、等倍解像度を出力解像度とした場合の動きベクトル検出結果を模式的に示している。矢印410は、動きベクトル検出結果を示しており、図4(b)の例では、人物の領域402において左方向への動きが生じていることを表している。なお、図4(b)では、動きの無い領域では動きベクトルの表示を省略しているが、このような領域では長さが極めて小さい動きベクトルが算出されている。
【0044】
さらに、図4(c)及び図4(d)は、図4(b)に示した動きベクトルに対する信頼度マップを表している。図4(c)は等倍解像度での信頼度マップを表し、図4(d)は、図4(c)よりも低解像度における信頼度マップを表している。ここで、図4(c)の403に示す白い領域は信頼度の高い領域、つまりコントラストが高い領域を表している。一方、背景の領域のような低コントラスト領域は信頼度が低いものとして黒く表されている。
【0045】
信頼度判定部109は、信頼度マップを用いて動きベクトルの信頼度を判定する場合、信頼度マップにおいて、動きベクトルを検出した座標位置と同じ場所にある信頼度を参照する。動きベクトルの出力解像度と、信頼度マップの解像度が異なる場合には、事前に信頼度マップの解像度を出力解像度に合わせてリサイズしておく等の処理を行う。
【0046】
ここで、解像度ごとの信頼度マップを用いる場合の利点について説明する。図4(c)に示す高解像度での信頼度マップは、シーン中の物体やテクスチャの輪郭形状が明瞭であり、細かいテクスチャに対しても信頼度が判定されている。解像度が高い場合には微小なテクスチャに反応しやすくなるため、信頼度の判定が厳しくなる傾向があり、正しく動きベクトルが検出されている領域であっても信頼度が低いと判定してしまう場合がある。
【0047】
図4(d)に示す低解像度の信頼度マップは、404に示すように、高信頼の領域が高解像のものに対して広がりを持つようになり、細かいテクスチャについての信頼度は算出されなくなる。つまり、低解像度の信頼度マップでは信頼度の判定が緩くなる傾向があり、一様な背景のような苦手領域で検出された動きベクトルであっても信頼度が高いと判定してしまう場合がある。図4(c)と図4(d)の中間的の解像度の場合には、その性質も(c)と(d)の中間的なものとなる。なお、図4に示したコントラスト信頼度に基づいて解像度ごとの信頼度マップの性質を説明したが、これらの性質はコントラスト信頼度に限ったものではなく、それ他の種類の信頼度に対しても同じことが言える。
【0048】
このように、信頼度マップは生成された解像度によって性質が異なるものの、出力解像度と同じ解像度の信頼度マップを出力するだけでは、高解像度における信頼度マップの性質が反映されるだけとなる。すなわち、信頼度判定の確度を向上させ、従来よりも高品質な動きベクトルを取得することは困難である。そこで本実施形態では、最終的な、動きベクトルの出力解像度での信頼度の生成において、異なる複数の解像度で算出された信頼度マップを撮影条件に応じて反映するようにする。具体的には、信頼度判定部109は、取得した撮影パラメータに基づいて、異なる複数の解像度で算出された信頼度マップの重み付け合成を行なう。この信頼度判定処理の具体例については後述する。制御部111は、信頼度判定部109による信頼度判定処理が完了すると、信頼度情報の生成処理に係る一連の動作を終了する。
【0049】
(信頼度判定処理に係る一連の動作)
次に、ステップ206における信頼度判定処理について、図5を参照して更に説明する。ステップS501では、信頼度判定部109は、信頼度算出部107で生成された解像度ごとの信頼度マップを取得する。ステップS502では、信頼度判定部109は、撮影パラメータ取得部108を介して、入力画像取得時の撮影パラメータを取得する。
【0050】
ステップS503では、信頼度判定部109は、取得した撮影パラメータに応じて、各階層の信頼度マップを重み付けする。このとき、信頼度判定部109は、各解像度画像に対する重みを表す重み付け情報を生成する。撮影パラメータに応じた重み付けは、撮影パラメータの種別や撮影パラメータを変更して得られる効果に応じて、重み付けの態様を異ならせることができる。
【0051】
例えば、撮影パラメータを露光時間とした場合、長い露光時間では手ぶれや被写体の動きにより画像中の動きボケが大きくなる。この際、低解像度の信頼度マップでは動きボケの生じている領域まで高信頼と判定される可能性が高い。しかしながら、ボケの生じている領域、つまり低コントラストの領域はテクスチャが乏しく、動きベクトルの検出が失敗しやすい苦手領域であり、その動きベクトルの信頼度は低いと判定されなければならない。このため、信頼度判定部109は、撮影パラメータを露光時間とする場合には、高解像度画像での信頼度マップに対する重みを低解像度での信頼度マップに対する重みよりも大きくする。このとき、露光時間が長いほど、高解像度画像での信頼度マップに対する重みをより大きくする。
【0052】
撮影パラメータをF値とした場合も同様であり、F値が小さいと被写界深度が浅くなるので背景領域等の着目被写体以外の領域はボケが大きくなる。そのため、信頼度判定部109は、上述の露光時間の場合と同様に、F値が小さいほど高解像度画像での信頼度マップの重みを低解像度での信頼度マップに対する重みより大きくする。すなわち、信頼度判定部109は、撮影パラメータが撮影画像のボケの大小に関わる撮影パラメータである場合、撮影パラメータの値がボケを大きくする値であるほど高解像度画像での信頼度マップの重みを低解像度画像での信頼度マップの重みより大きくする。
【0053】
また、夜景のシーン等において撮像素子の感度を高感度にして撮影を行なうと、画像中のノイズ量が増大する。このため、高解像度画像で信頼度の算出を行なうとノイズを有意なテクスチャと判断して高信頼としてしまう可能性がある。このため、信頼度判定部109は、撮影パラメータを感度とする場合、細かいテクスチャを無視することができる低解像画像での信頼度マップに対する重みを高解像度での信頼度マップに対する重みより大きくする。すなわち、信頼度判定部109は、撮影パラメータがノイズの増減に関する撮影パラメータである場合、撮影パラメータの値がノイズを増加させる値であるほど、低解像度での信頼度マップに対する重みを高解像度での信頼度マップに対する重みより大きくする。このようにすることで、ノイズの影響を受けにくい信頼度を生成することが可能となる。
【0054】
更なる撮影パラメータの例として、デジタルカメラ100に搭載された角速度センサや加速度センサから得られるデジタルカメラ100の動き情報を用いて解像度ごとの信頼度マップの重み付けを行なうことも出来る。重み付けの方法としては、センサから得られた動き情報の中で、入力画像における回転やあおり、変倍の動き成分が大きいほど、元画像と参照画像の間でのテクスチャの形状変化が大きいと判断する。並進の動きのように、画像間でテクスチャが平行移動するだけの場合には良好に動きベクトルを検出することが出来るが、上述のような変形が生じると、画像間で同じテクスチャが無くなるため動きベクトルの検出精度は低下する。回転やあおり、変倍の動きが大きい場合でも、低解像画像においては、動き量そのものも小さくなるため並進の動きに近似することが出来る。そのため、低解像画像では、回転やあおり、変倍の動きによる画像間のテクスチャの変形の影響が小さい状態で安定して動きベクトルを検出することが可能となる。従って、動き情報が、(回転やあおり、変倍により)入力画像における被写体の変形量が大きくなることを示すほど、低解像画像での信頼度マップの重みを高解像度画像での信頼度マップの重みよりも大きくすれば良い。
【0055】
重み付けの判定に使用する他の情報として、例えば、ユーザが指定する撮影モードを用いてもよい。ユーザが指定する撮影モードの例としては、ぶれ補正処理がある。画像処理による一般的なぶれ補正の方法としては、画像中の特徴点を抽出して、その点を複数フレームに渡って追跡を行なった軌跡情報からぶれ補正の為の画像幾何変形量を算出する方法がある。フレーム画像間での幾何変形量の推定処理では、高精度な軌跡情報が数十点程度あれば良いので、高解像度画像での信頼度の重み付けを大きくすることで信頼度の高い動きベクトルを厳選することが必要となる。
【0056】
一方、例えばモーションブラー付与のように、画像中の全画素に対して画像処理を施すようなモードの場合には、個々の動きベクトルの精度の低下を許容してでも、可能な限り多くの動きベクトルを取得する必要がある。そのため、このような場合には、低解像度画像での信頼度の重みを大きくする。すなわち、信頼度判定部109は、ユーザが指定する撮影モードが、画像における一部の画素の情報に基づく画像処理を施すモードである場合、高解像度画像での信頼度マップに対する重みを、低解像度画像での信頼度マップに対する重みより大きくする。一方、ユーザが指定する撮影モードが、画像における全ての画素の情報に基づく画像処理を施すモードである場合、低解像度画像での信頼度マップに対する重みを、高解像度画像での信頼度マップに対する重みより大きくする。以降のステップでは、生成した解像度ごとの重み付け情報をもとに、出力解像度に合わせた信頼度マップを生成する。
【0057】
ステップS504では、信頼度合成部110は、各解像度の信頼度マップに対してリサイズ処理を施して、各解像度の信頼度マップを出力解像度のサイズに統一する。リサイズ処理については、ニアレストネイバーやバイリニアのような一般的な手法を用いれば良い。このとき、ステップS503において重みがゼロと判定された解像度については、最終的な出力解像度における信頼度マップの生成で用いることは無いので、リサイズ処理を行わずに本ステップにて破棄してしまってもよい。
【0058】
ステップS505では、信頼度合成部110は、リサイズ処理が施された各解像度の信頼度マップを出力解像度における一枚の信頼度マップに合成し、信頼度情報を生成する。図6は、信頼度マップ上の任意の座標位置における重み付け情報の構造を示している。解像度の種類(多重解像度画像の数)がNである場合、出力解像度の各座標位置における信頼度は、Nビット分のデータである601に格納される。すなわち、重み付け情報は、このNビットデータ601の各ビットに解像度ごとの信頼度の値を格納したものになる。
【0059】
重み付け情報を生成するためには、具体的に、まず解像度ごとの信頼度の2値化を行なう。2値化のためには、信頼度に対して予め閾値を定めておく必要があるが、その設定方法としては例えば、動きベクトルに使用目的に応じて実験的に決定する方法等がある。なお、解像度ごとの閾値の決定方法については、例えば高解像度画像での閾値を決定し、その値を他の解像度にも使用すれば、異なる解像度に対して統一された尺度での信頼度判定を行うことができる。これにより、どの解像度でも同様のテクスチャが存在し続けているような、例えば階層的な動きベクトルの検出の際に非常に良好な検出を行なうことのできる領域に対して高信頼と判定することが出来る。その他にも、出力解像度での閾値を基準として、解像度の比率に応じて閾値を変更するといった解像度ごとに適応的な信頼度判定を行なうようにしてもよい。
【0060】
各解像度の信頼度の2値化処理が完了すると、図6に示すNビットデータ601にその結果を格納していく。例えば、重みの大きい解像度の信頼度ほど上位のビットに格納することで、解像度ごとの信頼度の重みが考慮された信頼度情報を生成することが出来る。
【0061】
具体的には、例えば、N=8ビットとした場合、8つの解像度のうち最も重みの大きい解像度の信頼度を最上位ビット602に格納する。そして、最も重みの小さい解像度の信頼度は最下位ビット603に格納する。同様に、他の解像度についても信頼度の重みに応じたビット位置に当該解像度の信頼度を格納する。このとき、どの解像度がどのビットに対応するかは、例えば、撮影パラメータの設定に応じて予め定めたテーブルを用いてもよい。例えば、所定の撮影パラメータで撮影した際に、最も低解像度から順に高解像度になるにつれて重み付けが低くなる場合、最も低い解像度が最上位ビット602に対応し、最も高い解像度が最下位ビット603に対応することになる。
【0062】
このようにして最終的に出来上がる信頼度のデータは、最も重みの大きい信頼度には127の値が割り当てられ、最も重みの小さい信頼度には1の値が割り当てられるため、その値が大きいほど重みの大きい解像度での信頼度が高いことを表す。また、より多くの解像度において高信頼と判定された場合にも図6に示した信頼度データの値は大きくなるため、重みが小さくても多くの解像度で信頼度が高ければ、総合的に高信頼であるといった判定も可能である。それに加えて同図のデータ構造は各解像度の信頼度判定結果がビット毎に完全に独立して格納されているため、後段での処理の際に特定の解像度での信頼度のみを抽出して使用するということも容易に行うことが出来る。
【0063】
上述の実施形態では、解像度ごとに重み付けされた信頼度マップを統合して、動きベクトルの出力解像度に合わせた1枚の信頼度マップ(すなわち信頼度情報)を生成する方法について述べたが、特にこれに限定されるものではない。データ容量や処理時間に特段の制約が無いのであれば、各解像度のサイズのまま出力して、後段での処理の際に階層毎の重みや位置関係を計算しても良い。また、信頼度を2値化せずに多値の信頼度に対して重み付けの係数を乗算した後に階層ごとの信頼度を加算するという方法でも動きベクトルの出力解像度の信頼度として使用することは可能である。
【0064】
信頼度合成部110は、出力解像度の各画素位置における動きベクトル及び当該動きベクトルに対する信頼度を生成すると、リサイズした信頼度マップの合成処理を終了し、その後、本一連の動作を終了する。なお、出力解像度における動きベクトルと、当該動きベクトルに対する信頼度情報とは合わせて、メモリ104や記録部112に記録されたり、例えば制御部111に伝送されたりする。また、出力解像度における動きベクトルと当該動きベクトルに対する信頼度情報とは、撮像によって生成される動画ファイルに付加情報として記録されてもよい。
【0065】
なお、上述の信頼度情報の生成処理に加え、例えば制御部111が、生成された信頼度情報を用いて、出力解像度の画像における(所定の閾値以上の信頼度に対応する)動きベクトルを選択するようにしてもよい。そして、信頼度情報を用いて選択した信頼性の高い動きベクトルを用いて、ぶれ補正処理や画像圧縮処理などの所定の画像処理を行ってもよい。
【0066】
以上説明したように本実施形態では、動きベクトルの信頼度を算出する際に、解像度ごとに算出された信頼度を撮影パラメータ等に基づいて重み付けし、出力解像度に対する1枚の信頼度マップ(すなわち信頼度情報)を生成するようにした。このようにすることで、各動きベクトルに対する信頼度を精度よく求めることができる。すなわち、誤判定の低減された良好な信頼度情報を生成することが可能となり、高信頼で正しく検出された動きベクトルを正確に選別することが出来るようになる。
【0067】
(実施形態2)
次に実施形態2について説明する。本実施形態では、動きベクトルの検出を行なう前に解像度ごとの信頼度にどのような重みを付けるかを判定する。本実施形態のデジタルカメラ700は、解像度ごとの信頼度を重み付けするための構成が異なるが、その他の構成は実施形態1と同一である。このため、同一の構成については同一の符号を付して重複する説明は省略し、相違点について重点的に説明する。
【0068】
図7には、実施形態2に係るデジタルカメラ700の構成を示している。図7では、図1に示した構成に対して、多重解像度画像生成部105の直後に信頼度判定部109が配置されている。このような構成における、信頼度情報の生成処理に係る一連の動作について、図8を参照して説明する。なお、本実施形態においても、信頼度情報の生成処理は、制御部111が記録部112に記録されたプログラムをメモリ104の作業用領域に展開、実行すると共に、多重解像度画像生成部105等の各部を制御することにより実現される。
【0069】
まず、現像処理部103及び多重解像度画像生成部105は、実施形態1と同様にステップS201及びS202を実行する。
【0070】
ステップS801では、信頼度判定部109は、撮影パラメータ取得部108を介して取得した撮影パラメータ情報を用いて、本実施形態に係る信頼度判定処理を行う。ここで、本ステップの信頼度判定処理は、図9に示すように、実施形態1におけるステップS502及びS503に対応する。このように、解像度ごとに信頼度の生成を行なう前に、解像度ごとの信頼度の重み付けを決定することにより、例えば重みがゼロとなる解像度では信頼度の算出そのものを行わないようにすることができ、結果として処理リソースの節約を図ることが可能となる。重みが極めて小さい(すなわち重みが所定の重みより低い)解像度についても同様である。或いは、重みが極めて小さい解像度については、最終的に各解像度の信頼度マップを合成した場合の寄与度が低く、無視し出来ると判断された場合には信頼度生成処理を行わないようにしても良い。寄与度についての一例としては、着目している解像度の重みの比率が、最も大きい重みに対して例えば10分の1以下の場合に極めて小さいと判断する等の計算を行なえば良い。
【0071】
再び図8を参照して、本実施形態に係る信頼度情報の生成処理について説明する。ステップS203〜S205では、動きベクトル検出部106、信頼度算出部107、制御部111は、実施形態1と同様に処理を実行して、全階層において動きベクトルの検出と信頼度の算出とを行う。ただし、ステップS801における信頼度判定において、重みがゼロ或いは極めて小さいと判定された解像度については、ステップS204における信頼度算出処理を行わないようにしてよい。
【0072】
ステップS802では、解像度ごとに重み付けされた信頼度を動きベクトルの出力解像度における一枚の信頼度マップに合成する。ステップS802における信頼度合成処理について図10を参照して説明する。
【0073】
図10に示す各ステップは、実施形態1におけるステップS501、S504及びS505と実質的に同一である。但し、信頼度合成部110は、S204において信頼度を算出しなかった解像度の信頼度を考慮せずに信頼度マップのリサイズと合成を行なう。信頼度合成部110は、ステップS505における信頼度マップの合成が終了すると、処理をS802に戻す。
【0074】
以上説明したように、本実施形態では、信頼度算出処理を行なう前に解像度ごとの信頼度の重み付けを決定するようにした。このようにすることで、出力解像度における動きベクトルの信頼度の生成処理に不要な解像度の信頼度の算出を抑制することができ、メモリや処理時間の削減を図ることが可能となる。
【0075】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【符号の説明】
【0076】
107…信頼度算出部、109…信頼度判定部、110…信頼度合成部
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】