(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-11-01
(45)【発行日】2024-11-12
(54)【発明の名称】画像処理装置、画像処理方法、及びプログラム
(51)【国際特許分類】
G06T 7/246 20170101AFI20241105BHJP
H04N 13/239 20180101ALI20241105BHJP
H04N 13/264 20180101ALI20241105BHJP
H04N 13/128 20180101ALI20241105BHJP
H04N 23/45 20230101ALI20241105BHJP
【FI】
G06T7/246
H04N13/239
H04N13/264
H04N13/128
H04N23/45
(21)【出願番号】P 2019239379
(22)【出願日】2019-12-27
【審査請求日】2022-12-12
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】100090273
【氏名又は名称】國分 孝悦
(72)【発明者】
【氏名】土谷 拓光
(72)【発明者】
【氏名】望月 俊宏
【審査官】高野 美帆子
(56)【参考文献】
【文献】特開2016-152027(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06T 7/246
H04N 13/239
H04N 13/264
H04N 13/128
H04N 23/45
(57)【特許請求の範囲】
【請求項1】
複数の光学系による視差を有した複数の画像を取得する取得手段と、
前記画像から特徴点を抽出する抽出手段と、
前記特徴点を基に動きベクトルを検出する検出手段と、
前記複数の画像のうちの第1の画像から前記抽出された特徴点を、前記複数の画像のうちの第2の画像から前記抽出された特徴点に対して、前記視差を加味して反映する反映手段と、
前記複数の光学系による視差を有した前記複数の画像を撮像した撮像装置の回転方向の
手振れを検出する手振れ検出手段と、
を有
し、
前記検出手段は、前記第2の画像については前記第1の画像の特徴点が前記反映された特徴点を基に、前記動きベクトルの検出を行い、
前記手振れ検出手段は、前記第1の画像の前記特徴点を基に検出された動きベクトルと、前記第2の画像の特徴点に前記第1の画像の特徴点が前記反映された特徴点を基に検出された動きベクトルとを用いて前記撮像装置の回転方向の手振れを検出することを特徴とする画像処理装置。
【請求項2】
前記反映手段は、前記第1の画像の特徴点を前記反映する、前記第2の画像の特徴点の数を限定することを特徴とする請求項
1に記載の画像処理装置。
【請求項3】
前記反映手段は、前記検出手段が前記動きベクトルを検出する処理の速度に基づいて、前記限定する特徴点の数を決定することを特徴とする請求項
2に記載の画像処理装置。
【請求項4】
前記反映手段は、前記回転方向の手振れ検出の精度に基づいて、前記限定する特徴点の数を決定することを特徴とする請求項
2に記載の画像処理装置。
【請求項5】
前記反映手段は、前記第1の画像から前記抽出された特徴点のうち、前記撮像装置の回転方向の手振れ検出に適する特徴点を、前記第2の画像の特徴点に前記反映することを特徴とする請求項
2から請求項
4のいずれか1項に記載の画像処理装置。
【請求項6】
前記画像から被写体を検出する被写体検出手段を有し、
前記手振れ検出手段は、前記被写体の特徴点を用いずに検出された動きベクトルに基づいて前記回転方向の手振れを検出することを特徴とする請求項1から請求項
5のいずれか1項に記載の画像処理装置。
【請求項7】
前記反映手段は、複数の領域に分割された前記第2の画像の各々の領域に対して優先順位を設定し、前記第1の画像から前記抽出した特徴点を、前記設定された領域ごとの優先順位に基づいて前記第2の画像の前記領域の特徴点に反映することを特徴とする請求項
1から請求項
5のいずれか1項に記載の画像処理装置。
【請求項8】
前記反映手段は、前記第1の画像と前記第2の画像との中間点からの距離の大きい前記領域ほど高い優先順位を設定することを特徴とする請求項
7に記載の画像処理装置。
【請求項9】
前記反映手段は、前記第2の画像の中心から所定範囲内の領域に対して優先的に特徴点を反映することを特徴とする請求項
7に記載の画像処理装置。
【請求項10】
前記検出手段は、時間軸上で連続する2枚の画像の一方を原画像とし、もう一方を参照画像として、前記特徴点を中心とする前記参照画像の矩形領域内と前記原画像の矩形領域内の画素値で相関値演算を行って前記動きベクトルを検出することを特徴とする請求項1から請求項
9のいずれか1項に記載の画像処理装置。
【請求項11】
画像処理装置が実行する画像処理方法であって、
複数の光学系による視差を有した複数の画像を取得する取得工程と、
前記画像から特徴点を抽出する抽出工程と、
前記特徴点を基に動きベクトルを検出する検出手段と、
前記複数の画像のうちの第1の画像から前記抽出された特徴点を、前記複数の画像のうちの第2の画像から前記抽出された特徴点に対して、前記視差を加味して反映する反映工程と、
前記複数の光学系による視差を有した前記複数の画像を撮像した撮像装置の回転方向の
手振れを検出する手振れ検出工程と、
を有
し、
前記検出工程では、前記第2の画像については前記第1の画像の特徴点が前記反映された特徴点を基に、前記動きベクトルの検出を行い、
前記手振れ検出工程では、前記第1の画像の前記特徴点を基に検出された動きベクトルと、前記第2の画像の特徴点に前記第1の画像の特徴点が前記反映された特徴点を基に検出された動きベクトルとを用いて前記撮像装置の回転方向の手振れを検出することを特徴とする画像処理方法。
【請求項12】
コンピュータを、請求項1から請求項1
0のいずれか1項に記載の画像処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、画像の動きを検出する画像処理技術に関する。
【背景技術】
【0002】
従来、臨場感のある映像体験を提供するために、立体視表示用の画像撮影が可能なステレオカメラが提供されている。ステレオカメラから取り込まれた画像データを用いて動きベクトルを検出する場合、画像データにはほぼ同一被写体が撮像されているため、画像データ全体で動きベクトルを検出するのは非効率である。特許文献1には、テンプレートマッチングの方法を工夫することで、その問題を解決可能とする技術が開示されている。テンプレートマッチングでは、画像中のある2枚のフレーム画像の一方を原画像、もう一方を参照画像とする。そして、原画像上に配置した矩形領域をテンプレートブロックとし、参照画像上に配置した矩形領域をサーチ領域とし、サーチ領域の各位置においてテンプレートブロック内の画素値の分布との相関を求める。ここで、ステレオカメラが左眼画像及び左眼画像を取り込んだ場合、左眼画像におけるサーチ領域と右眼画像におけるサーチ領域とで、重複する領域が存在する。特許文献1の技術では、その重複したサーチ領域に対しては、左眼画像または右眼画像のどちらか一方でのみテンプレートマッチングを行うことによって、演算コストを低減させている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
前述したように特許文献1の手法では、演算コストを低減させるために、左眼画像と右眼画像とで重複したサーチ領域に対して、左眼画像または右眼画像のどちらか一方でのみテンプレートマッチングを行う。しかしながら、手振れ等に起因したカメラの動きによっては、テンプレートブロック内の画像が左眼画像と右眼画像とで異なる方向に移動することがある。この場合、正しくテンプレートマッチングが実行できなくなり、その結果、動きベクトルを正しく検出できなくなって、動きベクトルの検出性能が低下する。
【0005】
そこで、本発明は、演算コストの低減に加えて、動きベクトルの検出性能の向上をも可能にすることを目的とする。
【課題を解決するための手段】
【0006】
本発明の画像処理装置は、複数の光学系による視差を有した複数の画像を取得する取得手段と、前記画像から特徴点を抽出する抽出手段と、前記特徴点を基に動きベクトルを検出する検出手段と、前記複数の画像のうちの第1の画像から前記抽出された特徴点を、前記複数の画像のうちの第2の画像から前記抽出された特徴点に対して、前記視差を加味して反映する反映手段と、前記複数の光学系による視差を有した前記複数の画像を撮像した撮像装置の回転方向の手振れを検出する手振れ検出手段と、を有し、前記検出手段、前記第2の画像については前記第1の画像の特徴点が前記反映された特徴点を基に、前記動きベクトルの検出を行い、前記手振れ検出手段は、前記第1の画像の前記特徴点を基に検出された動きベクトルと、前記第2の画像の特徴点に前記第1の画像の特徴点が前記反映された特徴点を基に検出された動きベクトルとを用いて前記撮像装置の回転方向の手振れを検出することを特徴とする。
【発明の効果】
【0007】
本発明によれば、演算コストの低減に加えて、動きベクトルの検出性能の向上をも図ることが可能になる。
【図面の簡単な説明】
【0008】
【
図1】実施形態のデジタルカメラの構成例を示す図である。
【
図2】動きベクトル検出部の構成例を示す図である。
【
図3】グリッド配置と特徴点、テンプレートマッチング領域の説明図である。
【
図4】動きベクトル検出部の処理を示すフローチャートである。
【
図6】精度判定部における画素値と判定との関係を示す図である。
【
図7】追跡先特徴点決定部の処理を示すフローチャートである。
【
図8】回転方向の手振れが生じた場合の動きベクトル分布例を示す図である。
【
図9】2つのイメージサークルの例を示す図である。
【
図10】2つのイメージサークルの画像の動きベクトル分布例を示す図である。
【
図13】特徴点数設定処理のフローチャートである。
【
図14】特徴点の点数が適切な場合の特徴点分布例を示す図である。
【
図15】11点の時の動きベクトル検出に関するタイミングチャートである。
【
図16】特徴点の点数が不適切な場合の特徴点分布例を示す図である。
【
図17】16点の時の動きベクトル検出に関するタイミングチャートである。
【発明を実施するための形態】
【0009】
以下、添付図面を参照して本発明に係る実施形態について説明する。
<第1の実施形態>
図1は、本発明の第1の実施形態に係る画像処理装置の一適用例としてのデジタルカメラの概略的な機能ブロック構成を示した図である。本実施形態のデジタルカメラは、左右の眼に対応した例えば広画角な2つの光学系によって撮像された、左右の眼に対応した視差を有する2つの視差画像のデータを取得可能な撮像装置(以下、ステレオカメラとする)であるとする。なお本実施形態では、2つの光学系が並列に並んでいる構成を例に挙げるが、これには限定されず、3つ以上の複数の光学系によって構成されていてもよい。
【0010】
図1において、第1の結像光学部101及び第2の結像光学部131は、それぞれレンズおよび絞りなどを備えており、それら2つで1組となるように光学系が並列に構成されている。撮影の際、第1の結像光学部101及び第2の結像光学部131は、フォーカス調節および露出調節を行い、撮像素子102に対してそれら2つの光学系のイメージサークルを結像する。撮像素子102に対する2つの光学系のイメージサークルの具体例については後に
図9を用いて説明する。
【0011】
撮像素子102は、光学像を電気信号(アナログ画像信号)に変換する光電変換機能を有し、CCDやCMOSセンサ等で構成される。A/D変換部103は、撮像素子102からのアナログ画像信号をデジタル画像データ(以下、画像データを、適宜、画像とのみ表記する)に変換する。
【0012】
揮発性メモリであるDRAM107は、データを記憶するメモリであり、所定枚数の静止画像、所定時間の動画像、音声等のデータ、およびCPU112の動作用の定数、プログラム等を格納するのに十分な記憶容量を備えている。DRAMはダイナミックRAM(Dynamic Random Access Memory)の略称である。DRAMは、書き込みを行って時間が経つと内容が失われるため、一定時間ごとにリフレッシュを行なって記憶を維持する必要がある。メモリ制御部106は、CPU112或いはデータ転送部105からの指示に応じて、DRAM107へのデータ書き込み及びデータ読み出しを行う。
【0013】
不揮発性メモリ制御部108は、CPU112からの指示に応じて、不揮発性メモリであるROM109にデータの書き込み及び読み出しを行う。ROM109は、電気的に消去・記録可能なメモリであり、EEPROM等が用いられる。ROM109には、CPU112の動作用の定数、プログラム等が記憶される。
【0014】
バス114はシステムバスであり、バス115は画像データバスである。
データ転送部105は、データ転送を行う複数のDMAC(Direct Memory Access Controller)で構成されている。なお、DMAはダイレクトメモリアクセス(Direct Memory Access)の略称である。DMAとはコンピュータシステム内でのデータ転送方式の一つであり、CPUを介さずに周辺機器やメインメモリ(RAM)などの間で直接データ転送を行う方式である。またDMACはDMAコントローラの略称である。DMAコントローラとは、メモリとメモリ、メモリとハードウェア間で直接データ転送を制御するコントローラである。
【0015】
CPU112は、ステレオカメラ全体の制御を司るマイクロコンピュータ等で構成され、各機能ブロックに対して動作指示を行い、各種の制御処理を実行する。CPU112は、バス114を介して画像処理部104、データ転送部105、メモリ制御部106、不揮発性メモリ制御部108、表示制御部110、操作部113、撮像素子102等を制御する。なお、CPU112におけるマイクロコンピュータの実行は、ROM109に記録されたプログラムを実行することにより、本実施形態に係る各処理を実現する。
【0016】
表示部111は、液晶モニタ等から成り、表示制御部110により制御され、各種画像データ等を表示部111に表示する。
操作部113は、ユーザにより操作されるスイッチやボタン等を含み、電源のON/OFF、シャッタのON/OFF等の操作に使用される。
【0017】
画像処理部104は、ホワイトバランス調整、色補間、縮小/拡大、フィルタリング、符号化、復号などの各種画像処理を行う部分及びバッファメモリ等から構成されており、さらに動きベクトル検出部121と被写体検出部122等を具備する。また、画像処理部104は、2つの光学系のイメージサークルで撮像された画像データに対して、光学中心ずれを考慮して各種画像処理を実施し、立体視表示用の画像データを生成することができる。
【0018】
被写体検出部122は、既知の手法により、撮像された画像から被写体の顔部分や物体部分など主となる被写体を検出する。被写体の座標は例えば画像の左上の開始座標と右下の終了座標とで有効範囲が表現され、当該被写体の座標情報はデータ転送部105及びメモリ制御部106を介してDRAM107に格納される。
【0019】
動きベクトル検出部121は、画像データを基に動きベクトルを検出する。
ここで、動きベクトルを検出する技術としては、動きベクトルの検出精度を向上させるために、特徴点を抽出し、抽出した特徴点にテンプレートブロックを配置する技術が知られている。ただし、画像全体で特徴点抽出を行うと、特徴点の分布は不均一になることが多い。そして、不均一な特徴点に基づいて得られた動きベクトルを、例えば手振れ補正のために使用すると、特徴点の集中した領域が主となる手振れ補正となってしまう。そこで、特徴点を均一に分布させるために、画像をグリッド状に分割して、特徴の大きさを表す特徴値を画素ごとに計算し、各グリッド内で特徴値が最も大きい画素を特徴点として抽出する技術がある。本実施形態の動きベクトル検出部121は、このようにして抽出した特徴点を中心とし、予め設定されたサイズの矩形領域状のサーチ領域及びテンプレート領域を用いたテンプレートマッチング処理を行う。
【0020】
図2は、動きベクトル検出部121の構成例を示したブロック図である。また、
図3は、動きベクトル検出部121が読み出すグリッド配置と特徴点、テンプレートマッチング領域の関係を示す図である。さらに
図4は、
図2に示した動きベクトル検出部121の各ブロックによる処理の流れを示したフローチャートである。
【0021】
動きベクトル検出部121は、複数のフレーム画像間で特徴点を追跡し、動きベクトルを検出する。動きベクトル検出部121は、時間軸上で連続する2枚のフレームの画像の一方を原画像(現フレームの画像)とし、もう一方を参照画像(前フレームの画像)とし、特徴点を中心とする参照画像の矩形領域内と原画像の矩形領域内の画素値で相関値演算処理を行う。そして、動きベクトル検出部121は、相関値演算処理によって検出した動きベクトルを基に、被写体の追跡を行う。
【0022】
以下、
図2以降の各図を参照しながら動きベクトル検出部121の構成及び動作について説明する。
まず
図3に示した、グリッド配置と特徴点、テンプレートマッチング領域の関係について説明する。動きベクトル検出部121は、
図3に示すように、フレーム画像を複数のグリッドに分割する。各グリッドは、予め設定されたサイズの特徴点配置グリッド302及び周辺グリッド301(
図3中のドット模様が付されたグリッド)として、水平,垂直方向にそれぞれ設定された個数分配置される。動きベクトル検出部121は、特徴点配置グリッド302毎に、特徴点303を一つ抽出する。
図3の例は、開始座標が(Xs,Ys)で終了座標が(Xe,Ye)の特徴点配置グリッド302において、座標(x,y)で示された特徴点303が抽出された例を示している。周辺グリッド301は、各特徴点配置グリッド302からなる特徴点配置グリッド群の周囲に配置される。周辺グリッド301は、特徴点抽出は実施されないが、テンプレートマッチングで使用される領域である。動きベクトル検出部121は、現フレームである原画像から抽出した特徴点303の座標(x,y)を中心とし、前フレームの参照画像で予め決めたサイズの矩形領域のサーチ領域305及びテンプレート領域304を設定してテンプレートマッチング処理を行う。
【0023】
次に
図4のフローチャートを参照して、動きベクトル検出部121の各ブロックにおける処理の概要を説明する。
ステップS401において、データ転送部105が具備する第1のRDDMAC221は、バス115を介して、DRAM107から動きベクトル検出対象となる現フレームの入力画像データ241を読み出す。なお、RDDMACは、メモリからハードウェアに直接データ読み出す制御を行うコントローラである。このとき読み出すデータ量は、
図3に示されるように設定された特徴点配置グリッド302及び周辺グリッド301のサイズに応じたデータ量となされる。なお、入力画像データ241は、画像処理部104において各種画像処理が実施された後のデータである。第1のRDDMAC221によってグリッド単位で読み出された画像データ241は、マッチング用画像生成部201及び特徴点抽出部202に出力される。また、第1のRDDMAC221は、読み出したグリッドの座標位置を示すグリッド座標情報252を、後述する追跡先特徴点決定部205に出力する。ステップS401の処理後、動きベクトル検出部121は、ステップS402およびその次のステップS403の処理と、ステップS404の処理とを並行して実施する。
【0024】
ステップS402に進むと、マッチング用画像生成部201は、動きベクトル検出時のテンプレートマッチングに使用するマッチング用画像を生成し、WRDMAC231に出力する。なお、WRDMACは、ハードウェアからメモリに直接データ書き出す制御を行うコントローラである。また、マッチング用画像生成部201は、バンドパスフィルタ回路を有し、テンプレートマッチング処理に不要な画像信号の高周波成分と低周波成分をカットする。
【0025】
次にステップS403に進むと、データ転送部105が具備するWRDMAC231は、バス115を介してDRAM107に入力されたマッチング用画像データ242を書き出す処理を行う。また、DRAM107には、現フレームに対して時間軸上で前である前フレームで生成されたマッチング用画像データ243が格納されている。ステップS403の後、動きベクトル検出部121の処理はステップS405に進む。
【0026】
またステップS404に進むと、特徴点抽出部202または特徴点反映部207は、現フレームの新規特徴点を算出する。
ここで、特徴点抽出部202における特徴点抽出処理について説明する。
図5は、特徴点抽出部202の構成例を示したブロック図である。特徴点抽出部202は、特徴フィルタ部501、特徴評価部502、および特徴点決定部503を有して構成されている。
【0027】
特徴フィルタ部501は、バンドパスフィルタ、水平微分フィルタ、垂直微分フィルタ、平滑化フィルタなど、複数のフィルタを有して構成される。特徴フィルタ部501は、まずバンドパスフィルタによって画像データから不要な高周波成分と低周波成分をカットする。次に特徴フィルタ部501は、バンドパスフィルタ処理後のデータに対し、さらに水平微分フィルタによる水平方向の微分フィルタ処理と、垂直微分フィルタによる垂直方向の微分フィルタ処理とを施す。そして、特徴フィルタ部501は、水平方向の微分フィルタ処理を施した画像データと、垂直方向の微分フィルタ処理を施した画像データとの、各々に対して平滑化フィルタ処理を施した後の画像データを、特徴評価部502に出力する。
【0028】
特徴評価部502は、特徴フィルタ部501によりフィルタ処理された後のグリッド単位の画像データから、特徴点を算出する。例えば、特徴評価部502は、所定の特徴評価式を用いた演算を行って、画素ごとに2つのエッジの交点や曲率が極大である曲線状の点など画素の周辺の微分値が多方向に大きい点を、特徴値として算出する。
【0029】
以下、ここでは、いわゆるShi and Tomasiの手法を例に挙げて、特徴評価部502における特徴点の算出例について説明する。
特徴評価部502は、まず、前述した水平微分フィルタによってフィルタ処理が施されたデータと、垂直微分フィルタによってフィルタ処理が施されたデータとを用いて、下記の式(1)に示す演算式により、自己相関行列Hを作成する。なお、式中のIxは水平微分フィルタを施した結果を表し、Iyは垂直微分フィルタを施した結果を表しており、式(1)は、ガウシアンフィルタGを畳み込んで自己相関行列Hを作成する演算式である。
【0030】
【0031】
そして、特徴評価部502は、下記の式(2)に示すShi and Tomasiの特徴評価式により特徴値を算出する。なお、式(2)は、式(1)の自己相関行列Hの固有値λ1、λ2のうち、小さい方の固有値を特徴値とすることを示している。
【0032】
Shi and Tomasi=min(λ1,λ2) 式(2)
【0033】
このようにして特徴評価部502にて画素ごとに算出された特徴値は、特徴点決定部503に送られる。
特徴点決定部503は、グリッド毎に、特徴評価部502にてグリッド内の各画素について算出された特徴値の中で最も大きい値を持つ画素を、そのグリッド内の特徴点として決定する。本実施形態の場合、特徴点の情報は、グリッドの左上端を座標(0,0)とした相対座標(PX,PY)が用いられる。なお、その特徴点座標は、フレーム画像における絶対座標により表現されてもよい。そして、特徴点決定部503により決定された特徴点の情報(以下、特徴点座標情報とする)は、特徴点抽出部202が具備している内部メモリに格納される。この内部メモリは、前フレームから取得された各特徴点の情報と現フレームから取得された各特徴点座標情報とを格納できるだけの容量を有している。
【0034】
特徴点抽出部202は、マッチング処理部203にて対応するグリッドのテンプレートマッチング処理が開始される際に、前フレームで算出された特徴点座標情報251を、内部メモリから読み出して追跡先特徴点決定部205に出力する。
追跡先特徴点決定部205は、特徴点抽出部202から送られてきた特徴点座標情報251を、追跡先特徴点座標情報257として、データ転送部105が具備している第2のRDDMAC222に出力する。
【0035】
次に特徴点反映部207における特徴点反映処理について説明する。
ここでは、第1の結像光学部101から取り込まれた画像を第1の画像と呼び、第2の結像光学部131から取り込まれた画像を第2の画像と呼ぶ。
特徴点反映部207は、特徴点抽出部202が第1の画像から抽出した特徴点を、第2の画像の特徴点に対して視差を加味するようにして反映する。視差をu、被写体までの距離をZ、第1の結像光学部101及び第2の結像光学部131の互いの距離である基線距離をd、それら光学部の焦点距離をfとすると、視差uは下記の式(3)で求められる。
【0036】
u=(d×f)/Z 式(3)
【0037】
さらに特徴点反映部207は、第1の画像の任意の特徴点座標(x,y)に対して、視差uを加算することで、視差が加味された第2の画像の特徴点座標(x+u,y)を求める。反映元である現フレーム特徴点はSRAM206に格納されており、前述のような特徴点反映処理がなされた新規特徴点が、特徴点反映部207の具備する内部メモリに格納される。
【0038】
そして特徴点反映部207は、マッチング処理部203にて対応するグリッドのテンプレートマッチング処理が開始される際に、特徴点反映処理がなされた特徴点座標情報259を、内部メモリから読み出して追跡先特徴点決定部205に出力する。
追跡先特徴点決定部205は、特徴点反映部207から送られてきた特徴点座標情報259を、第2の画像における追跡先特徴点座標情報257として、データ転送部105が具備している第2のRDDMAC222に出力する。
なお、ステレオカメラから取り込まれた画像に対して、前述の特徴点反映処理による新規特徴点を算出する具体的な説明は後述する。
【0039】
図4のフローチャートに説明を戻す。
前述したようにそれぞれ並行して行われるステップS404とステップS403の処理後、動きベクトル検出部121は、ステップS405に処理を進める。
ステップS405に進むと、第2のRDDMAC222は、前述のようにして前フレームにおいて算出された追跡先特徴点座標情報257を中心とし、予め設定されたサイズの矩形領域のデータを読み出す。すなわち現フレームで生成されたマッチング用画像データ242からは、
図3のサーチ領域305のデータが、一方、前フレームで生成されたマッチング用画像データ243からは、テンプレート領域304のデータが読み出される。そして、それら読み出されたサーチ領域画像データ253とテンプレート領域画像データ254は、マッチング処理部203へ送られる。ただし、最初のテンプレートマッチング処理では、前フレームから追跡先特徴点座標を算出することができないため、全て現フレームで算出された新規特徴点座標を用いた処理が実施される。ステップS405の後、動きベクトル検出部121の処理は、ステップS406に進む。
【0040】
ステップS406に進むと、マッチング処理部203は、入力されたサーチ領域画像データ253とテンプレート領域画像データ254とを用いて、相関値を算出し、その相関値を基にベクトル値を算出する。ステップS406の後、動きベクトル検出部121の処理は、ステップS407に進む。
【0041】
本実施形態では、相関値の算出方法として、差分絶対値和(Sum of Absolute Difference、以下SADと略す。)を使用する。式(4)はSADの算出式である。
【0042】
【0043】
式(4)において、f(i,j)はテンプレート領域画像データ254における座標(i,j)の画素値を表しており、g(i,j)はサーチ領域画像データ253において相関値算出の対象領域(以下、相関値算出領域とする。)内の各画素値を表している。相関値算出領域は、テンプレート領域画像データ254における領域と同じ大きさである。そして、マッチング処理部203は、それら領域の各画素値f(i,j)及びg(i,j)について差の絶対値を計算し、それらの総和を求めることで相関値S_SADを算出する。ここで、相関値S_SADの値が小さいほど両領域間の輝度値の差分が小さい、つまりテンプレート領域画像データ254と相関値算出領域内のテクスチャとが類似していることになる。なお、本実施形態では、相関値の一例としてSADを使用しているが、これに限るものではなく、例えば、差分二乗和(SSD)や正規化相互相関(NCC)等の他の相関値が用いられてもよい。
【0044】
そして、マッチング処理部203は、相関値の最小値の位置を、グリッドの動きベクトル値として求める。マッチング処理部203は、前述のようにして算出したベクトル値及び相関値情報255を、精度判定部204に出力する。
【0045】
次にステップS407に進むと、精度判定部204は、ステップS406の処理で算出されたベクトル値及び相関値情報255のうち、相関値を用いて、当該相関値の最大値、最小値、平均値、極小値を求める。そして、精度判定部204は、それら相関値の最大値、最小値、平均値、極小値を用いて、以下に説明するような低コントラスト判定、画素値の最大値突出判定、繰り返しパターン判定の処理を行う。ステップS407の後、動きベクトル検出部121の処理は、ステップS408に進む。
【0046】
図6(a)~
図6(d)は、相関値の最大値、最小値、平均値、極小値と、それらを用いた判定例との関係説明に用いるグラフである。ただし、本実施形態の場合、相関値が小さいほど類似度が高いことになるため、
図6(a)~
図6(d)において、画素値の最大値は相関値では最小値、画素値の最小値は相関値では最大値、画素値の極大値は相関値では極小値を表す。
【0047】
図6(a)は、それぞれの判定結果が良好な結果となる例を示している。
図6(b)は、低コントラスト判定において低コントラストと判定される例を示している。低コントラスト判定とは、相関値算出領域内が低コントラストであるか否かを判定する処理である。本実施形態における低コントラスト判定では、相関値算出領域内の相関値の最大値と最小値との差分が、予め設定されている所定の閾値よりも小さい場合に、相関値算出領域内は低コントラストであると判定される。
図6(b)の場合、
図6(a)と比べて、画素値の最大値と最小値との差が少なく、相関値算出領域内の相関値の最大値と最小値の差分も所定の閾値より小さいとする。したがって、
図6(b)の場合、精度判定部204は、相関値算出領域内の相関値の最大値と最小値の差分が所定の閾値よりも小さいため、相関値算出領域内は低コントラストであると判定する。
【0048】
図6(c)は、画素値の最大値突出判定において低ピークと判定される例を示している。画素値の最大値突出判定とは、相関値算出領域内の相関値の最小値がどれだけ際立っているかを判定する処理である。本実施形態における画素値の最大値突出判定では、画素値の最大値と平均値との差分と、画素値の最大値と最小値との差分との除算結果の値が、予め設定されている所定の閾値よりも小さい場合に、相関値算出領域内は低ピークであると判定される。一方、除算結果の値が所定の閾値よりも大きい場合、相関値算出領域内は高ピークであると判定される。
図6(c)の場合、
図6(a)と比べて、画素値の最大値と平均値との差分と、画素値の最大値と最小値との差分との除算結果の値が小さく、閾値よりも小さいとする。したがって、
図6(c)の場合、精度判定部204は、除算結果の値が所定の閾値より小さいため、相関値算出領域内は低ピークであると判定する。
【0049】
図6(d)は、繰り返しパターン判定で繰り返しパターンと判定される例を示している。繰り返しパターン判定とは、画素値が繰り返し変動しているか否かを判定する処理である。本実施形態における繰り返しパターン判定では、相関値算出領域内の画素値の最大値と極大値との差分が、予め設定されている所定の閾値よりも小さい場合に、繰り返しパターンであると判定される。
図6(d)の場合、
図6(a)と比べて、画素値の最大値と極大値との差分が小さく、所定の閾値よりも小さいとする。したがって、
図6(d)の場合、精度判定部204は、相関値算出領域内の画素値の最大値と極大値との差分が所定の閾値より小さいため、繰り返しパターンであると判定する。
【0050】
図4のフローチャートに説明を戻す。ステップS407の後、動きベクトル検出部121は、ステップS408の処理に進む。ステップS408に進むと、精度判定部204は、前述した低コントラスト、低ピーク、繰り返しパターンの各判定情報及びベクトル情報256を、SRAM206に書き込む。これにより、SRAM206の格納領域244にはそれら各情報が格納される。なお、SRAMはスタティックRAM(Static Random Access Memory)の略称である。SRAMは半導体記憶装置(半導体メモリ)のうち、電源を落とすと記録が失われる揮発性メモリの一つで、素子にデータの書き込みを行うとリフレッシュ動作を行わなくても通電中は内容が失われないという特徴がある。ステップS408の後、動きベクトル検出部121は、ステップS409の処理に進む。
【0051】
ステップS409に進むと、追跡先特徴点決定部205は、次フレームのテンプレートマッチング処理に用いるための追跡先特徴点の算出を行う。
ここで、
図7は、追跡先特徴点決定部205における処理の流れを示すフローチャートである。以下、
図7のフローチャートを参照しながら、追跡先特徴点決定部205における追跡先特徴点決定処理の概要を説明する。
【0052】
先ず、ステップS701の処理として、追跡先特徴点決定部205は、SRAM206からベクトル値及び前述の判定情報258を取得する。追跡先特徴点決定部205は、取得したベクトル値を用いて現フレームの追跡先特徴点を算出し、更にその追跡先特徴点座標を中心としてテンプレートマッチング処理で算出したベクトル値を加算して、次フレームの追跡先特徴点の座標を算出する。ステップS701の後、追跡先特徴点決定部205はステップS702に進む。
【0053】
ステップS702に進むと、追跡先特徴点決定部205は、SRAM206から取得した前述の判定情報を基に、ステップS701で算出された追跡先特徴点が、次フレームのテンプレートマッチング処理に使用可能な有効な追跡先特徴点であるか否かを判定する。追跡先特徴点決定部205は、低コントラスト判定で低コントラストと判定、又は、画素値の最大値突出判定で低ピークと判定、又は、繰り返しパターン判定で繰り返しパターンと判定されている場合、追跡先特徴点は有効でないと判定(NG判定)する。一方、追跡先特徴点決定部205は、低コントラスト、低ピーク、繰り返しパターンの何れでもない場合には、追跡先特徴点は有効であると判定(OK判定)する。そして、追跡先特徴点決定部205は、ステップS702において、NG判定とした場合(NO)にはステップS704に処理を進め、一方、OK判定とした場合(YES)にはステップS703に処理を進める。
【0054】
ステップS703に進むと、追跡先特徴点決定部205は、ステップS701で算出された追跡先特徴点座標が、グリッド内であるか否か判定する。具体的には、追跡先特徴点決定部205は、追跡先特徴点座標が特徴点配置グリッド302の内側に収まっている場合にはOKと判定する。前述の
図3の例の場合、追跡先特徴点決定部205は、特徴点配置グリッド302の開始座標(Xs,Ys)及び終了座標(Xe,Ye)と、特徴点303の座標(x,y)とから、Xs≦x≦Xe、かつYs≦y≦Yeの時にOKと判定する。一方、追跡先特徴点決定部205は、追跡先特徴点座標が特徴点配置グリッド302の内側に収まっていない場合にはNGと判定する。つまり、追跡先特徴点決定部205は、x<Xs、Xe<x、y<Ys、Ye<yのいずれかを満たす時にはNGと判定する。そして、追跡先特徴点決定部205は、OKと判定した場合にはステップS703に進み、NGと判定した場合にはステップS704に進む。
【0055】
ステップS704に進むと、追跡先特徴点決定部205は、ステップS702又はステップS703でNG判定された座標位置に該当する追跡先特徴点座標を削除する。そして、追跡先特徴点決定部205は、削除された追跡先特徴点座標を、ステップS404で算出される新規特徴点座標により置き換える処理を行う。ステップS704の後、追跡先特徴点決定部205は、ステップS705に処理を進める。
【0056】
ステップS705に進むと、追跡先特徴点決定部205は、特徴点数分の全ての追跡先特徴点座標が算出されたか否か判定する。ここで、特徴点数は、特徴点数設定部208により設定される。追跡先特徴点決定部205は、ステップS705において、全ての追跡先特徴点座標が算出されていないと判定(NO)した場合にはステップS701に処理を戻して前述の処理を行う。ステップS701からステップS705までの処理は、ステップS705において全ての追跡先特徴点座標が算出されたと判定(YES)されるまで反復される。一方、ステップS705において、追跡先特徴点決定部205は、全ての追跡先特徴点座標が算出されたと判定(YES)した場合には
図7のフローチャートの処理を終了する。以上で、
図4のフローチャートの各ステップの処理を基にした動きベクトル検出部121の各ブロックの処理が完了する。
【0057】
次に、
図4に示したフローチャートのステップS404において、特徴点反映部207で行われる特徴点反映処理による新規特徴点の算出処理の詳細を、
図8から
図11を参照しながら説明する。
図8は、手振れなどにより生ずるカメラの動きのうち、例えば第1の結像光学部101と第2の結像光学部131との間の中間点を軸とした軸回り方向(ロール方向)にカメラが回転する手振れが生じた場合の画像における動きベクトルの分布例を示す図である。なお、カメラの手振れには、一般的にはロール方向の他にもヨー方向やピッチ方向にカメラが動く成分も含まれるが
図8ではそれらヨー方向やピッチ方向による動きベクトルは省略している。以下では、2つの結像光学部間の中間点での軸回り回転方向の手振れのみを例に挙げて説明する。
【0058】
図8に示すように、回転方向の手振れが生じている場合、画像データ801の各動きベクトル802は点対称で円を描くような分布になる。
図8の画像データ801の例の場合、動きベクトル802は、左側では上方向を指し、右側では下方向を指している。このような回転方向の動きベクトルの分布は、ステレオカメラから取り込まれた画像に対しても同様になると考えることができる。つまり、ステレオカメラから取り込まれた画像の場合、動きベクトルは2つの結像光学部の中間点に対応して点対称で円を描くような分布になると考えられる。
【0059】
図9は、本実施形態のステレオカメラのように、第1の結像光学部101と第2の結像光学部131との2つの光学系を有し、それらによって撮像素子102の撮像面上に形成される2つのイメージサークル901,902の例を示した図である。撮像素子102は、それら2つのイメージサークル901,902の画像を撮像することにより、同じ被写体905が写った視差を有する2つの視差画像のデータを取得する。以下の説明では、左側のイメージサークル902に対応した画像を左眼画像と呼び、右側のイメージサークル901に対応した画像を右眼画像と呼ぶ。
【0060】
図10は、2つの結像光学部間の中間点での軸回り回転方向の手振れが生じている場合に、ステレオカメラから取り込まれた左眼画像1002及び右眼画像1003からなる画像データ1001に対する特徴点及び動きベクトルの分布の例を示した図である。なお
図10は、
図3と同様に特徴点配置グリッドや周辺グリッド等が表されている。
【0061】
本実施形態の動きベクトル検出部121は、左眼画像1002の全ての特徴点配置グリッドにおいて特徴点を抽出する。一方、動きベクトル検出部121は、右眼画像1003については一部の特徴点配置グリッドから特徴点を抽出し、左眼画像1002から抽出した一部の特徴点を右眼画像1003の特徴点に反映する。そして動きベクトル検出部121は、それら左眼画像1002及び右眼画像1003の各々の特徴点に対して動きベクトルを検出する。すなわち動きベクトル検出部121は、左眼画像1002については被写体の移動要因及び手振れ要因の動きベクトルを検出するために用い、右眼画像1003については回転方向の手振れ検出に適した特徴点による動きベクトルのみを検出するために用いる。言い換えると、本実施形態において、動きベクトル検出部121は、基本的には左眼画像1002を用いてベクトル検出を行い、右眼画像1003については回転方向の手振れ検出を補助するために用いる。なお、右眼画像1003から特徴点を抽出する特徴点配置グリッドをいずれのグリッドにするか、また、左眼画像1002の特徴点のうち右眼画像1003の特徴点に対して反映する特徴点をいずれの特徴点にするのか、についての詳細は後述する。
【0062】
ここで例えば仮に左眼画像1002のみを用いて、動きベクトル検出を実施したとすると、回転方向の手振れは検出することができない。なぜなら、
図10の場合、左眼画像1002における動きベクトルはすべて上方向を指しており、回転方向の手振れであるのか、上方向への並進の手振れであるのか判断できないためである。このとき、もしも右眼画像における動きベクトルが、例えば下方向を指すならば回転方向の手振れであり、一方、上方向を指すならば上方向への並進の手振れであると判断することができる。したがって、右眼画像1003において動きベクトルが少なくとも1点でも存在していれば、回転方向の手振れか、あるいは並進の手振れであるかの判断が可能になる。
【0063】
また例えば、抽出する特徴点数を増やすようにすれば、回転方向の手振れ検出精度を向上させることができるが、その場合、動きベクトル検出の処理量が増え、演算コストが増加する。このため、本実施形態では、右眼画像において扱う特徴点の数を例えば2点のように限定(数を制限)している。このように、本実施形態では、左眼画像1002と比較して、右眼画像1003において扱う特徴点数を少なくすることにより、動きベクトル検出の処理量を減らし、演算コストを低減させることを可能にしている。
【0064】
一方、右眼画像1003の特徴点が被写体由来の特徴点である場合、被写体要因の動きベクトルが手振れ要因の動きベクトルと比較して大きいとき、手振れ要因の動きベクトルが確認できなくなり、回転方向の手振れ検出が正しく成されなくなる。したがって、本実施形態の動きベクトル検出部121は、左眼画像1002において被写体が存在していない特徴点配置グリッドから抽出した特徴点を、右眼画像1003に反映する。つまり、本実施形態では、左眼画像1002から抽出される特徴点のうち、被写体要因の特徴点を、右眼画像1003の特徴点に反映しないようにする。
【0065】
図11は、ステレオカメラから取り込まれた左眼画像1102及び右眼画像1103よりなる画像データ1101の各特徴点の分布及び被写体1105の例を示した図である。なお、
図11も
図3と同様に特徴点配置グリッドや周辺グリッド等が表されている。
図11は、被写体1105が存在している左眼画像1102及び右眼画像1103からなる画像データ1101に対して、左眼画像1102の特徴点を右眼画像1103の画像データに反映する処理例が示されている。
【0066】
図12は、本実施形態の動きベクトル検出部121で行われる特徴点反映処理の流れを示すフローチャートである。以下、
図12で示すフローチャートを参照しながら、
図11に示したような特徴点反映処理について説明する。
先ずステップS1201において、動きベクトル検出部121は、新しく特徴点を算出する領域が左眼画像であるのか右眼画像であるのかで処理を分ける。動きベクトル検出部121は、新しく特徴点を算出する領域が左眼画像である場合には左眼画像から特徴点を抽出する処理に進み、一方、新しく特徴点を算出する領域が右眼画像である場合には左眼画像から右目画像に特徴点を反映する処理に進む。
【0067】
新しく特徴点を算出する領域が左眼画像であり、ステップS1202に進むと、特徴点抽出部202は、当該左眼画像から特徴点を抽出する。具体的には特徴点抽出部202は、前述のステップS704のように、削除された追跡先特徴点が一番初めに新規特徴点として算出された位置の特徴点配置グリッドについて、該当する位置で算出された現フレームの新規特徴点座標で置き換える処理を行う。
【0068】
一方、新しく特徴点を算出する領域が右眼画像であり、ステップS1203に進むと、特徴点抽出部202は、右眼画像の特徴点配置グリッドに対し、特徴点を反映する優先順位を表す番号Gnを割り振る。ここで本実施形態の場合、右眼画像においては、すべての特徴点配置グリッドに特徴点が配置するのではなく、一部に限定される。また本実施形態の場合、右眼画像における特徴点の数は、動きベクトルを算出する処理速度及び回転方向の手振れ検出の精度に基づいて決定される。
【0069】
ここで、回転方向の手振れを十分な精度で検出可能な特徴点の最低点数をNminとし、リアルタイム性を保持できる十分な処理速度で動きベクトルを算出できる特徴点の最高点数をNmaxとすると、特徴点数NはNmin≦N≦Nmaxを満たす必要がある。また演算コストを低減させる場合は、N=Nminと設定すればよい。なお
図11の例では右眼画像における特徴点数を2点として説明している。このため、特徴点抽出部202は、ステップS1203において、右眼画像の特徴点配置グリッドに対し、後述する特徴点反映部207で特徴点を反映する優先順位を表す番号Gn=1-Gmaxを割り振る。なお、番号Gn=1は最も優先順位が高く、Gn=Gmaxは最も優先順位が低いことを示す。
図11の例の場合、最も優先順位が低い特徴点配置グリッドはGmax=9である。つまり左眼画像と右眼画像との中間点からの距離が大きいほど、回転方向の手振れ要因の動きベクトル値は大きくなると考えられる。このため、本実施形態では、左眼画像と右眼画像との中間点からの距離が大きいグリッドほど高い優先順位を設定する。すなわち、
図11の例の場合、回転方向の手振れ要因の動きベクトル値は、右眼画像では図の右側の特徴点配置グリッドにおいて大きい値になると考えられる。このため本実施形態では、右眼画像の右側の特徴点配置グリッド(
図11の例ではGn=1)の優先順番が高くなるように設定する。本実施形態の場合、特徴点抽出部202によって、始めに優先順位の番号Gnが1に初期化されることで、最も優先順位の高い特徴点配置グリッドから順番に処理が行われる。
【0070】
次にステップS1204において、特徴点抽出部202は、着目するグリッド内に既に特徴点が存在しているか否かを判定する。すなわち本実施形態の場合、1つの特徴点配置グリッドに対して配置される特徴点は最大1つであるため、特徴点抽出部202は、右眼画像において優先順位の番号Gnに対応する特徴点配置グリッドに既に特徴点が存在するか否かで処理を分ける。特徴点抽出部202は、着目グリッドに既に特徴点が存在すると判定した場合にはステップS1211に進んで、番号Gnをインクリメント(G=Gn+1)した後、ステップS1204に処理を戻す。例えば
図11の画像データ1101の場合、右眼画像1103のGn=3に対応した特徴点配置グリッドには既に特徴点1104が存在しているため、Gn=3以外のグリッドで特徴点の算出処理が行われることになる。一方、特徴点抽出部202は、着目グリッドに特徴点が存在していないと判定した場合にはステップS1205に処理を進める。
【0071】
ステップS1205に進むと、特徴点抽出部202は、着目するグリッド内に被写体が存在するか否かを判定する。すなわち特徴点抽出部202は、右眼画像の特徴点の反映元である左眼画像おける番号Gnに対応する特徴点配置グリッド内に、
図1の被写体検出部122にて検出された被写体が存在しているか否かで処理を分ける。そして特徴点抽出部202において被写体が存在していないと判定された場合には、特徴点反映部207で行われるステップS1210に処理が進む。一方、被写体が存在していると判定した場合、特徴点抽出部202は、ステップS1206以降に処理を進める。すなわち被写体が存在している場合、回転方向の手振れ検出が正しく成されないことになるため、特徴点抽出部202は、他の番号Gnの特徴点配置グリッドについて特徴点算出処理を行う。
図11の画像データ1101の場合、Gn=1及びGn=2のグリッドに被写体1105が存在しているため、Gn=1及びGn=2以外のグリッドで特徴点を算出する必要がある。
【0072】
ステップS1206に進むと、特徴点抽出部202は、Gn=Gmaxになったか否かを判定する。そして、特徴点抽出部202は、Gn=Gmaxになったと判定した場合には特徴点反映部207で行われるステップS1209に処理が進む。一方、Gn=Gmaxになっていないと判定した場合、特徴点抽出部202は、ステップS1207に処理を進める。
【0073】
ステップS1207に進むと、特徴点抽出部202は、本特徴点抽出処理において初めて本ステップを通過したか否かを判定する。そして、特徴点抽出部202は、既に本ステップを通過したことがある場合には、ステップS1211へ処理を進め、Gn=Gn+1とした後にステップS1204へ処理を戻す。一方、本ステップを初めて通過したと判定した場合、特徴点抽出部202は、ステップS1208に処理を進める。
【0074】
ステップS1208に進むと、特徴点抽出部202は、番号Gnの値を保持した上で、ステップS1201に処理を進め、Gn=Gn+1とした後にステップS1204へ処理を戻す。
【0075】
ステップS1206でGn=Gmaxになったと判定されてステップS1209に進むと、特徴点反映部207は、ステップS1208で保持された番号Gnの値を基に、左眼画像から右眼画像に特徴点を反映する処理を行う。ステップS1209の処理は、左眼画像から右眼画像に反映する適切な特徴点を見つけることができなかった場合の処置であり、被写体が検出された特徴点配置グリッド内の特徴点ではあるが、優先順位が高いデータを用いて、特徴点が反映されることになる。ステップS1209の後、特徴点反映部207は、ステップS1210に処理を進める。
【0076】
ステップS1210に進むと、特徴点反映部207は、番号Gnの値に基づいて、左眼画像の特徴点を右眼画像の特徴点に、それら左眼画像と右眼画像との間の視差を加味して反映する。
図11の画像データ1101の場合は、Gn=4において特徴点が反映されている例を示している。
【0077】
その後、前述したように追跡先特徴点決定部205、マッチング処理部203による処理を経ることで動きベクトルが算出され、これにより動きベクトル検出部121では回転方向の手振れ検出が可能となる。
【0078】
前述のように、第1の実施形態に係る画像処理装置は、回転方向の手振れ要因の動きベクトルを検出するために、左眼画像の特徴点のうち一部を右目画像の特徴点に反映させることで、回転方向の手振れは検出しつつ、演算コストを低減させることが可能となる。
【0079】
前述した
図11では、優先順位の番号の割り振りを、右眼画像の右側の優先順番を高くするように設定したが、優先順位は自由に決定することができる。例えば、ステレオカメラから取り込まれた画像データにおいては、左眼画像及び右眼画像の各々の画像の中心付近(中心座標から所定範囲内の領域あるいは所定幅、所定高さの矩形領域)で、より画像の歪みが小さい。よって、各々の画像の中心付近の優先順位を高く設定(優先的に設定)するとしても良い。また、特徴点がある一定箇所に集まり、得られる動きベクトルに偏りが生じることを防ぐために、優先順位は、特徴点を画像の全体に均等に散りばめるように設定されてもよい。これにより、例えば右眼画像における各特徴点の間の距離が均等に配置されるように特徴点の反映がなされるようになる。
【0080】
<第2の実施形態>
次に本発明の第2の実施形態に係る画像処理装置について説明する。なお、第2の実施形態に係る画像処理装置の構成は前述の
図1、
図2と同様であるためそれらの図示及び説明は省略する。また第2の実施形態の画像処理装置での処理も
図3~
図12で説明したのと概ね同様であるが、第1の実施形態では左眼画像から右目画像に反映する特徴点数を固定していたのに対し、第2の実施形態の画像処理装置は特徴点数を時間的にダイナミックに制御する。
【0081】
以下、
図13から
図17を参照しながら、第2の実施形態の画像処理装置において特徴点数を時間的にダイナミックに制御する特徴点数設定処理について説明する。
図13は、第2の実施形態の画像処理装置における特徴点数設定処理の流れを示すフローチャートである。
【0082】
まずステップS1301において、回転方向手振れ検出部209は、SRAM206に格納されている動きベクトルデータを用いて、回転方向の手振れを検出し、回転方向の手振れ量の情報を特徴点数設定部208に送る。
【0083】
特徴点数設定部208は、回転方向手振れ検出部209において現フレームで検出された回転方向の手振れ量と、前フレームで検出された回転方向の手振れ量とを比較する。そして、特徴点数設定部208は、前フレームと比較して現フレームでは回転方向の手振れ量が増加したか否かを判定する。そして、特徴点数設定部208は、前フレームと比較して現フレームでは回転方向の手振れ量が増加したと判定した場合には、演算コストを低減させるために特徴点数を減らすフローであるステップS1304以降に処理を進める。一方、特徴点数設定部208は、前フレームと比較して現フレームでは回転方向の手振れ量が増加していないと判定した場合には、回転方向の手振れ検出の精度を上げるために特徴点数を増やすフローであるステップS1302以降に処理を進める。
【0084】
ステップS1302に進むと、特徴点数設定部208は、特徴点数Nが、回転方向の手振れ検出が可能な特徴点の最低点数Nminと等しいか否かを判定する。そして、特徴点数設定部208は、N=Nminである場合、特徴点数Nをさらに減らすことはできないため、
図13のフローチャートによる特徴点数設定処理を終了する。一方、特徴点数設定部208は、特徴点数Nが最低点数Nminと等しくないと判定した場合にはステップS1303に処理を進める。
【0085】
ステップS1303に進むと、特徴点数設定部208は、特徴点数Nが最低点数Nmin未満(N<Nmin)にならない範囲で、特徴点数Nを減少させる。このステップS1303の後、特徴点数設定部208は
図13のフローチャートの処理を終了する。
【0086】
またステップS1304に進むと、特徴点数設定部208は、特徴点数Nが、リアルタイム性を保持して動きベクトルを算出できる特徴点の最高点数Nmaxと等しいか否を判定する。そして、特徴点数設定部208は、N=Nmaxである場合、特徴点数Nをさらに増やすことはできないため、
図13のフローチャートの処理を終了する。一方、特徴点数設定部208は、特徴点数Nが最高点数Nmaxと等しくないと判定した場合にはステップS1305に処理を進める。
【0087】
ステップS1305に進むと、特徴点数設定部208は、特徴点数Nが最高点数Nmaxを超えない(N>Nmax)範囲で、特徴点数Nを増加させる。このステップS1305の後、特徴点数設定部208は
図13のフローチャートの処理を終了する。
【0088】
ここで最高点数Nmaxの決め方について、
図14から
図17を用いて説明する。
図14は、前述の
図10の例と同様に、ステレオカメラから取り込まれた左眼画像1402及び右眼画像1403からなる画像データ1401に対する特徴点の分布の例を示す図である。なお
図14には動きベクトルを表す矢印は図示していない。また
図14は、
図3と同様に特徴点配置グリッドや周辺グリッド等が表されている。
図14の例では、左眼画像1402には特徴点が9点、右眼画像1403には特徴点が2点の、合計で特徴点が11点配置されている。
【0089】
図15は、
図14に例示したように特徴点が11点の場合の動きベクトル検出に関するタイミングチャートである。動きベクトル検出部121では、
図15に示すように、1フレーム間で、撮像素子102から出力された画像データからマッチング用画像が生成され、特徴点数Nに応じてテンプレートマッチングが順次行われる。ここで、1フレームの時間1505をRVDとし、一つ目の特徴点に対するテンプレートマッチングが開始されるまでに要する時間1506をT0、予め求めた1つ当たりのテンプレートマッチングを実行するのに要する処理時間1507をTTとする。この場合、それら時間は、TDV>T0>T0+N×TTの関係を満たす必要がある。
【0090】
図15に示すように、特徴点数が11点である場合、それら11点の特徴点に対する動きベクトル検出の処理時間(T0+N×TT)は、
図15のVDで示す1フレームの時間TDVに収まっている。このことから、特徴点数が11点である場合には、リアルタイム性を保持して動きベクトルが算出可能であることがわかる。
【0091】
また
図16は、ステレオカメラから取り込まれた左眼画像1602及び右眼画像1603からなる画像データ1601に対する特徴点の分布の例を示す図である。
図16の例では、左眼画像1602には特徴点が9点、右眼画像1603には特徴点が7点の、合計で特徴点が16点配置されている。なお
図16は、
図3と同様に特徴点配置グリッドや周辺グリッド等が表されている。
【0092】
図17は、
図16に例示したように特徴点が16点の場合の動きベクトル検出に関するタイミングチャートである。なお
図17では、1フレームの時間が時間1705、一つ目の特徴点に対するテンプレートマッチング開始されるまでの時間が時間1706、1つ当たりのテンプレートマッチングの実行に要する処理時間が時間1707としている。動きベクトル検出部121では、前述同様に、1フレーム間で、撮像素子102から出力された画像データからマッチング用画像が生成され、特徴点数Nに応じてテンプレートマッチングが順次行われる。特徴点が16点の場合、それら16点の特徴点に対する動きベクトル検出の処理時間(T0+N×TT)は、
図17のVDで示す1フレームの時間TDV内には収まらず、したがってリアルタイム性を保持して動きベクトルは算出できないことがわかる。すなわち、16点の特徴点数Nは適切ではない。そして、
図17の例からは、リアルタイム性を保持して動きベクトルを算出できる特徴点の最高点数Nmaxは15点であると言える。
【0093】
以上説明したように、第2の実施形態に係る画像処理装置は、左眼画像から右目画像に反映する特徴点数を時間的にダイナミックに制御している。これにより、第2の実施形態によれば、動きベクトルを算出する処理速度と回転方向の手振れ検出の精度とに基づいて、最適な条件で演算コストを低減させることができる。
【0094】
前述したように第1、第2の実施形態の画像処理装置においては、サーチ領域を限定せずに、特徴点数を限定することでテンプレートマッチングに費やされる演算コストを低減させことができる。これにより、第1、第2の実施形態の画像処理装置によれば、ステレオカメラが取り込んだ画像データに対して、安価に回転方向の手振れを検出することが可能となり、動きベクトル検出の性能を向上させることができる。
【0095】
なお、第1、第2の実施形態では、左眼画像から右目画像に特徴点を反映する例を挙げたが、右眼画像から左眼画像に特徴点が反映されてもよい。また、第1、第2の実施形態において、左眼画像及び右眼画像の2つの画像の場合に限らず、複数の画像の場合でも同様に処理すればよい。
【0096】
以上、本発明をその好適な実施形態に基づいて詳述してきたが、本発明はこれら特定の実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の様々な形態も本発明に含まれる。上述の実施形態の一部を適宜組み合わせてもよい。
【0097】
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0098】
上述の実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。即ち、本発明は、その技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【0099】
101:第1の結像光学部、131:第2の結像光学部、102:撮像素子、104:画像処理部、112:CPU、121:動きベクトル検出部、202:特徴点抽出部、207:特徴点反映部、208:特徴点数設定部、209:回転方向手振れ検出部