JP2018059767A - 画像処理装置、画像処理方法およびプログラム - Google Patents
画像処理装置、画像処理方法およびプログラム Download PDFInfo
- Publication number
- JP2018059767A JP2018059767A JP2016196433A JP2016196433A JP2018059767A JP 2018059767 A JP2018059767 A JP 2018059767A JP 2016196433 A JP2016196433 A JP 2016196433A JP 2016196433 A JP2016196433 A JP 2016196433A JP 2018059767 A JP2018059767 A JP 2018059767A
- Authority
- JP
- Japan
- Prior art keywords
- block
- parallax
- image
- block matching
- image processing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Image Processing (AREA)
- Measurement Of Optical Distance (AREA)
Abstract
【課題】ブロックマッチングを用いた視差推定において、視差の推定精度を向上させることができる。【解決手段】複数の画像のうち一の画像を基準画像とし、当該一の画像と異なる他の画像を参照画像として、基準画像の各画素位置について、対応する画素位置を参照画像からブロックマッチングにより探索し、ブロックマッチングにより検出された画素位置との視差値を導出する導出手段と、基準画像の各画素位置について導出された視差値に基づき、視差マップを生成する生成手段と、ブロックマッチングにおける探索方向に沿って、ブロックマッチングに用いるブロックを拡大するとともに、導出手段が導出した視差の信頼度が一定レベル以下である画素位置について、導出手段にブロックマッチングを再度実行させ、再度のブロックマッチングにより検出された画素位置との視差で、視差マップを更新する更新手段と、を備える。【選択図】図3
Description
本発明は、互いに異なる複数の視点から撮像された複数の画像を示す画像データを用いて、各画像間の視差を推定する技術に関する。
同一の被写体を互いに異なる複数の視点から撮像して得られた複数の画像を用いて、被写体までの距離を推定し、推定した距離情報を画像処理に応用する技術がある。異なる視点に対応する複数の画像から距離情報を推定する方法の代表例として、各画像間に生じた視差を利用する方法がある。ここで視差とは、各視点に対応する画像間で生じる、同じ被写体領域に対応する画像上の位置のずれである。視差の大きさは被写体までの距離の大きさに依存する。そのため、各画像間に生じた視差の大きさと、各視点間の距離等に基づいて、被写体までの距離を推定することが可能である。視差は、ブロックマッチングなどの方法を用いて、各視点に対応する画像間で、同じ被写体領域に対応する領域を検出することで求められる。
視差の推定精度を向上させる技術として、ブロックサイズを変えながら繰り返しブロックマッチングを行う、階層型のブロックマッチングを用いる方法が知られている。特許文献1には、推定した視差に誤差が含まれると判断した場合に、ブロックマッチングに用いるブロックのサイズを拡大して、再度ブロックマッチングを実行することにより、視差の推定精度を向上させる方法が記載されている。
ブロックマッチングでは、一つのブロック内に距離(カメラからの距離)が異なる複数の被写体が含まれると、画像間で、対応する画像領域を適切に検出できない場合がある。例えば、マッチングの対象となる被写体がテクスチャレスである場合には、隣接する被写体に対応する領域が誤って検出される場合がある。したがって、被写体の境界付近においては、視差が正しく推定されない可能性がある。
特許文献1に記載された方法では、ブロックが拡大されるとブロック内に複数の被写体が含まれやすくなるため、視差の推定精度が低下するおそれがある。そこで本発明は、ブロックマッチングを用いた視差推定において、視差の推定精度を向上させることを目的とする。
本発明による画像処理装置は、互いに異なる視点から撮像された複数の画像の視差を示す視差マップを生成する画像処理装置であって、複数の画像のうち一の画像を基準画像とし、当該一の画像と異なる他の画像を参照画像として、基準画像の各画素位置について、対応する画素位置を参照画像からブロックマッチングにより探索し、ブロックマッチングにより検出された画素位置との視差値を導出する導出手段と、基準画像の各画素位置について導出された視差値に基づき、視差マップを生成する生成手段と、ブロックマッチングにおける探索方向に沿って、ブロックマッチングに用いるブロックを拡大するとともに、導出手段が導出した視差の信頼度が一定レベル以下である画素位置について、導出手段にブロックマッチングを再度実行させ、再度のブロックマッチングにより検出された画素位置との視差で、視差マップを更新する更新手段と、を備えることを特徴とする。
本発明によれば、ブロックマッチングを用いた視差推定において、視差の推定精度を向上させることができる。
以下、本発明の実施形態について、図面を参照して説明する。なお、以下の実施形態は本発明を限定するものではなく、また、本実施形態で説明されている特徴の組み合わせの全てが本発明の解決手段に必須のものとは限らない。なお、同一の構成については、同じ符号を付して説明する。
<実施例1>
図1は、第1の実施例の画像処理装置の構成の一例を示すブロック図である。第1の実施例の画像処理装置100は、CPU101、RAM102、ROM103、二次記憶装置104、入力インターフェース105、および出力インターフェース106を備える。そして、画像処理装置100の各構成要素はシステムバス107によって相互に接続されている。また、画像処理装置100は、入力インターフェース105を介して外部記憶装置108に接続されている。また、画像処理装置100は、出力インターフェース106を介して外部記憶装置108および表示装置109に接続されている。
図1は、第1の実施例の画像処理装置の構成の一例を示すブロック図である。第1の実施例の画像処理装置100は、CPU101、RAM102、ROM103、二次記憶装置104、入力インターフェース105、および出力インターフェース106を備える。そして、画像処理装置100の各構成要素はシステムバス107によって相互に接続されている。また、画像処理装置100は、入力インターフェース105を介して外部記憶装置108に接続されている。また、画像処理装置100は、出力インターフェース106を介して外部記憶装置108および表示装置109に接続されている。
CPU101は、RAM102をワークメモリとして、ROM103に格納されたプログラムを実行し、システムバス107を介して画像処理装置100の各構成部を統括的に制御するプロセッサである。これにより、後述する様々な処理が実行される。
二次記憶装置104は、画像処理装置100で取り扱われる種々のデータを記憶する記憶装置であり、例えばハードディスクドライブ(HDD)である。CPU101は、システムバス107を介して二次記憶装置104へのデータの書き込みおよび二次記憶装置104に記憶されたデータの読出しを行う。二次記憶装置104にはHDDの他に、光ディスクドライブやフラッシュメモリなど、様々な記憶デバイスを用いることが可能である。
入力インターフェース105は、例えばUSBやIEEE1394等のシリアルバスインターフェースである。画像処理装置100は、入力インターフェース105を介して、外部装置からデータや命令等を入力する。また画像処理装置100は、入力インターフェース105を介して、外部記憶装置108(例えば、ハードディスク、メモリーカード、CFカード、SDカード、USBメモリなどの記憶媒体)からデータを取得する。なお、入力インターフェース105には不図示のマウスやボタンなどの入力デバイスも接続可能である。
出力インターフェース106は、入力インターフェース105と同様に、USBやIEEE1394等のシリアルバスインターフェースである。なお、出力インターフェース106には、例えばDVIやHDMI(登録商標)等の映像出力端子を用いることも可能である。画像処理装置100は、出力インターフェース106を介して、外部装置へデータ等を出力する。また、画像処理装置100は、出力インターフェース106を介して、表示装置109(液晶ディスプレイなどの各種画像表示デバイス)に、処理された画像データなどを出力する。これにより、表示装置109に画像が表示される。なお、画像処理装置100の構成要素は上記以外にも存在するが、本発明の主眼ではないため、説明を省略する。
ここで、本実施例で用いるブロックマッチングの原理について説明する。ブロックマッチングでは、比較対象とする画像領域(ブロック)を変更しながら、2枚の画像間で同じサイズのブロック同士が比較される。そして、領域間のマッチング度合いを表わす評価値が最小(最大)となるブロック同士が、対応するブロックとして検出される。そして、検出されたブロックの画像中の位置の差が、そのブロックに対応する視差として導出される。
ブロックマッチングの精度は、マッチングに用いられるブロックの大きさ(サイズ)や形状に左右される。したがって、画像の特徴によって、適切なブロックの大きさや形状は変化する。例えば、小さなサイズのブロックを用いてブロックマッチングを行った場合には、テクスチャレス領域において評価値にほとんど差がないブロックが多数検出されてしまう。そのため、間違ったブロックを対応ブロックとして検出する可能性が高くなってしまう。一方、テクスチャレス領域に対応するため、大きなサイズのブロックを用いた場合は、マッチングの対象となる被写体(着目被写体)に隣接する、被写体(隣接被写体)がブロック内に含まれる可能性が増大する。カメラからの距離が着目被写体と隣接被写体とで異なる場合、両被写体は互いに視差が異なる。このように、距離が異なる複数の被写体を含むブロックでは、視差が異なる領域が混在する。特に着目被写体がテクスチャレスである場合には、画像間において対応ブロックを適切に決定することができず、ブロックマッチングの精度が低下する。
そこで、本実施例では、サイズが異なる複数のブロックのそれぞれでマッチングを行う階層型のブロックマッチングを採用する。具体的には、最初のブロックマッチング(最下層のブロックマッチング)では、最も小さいサイズのブロックを用いてマッチングを行う。そして、ブロックのサイズを拡大して、次のブロックマッチング(次の階層のブロックマッチング)を行う。このように本実施例では、ブロックのサイズを拡大しながら、繰り返しブロックマッチングが行われる。その際、ある階層で視差の推定が上手くいかなかった領域については、さらに上の階層での視差推定の結果を用いて視差の値を補うようにする。以下、視差の値を視差値と称する。また、視差値を、単に視差と表現する場合がある。
本実施例では、ブロックを拡大する際、エピポーラ線と平行な方向にのみブロックを拡大することで、高精度な視差推定を実現する。以下、図2を用いてエピポーラ線について説明した後、図3に示す概念図を用いてブロックの拡大について具体的に説明する。
図2は、エピポーラ線を説明するための図である。点401は、被写体上のある1点を表す。点402は、被写体を左側(図2における左側)から撮像する、左視点のカメラの光学中心を表す。点405は、被写体を右側(図2における右側)から撮像する、右視点のカメラの光学中心を表す。以下、点402,405をそれぞれ、カメラ402,405と表現する場合がある。図2に示すように、3次元空間中のある点401がカメラ402の画像(画像面403)に投影されているとする。ここで、点401とカメラ402とを結ぶ直線と、画像面403とが交差する点404が、3次元空間中の点401の画像面403への投影像となる。同様に、別視点のカメラ405では、点401とカメラ405とを結ぶ直線と、画像面406とが交差する点407が、点401の画像面406への投影像となる。このとき、点401,402,405の3点は空間中に一つの平面408を定義する。上記点404,407は平面408上に存在する。このとき平面408と画像面403とが交差してできる直線409が、画像面403におけるエピポーラ線となる。同様に、平面408と画像面406とが交差してできる直線410は、画像面406におけるエピポーラ線となる。カメラ402により観測される画像点404に対応する空間中の点は、直線411上のどこかに存在する。この直線411を画像面406に投影したものが、エピポーラ線410となる。つまり、エピポーラ線410は、画像面403上の点404に対応する、画像面406上の点の集合である。同様に、画像面403上のエピポーラ線409は、カメラ405により観測される画像点407に対応する、画像面403上の点の集合である。このように、エピポーラ線は画像上の点同士の対応関係を表している。したがって、例えば、画像点404に対応する、画像面406上の点を探索する場合には、画像面406全体ではなくエピポーラ線410上を探索すればよい。また例えば、画像点407に対応する、画像面403上の点を探索する場合には、画像面403全体ではなくエピポーラ線409上を探索すればよい。
図3は、第1の実施例における視差推定処理を説明するための図である。図3(a)には、テクスチャレスの被写体(以下、テクスチャレス被写体という)305と、テクスチャを有する被写体(以下、テクスチャ被写体という)306とを、2台のカメラ(カメラ301,303)で撮像する様子が示されている。カメラ301とカメラ303は、所定の距離を隔てて同一平面上に含まれるように配置されている。また、カメラ301とカメラ303は、互いの光軸が平行になるように配置されている。テクスチャレス被写体305とテクスチャ被写体306とは、カメラ301,302を含む上記平面からそれぞれ異なる距離に配置されている。図3(a)において、画像302は、カメラ301により撮像された左視点の画像である。画像304は、カメラ303により撮像された右視点の画像である。画像302,304には、共にテクスチャレス被写体305とテクスチャ被写体306が写っている。ここで、画像302上の位置(u1,v1)の画素307に対応する画像304上の画素を求める。画素307は、テクスチャレス被写体305に対応する領域に属する。ここで、画素307を中心とするブロック308内に、テクスチャレス被写体305に対応する領域と、テクスチャ被写体306に対応する領域とが含まれる場合を考える。この状態でブロックマッチングを行った場合、正解の視差(すなわち、テクスチャレス被写体305の視差)に対応するブロック309ではなく、テクスチャ被写体306の視差に対応するブロック310が誤って検出される。間違いの要因は、ブロック310内に含まれるテクスチャ被写体306の特徴により、ブロック309よりもブロック310との類似性が高いと判断されるためである。この現象は、ブロック内に含まれる、テクスチャレス被写体とそれ以外の被写体との境界線が、画像304におけるブロックの走査方向と平行(すなわち、画素307に対応する画像304上のエピポーラ線と平行)な場合に発生する。その結果、テクスチャレス領域における推定視差の精度が低下する。そこで、本実施例では、この現象の発生を抑えるために、ブロック内にエピポーラ線と平行な境界線が含まれるのを抑制する。具体的には、図3(b)に示すブロック311のように、初期ブロックを1画素とし、さらに、ブロックを拡大するときには、エピポーラ線に平行な方向にブロックを拡大させる。このようにして、本実施例では、ブロック内にエピポーラ線と平行な境界線が含まれるのを抑制し、推定視差の精度を向上させる。
上記処理により、テクスチャレス領域やその形状によらず、精度がよく、信頼性が高い視差マップ(各画素位置に対応する視差値を画素値として格納した画像データ)を得ることが可能になる。
次に、第1の実施例の画像処理装置100で行われる処理について、図4および図5を用いて、具体的に説明する。図4は、画像処理装置100の機能構成の一例を示すブロック図である。図5は、第1の実施例における視差推定処理の流れを示すフローチャートである。
図4に示す各機能は、ROM103に格納されたプログラムをCPU101がRAM102にロードして実行することで動作する。本実施例では、各機能として、画像データ取得部201、撮像パラメータ取得部202、エピポーラ線算出部203、領域設定部204、視差推定部205、判定部206、及び、視差決定部207が含まれる。またそれにより、図5(a)(b)に示す一連の処理が実行される。なお、以下に示す処理の全てがCPU101によって実行される必要はない。以下に示す処理の一部または全部が、CPU101以外の一つ又は複数の処理回路によって行われるように画像処理装置100が構成されてもよい。以下、図5(a)(b)に示す処理の流れを説明する。
ステップS501では、画像データ取得部201が、入力インターフェース105を介して、または二次記憶装置104から、処理対象となる画像データを取得する。ここでは、画像データ取得部201は、多眼カメラなどの多視点撮像装置を用いて撮像された画像データを取得する。すなわち、画像データ取得部201は、同一の被写体を複数の異なる視点から同時に撮像することで得られる複数の画像を示す多視点画像データを取得する。画像データ取得部201は、視差推定に用いる基準画像および参照画像を決定する。ここで、基準画像とは視差推定の基準となる画像である。ブロックマッチングでは、基準画像における処理対象となる画素(以下、着目画素という)に対応する画素が、基準画像とは異なる視点で撮像された画像(以下、参照画像という)から探索される。その結果、視差推定の結果として得られる視差マップは、基準画像の視点に対応する視差マップとなる。なお、基準画像および参照画像は、入力インターフェース105を介して、ユーザによって指定されてもよい。以下では、基準画像を撮像したカメラを基準カメラ、参照画像を撮像したカメラを参照カメラと称する。画像データ取得部201は、取得した画像データを視差推定部205に出力する。
以下では、同一平面上に配置した2台のカメラにより取得される、2枚の撮像画像データが画像データ取得部201に入力される場合を例にする。ここで、2台のカメラが同一平面上に配置された状態とは、一のカメラの光軸に垂直でありかつ当該一のカメラの主点を通る平面上に、他のカメラの主点が存在する状態である。また、カメラの位置姿勢を表す軸がカメラ間で互いに平行(カメラの光軸が互いに平行)であるとする。なお、画像データ取得部201に入力される画像の枚数は3枚以上でもよい。また、互いのカメラの光軸が平行でない場合についても同様に、本実施例を適用することが可能である。具体的な処理方法については後述する。
ステップS502では、視差推定部205がフラグマップの全画素に1を設定して、フラグマップを初期化する。フラグマップとは、処理対象の場合は1、処理対象でない場合は0を画素毎に設定したデータのことである。このようにフラグマップを初期化することで、画像に含まれる全画素が視差推定の対象となる。フラグマップは、視差推定部205が保持してもよいし、二次記憶装置104に格納するようにしてもよい。
ステップS503では、撮像パラメータ取得部202が、画像データ取得部201が取得した画像データの各画像を撮影したカメラの、撮像パラメータを取得する。本実施例では、撮像パラメータ取得部202は、入力インターフェース105を介して、または二次記憶装置104から、撮像パラメータの値が記述されたファイルを読み込む。ファイルには、予めカメラを測定して得られる、位置及び姿勢を表す外部パラメータと、焦点距離、主点位置、及び歪曲を表す内部パラメータとが、撮像パラメータとして記述されている。なお、画像データを用いてSFM(Structure From Motion)などの公知の手法により、各撮像パラメータの値を推定してもよい。撮像パラメータ取得部202は、撮像パラメータをエピポーラ線算出部203に出力する。
ステップS504では、エピポーラ線算出部203が、基準画像上の着目画素に対応する、参照画像上のエピポーラ線を算出する。上述のとおり、基準カメラと参照カメラとは同一平面状に配置されていて、かつ互いの光軸が平行になるように配置されている。そのため、参照画像上のエピポーラ線は、基準カメラと参照カメラとの方向ベクトルに平行となる。この方向ベクトルを用いて、参照画像上のエピポーラ線を算出する。図6を用いて具体的に説明する。
図6は、エピポーラ線の算出方法を説明するための図である。点605は、被写体上のある1点を表す。点601は、被写体を左視点から撮像するカメラの光学中心を表す。点602は、被写体を右視点から撮像するカメラの光学中心を表す。以下、点601を基準カメラ601と表現する。また、点602を参照カメラ602と表現する。図6において、世界座標のZ軸と基準カメラ601の光軸とは互いに平行である。基準カメラ601の3次元空間中の座標点(Xb,Yb,Zb)と、参照カメラ602の3次元空間中の座標点(Xr,Yr,Zr)とから、方向ベクトル603は(Xb−Xr,Yb−Yr,Zb−Zr)と求まる。ここで、各カメラの主点が同一平面上に存在するため、方向ベクトル603は、Z軸を除く2次元のベクトル(Xb−Xr,Yb−Yr)で表される。このとき、エピポーラ線は参照画像上の座標系u,vを用いて下記の式1で表すことができる。(u0,v0)は、参照画像上の座標系で表した、基準画像上の着目画素604の座標である。
また、2台のカメラの光軸が平行であるため、基準画像と参照画像とは同一の画像座標軸となり、上記式で求めたエピポーラ線は基準画像のエピポーラ線と等しい。なお、世界座標のZ軸と基準カメラ601の光軸とが平行でない場合についても同様にしてエピポーラ線を算出することが可能である。エピポーラ線算出部203は、エピポーラ線の算出結果を領域設定部204と視差推定部205とに出力する。
ステップS505では、領域設定部204がエピポーラ線算出部203から取得したエピポーラ線の算出結果に基づいてブロックの拡大方向を設定する。また、領域設定部204は、階層型のブロックマッチングにおける初期ブロックを決定する。
ブロックの拡大方向は、事前に定めた方向の候補から選択する。図7は、ブロックの拡大方向を説明するための図である。本実施例では、図7に示す、画像軸の各軸に平行な方向と各軸間の中間方向との計4方向を候補とする。領域設定部204は、エピポーラ線算出部203が算出したエピポーラ線と、上記4方向とがなす角度をそれぞれ算出する。そして、領域設定部204は、最も角度が小さい方向をブロックの拡大方向として選択し、拡大方向を示す情報(以下、拡大方向情報という)を保持する。なお、ブロックの拡大方向の候補はこれに限らず、画像軸の各軸がなす角度を複数に分割して定めた方向を、候補として用いてもよい。
初期ブロックとして、本実施例では、上述したように着目画素である1画素が設定される。なお、初期ブロックは1画素でなくてもよい。例えば、着目画素を中心とした正方形や長方形のブロックなど任意のブロックを設定してもよい。ただし、初期ブロックを1画素に設定することで、ブロック内にエピポーラ線と平行な境界線が含まれることを確実に抑制することができる。領域設定部204は、決定した初期ブロックのサイズや形状を示す情報を、現在の階層で用いるブロックに関する情報(以下、ブロック情報という)として、視差推定部205に出力する。
ステップS506では、視差推定部205が基準画像において視差推定を行う着目画素を決定する。本実施例では、基準画像において最も左上の画素が着目画素として選択される。その後、着目画素に対応する視差が推定されるたびに、それまでに着目画素として選択されていない画素が新たな着目画素として選択される。具体的には、ラスタ順に最も右下の画素まで、各画素が着目画素として選択される。なお、着目画素の選択順はこれに限られず、どのような順番で着目画素を選択してもよい。
ステップS507では、視差推定部205が、画像データ取得部201から取得した画像データの着目画素における視差を推定する。視差は、エピポーラ線算出部203から取得したエピポーラ線と、領域設定部204から取得したブロック情報とに基づいて、ブロックマッチングにより推定する。以下に、具体的な処理内容を示す。
まず、視差推定部205は、参照画像において、着目画素と比較する画素(以下、参照画素という)を決定する。本実施例では、視差推定部205は、着目画素と対応する画素が存在しそうにない画像領域の画素はあらかじめ参照画素の候補から除外する。具体的には、視差推定部205は、最初の参照画素として、基準画像における着目画素の座標(u0,v0)と同一座標の画素を参照画像上から選択する。その後、参照画素の評価値が算出されるたびに、視差推定部205は、エピポーラ線上に存在する画素を新たな参照画素として選択する。探索方向は、参照画像を撮像したカメラから基準画像を撮像したカメラを見た際の向きに相当する。したがって、探索方向は、エピポーラ線算出部203で算出された、基準カメラと参照カメラとの方向ベクトル603と等しい。このように、エピポーラ線上の画素のみを参照画素として選択することにより、ブロックマッチングの処理に要する時間を短縮することができる。なお、参照画素の選択方法はこれに限られず、全画素を参照画素の対象としてもよいし、どのような順番で参照画素を選択してもよい。例えば、視差推定部205は、最初の参照画素として、参照画像の最も左上の画素を選択し、ラスタ順に最も右下の画素まで、各画素を参照画素として選択するようにしてもよい。
次に、視差推定部205は、着目画素と参照画素とを比較し、ブロックマッチングの評価値を計算する。本実施例では、比較対象のブロック間での画素値の二乗平均誤差を評価値として用いる。二乗平均誤差の計算に用いるブロックは、領域設定部204から取得したブロック情報によって示されるブロックとする。視差推定部205は、着目画素を中心とするブロックと、参照画素を中心とするブロックとで画素値の二乗平均誤差を計算する。着目画素と参照画素との画素位置の、水平方向の差をlu、垂直方向の差をlvとする。すると、着目画素の画素位置(u0,v0)における評価値V(lu,lv,u0,v0)は以下の式で表わされる。そして、評価値Vが小さいほどマッチング度合いが高いと判断される。
ここで、Bはマッチングに用いるブロックに含まれる画素の集合を示す。|B|は領域Bに含まれる画素数を示す。Ib(u,v)は基準画像の画素位置(u,v)における画素値を示す。Ir(u,v)は参照画像の画素位置(u,v)における画素値を示す。なお、ここで算出される評価値は式(2)に示す画素値の二乗平均誤差に限られず、二つのブロックの類似度合いを示す値であれば公知の様々なものが利用可能である。視差推定部205は、上記方法に基づき、参照画素を変更しながら、参照画素の候補となる全ての画素についてそれぞれ評価値を算出する。そして、視差推定部205は、評価値Vが最小となる参照画素と、着目画素との画素位置の差を、着目画素に対応する視差と推定する。
ステップS508では、視差推定部205が、フラグマップが1である全画素について処理を終了したかを判断する。処理が終了している場合は(ステップS508のYES)、視差推定部205は、視差推定の結果として生成した視差マップを判定部206に出力する。そして、処理はステップS509に移行する。処理が終了していない場合は(ステップS508のNO)、処理はステップS506に戻る。
ステップS509では、判定部206が、視差推定部205から取得した視差マップの分散度を画素毎に算出する。一般的な視差マップでは、遠近競合領域(一つのブロック内に距離が異なる複数の被写体が含まれる領域)以外では視差値が緩やかに変化するという性質を有する。そこで、本実施例では、判定部206が、各階層のブロックマッチングにより得られた視差マップの分散度を画素毎に評価する。着目画素周辺の視差変動が小さい、つまり分散度が小さい場合は、判定部206は、信頼度が高いと判断する。逆に、視差変動が大きい、つまり分散度が大きい場合は、判定部206は、信頼度が低いと判断する。本実施例では、分散度として以下の式で算出される値を用いる。
ここで、d(x、y)は視差マップである。B´は視差マップにおいて、分散の算出対象となる領域である。ここでは、例えば着目画素を中心とした5×5の正方領域を分散の算出対象とする。なお、分散の算出式は、式(3)以外であってもよい。また、視差マップの信頼度を評価できる評価値であれば、分散度以外の評価値(例えば平滑度)であってもよい。
ステップS510では、判定部206が、算出した分散度と、閾値とを画素毎に比較する処理(分散度判定処理)を実行する。なお、ステップS510で用いられる閾値は、予め判定部206によって決定される。例えば、判定部206は、処理対象となる画像データの視差の最大値に基づき閾値を決定する。
ここで、分散度判定処理を説明する。図5(b)には、分散度判定処理のフローが示されている。
ステップS521では、判定部206が、判定対象とする画素を選択する。ステップS522は、判定部206が、選択した画素について算出された分散度と、閾値とを比較する。分散度が閾値より大きい場合は(ステップS522のYES)、視差の信頼度が低い(一定レベル以下である)と判断され、処理はステップS524の処理に移行する。分散度が閾値以下である場合は(ステップS522のNO)、信頼度が高い(一定レベルを超えている)と判断され、処理はステップS523の処理に移行する。このとき、判定部206は、視差決定部207に、信頼度が高いと判断された画素の画素位置を出力する。ステップS523では、視差決定部207が、判定部206から取得した画素位置における視差値を決定する。具体的には、視差決定部207は、視差推定部205から取得した視差マップ内の上記画素位置における視差値を、現在設定されている値で確定する。さらに視差決定部207は、フラグマップの、上記画素位置の画素値を0に更新する。このように、視差決定部207は、着目画素周辺の視差マップが滑らかな場合は、正しく視差推定が行われたと判断し、フラグマップを0にして当該着目画素をそれ以降の処理対象から外す。なお、視差決定部207は、フラグマップを更新する際、判定部206から取得した画素位置以外の画素値の更新は行わない。ステップS524では、判定部206が、未だ判定対象となっていない、未判定の画素があるかを判断する。未判定の画素がある場合には(ステップS524のYES)、処理はステップS521に戻る。未判定の画素がない場合には(ステップS524のNO)、判定部206は、分散度判定処理を終了する。なお、ここでは、信頼度として分散度が用いられる場合を例にしたが、信頼度として平滑度が用いられる場合には、判定部206は、平滑度が閾値より小さい場合に信頼度が低いと判定し、平滑度が閾値以上である場合に信頼度が高いと判定すればよい。
ステップS511では、判定部206が、ブロックの拡大回数が最大拡大回数以上であるかを判定する。なお、判定部206は予め、入力インターフェース105を介して、または二次記憶装置104から、最大拡大回数を取得し、保持する。最大拡大回数以上であると判断した場合は(ステップS511のYES)、処理はステップS513に移行する。最大拡大回数よりも小さいと判断した場合は(ステップS511のNO)、処理はステップS512に移行する。
ステップS512では、領域設定部204が、保持するブロックの拡大方向に基づき、現在の階層で使用しているブロックを拡大する。具体的には、領域設定部204は、拡大方向情報に基づいてブロック情報を更新する。これにより、次の階層で使用されるブロックのサイズや形状が決定される。ここでは、領域設定部204は、現在の階層のブロックマッチングで使用しているブロックを、ブロックの拡大方向にのみ、サイズ刻み幅分拡大する。それにより、次の階層のブロックマッチングで使用されるブロックが決定される。サイズ刻み幅は、入力インターフェース105を介してユーザによって指定可能である。なお、サイズ刻み幅を示す情報を二次記憶装置104に予め格納しておいて、領域設定部204が、二次記憶装置104から当該情報を読み出すようにしてもよい。また、サイズ刻み幅は、領域設定部204が決定してもよい。例えば、領域設定部204は、ブロックの最大拡大回数に応じてサイズ刻み幅を決定してもよい。領域設定部204は、更新したブロック情報を視差推定部205に出力する。それにより、ステップS506の処理が再実行される。すなわち、拡大されたブロックでブロックマッチングが再度実行される。
ステップS513では、視差決定部207が、フラグマップにおいて値が1のままである画素に対応する、視差マップの視差値を、0または事前に定めた値に設定する。その理由は、フラグマップにおいて値が1のままである画素ついては、精度が高い視差推定が不可能であると判断できるからである。そして、視差決定部207は、フラグマップにおいて値が1のままである画素の値を0に更新する。
ステップS514では、視差決定部207が、視差マップを二次記憶装置104や外部記憶装置108や表示装置109に出力する。そして、処理が終了する。
以上が、第1の実施例の画像処理装置100で行われる処理である。なお、本実施例では着目画素を中心とする1方向に長い形状をもつブロックを用いたが、ブロックの形状はこれに限定されず、例えば、着目画素を中心とした十字形を用いてもよい。また、本実施例では、ブロックの拡大回数(すなわち、ブロックマッチングの回数)が予め定められた回数以上実行された場合に、視差マップを出力するようにしている。しかし、視差マップ内のすべての視差値の信頼度が一定レベルを超えた場合には、その時点で視差マップを出力するようにしてもよい。
図8は、第1の実施例の効果を説明するための概念図である。図8において、画像801は、ランダムパターンが有する板805と全面がテクスチャレス領域である板806とを、左視点のカメラ802により撮像した画像である。画像803は、同一被写体を右視点のカメラ804により撮像した画像である。例えば、ブロック810を用いて画像801と画像803とのブロックマッチングを行って視差マップを生成した場合、当該視差マップによって示される画像(視差画像)807のテクスチャレス領域において誤差808が発生する。これに対し、第1の実施例の画像処理装置100では、エピポーラ線と平行な方向にブロックを拡大させながら、階層型のブロックマッチングを実行する。それにより、ブロック内にエピポーラ線と平行な境界線が含まれることを抑制できる。したがって、画像内にテクスチャレス領域が含まれる場合でも、誤ったブロックを検出することがない。さらに、画像処理装置100は、上記階層型のブロックマッチングにおいて、視差マップの分散度を評価しながら画素毎に最適な視差値を導出する。したがって、より正確な視差を推定することができる。よって、第1の実施例の画像処理装置100によれば、精度が高い視差画像809を生成することができる。
<実施例2>
第1の実施例では、撮像パラメータから算出したエピポーラ線に基づいてマッチングに用いるブロックの拡大方向を決定した。本実施例では、ユーザがブロックの拡大方向を決定する。撮像カメラが同一平面上に存在し、かつ互いのカメラの光軸が平行である場合、第1の実施例で説明したように、エピポーラ線は基準カメラと参照カメラとの方向ベクトルと等しい。そこで本実施例では、エピポーラ線のおおよその方向をユーザが予測し、予測した方向をブロックの拡大方向として決定する。このように、本実施例では、撮像カメラの位置関係から算出したエピポーラ線を用いてブロックの拡大方向を決定していた第1の実施例と異なり、おおよその方向に基づいてブロックの拡大方向を決定する。このように、本実施例ではエピポーラ線の算出を行わないので、エピポーラ線を算出していた第1の実施例に比べて、処理工数を低減することが可能となる。
第1の実施例では、撮像パラメータから算出したエピポーラ線に基づいてマッチングに用いるブロックの拡大方向を決定した。本実施例では、ユーザがブロックの拡大方向を決定する。撮像カメラが同一平面上に存在し、かつ互いのカメラの光軸が平行である場合、第1の実施例で説明したように、エピポーラ線は基準カメラと参照カメラとの方向ベクトルと等しい。そこで本実施例では、エピポーラ線のおおよその方向をユーザが予測し、予測した方向をブロックの拡大方向として決定する。このように、本実施例では、撮像カメラの位置関係から算出したエピポーラ線を用いてブロックの拡大方向を決定していた第1の実施例と異なり、おおよその方向に基づいてブロックの拡大方向を決定する。このように、本実施例ではエピポーラ線の算出を行わないので、エピポーラ線を算出していた第1の実施例に比べて、処理工数を低減することが可能となる。
以下、本実施例の画像処理装置100で行われる処理について説明する。図9は、第2の実施例における画像処理装置100の機能構成の一例を示すブロック図である。図10は、第2の実施例における視差推定処理の流れを示すフローチャートである。ROM103に格納されたプログラムをCPU101がRAM102にロードして実行することで、図9に示す各機能が動作する。またそれにより、図10に示す一連の処理が実行される。なお、以下に示す処理の全てがCPU101によって実行される必要はなく、処理の一部または全部が、CPU101以外の一つ又は複数の処理回路によって行われるように画像処理装置100が構成されていてもよい。また、本実施例の機能構成は、第1の実施例の機能構成と同様である。ただし、本実施例では、撮像パラメータ取得部202およびエピポーラ線算出部203の代わりに、拡大方向取得部901が含まれる。また、図10に示すステップS1001,S1002,S1005〜S1013の処理は、第1の実施例におけるステップS501,S502,S506〜S514の処理と同様であるため、以下では説明を省略する。
ステップS1003では、拡大方向取得部901が入力インターフェース105を介して、ユーザが指定するブロックの拡大方向を取得する。ユーザは、ブロックの拡大方向として、基準カメラで撮像された画像の、水平軸に対する角度を指定する。例えば、撮像カメラが水平に配置されている場合(すなわち、光軸に対する回転角度が0度である場合)は0度が指定される。また例えば、撮像カメラが斜め45度に配置されている場合(すなわち、光軸に対する回転角度が45度である場合)は45度が指定される。拡大方向取得部901は、取得したブロックの拡大方向を示す情報を領域設定部204に出力する。
ステップS1004では、領域設定部204が拡大方向取得部901から取得したブロックの拡大方向を示す情報に基づいて、ブロックの拡大方向を設定する。また、領域設定部204は、階層型のブロックマッチングにおける初期ブロックを決定する。ブロックの拡大方向は、事前に定めた方向の候補から選択する。具体的な方法は第1の実施例と同様であるため、説明を省略する。
以上が、第2の実施例の画像処理装置100で行われる処理である。上述したように、第2の実施例では、ユーザがブロックの拡大方向を指定する。それにより、第1の実施例に比べて処理工数を低減することができる。
<実施例3>
第1の実施例では、エピポーラ線の情報のみに基づいて、ブロックマッチングに用いるブロックの拡大方向を決定する例について説明した。本実施例では、被写体のエッジ情報を用いて、ブロックの拡大の有無を決定する例について説明する。第1の実施例では、ブロック内に含まれる全ての画素を用いてブロックマッチングを行い、推定した視差値の信頼性が高いと判断されるまでブロックを拡大する。本実施例では、ブロックマッチングに用いる画素としてふさわしくない画素が除外されるようにブロックを修正する。そして、修正したブロックを用いてブロックマッチングを行う。また、被写体のエッジ情報に基づいて、ブロックの拡大を制限する。
第1の実施例では、エピポーラ線の情報のみに基づいて、ブロックマッチングに用いるブロックの拡大方向を決定する例について説明した。本実施例では、被写体のエッジ情報を用いて、ブロックの拡大の有無を決定する例について説明する。第1の実施例では、ブロック内に含まれる全ての画素を用いてブロックマッチングを行い、推定した視差値の信頼性が高いと判断されるまでブロックを拡大する。本実施例では、ブロックマッチングに用いる画素としてふさわしくない画素が除外されるようにブロックを修正する。そして、修正したブロックを用いてブロックマッチングを行う。また、被写体のエッジ情報に基づいて、ブロックの拡大を制限する。
ここで、図3に示す環境において着目画素307の視差値を推定する際に、図11に示すブロック1102を用いる場合を考える。図11は、第3の実施例におけるブロックの修正処理を説明するための図である。ブロック1102には、着目画素307が属する被写体領域(被写体305の領域)とは異なる被写体領域(被写体306の領域)が多く含まれる。そのため、被写体306の特徴により、ブロック1102内の、被写体306に対応するブロックにおいて類似性が高いと判断され、正しく視差を推定できない可能性がある。また、着目画素307の被写体305のみを含むブロック1103を用いた場合においては、ブロック内がテクスチャレス領域のみとなる。そのため、類似領域として複数の領域が検出される可能性があり、正しく視差を推定できない可能性がある。このように、エピポーラ線に平行なブロックを用いてブロックマッチングを行ったとしても、マッチング元となるブロック内がテクスチャレス領域のみである場合や、ブロック内に複数の被写体領域が含まれる場合は、視差の推定精度が低下する可能性がある。
そこで、本実施例では、ブロック内に含まれるエッジを抽出し、ブロック1101のように、エッジを微小に跨ぐようにブロックを修正する。エッジを微小に跨がせることにより、ブロック内がテクスチャレス領域のみになることがない。それにより、誤ったブロックが検出されるおそれを低減させることができる。また、エッジを微小に跨がせることにより、着目画素307が属さない被写体領域(被写体306の領域)をブロック内に必要以上に含ませることがない。したがって、被写体306の視差に対応するブロックが誤って検出されることを抑制できる。また本実施例では、ブロック内において抽出されたエッジがエピポーラ線と平行なエッジである場合には、上述した現象の発生を抑制するために、当該エッジを跨がないようにブロックを修正する。さらに本実施例では、第1の実施例と同様に階層型のブロックマッチングを行うが、いずれの階層においても、ブロックを修正した方向については、ブロックの拡大方向として選択しないようにする。このような処理により、本実施例では、第1の実施例に比べて、ロバストかつ精度が高い視差マップを得ることが可能になる。
以下、本実施例の画像処理装置100で行われる処理について説明する。図12は、第3の実施例における画像処理装置100の機能構成を示すブロック図である。図13は、第3の実施例における視差推定処理の流れを示すフローチャートである。ROM103に格納されたプログラムをCPU101がRAM102にロードして実行することで、図12に示す各機能が動作する。またそれにより、図13に示す一連の処理が実行される。なお、以下に示す処理の全てがCPU101によって実行される必要はなく、処理の一部または全部が、CPU101以外の一つ又は複数の処理回路によって行われるように画像処理装置100が構成されていてもよい。また、本実施例の機能構成は、第1の実施例の機能構成と同様である。ただし、本実施例では、第1の実施例に示す各機能に加えて、エッジ抽出部1201及び領域修正部1202が含まれる。また、図13に示すステップS1301,S1303〜S1307,S1309〜S1312,S1315,S1316の処理は、第1の実施例におけるステップS501,S502〜S506,S507〜S510,S513,S514の処理と同様であるため、以下では説明を省略する。
ステップS1302では、エッジ抽出部1201が、画像データ取得部201から画像データを取得する。そして、エッジ抽出部1201は、取得した画像データの基準画像からエッジを抽出する。エッジ抽出方法はソーベルフィルタ(sobel filter)など、公知の様々なものが利用可能である。本実施例ではエッジに対応する画素の値を1、エッジでない画素の値を0としたエッジ情報を領域修正部1202に出力する。
ステップS1308では、領域修正部1202が、エッジ抽出部1201から取得したエッジ情報に基づき領域設定部204から取得したブロックを修正する。領域修正部1202の処理を、図14を用いて具体的に説明する。
図14は、領域修正部1202の処理を説明するための図である。図14において、ブロック1402は、領域修正部1202が領域設定部204から取得したブロック情報によって示されるブロックである。両矢印1401は、ブロックの拡大方向を示す。ブロック1402内の黒色の画素は着目画素である。また、斜線で示す画素はエッジ抽出部1201によってエッジと判断された画素である。まず、領域修正部1202は、着目画素から矢印1401の負の方向(図14において左方向)に、エッジと判断された画素を探索する。領域修正部1202は、拡大方向1401の正の方向についても同様に、エッジと判断された画素を探索する。
例えば、エッジと判断された画素が拡大方向1401の負の方向に存在しない場合は、領域修正部1202は、負の方向に対してはブロックの修正を行わないと決定する。また例えば、画素1404に示されるように、エッジと判断された画素が単独で存在している場合には、領域修正部1202は、ブロック1403に示されるように、エッジを1画素跨ぐようにブロックを修正する。なお、エッジを跨ぐ画素数は1画素に限らず、エッジを数画素跨ぐようにブロックが修正されてもよい。また、エッジを跨ぐ画素数は、入力インターフェース105を介して、または二次記憶装置104から取得されるようにしても良い。また例えば、画素1405に示されるように、エッジと判断された画素が連続して存在する場合には、領域修正部1202は、エピポーラ線と平行なエッジが存在すると判断する。そして、領域修正部1202は、ブロック1403に示されるように、エッジを跨がないようにブロックを修正する。領域修正部1202は、ブロックの修正の有無を示す情報(以下、ブロック修正情報をという)を正と負の方向毎に保持する。また、領域修正部1202は、修正後のブロックに関する情報を、視差推定部205に出力する。
ステップS1313では、判定部206が、ブロックの拡大が不可であると判断した場合、または、ブロックの拡大回数がブロックの最大拡大回数以上であると判断した場合には(ステップS1313のYES)、処理がステップS1315に移行する。そうでない場合は(ステップS1313のNO)、処理がステップS1314に移行する。なお、判定部206は、ブロック修正情報において正と負の両方向において修正有りと記されている場合に、ブロックの拡大が不可であると判断する。
ステップS1314では、領域設定部204が、保持するブロックの拡大情報に基づき、現在の階層で使用しているブロックを拡大する。このとき、まず、領域設定部204は、領域修正部1202が保持するブロック修正情報から、ブロックの修正がされていない方向を特定する。そして、領域設定部204は、ブロックの修正がされていない方向にのみ、サイズ刻み幅分ブロックを拡大する。このようにして、次の階層で使用するブロックが決定される。領域設定部204は、次の階層のブロックを示すブロック情報を領域修正部1202に出力する。
以上が、第3の実施例の画像処理装置100で行われる処理である。なお、本実施例では着目画素を中心とする1方向に長い形状のブロックを用いたが、ブロックの形状はこれに限定されず、例えば、着目画素を中心とした十字形を用いてもよい。
第1の実施例の画像処理装置100では、ブロック内に含まれる、着目画素とは異なる被写体の、大きさや特徴によって、推定した視差結果に誤差が含まれる場合がある。そのため、設定する初期ブロックや階層型のブロックマッチングにおいて拡大するブロックの大きさによって、推定した視差の精度が変動する。一方、本実施例の画像処理装置100では、ブロック内のエッジ情報を用いて、ブロック内に含まれる不要な画素を除去するようにブロックを修正する。そのため、ブロックに含まれる、異なる被写体の大きさや特徴によらず、高精度な視差推定が可能となる。つまり、本実施例の画像処理装置100によれば、第1の実施例の画像処理装置100に比べてブロックの設定にロバストな推定が可能となる。また、本実施例の画像処理装置100によれば、着目画素とは異なる被写体がブロック内に含まれる可能性が高い被写体間の境界線付近においても、精度が高い視差推定することが可能となる。
<その他の実施例>
本発明の実施形態は、上記の実施例に限られるものではなく、様々な実施形態をとることが可能である。上記の実施例では、多視点画像データが示す複数の画像を撮像したカメラの光軸が、互いに平行であるとして視差値の推定を行ったが、光軸が平行でない画像を用いて視差値の推定を行ってもよい。この場合は、各画像を撮像したカメラの撮像パラメータを用いて、各画像がカメラの光軸を平行にして撮影したときと同じ画像になるように、多視点画像データを変換する画像処理を事前に行えばよい。また、カメラの光軸が平行でない場合にも対応可能な、公知の方法を用いて画素毎にエピポーラ線を算出した後に、エピポーラ線に基づいて視差値の数値を行ってもよい。
本発明の実施形態は、上記の実施例に限られるものではなく、様々な実施形態をとることが可能である。上記の実施例では、多視点画像データが示す複数の画像を撮像したカメラの光軸が、互いに平行であるとして視差値の推定を行ったが、光軸が平行でない画像を用いて視差値の推定を行ってもよい。この場合は、各画像を撮像したカメラの撮像パラメータを用いて、各画像がカメラの光軸を平行にして撮影したときと同じ画像になるように、多視点画像データを変換する画像処理を事前に行えばよい。また、カメラの光軸が平行でない場合にも対応可能な、公知の方法を用いて画素毎にエピポーラ線を算出した後に、エピポーラ線に基づいて視差値の数値を行ってもよい。
また、上記実施例では、多視点画像データが示す複数の画像のうち、選択した基準画像と参照画像のみを比較することで視差値の推定を行ったが、3枚以上の画像を用いて視差値の推定を行ってもよい。この場合は、視差値として各視点間の位置関係を示す単位ベクトルごとの被写体像の移動量(3次元空間上の移動量)が格納される。この場合の、マッチングに用いる評価値は分散を用いて以下の式で表わされる。
式(4)において、Bはマッチングに用いるブロックに含まれる画素の集合を示す。|B|は領域Bに含まれる画素数を示す。lは前述の、単位ベクトルごとの被写体像の移動量を示す視差値である。(rxk, ryk)は、基準の視点から見た各視点の相対位置ベクトルを示す。nはマッチングに用いる視点の総数を示す。なお、ここで算出される評価値は式(4)に示す式に限られず、二つの画像領域の類似度合いを示す値であれば公知の様々なものが利用可能である。
また、本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
204 領域設定部
205 視差推定部
206 判定部
207 視差決定部
205 視差推定部
206 判定部
207 視差決定部
Claims (13)
- 互いに異なる視点から撮像された複数の画像の視差を示す視差マップを生成する画像処理装置であって、
前記複数の画像のうち一の画像を基準画像とし、当該一の画像と異なる他の画像を参照画像として、前記基準画像の各画素位置について、対応する画素位置を前記参照画像からブロックマッチングにより探索し、前記ブロックマッチングにより検出された画素位置との視差値を導出する導出手段と、
前記基準画像の各画素位置について前記導出された視差値に基づき、前記視差マップを生成する生成手段と、
前記ブロックマッチングにおける探索方向に沿って、前記ブロックマッチングに用いるブロックを拡大するとともに、前記導出手段が導出した視差の信頼度が一定レベル以下である画素位置について、前記導出手段に前記ブロックマッチングを再度実行させ、再度の前記ブロックマッチングにより検出された画素位置との視差で、前記視差マップを更新する更新手段と、を備える
ことを特徴とする画像処理装置。 - 前記更新手段は、
更新した前記視差マップ内に前記信頼度が一定レベル以下である視差が含まれる場合には、処理を繰り返す
請求項1に記載の画像処理装置。 - 前記更新手段は、
更新した前記視差マップ内に前記信頼度が一定レベル以下である視差が含まれる場合でも、前記ブロックマッチングが予め定められた回数以上実行されている場合には、処理を終了する
請求項2に記載の画像処理装置。 - 前記更新手段は、
前記導出手段が導出した視差の分散度を算出する算出手段と、
前記算出手段が算出した前記分散度と予め定められた閾値とを比較して、前記分散度が前記閾値よりも大きい場合に、前記信頼度が一定レベル以下であると判定する
請求項1から請求項3のうちのいずれか1項に記載の画像処理装置。 - 前記更新手段は、
前記導出手段が導出した視差の平滑度を算出する算出手段と、
前記算出手段が算出した前記平滑度と予め定められた閾値とを比較して、前記平滑度が前記閾値よりも小さい場合に、前記平滑度が一定レベル以下であると判定する
請求項1から請求項3のうちのいずれか1項に記載の画像処理装置。 - 前記ブロックマッチングにおける探索方向が、前記基準画像の着目画素に対応する、前記参照画像上のエピポーラ線と平行な方向である
請求項1から請求項5のうちのいずれか1項に記載の画像処理装置。 - 前記基準画像を撮像する基準カメラと前記参照画像を撮像する参照カメラとが、同一平面上に配置され、かつ互いの光軸が平行である場合には、
前記更新手段は、
前記基準カメラと前記参照カメラとの3次元空間中の座標点から導出される方向ベクトルによって示される方向を、前記エピポーラ線と平行な方向とみなして、前記ブロックを拡大する
請求項6に記載の画像処理装置。 - 前記基準画像を撮像する基準カメラと前記参照画像を撮像する参照カメラとが、同一平面上に配置され、かつ互いの光軸が平行である場合には、
前記更新手段は、
前記基準画像の水平軸に対する角度によって示される方向を、前記エピポーラ線と平行な方向とみなして、前記ブロックを拡大する
請求項6に記載の画像処理装置。 - 前記基準画像の水平軸に対する角度を示す情報を入力する入力手段をさらに備え、
前記更新手段は、前記入力手段が入力した情報から、前記基準画像の水平軸に対する角度を取得する
請求項8に記載の画像処理装置。 - 前記ブロックマッチングが行われる際に、マッチング元となるブロック内に前記エピポーラ線と平行なエッジが含まれると判断した場合には、当該ブロック内に当該エッジが含まれないように、当該ブロックのサイズと形状との少なくとも一方を修正する修正手段をさらに備える
請求項6から請求項9のうちのいずれか1項に記載の画像処理装置。 - 前記修正手段は、
前記ブロックマッチングが行われる際に、マッチング元となるブロック内に、前記エピポーラ線と平行でないエッジが含まれる場合には、当該ブロックが当該エッジを1画素または数画素跨ぐように、当該ブロックのサイズと形状との少なくとも一方を修正する
請求項10に記載の画像処理装置。 - 互いに異なる視点から撮像された複数の画像の視差を示す視差マップを生成する画像処理方法であって、
前記複数の画像のうち一の画像を基準画像とし、当該一の画像と異なる他の画像を参照画像として、前記基準画像の各画素位置について、対応する画素位置を前記参照画像からブロックマッチングにより探索し、前記ブロックマッチングにより検出された画素位置との視差を導出する導出ステップと、
前記基準画像の各画素位置について前記導出された視差に基づき、前記視差マップを生成する生成ステップと、
前記ブロックマッチングにおける探索方向に沿って、前記ブロックマッチングに用いるブロックを拡大するとともに、前記導出された視差の信頼度が一定レベル以下である画素位置について、前記ブロックマッチングを再度実行させ、再度の前記ブロックマッチングにより検出された画素位置との視差で、前記視差マップを更新する更新ステップと、を含む
ことを特徴とする画像処理方法。 - コンピュータを請求項1から請求項11のうちのいずれか1項に記載の画像処理装置として機能させるためのプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016196433A JP2018059767A (ja) | 2016-10-04 | 2016-10-04 | 画像処理装置、画像処理方法およびプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2016196433A JP2018059767A (ja) | 2016-10-04 | 2016-10-04 | 画像処理装置、画像処理方法およびプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2018059767A true JP2018059767A (ja) | 2018-04-12 |
Family
ID=61908836
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016196433A Pending JP2018059767A (ja) | 2016-10-04 | 2016-10-04 | 画像処理装置、画像処理方法およびプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2018059767A (ja) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111507924A (zh) * | 2020-04-27 | 2020-08-07 | 北京百度网讯科技有限公司 | 视频帧的处理方法和装置 |
JP7350893B2 (ja) | 2019-05-30 | 2023-09-26 | 影石創新科技股▲ふん▼有限公司 | パノラマ画像、ビデオ合成方法、コンピュータ読み取り可能な記録媒体及びパノラマカメラ |
-
2016
- 2016-10-04 JP JP2016196433A patent/JP2018059767A/ja active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP7350893B2 (ja) | 2019-05-30 | 2023-09-26 | 影石創新科技股▲ふん▼有限公司 | パノラマ画像、ビデオ合成方法、コンピュータ読み取り可能な記録媒体及びパノラマカメラ |
CN111507924A (zh) * | 2020-04-27 | 2020-08-07 | 北京百度网讯科技有限公司 | 视频帧的处理方法和装置 |
JP2021175185A (ja) * | 2020-04-27 | 2021-11-01 | ベイジン バイドゥ ネットコム サイエンス アンド テクノロジー カンパニー リミテッド | ビデオフレームの処理方法及び装置 |
US11557062B2 (en) | 2020-04-27 | 2023-01-17 | Beijing Baidu Netcom Science And Technology Co., Ltd. | Method and apparatus for processing video frame |
JP7291168B2 (ja) | 2020-04-27 | 2023-06-14 | ベイジン バイドゥ ネットコム サイエンス テクノロジー カンパニー リミテッド | ビデオフレームの処理方法及び装置 |
CN111507924B (zh) * | 2020-04-27 | 2023-09-29 | 北京百度网讯科技有限公司 | 视频帧的处理方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108475433B (zh) | 用于大规模确定rgbd相机姿势的方法和*** | |
JP7173772B2 (ja) | 深度値推定を用いた映像処理方法及び装置 | |
Feng et al. | Local background enclosure for RGB-D salient object detection | |
JP5870273B2 (ja) | 物体検出装置、物体検出方法及びプログラム | |
JP6570296B2 (ja) | 画像処理装置、画像処理方法およびプログラム | |
US10957068B2 (en) | Information processing apparatus and method of controlling the same | |
JP5538868B2 (ja) | 画像処理装置、その画像処理方法及びプログラム | |
JP6566768B2 (ja) | 情報処理装置、情報処理方法、プログラム | |
KR20170091496A (ko) | 양안 시차 영상의 처리 방법 및 장치 | |
EP3309743B1 (en) | Registration of multiple laser scans | |
US20160292888A1 (en) | Image measurement device, and recording medium | |
JP2018113021A (ja) | 情報処理装置およびその制御方法、プログラム | |
JP6172432B2 (ja) | 被写体識別装置、被写体識別方法および被写体識別プログラム | |
JP2013185905A (ja) | 情報処理装置及び方法、並びにプログラム | |
JP2009048516A (ja) | 情報処理装置、および情報処理方法、並びにコンピュータ・プログラム | |
JP2018059767A (ja) | 画像処理装置、画像処理方法およびプログラム | |
JP2006113832A (ja) | ステレオ画像処理装置およびプログラム | |
US10417783B2 (en) | Image processing apparatus, image processing method, and storage medium | |
JP2014102805A (ja) | 情報処理装置、情報処理方法及びプログラム | |
EP3676801B1 (en) | Electronic devices, methods, and computer program products for controlling 3d modeling operations based on pose metrics | |
JP6156922B2 (ja) | 三次元データ生成装置、三次元データ生成方法、及びプログラム | |
JP6655869B2 (ja) | 画像処理装置、画像処理方法及びプログラム | |
Haque et al. | Robust feature-preserving denoising of 3D point clouds | |
Uh et al. | Efficient multiview stereo by random-search and propagation | |
KR101575742B1 (ko) | 스테레오 비전에 기반한 암반의 절취면 조사방법 |